# 收银系统后台管理功能完善实施计划 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers-subagent-driven-development (recommended) or superpowers-executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** 完善收银系统后台管理的前端页面功能,为所有列表页面添加新增/编辑表单弹窗,完善订单开台功能,优化营业报表展示 **Architecture:** 基于现有 admin-ui 框架和 RuiTable 组件,为每个收银模块创建 FormDialog 组件,遵循项目已有的组件模式和编码规范 **Tech Stack:** Vue 3 + TypeScript + Element Plus + Vite --- ## 文件结构 ### 新增文件 - `src/views/cashier/store/StoreFormDialog.vue` - 门店表单弹窗 - `src/views/cashier/room/RoomFormDialog.vue` - 包间表单弹窗 - `src/views/cashier/product/ProductFormDialog.vue` - 商品表单弹窗 - `src/views/cashier/pricing/PricingStrategyFormDialog.vue` - 定价策略表单弹窗 - `src/views/cashier/pricing/PricingPackageDialog.vue` - 套餐管理弹窗 - `src/views/cashier/order/OpenRoomDialog.vue` - 开台弹窗 ### 修改文件 - `src/views/cashier/store/Index.vue` - 集成门店表单弹窗 - `src/views/cashier/room/Index.vue` - 集成包间表单弹窗 - `src/views/cashier/product/Index.vue` - 集成商品表单弹窗 - `src/views/cashier/pricing/Index.vue` - 集成定价策略表单弹窗和套餐管理 - `src/views/cashier/order/Index.vue` - 集成开台弹窗 - `src/service/cashier/*Service.ts` - 补充缺失的方法 --- ## 模块优先级 按业务依赖关系,实施顺序为: 1. 门店管理(最基础,其他模块依赖门店) 2. 商品管理 3. 包间管理(依赖门店和包间类型) 4. 定价策略(依赖包间类型) 5. 订单管理(依赖门店和包间) 6. 营业报表优化 --- ## Task 1: 完善门店管理 **Files:** - Create: `src/views/cashier/store/StoreFormDialog.vue` - Modify: `src/views/cashier/store/Index.vue` **Context:** 门店实体字段:name, address, phone, contactName, status, remark ### Step 1: 创建门店表单弹窗 Create `src/views/cashier/store/StoreFormDialog.vue`: ```vue ``` ### Step 2: 修改门店管理页面集成弹窗 Modify `src/views/cashier/store/Index.vue`: Add imports: ```typescript import StoreFormDialog from './StoreFormDialog.vue' ``` Add state: ```typescript const dialogVisible = ref(false) const currentRow = ref() ``` Replace handleAdd: ```typescript function handleAdd() { currentRow.value = undefined dialogVisible.value = true } ``` Replace handleEdit: ```typescript function handleEdit(row: any) { currentRow.value = row dialogVisible.value = true } ``` Add dialog component in template: ```vue ``` ### Step 3: 验证 Run: ```bash cd /Users/zhangsheng/rhkj/rui-framework/admin-ui pnpm dev:cashier ``` Expected: 门店管理页面可以正常打开新增/编辑弹窗 ### Step 4: Commit ```bash git add src/views/cashier/store/ git commit -m "feat(cashier): 完善门店管理新增编辑功能" ``` --- ## Task 2: 完善商品管理 **Files:** - Create: `src/views/cashier/product/ProductFormDialog.vue` - Modify: `src/views/cashier/product/Index.vue` - Modify: `src/service/cashier/productService.ts` **Context:** 商品实体字段:name, price, productType(1实物/2服务/3虚拟), category, unit, stock, status, description, storeId ### Step 1: 补充商品 Service 方法 Verify `src/service/cashier/productService.ts` has: ```typescript import { BaseService } from '../BaseService' class ProductService extends BaseService { constructor() { super('/cashier/admin/product') } } export const productService = new ProductService() ``` ### Step 2: 创建商品表单弹窗 Create `src/views/cashier/product/ProductFormDialog.vue`: ```vue ``` ### Step 3: 修改商品管理页面 Similar to Task 1 Step 2, integrate ProductFormDialog into product/Index.vue ### Step 4: Commit ```bash git add src/views/cashier/product/ src/service/cashier/productService.ts git commit -m "feat(cashier): 完善商品管理新增编辑功能" ``` --- ## Task 3: 完善包间管理 **Files:** - Create: `src/views/cashier/room/RoomFormDialog.vue` - Modify: `src/views/cashier/room/Index.vue` **Context:** 包间实体字段:storeId, roomTypeId, name, roomNo, roomStatus, enabled, sort 需要获取门店列表和包间类型列表 ### Step 1: 创建包间表单弹窗 Create `src/views/cashier/room/RoomFormDialog.vue`: ```vue ``` ### Step 2: 修改包间管理页面 Integrate RoomFormDialog into room/Index.vue (similar pattern) ### Step 3: Commit ```bash git add src/views/cashier/room/ git commit -m "feat(cashier): 完善包间管理新增编辑功能" ``` --- ## Task 4: 完善定价策略 **Files:** - Create: `src/views/cashier/pricing/PricingStrategyFormDialog.vue` - Create: `src/views/cashier/pricing/PricingPackageDialog.vue` - Modify: `src/views/cashier/pricing/Index.vue` **Context:** 定价策略实体:strategyName, roomTypeId, status 套餐实体:name, price, duration, durationUnit, description, strategyId, billingType, minDuration, restrictions, isDefault, sort, status ### Step 1: 创建定价策略表单弹窗 Create `src/views/cashier/pricing/PricingStrategyFormDialog.vue`: ```vue ``` ### Step 2: 创建套餐管理弹窗 Create `src/views/cashier/pricing/PricingPackageDialog.vue`: ```vue ``` ### Step 3: 补充 pricingService 方法 Modify `src/service/cashier/pricingService.ts`: ```typescript import { BaseService } from '../BaseService' import { request } from '@/utils/request' class PricingService extends BaseService { constructor() { super('/cashier/admin/pricing-strategy') } async getPackages(strategyId: number) { const res: any = await request({ url: '/cashier/admin/pricing-package/list', method: 'get', params: { strategyId }, }) return res.data || [] } async addPackage(data: any) { const res: any = await request({ url: '/cashier/admin/pricing-package', method: 'post', data, }) return res.data } async updatePackage(data: any) { const res: any = await request({ url: '/cashier/admin/pricing-package', method: 'put', data, }) return res.data } async deletePackage(id: number) { const res: any = await request({ url: `/cashier/admin/pricing-package/${id}`, method: 'delete', }) return res.data } } export const pricingService = new PricingService() ``` ### Step 4: 修改定价策略页面 Integrate both dialogs into pricing/Index.vue ### Step 5: Commit ```bash git add src/views/cashier/pricing/ src/service/cashier/pricingService.ts git commit -m "feat(cashier): 完善定价策略和套餐管理功能" ``` --- ## Task 5: 完善订单管理(开台功能) **Files:** - Create: `src/views/cashier/order/OpenRoomDialog.vue` - Modify: `src/views/cashier/order/Index.vue` - Modify: `src/service/cashier/orderService.ts` **Context:** 开台需要:门店ID、包间ID、顾客姓名、顾客电话、订单类型、备注 ### Step 1: 补充 orderService 方法 Modify `src/service/cashier/orderService.ts`: ```typescript import { BaseService } from '../BaseService' import { request } from '@/utils/request' class OrderService extends BaseService { constructor() { super('/cashier/admin/order') } async checkout(id: number) { const res: any = await request({ url: `${this.baseUrl}/${id}/checkout`, method: 'post', }) return res.data } async refund(id: number, data: { amount: number; reason: string }) { const res: any = await request({ url: `${this.baseUrl}/${id}/refund`, method: 'post', data, }) return res.data } async openRoom(data: { storeId: number roomId: number customerName?: string customerPhone?: string orderType?: number remark?: string }) { const res: any = await request({ url: `${this.baseUrl}/open`, method: 'post', data, }) return res.data } } export const orderService = new OrderService() ``` ### Step 2: 创建开台弹窗 Create `src/views/cashier/order/OpenRoomDialog.vue`: ```vue ``` ### Step 3: 修改订单管理页面 Integrate OpenRoomDialog into order/Index.vue ### Step 4: Commit ```bash git add src/views/cashier/order/ src/service/cashier/orderService.ts git commit -m "feat(cashier): 完善订单管理开台功能" ``` --- ## Task 6: 营业报表优化 **Files:** - Modify: `src/views/cashier/report/Index.vue` **Context:** 当前报表已展示日报数据和包间利用率,可以优化图表展示 ### Step 1: 添加图表展示 Install echarts if not already installed: ```bash cd /Users/zhangsheng/rhkj/rui-framework/admin-ui pnpm add echarts vue-echarts ``` ### Step 2: 优化报表页面 Add chart components for: - 营业趋势图(折线图) - 支付方式饼图 - 包间利用率柱状图 ### Step 3: Commit ```bash git add src/views/cashier/report/ package.json pnpm-lock.yaml git commit -m "feat(cashier): 优化营业报表图表展示" ``` --- ## Task 7: 验证和文档更新 **Files:** - Modify: `docs/admin-ui-status.md` ### Step 1: 验证所有功能 Run: ```bash cd /Users/zhangsheng/rhkj/rui-framework/admin-ui pnpm build:cashier ``` Expected: 构建成功,无错误 ### Step 2: 更新状态文档 Update `docs/admin-ui-status.md`: ```markdown ### 8. 收银系统模块 | 功能 | 页面 | 状态 | 说明 | |------|------|------|------| | 门店管理 | cashier/store/Index.vue | ✅ 完成 | 增删改查、状态切换 | | 包间管理 | cashier/room/Index.vue | ✅ 完成 | 增删改查、状态切换 | | 商品管理 | cashier/product/Index.vue | ✅ 完成 | 增删改查、状态切换 | | 定价策略 | cashier/pricing/Index.vue | ✅ 完成 | 增删改查、套餐管理 | | 订单管理 | cashier/order/Index.vue | ✅ 完成 | 开台、结账、退款、查询 | | 营业报表 | cashier/report/Index.vue | ✅ 完成 | 日报、包间利用率、图表 | ``` ### Step 3: Commit ```bash git add docs/admin-ui-status.md git commit -m "docs: 更新收银系统功能状态" ``` --- ## 验证清单 - [ ] 门店管理:新增、编辑、删除、查询、状态切换正常 - [ ] 包间管理:新增、编辑、删除、查询、状态切换正常 - [ ] 商品管理:新增、编辑、删除、查询、状态切换正常 - [ ] 定价策略:新增、编辑、删除、查询、套餐管理正常 - [ ] 订单管理:开台、结账、退款、查询正常 - [ ] 营业报表:数据展示、图表正常 - [ ] 所有页面无编译错误 - [ ] 构建产物正常 --- ## 风险与依赖 | 风险 | 影响 | 缓解措施 | |------|------|---------| | 后端 API 字段与前端不一致 | 高 | 开发时对比后端实体字段,确保一致 | | 包间类型数据未对接 | 中 | 先使用 ID 输入,后续优化为下拉选择 | | 图表库引入增加包体积 | 低 | 按需引入 echarts 组件 | | 开台功能需要实时状态更新 | 中 | 开台成功后刷新列表 | --- ## 后续扩展 1. **包间类型管理** - 添加包间类型 CRUD 页面 2. **设备管理** - 添加门店设备管理页面 3. **会员管理** - 完善会员等级、积分管理 4. **库存管理** - 添加商品库存预警功能 5. **数据导出** - 为所有列表添加导出功能