Blame view

美国版/Food Labeling Management App UniApp/src/pages/more/profile.vue 5.84 KB
b165f94a   “wangming”   111
1
2
3
4
5
6
7
8
9
  <template>
    <view class="page">
      <view class="header-hero" :style="{ paddingTop: statusBarHeight + 'px' }">
        <view class="top-bar">
          <view class="top-left" @click="goBack">
            <AppIcon name="chevronLeft" size="sm" color="white" />
          </view>
          <view class="top-center">
            <text class="page-title">{{ t('profile.title') }}</text>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
10
            <LocationPicker />
b165f94a   “wangming”   111
11
12
13
14
15
16
17
18
19
20
          </view>
          <view class="top-right" @click="isMenuOpen = true">
            <AppIcon name="menu" size="sm" color="white" />
          </view>
        </view>
      </view>
  
      <view class="content">
        <view class="avatar-wrap">
          <view class="avatar"><AppIcon name="user" size="lg" color="white" /></view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
21
22
          <text class="avatar-name">{{ name }}</text>
          <text class="avatar-role">Employee</text>
b165f94a   “wangming”   111
23
        </view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
24
25
26
27
28
29
30
31
32
33
  
        <view class="info-card">
          <view class="info-row">
            <view class="info-icon-box blue">
              <AppIcon name="user" size="sm" color="blue" />
            </view>
            <view class="info-detail">
              <text class="info-label">{{ t('profile.name') }}</text>
              <text class="info-value">{{ name }}</text>
            </view>
b165f94a   “wangming”   111
34
          </view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
35
36
37
38
39
40
41
42
43
          <view class="info-divider" />
          <view class="info-row">
            <view class="info-icon-box green">
              <AppIcon name="mail" size="sm" color="green" />
            </view>
            <view class="info-detail">
              <text class="info-label">{{ t('profile.email') }}</text>
              <text class="info-value">{{ email }}</text>
            </view>
b165f94a   “wangming”   111
44
          </view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
45
46
47
48
49
50
51
52
53
          <view class="info-divider" />
          <view class="info-row">
            <view class="info-icon-box orange">
              <AppIcon name="phone" size="sm" color="orange" />
            </view>
            <view class="info-detail">
              <text class="info-label">{{ t('profile.phone') }}</text>
              <text class="info-value">{{ phone }}</text>
            </view>
b165f94a   “wangming”   111
54
          </view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
55
56
57
58
59
60
61
62
63
          <view class="info-divider" />
          <view class="info-row">
            <view class="info-icon-box purple">
              <AppIcon name="tag" size="sm" color="purple" />
            </view>
            <view class="info-detail">
              <text class="info-label">{{ t('profile.employeeId') }}</text>
              <text class="info-value">{{ employeeId }}</text>
            </view>
b165f94a   “wangming”   111
64
65
          </view>
        </view>
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
66
67
68
69
70
  
        <view class="btn-password" @click="goChangePassword">
          <AppIcon name="settings" size="sm" color="primary" />
          <text class="btn-password-text">Change Password</text>
          <AppIcon name="chevronRight" size="sm" color="gray" />
b165f94a   “wangming”   111
71
72
73
74
75
76
77
78
79
80
81
82
        </view>
      </view>
  
      <SideMenu v-model="isMenuOpen" />
    </view>
  </template>
  
  <script setup lang="ts">
  import { ref } from 'vue'
  import { useI18n } from 'vue-i18n'
  import AppIcon from '../../components/AppIcon.vue'
  import SideMenu from '../../components/SideMenu.vue'
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
83
  import LocationPicker from '../../components/LocationPicker.vue'
b165f94a   “wangming”   111
84
85
86
87
  import { getStatusBarHeight } from '../../utils/statusBar'
  
  const { t } = useI18n()
  const statusBarHeight = getStatusBarHeight()
