# 2026-08-16 工作日志 ## 专区白名单用户弹窗修复 ### 1. 去掉 isStaff 限制 - 文件:`src/views/special/zone/components/UserSelectModal.vue` - 改动:`pageUsers` 调用移除 `isStaff: true` 参数,使白名单搜索覆盖全部用户(不再只查后台员工)。 ### 2. 修复勾选框不显示 - 现象:弹窗表格数据正常但无 checkbox 勾选列,用户无法选择。 - 根因:`rowSelection` 用 `reactive()` 包整个对象的方式在 `ele-pro-table` 中不生效;且缺少 `columnWidth` 导致勾选列无宽度不渲染。 - 对比:项目内 `shopCoupon/index.vue` 用 `computed(() => ({ columnWidth, selectedRowKeys, onChange }))` 模式可正常工作;字典页用 `{ columnWidth: 32 }` 最简写法也可。 - 修复: - `reactive` → `computed` 返回 rowSelection 对象(与 shopCoupon 一致) - 补 `columnWidth: 48` - `selectedRowKeys` 独立为 `ref`,通过 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) - 前端 API(`src/api/shop/shopZone/index.ts`)新增 `addSectionGoods`、`removeSectionGoods`。 - 前端 UI(`src/views/special/zone/index.vue`)商品抽屉改造: - 顶部:搜索框 + 「搜索」按钮 + 「全部添加(N)」确认按钮 - 搜索结果区:虚线框展示候选商品列表,每行有「+添加」单条操作(自动过滤已在专区内的商品) - 已关联商品表格:每行加「移除」按钮(二次确认后调用 remove 接口) - 数据源:搜索商品复用已有 `pageShopGoods` API(@/api/shop/shopGoods)