Commit Graph

19 Commits

Author SHA1 Message Date
Sisyphus
bae319fe98 feat(F006-W17.6): 服务商品页 PageHeader 加 SKU 总数 (type=2) 2026-07-09 17:11:43 +08:00
Sisyphus
8116e04291 feat(F006-W17.6): PageHeader 加 SKU 总数显示 (实物商品页 sub 改为 共 N 个商品, M 个SKU) 2026-07-09 16:44:17 +08:00
Sisyphus
87e278749b style(F006-W17.7): list 页表头统一居中显示
- DataTable 组件 header-cell-style textAlign: left → center (覆盖大多数 list 页)
- 3 个裸 el-table list 页补 header-cell-style (categoryGood/region/coupon)
- 单元格内容对齐不变 (仍 left), 只动表头
2026-07-09 14:56:31 +08:00
Sisyphus
2f7ec67903 refactor(F006-W17.6.1): TableActions 按数量自动收纳 (≤3 全显示, >3 前2+⋯)
用户反馈: 操作列只显示一个文字按钮+⋯ 不方便, 期望按按钮数量智能显示
- 过滤 when 后 ≤3 个: 全部显示文字按钮, 不显示 ⋯
- 过滤 when 后 ≥4 个: 前 2 个常驻文字按钮 + ⋯ (收纳剩余)
- 默认 visibleCount=2 (可配置)

TableActions API 调整 (W17.6 → W17.6.1):
- 原来: :primary=[A] + :more=[B,C,D] (人为主次划分)
- 现在: :actions=[A,B,C,D] (按数组顺序自动前 2 显 + ⋯)

16 文件改动 (1 组件 + 15 view 调用方式):
- 15 view 合并 :primary/:more → :actions
- 3 按钮页 (10 个): 现在全部显示文字按钮无 ⋯, 体验更直接
- 4/5 按钮页 (5 个): 前 2 显 + ⋯, 比之前详情+⋯更直观
2026-07-09 13:55:34 +08:00
Sisyphus
cb2790d318 refactor(F006-W17.6): 操作列主次分离 (15 个 list 页 + TableActions 组件)
- 新建 TableActions 通用组件 (src/components/TableActions/, ~120 行)
  * primary 常驻主操作 (el-button text)
  * more 次操作收进 ⋯ el-dropdown (MoreFilled 触发)
  * label/type 支持 string 或函数 (覆盖动态: 上架/下架, 禁用/启用)
  * when 条件渲染 (替代散落各处的 v-if)
  * danger 项自动 divided + 红字
  * 复用 global-popper.scss 已铺好的 el-dropdown 主题

- 15 个按钮≥3 的 list 页改造 (按钮≤2 的 27 页不动):
  5 按钮: GoodListView/ServiceGoodListView/CouponListView
  4 按钮: OrderListView/OpenAppListView
  3 按钮: user/UserListView/CompanyAccountListView/LabelListView/
          ScheduleListView/sys/UserListView/EnterpriselevelListView/
          OrderCommentListView/PromoterListView/CategoryGoodListView/
          RegionListView

- 列宽统一 240/280/220/200/320 → 140 (固定窄列)
- 清理 4 个 rr-actions 页不再使用的 .rr-actions/.rr-actions__sep 样式
- 业务逻辑全保留 (onClick 函数/二次确认/条件渲染逻辑)
- OrderListView 退款条件修正: [1,2,3,4].includes → ===4 (原 v-else-if 链语义)
2026-07-09 12:08:48 +08:00
Sisyphus
a978b1572b fix(F006-W17.4.3): 单位列 width 70 → 90 + minWidth 90 (列宽足够)
用户反馈: 单位列"单/位"两字换行
- DataTable 已全局强制表头不换行 (W17.4.2)
- 单位列实际 width 70 太窄, 即使 nowrap 也撑不下"单位"两字
- 加宽到 90 + minWidth 90 兜底
2026-07-07 18:40:11 +08:00
Sisyphus
04728fb7a6 refactor(F006-W17.4.1): 商品/服务页列宽精细化 + 删审核意见列
用户原话:
- 商品ID 宽度太多 → 140 缩到 100
- 商品名称/服务名称 列再加宽一些 → minWidth 240 加到 320 (业务核心, 最长字段)
- 分类列调窄一些 → GoodListView minWidth 240 缩到 180 (3 级合并后 180 足够)
- 单位的标题不应该换行 → width 80 + minWidth 80 (DataTable 已有 whiteSpace: nowrap)
- 审核意见列不用在列表中展示 → 整列删除 (详情弹窗内可看)

