zxl
3 天以前 874e9cce3b2f9b6649ab72047d98e4244a345b3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<template>
  <view class="content">
    <view class="header">
      <text class="title">{{ user.name }}</text>
      <text class="subtitle">{{ user.dept }} · {{ user.role }}</text>
    </view>
    <view class="grid">
      <view class="grid-item" @click="goPending">
        <view class="icon-box">
          <uni-icons type="list" color="#1E88E5" size="48"></uni-icons>
        </view>
        <text class="grid-label">待处理</text>
      </view>
      <view class="grid-item" @click="goReport">
        <view class="icon-box">
          <uni-icons type="compose" color="#26A69A" size="48"></uni-icons>
        </view>
        <text class="grid-label">上报</text>
      </view>
      <view class="grid-item" @click="goSchedule">
        <view class="icon-box">
          <uni-icons type="calendar" color="#FF9800" size="48"></uni-icons>
        </view>
        <text class="grid-label">日程</text>
      </view>
    </view>
    <BottomTabBar active="mine" />
  </view>
</template>
 
<script>
import BottomTabBar from '@/components/BottomTabBar.vue'
export default {
  name: 'MineFunctions',
  components: { BottomTabBar },
  data() {
    const storageUser = uni.getStorageSync('userInfo') || {}
    const user = {
      name: storageUser.name || '张三',
      dept: storageUser.dept || '项目管理部',
      role: storageUser.role || '审核员'
    }
    return { user }
  },
  methods: {
    goPending() {
      uni.navigateTo({ url: '/subpackage/user/pending' })
    },
    goReport() {
      uni.navigateTo({ url: '/subpackage/manager/report' })
    },
    goSchedule() {
      uni.navigateTo({ url: '/subpackage/manager/schedule' })
    }
  }
}
</script>
 
<style scoped>
.content {
  width: 100%;
  min-height: 100vh;
  background-color: #f5f7fa;
  padding-bottom: 120rpx;
}
.navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 30rpx;
  height: 88rpx;
  background: linear-gradient(90deg, #1E88E5, #26A69A);
  color: #fff;
}
.navbar-title { font-size: 36rpx; font-weight: 600; }
.header {
  padding: 30rpx;
}
.title { font-size: 36rpx; font-weight: 700; color: #333; }
.subtitle { margin-top: 8rpx; font-size: 26rpx; color: #666; }
.grid {
  display: flex;
  flex-wrap: wrap;
  padding: 0 20rpx;
}
.grid-item {
  width: 33.33%;
  padding: 20rpx;
}
.icon-box {
  width: 180rpx;
  height: 180rpx;
  border-radius: 16rpx;
  background-color: #fff;
  box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.06);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}
.grid-label {
  text-align: center;
  margin-top: 12rpx;
  font-size: 26rpx;
  color: #333;
}
</style>