From 704c3093d729b40097715c2f3b1ea0bd89a98edd 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 20:05:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(project-apply):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86=E8=A1=A8=E5=8D=95=E5=8F=8A?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 项目编号放开编辑,新增时可输入,编辑时禁用 - 取消项目简称的必填校验,仅限制最大长度20 - 业务部门、项目由来说明表单项占满一行,优化布局 - 业务部门下拉增加过滤,重大项目补录模式不显示外部组织 - 新增变更编号及变更日期字段,关联变更类型显示 - 搜索栏将项目负责人由下拉切换为手动输入模糊查询 - 新增项目编号、客户名称、下游承运商三个搜索字段 - 清理无用的搜索工具函数和配置,优化代码结构 --- .workbuddy/memory/2026-08-27.md | 102 +++------------------------ src/option/business/project-apply.js | 8 +-- src/views/business/project-apply.vue | 40 +++++++++-- 3 files changed, 45 insertions(+), 105 deletions(-) diff --git a/.workbuddy/memory/2026-08-27.md b/.workbuddy/memory/2026-08-27.md index 00f79ae..620ed77 100644 --- a/.workbuddy/memory/2026-08-27.md +++ b/.workbuddy/memory/2026-08-27.md @@ -1,98 +1,12 @@ # 2026-08-27 工作日志 -## 全站底部操作栏「返回」按钮统一改为「取消」 -- 起因:用户访问 `/vehicle/customer-archive/form` 独立表单页,指出底部「返回」按钮应全站统一为「取消」。 -- 改动文件(模板/逻辑中的「返回」→「取消」): - - `src/views/vehicle/customer-archive.vue`:主表单页 footer 逻辑 `readonly ? '关闭' : isArchivePage ? '返回' : '取消'` → `readonly ? '关闭' : '取消'`;4 处子弹窗(contact/receipt/invoice/score)`>返回` → `>取消`(replace_all)。 - - `src/views/payment/invoice-receipt-form.vue`、`payment-application-form.vue`、`payment/payment-application-form.vue`:`goBack` 返回按钮 →「取消」。 - - `src/views/business/components/master-order-editor.vue`、`master-order-dispatch.vue`、`master-order-detail.vue`:`$emit('back')` 返回按钮 →「取消」。 - - `src/views/business/components/business-crud-page.vue`:运输计划导入弹窗关闭按钮 →「取消」。 - - `src/views/system/user.vue`:用户弹窗关闭按钮 →「取消」。 - - `src/views/business/project-apply.vue`:独立表单页(isProjectFormPage)`closeProjectForm` 返回按钮 ×2 →「取消」。 -- 未改动:`src/lang/zh.js` 登录 i18n 段 `back: '返回'`(无 `$t('back')` 引用,属登录流程返回,非业务 footer 操作栏)。 -- 规范固化:更新 MEMORY.md「弹窗 / 独立表单页底栏按钮统一规则」,明确全站底部操作栏「返回」统一为「取消」,仅只读查看 / 纯关闭场景保留「关闭」。 +## project-apply 表单 UI 调整(新增 / 重大项目补录) +文件:`src/views/business/project-apply.vue` -## 发货模板独立表单页(shipping-template/form)footer 缺「取消」+ 去图标 -- 起因:用户访问 `/business/shipping-template/form?mode=add`,指出底部按钮缺「取消」且不需要图标(统一只要文字)。 -- 该页极薄,仅 ``,footer 由 `business-crud-page.vue` 的 `PageAvueForm` 渲染。 -- 改动(`src/views/business/components/business-crud-page.vue`): - - `#menu-form-before` 次要按钮 `关闭` → `取消`(条件 `isStandaloneFormPage && !showTransportPlanCreateActions`),影响 `/waybill-manage/form`、`/transport-plan/form`、`/shipping-template/form` 三处独立表单页。 - - `#menu-form` 的运输计划创建模式次要按钮 `关闭` → `取消`。 - - 新增样式 `:global(.business-crud-form-page-dialog .avue-form__menu .el-icon){display:none}`:Avue 的 `avue-form` 提交/清空按钮内置图标(`submitIcon:'el-icon-check'`、`emptyIcon:'el-icon-delete'`),且 Avue 源码用 `||` 兜底无法通过 option 去除,故用 CSS 在独立表单页容器内统一隐藏图标,仅保留文字,不影响其它弹窗。 -- 规范固化:MEMORY.md「弹窗 / 独立表单页底栏按钮统一规则」补充「独立表单页 Avue 表单 footer 去图标(统一纯文字)」说明。 +按截图需求修改项目管理表单(新增 + 重大项目补录同步): +1. 项目编号放开编辑(去掉 `disabled`),placeholder 改为"请输入项目编号,不填自动生成";编辑模式仍禁用。 +2. 项目简称取消必填校验(仅保留 maxlength 20)。 +3. 业务部门、项目由来说明单独占一行(新增 class `project-apply-form__item--full` + 样式 `grid-column: 1 / -1`)。 +4. 业务部门下拉过滤"外部组织":原仅 `['add','edit']` 过滤,已补上 `majorSupplement`,重大项目补录不再显示外部组织。 -## 底部操作栏按钮间距统一去 gap -- 起因:用户指出这些底部按钮间距不一致,要求统一,并把用了 `gap` 的全部去掉。 -- 方案:所有底部操作栏(footer / `__actions` / `page-actions`)**移除 `gap`**,间距统一回落到 Element Plus 全局默认的相邻按钮 `.el-button+.el-button{margin-left:12px}`(恒为 12px),不再散落 `gap:8/12/16px`。 -- 全局对齐:`.el-dialog__footer .el-button + .el-button` 由 `margin-left:8px` 改为 `12px`(`src/styles/element-ui.scss`),使弹窗 footer 也与之一致。 -- 已去 gap 的 footer 容器:`vehicle/customer-archive.vue`(`.archive-form__footer`)、`business/components/master-order-editor.vue`(`footer`)、`business/components/master-order-dispatch.vue`(`.segment-actions`/`.pending-actions`)、`business/project-apply.vue`(`.project-apply-dialog__footer`)、`business/components/business-crud-page.vue`(`.business-crud-form-page-dialog .avue-form__menu`)、payment 6 个表单页(`*__actions`)、`settlement/components/pre-settlement-editor.vue`(`&__page-actions`)、`settlement/components/formal-settlement-editor.vue`(`.formal-editor__page-actions`)、`settlement/receivable-payable-detail.vue`(`.settlement-detail-page__actions`)。 -- 风控:确认 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 `