改动:
- GoodListView columns 11 列 → 10 列
- ServiceGoodListView columns 12 列 → 11 列
- 整体宽度收敛给商品/服务名称 (核心信息)
2026-07-07 18:34:37 +08:00
Sisyphus
9664b3d954 refactor(F006-W17.4): 实物/服务商品页套 PageHeader+SearchBar+ListTabs+DataTable 标准化
用户原话: 按照同样的列表页面的UI规范, 调整实物商品/服务商品的页面样式

实物商品 GoodListView (547→564 行):
- 顶部 rr-page-header 改用 <PageHeader title="商品管理" :sub="..."> 包导出/新增按钮
- 裸 el-form 搜索改用 <SearchBar :fields=[title, enterpriseName]>
- 裸 .rr-tabs-row/.rr-tabs 改用 <ListTabs> (4 状态 tab, count pill)
- 裸 el-table + el-pagination 改用 <DataTable> (:borderless + :page-sizes)
- 操作列 5 个 el-button 改用 el-link + 分隔符, 不再换行
- 新增 checkStats reactive (pending/approved/rejected) 跟 tab 解耦
- 新增 loadStats() 并发拉 3 个状态的 total, stats 与 tab 解耦
- tabItems 全部 = pending+approved+rejected (跨 tab 一致)
- onSearch/onReset/toggleEnabled 并发刷 list + stats

服务商品 ServiceGoodListView (308→352 行):
- 已经有 PageHeader/SearchBar, 补 ListTabs + DataTable + el-link 操作列
- 同样的 checkStats + loadStats (跨 tab 一致)
- 表格所有列改为 slot 透传
- 价格列 / 铺货 / 状态 都有 slot

保留业务独有:
- 详情弹窗 (含 SKU 子表 for 实物商品)
- 审核弹窗 (单个/批量)
- 修改分类弹窗 (单个/批量)
- 批量操作栏 (业务独有, 业务 page 才用)
- el-table selection 列 (DataTable 内置支持)
2026-07-07 18:27:42 +08:00
Sisyphus
4b77d67dc2 fix(F006-W17.3.7): list 页统一规范 (:borderless + :page-sizes) + product/shop redirect
- 33 个 ListView.vue 加 :borderless=true + :page-sizes=[10,20,50,100]
  覆盖: order/inquiry/finance/operateguide/sys/Dept|Menu|File|Notice|
        Params|User|Role|Post|DictType|DictData|Product|Schedule|RoleGroup
        user/Enterprise|enterpriselevel|enterprisescore|enterpriserating
        supplier/promoter|couponscope|historylog|logistics|ordercomment|Activity
        other/goodunit|label|textconfig
        api/feedback|help|lunbo
        openapi/AuditLog|CompanyAccount
- OrderListView: columns 抽到 script setup (computed) + :borderless +
  :page-sizes + sub 动态显示选中数
- router/index.ts: /product/shop → redirect /supplier/good
  (删 src/modules/product/shop/ShopListView.vue 旧占位, 后端 404 无意义)
- 沿用 W17 设计规范 v2 (PageHeader+SearchBar+DataTable+ListTabs)
2026-07-07 16:54:37 +08:00
Sisyphus
4b4625df9f feat(F006-W16): 7 supplier 子页 + 3 enterprise 子页 接前端 max-effort mock 2026-07-07 10:22:09 +08:00
zou
b3018fe7d7 fix(F006-W14): 财务 4 视图 + 商品 4 操作按钮 接真 API (1.6K+ 真数据)
W14.1 财务 4 视图接真数据:
- 充值管理 / 提现管理 / 分账记录 / 交易流水
- 后端 /user/accounttransaction/page 是 4 类型合一端点 (405 条)
- 4 configKey 端点统一 → /user/accounttransaction/page
- router 加 queryParams: type=1 (充值) / type=2 (提现) / type=3 (分账) / 交易流水 不传 (全量)
- Playwright 验: 充值 133 条 / 提现 253 条 / 分账 19 条 / 交易流水 405 条
- 发现: 老 vue 端点路径是 /user/accounttransaction/getRechargePage (5.18 教训加强 — 4 URL 试探仍不够, 必须看老 vue 源码)

