/** * 应用更新说明(纯前端静态数据) * * - 按日期分组,组内可多条;整体顺序:新日期在上。 * - icon:Iconify 图标名,与路由 meta.icon / 侧栏菜单图标一致。 * 物料列表 → mdi:format-list-bulleted * 物料分类 → mdi:tag-multiple * 业务场景 → mdi:image-multiple-outline * 特征列表 → mdi:shape-outline * 页签管理 → mdi:view-dashboard-outline * 多维表格 → mdi:table-large * 配置表 → mdi:table-edit * 选配画布 → mdi:cog-outline(选配管理弹窗内配置,与物料列表强相关时也可与物料列表共用 mdi:format-list-bulleted) * 公式点选弹窗(共用面板)→ mdi:view-dashboard-outline(与页签管理同源) * 仓库管理 → mdi:warehouse * 供货目录 → mdi:clipboard-list-outline * 供应商列表 → mdi:truck-delivery-outline * 客户管理 → mdi:store-outline * 客户列表 → mdi:storefront-outline * 客户价格本 → mdi:notebook-outline * 统筹集合管理 → mdi:folder-cog-outline * 代理授权包 → mdi:shield-key-outline * 员工管理 → mdi:account-group-outline * 组织管理 → mdi:sitemap-outline * OKR(父级)→ mdi:bullseye-arrow * Objective → mdi:flag-checkered * KR 关键结果→ mdi:key-variant * OKR 复盘 → mdi:book-open-variant * IM 聊天 → mdi:message-outline * - kind(可选): * 'add' — 新功能 / 新增内容 → 蓝色字 * 'change'— 功能调整、优化 → 橘色字 * 'fix' — 修复问题 → 橘色字 * 不写 kind 时正文为默认深灰色。 * - 修改本文件后:开发环境保存即热更新;生产环境需重新执行 build。 * - 应用版本:维护下方 `APP_VERSION`(侧栏 v主.次,更新说明弹窗 v主.次.修);构建环境变量 `VITE_APP_VERSION` 可覆盖。 * - **版本号与更新说明解耦**:新增/修改 `APP_CHANGELOG` 条目时**不要**改动 `APP_VERSION`; * 勿「每写一条日志就升版本」、勿按日期自动递增 patch。 * 仅在**用户明确要求发版/升版本**,或**单独约定的一次发布**时,才手动调整 `APP_VERSION`(通常 patch +1,如 0.7.01 → 0.7.02)。 * * @typedef {{ icon: string, text: string, kind?: 'add'|'change'|'fix' }} ChangelogItem * @typedef {{ date: string, items: ChangelogItem[] }} ChangelogDay */ /** 应用版本(如 0.7.029 → 侧栏 v0.7,弹窗 v0.7.029) */ export const APP_VERSION = '0.7.029' /** @type {ChangelogDay[]} */ export const APP_CHANGELOG = [ { date: '2026-07-03', items: [ { icon: 'mdi:help-circle-outline', kind: 'change', text: '「物料管理 / 供货目录 / 客户管理」侧栏子菜单启用小「?」说明:复用 `/api/tips/*`,`tips_key` 为 `Material|Supply|Dealer:路由名`(如 `Material:MaterialList`、`Supply:SupplySupplierList`、`Dealer:DealerList`)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理 → 配货分摊预估 / 调货分摊预估」新增页面:进页自动 `alloc|deploy/amortize` 跑批后拉 `share/listed`;顶栏费用票据 Tab、时间段筛选;列表样式对齐运费分摊预估(9 列,`is-cols-share-alloc` / `is-cols-share-deploy`)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」侧栏子菜单启用小「?」说明(与基础数据一致):复用 `/api/tips/*`,`tips_key` 为 `Warehouse:路由名`(如 `Warehouse:WarehouseTransfer`);有 `warehouse` 模块 `is_modify` 权限可编辑保存。', }, { icon: 'mdi:swap-horizontal', kind: 'change', text: '「仓库管理 → 调货」物料调配汇总 / 日志:除物料外列表不展示编码(出库仓、入库仓、票据仅名称);费用、数量列数字右间距改为 6px(`is-cols-transfer-attr` / `is-cols-logs-wht`)。', }, { icon: 'mdi:package-variant-closed', kind: 'change', text: '「仓库管理 → 配货」物料配货汇总 / 日志:除物料外不展示编码;费用、数量列右间距 6px(`is-cols-alloc-attr` / `is-cols-logs-wha`)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费管理」物料运费汇总 / 日志:除物料外不展示编码;费用、数量列右间距 6px(`is-cols-freight-attr` / `is-cols-logs-whf`)。', }, { icon: 'mdi:delete-outline', kind: 'change', text: '「仓库管理 → 损耗管理」总损耗汇总 / 明细:除物料外不展示编码;RDC损耗、FDC损耗列右间距 6px(`is-cols-collect-waste` / `is-cols-logs-whw`)。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「仓库管理 → 采购管理」成本汇总 / 采购日志:除物料外不展示编码;费用、数量列右间距 6px;采购订单总金额列右间距 6px(`is-cols-collect-whp` / `is-cols-logs-whp` / `is-cols-orders-whp`)。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「仓库管理 → 公关费用」列表:除关联商品弹窗外,集团 / 供应组织 / 票据仅展示名称;金额列右间距 6px(`is-cols-pr-cost`)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费分摊预估」新增供应商集团列;除物料外集团 / 供应组织 / RDC 仓仅名称;列宽改为 10 列;数字列右间距仍保持默认 20px(不与公关分摊共用 override)。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「仓库管理 → 公关分摊预估」除物料外集团 / 供应组织仅名称;数字列右间距 6px(`is-cols-share-pr`)。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「仓库管理 → 公关分摊预估」对接新 `share/listed` 字段:`purchase_amount`/`total_amount` 分列采购金额与分摊总额;定向/维护/合计单价读 `targeted_unit_amount`、`non_targeted_unit_amount`、`unit_amount`;占比取 `targeted_ratio + non_targeted_ratio`。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「公关分摊预估」跑批改单次 `cost/amortize`(传 `start_time`/`end_time`,默认今年 1 月 1 日~当天);不再逐条拉费用循环分摊,成败由后端处理。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「公关分摊预估」列宽:供应组织 12fr、物料 16fr;分摊总额 / 定向·维护·合计单价 / 税率 / 占比收窄(`is-cols-share-pr`)。', }, { icon: 'mdi:cart-outline', kind: 'fix', text: '「采购管理 → 采购订单」采购日期仅展示后端 `purchase_date`,去掉前端用确认时间/创建时间回退,避免与后端字段不一致。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费分摊预估」跑批默认时间段改为今年 1 月 1 日~当天(与公关分摊一致)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费分摊预估」对接新接口:列表改服务端分页(`page`/`limit`);顶栏增加 type=4 费用票据切换(同调货),选中后按 `bill_tax` 筛选;去掉「分摊总额」列,列宽补给物料 / RDC 仓;ID 列加宽、采购数量略窄,长 ID 1920 下完整展示。', }, { icon: 'mdi:truck-delivery-outline', kind: 'fix', text: '「运费分摊预估」列表字段:`purchase_count` 改读接口 `total_count`,`purchase_amount` 改读 `total_amount`;分页走后端 `page`/`limit`,移除前端全量拉取后 slice。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「仓库管理 → 公关分摊预估」ID 列加宽至 8fr(与运费分摊一致),采购数量 / 金额 / 分摊总额略收窄;税率列移至占比左侧,两列相邻。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「运费分摊预估」税率列移至占比左侧相邻;列宽微调(ID 8fr、采购金额 9fr 等)。', }, ], }, { date: '2026-07-02', items: [ { icon: 'mdi:package-variant', kind: 'change', text: '「统筹集合 → 录入商品」本集合商品表(14 列 + 勾选)对齐仓库运维样式:表头每列彩色底边、上下留白;商品名/编码、数字列与计提管理字样式一致;表格外框与圆角统一。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」表头勾选框与「物料」等列文字底对齐;「启用」列名改为「状态」(数据仍显示启用/停用)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费分摊预估 / 公关分摊预估」列表对齐统一样式(各 11 列):表头每列彩色底边;供应组织 / RDC 仓(运费)左对齐;税率 / 分摊时间表头与数据居中;分摊时间列宽 8fr(`is-cols-share-freight` / `is-cols-share-pr`)。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「仓库管理 → 公关费用」列表对齐采购订单样式(10 列 `is-cols-pr-cost`):表头每列彩色底边;费用编码略窄、集团 / 组织各加半份;供应商集团 / 供应组织左对齐;招待日期居中;关联商品 / 状态 / 操作表头与内容居中;备注省略号 + 悬停全文。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「仓库管理 → 采购管理」采购订单列表改为 flex 表格(10 列 `is-cols-orders-whp`):表头每列彩色底边;供应商集团 / 供应组织左对齐;采购日期居中;订单确认 / 到库确认居中;操作列左对齐;与成本汇总 / 采购日志样式统一。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「仓库管理 → 采购管理」成本汇总 / 采购日志对齐调货样式(8 列,无备注):表头每列彩色底边;RDC 仓、供应公司、公司左对齐;采购日志时间列表头与数据居中(`is-cols-collect-whp` / `is-cols-logs-whp`)。', }, { icon: 'mdi:delete-outline', kind: 'change', text: '「仓库管理 → 损耗管理」列表对齐调货/配货样式(7 列布局):表头每列彩色底边;RDC/FDC 仓左对齐;明细备注列省略号 + 悬停全文;时间列表头与数据居中;明细列宽备注 9fr / 时间 8fr(`is-cols-logs-whw`);汇总仍为 6 列 `is-cols-collect-waste`。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「仓库管理 → 运费管理」列表对齐调货/配货样式:表头每列彩色底边;RDC 仓与供应公司左对齐;日志备注列省略号 + 悬停全文;时间列表头与数据居中;日志列宽备注 9fr / 时间 8fr(`is-cols-logs-whf`)。', }, { icon: 'mdi:package-variant-closed', kind: 'change', text: '「仓库管理 → 配货」列表对齐调货样式:表头每列彩色底边;RDC/FDC 仓左对齐;日志备注列省略号 + 悬停全文;时间列表头与数据居中;日志列宽备注 9fr / 时间 8fr(`is-cols-logs-wha`)。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「采购管理 → 新增采购订单」弹窗改三列(1520px):左基本信息 + **统筹集合**下拉(`collection/listed` 拉全量后按供应组织 + 采购组织过滤,多条选手动选、单条自动选);中 **统筹商品** 列表(`collection/goods/listed` / `search` 分页,搜索物料);右已选商品明细。中间点「+ 添加」写入明细,已选行显示绿色「已添加」;移除每行「查」弹窗(`WhGoodsQuickPickDlg`)。添加时仍回填统筹 `payment_price` 为单价。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「公关费用」新增/编辑弹窗对齐三列(1320px):左基本信息 + 统筹集合(按供应组织过滤);中统筹商品池;右关联商品列表;同样支持「已添加」态与分页搜索,移除「查询添加」弹窗。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '新增共用组件 `WhCollectionGoodsPickPanel.vue`;API 补充 `listSupplyCollectionsForOrgs`、`filterSupplyCollectionsForOrgs`、`listCollectionGoodsPage`、`pickCollectionGoodsPickFields`(统筹集合按组织筛选 + 集合内商品分页选品)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「运费分摊预估」分摊结果表改为固定中文列:ID、供应组织、物料、RDC仓库、税率、采购数量、采购金额、分摊总额、单件分摊、占比、分摊时间;名称/编码分列展示,物料名从 `goods_name` 数组解析;列宽与公关分摊预估对齐。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「运费分摊预估」进页自动跑批:先 `POST /warehouse/freight/amortize`(传分摊开始/结束日期,按已到库订单与物料运费日志维度批量分摊),再 `freight/share/listed` 拉结果;「重新跑批」可手动重跑,「查询」仅查结果;数据源为运费管理日志,不再误提示去确认采购订单。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「采购管理 → 采购订单」确认拆为两步:「订单确认」调用 `purchase/order/confirm` 产生采购属性与采购日志;「到库确认」调用 `purchase/order/arrive` 按采购金额占比拆分物流费并写入运费管理。列表「订单确认」「到库确认」两列独立展示(待确认/已确认、待到库/已到库);操作列两个入口并列,已完成显示灰色文案;到库弹窗选物流公司(组织 type=4)、运费票据、物流费用。', }, { icon: 'mdi:truck-outline', kind: 'change', text: '「运费管理」移除「新增日志」按钮及弹窗,物料运费日志改由采购订单到库确认等流程写入,日志视图只读。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「公关费用」恢复列表「分摊状态」列(已分摊/未分摊);已分摊行隐藏编辑、删除,未分摊可编辑删除;分摊/分摊明细按钮仍隐藏。', }, { icon: 'mdi:cart-outline', kind: 'fix', text: '「采购管理」成本汇总/采购日志费用列:`fees` 为单价时按数量×单价展示;采购订单列表票据从商品行 `goods[].bill_code` 汇总显示。', }, { icon: 'mdi:calculator-variant-outline', kind: 'change', text: '「计提管理」一级菜单及 `/accrual` 路由暂时注释下线(代码保留,侧栏不再展示);除首页外一级功能板块由 8 个调整为 7 个。', }, { icon: 'mdi:information-outline', kind: 'change', text: '应用版本 **0.8.029 → 0.7.029**:侧栏简写 v0.7,与当前 7 个一级功能板块对应;修位 `.029` 不变。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「采购管理 → 新增采购订单」对接后端字段调整:商品数量改 `purchase_count`;每行独立选 `bill_code`(左侧去掉订单级票据);选商品回填统筹 `payment_price` 为单价(不用 `web_price`);弹窗宽 1200px,列:物料 / 税率 / 数量 / 单价 / 小计(只读,= 数量×单价×(1+税率%));底部一行蓝色合计。', }, { icon: 'mdi:cart-outline', kind: 'fix', text: '「采购管理 → 新增采购订单」商品明细滚动:固定显示 5 行,第 6 行起在右侧列表内滚动(底部裁切对齐第 5 行底,不露出半条);合计占一行高度;去掉多余空白;修复 `append-to-body` 下 scoped 高度变量不生效导致弹窗随商品行撑高的问题(约束写在 `.whp-order-body`)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「WhGoodsQuickPickDlg」选商品 `pick` 事件新增回传 `payment_price`(额定付款单价)、`bill_code`,供采购订单等页面自动带入单价与票据。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「公关费用」列表暂时隐藏「分摊」「分摊明细」按钮及已分摊/未分摊状态展示,保留新增、编辑、删除;费用编码统一读 `pr_expense_code`;修复删除确认框点取消报错;编辑回填关联商品兼容 `goods` / `goods_codes` 两种返回结构。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「仓库管理」新增「运费分摊预估」页面(`FreightShareListed.vue`,路由 `/warehouse/freight-share`):筛选分摊开始/结束日期、物料编码、供应组织编码、RDC 仓库编码;展示月度运费分摊到单件的结果,供下月报价参考。', }, { icon: 'mdi:currency-usd', kind: 'add', text: '「仓库管理」新增「公关分摊预估」页面(`PrCostShareListed.vue`,路由 `/warehouse/pr-cost-share`):进页面自动跑批(`cost/listed` → 逐条 `cost/amortize` → `cost/share/listed`);筛选分摊开始/结束日期、物料编码、供应组织编码、票据编码;「重新跑批」可手动重跑;「查询」仅拉分摊结果。', }, { icon: 'mdi:currency-usd', kind: 'fix', text: '「公关分摊预估」修复跑批:`listed` 费用编码读 `pr_expense_code`(此前读 `expense_code` 导致 amortize 全部被跳过);`amortize` 补传 `start_time`/`end_time`;已分摊项不再重复调用;「该时间段内没有未分摊」等业务提示不再弹红色错误,有历史结果时直接加载展示。', }, { icon: 'mdi:currency-usd', kind: 'change', text: '「公关分摊预估」分摊结果表改为固定中文列:ID、供应组织、物料、票据、税率、采购数量、采购金额、分摊总额、单件分摊、占比、分摊时间;物料列从 `goods_name` 数组解析名称,修复 `[object Object]` 显示。', }, ], }, { date: '2026-07-01', items: [ { icon: 'mdi:cart-outline', kind: 'add', text: '「采购管理」新增「采购订单」Tab:对接 `purchase/order/listed`,支持按供应商集团(级联组织)、票据、日期范围筛选;表格展示订单编码、供应商集团/组织、票据·税率、采购日期、商品件数、总金额、确认状态;未确认订单可点击「确认」调用 `purchase/order/confirm`,确认后自动创建采购属性和日志。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「采购管理 → 新增采购订单」弹窗:两列布局(左侧基本信息,右侧商品明细固定高度独立滚动);物料选完后输入框直接显示「名称(编码)」;票据税率改为下拉选择(从已加载票据列表推导),不再手动填写;选供应组织后自动查对应统筹集合,「查」按钮仅在集团和组织均已选择后可用,商品只在该集合内搜索;选商品后自动回填统筹集合里的网价。', }, { icon: 'mdi:cart-outline', kind: 'change', text: '「采购管理」移除「新增日志」按钮及弹窗(后端已废弃 `purchase/logs/add` 接口,功能合并至采购订单);票据名称解析改为加载全量票据 Map,跨 type 的票据编码均可正确显示名称。', }, { icon: 'mdi:handshake-outline', kind: 'add', text: '「仓库管理」新增「公关费用」页面:对接 6 个接口(listed / add / modify / remove / amortize / share/listed);列表展示供应商集团/组织、金额、票据·税率、招待日期、关联商品件数、分摊状态;新增/编辑弹窗两列布局,票据仅展示 type=4 费用票据,税率由 bill_code 自动推导;关联商品需先选供应组织,通过统筹集合内搜索添加;已分摊可查看按(供应组织·商品·税率)维度的分摊明细。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「调货」「配货」「运费管理」「采购管理」顶部「共 X 条」改为固定占位宽度(`min-width: 56px`),数据加载前后不再撑动右侧票据 Tab 位置。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品 → 本集合商品」原「票据信息」列拆为「票据类型」(票种名)与「进项税率」(税率%),数据仍来自 listed 的 `bills`。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」「客户列表」组织新建/编辑与详情「销售类型」对接 `sale_type`(1 渠道 / 2 零售):`supplier/add|modify`、customer 同源提交,listed 回显工商信息卡片。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」组织新建/编辑「销售类型」对接 `company/add|modify` 字段 `sale_type`(1 渠道 / 2 零售);「社会信用代码」输入框收窄、标签单行展示。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品 → 本集合商品」「商品」与「业务类型」之间新增「稳定供货」列(行内开关);对接 `goods/update` / listed 字段 `is_stable`,变更后与其它配置一并保存。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」第二步「供货开票类型」:供货方组织支持收据时展示「收据供货」开关,开启后票据展示为「收据」;新建/编辑 `collection/add|modify` 提交 `is_support_receipt`;列表与录入页票据推导同步集合该字段,不再仅凭供货方能力自动开收据。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「统筹集合管理」完整供货开票类型推导规则:供货方=收据组织时一律收据;供货方=一般纳税人+我方=一般纳税人时默认专票、开收据供货则收据;供货方=小规模+我方=一般纳税人时新增「专票供货」开关(`is_support_special_invoice`),开关决定专票/普票/收据三态;其余组合普票或收据。「录入商品」票据类型列直接读集合推导结果,进项税率按票据类型+供应商类型从物料 `bills[]` 取对应税率(专票+一般→法定增值税率,专票+小规模→法定征收率,普票→0%,收据→/)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」「客户列表」组织新建/编辑:去掉增值税率及开启收据后的「0(收据)」告知行,保留「是否支持收据」开关;新增「销售类型」下拉(渠道/零售,默认渠道)。', }, { icon: 'mdi:storefront-outline', kind: 'change', text: '「供应商列表」「客户列表」组织详情「工商信息」:展示「组织类型」,去掉「增值税率」,新增「销售类型」。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '供应商、客户、组织管理、统筹集合、合作组织选择器等界面展示文案「纳税类型」统一改为「组织类型」。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建/编辑第一步:「旗下组织」选中后在右侧展示组织类型(一般纳税人/小规模等);「我方合作」组织类型改为纯文本展示,去掉只读输入框样式;上下两处组织类型与左侧组件间距对齐。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「常量管理 / 配置项管理」去掉顶栏分类 Tab 与子分类:分类平铺在左侧列表,点选后在右侧展示该分类配置项;新建/编辑分类不再区分一级/子级。', }, { icon: 'mdi:receipt-text-outline', kind: 'change', text: '「财务属性 → 各类型成本/费用额定增值税率」type=3 展示名改为「小规模纳税人:法定征收率」;业务类型卡片与物料财务属性同步 `displayLabel`(小规模纳税人-法定征收率),避免只改列头、卡片仍显示旧「征收率」。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」列表「优惠(率/额)」列及编辑区文案改为「好处费」。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」移除「出口视为内销」列及编辑/批量弹窗开关;修改保存不再提交 `sales_policy_type`(新增仍走接口默认值)。', }, { icon: 'mdi:notebook-outline', kind: 'fix', text: '「客户管理 → 客户价格本」左侧客户列表名称解析对齐客户列表:优先 `short_name`,与 `pickCustomerDisplayName` 一致,修复仅有简称时只显示编码的问题。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「常量管理 / 配置项管理」编辑弹窗新增「分类」下拉(一级/子分类路径展示),保存时提交目标 `classify_code`,可将常量移动到其他分类;目标分类下仍校验标签不可重复。', }, { icon: 'mdi:receipt-text-outline', kind: 'change', text: '调货/配货/运费/采购及「计提管理」费用票据 Tab 新增「全部」:默认选中,列表查询不传 `bill_code`(汇总仍仅在选中具体票据时传 `bill_tax`)。', }, ], }, { date: '2026-06-30', items: [ { icon: 'mdi:cart-outline', kind: 'add', text: '「仓库管理 → 采购管理」:`WhPurchase.vue` + `warehousePurchase.js`,路由 `/warehouse/purchase`;对接 `purchase/collect/listed`、`purchase/logs/listed`、`purchase/logs/add`;顶栏费用票据 Tab;「成本汇总 / 采购日志」切换;供应公司(组织 type=2)、公司(type=1)、RDC 仓筛选;明细可新增采购日志(物料查询 + 费用/数量)。', }, { icon: 'mdi:package-variant-closed-minus', kind: 'add', text: '「仓库管理 → 损耗管理」新增记录时「配货属性编码」改为下拉,选项来自 `POST /api/warehouse/alloc/attr/listed`;展示为 `alloc_attr_code(物料 · RDC · FDC)`,提交仍用编码。', }, { icon: 'mdi:package-variant-closed-minus', kind: 'add', text: '「仓库管理 → 损耗管理」:`WhWaste.vue` + `warehouseWaste.js`,路由 `/warehouse/waste`;对接 `waste/collect/listed`、`waste/logs/listed`、`waste/logs/add`;「总损耗汇总 / 损耗明细」切换,按 `alloc_attr_code` 筛选;明细视图可新增损耗记录(RDC/FDC 损耗数量 + 备注)。', }, { icon: 'mdi:truck-fast-outline', kind: 'add', text: '「仓库管理 → 运费管理」:`WhFreight.vue` + `warehouseFreight.js`,路由 `/warehouse/freight`;对接 `freight/attr/listed`、`freight/logs/listed`、`freight/logs/add`;RDC 仓 + 供应公司筛选与「物料运费汇总 / 物料运费日志」视图,交互对齐调货/配货。', }, { icon: 'mdi:truck-fast-outline', kind: 'fix', text: '「运费管理 → 新增日志」供应公司改为组织 `type=2` 供应商(`POST /api/company/listed` 传 `type:2`,非供货目录);筛选与新增弹窗均为可搜索下拉,提交 `supply_company_code` 为组织 `company_code`。', }, { icon: 'mdi:warehouse', kind: 'change', text: '调货/配货/运费三页列表:物料/仓库/票据改「名称(编码)」单行展示;备注过长省略号 + 悬停浮窗;汇总「数量-属性编码」、日志「费用-备注」列间距加大;空状态表格区内垂直居中;费用票据 Tab 样式对齐计提管理(选中蓝底加粗、税率橘色角标)。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '调货/配货/运费日志列表查询不再传 `bill_tax`(仅汇总传),避免切换票据 Tab 后日志被筛空;新增日志成功后回到第 1 页、清日期筛选并同步所选票据 Tab;列表物料名支持 `goods_category_list`。', }, { icon: 'mdi:swap-horizontal', kind: 'add', text: '「仓库管理 → 调货」:`WhTransfer.vue` 对接 `deploy/attr/listed`、`deploy/logs/listed`、`deploy/logs/add`;顶栏费用票据 Tab(`bill_code`/`bill_tax`);「物料调配汇总 / 物料调配日志」切换;筛选物料、出库仓、入库仓,日志另支持调配属性编码与开始/结束日期;日志视图可新增调配日志。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「仓库管理 → 配货」:`WhAlloc.vue` + `warehouseAlloc.js`,路由 `/warehouse/alloc`;对接 `alloc/attr/listed`、`alloc/logs/listed`、`alloc/logs/add`;RDC/FDC 仓筛选与「物料配货汇总 / 物料配货日志」视图,交互对齐调货页。', }, { icon: 'mdi:warehouse', kind: 'add', text: '调货/配货「新增日志」物料编码旁新增橘色「查询」按钮,共用 `WhGoodsQuickPickDlg`:调用 `POST /api/goods/search`(`searchMaterial`),输入名称或编码即自动搜索(防抖),点选结果回填 `goods_code` 并展示物料名称;仍支持手输编码。', }, ], }, { date: '2026-06-29', items: [ { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」编辑/新建/批量弹窗布局:第一行客户+是否启用、第二行物料+分类(编辑只读);出口视为内销/支持承兑/是否特价三开关一行右对齐;定价参数卡片内返利月数与议价率并排、超额绩效/超额利润/优惠率额成组展示。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」「销售策略类型」改为布尔「出口视为内销」(列表列与编辑开关,提交仍用 `sales_policy_type`:0 关 / 1 开);编辑弹窗「分类」只读展示 `goods_categorys_text`,不可再改 `category_code`;率/额字段(超额绩效、超额利润、优惠)同行编辑。', }, { icon: 'mdi:fence', kind: 'change', text: '「物料弹窗 → 成本围栏」按列表固定增加「供货目录」列(`supply_collections[].supply_collection_name`);按组织视图单供货目录时详情区显式标注「供货目录」,多目录时用 Tab 切换且下方信息条不再重复目录名。', }, { icon: 'mdi:fence', kind: 'add', text: '「物料弹窗 → 成本围栏」新增「按组织 / 按列表」视图切换:按组织保持左供应商右详情;按列表将组织 × 供货目录 × 仓库展平为表格,每行展示网价、付款单价、预估成本、返利后预估成本、预估运费、报价。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景 → 物料末级分类」未勾选的末端分类点击名称不再弹出「请先勾选关联…」提示,静默忽略;名称 hover/手型仅对已勾选末端生效,避免误点无效反馈。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理 → 关联物料」弹窗:左侧分类树仅展示场景 `scene/view` 关联分类,不再用 `in_scenes` 补全无关分类;右侧列表限定场景关联分类拉取,非关联分类不走裸 `getMaterialList`,修复场景外物料可勾选与左侧多出分类的问题。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '共用物料列表归一:一条接口记录只展示一行,默认取 `goods_categorys[0]` 作展示名与分类(`normalizeGoodsListRowOne` / `expandMulti: false`);接入录入商品场景池、返利商品范围、客户价格本场景/分类选料、RDC/FDC 已关联物料(`normalizeRdcGoodsRow`);不再按 `goods_code` 前端去重掩盖重复行。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '多分类物料名称右上角红色数字角标(`countGoodsCategoryNames` / `formatGoodsCategoryNamesTitle`):仓库关联物料、录入商品场景池、返利候选/已选、客户价格本场景添加、高级搜索浏览列表;悬停 tooltip 展示全部名称。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」表格去掉「修改人」「修改时间」列,多余列宽归「物料名称」。', }, { icon: 'mdi:percent-outline', kind: 'change', text: '「返利管理 → 新建/编辑规则 → 商品范围」候选与已选物料名称优先从 `goods_categorys` 取名(`pickGoodsDisplayName` / `pickGoodsNameFromViewPayload`),与一行一物料归一对齐。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理 → RDC/FDC 已关联物料」修复同一 `goods_code` 因 `goods_categorys` 展开出现重复行:列表归一后每物料仅一行。', }, { icon: 'mdi:map-marker-radius', kind: 'fix', text: '「基础数据 → 区域管理」地图修复切换/销毁时 `Cannot read properties of null (reading \'LngLat\')`:`await` 后校验渲染令牌与地图上下文,空坐标跳过 marker 创建。', }, { icon: 'mdi:notebook-outline', kind: 'add', text: '「客户管理 → 客户价格本」列表支持勾选与批量修改(`batch_modify`);增强 `price_code` 解析;单条编辑走 `modify`。', }, { icon: 'mdi:notebook-outline', kind: 'add', text: '「客户管理 → 客户价格本」场景/分类选料确定后对接 `/api/customer/price/add` 与 `batch_add`:1 条走新增,多条走批量新增,成功后刷新列表。', }, { icon: 'mdi:notebook-outline', kind: 'add', text: '「客户管理 → 客户价格本」顶栏新增「通过场景添加物料」「通过物料分类添加商品」:前者按客户集团场景初始化高级搜索,搜索后在弹窗右侧勾选物料;后者为左分类右物料双栏,支持批量/单条勾选。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」改为左客户列表、右价格本:进入先拉 `/api/customer/listed`,点选客户后按 `company_code` 查价格本;去掉顶栏客户下拉与「新增价格本」按钮(操作按钮待补)。', }, { icon: 'mdi:percent-outline', kind: 'change', text: '「计提管理」顶栏横向罗列费用票据(`/api/bill/listed` type=4),选中后按 `bill_code` + `bill_tax` 查 `/api/rate/listed`;去掉手动筛选栏与表格「票据」列。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「配置项管理」编辑弹窗不再展示 Key;卡片主标题仅显示标签(label),不再副行展示 key。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「配置项管理」`/config/set` 类型提交:文本 `string`、数字 `number`;`is_readonly` 仅在全局常量缓存层读取,配置管理与多维表写回暂不提交。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「配置项管理」对齐 `/config/set`:不传 `key` 新增(自动生成 key)、传 `key` 更新;表单改「标签」`label`(新增必填);不再提交 `config_code`;删除传 `classify_code` + `key`;多维表写回同步。', }, { icon: 'mdi:clipboard-list-outline', kind: 'fix', text: '「录入商品 → 额外费用」按接口真实字段对齐:`log` 用 `add_amount`/`ctime`/`cname`/`cuser`/`after_amount`;`extra_fees`/`listed` 兼容 `bill_tax` 作 key;保存后合并 `after_amount` 刷新左侧累计。', }, { icon: 'mdi:clipboard-list-outline', kind: 'fix', text: '「录入商品 → 额外费用」弹窗:左侧改为票种/累计/追加三列表格紧凑排版并去掉左侧滚动;仅右侧日志区滚动;字号随 `--wh-fs-delta` 在 1920/2560/3840 下递增。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「录入商品 → 额外费用」弹窗加宽为左 7 右 3:左侧「当前累计」只读 +「本次追加」可填 + 备注,保存走 `POST /api/supply/collection/goods/extra_fees/add`(按 `bill_tax` 累加);右侧追加日志区打开即拉 `extra_fees/log` 分页滚动展示。', }, ], }, { date: '2026-06-28', items: [ { icon: 'mdi:fence', kind: 'change', text: '「物料弹窗 → 成本围栏」只读区样式:我方/供应商纳税类型统一彩色标签(一般蓝、小规模橙、个人/收据绿);价格四格与仓库表增加浅色区分。', }, { icon: 'mdi:fence', kind: 'fix', text: '「物料弹窗 → 成本围栏」修复内容过少仍出现滚动条:右侧详情区去掉内层 `overflow-y` 与撑满高度;分类内容区 `min-height:100%` 仅在「基础属性」生效,避免成本围栏下方空白拉高滚动。', }, { icon: 'mdi:fence', kind: 'add', text: '「物料弹窗 → 成本围栏」接入 `POST /api/goods/cost` 只读区:左供应商列表、右统筹集合 Tab + 价格四格 + 仓库表。', }, { icon: 'mdi:handshake-outline', kind: 'change', text: '「返利管理」移除规则「承接人」:新建/编辑弹窗、列表卡片、承接页摘要与完整参数不再展示;保存规则与承接任务不再提交 `assignee_name` / `assignee_code`。', }, { icon: 'mdi:handshake-outline', kind: 'fix', text: '「返利管理 → 新建/编辑规则」我方参与组织为空:组织管理扁平化后组织挂在纳税类型(顶级 classify)下,参与范围加载改为顶级 bloc + 历史小类合并拉取 `company/listed`,与组织选择器一致。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「物料弹窗 → 仓库管理」打开后默认无法编辑:仓库面板改为全局单实例(`v-if` 切入时再挂载,移出分类循环);初始 RDC/票据选中时同步 `ensureBillBucket`,票据 code 统一字符串,避免首屏输入无效。', }, { icon: 'mdi:bug-outline', kind: 'fix', text: '「物料列表」编辑弹窗打开时控制台警告 `mfAsmFocusedId is not defined`:选配内联展开状态改由 `mlTabPaneCtx` 注入,`MaterialFormTabPaneBody` 通过 `ml.mfAsmFocusedId` 读取。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「全局页签管理」卡片统计:财务管理、成本围栏不再展示「X 分组」,仅保留字段数;仓库管理仍为「固定 RDC 结构」文案。', }, { icon: 'mdi:tooltip-text-outline', kind: 'fix', text: '「财务管理 / 业务类型卡片 → 关联票据」悬停浮窗定位修正:tooltip 触发区改为随文字宽度,不再占满整行,避免浮窗箭头偏到右侧空白处。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「全局页签 / 物料弹窗 → 仓库管理」费用票据 Tab 改为名称 + 税率标签并排展示(选中时税率标签高亮),与财务属性列表风格一致。', }, { icon: 'mdi:finance', kind: 'change', text: '「财务属性 → 费用票据类型(type 4)」新增/编辑增加「名称」字段(必填),列表展示名称;`/api/bill/add|modify` 提交 `name`;type 1–3 仍无名称。仓库管理费用票据 Tab 同步显示名称。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「全局页签 / 物料弹窗 → 仓库管理」布局调整:左侧 RDC 仓库列表点选切换;原 RDC 下拉位改为费用票据(type 4)横向 Tab,不再展示票据类型 1–4 下拉;下方仍按 RDC × 票据填写提成/利润。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「物料列表」新增/编辑物料弹窗:顶部分类 Tab(袋装/桶装等 + 添加分类)仅在左侧「基础属性」导航时显示;切到财务管理、仓库管理、成本围栏等页签时隐藏。', }, ], }, { date: '2026-06-27', items: [ { icon: 'mdi:broom', kind: 'change', text: '清理开发调试输出:移除物料列表、路由守卫、WebSocket 心跳、登录/上传等处的 `console.log` / `console.group`,控制台不再刷接口 dump。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表 / 仓库管理」物料名旁「?」关联资料弹窗(`WhGoodsRelatedPopover`):限制弹窗高度并在内容区内部滚动,避免长列表(RDC/FDC/计提费率)撑出整页滚动条;弹窗最高约 72vh。', }, { icon: 'mdi:calculator-variant-outline', kind: 'fix', text: '「计提管理」四子页对接 `/api/rate/listed` 与 `/api/rate/apply/*`:列表解析兼容 `data`/`list` 直出数组;字段回退 `rate_code`、`rdc_warehouse_code` 等新名;申请记录支持扁平/批次结构;待审批批次可「同意/拒绝」;新增 `api/accrualRate.js`。', }, { icon: 'mdi:store-outline', kind: 'change', text: '「客户管理 → 客户列表」接口由 `/api/dealer/*` 迁移至 `/api/customer/*`(listed / bloc/* / add|modify|remove / set_partners / bloc/scene/* / set_business_types);`SupplierList` / 表单弹窗 `entity="customer"`;新增 `api/customer.js`,`dealer.js` 仅作兼容转发。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理 → 可调配仓列表」展示对齐新接口:读 `to_warehouse_name`/`to_warehouse_code` 与 `label`,不再仅认空的 `deploy_warehouse_name` 导致显示「—」;新增 `formatRdcDeployRowLabel`。', }, { icon: 'mdi:notebook-outline', kind: 'add', text: '「客户管理 → 客户价格本」对接 `/api/customer/price/*`(listed / add / modify / remove);列表采用与「计提管理 → 预估运费」相同的 flex 均分列布局,支持按客户筛选、分页与定价参数编辑。', }, { icon: 'mdi:notebook-outline', kind: 'fix', text: '「客户管理 → 客户价格本」表头列名颜色统一为灰色;数字列深色样式仅作用于数据行,不再误套表头。', }, { icon: 'mdi:notebook-outline', kind: 'change', text: '「客户管理 → 客户价格本」新建/编辑弹窗移除「排序」字段,保存不再提交 `pos`。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「常量管理 / 配置项管理」对接 `config_code` 主键:新增/修改统一走 `/api/config/set`(编辑传 `config_code`,Key 可改但同分类不可重复);删除走 `/api/config/remove`;多维表写回同样 `/config/set` 有 code 时一并提交。', }, { icon: 'mdi:database-cog-outline', kind: 'change', text: '「基础数据」侧栏子菜单小「?」说明:编辑保存对接 `/api/tips/*`(`tips_key` 为 `Base:路由名`,如 `Base:BaseDict`);进入基础数据时 `listed` 拉取,有记录走 `modify`、无记录走 `add`;不再使用浏览器 localStorage。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」新增/编辑物料:仓库管理按所选 RDC × 票据类型(1–4)× 票据填写提成/利润(内部/零售/渠道 · 率与额);保存时写入顶层 `warehouse`(`/api/goods/add|modify`),不同 RDC 与不同 `bill_code` 分桶存储,再次打开可回显;全空 RDC×票据组合保存时剔除。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「全局页签 → 仓库管理」顶栏:RDC 改为下拉选择;右侧联动下拉「票据类型(type 1–4)」+「票据」(`/api/bill/listed`);下方提成/利润区按当前 RDC×票据填写率与额,根级 `warehouse` 按 `RDC → bill_code → 指标` 存储(兼容历史 RDC 直挂结构)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '仓库管理固定结构:「提成」「利润」不再 Tab 切换,按相同卡片样式上下平铺展示(内部 / 零售 / 渠道 · 率与额)。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「物料分类」公共页签区(原布局不变):仓库管理展示固定 RDC 结构(`GlobalTabWarehousePanel`)及补充字段;成本围栏等页签字段平铺展示;三槽标题统一为财务管理 / 仓库管理 / 成本围栏。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '全局页签第三槽 `cost` 中文名由「价格围栏」更正为「成本围栏」(物料列表左侧导航、空状态提示等);接口 code 仍为 `cost`。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「全局页签管理」搭建画布去掉组/子组:不再显示「基本信息」「基础字段」「新建分组/子组」及组拖拽排序;字段直接平铺拖入;打开/保存时自动合并历史多组数据为隐式单组存储;分类页签(页签管理)不受影响。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '公共页签运行时不再展示「组/子组」标题:物料列表财务/围栏等全局页签字段平铺显示;分类「公共页签」默认值编辑(`GlobalTabCategoryPane`)与预览模式字段平铺展示。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」新增/修改弹窗:弹窗顶部展示「物料编码:」+ 编码;分类 tag 切换移至右侧顶部;左侧导航 + 右侧内容区布局(见 6/26 条目补充调整)。', }, { icon: 'mdi:finance', kind: 'change', text: '物料根级 `finance` 业务类型落库键改为小写 `biz_type`(保存/上传);读取仍兼容历史 `BIZ_TYPE`、`BUSINESS`。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 可调配仓(deploy)五接口字段对齐后端:`source_warehouse_rdc_code(s)` / `deploy_warehouse_rdc_code` → `form_warehouse_code(s)` / `to_warehouse_code`;link/unlink 路径改为 `/api/warehouse/rdc/deploy/link|unlink`;响应解析优先新字段并兼容旧名。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 可调配仓写入对齐按物料接口:`deploy/set` 改为 `{ list[{ warehouse_code, category_code, goods_code }], to_list[{ to_warehouse_code }] }`;单条移除与批量关联均按物料分别 set;link/unlink 请求体补齐 category_code + goods_code。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联 RDC:`find_rdc` 改为 `{ warehouse_code, list: [{ category_code, goods_code }] }`;`set_rdc` 改为 `{ warehouse_code, rdc_warehouse_code, list }`;配对与保存均按分类+物料编码,不再依赖 `warehouse_fdc_code`。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC 列表「关联仓库」:`fdc/goods` 返回 `rdc_warehouse_code` 时仍显示「暂未关联」——统一经 `pickFdcLinkedRdcWarehouseCode/Name` 兼容 `warehouse_rdc_code` 与 `rdc_warehouse_code`;暂仅有编码无中文仓名时展示编码。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC 物料行字段兼容:`rdc/goods` 无行内 `warehouse_rdc_code` 时,`pickRdcCodeFromGoodsRow` 回退行 `warehouse_code` / 当前仓;修复批量设置售卖区域灰显、管理精度 `set_lot_type`、移出与可调配仓来源编码取不到的问题。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC 实体编码:`fdc_warehouse_code` 与 `warehouse_fdc_code` 双读(`pickFdcCode` / `pickFdcGoodsLotTypeCode`);FDC 移出、管理精度保存同步兼容。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」物料关联资料(`goods/view`、`goods/related`):`rdcs`/`fdcs` 解析与 `WhGoodsRelatedPopover` 展示对齐;FDC 行关联 RDC 读取 `rdc_warehouse_code`。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」`RfSceneLockPanel` FDC 路径对齐:`fdc/goods` 仅传 `warehouse_code`;`batch_link` / `batch_unlink` / `set_rdc` 改为 `{ warehouse_code, list }` 与 `{ warehouse_code, rdc_warehouse_code, list }`,不再依赖 `warehouse_fdc_code`。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC/FDC 管理精度 `set_lot_type` 对齐新接口:由 `warehouse_rdc_code`/`warehouse_fdc_code` 改为 `{ warehouse_code, category_code, goods_code, lot_type }` 定位物料并更新批次类型。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 可售卖区域对齐按物料接口:`region` 查询与 `region/set` 改为 `{ warehouse_code, category_code, goods_code }`;单独= list 一条物料,批量= list 多条物料 + region_codes。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 移出物料 `batch_unlink` 对齐新接口:由 `{ warehouse_rdc_codes, list? }` 改为 `{ list: [{ warehouse_code, goods_code }] }`;RDC 列表移出、场景取消关联、场景弹窗解除关联同步更新。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 移出/关联 `batch_unlink` / `batch_link` 对齐新接口:unlink 改为 `{ list: [{ warehouse_code, category_code, goods_code }] }`;link 仅 `{ warehouse_code, list[{ category_code, goods_code }] }`;FDC 列表移出、场景取消关联同步更新。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC/FDC 物料列表「管理精度」下拉灰显:`hasCode` 依赖行内 `warehouse_rdc_code`/`warehouse_fdc_code`,`rdc|fdc/goods` 现多仅返 `warehouse_code`;`pickRdc|FdcGoodsLotTypeCode` 与保存逻辑回退当前所属仓,下拉恢复可选。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」物料仓库页签 RDC 下拉:仅物料编辑从 `/api/goods/view` 的 `rdcs` 注入;公共页签/物料分类只读且无 mock;`rdcs` 去重由后端负责,前端不再 dedupe。', }, ], }, { date: '2026-06-26', items: [ { icon: 'mdi:finance', kind: 'add', text: '「财务属性」入口新增卡片「费用票据类型」:独立单列列表(`type=4`),统计/搜索/增删改走 `/api/bill/*`;新增/编辑弹窗与「各类型成本/费用额定增值税率」一致(税率(%)、启用/停用、描述),列表展示状态与税率标签,描述悬停「?」查看全文。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」新增/修改弹窗布局:顶部分类 tag 与物料名称固定;下方改为左侧主导航(财务管理、仓库管理、成本围栏、其它公共页签、基础属性)+ 右侧内容区;弹窗整体不出现滚动条,右侧内容超出时在内容区内滚动,左侧导航项多时在左侧内部滚动;「基础属性」内分类页签与选配/适配等结构不变。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「全局页签管理」移除拉取公共页签列表时的控制台调试输出(`[公共页签列表]`、`console.table`)。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「全局页签管理」系统固定内容不可删除:分类「全局页签」及三槽页签 `finance`(财务管理)、`warehouse`(仓库管理)、`cost`(成本围栏);列表隐藏删除按钮,操作拦截并提示;兼容接口大写 `FINANCE`/`WAREHOUSE` 等历史 code。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「全局页签管理 → 仓库管理」新增系统固定内容:RDC → 提成/利润 → 内部·零售·渠道 → 率/额(`GlobalTabWarehousePanel`),编辑页上方只读展示固定区,不再仅靠拖拽搭建;页签 `fields` 存 schema,仍可从左侧拖入补充字段。物料列表「仓库管理」同步该固定表单填写,值落根级 `warehouse`;RDC 暂 mock(后续接 `fetchWarehouseRdcListForGoods`)。', }, { icon: 'mdi:finance', kind: 'change', text: '「财务属性 / 物料弹窗 / 物料分类」业务类型(BIZ):左栏大类、二类纵向一列,右侧展示关联票据卡片;该字段在页签 grid 中默认占 2 列。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」点选场景:`selectScene` 预拉主场景 `scene/view` 后传入 `loadSceneWorkspace`,同参数重复请求合并为 1 次。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景 → 物料末级分类」树去掉 60 秒本地缓存;每次进场景及 keep-alive 切回时实时请求 `POST /api/category/listed`,物料分类新增末端后无需 F5 即可出现在勾选树中。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景 → 物料末级分类」关联有改动时:「确定」移至标题下方独立一行(先于橙色提示),窄列宽下按钮不再被挤没;提示文案改为「关联有改动,请保存」。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理 → 批量关联可调配仓」:`deploy/set` 为覆盖写,批量流程改为并行拉各来源已有 deploy、合并后仅调用一次 `warehouseRdcDeploySet`(`buildBatchRdcDeploySetBody`),不再循环 deploy + set。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」公共页签与分类自有页签边界:列表/表单仅展示分类页签,公共页签由全局页签管理维护;右侧属性区 `.panel-attr-scroll` 整体滚动,分类名称与底栏固定。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '共用「物料搜索」弹窗 `SceneGoodsAdvancedSearchDlg` / `buildAdvancedSearchQueryPlan`:去掉「必须勾选筛查条件」限制;不勾选首选项/特征也可「开始搜索」,结果为当前 Tab 场景下全部物料。接入页:录入商品(场景池与本集合内查找)、代理授权包、仓库关联物料、返利商品范围。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合管理」列表/详情/录入摘要「我方」:`pickCollectionPartnerLabel` 优先读 `receive_company_name`(及 `receive_company` 嵌套),不再误用行上 `company_name`。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」第三步「财务成本损益」延迟返利月数对接新字段:`rebate_delay_base_months`(延迟基础返利)、`rebate_delay_target_months`(延迟目标返利);`collection/listed` 回填与 `collection/add|modify` 提交同步,兼容旧 `rebate_delay_months` / `target_rebate_delay_months` 读取。', }, ], }, { date: '2026-06-25', items: [ { icon: 'mdi:notebook-outline', kind: 'add', text: '「客户管理 → 客户价格本」新增子菜单与空白占位页(`/dealer/price-book`),后续再补业务内容。', }, { icon: 'mdi:store-outline', kind: 'change', text: '「客户管理」(原「销售商」)一级菜单与子菜单「客户列表」(原「销售商列表」)更名;列表页左侧树标题及空态/删除等文案「经销商」统一改为「客户」;路由与 `/api/dealer/*` 不变。', }, ], }, { date: '2026-06-24', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「页签管理」「全局页签管理」「TabBuilder」「物料分类」公式字段:右侧属性新增「小数位数」(0–6,默认 2);新建公式字段默认 2 位;计算结果按位数舍入后用于预览与物料 `fields` 落库(公共页签与分类页签同一套逻辑)。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」建改保存:`mergeFormulaFieldValuesIntoTabPayload` 将 `catValueMaps` 中已舍入的公式值写入各分类 `fields`(含公共页签字段);开发环境保存时在控制台输出公式合并明细(`console.table`);生产环境可设 `localStorage.DEBUG_FORMULA_SAVE=1` 临时开启。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」公式保存:依赖变化导致公式算不出(界面为 —)时,保存会清除 `fields` 中该公式字段的历史残留值,避免与界面不一致。', }, { icon: 'mdi:information-outline', kind: 'change', text: '「更新说明」弹窗改为左右分栏:左侧「客户端」展示 `appChangelog.js`;右侧「服务端」打开时请求 `POST /version/log` 并以 Markdown 渲染;底部同时展示客户端与服务端版本信息。', }, { icon: 'mdi:database-cog-outline', kind: 'add', text: '「基础数据」侧栏子菜单(字典/区域/组织/部门/用户/财务属性/业务类型):菜单名后常驻小「?」(灰底白字,间距与字号随侧栏 `--wh-fs-delta` 响应式缩放);悬停黑色说明浮窗;有该模块 `is_modify` 权限可编辑并保存(见 6/27 条目对接 `/api/tips/*`)。', }, ], }, { date: '2026-06-23', items: [ { icon: 'mdi:finance', kind: 'change', text: '「财务属性 → 各类型成本/费用额定增值税率」新增/编辑:去掉类型三选一与「票据名称」表单项;点列头「新增」固定该列类型,编辑不可改类型;`/api/bill/add|modify` 不再提交 `name`;列表仅展示启用状态与税率标签。', }, { icon: 'mdi:finance', kind: 'change', text: '「财务属性 → 各类型成本/费用额定增值税率」顶栏统计「票据总数」改为「总数」;列表填写描述后显示「?」悬停查看全文;搜索仅匹配描述。', }, { icon: 'mdi:tag-text-outline', kind: 'change', text: '「基础数据 → 业务类型」设置票据:三列改为方框勾选、每列仅能选一项;列内有票种时必选,未选点确定提示;选项与卡片只展示税率(如 9%),不再展示票据名称。', }, { icon: 'mdi:tag-text-outline', kind: 'change', text: '「业务类型」二类卡片「关联票据」三行名称补全为「一般纳税人-法定增值税率 / 一般纳税人-出口退税率 / 小规模纳税人-征收率」,已配置行显示「全称:税率%」;文案可换行避免截断。', }, { icon: 'mdi:tag-text-outline', kind: 'change', text: '「基础数据 → 业务类型」大类区段标题与二类卡片:描述不再单独占行;有描述时在名称旁显示「?」,悬停 popover 查看全文,卡片更紧凑。', }, ], }, { date: '2026-06-22', items: [ { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」纳税类型新建/编辑:去掉组织性质、销项增值税率及可收/可开票据三列;「税务属性」改为「额定税率」(附加/所得/印花三项可填),随 `classify/add|modify` 提交 `fields`。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」组织新建/编辑:所属纳税类型只读展示;去掉关联票据三列及新建时批量 `link_bill`;额定税率三项可编辑(新建默认继承当前纳税类型);保存 `company/add|modify` 顶层提交 `surcharge_rate`、`income_tax_rate`、`stamp_duty_rate`(不传 `field`/`fields`)。', }, { icon: 'mdi:sitemap-outline', kind: 'fix', text: '「组织管理」组织保存不再误传 `parent_code`(纳税类型 classify_code 非上级组织),修复修改组织报「上级组织不存在」。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」组织卡片:去掉「关联票据」徽章;改为展示附加/所得/印花税率全称,换行与附加左对齐;「删除」改右下角悬浮,收紧税率区与底部留白。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」「销售商列表」合作组织查看弹窗(`CompanyOrgViewDlg`):去掉底部三列「关联票据」及 `bill/listed` 补全逻辑;改为只读展示纳税类型与额定税率(附加/所得/印花);弹窗宽 900px→680px,与组织管理编辑区一致。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」编辑弹窗布局拆分:全局公共页签(如财务属性)在上方独立纵向堆叠展示,不再与分类 Tab 混排;下方「页签属性」区 Tab 条仅切换继承/引入/自建/选配等分类页签;桌面右侧面板与移动弹窗结构一致;`activeTabCode` 默认落在首个分类页签。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」建改弹窗同步拆分:公共页签独立区块 + 下方「页签属性」`el-tabs` 仅绑分类页签;页签字段渲染抽至 `MaterialFormTabPaneBody.vue` 复用;默认值/保存仍走全量 tab 列表(含 global),导入或自建页签后展示与逻辑不变。', }, ], }, { date: '2026-06-21', items: [ { icon: 'mdi:clipboard-list-outline', kind: 'add', text: '「录入商品」本集合商品表在「预估成本」与「操作」之间新增「额外费用」列(「查看」按钮);弹窗内 7 项单位商品成本可填数字(13%/9%/6%/5%/3% 专票、普票、无票),保存走 `goods/update` 的 `extra_fees` 对象(`extra_cost_vat_*` / `extra_cost_general` / `extra_cost_no_invoice`);listed 回显同步;商品列略减宽给额外费用列。', }, { icon: 'mdi:clipboard-list-outline', kind: 'add', text: '「录入商品」本集合商品表在「商品」与「直达RDC」之间新增「业务类型」「票据信息」只读列;直接展示 listed 的 `business_type_name` 与 `bills`(票种名 + 税率),单行省略、悬停 tooltip 看全文。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「全局页签管理」业务类型字段:拖入后中文标签固定为「业务类型」(右侧属性灰色不可改);每个全局页签仅允许一个业务类型字段(已有则左侧控件置灰不可再拖,保存时校验)。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '业务类型落库改为仅存二类 `business_type_code` 引用:物料 `fields`、分类 `_globalTabSnapshots` 保存前序列化为 code 字符串;编辑态仍展示大类/二类/票据卡片;读取兼容历史整对象或 JSON 字符串。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」全局页签业务类型:修复选大类/二类后下拉无效(编辑态保留 UI 对象,提交再收 code);全局页签脏比对签名与布尔字段分列渲染,避免未改误报未保存。', }, { icon: 'mdi:storefront-outline', kind: 'add', text: '「销售商列表」合作组织对接 `POST /api/dealer/set_partners`(`company_code` + `partners_company_codes`);启用 `DEALER_PARTNERS_API_READY` 后添加/移除合作组织与供应商 `set_partners` 同交互,不再显示「接口待后端提供」占位提示。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '全局页签运行时注入「物料分类」「物料列表」:有效全局页签自动前置合并进页签列表(`globalTabRuntime` / `getGlobalTabRuntimeListCached`),与模板/自建页签独立;子类不可屏蔽 global 页签。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「全局页签管理」搭建层支持「业务类型」字段(仅 `scope=global`):大类/二类选择 + 票据卡片预览;运行时物料/分类 `fields` 仅存二类 `business_type_code` 引用;预览/展示遵循页签列宽 grid。', }, { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」全局页签默认值:分类 `fields._globalTabSnapshots` 按页签 code 存本节点覆盖;沿父链继承,子类可设覆盖值,物料新建/编辑从路径合并后作默认、物料 fields 可再改;分类编辑区业务类型可下拉设置并保存。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」全局页签展示:业务类型等字段与普通页签同 `imported-group-fields` 列 grid(不再占满整行);修复全局页签激活时下方误显「暂无属性」空态(自建页签 `v-else-if` 与 global 互斥)。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」全局页签「业务类型」下拉无效:选大类中间态不再被当作空值清掉;`globalTabSnapshots` 整对象替换保证响应式刷新。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」编辑弹窗渲染全局页签字段(含 `TabFieldBusinessTypePicker`);`mlPrepareTabValues` 归一 `business_type`;`_getEffectiveFieldDefaults` 合并分类路径上 `_globalTabSnapshots` 作为物料默认值。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」供货开票推导:合作方优先 `classify_code` 查组织分类 bloc 得三大纳税类型(`resolveOrgMajorTaxTypeLabel`),再调 `deriveSupplyBillByOrgTypes`;`fetchCompanyClassifyByCode` 先查纳税类型 bloc 再 fallback 小类;列表/摘要 `resolveOrgMajorTaxTypeForRow` 补全。', }, { icon: 'mdi:tag-text-outline', kind: 'change', text: '「基础数据 → 业务类型」设置票据弹窗改为三列勾选(一般纳税人 / 出口退税率 / 小规模纳税人),票种动态拉取 `/api/bill/listed`(财务属性各类型成本/费用额定增值税率);提交仍走 `/business_type/set_bills` 的 `bill_codes`,接口字段不变。', }, { icon: 'mdi:tag-text-outline', kind: 'change', text: '「业务类型」卡片「关联票据」固定三行展示:已设置类型彩色名称 + 右侧票据图标,悬停名称或图标显示票种明细(含简易计税标注);未设置类型灰色占位且不弹浮窗;卡片 flex 贴底,同组编辑/删除按钮对齐。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」第三步「延迟目标返利月数」对接接口字段 `target_rebate_delay_months`(新建/编辑 `collection/add|modify` 提交);「延迟基础返利月数」仍走 `rebate_delay_months` / `delayed_rebate_months`。', }, { icon: 'mdi:sitemap-outline', kind: 'fix', text: '「组织管理」关联票据三列「添加」:`billPickerType` / `classifyBillPickerType` 改为 `ref`,切换一般/出口/小规模时弹窗标题与票种列表即时更新;三处「添加」均打开同一按类型过滤的票据选择弹窗。', }, { icon: 'mdi:clipboard-list-outline', kind: 'add', text: '「录入商品」右侧「本集合商品」新增「本集合内查找」:独立 `SceneGoodsAdvancedSearchDlg`(`browse-kind="collection"`),对接 `POST /api/supply/collection/in_scenes` 与 `fetchCollectionInScenesCodes`;「开始搜索」在弹窗右侧分页预览,「确定」将命中编码应用到主界面右侧列表,「取消」直接关闭;本集合模式隐藏快捷搜索预设与新增/保存。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「录入商品」场景物料「高级搜索」与「本集合内查找」拆为两个弹窗;中间场景物料池无关键词/无筛查时仍走 `goods/in_scenes`(切换场景列表联动),有筛查或关键词走 `collection/goods/search`。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '共用 `POST /api/goods/in_scenes`:`scene_values` 统一为 JSONObject,无筛查时不传空 `[]`;修复打开物料池报「不能为空」、高级搜索勾选条件后 `JSONArray cannot cast to JSONObject`(返利商品范围、代理授权包、仓库关联物料、场景物料选择器等);`material.js` 经 `normalizeGoodsInScenesScenes` 入口统一规范化。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '共用高级搜索「开始搜索」:新增 `buildAdvancedSearchQueryPlan`(`sceneGoodsAdvancedSearchSync.js`),「返利管理」商品范围、「代理授权包」、「仓库管理」关联物料、「录入商品」场景池/本集合内查找统一校验锁定与 scenes 组装;`collection/goods/search`、`collection/in_scenes` 经 `normalizeCollectionSearchScenes` 同步规范化 `scene_values`(object,空值省略)。', }, ], }, { date: '2026-06-20', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '物料管理新增「全局页签管理」(`/material/global-tab-manage`,`powerKey: global_tab`):与「页签管理」并列,独立分类树与页签列表;搭建/预览/保存逻辑复用 `TabManage`(`scope="global"`),接口走 `/api/global_tab/*`(`classify/listed|add|modify|remove`、`listed|add|modify|remove`);新建页签提交固定 `type: 1`;「从其他页签复制」仅拉全局分类下页签。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '新增 `api/tabManageApi.js`:`templateTabManageApi`(`/api/tab`)与 `globalTabManageApi`(`/api/global_tab`)共用 CRUD 封装;原「页签管理」改为经 adapter 调用,行为与接口字段不变(模板页签不传 `type`)。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「录入商品」集合商品表列名「保底返利」改为「基础返利」(表头、展开区、编辑提示及复制字段矩阵标签);接口 `rebate_*` 字段与计算逻辑不变。', }, { icon: 'mdi:store-outline', kind: 'add', text: '左侧一级菜单新增「销售商」(与「供货目录」同级,位于其下):子菜单「销售商列表」`/dealer/list`;界面复用 `SupplierList`(`entity="dealer"`),对接 `/api/dealer/*`(`listed`、`bloc/*`、组织 `add|modify|remove`、`bloc/scene/*`);新建组织固定 `company_type: 3`。', }, { icon: 'mdi:storefront-outline', kind: 'add', text: '新增 `api/dealer.js`、`views/dealer/DealerList.vue`;`SupplySupplierFormDlg` 支持 `entity="dealer"` 切换集团/组织保存接口;销售商组织无「代理授权包」列。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '共用「物料搜索」弹窗 `SceneGoodsAdvancedSearchDlg`:去掉末级分类 Tab 与左栏分类切换;特征区改为合并场景关联分类 bundle 后按字段 code 去重展示(`listNonPreferredFeatureSearchRows`),与首选项共用 `repeat(auto-fill, minmax(210px, 1fr))` 多列网格并自动换行;修复内容区横向滚动条溢出。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料搜索」全部场景堆叠 `SceneGoodsAllScenesFilterStack`:`isMultiLockField` 改从 `rfScenePreferred` 引入(原误从 `rfSceneGoodsFilter` 导入导致运行时报错)。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料搜索」弹窗新增 `type=1` 浏览模式:左侧筛查、右侧「场景物料」列表(分页、勾选、单条/批量添加);「录入商品」`SupplyCollectionGoodsDlg` 接入该模式,弹窗内预览场景与外面物料池筛选解耦。', }, { icon: 'mdi:shield-key-outline', kind: 'fix', text: '「代理授权包」`SupplyAuthPackageDlg`:右侧授权组织名称优先读 `displayName` / `pickPartnerOrgDisplayName`,不再误用 `p.name` 展示 company_code;编辑态包内已保存但不在当前合作列表的组织仍可显示;「供应商列表」`linkedPartnerDisplayList` 同步补 `name: displayName` 供弹窗透传。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建向导「我方合作」:原「组织分类」下拉改为只读「纳税类型」,选合作公司后自动带出(一般纳税人 / 小规模 / 收据);列表详情「我方组织分类」改为「合作方纳税类型」。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合管理」合作公司纳税类型未自动带出:选中后强制 `fetchCompanyListedByCode`,无结果时 `fetchCompanyInfo` 按分类 broad fallback 补全 `classify_code` / `classify_name` 并写入 `partnerMetaMap`;`enrichLinkedPartners` 批量补全后仍缺分类时逐条兜底查询;展示改用 `resolveSupplyPartnerOrgTypeLabel` 与第二步开票推导一致。', }, { icon: 'mdi:calculator-variant-outline', kind: 'change', text: '「计提管理 → 预估运费」列表仓库列表头由「仓库管理」改为「到货RDC」(`AccrualList.vue`,`type === freight`)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建向导第三步「财务成本损益」:「账期(天)」改为「帐期月数」;原「延迟返利月数」拆为「延迟基础返利月数」+ 新增「延迟目标返利月数」;列表卡片与详情区同步展示;接口仍提交 `payment_days`、`rebate_delay_months` / `delayed_rebate_months`,仅新增 `target_rebate_delay_months`(需后端落库)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」第三步「承兑付款」由下拉改为开关(开=支持 / 关=不支持),右侧固定宽文字展示状态;逻辑与 `is_support_acceptance` 提交不变。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合管理」第三步财务四字段改为四列 CSS Grid 固定布局,开关与输入框控件区统一 132px 宽,切换承兑开关时不再挤压「延迟基础/目标返利月数」列位置。', }, ], }, { date: '2026-06-19', items: [ { icon: 'mdi:finance', kind: 'change', text: '「财务属性 → 各类型成本/费用额定增值税率」票据分类由进项/销项两类改为三类:`type=1` 一般纳税人法定增值税率、`type=2` 一般纳税人法定出口退税率、`type=3` 小规模纳税人征收率;顶栏统计改为总数加三类条数,移除平均税率;列表由左右双列改为三列并列;新增/编辑弹窗类型单选同步为三选一,提交 `/api/bill/add|modify` 时 `type` 取 1/2/3。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」扁平化重构:左侧纳税类型、右侧选中类型下组织卡片网格(参考供货目录旗下组织卡片);去掉中间组织分类层,组织仍直接 `link_bill` / `unlink_bill` 维护关联票据。关联票据按 `type` 1/2/3 三列展示;卡片展示组织全称(单行省略+悬停)、关联票据以彩色图标徽章+数量汇总,悬停浮窗看明细;点击卡片进入编辑。', }, { icon: 'mdi:sitemap-outline', kind: 'fix', text: '「组织管理」组织已关联票据分列:以 `/api/bill/listed` 建立 `bill_code→type` 索引回填类型,避免关联行 `type` 缺失或错误导致刷新后全部落入第一列。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」新建/编辑组织弹窗布局:宽 1420px,左侧表单+三列票据固定约 860px(表头完整显示、列表项过长省略+悬停全文),右侧「关联物料分类」加宽;移除弹窗 `draggable`,悬停提示挂 body、不参与拖拽。', }, ], }, { date: '2026-06-18', items: [ { icon: 'mdi:stairs-up', kind: 'change', text: '「提级管理」根据会议内容调整项目细节。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「供货目录」根据会议内容调整项目细节。', }, ], }, { date: '2026-06-17', items: [ { icon: 'mdi:stairs-up', kind: 'change', text: '「提级管理」根据会议内容调整项目细节。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「供货目录」根据会议内容调整项目细节。', }, ], }, { date: '2026-06-16', items: [ { icon: 'mdi:calculator-variant-outline', kind: 'change', text: '「计提管理」四子页(预估运费 / 调货费 / 配货费 / 仓库损耗)列表列布局按业务区分:预估运费含物料、集团、供应商组织、仓库管理;调货费含调出/调入仓管理(无供应商);配货费含 RDC/FDC 仓管理;仓库损耗仅 RDC 仓管理;仓库列统一中文名 + 编码标签(`enrichAccrualRow` / `whNameCode`,名称与编码相同时名称显示「—」)。', }, { icon: 'mdi:calculator-variant-outline', kind: 'add', text: '「计提管理」申请值列改为 `el-input-number` 可编辑;改动为有效数值且与原始值不同时,操作列显示「申请 / 撤销」;顶栏新增「批量申请」;勾选键改用行 `code`(避免 `id` 重复导致多行联动勾选);移除「详情」入口。', }, { icon: 'mdi:calculator-variant-outline', kind: 'add', text: '「计提管理」对接申请流程:`POST /api/rate/apply/submit`(`items: [{ rate_code, apply_value }]`,批次号取响应 `data`)、`POST /api/rate/apply/agree`(`apply_code`)、`POST /api/rate/apply/listed`(可按批次号 / 状态筛选);顶栏「查看申请记录」打开弹窗,待审批批次首行可点「同意」并刷新列表。', }, { icon: 'mdi:calculator-variant-outline', kind: 'change', text: '「计提管理」申请记录弹窗改为扁平列表:每条明细一行展示批次号、申请时间、计提率、物料编码、申请值、当前值、状态、审批时间、审批人与操作,取消批次展开;弹窗宽度 80%;表格改用与物料列表一致的 CSS Grid 加权列宽铺满(修复原 11 列定义与 10 列 DOM 不一致导致右侧留白)。', }, { icon: 'mdi:calculator-variant-outline', kind: 'fix', text: '「计提管理」申请记录弹窗生命周期:路由切换与组件卸载时自动关闭,避免 `destroy-on-close` 与路由联动引发 `parentNode` / `subTree` 报错。', }, ], }, { date: '2026-06-15', items: [ { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」RDC/FDC 物料列表、关联可售卖列表:物料名称旁新增问号图标,点击弹出 `WhGoodsRelatedPopover` 浮窗,调用 `fetchGoodsRelated` 展示供货目录、RDC/FDC 仓库、四类费率(预估运费/调货费/配货费/仓库损耗)及申请值/计算值/当前值;黑底白字样式,宽度 380px,多实例互斥仅保留一个浮窗打开。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」列表物料名列同步接入 `WhGoodsRelatedPopover` 问号浮窗(与仓库管理一致);查看物料弹窗内问号已移除,改在列表侧展示。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」关联可调配仓(`WhRdcDeployLinkDialog`):移除单条自动保存逻辑,单条与批量均弹出勾选确认窗;`warehouse/rdc/deploy/candidates` 空结果不再写入缓存,每次打开均重新请求;无候选时提示「未找到可调配的仓库,请确认相关 RDC 仓中已维护该物料」。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC 关联 RDC(`WhFdcLinkRdcDialog`):`find_rdc` 候选空结果不再缓存,避免二次打开跳过接口;此前已移除单条自动配对直存,统一走弹窗确认。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」选项与选配关联解耦:选项名称始终用户自定义;行内「选配」改为「关联」,绑定结果写入 `optionAsmRefs`(以稳定 `optionIds` 为 key,避免空名称选项 key 碰撞);「选配选择」勾选后新增空名称选项并预置关联 tag,「+ 添加」后需自行填名再关联;关联/选配选择弹窗已关联项灰显禁用且不可重复勾选,单选关联弹窗选择框统一为方角 checkbox 样式。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」属性面板加宽至 320px,左/中特征列表列宽收窄(17%,max 210px),便于长选项名与关联 tag 展示;保存物料时校验选配字段不得存在空白选项名称。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」修改物料弹窗:文本/数字字段内联只读选配参考项去掉误导性蓝色 hover(`.mf-asm-inline-group .mf-radio-item.is-assembly` 恢复默认光标与中性色)。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「录入商品」目标返利单行模式 hover 浮窗改为 `el-popover` 结构化展示:按目标分组、实线分割,各阶梯分行列出阈值与扣减规则(不推断完成状态);浮窗黑底白字。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合管理」修复 `supplySupplierBlocSceneListed` 未导入导致运行时报错;编辑态向导跳步补充步骤 1/2 校验;商品弹窗关闭去掉重复 `loadList`;复制集合操作增加 loading 状态。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」承接管理页:列表占位符 `xxx` 改为「—」;操作按钮文案「政策列表」改为「承接管理」;`acceptRule.tiers` 增加可选链防错。', }, { icon: 'mdi:truck-delivery-outline', kind: 'fix', text: '「供应商列表」场景展示列表 `v-for` key 在 `scene_code` 为空时加 `name:` 前缀避免冲突;移除未使用的 `partnerDisplayName` 函数。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」新建/编辑规则:`goods_codes` 改为按 `category_code:goods_code` 组合键提交(如 `["CAT001:WD615","CAT002:P002"]`);商品范围勾选、回显与录入商品匹配逻辑同步按分类+物料编码对齐,兼容历史仅 `goods_code` 的规则读取。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」承接页「关联统筹集合」改为优先展示接口 `supply_match`:`name` 为集合名,`total_goods` 为商品总数,`matched_goods` 为规则商品范围匹配数;无该字段时仍回退本地统筹集合列表匹配。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」取消承接:仍传 `rebate_task_code`;修复 view/listed 返回 `tasks[]` 时未解析 `rebate_task_code` 导致取消失败的问题,取消前必要时补拉规则详情。', }, ], }, { date: '2026-06-14', items: [ { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」新建/编辑规则:「供应商参与组织」改为先选「我方参与组织」后再展示可选项;选项列表按供应商列表已维护的 `partners[]` 在前端过滤(复用 `supplier/listed` 会话缓存,不另调接口),仅显示与该我方存在合作关系的集团·旗下组织;变更我方时自动剔除不再符合条件的已选供应商;未选我方时供应商下拉禁用。', }, ], }, { date: '2026-06-13', items: [ { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」阶梯规则比例输入框增加 % 后缀;先金额后比例(amountThenRatio)时字段展示顺序自动对调,金额在前比例在后。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」承接状态徽章区分类型:目标性返利显示「已承接」,采购额阶梯返利显示「已承接 X / Y 档」;承接详情页同步调整。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」编辑弹窗打开速度优化:去掉 force 强制重拉组织列表,bloc/scene 数据加会话级缓存,回显时跳过 subOrgIds watcher 重复触发,首次以后打开弹窗仅保留 view 接口一次请求。', }, { icon: 'mdi:cash-multiple', kind: 'add', text: '「返利管理」新增「取消承接」功能:已承接规则在政策列表页可一键取消承接,带二次确认弹窗;原「承接」按钮更名为「政策列表」,「取消」更名为「返回」避免语义混淆。', }, { icon: 'mdi:clipboard-list-outline', kind: 'fix', text: '「录入商品」目标返利浮窗改版:规则名独立一行(蓝色加粗)+ 档数绿色徽章,每个承接阶梯分行带序号展示,浮窗宽度扩展至 480px;未点击场景时右侧已选商品不再误显示数量与列表。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「返利规则·商品范围」未点选场景时右侧已选商品面板保持空状态,点击场景或高级搜索后才展示已选列表与数量,消除误导性预显示。', }, ], }, { date: '2026-06-12', items: [ { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」页签整体重构:编辑态常驻,字段类型精简为单选/多选/单选框/多选框/布尔五种;选项区提供「+ 添加」单条和「选配选择」批量两种入口,选配选择弹窗从物料已关联的选配特征中提取选项,支持复选批量导入或行内「选配」按钮单值快填;属性面板改为「基础设置」+「显隐设置」双 Tab,「显隐设置」呈现入站规则(条件满足时该字段显示),字段卡片眼睛图标(👁)可快速跳转;数据变更自动同步至父级 v-model,无需手动确认。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」显隐设置样式统一至页签管理同款(fd-cg 卡片式条件组 + grid 布局条件行),标题改为「显示条件 / 符合以下条件时显示该字段」双行式;字段卡片标注从出站联动规则改为入站显隐规则计数。', }, { icon: 'mdi:cog-outline', kind: 'fix', text: '「选配管理」编辑区高度修复:改用 `height: calc(90vh - 310px)` 固定高度(与物料弹窗 max-height: 90vh 对齐,扣除 dialog header/footer/分类 tab/名称行/tab header ≈ 310px),消除「确认修改」按钮上方大片空白;移除对父容器 flex 链路的依赖。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」修改物料弹窗:select / multiselect 字段有选配分组时,原配选项横排改为仅显示已选项 + 「更多」按钮;点击「更多」弹出定位面板(teleport 到 body,z-index 99999),面板内展示全部默认选项(不含选配),支持单选点选关闭、多选切换保持打开。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」修改物料弹窗:radio / checkbox 字段有选配分组时,同样改为仅显示已选项 + 「更多」按钮,「更多」面板逻辑与 select 一致;选配分组行照常在下方展示。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」修改物料弹窗:文本、数字、多行文本及其他所有非嵌入选配的输入字段,聚焦时若存在选配数据则在输入框下方内联展示选配参考值(带圆圈标识、按来源物料分组);失焦 160ms 后自动收起;select / multiselect / radio / checkbox / feature_select / 只读字段排除(已有内嵌展示)。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」修改物料弹窗:修复「更多」面板因 scoped CSS 失效导致显示在弹窗后面的问题,改用 teleport + inline style 强制 z-index 确保层级正确。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」修改物料弹窗:修复 @focus 事件绑定到 el-input 无效的问题,改为在外层 mf-field-item div 绑定原生 @focusin / @focusout(支持冒泡),并定位到正确的 subgroup 级字段渲染路径(group 级与 subgroup 级均已覆盖)。', }, { icon: 'mdi:store-outline', kind: 'change', text: '「录入商品」弹窗操作列改为单行保存:每行有未保存改动时出现蓝色「保存」按钮(单独保存该行),无改动时隐藏;「移除」改为 el-popconfirm 二次确认防误删;移除底部「返回列表」和「保存商品配置」全局按钮;点击右上角 × 关闭时,若存在任意未保存行,弹出确认框提示「有商品配置尚未保存,确认关闭吗?」做双保险拦截。', }, { icon: 'mdi:store-outline', kind: 'fix', text: '「录入商品」销售折让 / 保底返利展开区:选择「先金额后比例」时,输入框顺序修正为金额在前、比例在后(原先固定比例在前导致语义错位);销售折让和保底返利三处参数行(折让、rebate_type=3、其余基准)同步修正。', }, { icon: 'mdi:store-outline', kind: 'add', text: '「录入商品」销售折让 / 保底返利 tag 新增 hover tooltip:已配置时鼠标悬停显示计算结果,销售折让提示「网价 ¥X,折让 ¥Y,折后付款单价 = ¥Z」,保底返利提示「基于付款单价 ¥X,返利 = ¥Y」,未配置时不显示。', }, { icon: 'mdi:store-outline', kind: 'add', text: '「录入商品」场景物料列表新增三段筛选按钮:全部 / 已添加 / 未添加,按商品是否已在本集合中动态过滤展示,空态提示随筛选状态联动。', }, { icon: 'mdi:tag-text-outline', kind: 'add', text: '新增「基础数据 → 业务类型」页面:支持两级树形结构(大类 + 子类型),大类按索引自动分配彩色区段,子类型以卡片网格展示(圆角阴影,hover 上浮);新增/编辑弹窗含名称和描述字段,描述超长截断并提供 tooltip;设置票据弹窗展示 13% / 9% / 6% / 0% 四个税率选择胶囊,选中后自动匹配对应 bill_code 提交 `/business_type/set_bills` 接口,卡片上以彩色税率标签展示已关联票据。', }, ], }, { date: '2026-06-11', items: [ { icon: 'mdi:calculator-variant-outline', kind: 'add', text: '新增「计提管理」顶级菜单,包含「预估运费」「调货费」「配货费」「仓库损耗」四个子页面,统一由 `AccrualList.vue` 组件驱动,调用 `/api/rate/listed` 接口按 type 参数分类加载数据。', }, { icon: 'mdi:calculator-variant-outline', kind: 'change', text: '「计提管理」列表:采用与物料列表一致的 flex-grid 自定义表格结构,支持勾选、分页;列布局包含物料(名称+编码)、供应商(名称+编码)、RDC/FDC仓编码、申请值/计算值/当前值、操作;表头与数据行在同一滚动容器内,彻底解决滚动条宽度导致的列错位问题。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」批量关联弹窗:打开时「已选」改用各物料已有关联的**交集**回填(原并集导致仅部分物料有的关联被误显为全部已有);确认提交按「目标 × 物料」拆分,仅向尚未关联该目标的物料调用 `add_adapter`,避免漏补。标签新增橙色「N/M 已有」提示局部关联状态。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」移除开发期调试打印(`mlDebugJson`、`mlAdapterApiBodyForLog` 及所有 `[物料]` 前缀日志);`material.js` 同步移除 `mlApiDebugJson` 及 `/goods/view`、`add_adapter`、`remove_adapter` 请求/响应日志。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」分类说明改为分类名称后内联「说明 ?」:点击弹出条目(名称 + 内容),底部「添加」「编辑」;移除原独立说明表单项,与分类名紧贴展示。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」组织新建/编辑纳税类型联动调整:一般纳税人增值税率下拉仅 13/9/6%,「0% 普票」独立为「进项增值税率」只读行;一般/小规模「收据」移出下拉,开启「是否支持收据」后独立展示「0(收据)」告知行,保存字段不变。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」左侧栏控件合并为一行:「总览」贴「收藏」旁;「树形/平铺」与「列表/收藏」同行右对齐。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」说明弹窗样式调整:「说明 ?」触发文字改为橘色;弹窗内条目标题改为蓝色,视觉层次更清晰。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」与「物料列表」暂隐藏「仓库管理」页签(`v-if="false"`,代码保留可随时恢复)。', }, { icon: 'mdi:calculator-variant-outline', kind: 'add', text: '新增顶栏一级菜单「计提管理」(`/accrual`),含四个子页:「预估运费」「调货费」「配货费」「仓库损耗」,当前为占位页,待后续接入。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」确定按钮脏检测修复:快照就绪前屏蔽所有页签操作入口(「编辑」「升级」「删除」「导入页签」「添加页签」);选配分类改为先拍快照再放开编辑区,防止初始化期间的操作被吃进基线导致按钮一直灰。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」页签默认值清空后确定按钮不回灰:引入 `dirtyCompareReplacer`,比对时将 `defaultValue` 的 `null`/`""` 与 `defaultValues` 的 `null`/空数组统一视为「未设置」,与初始快照语义一致则恢复灰色。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '应用版本升至 **v0.7.01**:当前共 7 个一级功能板块(物料管理、业务场景、仓库管理、计提管理、供货目录、基础数据、OKR),版本号中位对应板块数。', }, ], }, { date: '2026-06-10', items: [ { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」选配关联字段对齐后端改名:`add_adapter` / `remove_adapter` 请求体改用 `assembly_goods_code`(选配/辅物料)与 `adapter_goods_code`(普通/主物料);普通料侧批量关联时两字段交换(`bulk_pick_optional`),选配料侧不交换(`bulk_pick_normal`)。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」`is_adapter` 字段改名为 `is_assembly`:`category/listed`、`category/view`、`category/add`、`category/modify` 读写均用新字段,保留旧字段兜底读取;前端树节点内部仍用 `isAdapter` 标记。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」新增「复制到其他集合」功能:勾选商品后可按字段矩阵选择要复制的内容(网价、直达仓等),选择同供应商旗下目标统筹集合后批量提交,完成后提示已复制条数与集合数。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」移除每 2 分钟轮询刷新(`startPoll`),避免页面空闲时重复调用 `category/listed` 和 `goods/listed`。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」选配关联弹窗性能优化:增加 `/goods/view` 会话级缓存;`openMaterialDialog` 同行再点不重复请求;`assembly_goods` 按点击行的 `category_code` 分桶截取,避免同 `goods_code` 跨分类串数据;`primeAdapterMergedCandidatesFromCodes` 改用搜索接口替代全量分页。', }, ], }, { date: '2026-06-09', items: [ { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」普通料页签选配横条:展示改用选配分类「特征关联」全量枚举(如选项1~4 均显示);别名对应项灰色实心,同维度其余项空心灰圈,圆点尺寸与首行原配统一 11px。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」装配子物料 enrich 按 category_code+goods_code 分桶,修复同一选配料挂多选配分类时特征被最后一类覆盖(品牌下拉缺项、来源标错)。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」批量关联/适配:复合键并集预热与勾选计数修复;普通料 assembly_goods 不全时反向扫描选配料 adapter_goods 补齐;列表勾选键改为分类+编码,切换左侧分类清空勾选。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表」页签「品牌」等字段与装配桶按 label/featureKey 对齐,下拉合并原配与选配枚举;mergeKey 与来源解析按选配分类+物料编码区分多行。', }, { icon: 'mdi:shield-key-outline', kind: 'add', text: '共用「物料搜索」弹窗 `SceneGoodsAdvancedSearchDlg`:主/子场景首选项筛查、互斥规则、底部「清除筛查」;「代理授权包」与「录入商品」接入,替代原简单筛选。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「代理授权包」打开默认不预拉全量物料,仅搜索后展示列表;无结果时列表区提示可确定关闭;移除左侧场景侧栏,搜索后自动切换场景。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」物料池接入同一套高级搜索与无结果提示;支持弹窗内/列表外「清除筛查」;搜索范围限定为统筹集合已关联场景。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」规则新建/编辑改居中对话框;商品范围「加载候选」按页 `in_scenes` 拉取,避免对每个分类重复 `goods/listed` 与一次性翻尽全量。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」集团/组织工作台主区域默认撑满可视高度,底部「集团关联场景」「旗下组织」及组织三列区在列内滚动,减少大块留白。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」组织「可供货场景」行:「已关联」与「设为不关联/恢复关联」右栏两行展示、右对齐,紧凑字号与行高。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」组织「代理授权包」列表:「编辑」「删除」与左侧包信息垂直居中对齐。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」集团「关联场景」卡片收紧:封面+名称+路径与「移除」同一行,取消固定卡片高度与底部空行。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」集团「旗下组织」卡片小巧化:图标与名称居中一行,分割线下联系人左、场景/合作统计右,去掉多余留白。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」集团概览统计卡改单行:全称区直接展示集团全称(去掉「全称」标签),其余项标签左、数字右对齐,移除第三行说明文案。', }, ], }, { date: '2026-06-08', items: [ { icon: 'mdi:shield-key-outline', kind: 'add', text: '共用「物料搜索」弹窗 `SceneGoodsAdvancedSearchDlg`:主/子场景首选项筛查、互斥规则、底部「清除筛查」;授权包与录入商品接入,替代原简单筛选条件。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「代理授权包」打开默认不预拉全量物料,仅「物料搜索」后展示列表;无结果时列表区提示并可确定关闭;移除左侧场景侧栏,搜索后自动切换场景。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」物料池接入同一套高级搜索与无结果提示;清除筛查(弹窗内与列表外);搜索范围限定为统筹集合已关联场景。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」规则新建/编辑改居中对话框;商品范围「加载候选」改为按页 `in_scenes` 拉取,避免对每个分类重复 `goods/listed` 与一次性翻尽全量。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」封面:上传后存接口返回 `url` 对象;展示忽略 `blob:` 临时地址;保存时剥离 `_preview`,拼接 OSS 相对路径访问。', }, { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」末端分类可配置物料命名规则(`_goodsNameRule`);「物料列表」创建/编辑时按规则联动名称字段,text 规则项为空时拦截保存。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「物料搜索」弹窗切换主场景时占位防重影;子场景在主场景已勾选时禁用并提示互斥。', }, ], }, { date: '2026-06-07', items: [ { icon: 'mdi:sitemap-outline', kind: 'add', text: '「组织管理」左侧新增「主体类型」侧边栏(大类增删改);选中后在右侧维护该主体下的组织分类(小类),新建分类自动带上 parent_code。', }, { icon: 'mdi:sitemap-outline', kind: 'fix', text: '「组织管理」分类列表改从当前选中主体的 children 读取;分类新建/编辑恢复「组织性质」字段(字典「企业性质」)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」集团 CRUD 对接 `bloc/*`;选中集团时可维护「集团关联场景」(`bloc/scene/listed`、`bloc/scene/set`);左树由 `bloc/listed` + `supplier/listed` 合并。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」组织新建/编辑:纳税类型联动增值税率/收据选项,保存 `output_vat_rate`、`is_output_receipt`、`is_support_receipt`;移除「单张发票限额」与「基础率」四字段。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」组织「可供货场景」继承所属集团关联场景,通过 `ignore_scenes` 标记不参与的场景(随 `supplier/modify` 提交);支持行内与弹窗批量设置不关联。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供应商列表」整页及全部弹窗响应式字号(`--wh-fs-delta` / `wh-fs-scope`);新建/编辑校验集团全称与组织纳税类型必填。', }, { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」分类说明改为结构化 `helper`(名称 + 内容、继承父类、弹窗增删改、树节点问号 popover);保存写入 `helper`,替代单行 `desc`。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建向导:先选供货方组织再从 `partners[]` 选合作公司;第二步区域树选直供仓(进页默认全选可取消);供货开票类型按双方纳税类型推导(一般+一般=专票等,含 `is_support_receipt`)。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」三列弹窗:业务场景 + 场景物料池(`collection/goods/search`,单场景可设筛选条件)+ 本集合商品(`collection/goods/listed` 分页);场景切换联动左右筛选。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」顶部摘要:供应商/我方括号展示纳税类型;票据无保存值时按规则推导展示;多仓显示「共 N 个」悬停看全名。新加商品不默认全选 RDC,保存仅 `goods/update` 有变更行。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」列表、向导与录入弹窗统一响应式字号;供货目录左树改 `bloc/listed` + `supplier/listed` 合并(含 partners/ignore_scenes)。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「代理授权包」物料数读 `package_goods_count`;保存物料改 `auth_package/goods/set` 全量覆盖。', }, { icon: 'mdi:shield-key-outline', kind: 'fix', text: '「代理授权包」`in_scenes` 物料列表分页 total 误用本页条数,修复满 50 无法翻页。', }, ], }, { date: '2026-06-05', items: [ { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」响应式字号:左侧分类树、右侧物料表与操作栏、分页等(1920 基准,2560 +2px,3840 +4px);树/表覆盖 `--el-font-size-base`,避免 Element 默认 14px 挤偏列宽。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」左侧分类树响应式字号(`--wh-fs-delta` + `--el-font-size-base`)。', }, { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」整页响应式字号:顶栏、统计、分类树、列表、引用芯片、弹窗与下拉菜单。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」一类/二类列表与新建按钮响应式字号。', }, { icon: 'mdi:book-open-variant', kind: 'change', text: '「字典管理」整页响应式字号:左侧列表、右侧导航/分组/表格/按钮及全部弹窗(teleport 弹窗加 `wh-fs-scope`)。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'change', text: '「区域管理」左侧区域列表响应式字号:标题、搜索框、添加按钮、区域树节点与空态。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」整页及全部弹窗响应式字号(弹窗尺寸不变);新建/编辑组织分类弹窗宽 580px→680px。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「部门管理」整页、弹窗与权限抽屉响应式字号;新建/编辑部门(含子部门)弹窗 660px→740px、新增/编辑角色 460px→520px,表单 label 略加宽,避免宽屏字号放大后换行。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 已关联物料:树形 / 平铺统一 grid 列宽(关联仓库、管理精度、操作);响应式字号(1920 基准,2560 +2px,3840 +4px);修复 el-tree 内部默认 14px 覆盖导致 em 列宽与表头错位、平铺表头右 padding 挤偏固定列等问题。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC「关联 RDC」弹窗:根节点接入 `wh-fs-scope`,标题、提示、树节点、按钮等字号随分辨率缩放。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 可售卖区域:右侧标题不再展示当前物料名;「添加」弹窗提示去掉物料名,区域树仅显示地名不展示 region code(搜索仍可按编码);弹窗宽度与内容区高度随 `--wh-fs-delta` 等比放大。', }, ], }, { date: '2026-06-04', items: [ { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」整改左栏:场景列表占满;每行悬停「关联物料」打开大弹窗(左分类树、右物料列表分页,Tab:全部 / 已关联 / 未关联;搜索、筛选条件);底部批量关联至 RDC / FDC(须先勾选未关联行)。左下内嵌物料池暂隐藏。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」关联物料弹窗:加大并视口居中;物料与 RDC/FDC 互斥展示(仅一种状态标签,已关联不可再勾选另一侧);批量按钮文案带「批量」与已选条数。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC「批量关联 RDC」:打开前预检 find_rdc;无候选 RDC 仓仅提示不弹空窗;每条 FDC 全局仅一条可配 RDC 时确认后直接保存,多候选仍弹窗手选。与场景弹窗「批量关联至 RDC」(加入本仓 RDC 列表)区分。', }, ], }, { date: '2026-06-03', items: [ { icon: 'mdi:window-close', kind: 'change', text: '离开提示:顶栏关页签仍弹自定义确认(确定才关);浏览器关标签仍弹系统确认;F5 / Ctrl+R / 工具栏刷新不弹系统确认;Tauri 关窗弹自定义确认。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'fix', text: '「区域管理」区域树:自治区、特别行政区按省级识别(不再因「自治区」末字「区」被当成区县,避免市下挂省);直辖市补全同名省、市两级(如 天津市→天津市→区);同父同名节点合并去重。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'change', text: '「区域管理」添加区域:入库前按省/市/区组合去重,已存在则提示不重复提交;直辖市写入时同时带省级、市级字段;刷新列表仍走语义组树,避免上下级颠倒。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」子场景首选互斥:主场景已用特征(按中文名)在子场景字段池标「禁止」且不可拖入首选;主场景对已入子场景首选的字段标「子场景」并拦截拖入主场景首选(兄弟子场景可共用)。', }, { icon: 'mdi:sitemap', kind: 'change', text: '「物料分类树」去掉 60s TTL 与登录定时轮询:`useCategoryTree` 的 fetch/invalidate 每次均请求 `category/listed`;失败清空共享树,避免静默沿用旧缓存;删除分类后 await 全局刷新。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」`api/scene.js` / `rfScenePreferred` 去掉 all_tree、元数据索引、RDC 可选场景、scene/view 等会话缓存;用时直接打接口(`invalidate*` 保留空实现兼容旧调用)。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」纯数字首选组:查询合并为一个输入;可勾选「启用范围」配置允许区间,查询时可切换单值/范围;组内各数字字段共用条件且关系筛选物料。', }, ], }, { date: '2026-06-02', items: [ { icon: 'mdi:package-variant-closed', kind: 'change', text: '「录入商品」场景物料池:与代理授权包一致,首屏 50 条 + 底部分页切换;有搜索词时走 `goods/search` 分页,无搜索时走 `goods/in_scenes`(可按场景筛选)。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「统筹集合」列表与「录入商品」:供应商合作组织或可供货场景变更后,对仍挂着旧配置的集合提示「合作组织已变更」「场景已变更」(含移除后合作组织列表为空的情况;仅展示不拦操作)。', }, { icon: 'mdi:package-variant-closed', kind: 'change', text: '「录入商品」代理标:仅当物料所在授权包的「授权组织」包含本统筹合作方时显示;未配置授权组织的包不计入。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「代理授权包」新建/编辑:三列顺序改为场景 → 物料 → 授权组织(原合作组织);物料随左侧场景切换加载。', }, { icon: 'mdi:truck-delivery-outline', kind: 'change', text: '「供货目录」供应商集团/组织:新建与编辑去掉「企业性质」;工作台「工商信息」不再展示企业性质;保存请求不提交 org_nature。', }, ], }, { date: '2026-06-01', items: [ { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」关联统筹集合计数对齐需求:仅按参与组织匹配集合个数;「匹配」数为集合商品与规则商品范围交集(未配置范围时匹配数为 0);不影响录入商品预估成本计算。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「录入商品」目标返利匹配对齐需求:仅当物料编码在规则「商品范围」内才扣预估成本;未配置范围或编码不在范围内则不套用该规则(修复无交集时误当「不限制物料」)。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」文案对齐需求:原「白名单」表述改为「商品范围 / 已选商品」;录入商品提示「物料未纳入商品范围」。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「供应商列表」代理授权包:物料区改为每页 50 条分页加载(`goods/in_scenes` 传已关联场景;单场景带筛选 scene_values);搜索走 `goods/search` 分页;已选勾选跨页保留。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」地图坐标写入描述(`[[WH_GEO:经度,纬度]]`,兼容旧 HTML 注释);保存同时提交 `desc`/`description`;单仓「位置」与总览优先用描述坐标定位。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」白名单「查看清单」:打开弹窗时按编码解析物料名称(本地 meta → 场景 in_scenes → goods/search → goods/view);列表上行名称、下行编码;`goods/search` 与 in_scenes 共用列表解包。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」界面文案统一为「物料」(替代 SKU);详情区业务场景/白名单展示名称;规则详情支持就地展开完整参数(不调 rule/view)。', }, { icon: 'mdi:cash-multiple', kind: 'fix', text: '「返利管理」承接人:新建/编辑保存 `assignee_name`/`assignee_code`;承接页打开规则时拉详情回填,避免列表行缺字段显示「未指定」。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」目标返利:同一物料匹配多条已承接规则时以 Popover 查看摘要,单条仍为 tag;成本扣减仍按多条规则累加。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '供货目录相关页:`v-loading` 均补充 `element-loading-text`(返利列表、白名单弹窗、统筹向导、组织选择器等)。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」对接 `supply/rebate/rule/*` 与 `supply/rebate/task/accept`:列表/新建/编辑/删除/承接走接口,本地 localStorage 下线;阶梯与组织字段按接口做映射(扩展字段透传)。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」参与组织改为接口下拉多选(`classify:partner` / `集团:组织`),关联统筹集合数与承接页预览走 `supply/collection/listed` 真实匹配。', }, { icon: 'mdi:cash-multiple', kind: 'add', text: '「返利管理」规则商品范围:按业务场景 + 首选项筛选拉 in_scenes 候选,勾选写入白名单(不选=不限制 SKU);`getProductTargetRebateInfo` / `getProductTargetRebateDeduct` 按已承接阶梯累加扣减。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」目标返利列:匹配统筹集合组织且 SKU 在白名单内时展示已承接阶梯摘要;预估成本扣减目标返利(与销售折让、保底返利同链路计算)。', }, { icon: 'mdi:cash-multiple', kind: 'add', text: '「返利管理」新建/编辑规则:居中弹窗加宽至约 1100px,参与组织左右并排、阶梯字段四列排布,内容区无内嵌滚动条,表单尽量一屏展示全。', }, { icon: 'mdi:cash-multiple', kind: 'change', text: '「返利管理」改为列表主场:页头与统筹集合列表同构(搜索、新建规则);规则以白底卡片展示参与方/有效期/范围与阶梯 chip;承接、删除仍可用。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」保存/回显:对接 `goods/update` 新字段 `sales_rate`/`sales_amount`、`rebate_rate`/`rebate_amount`、`rebate_manual_base`(手工基准仅 rebate_type=3);组合折让/返利同时提交比例与金额,不再用 `sales_value`/`rebate_value`。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」集合商品表:表头与数据行统一 CSS Grid 对齐;销售折让/保底返利行内主下拉 + 配置浮层(Popover);付款单价/预估成本前端按 demo 计算。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「录入商品」销售折让「无→有」、保底返利「不设置→再选类型」时保留已填参数草稿(仅关闭参与计算与保存);切换保底返利类型选项去掉 1~4 序号并收窄列宽。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」左侧物料池:支持勾选多条后「批量添加」(`collection/goods/batch_add`);单条仍用「+」走 `goods/add`。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合」列表:「录入商品」改为 primary 蓝色按钮;右上角「批量创建」暂注释隐藏(功能未定)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」弹窗加宽、左侧物料池收窄;右侧集合商品改为 flex 单行表,按 `goods/listed` 展示网价/折让/返利等字段;直供仓改为下拉多选(折叠标签)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「录入商品」配置项:销售折让为是/否;保底返利下拉与 demo 一致(不设置、基于网价等五档);折让模式/返利模式列保留、下拉待字典(仅回显接口数值);添加/移除/保存对接 `collection/goods/*`。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「录入商品」右侧集合商品:对接 `collection/goods/listed`、`add`、`remove`、`update`;列「直达RDC」为集合关联直供仓(`warehouses`);保存提交网价/仓库/销售与返利等配置。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「统筹集合管理」新建:对接 `POST /api/supply/collection/add`(组织、场景/仓库数组、账期、承兑、负责人 owner_code 等);编辑保存对接 `POST /api/supply/collection/modify`;复制 `collection/copy`、删除 `collection/remove`(body:`supply_collection_code`)。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「统筹集合」列表卡片:名称旁按商品数显示绿色「完善」/橘色「待完善」;支持「详情」就地展开完整参数(不调 detail 接口);场景/仓库多名称顿号展示,我方组织与负责人由组织档案补全。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合」编辑回填:列表行反查合作方组织分类与合作公司全称;负责人从供货组织 contact_person 带出;详情区不展示排序位置。', }, ], }, { date: '2026-05-31', items: [ { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」二类卡片墙:`scene/listed` 与 `all_tree` 合并去重,避免 listed 不全时少场景;开发环境进入页控制台打印 `all_tree` 结构便于核对。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」物料「管理精度」保存:`set_lot_type` 请求体字段由误传的 `log_type` 改为 `lot_type`(RDC/FDC 一致)。', }, { icon: 'mdi:login', kind: 'fix', text: '登录页恢复仅用 `map.webp`/`map.png` 静态背景,不再挂载 MapboxBackground(Mapbox 仅用于仓库等业务地图组件)。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「统筹集合管理」列表页:对接 `POST /api/supply/collection/listed`(支持 company_code、receive_company_code 筛选);卡片展示供应商/我方/直供仓/场景等;新建/编辑/复制/删除仍走原 coord_collection 接口层(待后端对齐)。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」复制分类:先 `batch_pos` 排至同级末尾再刷新树一次,避免复制后先显示在中间、需再刷新才到底部。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料列表」左侧分类树与「物料分类」页顺序不一致:共用 `category/listed` 后按 pos 递归排序(`categoryTreeSort`);分类页拖拽 batch_pos 成功后通知物料列表即时刷新树。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合」新建第二步:合作方按所选组织分类 `company/listed`(classify_code)取组织行后计算开票类型;直供仓仅 `warehouse/listed`;供货方缺类型时 `company_code` 单条查询,不再全量 list。', }, { icon: 'mdi:truck-delivery-outline', kind: 'fix', text: '「供应商列表」合作组织补全称:按分类 listed 或 `company_code` 单条查询(`lookupCompanyRowsForCodes`);组织查看弹窗走 `fetchCompanyListedByCode`;`fetchCompanyInfo` 默认关闭全量 listed 与扫分类兜底。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合」向导:第一步快照供货/合作组织行;第二步同条件不重复拉分类 listed/仓库;再次打开新建复用已加载的供应商树与组织分类。', }, { icon: 'mdi:map-marker-radius', kind: 'change', text: '「区域管理」、仓库 RDC「可售卖区域」、统筹集合第二步直供仓树:国/省/市/区配色与仓库侧栏地理树一致(共用 geo-tree-level 样式)。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」「物料列表」「业务场景」物料末级分类树、「仓库管理」左侧「物料列表」:全部分类节点(含末端)按层级着色(1~20 层白底固定色表,21 层起 H=depth×137.5°、S65%、L42% 自动生成);仅物料 SKU 行保持默认样式。', }, { icon: 'mdi:toggle-switch', kind: 'add', text: '页签模板与物料分类自定义页签新增「布尔」字段(`type: boolean`):控件盘「其他」分组可拖入;页签管理 / TabBuilder 预览为开关;物料列表建改物料为 `el-switch`(是/否),值写入 `fields` 为 true/false。', }, { icon: 'mdi:eye-settings-outline', kind: 'change', text: '布尔字段支持显隐规则与条件必填:页签管理、TabBuilder、物料分类跨页签规则及字段抽屉内均可配置;条件运算符为等于/不等于,条件值下拉选「是/否」。与「多选框」(checkbox) 区分:多选框为多选项勾选,布尔为单开关。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '物料分类:继承/引入页签预览补全布尔开关;字段显隐与选项显隐弹窗中布尔条件改为「是/否」下拉;引入/继承/全局 valueMap 对布尔默认 false 与覆盖值 false 做归一化,避免显隐误判。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '物料列表:修复布尔默认值为「否」(false) 时未写入 tabValues、继承 extraGroups 覆盖丢失 false、仓库页签开关未初始化;回填与保存时对 true/false 归一化;仓库分类配置预览(WarehouseGroupsPreview)补布尔开关。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '页签管理 / TabBuilder「预览」:布尔字段初始值与 valueMap 按 true/false 归一,修复默认「否」时显隐规则在预览中不生效;物料分类继承覆盖与追加字段卡片补布尔开关,默认文案显示「是/否」而非 false/未设置。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '物料列表模板回填:分类链 overrides 为「是」时不再被模板默认「否」抢先写入;物料分类继承/引入布尔开关展示统一 coerceBooleanFieldValue,避免历史字符串 false 显示成开。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '物料分类:新增子/根分类默认 pos 为同级最大序号+1(排在最末);保存后刷新分类树时恢复原有展开状态(修复 setExpandedKeys 无效导致整树收起)。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '物料分类编辑:取消「设置末端」时自动清除「不参与场景」勾选;「不参与场景」使用固定宽度占位显示/隐藏,避免勾选末端时「是否选配」等选项位置跳动。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建向导第一步业务场景:展示封面缩略图(与供应商列表同源);卡片网格横向不足自动换行,列表区域最高约 280px 超出纵向滚动。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「统筹集合管理」新建向导第二步:根据对方组织可开票据与我方合作公司可收票据交集推导供货开票类型(只读展示);直供仓多选来自 `/api/warehouse/listed` 启用仓库,网格换行且区域可纵向滚动。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建第一步:负责人改为手动输入;合作公司在所选组织分类下无组织时展示「无公司」(不再显示 No Data)。', }, { icon: 'mdi:folder-cog-outline', kind: 'change', text: '「统筹集合管理」新建第二步:供货开票类型按双方组织性质推导(一般→一般专票等);直供仓改为仓库列表国省市区树勾选,选中区域包含其下全部启用仓库。', }, { icon: 'mdi:folder-cog-outline', kind: 'fix', text: '「统筹集合管理」第二步推导开票类型:合作公司补读组织管理的 company_type(字典 1/2)与分类 field.org_type;报错标明供货方/合作方哪侧未识别纳税类型。', }, { icon: 'mdi:truck-delivery-outline', kind: 'fix', text: '「供应商列表」合作组织卡片:展示名优先全称(狮心动力),简称(1、whwc)仅作副行;供货商树/集团组织仍优先简称,逻辑未改。', }, ], }, { date: '2026-05-30', items: [ { icon: 'mdi:clipboard-list-outline', kind: 'add', text: '「供货目录」新增顶栏一级菜单(`/supply`),子菜单「供应商列表」。', }, { icon: 'mdi:folder-cog-outline', kind: 'add', text: '「供货目录」新增与「供应商列表」同级的「统筹集合管理」(`/supply/coord-collection`),当前为空白占位页,待后续接入。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」左侧集团—组织树 + 右侧工作台:集团展示旗下组织卡片;组织节点维护基本信息、可供货场景、合作组织等列(列宽可拖拽持久化);对接 `supply/supplier/listed`、`set_scenes`、`set_partners` 等。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」可供货场景:添加场景复用 RfScenePickerBlock;列表展示缩略图与一二类路径(`scene/all_tree` 会话缓存,不再逐条 `scene/view`)。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」合作组织:添加弹窗按组织分类 `company/listed` 选组织(SupplyPartnerPickerDlg);点击组织名称只读查看详情(CompanyOrgViewDlg),组织详情走 `company/listed` 按 code 兜底(无 `company/info`)。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织查看」弹窗(供货目录合作组织):表单与分类票据区对齐组织管理编辑弹窗;查看模式不展示物料关联树;宽 680px、弹窗内滚动,避免整页被撑出滚动条。', }, { icon: 'mdi:clipboard-list-outline', kind: 'change', text: '「供货目录」移除独立「代理授权包」菜单与 `/supply/agent-pack` 占位页;授权包改在「供应商列表」选中组织后于工作台维护。', }, { icon: 'mdi:truck-delivery-outline', kind: 'add', text: '「供应商列表」组织节点新增「代理授权包」列:列表、新建、更新、删除;对接 `supply/auth_package/listed`、`add`、`modify`、`remove`;物料数以 `goods/listed` 为准。', }, { icon: 'mdi:shield-key-outline', kind: 'add', text: '「代理授权包」新建/更新弹窗:当前组织只读,展示「集团·组织」;左列合作组织多选与搜索、中列全部场景/单场景、右列物料勾选;基础信息与下方三列之间增加分割线。', }, { icon: 'mdi:shield-key-outline', kind: 'add', text: '「代理授权包」物料选择:单场景复用 `WhSceneGoodsFilterDlg` 与 `goods/in_scenes`(同仓库场景物料筛选);全部场景合并各已关联场景物料池;保存包信息后按勾选 diff 调用 `goods/add`、`goods/remove` 落库;更新打开时 `goods/listed` 回填勾选。', }, { icon: 'mdi:shield-key-outline', kind: 'fix', text: '「代理授权包」单场景物料列表仅展示当前场景池(无末端分类则为空),不把其他场景或包内已关联料混入该场景列表;弹窗 `align-center` 垂直居中且整体高度随内容,避免底部大块空白;场景配置与物料区合并一次加载。', }, { icon: 'mdi:shield-key-outline', kind: 'change', text: '「代理授权包」弹窗布局:宽约 720px、三列区高约 320px(列内滚动),操作文案为「更新」非「编辑」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 可售卖区域布局:分页底栏(Total / 每页条数)提升至物料与区域并排外层(`wh-rdc-region-split-ft`),横跨「已关联物料」与「可售卖区域」;两栏内容区同高,底栏统一收口,避免右侧区域独立撑满导致底边错位。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」从物料管理独立为顶栏一级菜单(`/scene/manage`),与物料管理、仓库管理同级;原 `/material/scene` 保留隐藏跳转,路由名 `SceneManage` 不变。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」货区货位:移除 `zone/listed`、`zone/goods/listed` 开发调试 console 打印。', }, ], }, { date: '2026-05-29', items: [ { icon: 'mdi:map-marker-radius-outline', kind: 'add', text: '「区域管理」基础数据新入口(`/base/region`):左侧区域树 + 右侧高德地图;默认定位山东省并按容器 fitView;对接 `POST /api/region/listed`(不传参查全部)与 `POST /api/region/add`;搜索框输入地名预览(橙色)后点「添加」逆地理解析并入库。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'change', text: '「区域管理」地图三态:有搜索词仅预览搜索位置;选中树节点单选高亮(蓝色);无搜索无选中时全览已录入区域;点地图空白仅取消列表选中,搜索预览保留(方案 A)。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'change', text: '「区域管理」列表组树:平铺/残缺 `parent_code` 数据按 国家→省→市→区 合并去重、补全路径;修复无效「市嵌套市」(如乳山市下挂威海市)与同节点多父级重复;不再前端硬补「中国」。', }, { icon: 'mdi:map-marker-radius-outline', kind: 'change', text: '「区域管理」地图绘制:全览/单选按末端行政区出图(有区画区、有市画市),区按「所属市|区名」区分着色;区级检索用「市+区」关键词,避免 fallback 到整市/整省;高德 DistrictSearch 无边界时 fallback 阿里云 DataV GeoJSON(`datavRegionGeo.js`),全览并行绘制并预取 `_full` 索引与边界 JSON。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」RDC 可售卖区域:按物料设置可售卖区域(非整仓一套);左侧物料列表 + 右侧可售卖区域树,点选物料展示/编辑该物料关联区域;布局提升至 RDC 上半区并排(`wh-rdc-region-split`);对接 `POST /api/warehouse/rdc/region`(查询)与 `region/set`(整表替换);添加/移除合并去重后提交,region_codes 对齐区域管理 listed 的 code。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」货区货位·格子类型:空格子「…」菜单「设置类型」,勾选末端分类(树形复选框 + 「末端」标签,仅 is_final 可选);写入 `POST /api/warehouse/zone/grid/set`(rows/cols/store_type);类型数据从 `zone/goods/listed` 读取 store_type,悬停展示分类中文名与路径;格子上不展示类型文字。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位·上货与类型联动:已有物料的格子不可再设类型;已设类型的格子添加物料时锁定该末端分类;未设类型时首次上货自动调用 grid/set 写入所选分类为 store_type。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」货区货位·格位合并:空位 / 全禁用 / 同 store_type / 同物料 的区域可合并;以当前格为左上角,仅向右、向下扩展(`row_span`/`col_span`);边界自动限制(如 10 列第 9 格最多再合 1 列);提交走 grid/set,listed 回读 span 后格网 CSS 合并展示;禁用格菜单亦支持合并(暂不提供拆分,待后端接口)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位·区域树:可售卖区域展示改为 listed 组树并裁剪已关联分支(非平铺);批量添加弹窗父级联动勾选、提交只取 listed 内 code;去掉省/市/区标签。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」货区货位·合并展示:合并锚点格边框与背景铺满 span 区域(网格 stretch + 合并 wrap 尺寸);被吞并格不再单独渲染。', }, ], }, { date: '2026-05-27', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」地图总览与新建/编辑选点改接 Mapbox(`WhMapboxOverviewDialog` / `WhMapboxPickerDialog`);原高德弹窗组件与引用暂注释保留,可随时切回。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」Mapbox 使用 Pencil 自定义样式(`mapbox.js`);`mapboxLoginTheme.js` 运行时隐藏道路线,并为缺文字层的样式补全中文地名 / 路名 / POI 标注(`name_zh-Hans` → `name_zh` → `name`)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」Mapbox 地图隐藏左下角 logo 与右下角 attribution(`attributionControl: false` + CSS);总览、选点弹窗统一配置。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」批量地理编码:`mapboxGeocode.js` 识别 Mapbox 20 token 上限,超长中文地址自动截短重试;Mapbox 无结果或 422 时回退高德 REST,减少控制台报错与漏标点。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」仓库总览打开时:初始化改为不透明遮罩,地图容器隐藏至 geocode、`fitBounds` 与 `idle` 完成后再一次性呈现,避免加载中局部视角与完成后全国视角闪切。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC 取消 RDC 来源:`set_rdc` 仅提交 `{ warehouse_fdc_code, list: [] }`,不再附带 `warehouse_rdc_code` 或物料编码。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」左侧仓库栏:「列表 / 收藏」及顶部搜索过滤结果,均可切换「树形 / 平铺」展示(不再仅列表 Tab 支持)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」仓库场景:去掉「默认场景」设置;关联多个场景后点击场景名称切换下方物料列表,不再要求指定默认项。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」场景物料筛选:点「开始搜索」时调用 `set_scene_values` 保存筛选条件;下次打开同场景弹窗与物料列表按已存 values 默认回填并生效。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC「关联 RDC」弹窗:左侧仓库列表排除 FDC 所属本仓;除本仓外无可选仓库时显示「无任何仓库」。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC「关联 RDC」弹窗:列表「暂未关联」(无 `warehouse_rdc_code`)时,打开弹窗不再自动勾选其它仓 RDC 池中的同名物料;仅已有来源记录才恢复勾选。', }, ], }, { date: '2026-05-26', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC「关联 RDC」弹窗交互加严:顶部只读展示「当前生效来源」(未关联时提示尚未关联);本次勾选与生效来源分离,橙条展示草稿并提供「取消勾选」(跨仓库时仍可清空);已勾选时换选其它来源须先取消勾选,禁止静默覆盖;点「确定」前二次确认——首次关联 / 变更来源(原来源 → 新来源)/ 取消关联,避免误改业务依据;保存按钮文案改为「确定」(兼关联与取消)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 已关联物料:去掉右侧「来源 RDC」侧栏及宽度拖拽;来源改在列表展示「关联仓库」「关联分类」两列(未关联显示「暂未关联」/「—」);「关联仓库」已关联为蓝色、暂未关联为橘色,便于扫读状态。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联 RDC 改为行内操作:每行「关联 RDC / 移除」,勾选仅用于批量取消关联;去掉面板右上角「关联 RDC」入口。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」场景 / RDC / FDC 工作区:RDC 与 FDC 之间横向分隔条增加居中灰色拖拽块;FDC 物料区改为满宽列表,不再与来源侧栏分栏。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」左侧仓库栏:去掉「按区域搜索」Tab,仅保留「列表 / 收藏」;顶部搜索框统一过滤当前 Tab 下的树形/平铺列表;底部按钮文案「新增中心仓」改为「新建仓库」。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」货位货区「设置货位」与货架货区编辑:新增「编号方向」(从左至右 / 从右至左,按当前货面保存);货面/货区支持填写名称;名称多段用「-」连接、禁止「@」(旧数据 A@DH 展示/保存为 DH-A);货位号 H-[货区 code]-[货面]-层.列,grid_bans 为 {"列,层":1}。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货位货区:未选中左侧货区时,右侧「货位存货 / 区域存货」内容区居中提示「请先在左侧选择货区」;货面/地面存货 loading(「AI Thinking · 货面」等)在面板内垂直水平居中,不再贴顶。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」性能与请求优化:货位货区面板改为 v-if 懒挂载,未进「货位货区」Tab 不拉 zone 列表;RDC/FDC 物料 loadGoods 增加 loadSeq 丢弃过期响应;`loadPickableScenesForRdc` 会话内缓存可选场景池;场景移除 / FDC unlink 后复用已返回的 goods 列表,减少二次 refresh;FDC「关联 RDC」弹窗传入左侧 warehouseTree、去掉 panelKey 强刷,保存后按锚点行增量更新。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」新建/编辑仓库地图选点:`.env` / `.env.production` 补充 `VITE_AMAP_KEY`、`VITE_AMAP_SECURITY_CODE`,生产 build 可打进包(与 5/25 地址拆分回填能力配套)。', }, ], }, { date: '2026-05-25', items: [ { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」「按区域搜索」对接 `POST /api/warehouse/search`(body:`keyword`);去掉「接口接入后在此展示」占位提示;输入框改为「仓库名称 / 地址关键字」,支持回车检索,结果在下方列表点选仓库。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」收藏改为服务端同步(`favorite_listed` / `add_favorite` / `remove_favorite`),不再使用本地星标;列表、平铺、按区域搜索结果 hover 仓库名旁显示「收藏」,收藏 Tab hover 显示「取消收藏」;已收藏项不再显示「收藏」按钮。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」左侧仓库行「收藏」按钮布局:紧挨名称展示(对齐场景物料「至RDC」),右侧「…」菜单固定右对齐,悬停出现收藏时不再与菜单重叠。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」左侧新增「列表 / 收藏 / 按区域搜索」Tab;列表下可切换「树形 / 平铺」;仓库行支持收藏(服务端)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」新建/编辑仓库:地址对接 add/modify 新字段(省/市/区/街道门牌号);原「联系地址」改为「街道门牌号」,并新增省、市、区输入框;「能力范围」表单项暂隐藏;地图选点确定后自动拆分回填四段地址(需配置 VITE_AMAP_KEY)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」顶栏改为「仓库管理 | 货位货区」两 Tab;原 RDC / FDC / 货区货位 三 Tab 工作区暂关(`whWorkspaceTabsEnabled = false`)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货位货区:货架货面改为右侧顶部 Tab(如 HW-A);取消中间「货面」整列;新建/编辑货架货区用「面数」自动生成货面,去掉手动「新增货面」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货位货区:左栏货区列表固定宽度;货位格网横向滚动仅发生在格网区域,货面 Tab 与「设置货位」工具条固定不随动;左栏名称恢复省略号。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货位货区:货架/地面格位基础尺寸调整为 160×100;工具条右上角「5 层 × 12 列 / 共 N 块」改为蓝色强调。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」货位货区:修复格网区域竖向滚动条不出现;修复「货位货区」切回「仓库管理」后场景/RDC/FDC 三栏消失(`v-show` + 切回时重绑 ResizeObserver)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」去掉顶栏与左侧树「+ 添加子仓库」入口(逻辑保留)。', }, ], }, { date: '2026-05-24', items: [ { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」子场景保存/同步:`scene/modify` 误用主场景 classify_code(如发动机 SLGHJUQF9P),已改为各 scene 使用自身 classify 节点(如微型发动机 ADNJE1RHM2);打开详情时从 classify 树正确解析主场景节点。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」子场景封面与 icon 继承主场景:子场景 Tab 不可单独上传封面,展示与保存均沿用主场景封面。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」卡片墙:排除 classify 树下子场景 classify 节点;`scene/listed` 结果优先按 scene 自身 classify_code 过滤,避免子场景误上墙。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC 可选场景列表与业务场景结构对齐:仅汇总二类下主场景 classify 对应 scene,不再把子场景 classify(如微型发动机)纳入 `loadPickableScenesForRdc`。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」FDC 关联物料:来源 RDC 列表条数与右侧物料表不一致(如显示 4 条实际 2 条)——修正 RDC 条数统计重复累加,合并已保存物料时仅纳入当前选中 RDC。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联物料表「分类」列:长路径单行省略(…),悬停 tooltip 展示完整目录;列宽随表格容器宽度自动计算(1920 / 2560 等分辨率自适应)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位:根货区支持自定义编码 code,货位号按编码拼接——货架 H-{货区code}-{货面}-{层}.{列},地面 D-{货区code}-{块序号};同仓多货架/多地面不再撞号;未设编码时兼容旧格式。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC 筛选条件:枚举类首选组改为一个下拉展示,组内各字段选项合并去重(与业务场景首选组逻辑一致);提交 in_scenes 时组内匹配成员写入同一 scene_values 对象、多 key 同值。', }, ], }, { date: '2026-05-23', items: [ { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」选中子仓库时顶栏「上级」显示为「—」:listed 树子节点补全 parent_code,并按树结构回退解析所属中心仓名称。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联物料:点选 FDC 后工作区改为三栏可拖拽布局——全部中心仓/子仓列表、该仓 RDC 列表、当前 RDC 物料表;依次选仓→选 RDC→勾选物料,不再混表展示;同一 goods_code 跨 RDC 互斥,冲突可确认改来源。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联物料:加载 RDC 候选池时不再逐条调用 `/api/goods/view`;列表与保存仅依赖 `rdc/goods` 返回的名称、编码、分类及 `category/listed` 路径映射。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位:左栏货架货区增加层×列规格标签(样式与中间栏货面一致)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC:打开时仅预加载首个具体场景的 scene/view;切换场景卡片再按需加载;进入时即展示全部关联场景名称。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC 关联场景:保存/编辑时写入 scene_labels 名称快照,详情卡片优先读已存名称;旧数据回退 scene/all_tree 补全。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」RDC 关联场景卡片:非当前场景封面在业务场景上传后未显示——进入 RDC 后后台对缺封面场景补拉 scene/view;刷新场景索引避免封面陈旧。', }, ], }, { date: '2026-05-22', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 关联物料:主界面「筛选条件」按钮改为橘色 warning 样式,便于与物料搜索区分、快速进入筛选弹窗。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 详情:关联场景卡片过多时在顶部区域纵向滚动(约两行高度上限),避免挤占下方物料列表。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 关联物料:筛选条件改为弹窗配置,需点「开始搜索」才刷新列表;物料表上方增加名称/编码本地搜索,主区域留给列表展示。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 详情:场景卡片右上角可移除关联;「+ 添加场景」随时追加,保存走 rdc/modify 更新 scene_codes(不删业务场景本身)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 创建/编辑:关联场景改为 `POST /api/scene/all_tree` 扁平多选具体 scene_code,可跨一类/二类任意勾选;详情按已关联 scene_code 直接加载场景卡片(兼容旧二类数据)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 详情:去掉二类场景 Tab,已关联场景下的全部具体场景卡片直接展示在顶部;筛选与关联物料紧随其后。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货架货位:无货面时不展示右侧格位网格;货舱号改为 H-货面-y.x(如 H-A-01.01,层.列),旧 H-货面-层-列 格式读取仍兼容。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC 关联物料:移除顶部 RDC 多选下拉,默认汇总本仓全部 RDC 已关联物料;列表支持点击「来源 RDC」「物料名称」表头排序;同一物料跨 RDC 勾选互斥,须先取消当前来源再选另一 RDC。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」右侧页签拆分为「RDC」「FDC」「货区货位」三个独立入口;RDC 与 FDC 各自维护库列表与详情,不再合并为「RDC/FDC管理」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」左侧仓库列表改为树形:中心仓下展开子仓库;选中任意节点后右侧统一展示仓库信息与「RDC」「FDC」「货区货位」,不再单独进入「子仓库」页签二次选择。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC、FDC 分别对接 `/api/warehouse/rdc/*` 与 `/api/warehouse/fdc/*`;FDC 不隶属某一 RDC,关联物料时可在详情多选本仓 RDC 作为候选来源,物料继承 RDC 已关联列表,保存时每条携带 warehouse_rdc_code。已停用 rdc_fdc 旧接口。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」RDC 关联物料候选列表改为调用 `POST /api/goods/in_scenes`:按当前具体场景的 scene_code 与筛选条件(字段 code = 选中值)由服务端返回物料;筛选条件仍仅存页面内存。', }, ], }, { date: '2026-05-21', items: [ { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」中心仓右侧顶栏新增「RDC/FDC管理」页签(位于「子仓库」与「货区货位」之间);子仓库详情区内嵌同样提供「RDC/FDC管理 | 货区货位」切换,共用 WhRdcFdcPanel;选定 RDC/FDC 后可配置二类场景、筛选条件与关联物料。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」RDC/FDC「关联物料」对接 `rdc_fdc_goods`(listed / add / remove / batch_add):单列表展示场景池物料,支持按筛选条件(同场景内且关系)过滤;已保存关联默认勾选,保存时按勾选 diff 增量增删,不再维护下方第二块已关联表。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」RDC/FDC 场景锁定面板(RfSceneLockPanel):具体场景卡片切换;「锁定条件」文案改为「筛选条件」;关联物料表按容器宽度分配列宽(名称约 20%、编码约 20%、分类约 60%),分类展示全路径(祖先 / 末级)。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」首选字段物料筛选工具(rfSceneGoodsFilter / rfScenePreferred):按场景末级分类拉物料池;列表缺 fields 时并发调用 `goods/view` 补全后再筛;分类 code 映射全路径标签;L2 下多具体场景配置独立加载。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」FDC:新建/编辑不再单独勾选二类场景,保存时沿用所属 RDC 的场景配置;详情区不展示筛选条件与二类 Tab,仅在 RDC 已关联物料汇总列表中勾选本库子集。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」FDC 关联物料汇总表新增「具体场景」列:按 RDC 下各具体场景(L3 卡片名称,如「发送机」)的末级分类推断来源,非二类场景名;多场景以「 / 」拼接。工具见 rfSceneFdcGoods.js。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」删除 RDC/FDC 增加确认弹窗;删除 RDC 时提示关联物料清除,若存在下属 FDC 则二次确认并列出数量,避免误删导致 FDC 所属 RDC 失效。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」货架货区新增「货面」中列:货面走 zone.parent_code 子货区(名称可填 A、B 等短编);选中货面后右栏按该货面层×列加载格网与存货;支持新增/编辑货面、按货面「设置货位」;中心仓与子仓共用同一组件,子仓内嵌同样可用。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位 loading 文案按场景区分:左栏「AI Thinking · 货区」、货面格网「AI Thinking · 货面」、地面「AI Thinking · 地面货区」;添加物料弹窗左「… · 分类」、右「… · 物料」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货架货舱号改为 H-货面短编-层-列(如 H-A-01-01);地面仍为 D-序号;旧 H-层-列 / N- 编号读取时仍兼容。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」编辑货区时货区类型(地面/货架)不可切换;块数/层/列必填校验与红 * 提示;调小层/列/块数后前端不删服务端数据,仅格网外坐标不渲染。', }, ], }, { date: '2026-05-20', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位格网:有货格与空位 hover 右下角「…」菜单(上货 / 取货;空位亦可菜单上货),交互对齐仓库列表侧栏与部门管理角色行。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」「设置货位」:工具条旁灰色谨慎设置说明(调小层 / 列后原先有货货舱可能无法显示);弹窗点「确定」前二次确认。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」「区域存货 / 货位存货」标题栏右侧新增搜索框,可搜当前货区内物料名称、编码、货舱号等;匹配格子高亮,其余淡化。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货舱存货接口对接:格网改走 `POST /api/warehouse/zone/goods/listed`、`stock_in`、`stock_out`;上货 / 取货 / 列表加载均带 `rows`、`cols` 坐标(地面为块序且 cols=1,货架为层×列),按货舱格位绑定与展示物料;不再使用 `location/goods` 路径。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」暂隐藏中心仓与子仓「关联可存储」「关联可售卖」页签(`whAssocTabsVisible = false`,模板与逻辑代码保留);子仓详情区直接展示「货区货位」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」子仓内嵌货区货位窄容器适配:默认栏宽收紧、ResizeObserver 窄于 720px 自动纵向堆叠、格子与工具条紧凑样式;「谨慎设置」说明在子仓保持单行展示。', }, ], }, { date: '2026-05-19', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位 UI 实现与重构:货架 / 地面按货区 type 分流(地面隐藏货位中列、5 列块网格;货架层×列格网、左下角货舱号);存货改走 `zone/goods`(listed / stock_in / stock_out);空位点击格子上货;添加物料改为末端分类平铺选择(名称下展示上级路径)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位及相关页面优化:格网列宽 aspect-ratio 自适应、工具条与标题栏布局收紧;存货加载统一 loading 与静默刷新(取货成功后 quiet 拉列表);切货区 / 改行列后按需重载 zone goods,减少无效请求与闪屏。', }, ], }, { date: '2026-05-17', items: [ { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」「部门管理」「仓库管理」关联物料分类保存:与「业务场景」一致,仅 `POST .../batch_link_category` 提交当前勾选全量,由服务端对齐关联;不再请求 `unlink_category`。仓库中心仓可存储/可售卖仍随 `list` 提交各分类 `goods_code_pool`(可售卖池变更)。', }, { icon: 'mdi:login-variant', kind: 'change', text: '登录页背景:优先 `map.webp`、`image-set` 兜底 `map.png`;移除 `index.html` 对地图图的全局 `preload`(避免非登录进站误预加载告警)。', }, { icon: 'mdi:logout-variant', kind: 'fix', text: '退出登录后本地已无 token 时,抑制接口返回「token is null」类错误的重复通知(避免多请求叠弹)。', }, { icon: 'mdi:message-off-outline', kind: 'change', text: '站内 IM(OpenIM)默认关闭:环境变量 `VITE_ENABLE_IM=true` 时恢复 `ensureOpenIMConnected` / 登出 `logoutIM` 等;布局侧已移除 OpenIM 同步入口等死代码。', }, ], }, { date: '2026-05-16', items: [ { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」选配管理(AssemblyManage):查看模式三栏优化——中栏「所有选配特征」按页签合并已拖入字段,避免重复灰字分组标题;左/中栏名称行「已设置」紧挨字段名,「添加设置 / 修改设置」悬停出现在行末右对齐;显隐抽屉增加底部「确定」(无改动为默认灰、有改动为蓝色主色),下拉「选择字段」展示「自身 / 选配」来源标签并收紧下拉宽度(fit-input-width),抽屉主体可滚动、底部操作栏固定;默认关闭「编辑选配」完整编辑模式(ASM_LEGACY_FULL_EDIT,入口按钮注释保留,需时可恢复)。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料」接口:`getMaterialDetail`(/api/goods/view)移除开发用 `console.log` 完整返回打印。', }, ], }, { date: '2026-05-15', items: [ { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」整体布局调整;场景封面样式与展示区域优化;场景内物料列表的布局与列表呈现优化。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」「关联物料分类」列表交互优化:`check-strictly` 下同步父级半选(indeterminate)展示,与场景配置侧一致;当前勾选仅统计完全勾选节点,半选父级不参与关联写入。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」「关联物料分类」列表交互优化:与同场景、组织侧对齐,`check-strictly` 下维护父级半选展示;勾选同步与保存语义一致(仅完全勾选计入关联)。', }, { icon: 'mdi:account-group-outline', kind: 'fix', text: '「部门管理」角色成员列表:级别与 KPI 与用户管理同源展示——优先从用户 `roles` 中匹配当前部门与角色的绑定读取 `role_level`、`kpi_rate`,避免误用用户顶层字段导致与用户管理不一致。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」货区货位:添加物料时 stock_in 增加 category_code(当前所选物料分类);remark 传从树根到本级分类的路径(「/」分隔)。货位存货列表「物料分类」优先展示 category_path(兼容字符串 / 分段对象或数组);列表中仅保留路径以「/」分隔的最后两段,避免顶栏类目过长。', }, { icon: 'mdi:warehouse', kind: 'fix', text: '「仓库管理」货位存货列表:修复 category_path 为对象数组时界面出现 「[object Object]」连成串的问题;goods_listed 条目补充解析 category_code 供二次存货等场景使用。', }, ], }, { date: '2026-05-14', items: [ { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」特征与特征组优化:首选等区域相关 chip 统一展示所属「总类」与描述文案;重写特征组的结构布局,并调整分组与各层级的显隐表现。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」「关联物料分类」:仅通过勾选框变更勾选(末级分类点名称也不会勾选);点击节点名称用于展开或收起。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」「关联物料分类」:默认全展开;仅勾选框可勾选(含末级);点击名称展开/收起,行为与「组织管理」侧一致。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」中心仓与子仓库的「关联可存储」「关联可售卖」分类树:默认全展开;仅勾选框勾选;点名称展开/收起,叶子名称不改变勾选。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」新上线「货区货位」:中心仓顶栏 tab、子仓库内嵌 tab 均可维护当前仓库的货区、货位与货位存货(三栏布局,可拖拽调宽);支持货区 / 货位的增删改、货位物料列表与筛选、按物料分类添加物料、存货与取货等,与档案权限一致。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」中心仓 / 子仓「货区货位」货位存货表:改为 flex 按比例占宽,避免窄列下列头错位;表头与表体左右留白 4px、表头高度略压低;滚动区改用 scrollbar-gutter: auto,避免右侧长期留出大块空白;「数量」列与多列内容整体微调对齐;取货弹窗去掉备注,取货成功后静默刷新列表并在失败时单独提示;子仓内嵌货区货位面板撑满剩余高度。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」子仓库左侧列表:默认列宽与标题 / 行内边距、字号等略收紧,更紧凑。', }, { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」「引用内容」芯片仅展示来源名称(不再显示「›」及后半段明细);溢出时仍按列宽自动显示若干条,其余合并为「+N」,并修正:仅在确有折叠时为「+N」预留宽度,避免条够宽仍少展示来源。', }, ], }, { date: '2026-05-13', items: [ { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」新增「货区货位」入口(中心仓 tab、子仓内嵌 tab;完整能力见 2026-05-14 更新)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库档案」物料分类关联功能优化。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库档案」可售卖 / 可存储关联逻辑优化。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「用户管理」物料分类关联功能优化。', }, { icon: 'mdi:sitemap-outline', kind: 'change', text: '「组织管理」物料分类关联功能优化。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」首选属性支持「特征组」:可将多个特征组合为一个搜索项,组内字段同时参与筛选条件。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」首选属性新增「显隐规则」功能:可为独立特征配置条件(枚举 / 数值比较 / 文本),条件成立时指定目标特征显示,支持多条规则(OR)、多目标、预填默认值。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」特征组支持「AND 规则」:组内所有特征的条件同时满足时,控制组外目标特征的显示,支持多条规则(OR)及预填默认值;分类或成员变更时规则自动清理并提示。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」显隐规则支持「预览模拟」:在首选属性预览弹窗中可交互模拟选择,实时查看目标特征的显隐与预填效果。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」移除调试用 console.log,清理代码噪音。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」分类变更后自动清理首选属性及显隐规则中的过期字段/目标,并同步持久化,防止脏数据残留。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」分类树无子场景时提示文字由"三级类"改为"场景",与实际业务术语一致。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「业务场景」关联分类详情加载改为批量接口(`POST /api/category/views`),场景切换速度显著提升,减少并发请求数。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签管理」修复打开字段详情面板时报 `drawerKeyLoading is not defined` 的错误。', }, ], }, { date: '2026-05-12', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」移除顶部「仓库总数 / 顶级仓库 / 已启用 / 已停用」统计卡片。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」**关联可售卖**(`materialAssoc` tab)重构:左侧改为可售卖分类勾选树(check-strictly,type=2),支持脏检测 + 确定按钮;新关联分类默认 `goods_code_pool: [\'*\']`(全部物料入池);右侧移除搜索框,保存后同步刷新右侧物料池。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」关联面板简化:`categoryAssoc` 和 `materialAssoc` 顶部上下文栏移除中心仓名称及「关联可存储分类 / 关联物料」冗余文字;`categoryAssoc` 脏提示横条仅在有改动时渲染,消除额外间距。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」`materialAssoc` 右侧标题「物料分类」(青色)/ 「物料」(橙红)加色;右侧分类节点样式与左侧 el-tree 默认风格对齐(去除灰色背景边框及 wh-ma-tree-seg-name 加粗)。', }, { icon: 'mdi:warehouse', kind: 'add', text: '「仓库管理」**子仓库关联物料分类重构**:原「管理关联」弹出模式改为始终展示的 check-strictly 剪枝树(`storeEmbed` / `sellEmbed` 两 tab)。可存储 tab 为全屏树;可售卖 tab 为左侧剪枝树 + 右侧物料池,结构与中心仓 `materialAssoc` 完全一致。两侧树仅展示中心仓已关联的分类范围,子仓库独立勾选/取消,不影响中心仓。中心仓取消关联后子仓库对应分类自动消失。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」子仓库无独立配置时默认全选中心仓范围,baseline 对齐初始展示值(dirty 初始为 false,不触发确定按钮);切换子仓库时重置两侧面板状态。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」移除顶部「部门总数 / 已启用 / 已停用 / 根部门数」统计卡片(已注释保留);修复切离「关联物料分类」tab 时写入只读 computed (`deptMaterialCategoryTree`) 导致的 Vue warn;关联物料分类树取消默认全展开。', }, { icon: 'mdi:routes', kind: 'change', text: '路由隐藏:注释「银行账户」`BankAccountManage`、「会计科目」`AccSubjectManage`、「辅助核算」`ExpenseItemManage`(基础数据)及「配置表」`PriceBook`(物料管理)四条路由,菜单项同步消失,代码保留便于后续恢复。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」首选属性支持字段改名(别名):悬停字段 chip 出现铅笔图标,点击内联编辑;保存配置后持久化,拖回字段池自动恢复原名。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」首选属性支持添加「组」:字段可拖入/拖出组,组名可双击改名;删除含字段的组时提示确认,字段自动移至顶层。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「业务场景」子场景名称/描述可通过 tab 上的铅笔按钮单独编辑;主场景名与各子场景 tab 鼠标悬停时显示描述 tooltip;子场景 tab 超出宽度时横向滚动。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」加载配置时「上传封面」按钮与其他操作按钮同步置灰,防止误操作。', }, { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」表头「特征KEY」简化为「特征」。', }, ], }, { date: '2026-05-11', items: [ { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」去除档案页内调试输出(移除 `logWhSell`/`debugWhSell` 与拖拽排序 `console.log`)。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」关联物料 · 可售卖:末级分类点击后懒加载 `goods/listed`;子仓保存可售卖池无记录时改用 `batch_link_category`(带池);`refreshWhCategoryAssoc` 可按 type 仅刷新可存储或可售卖一侧,互不连带重载。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」子仓「关联物料分类」:仅在中心仓已关联范围内管理;新建/编辑表单隐藏仓库编码输入;责任人/联系人下拉按部门分组、部门名由 `dept/listed` 回补、展示格式与档案行一致。详情见仓库根目录 **`PROJECT_OVERVIEW.md`** §8「仓库管理 · 档案 / 关联物料与可售卖物料池(2026-05-11)」。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」关联物料 · **可售卖**(同日早期摘要):按已关联分类建树;`goods_code_pool` 语义与 `set_goods_pool`(type=2)保存;加载与保存遮罩。列表接口兼容见 `src/api/material.js`。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库档案」关联物料分类:全量分类树复用 useCategoryTree 全局缓存(登录/路由预热、物料分类 CRUD 作废);浏览树仅显示分类名;「管理关联」内搜索输入暂时注释。子仓「管理关联」仍并行请求两条 warehouse/category_listed(中心仓+本子仓),耗时主要取决于仓储接口。中心仓可售卖「管理关联」下移除树下「物料池」摘要列表。详见根目录 PROJECT_OVERVIEW.md 同日相关小节。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '**物料分类树客户端缓存**:`src/composables/useCategoryTree.js`(约 60s 失效、定时刷新、`invalidate`);登录与**有 token 首访路由**预热;`MaterialCategory.vue` / `MaterialList.vue` 分类增删改后作废刷新。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」「关联物料分类」:与管理态共用布局的浏览树;全局分类缓存;顶栏搜索框暂时注释。详情见仓库根目录 PROJECT_OVERVIEW.md(2026-05-11「部门管理 · 关联物料分类(同日补充)」)。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」(物料场景) **关联物料末级分类**:移入字段配置区**最左列**,与首选/公共/专有属性及右侧字段池并排;与中列之间可**左右拖拽改宽**(`scene_cat_col_width`,与场景列表侧边栏宽度分开存储)。浏览为剪枝树、管理为页内勾选树(无弹窗);「当前选中」说明条**不随树下拉**。详见根目录 **PROJECT_OVERVIEW.md**(2026-05-11「物料场景 · 关联末级分类 UI(同日补充)」)。', }, ], }, { date: '2026-05-10', items: [ { icon: 'mdi:office-building-outline', kind: 'add', text: '「部门管理」右侧顶栏「关联物料分类」页签:与组织侧同款交互;已关联 `POST /api/dept/category_listed`;并行 `POST /api/category/listed` 生成路径行;「管理关联」全树勾选,确认后 `link_category` / `unlink_category` diff 保存;加载中 / 关联中遮罩;切页签或换部门退出管理态并刷新列表。详见 `docs/部门管理_关联物料分类.md`。', }, { icon: 'mdi:sitemap-outline', kind: 'add', text: '「组织管理」编辑组织弹窗右侧「关联物料分类」:已关联列表 `POST /api/company/category_listed`;并行拉 `POST /api/category/listed` 生成「父 / 子 / …」路径行;「管理关联」内全树勾选,确认后 `link_category` / `unlink_category` diff 保存;加载中 / 关联中区分遮罩文案;标题旁橘色说明;新建无编码仅提示。弹窗固定主体高度、约 1200px 宽、内部滚动、去横向条。详见 `docs/组织管理_关联物料分类.md`。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」选中角色后第三列成员:带头像行;姓名 / 手机 / 职业性质 / 工号分列;级别与 KPI 仅只读展示(紫/琥珀胶囊「n级」「n%」),不再行内调用 `set_role_level` / `set_kpi_rate`;表头 kpi 列为 `kpi(单位: %)`;各行独立 grid 下将末两列由 `auto` 改为相同 `minmax`+`fr` 轨道并收紧列距,修正表头与「级别」「kpi」列错位;移除成员加载的大段 DEV 控制台分组输出。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「用户管理」「查看部门详情」弹窗与右侧详情抽屉中部门·角色表的 KPI 列表头由 `KPI%` 改为 `kpi (单位: % )`,并适当放宽列 `min-width` 以容纳表头。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「用户管理」列表「部门」列按 `roles` 条展示;「查看部门详情」弹窗可编辑每条绑定的级别(仅下限 1、无上限)与 kpi(单位 %,0–100),分段条 + 表格;合计须为 100 时在点「确定」保存再提示,界面不再常驻满百提示。保存 `POST /api/user/modify` 提交 `roles: [{ dept_code, role_code, role_level, kpi_rate }]`。', }, { icon: 'mdi:account-group-outline', kind: 'add', text: '「用户管理」右侧详情抽屉底部「部门 · 角色与 KPI」:只读表格(与弹窗同源 `user.roles`)+ KPI 合计与分段条预览;移除任职信息与头部重复的「部门·角色」长文案展示。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「用户管理」`loadList` 不再在开发环境向控制台输出列表原始数据、`console.table`;新增用户触发 OpenIM 注册时静默吞掉异步错误(仍不阻塞保存),不再打印成功/失败日志。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」关联/数据源选「常量信息」:`LinkPicker` 在 `oa_config` 列表中排除 `desc` 为多维表写回形态(`来自多维表格「…」· 列「…」`)的项,避免与写回常量再次互选闭环;规则见 `oaConfigListedMerge.js` 的 `isOaConfigDescFromMdtWriteback`。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」删除列:若该列为「常量信息」(`ds:oa_config`)或存在「同步到配置常量」绑定,确认框追加对页签/物料与常量侧影响的说明,标题区分「删除列 · 将影响常量关联」。', }, { icon: 'mdi:table-edit', kind: 'change', text: '「配置项管理」删除常量:确认文案说明页签/物料/多维表可能仍引用、系统不自动修改引用;取消删除不触发未处理异常。', }, ], }, { date: '2026-05-09', items: [ { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」衍生常量传播(`oaConstWritePropagation.js`):按表 `localStorage` 索引 `mdt_const_upstream_idx_v1`(`mdtUpstreamIndexCache.js`)与公式链静态 hint(`mdtConstUpstreamDeps.js`),在有关联补丁 sig 或可判 noDeps 时少调用 `excel/dynamic/view`;每张被 view 的表与 MDT 内载入/保存后会 upsert 索引。冷启动、数字列写回、lookup/link 等仍保守全扫;详 `docs/多维表格(MDT)_改动纪要.md` §5。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「配置项管理」保存配置:`loadCfg` 后跑多维表传播,传播结束后再 `loadCfg` 一次,避免衍生 `/config/set` 尚未落库时列表已刷新;传播等待期间常驻橘色 `ElMessage`(duration: 0,口语文案),结束 close 后再弹绿色「已按多维表公式同步…」。统计字段含 `tablesSkippedByIndex`。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「常量 / 配置项管理」多维表描述符合「来自多维表格「…」· 列「…」」时拆两行展示:中间区 flex 伸长,分列名时用 space-between 将「· 列「…」」贴在底栏分割线上方(用原有竖向留白,不靠多堆一行拉高);单行 desc 仍在区顶,余下占位 flex 填满。栅格改为 stretch 同行等高,显式列/行间距;去掉子卡 width:100% 溢出叠层。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」数据源与关联展示:`dsListedApi.js` 统一管理 `oa_config` / `oa_led` 等 listed 路径及 `oa_*` 回退推断;`data_source/listed` 单次成功缓存避免重复请求;关联与数据源列刷新并行、`ensureLookupTable` 同 target 并发去重;减少对未配置 listed 的控制台噪声。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」`LinkPicker` 关联/数据源选择:动态表优先按 `cells` 解析主副标题(含查找引用等嵌套字段);预热对 table/ds 目标 BFS 拉取缓存与数据源 map;`linkTarget` 前缀规范化;加载列表时显示「正在加载可选记录…」。新增 `pickerFieldResolve.js` 与 listed 模块复用。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」查找引用无数据时显示「— 无引用数据」、悬停说明改为白话;占位行取消浅灰斜体主视觉;关联列标签支持悬停提示、加载中占位文案。', }, { icon: 'mdi:table-large', kind: 'add', text: '本节多维表格分项说明与技术要点见 `docs/多维表格(MDT)_改动纪要.md`。常量数据源(`oa_config` / 「常量信息」)与「配置项管理」分类结构的产品差异已记入该文档,待专项迭代。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」常量信息(`oa_config`):列表与列配置对齐「分类/子分类 → 配置 listed」,`__mdt_pk` 复合主键;列编辑面板「展示字段」分组下拉(灰色组标题);选数弹窗按「大类/小类」分组、主行省略+悬停全文、兼容旧格子仅存的 `key`。另:`fetchOaConfigMergedListed` / `pickerFieldResolve` / 网格缓存对旧 listed 形态的失效重拉。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」新增行时:仅「数据源选择」且数据源为「常量信息」(`ds:oa_config`)的列,默认继承上一行的已选常量(内部编码与原行一致);其它列仍为空;可再点格子重选。', }, ], }, { date: '2026-05-08', items: [ { icon: 'mdi:office-building-outline', kind: 'add', text: '「部门管理」角色新增「岗位类型」下拉(管理岗 M / 专家岗 P),提交 `role_type`;角色列表名称旁显示 M/P 小 Tag(plain);有角色描述时悬停名称 Tooltip 展示。', }, { icon: 'mdi:office-building-outline', kind: 'add', text: '「部门管理」第三列人员:点选中间列某一角色后加载该角色关联成员;「关联用户」弹窗从 `/api/user/listed` 拉取用户(当前页至多 500 条 + 本地关键词筛选),勾选后调用 `POST /api/dept/link_user`;成员行可调「级别」(1-10)、「KPI%」(0-100),防抖后分别调用 `set_role_level`、`set_kpi_rate`;「移除」调用 `unlink_user`。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」已关联成员列表请求地址为前端常量 `API_DEPT_ROLE_MEMBER_LIST`(默认占位路径);需与后端「按 dept_code + role_code 查询成员」的真实接口对齐,否则第三列加载会失败。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「用户管理」开发环境(`import.meta.env.DEV`)下列表加载成功后在浏览器控制台输出 `res.data`、深拷贝用户数组、`console.table` 与首条字段名,便于联调查看接口字段。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「计算公式」编辑弹窗改版(页签搭建 TabBuilder、页签模板 TabManage、物料分类自建字段、选配管理四处共用 `FormulaEditorPanel`):弹窗宽约 900px(窄屏随视口收窄);左右分栏,函数库改为 Tab(数学·文本·逻辑·日期)减少纵向堆叠;折叠「从 Excel/Exec 粘贴」可将 字段="" 或 字段=\'\' 转为 ISBLANK(字段) 生成参考文本并支持复制,不写入上方正式公式;折叠标题含橘色「请点击展开」提示。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」计算公式改为与分类页签相同的点选弹窗:仅引用选配画布上的数字、金额与其它计算公式(存为 {字段 id}),不再在公式中点选物料页签字段;试算仅基于画布字段。', }, { icon: 'mdi:cog-outline', kind: 'change', text: '「选配管理」控件库不再提供「字典」「明细/表格」拖入新建;显隐联动条件来源同步收窄(VIS_ELIGIBLE_TYPES);历史已配置的字典/明细表格仍可编辑;数字与计算公式字段默认占两列宽,减轻多位数与表达式被裁切。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」选配 numLinks / textLinks 与分类页签显隐合并:`mfCatTabFieldVisible` 在原有分类显隐上叠加选配联动;公式类条件使用 `mfAssemblyFormulaValueMap` + `evalFormulaValue` 求值;保存前必填校验与可见字段一致。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库档案」重构为左右分栏布局:左侧为中心仓列表,右侧为选中中心仓的子仓库(门店仓)列表,中间分隔条可左右拖拽调整宽度并持久化;左侧 hover 显示三点菜单(添加子仓库/编辑/删除),不占仓库名宽度;右侧子仓库列表带表头(仓库名称/编码/所属组织/责任人),编码蓝色、组织绿色、责任人橙色,奇偶行交替背景色。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「业务场景」移除「关联组织」区块(含弹窗、接口调用、字段存储),「关联物料末级分类」扩展为全宽显示,tag 区高度上限放大。', }, { icon: 'mdi:image-multiple-outline', kind: 'fix', text: '「业务场景」添加末级分类时弹窗卡顿问题:点击确认后立即关闭弹窗,新增分类以旋转加载图标占位显示在 tag 区,后台异步加载字段数据;加载完成自动更新为正常 tag,加载失败变红色并可手动移除;加载期间保存按钮禁用并提示"分类正在加载中"。', }, ], }, { date: '2026-05-07', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「页签」字段网格每列最小宽度由 190px 调整为 240px:1920 屏从 6 列缩为 5 列(每列约 260px),2560 屏从 8 列缩为 7 列(每列约 252px),字段卡片整体更宽,公式/数据字段不再显得过于紧凑。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「页签特征属性」每个「必填」属性新增显隐规则设置:可为必填开关本身配置条件,满足规则时才展示该必填约束,灵活支持条件必填场景。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「页签特征属性」数字特征新增「输入」与「范围」两种模式选择;「数字使用」侧也同步添加模式切换,可在单值输入与区间范围之间切换。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「计算公式」编辑器新增「/」(除法)运算符与「,」(逗号,用于多参数函数)两个按钮,补全常用符号集。', }, { icon: 'mdi:account-group-outline', kind: 'change', text: '「创建用户」弹窗移除若干冗余字段,表单更精简;仅保留必要信息,减少填写负担。', }, { icon: 'mdi:finance', kind: 'change', text: '「财务属性」页面 UI 调整优化,布局与视觉细节更新。', }, { icon: 'mdi:office-building-outline', kind: 'change', text: '「部门管理」全面重构为飞书风格三列布局:左侧部门树、中间角色列表、右侧人员列表,列宽均可左右拖拽调整并持久化;根部门节点行内新增「+ 子部门」快捷入口;角色操作(权限配置/编辑/删除)改为 hover 三点菜单,角色名称不再被按钮截断。', }, ], }, { date: '2026-05-06', items: [ { icon: 'mdi:office-building-outline', kind: 'add', text: '「组织管理」全面重构:新增组织分类 CRUD(分类列表、新建/编辑/删除),以无边框表格展示;分类行可展开查看该分类下的组织列表,支持新增/编辑/删除组织;组织类型与组织性质改为固定选项下拉;分类描述改为名称后的气泡 tooltip。', }, { icon: 'mdi:office-building-outline', kind: 'add', text: '「组织管理」分类与组织侧「票据」增强:分类可维护可收/可开票据类型(多选子弹窗,随 classify/modify 提交);组织编辑支持按分类继承勾选进项/销项票据,保存时调用 link_bill / unlink_bill;移除组织弹窗内旧版手动关联票据区块;组织类型/性质列显示字典 label,印花税率等单位与展示优化。', }, { icon: 'mdi:finance', kind: 'change', text: '「财务属性」统计、列标题、表单与提示中「出项票据」统一改为「销项票据」。', }, { icon: 'mdi:file-document-edit-outline', kind: 'change', text: '「辅助核算」原「费用项目」:路由标题与页面文案统一更名(`/base/expense-item` 等)。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」不参与场景 checkbox 的 tooltip 修正为「不出现在物料场景选择列表」;物流费率组更名校验对接接口,树节点标签显示「物流费率组」。', }, { icon: 'mdi:account-group-outline', kind: 'add', text: '「员工管理」学历(education)、职业性质(job_nature)走接口顶层字段;学历/职业性质下拉与列表列、编辑表单、hover 卡片、详情抽屉同步;列表删除「职务」列。', }, { icon: 'mdi:message-outline', kind: 'fix', text: '「IM」HTTP 直发文本后会话预览 latestMsg 带正确 contentType,列表不再误显「[语音]」;合并会话列表时按时间戳防护旧预览覆盖新数据。', }, { icon: 'mdi:message-outline', kind: 'fix', text: '「IM」打开会话若首屏消息为空,约 2.5s 自动重试拉取历史,缓解 SDK 尚未同步导致的空白。', }, { icon: 'mdi:message-outline', kind: 'add', text: '「IM」刷新页面或仅持有效 token 进入系统时,路由守卫会触发 ensureOpenIMConnected:自动对齐 imToken 并 initIM,无需再走登录页才会连接聊天。', }, { icon: 'mdi:message-outline', kind: 'fix', text: '「IM」已读:markConversationMessageAsRead 传入会话 ID 字符串(@openim/client-sdk 3.8.x);已读到最新时 SDK 提示 hasReadSeq equal max 不再刷屏 console.warn。', }, { icon: 'mdi:calculator-variant', kind: 'fix', text: '「会计科目」树形视图 起始标签补全闭合(default-expand-all 后补 >),修复进入页面模板编译失败。', }, ], }, { date: '2026-05-05', items: [ { icon: 'mdi:office-building-outline', kind: 'add', text: '「组织管理」编辑组织时支持关联票据:进项/销项票据分两栏展示,可搜索关联新票据、切换启用/停用状态、移除关联;关联票据以标签形式显示在组织列表行内。', }, { icon: 'mdi:office-building-outline', kind: 'fix', text: '「组织管理」修复展开分类时重复加载闪烁问题:已加载过的分类不再重复请求,展开区新增刷新按钮手动触发重新拉取;加载遮罩显示「加载中…」文字。', }, { icon: 'mdi:finance', kind: 'add', text: '「财务属性」新增入口层:进入页面先展示卡片列表(「各类型成本/费用额定增值税率」),点击卡片进入原票据管理详情;路由标题由「票据管理」改为「财务属性」,图标同步更新;卡片阴影风格与「页签管理」一致,面包屑支持返回。', }, { icon: 'mdi:bullseye-arrow', kind: 'add', text: '「OKR」KR 下新增协作步骤:每个 KR 可拆分多个步骤(标题/描述/截止日期/状态),每步可指派协作人;OKR 目标详情抽屉内展示步骤卡片,支持新增、编辑(含标题/描述/协作人/截止日期)、删除、状态切换;KR 行显示步骤进度徽章(已完成 / 总步骤)。', }, { icon: 'mdi:key-variant', kind: 'add', text: '「KR 关键结果」新增「我参与的」视图 Tab:切换后展示本人被指派的所有步骤,显示步骤状态、描述、所属 KR 与目标、截止日期;步骤状态色块直观区分待办/进行中/已完成。', }, { icon: 'mdi:message-outline', kind: 'change', text: '「IM 聊天」注释所有调试日志([IM] / [Socket] / [preview] 前缀),保留 warn/error 级别提示,控制台不再输出大量正常流程日志。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签管理」「页签搭建(TabBuilder)」字段卡片重名提示:除红框外增加「⚠ 重名」徽标,悬停说明区分「模板内同名字段 / 与其他页签冲突 / 当前区域重复」;明细/表格卡片底部同样展示;修复模板中对 ref 误写 `.value` 导致保存闪红不生效的问题。', }, { icon: 'mdi:key-variant', kind: 'fix', text: '「Objective 目标」「KR 关键结果」KR 行进度条与百分比改为使用统一的 `kr.progress`(与 `calcKrProgress` 一致),修复「数值越小越好」类 KR(如首屏秒数降至目标)误用 current÷target 被截成 100% 的问题;KR 详情保存时自动回写 progress。', }, { icon: 'mdi:book-open-variant', kind: 'fix', text: '「OKR 复盘」Pinia 数据中复盘负责人随关联目标一并重映射为真实用户;`owner` 重映射改为只替换仍不在用户表中的假码,避免刷新后手工修改的负责人被整表覆盖。', }, { icon: 'material-symbols:home', kind: 'change', text: '「顶部页签」关闭规则调整:仅「首页」(路由名 Index)固定不可关闭,其余页面均可关闭;新增 `isTabClosableRouteName` 统一路由与菜单 `addTab` 逻辑,路由表不再逐项配置 `meta.noClosable`;已打开的页签在再次导航时会同步刷新 `closable` 状态。', }, ], }, { date: '2026-05-04', items: [ { icon: 'mdi:key-variant', kind: 'fix', text: '「KR 关键结果」列表排版再优化:周期列压缩至 44px、部门列压缩至 52px(内容居中),节省出的空间补充给进度(162px)和截止日期(118px),右侧不再拥挤。', }, { icon: 'mdi:bullseye-arrow', kind: 'fix', text: '「OKR 全局」修复下拉框选中后内容不显示的问题:全局样式 overflow:hidden 仅对含 el-tag 的多选框生效,不再裁切单选框的选中文字;部门下拉 label 同步兼容 full_name / dept_name 双字段。', }, { icon: 'mdi:book-open-variant', kind: 'fix', text: '「OKR 复盘」负责人显示修复:getUserInfo 增加 fallbackName 参数,在真实用户列表中找不到匹配时直接展示复盘记录原始 owner_name;MOCK_REVIEWS 在 mockGetUsers 拉取真实用户后同步更新 owner_code / owner_name / dept_name,与目标负责人保持一致。', }, ], }, { date: '2026-05-03', items: [ { icon: 'mdi:message-outline', kind: 'add', text: '「IM 聊天」群组邀请改为需被邀请人同意:inviteToGroup 不再直接调 Admin API 加人,而是向每位被邀请人发送 [GROUP_INVITE]: 特殊消息;被邀请人在聊天气泡中点"同意"后方通过 Admin API 真正入群,点"拒绝"则回复拒绝通知,群主可在状态 map 中查看结果。', }, { icon: 'mdi:message-outline', kind: 'add', text: '「IM 聊天」新增查看群成员功能:群聊头部增加成员按钮,点击弹窗展示全部成员列表(群主/管理员/普通成员分级标注),修复 getGroupMembers 接口返回层级错误的问题。', }, { icon: 'mdi:bullseye-arrow', kind: 'change', text: '「OKR 目标 / 关键结果」接入真实用户与部门数据:mockGetUsers / mockGetDepts 优先调用 /api/user/listed 与 /api/dept/listed,成功后覆盖本地 mock 数据,OKR 列表中负责人显示真实姓名,部门显示真实名称。', }, { icon: 'mdi:bullseye-arrow', kind: 'change', text: '「OKR」进度计算改为 current_value / target_value,进度条与文字均以此为准;单位 "s" 改为 "秒"、"h" 改为 "小时";进度文字区增加次要行显示实际值/目标值。', }, { icon: 'mdi:flag-checkered', kind: 'change', text: '「Objective 目标列表」排版优化:col-summary 改为 flex 行 + 右侧渐变遮罩展示 KR 概要 chips;progress-wrap 间距收紧;col-summary padding-left 加大;负责人/部门列宽重新分配,整体更紧凑。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签管理」保存时新增同 scope 内重名字段检测:点击「确认保存」若同一分组内有重名字段,对应字段卡片立即亮起红色边框(1.8 秒后自动淡出),并弹出 warning 提示;修复原先保存成功但用户无法感知重名问题的缺陷。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签管理 / 物料分类」修复打开编辑弹窗后页面崩溃白屏的问题:冲突标签检测计算属性加 try/catch 兜底返回空 Set,模板中 .has() 调用加可选链 ?.,防止 undefined 导致组件更新异常。', }, { icon: 'mdi:message-outline', kind: 'change', text: '「IM 聊天」右侧悬浮按钮高度从 80px 缩小至 52px,宽度从 40px 缩小至 36px,视觉更紧凑不遮挡内容。', }, ], }, { date: '2026-05-02', items: [ { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」适配服务端新引用数据格式:links 由扁平数组升级为 { tab, category } 分组对象,前端自动拍平并以蓝色(页签)/ 橙色(分类)标签区分来源展示。', }, { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」隐藏每行的「字典 / 自定义」来源标签(source 字段含义已随接口升级变更,旧标签不再适用)。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「选配管理」修复选项改名后显隐规则失效的问题:原 v-model 直接修改选项文本,导致 optionLinks 中对应 key 变成孤儿;现改为 renameOption 处理,改名时同步迁移 optionLinks 键名与默认值。', }, ], }, { date: '2026-05-01', items: [ { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」自定义页签支持「升级为页签」:用户点击升级后弹确认框,检测页签管理中有无同名页签(有则拦截提示改名),检查专属分组是否存在(不存在则先创建分类再建页签,已存在则直接创建),升级完成后当前分类中该自定义页签自动转为指向新页签的「导入引用」。', }, { icon: 'mdi:shape-outline', kind: 'add', text: '「特征列表」新增「新建特征」功能:选中具体分类后,右侧内容区顶部出现「新建特征」按钮,填写 key 后即可在该分类下创建特征。', }, { icon: 'mdi:shape-outline', kind: 'add', text: '「特征列表」每行新增「编辑」按钮(橙色)和「删除」按钮(红色),可直接修改特征 key 或删除特征;「···」菜单同步提供「修改 Key」和「删除特征」入口;删除时若有引用会额外提示。', }, { icon: 'mdi:shape-outline', kind: 'change', text: '「特征列表」切换分类后刷新页面可恢复上次选中的分类(持久化到本地存储),子分类会自动展开父节点。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」修复勾选「是否是物流费率组」等 checkbox 后「确认」按钮不变蓝的问题(快照在异步加载完成前已被用户修改导致脏检测失效)。', }, { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」新增「是否是物流费率组」标记继承:父类勾选后子类自动继承,分类树同步显示「费率组」标签;子类打开时该 checkbox 禁用并提示「继承自祖先分类,不可取消」。', }, ], }, { date: '2026-04-30', items: [ { icon: 'mdi:tag-multiple', kind: 'change', text: '多处页面 UI 细节优化与数据处理改进。', }, ], }, { date: '2026-04-28', items: [ { icon: 'mdi:shape-outline', kind: 'add', text: '「特征列表」新增左侧分类树:支持创建/编辑/删除两级分类,点击分类仅显示该分类下的特征;底部「未分类」入口汇总所有未归类特征。', }, { icon: 'mdi:shape-outline', kind: 'add', text: '「特征列表」新增归类操作:卡片底部「归类」按钮可单独归类;勾选多个特征后顶部出现「批量归类」按钮;卡片右上角「···」菜单也提供「移动到…」入口。', }, { icon: 'mdi:cog-outline', kind: 'add', text: '新增「配置项管理」页面:支持根分类横向页签 + 子分类左侧树 + 配置卡片网格布局;卡片展示 key(橙色)、value(蓝底等宽字体)和描述;支持搜索、新增、编辑、删除。', }, { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签管理 / 页签构建器」修复点击字段时误触发校验提示的问题;key 字段改为打开抽屉后异步加载(显示「加载中…」);修复 API 回填 key 后误触发"有未保存改动"弹窗的问题。', }, ], }, { date: '2026-04-27', items: [ { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料列表 / 选配管理」修复选配数据存储路径:选配配置现统一存入第一个分类的 fields.__asm_manage__ 字段,打开编辑时正确回填。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「选配管理」组件库去除"多行文本";新增数字默认值输入;下拉/单选/多选框支持勾选默认值;文本和计算公式字段支持设置显隐规则;移除所有字段的"必填"开关。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「选配管理」修复组件拖入后从库中消失的问题(组件库支持多次复用);修复默认值和交互值未正确保存/恢复的问题。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「选配管理」视图模式重排版:每个字段独立成块,控件居左,关联字段以网格多列展示;单选/多选选项强制单行横排。', }, ], }, { date: '2026-04-24', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'fix', text: '「页签构建器 / 页签管理」明细表格列交互修正:列只能通过点击右下角「+ 添加列」按钮添加,禁止从左侧控件列表拖入(防止误操作);已有列之间仍可拖拽排序。', }, { icon: 'mdi:view-dashboard-outline', kind: 'change', text: '「页签构建器 / 页签管理」明细表格列区域提示优化:「+ 添加列」提示文字改为醒目橘色,并补充说明「列只能点击添加,不支持从左侧拖入」,始终可见(不限于无列时)。', }, ], }, { date: '2026-04-23', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「物料分类 / 页签管理」页签构建器实时重名检测:当前页签内的字段名与其他页签冲突时,卡片立即显示红色边框提示,无需等到点保存才发现。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」确认按钮视觉优化:刚打开分类时按钮呈灰色(无改动),修改任何内容后变为蓝色,保存成功后恢复灰色;按钮始终可点击,灰色仅为视觉提示。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」跳转到其他页面不再弹"有未保存改动"确认框;页面已 keep-alive 缓存,离开再回来数据仍在,可继续编辑保存。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」切换分类未保存检测范围扩展,现可感知描述、仓库管理、特征关联等字段的变化,不仅限于属性页签内容。', }, ], }, { date: '2026-04-22', items: [ { icon: 'mdi:lan-connect', kind: 'add', text: '新增 WebSocket 实时连接:登录后自动建立连接,每秒发送心跳;断线后 3 秒自动重连;已有 token 直接进入系统时同样自动连接,主动退出登录时断开。', }, { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」选配关联追加选项展示优化:同一来源物料的选项在下拉框中横排显示为一行,不同物料另起一行,并以方形标签标注来源物料名称,一目了然。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」多选字段自动占位优化:若最长两个选项字数之和超过 10 字,该字段自动扩展为双列宽度,避免选中标签被截断。', }, { icon: 'mdi:tag-multiple', kind: 'add', text: '「物料分类」特征关联配置增加文字提示:英文键标注"被关联特征",中文名标注"关联选项名称"并以橘色显示,方便测试人员快速识别字段用途。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「物料分类 / 物料列表」仓库管理页签只显示父仓库,隐藏子仓库,简化仓库选择操作。', }, ], }, { date: '2026-04-20', items: [ { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」特征信息页签单选框/多选框:原有选项显示实心圆、装配关联追加选项显示空心圆,两者一目了然;原有选项横排、追加选项各占独立行。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」单选框字段选项序列化缺陷修复:之前 radio 类型的 options 数组未写入保存数据,导致子类继承后选项显示为空;现已对齐 select / checkbox 的序列化逻辑。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」打开单选框字段抽屉时,若已有选项仅存于 optionsRaw,现可自动还原为编辑列表,不再显示「暂无选项」。', }, ], }, { date: '2026-04-19', items: [ { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「物料场景」新建场景时支持上传封面图;详情页增加封面预览区与一键更换入口,封面完整存储为资产对象。', }, { icon: 'mdi:image-multiple-outline', kind: 'add', text: '「物料场景」点击二级分类后右侧以卡片墙形式展示场景列表;卡片采用 2:1 宽幅比例,封面铺满背景,场景名叠加左上角。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「物料场景」关联分类与关联组织标签区各自独立限高滚动,添加按钮固定在标题行,不再因内容过多遮挡其他区域。', }, { icon: 'mdi:image-multiple-outline', kind: 'change', text: '「物料场景」分类属性字段改为按需精准加载,选中分类后即时拉取完整页签配置,首选 / 公共 / 专有属性展示更准确。', }, ], }, { date: '2026-04-18', items: [ { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」选配与适配关系弹窗新增分类名称展示,每条物料同时呈现所属分类,选配更直观准确。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」选配/适配接口参数升级为 category_code + goods_code 组合键,与后端 /goods/add_adapter 完全对齐。', }, { icon: 'mdi:format-list-bulleted', kind: 'change', text: '「物料列表」选配关联与适配关联页签内容区改为等宽四列网格居中布局,视觉层次更清晰。', }, { icon: 'mdi:tag-multiple', kind: 'fix', text: '「物料分类」子分类继承页签中「特征选择」控件的可选列表现已正确沿祖先链合并 adapter 数据,不再出现选项为空的情况。', }, ], }, { date: '2026-04-17', items: [ { icon: 'mdi:table-large', kind: 'add', text: '「多维表格」新增直接查表模式(lookupConditions + lookupAggregate),无需关联列即可跨表聚合引用数据。', }, { icon: 'mdi:table-large', kind: 'add', text: '「多维表格」单选 / 多选列支持绑定字典(dictKey),单元格存储字典编码,展示自动转译为中文标签。', }, { icon: 'mdi:shield-account-outline', kind: 'change', text: '「权限」页面级增删改查权限与 leader_level=99 超级管理员绑定完善,仓库子仓随父仓权限同步展示。', }, ], }, { date: '2026-04-16', items: [ { icon: 'mdi:table-large', kind: 'add', text: '「多维表格」列头菜单支持升序/降序排列;新建关联动态表列时自动在目标表生成反向关联列。', }, { icon: 'mdi:tag-multiple', kind: 'change', text: '「物料分类」特征类字段(来源为特征库)保存时单独写入 adapter 字段,便于后端检索与视图。', }, { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「布局」左下角版本号可点击打开更新说明;更新说明支持按日分组的时间轴展示。', }, { icon: 'mdi:package-variant-closed', kind: 'fix', text: '「构建」权限 store 与 power 模块循环依赖导致的 Vite 打包告警已消除。', }, ], }, { date: '2026-04-15', items: [ { icon: 'mdi:format-list-bulleted', kind: 'add', text: '「物料列表」适配关系保存与 /goods/add_adapter 参数格式对齐(category_code + goods_code)。', }, { icon: 'mdi:table-large', kind: 'change', text: '「多维表格」筛选条件与列隐藏逻辑微调,减少误触。', }, { icon: 'mdi:format-list-bulleted', kind: 'fix', text: '「物料详情」部分场景下关联展示字段为空的问题已修复。', }, ], }, { date: '2026-04-14', items: [ { icon: 'mdi:view-dashboard-outline', kind: 'add', text: '「页签管理」引入页签模板时增加重复字段名校验提示。', }, { icon: 'mdi:warehouse', kind: 'change', text: '「仓库管理」列表默认排序与筛选文案统一。', }, { icon: 'mdi:table-large', kind: 'fix', text: '「多维表格」关联列在目标表未加载完成时偶发空白标签的问题已处理。', }, { icon: 'mdi:table-large', kind: 'add', text: '「多维表格」公式列保存时同步写入 cells,便于他表查找引用展示。', }, ], }, { date: '2026-04-13', items: [ { icon: 'mdi:account-group-outline', kind: 'change', text: '「员工管理」表格列宽与移动端侧栏折叠交互优化。', }, { icon: 'mdi:file-document-outline', kind: 'add', text: '「更新说明」数据改为本地维护文件 src/data/appChangelog.js,发版随构建更新。', }, { icon: 'mdi:login-variant', kind: 'fix', text: '「登录」极窄屏下表单底部按钮被遮挡的问题已修复。', }, ], }, ]