# 页面级原型与字段说明 ## 1. 通用页面规范 ### 1.1 通用布局 | 端 | 布局 | 说明 | | --- | --- | --- | | Vue WEB 业务员端 | 顶部导航 + 左侧菜单 + 内容区 | 菜单按 `menus` 和 `permissions` 动态渲染 | | Vue WEB 管理后台 | 顶部用户区 + 左侧多级菜单 + 内容区 | 适合表格、表单、配置和报表页面 | | 微信原生小程序管理层端 | TabBar 或首页卡片入口 + 列表/详情页 | 重点支持审批、取消审批、下发确认、任务分配 | | 微信原生小程序司机端 | TabBar:任务、我的 | 司机只处理本人任务 | ### 1.2 通用状态 | 状态 | 页面表现 | | --- | --- | | loading | 表格骨架屏、按钮 loading、防重复提交 | | empty | 展示空状态文案和可选操作按钮 | | error | 展示错误提示,保留重试按钮 | | no_permission | 展示无权限页面,隐藏无权限按钮 | | token_expired | 清理本地登录态并跳转登录页 | ### 1.3 通用按钮权限 | 按钮类型 | 控制方式 | | --- | --- | | 页面入口 | 由菜单权限控制 | | 操作按钮 | 由按钮权限 + 当前业务状态共同控制 | | 财务字段展示 | 以后端是否返回字段为准,前端不做越权兜底显示 | ## 2. Vue WEB 业务员端 ### 2.1 登录页 | 项 | 内容 | | --- | --- | | 路由 | `/login` | | API | `POST /api/auth/login` | | 字段 | `username`、`password`、`role_type=salesman` | | 按钮 | 登录 | | 校验 | 账号必填、密码必填 | | 成功 | 保存 token、用户信息、菜单权限,跳转 `/orders` | | 失败 | 展示接口 `message` | ### 2.2 我的订单列表 | 项 | 内容 | | --- | --- | | 路由 | `/orders` | | API | `GET /api/orders` | | 筛选项 | 订单状态、客户姓名、客户手机号、订单来源、开始时间、结束时间 | | 表格字段 | 订单编号、客户姓名、客户手机号脱敏、订单状态、订单来源、销售总额、创建时间、提交时间 | | 隐藏字段 | 成本、利润、利润率、回扣,除后端允许返回外不展示 | | 按钮 | 新建订单、查看、编辑草稿、提交审核、取消 | | 权限状态 | 只展示当前业务员订单 | | 分页 | `page_no`、`page_size` | #### 按钮状态 | 按钮 | 可见条件 | 禁用条件 | | --- | --- | --- | | 新建订单 | 有 `order:create` 权限 | 无 | | 编辑草稿 | `order_status=draft/rejected` 且本人订单 | 已取消、审核中、履约中 | | 提交审核 | `order_status=draft/rejected` 且必填完整 | 明细为空、金额非法 | | 取消 | `order_status` 非 `canceled/settled` | 已存在 `cancel_pending` | ### 2.3 订单录入/编辑页 | 项 | 内容 | | --- | --- | | 路由 | `/orders/create`、`/orders/:id/edit` | | API | `POST /api/orders`、后续可扩展 `PUT /api/orders/{order_id}` | | 页面分区 | 客户信息、订单信息、明细信息、费用信息、备注 | #### 客户信息 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | customer_name | 输入框 | 是 | 客户姓名 | | customer_mobile | 输入框 | 是 | 手机号 | | customer_address | 输入框 | 否 | 客户地址 | | customer_id | 隐藏字段 | 否 | 匹配到老客户时保存 | #### 订单信息 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | order_source | 下拉/输入 | 否 | 订单来源标签 | | delivery_type | 下拉 | 否 | 发货类型 | | factory_id | 选择器 | 否 | 工厂 | | commission_amount | 金额输入 | 否 | 订单固定提成 | | remark | 多行文本 | 否 | 备注 | #### 明细信息 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | product_id | 产品选择器 | 否 | 选产品后带出快照字段 | | product_name | 输入框 | 是 | 产品名称 | | specification | 输入框 | 是 | 规格 | | unit | 输入框 | 是 | 单位 | | quantity | 数字 | 是 | 数量,必须大于 0 | | sale_price | 金额 | 是 | 销售单价 | | cost_price | 金额 | 是 | 成本单价 | | rebate_amount | 金额 | 否 | 行回扣 | | freight_amount | 金额 | 否 | 行运费 | | tax_amount | 金额 | 否 | 行税费 | | other_fee_amount | 金额 | 否 | 其他费用 | | remark | 输入框 | 否 | 行备注 | #### 费用汇总 | 字段 | 类型 | 说明 | | --- | --- | --- | | sale_price_total | 只读 | 明细销售金额汇总 | | cost_price_total | 只读 | 明细成本汇总 | | rebate_total | 可编辑/自动汇总 | 订单回扣总额 | | freight_total | 可编辑/自动汇总 | 订单运费总额 | | tax_total | 可编辑/自动汇总 | 订单税费总额 | | other_fee_total | 可编辑/自动汇总 | 其他费用总额 | | profit_total | 只读 | 后端最终计算为准 | | profit_rate | 只读 | 后端最终计算为准 | #### 页面按钮 | 按钮 | 行为 | | --- | --- | | 保存草稿 | 调用创建/更新接口,状态为 `draft` | | 保存并提交 | 先保存,再调用提交审核 | | 新增明细 | 增加一行明细 | | 删除明细 | 删除当前行,至少保留一行 | | 选择产品 | 弹窗选择产品 | ### 2.4 订单详情页 | 项 | 内容 | | --- | --- | | 路由 | `/orders/:id` | | API | `GET /api/orders/{order_id}` | | 分区 | 基本信息、明细、费用汇总、审批记录、物流节点、提醒/通知、附件 | | 按钮 | 提交审核、取消订单、复制下发文本、返回 | #### 业务员可见字段 | 类型 | 字段 | | --- | --- | | 基础 | 订单编号、客户、手机号脱敏、地址、来源、状态、工厂、备注 | | 明细 | 产品、规格、单位、数量、销售单价、行备注 | | 状态 | 提交时间、审批意见、取消状态、物流节点 | #### 业务员不可见字段 | 字段 | | --- | | 成本价、回扣、利润、利润率、管理层审批内部备注、非本人订单详情 | ### 2.5 订单取消弹窗 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | cancel_reason | 下拉/输入 | 是 | 取消原因 | | cancel_opinion | 多行文本 | 否 | 补充说明 | | 状态 | 提交后结果 | | --- | --- | | `draft/pending_approve` | 直接进入 `canceled` | | `approved/pending_factory/pending_driver/accepted/picked_up/shipped/delivered/production` | 进入 `cancel_pending` | ### 2.6 提醒中心 | 项 | 内容 | | --- | --- | | 路由 | `/reminders` | | API | 可复用 `GET /api/reminders`,若未在总 API 中定义,需要新增 | | 筛选项 | 提醒类型、状态、开始时间、结束时间 | | 列表字段 | 标题、类型、业务编号、状态、创建时间、已读时间 | | 按钮 | 查看、标记已读 | | 权限 | 业务员只看本人提醒 | ## 3. 微信原生小程序管理层端 ### 3.1 登录页 | 页面 | 字段 | 按钮 | 成功 | | --- | --- | --- | --- | | `/pages/login` | username、password、role_type=manager | 登录 | 跳转审批首页 | ### 3.2 审批首页/待审批列表 | 页面 | `/pages/approve-list` | | --- | --- | | API | `GET /api/orders?order_status=pending_approve` | | 筛选项 | 客户姓名、业务员、时间 | | 列表字段 | 订单编号、客户、业务员、销售金额、利润预览、提交时间 | | 按钮 | 查看审批 | ### 3.3 审批详情页 | 页面 | `/pages/approve-detail` | | --- | --- | | API | `GET /api/orders/{order_id}`、`POST /api/orders/{order_id}/approve` | | 分区 | 订单信息、客户信息、明细、利润计算、审批记录 | | 可见字段 | 销售、成本、回扣、运费、税费、其他费用、利润、利润率、固定提成 | | 按钮 | 通过、退回 | | 弹窗 | 审批意见弹窗 | #### 审批弹窗 | 字段 | 类型 | 必填 | | --- | --- | --- | | approve_result | 单选 | 是 | | approve_opinion | 文本域 | 退回时必填 | ### 3.4 取消审批列表/详情 | 页面 | 内容 | | --- | --- | | 列表 API | `GET /api/orders?order_status=cancel_pending` | | 详情 API | `GET /api/orders/{order_id}` | | 操作 API | `POST /api/orders/{order_id}/cancel-approve` | | 列表字段 | 订单编号、客户、原状态、申请人、取消原因、申请时间 | | 按钮 | 同意取消、拒绝取消 | ### 3.5 下发工厂文本页 | 页面 | `/pages/supplier-text` | | --- | --- | | API | `POST /api/orders/{order_id}/supplier-text`、确认下发接口 | | 字段 | 订单编号、工厂、模板类型、文本内容 | | 按钮 | 生成文本、复制文本、确认下发 | | 状态 | 仅 `approved` 订单可确认下发,确认后进入 `pending_factory` | ### 3.6 司机任务分配页 | 页面 | `/pages/task-create` | | --- | --- | | API | 新增 `POST /api/logistics/tasks` | | 字段 | order_id、driver_id、pickup_address、delivery_address、pickup_content、quantity、factory_id、remark | | 按钮 | 保存、取消 | | 权限 | 管理层、管理员 | ### 3.7 经营数据概览 | 页面 | `/pages/dashboard` | | --- | --- | | API | `GET /api/reports/performance` | | 筛选项 | 统计类型、时间范围、分类 | | 指标 | 订单数、订单金额、分类金额、固定提成汇总 | ## 4. 微信原生小程序司机端 ### 4.1 登录页 | 页面 | 字段 | 按钮 | 成功 | | --- | --- | --- | --- | | `/pages/login` | username、password、role_type=driver | 登录 | 跳转任务列表 | ### 4.2 任务列表 | 页面 | `/pages/task-list` | | --- | --- | | API | `GET /api/driver/tasks` | | 筛选项 | 任务状态 | | Tab | 待接单、已接单、已揽货、已送达 | | 列表字段 | 任务编号、取货地址、送达地址、取件内容、数量、状态 | | 按钮 | 查看详情 | | 权限 | 仅本人任务 | ### 4.3 任务详情 | 页面 | `/pages/task-detail` | | --- | --- | | API | `GET /api/driver/tasks/{task_id}` | | 可见字段 | 任务编号、状态、取货地址、送达地址、取件内容、数量、工厂、有限业务员信息、备注 | | 不可见字段 | 客户敏感信息、销售价、成本、回扣、利润 | | 按钮 | 接单、确认揽货、确认送达 | #### 按钮状态 | 按钮 | 可见条件 | | --- | --- | | 接单 | `status=pending` | | 确认揽货 | `status=accepted` | | 确认送达 | `status=picked_up` | ### 4.4 确认揽货弹窗 | 字段 | 类型 | 必填 | | --- | --- | --- | | photo_files | 图片上传 | 是 | | video_files | 视频上传 | 否 | | remark | 文本域 | 否 | | 存储 | 说明 | | --- | --- | | 阿里云 OSS | 图片、视频上传后返回附件 ID 和文件 URL | ### 4.5 确认送达弹窗 | 字段 | 类型 | 必填 | | --- | --- | --- | | remark | 文本域 | 否 | ## 5. Vue WEB 管理后台 ### 5.1 后台登录页 | 路由 | 字段 | 角色 | | --- | --- | --- | | `/login` | username、password、role_type=admin | 管理员 | ### 5.2 后台首页 | 路由 | `/dashboard` | | --- | --- | | 组件 | 指标卡片、待处理事项、最近订单、快捷入口 | | 指标 | 今日订单、待审批、待分配任务、欠款提醒、订单金额 | ### 5.3 用户管理 | 路由 | `/system/users` | | --- | --- | | API | 用户 CRUD,需要新增接口 | | 筛选项 | 账号、姓名、手机号、角色、状态 | | 表格字段 | 用户 ID、账号、姓名、手机号、角色、状态、创建时间 | | 按钮 | 新增、编辑、停用/启用、重置密码 | | 弹窗字段 | username、real_name、mobile、role_id、status、password | ### 5.4 角色与菜单管理 | 路由 | `/system/roles`、`/system/menus` | | --- | --- | | 筛选项 | 角色名称、角色编码、状态 | | 角色字段 | role_name、role_code、status | | 菜单字段 | parent_id、menu_name、menu_path、menu_type、permission_code、icon、sort_no、status | | 按钮 | 新增、编辑、停用、分配菜单 | ### 5.5 客户管理 | 路由 | `/customers` | | --- | --- | | API | `GET/POST /api/customers`、`GET /api/customers/{customer_id}`、`POST /api/customers/import` | | 筛选项 | 客户姓名、手机号、客户类型、结算方式、业务员 | | 表格字段 | 客户姓名、手机号、地址、结算方式、账期天数、归属业务员、欠款金额、状态 | | 按钮 | 新增、查看、编辑、导入、停用 | | 弹窗字段 | customer_name、mobile、address、settlement_type、settlement_days、settlement_start_type、customer_type、salesman_id、credit_limit、remark | ### 5.6 产品分类管理 | 路由 | `/products/categories` | | --- | --- | | API | 需新增 `GET/POST/PUT /api/product-categories` | | 筛选项 | 分类名称、状态 | | 表格字段 | 分类名称、分类编码、排序、状态、备注 | | 按钮 | 新增、编辑、停用 | | 弹窗字段 | category_name、category_code、sort_no、status、remark | ### 5.7 产品管理 | 路由 | `/products` | | --- | --- | | API | `GET/POST /api/products`、`GET /api/products/{product_id}` | | 筛选项 | 产品名称、规格、分类、状态 | | 表格字段 | 产品名称、规格、单位、分类、成本价、售价、状态、更新时间 | | 按钮 | 新增、查看、编辑、停用 | | 弹窗字段 | product_name、specification、unit、category_id、cost_price、sale_price、status、remark | ### 5.8 工厂/供应商管理 | 路由 | `/suppliers` | | --- | --- | | API | `GET/POST /api/suppliers` | | 筛选项 | 名称、类型、状态 | | 表格字段 | 名称、类型、联系人、联系电话、地址、模板类型、状态 | | 按钮 | 新增、编辑、停用 | | 弹窗字段 | supplier_name、supplier_type、contact_name、contact_mobile、address、template_type、status、remark | ### 5.9 订单管理后台 | 路由 | `/orders` | | --- | --- | | API | `GET /api/orders`、`GET /api/orders/{order_id}` | | 筛选项 | 状态、客户、业务员、工厂、来源、开始时间、结束时间 | | 表格字段 | 订单编号、客户、业务员、状态、销售额、成本、利润、利润率、固定提成、创建时间 | | 按钮 | 查看、取消、生成下发文本、创建司机任务 | | 权限 | 管理员可见全量数据 | ### 5.10 司机任务管理 | 路由 | `/logistics/tasks` | | --- | --- | | API | 需新增 `GET/POST /api/logistics/tasks`、`GET /api/logistics/tasks/{task_id}` | | 筛选项 | 任务状态、司机、订单编号、时间 | | 表格字段 | 任务编号、订单编号、司机、取货地址、送达地址、状态、创建时间 | | 按钮 | 新建任务、查看、取消任务 | | 弹窗字段 | order_id、driver_id、pickup_address、delivery_address、pickup_content、quantity、factory_id、remark | ### 5.11 物流与 AI 管理 | 路由 | `/ops/logistics-ai` | | --- | --- | | API | 物流节点维护接口、`POST /api/ai/recognize`、`POST /api/ai/recognize/{log_id}/correct` | | 筛选项 | 订单编号、客户、识别状态、时间 | | 表格字段 | 订单编号、图片、识别置信度、识别状态、创建人、创建时间 | | 按钮 | 上传图片、发起识别、人工修正、查看原始结果 | | 弹窗字段 | image_url、biz_type、biz_id、corrected_result | ### 5.12 提醒管理 | 路由 | `/reminders` | | --- | --- | | API | 需新增 `GET /api/reminders`、`POST /api/reminders/{id}/read` | | 筛选项 | 类型、状态、接收人、业务类型、时间 | | 表格字段 | 提醒标题、类型、业务类型、接收人、状态、发送时间、创建时间 | | 按钮 | 查看、标记已读、取消 | ### 5.13 报表统计 | 路由 | `/reports/performance` | | --- | --- | | API | `GET /api/reports/performance`、`GET /api/reports/performance/export` | | 筛选项 | 统计类型、开始日期、结束日期、产品分类 | | 图表 | 分类金额柱状图、订单趋势折线图 | | 表格字段 | 统计周期、订单数、订单金额、分类金额、固定提成金额 | | 按钮 | 查询、导出 | ### 5.14 系统配置 | 路由 | `/system/configs` | | --- | --- | | API | `GET /api/configs/{config_key}`、`PUT /api/configs/{config_key}` | | 配置项 | 欠款生成模式、物流超时小时数、沉默客户周期、沉默客户金额阈值、报表分类映射、OSS 配置摘要、AI 配置摘要 | | 按钮 | 保存 | | 权限 | 管理员 | ### 5.15 审计日志 | 路由 | `/audit-logs` | | --- | --- | | API | `GET /api/audit-logs` | | 筛选项 | 业务类型、业务 ID、操作人、操作类型、开始时间、结束时间 | | 表格字段 | 操作人、操作时间、操作类型、业务类型、业务 ID、结果、备注 | | 按钮 | 查看前后值 |