b165f94a   “wangming”   111
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  const isMenuOpen = ref(false)
  const name = ref(uni.getStorageSync('userName') || 'John Smith')
  const email = ref('john.smith@company.com')
  const phone = ref('+1 (555) 123-4567')
  const employeeId = ref('EMP-2024-001')
  
  const goBack = () => {
    const pages = getCurrentPages()
    if (pages.length > 1) {
      uni.navigateBack()
    } else {
      uni.redirectTo({ url: '/pages/index/index' })
    }
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
103
104
  const goChangePassword = () => {
    uni.navigateTo({ url: '/pages/more/change-password' })
b165f94a   “wangming”   111
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
  }
  </script>
  
  <style scoped>
  .page {
    min-height: 100vh;
    background: #f9fafb;
  }
  
  .header-hero {
    background: linear-gradient(135deg, var(--theme-primary), var(--theme-primary-dark));
    padding: 16rpx 32rpx 24rpx;
  }
  
  .top-bar {
    height: 96rpx;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  
  .top-left,
  .top-right {
    width: 64rpx;
    height: 64rpx;
    border-radius: 999rpx;
    background: rgba(255, 255, 255, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .top-center {
    flex: 1;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
139
140
141
    display: flex;
    flex-direction: column;
    align-items: center;
b165f94a   “wangming”   111
142
143
144
145
146
147
148
149
150
151
152
153
154
155
  }
  
  .page-title {
    font-size: 34rpx;
    font-weight: 600;
    color: #fff;
  }
  
  .content {
    padding: 48rpx;
  }
  
  .avatar-wrap {
    display: flex;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
156
157
158
    flex-direction: column;
    align-items: center;
    margin-bottom: 40rpx;
b165f94a   “wangming”   111
159
160
161
  }
  
  .avatar {
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
162
163
    width: 140rpx;
    height: 140rpx;
b165f94a   “wangming”   111
164
165
166
167
168
    background: var(--theme-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
169
    margin-bottom: 16rpx;
b165f94a   “wangming”   111
170
171
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
172
173
174
175
  .avatar-name {
    font-size: 36rpx;
    font-weight: 700;
    color: #111827;
b165f94a   “wangming”   111
176
    display: block;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
177
    margin-bottom: 4rpx;
b165f94a   “wangming”   111
178
179
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
180
181
182
  .avatar-role {
    font-size: 26rpx;
    color: #6b7280;
b165f94a   “wangming”   111
183
184
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
185
186
187
188
189
190
  .info-card {
    background: #fff;
    padding: 12rpx 32rpx;
    border-radius: 20rpx;
    margin-bottom: 32rpx;
    box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
b165f94a   “wangming”   111
191
192
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
193
  .info-row {
b165f94a   “wangming”   111
194
    display: flex;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
195
    align-items: center;
b165f94a   “wangming”   111
196
    gap: 24rpx;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
197
    padding: 28rpx 0;
b165f94a   “wangming”   111
198
199
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
200
201
  .info-divider {
    height: 1rpx;
b165f94a   “wangming”   111
202
    background: #f3f4f6;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
203
204
205
206
207
  }
  
  .info-icon-box {
    width: 72rpx;
    height: 72rpx;
b165f94a   “wangming”   111
208
209
210
211
    border-radius: 16rpx;
    display: flex;
    align-items: center;
    justify-content: center;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
212
    flex-shrink: 0;
b165f94a   “wangming”   111
213
214
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
215
216
  .info-icon-box.blue {
    background: #eff6ff;
b165f94a   “wangming”   111
217
218
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
219
220
221
222
223
224
225
226
227
228
229
230
231
  .info-icon-box.green {
    background: #f0fdf4;
  }
  
  .info-icon-box.orange {
    background: #fff7ed;
  }
  
  .info-icon-box.purple {
    background: #faf5ff;
  }
  
  .info-detail {
b165f94a   “wangming”   111
232
    flex: 1;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
233
    min-width: 0;
b165f94a   “wangming”   111
234
235
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
  .info-label {
    font-size: 24rpx;
    color: #9ca3af;
    display: block;
    margin-bottom: 4rpx;
  }
  
  .info-value {
    font-size: 30rpx;
    font-weight: 500;
    color: #111827;
    display: block;
  }
  
  .btn-password {
    background: #fff;
    padding: 32rpx;
    border-radius: 20rpx;
    display: flex;
    align-items: center;
    gap: 20rpx;
    box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
b165f94a   “wangming”   111
258
259
  }
  
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
260
261
262
  .btn-password-text {
    flex: 1;
    font-size: 30rpx;
b165f94a   “wangming”   111
263
    font-weight: 600;
940fb6ea   “wangming”   又改了一个版本,这泰额太纠结了,一...
264
    color: #111827;
b165f94a   “wangming”   111
265
266
  }
  </style>