From 73b15e2a8341073e1f2d095002f6c63e13ecae27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 21 Aug 2026 11:53:44 +0800 Subject: [PATCH 1/8] =?UTF-8?q?style(customer-archive):=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=A1=A8=E5=8D=95=E9=A1=B9=E3=80=81=E9=A1=B5=E8=84=9A?= =?UTF-8?q?=E5=92=8C=E5=88=97=E7=9A=84=E9=97=B4=E8=B7=9D=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 archive-form__footer 页脚布局间距和定位样式 - 去除 .el-col 底部默认外边距,防止多余间距 - 注释掉 element-ui.scss 中 el-form-item 的 margin-bottom 样式,避免样式冲突 --- src/styles/element-ui.scss | 6 +++--- src/views/vehicle/customer-archive.vue | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss index 801e08b..debe6ad 100644 --- a/src/styles/element-ui.scss +++ b/src/styles/element-ui.scss @@ -989,6 +989,6 @@ .el-form-item--default { margin-bottom: 14px; } -.el-form-item { - margin-bottom: 14px; -} +//.el-form-item { +// margin-bottom: 15px !important; +//} diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue index e744ecc..4467bf6 100644 --- a/src/views/vehicle/customer-archive.vue +++ b/src/views/vehicle/customer-archive.vue @@ -4859,12 +4859,10 @@ export default { //padding: 20px 24px 92px; //background: #fff; } - .archive-form__footer { display: flex; justify-content: flex-end; gap: 12px; - .archive-page-form & { position: fixed; right: 0; @@ -4901,4 +4899,7 @@ export default { max-height: 72vh; overflow: auto; } +.el-col{ + margin-bottom: 0; +} From 037031b76c772aafad9f72ed88706e8cd5f81298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 21 Aug 2026 12:09:02 +0800 Subject: [PATCH 2/8] =?UTF-8?q?style(ui):=20=E7=BB=9F=E4=B8=80=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=A1=A8=E5=8D=95=E9=A1=B9=E5=BA=95=E9=83=A8=E9=97=B4?= =?UTF-8?q?=E8=B7=9D=E4=B8=BA14px?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 vehicle 下 credit-score-quantification 视图中多个 .el-form-item 的 margin-bottom 从18px调整为14px - 将 vehicle 下 customer-archive 视图中多个 .el-form-item 的 margin-bottom 从16px和18px调整为14px - 在 customer-archive 视图样式中新增 .el-form-item 使用 !important 设定 margin-bottom 为14px - 将 business 下 master-order-editor 组件中 .el-form-item 的 margin-bottom 从16px调整为14px --- src/views/business/components/master-order-editor.vue | 2 +- src/views/vehicle/credit-score-quantification.vue | 4 ++-- src/views/vehicle/customer-archive.vue | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue index 9af1cb4..eaf7cba 100644 --- a/src/views/business/components/master-order-editor.vue +++ b/src/views/business/components/master-order-editor.vue @@ -1748,7 +1748,7 @@ export default { font-size: 16px; } .el-form-item { - margin-bottom: 16px; + margin-bottom: 14px; } } .goods-heading { diff --git a/src/views/vehicle/credit-score-quantification.vue b/src/views/vehicle/credit-score-quantification.vue index 14ed7ee..e335097 100644 --- a/src/views/vehicle/credit-score-quantification.vue +++ b/src/views/vehicle/credit-score-quantification.vue @@ -1102,7 +1102,7 @@ export default { padding: 4px 0 6px; :deep(.el-form-item) { - margin-bottom: 18px; + margin-bottom: 14px; } :deep(.el-form-item__label) { @@ -1141,7 +1141,7 @@ export default { column-gap: 112px; :deep(.el-form-item) { - margin-bottom: 18px; + margin-bottom: 14px; } } } diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue index 4467bf6..180307e 100644 --- a/src/views/vehicle/customer-archive.vue +++ b/src/views/vehicle/customer-archive.vue @@ -4501,7 +4501,7 @@ export default { padding: 8px 36px 0; :deep(.el-form-item) { - margin-bottom: 18px; + margin-bottom: 14px; } :deep(.el-form-item__label) { @@ -4629,7 +4629,7 @@ export default { max-width: 620px; :deep(.el-form-item) { - margin-bottom: 16px; + margin-bottom: 14px; } :deep(.el-input) { @@ -4856,8 +4856,6 @@ export default { .archive-page-form { min-height: 100%; - //padding: 20px 24px 92px; - //background: #fff; } .archive-form__footer { display: flex; @@ -4902,4 +4900,7 @@ export default { .el-col{ margin-bottom: 0; } +.el-form-item { + margin-bottom: 14px !important; +} From 6989486d8a6f4ef07ef5aeb31401ecc52da8e5a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 21 Aug 2026 12:42:02 +0800 Subject: [PATCH 3/8] =?UTF-8?q?style(business):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E3=80=81=E7=BB=BC=E5=90=88?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=8F=8A=E5=BA=94=E4=BB=98=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一 business-crud-page 系列独立表单页标题显示,新增 contract-manage 支持 - 综合台账弹窗 vehicle-ledger/ship-ledger 中 el-table 移入各 tab-pane,调整蓝标内容为全局 section-card 组件 - 临时额度查看弹窗改为两列自定义详情显示,支持草稿态详情按钮显示 - 修复合同管理详情弹窗 label 对齐问题,增强 el-descriptions 表格宽度与标签样式 - contract-manage.vue 全局样式改为 scoped,消除全站弹窗样式污染 - 应付明细调整弹窗控件宽度撑满单元格,统一所有表头居中显示 - 移除 receivable-payable-detail 表格中部分列 align:right,避免内容截断 - 新增相应组件样式支持 :deep 选择器实现样式穿透,保证兼容性和维护性 --- .workbuddy/memory/2026-08-21.md | 32 +++++++++++++++++++ .workbuddy/memory/MEMORY.md | 3 +- src/option/business/temporary-credit-limit.js | 29 +++++++++++++++++ .../settlement/receivable-payable-detail.js | 29 +++++++++-------- .../components/business-crud-page.vue | 20 +++++++++++- src/views/business/contract-manage.vue | 8 ++--- .../settlement/receivable-payable-detail.vue | 26 +++++++++++++-- 7 files changed, 125 insertions(+), 22 deletions(-) diff --git a/.workbuddy/memory/2026-08-21.md b/.workbuddy/memory/2026-08-21.md index 3d66ae0..7b41714 100644 --- a/.workbuddy/memory/2026-08-21.md +++ b/.workbuddy/memory/2026-08-21.md @@ -58,3 +58,35 @@ - **loading-manage/form**:该路由直接映射到 `loading-manage.vue`(非 business-crud-page)。新增 computed `formPageTitle()`(`query.name || '新增/编辑配载管理'`),并在独立表单页的 `` 内、body 之前加 `
{{ formPageTitle }}
`。 - **master-order?mode=editor**:`master-order.vue` 渲染 `master-order-editor.vue`。将 `` 包进 ` - - - - - - + +
+ + + + + + + + + + + + + + + + + +
+ 默认 + + 天后完成运输 +
+
+
+ + + + + +
+
+
+ + +
+
+
+ +
{{ node.name }}
+
+
{{ text }}
+
+
+
+ +
+ + + + + + + + + + + + + + +
+ +
+ item.key === 'sign'); const returnNode = this.nodeRows.find(item => item.key === 'return'); @@ -914,14 +909,45 @@ export default { } ); }, - submitRow(row, done, loading, status = this.submitStatus) { - this.submitStatus = 1; - this.syncNodeFields(); - const submitRow = this.normalizeRow({ ...row, status }); - if (!this.validateRow(submitRow)) { - this.stopSubmitLoading(loading); + openConfig(row, readonly = false) { + this.dialogReadonly = readonly; + if (!row || !row.id) { + this.form = { + configName: '', + projectIds: '', + projectNames: '', + defaultFinishDays: '', + remark: '', + status: 0, + }; + this.selectedProjectId = ''; + this.resetNodeRows(); + this.configBox = true; return; } + api.getDetail(row.id).then(res => { + this.form = res.data.data || {}; + this.selectedProjectId = this.form.projectIds ? String(this.form.projectIds) : ''; + this.ensureSelectedProjectOption(); + this.parseNodeConfig(this.form); + this.configBox = true; + }); + }, + handleDialogClosed() { + this.submitting = false; + this.dialogReadonly = false; + }, + submitConfig(mode) { + if (this.submitting) return; + this.syncNodeFields(); + const submitRow = this.normalizeRow({ + ...this.form, + status: mode === 'draft' ? 2 : 1, + }); + if (!this.validateRow(submitRow)) { + return; + } + this.submitting = true; this.checkEnabledProjectBeforeSubmit(submitRow) .then(exists => { if (exists) { @@ -932,9 +958,9 @@ export default { .then(() => this.confirmDuplicateVoucher()) .then(() => api.submit(submitRow)) .then(() => { + this.configBox = false; this.onLoad(this.page); this.$message({ type: 'success', message: '操作成功!' }); - done(); }) .catch(error => { if ( @@ -944,21 +970,11 @@ export default { ) { window.console.log(error); } - this.stopSubmitLoading(loading); + }) + .finally(() => { + this.submitting = false; }); }, - rowSave(row, done, loading) { - this.submitRow(row, done, loading); - }, - rowUpdate(row, index, done, loading) { - this.submitRow(row, done, loading); - }, - handleProcessConfigSave(mode) { - this.submitStatus = mode === 'draft' ? 2 : 1; - if (this.$refs.crud && typeof this.$refs.crud.rowSave === 'function') { - this.$refs.crud.rowSave(); - } - }, rowDel(row) { this.$confirm('确定将选择数据删除?', { confirmButtonText: '确定', @@ -1001,35 +1017,6 @@ export default { } this.selectionClear(); }, - beforeOpen(done, type) { - this.dialogReadonly = type === 'view'; - this.submitStatus = 1; - if (type === 'add') { - this.form = { - configName: '', - projectIds: '', - projectNames: '', - defaultFinishDays: '', - remark: '', - status: 0, - }; - this.selectedProjectId = ''; - this.resetNodeRows(); - done(); - return; - } - if (['edit', 'view'].includes(type)) { - api.getDetail(this.form.id).then(res => { - this.form = res.data.data || {}; - this.selectedProjectId = this.form.projectIds ? String(this.form.projectIds) : ''; - this.ensureSelectedProjectOption(); - this.parseNodeConfig(this.form); - done(); - }); - return; - } - done(); - }, searchReset() { this.query = {}; this.applyDefaultDeptSearch(); @@ -1164,6 +1151,13 @@ export default { word-break: break-all; } + :deep(.avue-crud__header) { + margin-top: 12px; + background: transparent; + } +} + +.process-config-form { &__finish-days { display: flex; align-items: center; @@ -1174,10 +1168,6 @@ export default { } } - &__custom-form { - width: 100%; - } - &__timeline { position: relative; display: flex; @@ -1285,11 +1275,6 @@ export default { text-align: right; } - :deep(.avue-crud__header) { - margin-top: 12px; - background: transparent; - } - :deep(.el-table) { --el-table-border-color: #eff1f7; } diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue index 001484f..246e5bb 100644 --- a/src/views/business/project-apply.vue +++ b/src/views/business/project-apply.vue @@ -106,7 +106,7 @@ :model="form" :rules="formRules" label-position="right" - label-width="auto" + label-width="150" class="project-apply-form" :disabled="dialogReadonly" > @@ -1964,7 +1964,7 @@ export default { &__grid { display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); + grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; margin-bottom: 12px; @@ -1972,6 +1972,13 @@ export default { border-radius: 0 0 6px 6px; padding: 14px 16px 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); + + // label 固定宽度:可容纳 6 个汉字,超出自动换行(覆盖全局 min-width:160px 与 auto 行内宽度) + :deep(.el-form-item__label) { + width: 108px !important; + min-width: 0 !important; + white-space: normal; + } } &__picker-icon { diff --git a/src/views/business/voucher-manage.vue b/src/views/business/voucher-manage.vue index 353c10c..aa11d2e 100644 --- a/src/views/business/voucher-manage.vue +++ b/src/views/business/voucher-manage.vue @@ -364,7 +364,7 @@ :before-close="beforeProgressDialogClose" @opened="loadProgress" > - + - + - - + - + - + - +
- + - + - + - + - + - + - + @@ -676,10 +688,10 @@ export default { .overview-content { display: grid; grid-template-columns: minmax(400px, .9fr) minmax(620px, 1.6fr); gap: 28px; padding: 8px 24px 20px; } .overview-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 24px; margin: 0; dt { margin-bottom: 6px; color: #909399; font-size: 13px; } dd { margin: 0; color: #409eff; font-size: 14px; word-break: break-all; } } .overview-meta dd.overview-meta__plain-value { color: #303133; } -.route-overview { display: flex; align-items: flex-start; justify-content: flex-end; padding-top: 8px; overflow-x: auto; } -.route-overview__node { display: grid; flex: 0 0 130px; justify-items: center; gap: 6px; text-align: center; strong { font-size: 16px; white-space: nowrap; } small { color: #606266; white-space: nowrap; } } +.route-overview { display: flex; align-items: flex-start; justify-content: flex-start; padding: 8px 24px 0; overflow-x: auto; } +.route-overview__node { display: grid; flex: 0 0 auto; min-width: 130px; max-width: 200px; justify-items: center; gap: 6px; text-align: center; padding: 0 4px; strong { font-size: 16px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } small { color: #606266; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .route-badge { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border-radius: 4px; background: #67c23a; color: #fff; font-weight: 600; &.start { background: #409eff; } &.end { background: #e6a23c; } } -.route-overview__line { flex: 1 0 56px; min-width: 56px; height: 32px; margin-top: 0; border-bottom: 6px solid #e4e7ed; } +.route-overview__line { flex: 0 1 56px; min-width: 24px; height: 32px; margin-top: 0; border-bottom: 6px solid #e4e7ed; } .segment-header { min-height: 46px; padding: 0 20px; border-bottom: 1px solid #eff1f7; font-weight: 600; em { color: #409eff; font-style: normal; } } .segment-content { padding: 16px 24px; } .dispatch-form { :deep(.el-form-item) { margin-bottom: 16px; } :deep(.el-input), :deep(.el-select), :deep(.el-date-editor), :deep(.el-input-number) { width: 100%; } } @@ -704,4 +716,7 @@ export default { .table-actions { display: flex; flex-wrap: wrap; gap: 8px; } @media screen and (max-width: 1200px) { .overview-content { grid-template-columns: 1fr; } .route-overview { justify-content: flex-start; } } @media screen and (max-width: 992px) { .dispatch-bottom { left: 0; width: 100%; } } +.route-overview { + margin-top: -30px !important; +} diff --git a/src/views/transportCapacity/driver.vue b/src/views/transportCapacity/driver.vue index 637e874..84f2add 100644 --- a/src/views/transportCapacity/driver.vue +++ b/src/views/transportCapacity/driver.vue @@ -1601,5 +1601,7 @@ export default { color: #d40000; font-weight: 600; } - +.el-form-item { + margin-bottom: 14px !important; +} diff --git a/src/views/transportCapacity/ship.vue b/src/views/transportCapacity/ship.vue index 5e3f5bd..5d5f2d9 100644 --- a/src/views/transportCapacity/ship.vue +++ b/src/views/transportCapacity/ship.vue @@ -1374,4 +1374,7 @@ export default { color: #d40000; font-weight: 600; } +.el-form-item { + margin-bottom: 14px !important; +} diff --git a/src/views/transportCapacity/vehicle.vue b/src/views/transportCapacity/vehicle.vue index 8f5b810..934767d 100644 --- a/src/views/transportCapacity/vehicle.vue +++ b/src/views/transportCapacity/vehicle.vue @@ -1536,4 +1536,8 @@ export default { color: #d40000; font-weight: 600; } + +.el-form-item { + margin-bottom: 14px !important; +} From 5cf688bf062c4099b123c5bd2db9bdca6a24df6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 21 Aug 2026 16:29:44 +0800 Subject: [PATCH 8/8] =?UTF-8?q?fix(business-crud-page):=20=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=A4=9A=E8=A1=A8=E5=8D=95=E9=A1=B5=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6=E5=8F=8A=E5=9B=9B=E5=88=97=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化 business-crud-page.vue 中 buildFormGroupOption,抽取 setFourColumns 函数实现合同、发货模板、运输计划和运单管理表单统一四列展示 - 调整发货模板表单中的“模板信息”和“基本信息”两组列的 span 为 6,标签统一宽度为 100 像素,实现右对齐及超出换行 - 在 shipping-template.js、transport-plan.js、waybill-manage.js 中 labelWidth 设置为 100,覆盖 createCrudOption 默认的自动宽度,保证标签宽度一致 - 在 element-ui.scss 中新增发货模板、运输计划及运单管理弹窗标签换行样式,提升长标签显示效果 - 修正首次设置 labelWidth 为 100 写法错误,必须放在 createCrudOption 展开之后以覆盖默认值 --- .workbuddy/memory/2026-08-21.md | 17 +++++++++++++++++ src/option/business/shipping-template.js | 2 ++ src/option/business/transport-plan.js | 2 ++ src/option/business/waybill-manage.js | 2 ++ src/styles/element-ui.scss | 18 ++++++++++++++++++ .../business/components/business-crud-page.vue | 17 +++++++++++++---- 6 files changed, 54 insertions(+), 4 deletions(-) diff --git a/.workbuddy/memory/2026-08-21.md b/.workbuddy/memory/2026-08-21.md index 83d4200..27eec74 100644 --- a/.workbuddy/memory/2026-08-21.md +++ b/.workbuddy/memory/2026-08-21.md @@ -173,3 +173,20 @@ - 改动(`src/views/business/components/master-order-dispatch.vue` 模板,21-45 行):起/经、终节点各自的 strong(名称)+ 两个 small(地址、联系人)共 6 个文本元素分别用 `` 包裹,`:content` 与原文本一致;保持原有 `text-overflow:ellipsis` 截断视觉不变。 - `:show-after="120"` 让鼠标停留 120ms 才弹,避免快速划过连续触发多个 tooltip;`placement="top"` 配合节点垂直居中位置弹出,体验稳定。 - 风险:仅模板增加 6 个 el-tooltip 实例,无 JS/style 改动;与之前段头 `el-tooltip`(segment-checkbox-label)用法一致。 + +## shipping-template(发货模板)表单页:模板信息+基本信息 4 列 + label 统一宽度 +- 需求:`/business/shipping-template/form` 的「模板信息」「基本信息」两组改 4 列;左侧 label 宽度一致右对齐;全站统一(6 汉字宽、超出换行)。 +- 改动 3 处: + 1. `business-crud-page.vue` `buildFormGroupOption` 新增 `isShippingTemplatePage` 分支:对 groups[0](模板信息)、groups[1](基本信息)的非标题、非 span24 列设 `span:6`(该页分组:templateInfoTitle/basicInfoTitle/shippingInfoTitle/goodsInfoTitle/attachmentTitle 均已在 sectionTitleProps,发货信息及之后组保持原样)。 + 2. `src/option/business/shipping-template.js`:option 顶层加 `labelWidth: 100`(覆盖 createCrudOption 的 'auto',全表单 label 一致 100px;右对齐已由 labelPosition:'right' 保证)。 + 3. `src/styles/element-ui.scss` `.shipping-template-dialog .el-form-item__label { white-space: normal; line-height: 20px }`(长 label 换行,独立表单页容器也是 div.shipping-template-dialog,class 命中)。 +- 模式沉淀:contract(isContractConfig 首组)/ shipping-template(前两组)都走 buildFormGroupOption 统一处理;普通 el-col 循环页直接改 span;CSS grid 页改 repeat 数 + label 规则。4 列=span 6,6 汉字=100px。 + +## transport-plan / waybill-manage 表单页:整表单 4 列 + label 统一(全站统一) +- `business-crud-page.vue` `buildFormGroupOption` 重构:抽取 `setFourColumns(group)` helper(非标题、非 span24 列设 span:6);contract→首组、shipping-template→前两组、transport_plan/waybill_manage→**所有分组**统一 4 列(这两页很多字段无显式 span 会落到 Avue 默认 12=2 列,是之前不 4 列的原因)。 +- `waybill-manage.js` option 加 `labelWidth:100`(transport-plan.js 上轮已加);element-ui.scss 追加 `.waybill-manage-dialog .el-form-item__label` 换行规则(transport-plan-dialog 上轮已加)。 +- 经验:Avue 表单「没 4 列」先查是否有字段漏设 span(默认 12);统一 4 列优先走 buildFormGroupOption 的页面级分支,避免逐个字段改。 + +## ⚠️ option.labelWidth 必须放在 createCrudOption 展开之后 +- 第一次给 transport-plan.js、waybill-manage.js 加 `labelWidth: 100` 时写在 `...createCrudOption(...)` **之前**,被 createCrudOption 自带 `labelWidth: 'auto'` 覆盖,label 仍是 auto(按内容参差,看着像"150 不统一")。shipping-template 当时写在 createCrudOption 之后才生效。 +- 教训:业务 option 文件顶层 `export const option = { labelWidth: 100, ...createCrudOption([...]) }` 写法**无效**,必须 `export const option = { ...createCrudOption([...]), labelWidth: 100, dialogWidth, ... }` 后写覆盖前写。 diff --git a/src/option/business/shipping-template.js b/src/option/business/shipping-template.js index 598b263..55d5841 100644 --- a/src/option/business/shipping-template.js +++ b/src/option/business/shipping-template.js @@ -275,6 +275,8 @@ export const option = { ), dialogWidth: '92%', dialogTop: '4vh', + // label 宽度一致(容纳 6 汉字,超出换行由全局样式控制),右对齐由 labelPosition: 'right' 保证 + labelWidth: 100, // 自定义弹窗 class,用于让新增/编辑弹窗体占满视口高度、视觉居中(参照 vehicle/customer-archive) dialogCustomClass: 'shipping-template-dialog', }; diff --git a/src/option/business/transport-plan.js b/src/option/business/transport-plan.js index 72afbc0..0b65b82 100644 --- a/src/option/business/transport-plan.js +++ b/src/option/business/transport-plan.js @@ -605,6 +605,8 @@ export const option = { }, ]) ), + // label 固定宽度(容纳 6 汉字),覆盖 createCrudOption 默认 labelWidth:'auto' + labelWidth: 100, dialogWidth: '96%', dialogTop: '4vh', dialogCustomClass: 'transport-plan-dialog', diff --git a/src/option/business/waybill-manage.js b/src/option/business/waybill-manage.js index c788ae5..4805f93 100644 --- a/src/option/business/waybill-manage.js +++ b/src/option/business/waybill-manage.js @@ -999,6 +999,8 @@ export const option = { }, ]) ), + // label 固定宽度(容纳 6 汉字),覆盖 createCrudOption 默认 labelWidth:'auto' + labelWidth: 100, dialogWidth: '96%', dialogTop: '4vh', menuWidth: 280, diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss index 6e2cb4e..562aae4 100644 --- a/src/styles/element-ui.scss +++ b/src/styles/element-ui.scss @@ -510,6 +510,24 @@ background: #fff; } +// 发货模板 label 固定宽度(option labelWidth:100 容纳 6 汉字),超出自动换行 +.shipping-template-dialog .el-form-item__label { + white-space: normal; + line-height: 20px; +} + +// 运输计划 label 固定宽度(option labelWidth:100 容纳 6 汉字),超出自动换行 +.transport-plan-dialog .el-form-item__label { + white-space: normal; + line-height: 20px; +} + +// 运单管理 label 固定宽度(option labelWidth:100 容纳 6 汉字),超出自动换行 +.waybill-manage-dialog .el-form-item__label { + white-space: normal; + line-height: 20px; +} + // 运输计划新增/编辑弹窗:参照 vehicle/customer-archive,弹窗体接近全屏(上下各留 20px 边距); // 同时覆盖 Avue 库内置 .avue-dialog 的 max-height: calc(100% - 200px) 上限, // 改由 flex 控制,底部操作栏(avue 内置 footer,渲染在 body 内部)sticky 贴底始终可见 diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index a4ea72c..0a2d4f8 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -694,7 +694,6 @@
@@ -6980,13 +6979,23 @@ export default { }); if (current.length) groups.push(current); if (groups.length <= 1) return option; - // 合同「基本信息」分区改为 4 列显示(分区标题列与已设整行的字段保持原样) - if (this.isContractConfig && groups[0].length) { - groups[0].forEach(col => { + // 分组内非标题、非整行字段统一为 4 列(span 6) + const setFourColumns = group => { + group.forEach(col => { if (sectionTitleProps.includes(col.prop)) return; if (col.span === 24) return; col.span = 6; }); + }; + // 合同「基本信息」分区改为 4 列显示(分区标题列与已设整行的字段保持原样) + if (this.isContractConfig && groups[0].length) setFourColumns(groups[0]); + // 发货模板「模板信息」「基本信息」前两组改为 4 列显示 + if (this.isShippingTemplatePage && groups.length >= 2) { + [groups[0], groups[1]].forEach(setFourColumns); + } + // 运输计划 / 运单管理:整表单统一 4 列 + if ((this.isTransportPlanPage || this.isWaybillDetailLayout) && groups.length) { + groups.forEach(setFourColumns); } return { ...option,