# 餐桌码查看关联订单 日期: 2026-05-12 补充: 2026-04-30-qr-table-ordering-design.md(扫码点餐设计) ## 背景 扫码点餐上线后,商家需要查看某张餐桌的所有关联订单,以便掌握每桌的点餐和出餐情况。当前餐桌码管理页面(TableQRCode.vue)只有 CRUD 和二维码查看,没有订单查看入口。 ## 需求 商家在餐桌码管理页面,点击某张餐桌码的「订单」按钮,弹出该餐桌关联的所有订单列表。 ### 用户类型与权限 | 用户类型 | userType | 可查看范围 | |---------|----------|-----------| | 普通商家 | 1 | 自己摊位下的餐桌码关联订单 | | 摊主 | 4 | 自己摊位下的餐桌码关联订单 | | 夜市管理员 | 3 | 夜市下所有摊位的餐桌码关联订单 | ## 后端 ### 新增接口 **GET /table-qrcode/getTableOrders** 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | long | 是 | 餐桌码 ID | | page | int | 否 | 页码,默认 1 | | size | int | 否 | 每页条数,默认 10 | | state | string | 否 | 订单状态筛选 | 权限校验: 1. 根据 id 查出餐桌码记录 2. 普通商家/摊主:验证记录的 storeId 属于当前用户 3. 夜市管理员:验证记录的 nightMarketId 属于当前用户 查询逻辑: 1. 从餐桌码记录取 id 作为 tableId 2. 查询 pos_order 表中 table_id = 该 id 的订单 3. 按 cretim 降序排列 4. 支持按 state 筛选 返回格式(复用现有 getstoreorderlist 的字段): ```json { "code": 200, "msg": "操作成功", "data": { "total": 5, "records": [ { "id": 100, "ddId": "DD20260512001", "amount": 350, "state": 2, "type": 2, "cretim": "2026-05-12 12:30:00", "diningStatus": 0, "food": [...] } ] } } ``` ### 实现位置 在 `TableQrcodeController.java` 中新增方法,复用已有的 `PosOrderService` 和 `InfoUserService`。 ## 前端 ### 改动文件 | 文件 | 改动 | |------|------| | `src/api/tableQrcode.js` | 新增 getTableOrders API 方法 | | `src/views/TableQRCode.vue` | 操作列新增「订单」按钮 + 订单弹窗 | ### TableQRCode.vue 改动 1. **操作列**:在现有按钮(查看二维码、编辑、删除)旁新增「订单」按钮 2. **订单弹窗**: - el-dialog 展示该餐桌的订单列表 - 表格列:订单号、金额、订单状态(tag 标签)、出餐状态、下单时间 - 顶部可选:订单状态筛选下拉 3. **数据加载**:点击按钮时调用 `GET /table-qrcode/{id}/orders` ## 不涉及的范围 - 订单详情页面(复用现有) - 餐桌状态联动(下单→使用中,结账→空闲) - 多次加餐/拼单 - 按桌号分组统计 ## 影响文件清单 | 文件 | 改动 | |------|------| | `TableQrcodeController.java` | 新增 getTableOrders 接口(`GET /table-qrcode/getTableOrders?id=xxx`) | | `tableQrcode.js` (前端 API) | 新增 getTableOrders 方法 | | `TableQRCode.vue` | 新增订单按钮和订单弹窗 |