Files
guilixu-admin/.workbuddy/memory/2026-08-16.md
T
gxwebsoft 4a7b217c2b feat(special-zone): 实现专区商品管理功能
- 新增添加商品到专区接口 addSectionGoods
- 新增从专区移除商品接口 removeSectionGoods
- 商品抽屉宽度调整并改造为支持搜索添加和移除商品
- 增加商品搜索输入框及搜索按钮,支持关键词搜索商品
- 搜索结果列表添加单条商品添加按钮和批量添加确认按钮
- 已关联商品列表新增移除商品操作按钮及确认弹窗
- 调整商品列表图片大小及表格滚动高度,提高界面整洁度
- 专区商品数据加载添加搜索结果过滤逻辑,避免重复添加
- 用户白名单弹窗移除 isStaff 限制,允许所有用户搜索
- 修复白名单用户选择框无法显示缺失勾选列宽度问题
- 采用 computed 管理多选配置及已选用户状态,提升响应性
2026-08-17 01:14:16 +08:00

2.1 KiB
Raw Blame History

2026-08-16 工作日志

专区白名单用户弹窗修复

1. 去掉 isStaff 限制

  • 文件:src/views/special/zone/components/UserSelectModal.vue
  • 改动:pageUsers 调用移除 isStaff: true 参数,使白名单搜索覆盖全部用户(不再只查后台员工)。

2. 修复勾选框不显示

  • 现象:弹窗表格数据正常但无 checkbox 勾选列,用户无法选择。
  • 根因:rowSelectionreactive() 包整个对象的方式在 ele-pro-table 中不生效;且缺少 columnWidth 导致勾选列无宽度不渲染。
  • 对比:项目内 shopCoupon/index.vuecomputed(() => ({ columnWidth, selectedRowKeys, onChange })) 模式可正常工作;字典页用 { columnWidth: 32 } 最简写法也可。
  • 修复:
    • reactivecomputed 返回 rowSelection 对象(与 shopCoupon 一致)
    • columnWidth: 48
    • selectedRowKeys 独立为 ref<number[]>,通过 computed 注入 rowSelection
    • 所有引用点同步更新(模板计数、confirm、watch 初始化)

专区商品抽屉改造为可编辑

  • 需求:专区「商品」按钮打开的抽屉从只读列表升级为支持添加/移除商品。
  • 后端(guilixu-java ShopHomeSectionController.java)新增两个接口:
    • POST /{id}/goods — 添加商品到专区(接收 goodsId[],将 section_id 追加到每个 goods 的 section_ids 逗号串中,用 LinkedHashSet 去重)
    • DELETE /{id}/goods — 从专区移除商品(接收 goodsId[],从 section_ids 中移除该 section_id,空则置 null
  • 前端 APIsrc/api/shop/shopZone/index.ts)新增 addSectionGoodsremoveSectionGoods
  • 前端 UIsrc/views/special/zone/index.vue)商品抽屉改造:
    • 顶部:搜索框 + 「搜索」按钮 + 「全部添加(N)」确认按钮
    • 搜索结果区:虚线框展示候选商品列表,每行有「+添加」单条操作(自动过滤已在专区内的商品)
    • 已关联商品表格:每行加「移除」按钮(二次确认后调用 remove 接口)
    • 数据源:搜索商品复用已有 pageShopGoods API@/api/shop/shopGoods