W14.2 商品详情 SKU: 后端无 supplier_good_sku 表, /supplier/good/skuList 端点返 400 (skuList 功能未实现) — 详情页 skuList 保留 mock, 不强行做

W14.3 实物商品 4 操作按钮接真 API:
- 审核: /supplier/good/checkGood?id=&checkStatus=&checkOpinion= (GET)
- 上下架: /supplier/good/onShelfGood?id= (GET)
- 改分类: /supplier/good/update (POST, body JSON)
- 删除: /supplier/good/delete?id= (GET)
- Playwright 验: 第一行"上架"按钮 → 弹窗 → 确认 → /supplier/good/onShelfGood?id=323 200

W14.4 暂不做 (supplier/promoter 端点 200 但 0 条, 显示空列表已可接受)

W14.1+W14.3 总计真数据: 财务 405 + 实物 16131 = 16536 条, 加 W13 共 16650+ 条

5.18 教训+1: 端点 4 URL 试探 (page/list/search/pageList) 不够, 必须看老 vue 源码
才能找到 getRechargePage 这类特殊命名端点
2026-07-07 09:07:01 +08:00
zou
99166d8abe fix(F006-W13.1+13.2): 实物商品 16131 条 + 服务商品独立接 pageList (type 区分)
W13.1 实物商品:
- /supplier/good/search (16080 条, 缺字段) → /supplier/good/pageList?type=1 (16131 条, 完整字段)
- 完整字段: supplierGoodId/enterpriseName/unitName/brandName/checkStatus/checkOpinion/createDate
- 状态 tab (待审核/已通过/已驳回) 现在能真筛 (之前 search 不返 checkStatus)
- Playwright 验: 标题"商品管理" rows=10 sub="共 16131 个商品"

W13.2 服务商品拆出来:
- 之前 /supplier/servicegood redirect 到 /supplier/good (W3.xC 后端无端点)
- 现在用 /supplier/good/pageList?type=2 是真服务商品端点 (2 条: 家政服务等)
- menu-labels 服务商品 path 改回 /supplier/servicegood (独立路由)
- ServiceGoodListView 接 pageList+type=2, 表格显示服务区域/服务ID/分类等
- Playwright 验: 标题"服务商品管理" rows=2 sub="共 2 个服务商品"

W13.1+W13.2 改的源文件:
- src/modules/supplier/good/GoodListView.vue
- src/modules/supplier/servicegood/ServiceGoodListView.vue
- src/config/menu-labels.ts (servicegood path 改 /supplier/servicegood)
2026-07-06 15:15:30 +08:00
zou
392a4c0acc fix(F006-W12.7): 实物商品 3 条 fallback → /supplier/good/search 真数据 16080 条
问题: 用户验收发现商品管理 (实物商品) 只显示 3 条, 标签 服务商品(→实物商品) 太丑

根因:
- W3.xC 时 /supplier/good/page 端点当时 404, 故 GoodListView 写死 FALLBACK 3 条
- 现在 /supplier/good/page 实际是 200 + code=400 (按 id 查, 不是分页), /supplier/good/search 才是真分页端点
- /supplier/good/search 返 16080 条, 字段精简 (缺 enterpriseName/unitName/createDate/checkStatus/checkOpinion)
- menu-labels 写 "服务商品(→实物商品)" 是 W3.xC redirect 模式下的过渡标签

