From a9ec1092d5adb9b25f1cd15860b0b4512c1ef001 Mon Sep 17 00:00:00 2001
From: kk <875203880@qq.com>
Date: Sat, 11 Jul 2026 16:14:36 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=BC=80=E5=85=B3=E9=97=A8?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E6=98=BE=E7=A4=BA/=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B8=B2=E6=9F=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/door-panel/door-panel.vue | 548 +++++++++++++++++++++++
src/config/dev.js | 2 +-
src/pages.json | 24 +
src/pages/auth/loading.vue | 38 +-
src/pages/door/closed.vue | 229 ++++++++++
src/pages/door/complete.vue | 305 +++++++++++++
src/pages/door/opened.vue | 189 ++++++++
src/pages/index/index.vue | 58 ++-
src/pages/order/detail.vue | 463 +++++++++++++++++++
src/pages/order/order.vue | 379 ++++++++++------
10 files changed, 2078 insertions(+), 157 deletions(-)
create mode 100644 src/components/door-panel/door-panel.vue
create mode 100644 src/pages/door/closed.vue
create mode 100644 src/pages/door/complete.vue
create mode 100644 src/pages/door/opened.vue
create mode 100644 src/pages/order/detail.vue
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 @@
+
+
+
+
+
+
+
+
+ 开门中...
+ 请稍候,正在为您打开柜门
+
+
+
+
+
+
+
+
+
+
+
+
+ 柜门已打开
+ 请取走商品后随手关门
+
+
+
+ 1
+ 取走商品
+
+
+
+ 2
+ 关闭柜门
+
+
+
+ 3
+ 完成订单
+
+
+ 返回首页
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 柜门已关闭
+ 订单处理中,请稍候...
+
+
+
+ ✓
+ 取走商品
+
+
+
+ 2
+ 已关柜门
+
+
+
+ 3
+ 完成订单
+
+
+ 返回首页
+
+
+
+
+
+
+
+
+
+
+
+
+ 订单已完成
+ 感谢您的购买
+
+
+
+
+ 订单编号
+ {{ orderInfo.order_no }}
+
+
+ 商品数量
+ {{ orderInfo.product_count || '-' }} 件
+
+
+ 订单金额
+ ¥{{ orderInfo.total_amount || '0.00' }}
+
+
+
+ 加载订单信息...
+
+
+ 返回首页
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+ 柜门已关闭
+ 订单处理中,请稍候...
+
+
+
+
+
+ 设备编号
+ {{ deviceId }}
+
+
+ 流水号
+ {{ flowId }}
+
+
+
+
+
+ 温馨提示
+
+ • 系统正在处理您的订单
+ • 请在"我的订单"中查看订单状态
+ • 如有问题请联系客服
+
+
+
+
+
+ 查看订单
+ 返回首页
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ 订单已完成
+ 感谢您的购买
+
+
+
+
+ 订单信息
+
+ 加载中...
+
+
+
+ 订单编号
+ {{ orderInfo.order_no }}
+
+
+ 下单时间
+ {{ orderInfo.created_at }}
+
+
+ 商品数量
+ {{ orderInfo.product_count || '-' }} 件
+
+
+ 订单金额
+ ¥{{ orderInfo.total_amount || '0.00' }}
+
+
+
+ 暂无订单信息
+
+
+
+
+
+ 商品明细
+
+
+ {{ item.name }}
+ {{ item.spec || '' }}
+
+
+ ¥{{ item.price }}
+ x{{ item.quantity }}
+
+
+
+
+
+
+ 查看全部订单
+ 返回首页
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ 柜门已打开
+ 请取走商品后关闭柜门
+
+
+
+
+
+ 设备编号
+ {{ deviceId }}
+
+
+ 流水号
+ {{ flowId }}
+
+
+
+
+
+ 温馨提示
+
+ • 取走商品后请随手关门
+ • 关门后系统将自动完成订单
+ • 如有问题请联系客服
+
+
+
+
+
+ 返回首页
+
+
+
+
+
+
+
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 @@