bindbox-game/.trae/documents/发货统计创建表单与来源字段优化方案.md
邹方成 6ee627139c
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 40s
feat: 新增支付测试小程序与微信支付集成
feat(pay): 添加支付API基础结构
feat(miniapp): 创建支付测试小程序页面与配置
feat(wechatpay): 配置微信支付参数与证书
fix(guild): 修复成员列表查询条件
docs: 更新代码规范文档与需求文档
style: 统一前后端枚举显示与注释格式
refactor(admin): 重构用户奖励发放接口参数处理
test(title): 添加称号效果参数验证测试
2025-11-17 00:42:08 +08:00

3.0 KiB
Raw Blame History

问题理解

  • 创建/编辑对话框单列过长,影响填写与可读性。

  • 产品、用户应支持选择(远程搜索)而非手填。

  • 订单来源限定为:淘宝/拼多多/京东/线下;来源类型与文本重复,应仅保留类型并在后端映射文本。

前端改造

  • 表单布局(左右分布):

    • web/admin/src/views/operations/shipping-stats/index.vue 的编辑对话框使用 el-row/el-col 两列布局,将字段按分组排布:

      • 左列:发货时间、产品选择、单价、发货数量、订单来源类型(下拉)。

      • 右列:用户选择、收件人、地址、快递公司、运单号、订单号。

    • 必填项:shipped_atproduct_iduser_idshipped_qty

  • 产品选择:

    • 远程搜索下拉 el-select filterable remote 调用 GET 'admin/products'(已有路由:internal/router/router.go:120)。

    • 选中后自动填充:product_idproduct_nameproduct_price_cents

  • 用户选择:

    • 远程搜索下拉调用 GET 'admin/users'(已有路由:internal/router/router.go:129)。

    • 选中后自动填充:user_iduser_nameuser_address_text仍支持手动输入。

  • 订单来源:

    • order_source_type 改为下拉选择:{1: 淘宝, 2: 拼多多, 3: 京东, 4: 线下}

    • 移除前端表单中的 order_source_text 字段,仅展示文本列(由后端返回)。

  • API 类型调整:

    • web/admin/src/api/shipping-stats.tsCreateShippingStatRequest/UpdateShippingStatRequest 中删除 order_source_text 字段。

    • 列表表格仅显示 order_source_text;不显示 order_source_type 列(现有实现只显示文本,无需调整)。

后端改造

  • 文段位置:internal/api/admin/shipping_stats_admin.go

  • 文本映射策略:

    • 在创建与更新接口中,根据 OrderSourceType 自动映射 OrderSourceText

      • 1→"淘宝"2→"拼多多"3→"京东"4→"线下",其他值映射为"未知"
    • 移除对 order_source_text 的前端输入依赖:

      • CreateShippingStat() 忽略请求体中的 order_source_text,统一用映射结果赋值。

      • ModifyShippingStat()OrderSourceType 变更则同步更新映射文本。

  • 其余字段逻辑不变;保留列表筛选条件与分页排序。

交互与体验

  • 远程搜索均支持关键字匹配与节流,选项标签为 名称 (ID),用户便于确认。

  • 表单左右分布减少滚动,分组更清晰;金额与运单等非必填项可留空。

验收标准

  • 新建/编辑对话框为两列布局,核心字段分组合理,必填校验生效。

  • 产品与用户支持远程搜索选择,选中后自动填充相关字段。

  • 订单来源仅以下拉类型选择,后端返回正确文本,前端只展示文本;不再出现“来源文本/来源类型重复”问题。

  • 列表/详情/增改删功能在管理端登录后完整可用。