diff --git a/src/components/door-panel/door-panel.vue b/src/components/door-panel/door-panel.vue new file mode 100644 index 0000000..43a7078 --- /dev/null +++ b/src/components/door-panel/door-panel.vue @@ -0,0 +1,548 @@ + + + + + diff --git a/src/config/dev.js b/src/config/dev.js index 14ff15b..d403172 100644 --- a/src/config/dev.js +++ b/src/config/dev.js @@ -27,7 +27,7 @@ const dev = { mockUser: { token: 'mock_token_dev_2024', user_info: { - user_id: 'mock_user_001', + user_id: 'abc123456', phone: '13264706088', open_id: 'mock_openid_002', union_id: 'test_union_id', diff --git a/src/pages.json b/src/pages.json index 5f6c315..1c6e40d 100644 --- a/src/pages.json +++ b/src/pages.json @@ -41,6 +41,30 @@ "style": { "navigationStyle": "custom" } + }, + { + "path": "pages/order/detail", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/door/opened", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/door/closed", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/door/complete", + "style": { + "navigationStyle": "custom" + } } ], "globalStyle": { diff --git a/src/pages/auth/loading.vue b/src/pages/auth/loading.vue index ba3d7b5..966b5da 100644 --- a/src/pages/auth/loading.vue +++ b/src/pages/auth/loading.vue @@ -190,6 +190,14 @@ export default { if (result.register) { // 已注册 → 存 token → 进入开门页 uni.setStorageSync('token', result.token); + // 存储 user_info(接口返回的字段,后续 snsapi_userinfo 授权可补充) + const existing = uni.getStorageSync('user_info') || {}; + uni.setStorageSync('user_info', { + user_id: result.user_id || existing.user_id || '', + phone: result.phone || existing.phone || '', + nickname: result.nickname || existing.nickname || '', + avatar: result.avatar || existing.avatar || '', + }); this.goToHome(); } else { // 未注册 → 存 temp_token → 跳注册页 @@ -303,11 +311,14 @@ export default { if (data.code === 0 && data.data) { const userInfo = data.data; - // 存入缓存 + // 合并已有缓存(保留 user_id 等字段),覆盖头像昵称手机 + const existing = uni.getStorageSync('user_info') || {}; uni.setStorageSync('user_info', { - nickname: userInfo.nickname || '', - avatar: userInfo.avatar || '', - phone: userInfo.phone || '', + ...existing, + user_id: userInfo.user_id || existing.user_id || '', + nickname: userInfo.nickname || existing.nickname || '', + avatar: userInfo.avatar || existing.avatar || '', + phone: userInfo.phone || existing.phone || '', }); } else { console.warn('[loading] 获取用户信息失败:', data.message); @@ -369,13 +380,21 @@ export default { async mockLogin() { const mode = config.mockWechatLogin; const mock = config.mockUser; - const mockOpenid = mock.user_info.open_id; + const mockUserInfo = mock.user_info; + const mockOpenid = mockUserInfo.open_id; // 'skip' 模式直接登录,不调接口 if (mode === 'skip') { this.statusText = '模拟登录中...'; uni.setStorageSync('token', mock.token); uni.setStorageSync('openid', mockOpenid); + // 按生产结构存储 user_info + uni.setStorageSync('user_info', { + user_id: mockUserInfo.user_id, + phone: mockUserInfo.phone, + nickname: mockUserInfo.nickname, + avatar: mockUserInfo.avatar, + }); console.log('[Auth] Mock skip → home'); setTimeout(() => this.goToHome(), 500); return; @@ -401,8 +420,15 @@ export default { uni.setStorageSync('openid', result.openid || mockOpenid); if (result.register) { - // 已注册 → 存 token → 跳首页 + // 已注册 → 存 token + user_info → 跳首页 uni.setStorageSync('token', result.token); + // 按生产结构存储 user_info(接口返回优先,mock 补充) + uni.setStorageSync('user_info', { + user_id: result.user_id || mockUserInfo.user_id, + phone: result.phone || mockUserInfo.phone, + nickname: result.nickname || mockUserInfo.nickname, + avatar: result.avatar || mockUserInfo.avatar, + }); console.log('[Auth] Mock: existing user → home'); this.goToHome(); } else { diff --git a/src/pages/door/closed.vue b/src/pages/door/closed.vue new file mode 100644 index 0000000..579fbb9 --- /dev/null +++ b/src/pages/door/closed.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/pages/door/complete.vue b/src/pages/door/complete.vue new file mode 100644 index 0000000..a6ab630 --- /dev/null +++ b/src/pages/door/complete.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/src/pages/door/opened.vue b/src/pages/door/opened.vue new file mode 100644 index 0000000..b7b4792 --- /dev/null +++ b/src/pages/door/opened.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index bbdeb40..8352464 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -157,18 +157,22 @@ + + + + + diff --git a/src/pages/order/order.vue b/src/pages/order/order.vue index f7b7428..8261b2d 100644 --- a/src/pages/order/order.vue +++ b/src/pages/order/order.vue @@ -2,24 +2,24 @@ - 全部订单 - 已支付 - @@ -43,34 +43,39 @@ - + - - {{ order.create_time }} - - {{ order.status === 'paid' ? '已支付' : '未支付' }} - + {{ formatTime(order.createdAt) }} + + + {{ orderStatusText(order.order_status) }} + + + {{ payStatusText(order.payment_status) }} + + - + - {{ product.name }} - ¥{{ product.price }} x {{ product.quantity }} + ¥{{ getDecimal(product.unit_price) }} x {{ product.qty }} @@ -81,27 +86,44 @@ - 共{{ order.totalQuantity }}件 + 共{{ order.total_qty }}件 总计: - ¥{{ order.totalAmount }} + ¥{{ getDecimal(order.total_amount) }} - - {{ order.status === 'unpaid' ? '立即支付' : '申请退款' }} + 立即支付 + + + 申请退款 + + + 加载中... + + + + + {{ hasNext ? '上拉加载更多' : '没有更多了' }} + + - + 暂无订单 @@ -118,11 +140,7 @@ 开始时间 - + {{ tempStartTime || '请选择' }} @@ -130,11 +148,7 @@ 结束时间 - + {{ tempEndTime || '请选择' }} @@ -164,7 +178,8 @@