数据库分析和对应不同角色页面

This commit is contained in:
not-like-juvenile
2026-02-06 15:10:18 +08:00
parent 33030bd20b
commit 56ae71babf
30 changed files with 3510 additions and 21 deletions

View File

@@ -0,0 +1,51 @@
## 1. 功能概述
`all.uvue` 是为配送端设计的全量订单抓取页面。当首页待接订单超过 5 个时,用户可通过此页面查看并抢单。
## 2. 核心设计说明
根据最新 UI 指标,该页面采用了**现代垂直流布局**
- **中心费用展示**:订单金额在卡片顶部居中加粗显示,强化利益点。
- **垂直路径流**:采用垂直排布的取货(📍)与送达(🏠)地址,中间以箭头连接,更符合手机屏阅读习惯。
- **全宽操作按钮**:底部采用 100% 宽度的按钮,提高抢单操作的触达率。
- **实时空态处理**:当订单被他人抢先接走时,列表会自动更新。
## 3. 技术实现要点
### 3.1 数据安全与并发控制
在执行 `acceptOrder`(抢单)时,通过数据库约束确保操作的原子性:
```uts
// 增加 driver_id 为空的前提条件,防止已被他人接单
const res = await supa.from('ml_delivery_tasks')
.update({
driver_id: driverId,
status: 2,
accepted_at: new Date().toISOString()
})
.eq('id', taskId)
.is('driver_id', 'null') // 关键:确保单子还没被接
.execute();
```
### 3.2 数据结构转换 (`_transformTask`)
为了兼容数据库存储的 JSON 字符串格式与 UI 组件所需的 Object 格式,页面内置了转换逻辑:
- 自动解析 `pickup_address``delivery_address` JSON 字符串。
- 格式化 `delivery_fee` 为保留两位小数。
- 映射状态码到对应的 UI 标签。
### 3.3 路由与交互
- **路由路径**`pages/mall/delivery/all`
- **导航栏**:配置了 `navigationBarTitleText: "待接订单"`,并开启了原生的回退功能。
- **动态跳转**:支持从详情页返回后自动刷新列表(通过 `onShow` 触发)。
## 4. 样式规范
- 布局Flexbox (Column)
- 配色:
- 取货点Pink (`#ff4d94`)
- 送达点Blue (`#2196F3`)
- 主按钮Green (`#4CAF50`)
- 间距:标准 30rpx 外边距,卡片内 40rpx 内边距。
## 5. 开发历史
- **2026-02-03**: 页面初版创建。
- **2026-02-03**: 完成从水平卡片到垂直流卡片的 UI 重构。
- **2026-02-03**: 接入 Supabase 实现秒级抢单逻辑与状态同步。