From 58abe5ebdff2565580608ea0db2cc23a722f7544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 27 Aug 2026 17:34:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(vehicle):=20=E5=B0=86=E5=AE=A2=E5=95=86?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=90=9C=E7=B4=A2=E5=8C=BA=E6=89=80=E5=B1=9E?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=94=B9=E4=B8=BA=E6=A0=91=E5=BD=A2=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 搜索区所属组织从扁平 select 切换到多选树形下拉,保持后端字段不变 - 使用 Vue3 h 函数动态渲染 element-plus ElTreeSelect 组件,支持多选和折叠标签 - 修复 Vue 渲染字符串组件名导致控件无法显示的问题,改为直接导入组件对象 - 解决多选模型值写为字符串导致选中失效的状态管理问题,保持 modelValue 为 ID 数组 - 在搜索变更回调中将部门 ID 数组转换为部门名称逗号拼接 --- .workbuddy/memory/2026-08-27.md | 17 ++++++++++ src/styles/element-ui.scss | 7 ++++ src/views/vehicle/customer-archive.vue | 45 ++++++++++++++++++++------ 3 files changed, 59 insertions(+), 10 deletions(-) diff --git a/.workbuddy/memory/2026-08-27.md b/.workbuddy/memory/2026-08-27.md index ee5c31c..facc5bd 100644 --- a/.workbuddy/memory/2026-08-27.md +++ b/.workbuddy/memory/2026-08-27.md @@ -29,6 +29,23 @@ - 风控:确认 Avue 的 `.avue-form__menu`/`.avue-dialog__footer` 自身不带按钮间距,去掉 gap 后由 EP 默认 12px margin 接管(不会贴死)。 - 范围说明:本次聚焦近几轮在统一的模块(vehicle/payment/business/settlement)。若要把 loading-manage、contract-manage、transit 等其它模块的底部栏也纳入,需再处理。 +## 客商档案搜索区「所属组织」从扁平下拉改为树形下拉 +- 起因:用户截图 `/vehicle/customer-archive` 搜索区,指出「所属组织」是扁平下拉,要求统一按新增/编辑表单(多选 `el-tree-select`)实现。 +- 原 column 配置:`prop: 'deptName'` + `search: true` + `searchType: 'select'` + `dicData: [{label:'全部',value:''}, ...flattenDept]`,initDeptTree() 异步把 dicData 写回 column(数据已加载,只是渲染风格不一致)。 +- 改动: + - column 移除 `searchType: 'select'`、`searchValue: ''`、`dicData`,仅保留 `search: true, searchOrder: 1`。 + - `initDeptTree()` 中改写 `deptColumn.renderSearch = scope => this.renderDeptSearch(scope)`。 + - 新增 `methods.renderDeptSearch(scope)`:通过 `vue` 的 `h` 函数返回一个 `el-tree-select` vnode(多选 + check-strictly + 树形 + 折叠 tag + 全宽),onUpdate 时把 ID 数组按 `deptOptions` 查 rawLabel,逗号拼接写入 `scope.row.deptName`(即 searchForm.deptName),保持后端接口字段不变。 + - `searchChange/searchReset` 链路无需改:`onLoad` 已通过 `query` 透传 deptName 到后端。 + - `src/styles/element-ui.scss` 新增 `.avue-crud__search .el-form-item__content > .el-tree-select { width:100%; max-width:100%; }`:搜索区树形下拉全宽兜底,不影响新增/编辑表单(用 `el-col :span=6` 栅格自然分开)。 +- 方案说明:Avue-crud 搜索 form-temp 内部 render 函数支持 column.renderSearch 自定义渲染(`header-search2.mjs` 行 93 `render: ele.renderSearch`),不需要重写整个搜索区;自定义 slot `