修法:
- GoodListView.load() 改调 /supplier/good/search, 字段补齐 (缺字段用 -- 占位, checkStatus 默认 2 已通过, supplierGoodId 用 G+id 拼)
- menu-labels "服务商品" 标签去掉 "(→实物商品)" 角标, 只留 "服务商品"
- (后端没 /supplier/servicegood/* 端点, servicegood 路由被 menu-labels 改 path 跳到 /supplier/good, redirect 是设计意图)

验证 (Playwright + token):
- title="商品管理" rows=10 sub="共 16080 个商品"
- /supplier/good/search 200 OK, 10 行真数据 (铝合金门窗/VV62/WDZ-RYJS/WDZN-YJY23/RVV 等)
- 封面图正常加载, 分类 2 级 (门窗/电缆) 正常

已知遗留 (不阻塞使用):
- enterpriseName/unitName/createDate search 端点不返, 表格显示 -- 占位
- 状态 tab (待审核/已通过/已驳回) 暂不能筛选, 因 search 不返 checkStatus
2026-07-06 12:29:06 +08:00
zou
a8be2d0b35 refactor(F006-W11): 7 view 标准化 (PageHeader/SearchBar) - inquiry ×2 + good/servicegood + openapi ×3 2026-07-05 23:07:30 +08:00
zou
50c9e144e9 refactor(F006-W10): 8 view 标准化 (批次 4-7)
批次 4-7 共 8 个 view 套 PageHeader/SearchBar:
- 批次 4 (2): coupon/goodunit
- 批次 5 (3): UserListView/EnterpriseListView/FinanceListView (sys 风格)
- 批次 6 (1): OrderDetailView (PageHeader + 返回按钮 slot)
- 批次 7 (2): ActivityListView/OperateguideListView (Activity 类似 sys, Operateguide 无搜索)

修复 GoodunitListView v-model:filters 字面量 + 缺 reactive import

W10 累计: 18 view 标准化 (10+8 = 18 view, 共减 -160+ 行)
剩余 (W11 计划): openapi×3 (OpenApp 500+ 行, 跳过 W10) / sys×14 / supplier×good / inquiry×2
2026-07-05 22:40:20 +08:00
zou
8601032bba fix(F006-W7): 修重复菜单 - coupon 独立 view 走真 API + 清理 11 个死代码 configKey
问题: 路由 /supplier/coupon 共用了 configKey=other-textconfig, 导致点击优惠券打开的是常量配置页 (W5.x.x+4 阶段误用)

改动:
- 新增 src/modules/supplier/coupon/CouponListView.vue (233 行) - 沿用老 vue supplier/coupon.vue 116 行, 走 /supplier/coupon/page 真 API (200 OK, 3 条数据, 字段全对齐: name/type/scope/sourceType/enterpriseName/fullMoney/deductedMoney/rebate/quantity/receiveQuantity/remainingQuantity/onShelf/goodNames/createTime)
- router/index.ts 行 237 改用独立 view
- mockTableConfigs.ts 清死代码:
  - 11 个 configKey entry (order-ordergood/order-serviceorder/order-*-after/order-*-commission/order-base-price-analysis/order-group-supplier/order-group-service + other-goodunit/other-label) 已被 router 走专门 view, 删
  - 17 个未被引用的 mock 变量 (orderCommonCols/orderGoodMock/.../goodunitCols/goodunitMock/labelCols/labelMock + orderStatusMap/afterSaleStatusMap) 删
  - 71 行 order 孤儿数组字面量 + 17 行 goodunit/label 孤儿块删
  - STATUS_MAPS 删 order/afterSale 引用 (因为源 map 已删)
- 总体: mockTableConfigs.ts 928 行 → 797 行 (-131 行, -14%)

验收: 13/13 URL 200 (admin + 11 旧 + 1 新 coupon); CouponListView-*.js 已编译进 dist
build: gzip 375KB 无回退, MockTableView bundle 49.88KB → 41.65KB (-17%)
2026-07-05 12:51:40 +08:00
Sisyphus
59a235d56c feat(F006-W5xx5): 关键 view 完整化 (沿用老 vue 字段/操作/弹窗) + W3.x C 补 commit
用户原话: 不是让你沿用老vue页面内容了吗, 只是更换成新版本的UI
用户原话: 要能够交付使用, 像原有的vue平台一样使用

整改 (5 个 view 从严重简化变完整版):
- OrderListView 240 行: 订单号/合同号/供应商/状态/时间范围 完整搜索, 8 种状态 tab,
  操作 (详情/付款/发货/收货/退款/取消/打印), 批量导出, type 自适应 good/service/group
- OrderDetailView 582 行: 完整 4-tab (订单信息/商品明细/物流/付款发票),
  状态卡 + 操作按钮 (按状态动态显示), 9 种订单状态, 推广信息, 多状态按需渲染
- GoodListView 507 行: 12 列表格 (封面/商品/供应商/3 级分类/品牌/单位/铺货/审核/状态),
  4 种状态 tab, 5 种操作 (详情/审核/上下架/改分类/删除), 5 种批量操作,
  详情弹窗含 SKU 列表 (编码/原价/现价/秒杀价/拼团价/库存)
- ServiceGoodListView 302 行: 同上针对服务商品
- InquiryDetailView 229 行: 询价基本信息 (产品/品牌/规格/数量/收货地址/交货日期/价格有效),
  附件下载, 报价列表 (供应商/状态/金额/次数/来源/查看报价)

字段 100% 沿用老 vue (supplierGoodId/contractCode/groupNumber/acceptNum 等),
新增 mock 数据 (3-8 条覆盖各种业务场景), 弹窗/操作/批量/导出 全部走通 (mock 实现)
+ W3.x C P0-P2 累计 30+ 个 view 文件补 commit (inquiry/openapi/order/sys 等 11+ 模块)

router 调整: 9 个 order 路由统一到 OrderListView (type 自动推断)
+ /supplier/servicegood 路由独立 (避免被 tree-shake)
2026-07-05 12:12:41 +08:00
Sisyphus
d842182b17 feat(F006-W3xC): P2 升级 - 4 个无后端页 改 redirect 到真数据\n\n用户反馈 P2 占位页只列字段不能交付. 重探测后端发现 /supplier/good/search 返 16080 行真数据, 重新设计.\n\n改动:\n- /supplier/good 走 /supplier/good/search 真数据 (16080 行, 10 字段: id/title/icon/brandName/3 级分类/onShelf/type/remark), 含客户端 title 模糊筛选 + 分页 + 封面缩略图\n- /product/shop redirect to /supplier/good (后端 404)\n- /supplier/servicegood redirect to /supplier/good (后端 404)\n- /api/feedback redirect to /other/operateguide (后端 404, 内容列表是真数据页)\n- 3 菜单项 path 改 redirect 后目标, label 加 重定向提示 提示用户合并关系\n- 占位 view 文件保留 (src/modules/{product/shop,supplier/servicegood,api/feedback}/*.vue), 未来后端实现时升级\n\n铁律: 任何占位必须真能用. P0/P1 简单 el-result OK 但要看真数据, P2 用 redirect 模式更友好. 后续 P3+P4 推进前先全量重探测 API, 能 redirect 就 redirect, 不能就升级真数据或保留极简 el-result. 2026-07-05 10:31:13 +08:00
Sisyphus
932a0520f1 feat(F006-W3xC): 6 个新 view (P2 商品管理全部, 含老 vue 字段参考)
P2.1 /product/shop 商品店铺 (占位 + 老 vue 12 字段预览)
P2.2 /supplier/good 商品管理 (占位 + 老 vue 12 字段预览)
P2.3 /supplier/servicegood 服务商品 (占位 + 老 vue 10 字段预览)
P2.4 /other/groupbuy 拼团活动 (走 /other/groupbuy/page 真 API, 11 行)
P2.5 /other/seckill 秒杀活动 (走 /other/seckill/page 真 API, 3 行)
P2.6 /api/feedback 意见反馈 (占位 + 老 vue 7 字段预览)

字段参考来源: devbox /data/平台开发/04-源码/product_network_vue/src/views/
- supplier/good.vue: 12 列 (icon/title/enterpriseName/3 级分类/brand/unit/createDate/onShelf/checkOpinion/checkStatus)
- supplier/servicegood.vue: 10 列 (icon/title/enterpriseName/3 级分类/pricedName/createDate/isDistribution/checkStatus)
- api/feedback.vue: 7 列 (title/content/orderCode/createDate/nickName/phone/imgList)
- product/shop.vue: 无对应老 vue 文件, 复用 supplier/good 字段模板

占位页升级: el-result 报错 + 额外加 1 个预期字段展示卡 (key/label/desc 三列), 让用户验收时知道这页面后端实现后应该长啥样

后端 /supplier/good/page 报 400 id 类型错 (老 controller @GetMapping(/{id}) 抢 page 路径), 占位符合实际
2026-07-05 10:15:25 +08:00