From 9e5fbfd2d43c7a2248dacb7d12a479e0dc9d5179 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, 14 Aug 2026 08:18:45 +0800
Subject: [PATCH 1/6] =?UTF-8?q?style(business):=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E5=A4=9A=E5=A4=84=E7=BB=84=E4=BB=B6=E6=A0=B7=E5=BC=8F=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E8=AF=A6=E6=83=85=E9=A1=B5=E8=A7=86=E8=A7=89=E6=95=88?=
=?UTF-8?q?=E6=9E=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修改 loading-manage.vue 中流程线条高度和颜色为6px浅灰色
- 在 master-order.vue 添加节点名称悬浮提示,调整进度条宽度和高度,居中标题字号
- 更新 master-order-detail.vue 路由线条样式加粗为6px浅灰色
- 优化 master-order-dispatch.vue 路由线条宽度改为6px浅灰色
- voucher-manage.vue 表单结构新增 section-card 容器组件,上传区和关联运输批次按钮布局优化
- voucher-manage.vue 引入 SectionCard 组件用于包裹上传表单区域
---
.../components/master-order-detail.vue | 2 +-
.../components/master-order-dispatch.vue | 2 +-
src/views/business/loading-manage.vue | 2 +-
src/views/business/master-order.vue | 12 ++--
src/views/business/voucher-manage.vue | 64 ++++++++++---------
5 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/src/views/business/components/master-order-detail.vue b/src/views/business/components/master-order-detail.vue
index b526abb..d3f11e8 100644
--- a/src/views/business/components/master-order-detail.vue
+++ b/src/views/business/components/master-order-detail.vue
@@ -117,7 +117,7 @@ export default {
.route-map__node { display: grid; flex: 0 0 150px; justify-items: center; gap: 6px; text-align: center; strong { font-size: 16px; white-space: nowrap; } small { color: #606266; white-space: nowrap; } }
.route-map__progress { color: #409eff !important; }
.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-map__line { flex: 1 0 64px; min-width: 64px; height: 32px; border-bottom: 2px solid #606266; }
+.route-map__line { flex: 1 0 64px; min-width: 64px; height: 32px; border-bottom: 6px solid #e4e7ed; }
.execution-detail-heading { padding: 20px 24px 12px; h3 { margin: 0; padding-left: 12px; border-left: 4px solid #409eff; font-size: 16px; } }
.segment-detail { padding: 16px 24px; border-top: 1px solid #eff1f7; header { display: flex; align-items: center; justify-content: space-between; margin: -16px -24px 8px; padding: 12px 24px; cursor: pointer; background: #fafbfc; h3 { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0; font-size: 16px; } em { color: #409eff; font-style: normal; } } }
.segment-detail__progress { color: #606266; font-size: 14px; font-weight: 400; }
diff --git a/src/views/business/components/master-order-dispatch.vue b/src/views/business/components/master-order-dispatch.vue
index 32aec10..f9378ad 100644
--- a/src/views/business/components/master-order-dispatch.vue
+++ b/src/views/business/components/master-order-dispatch.vue
@@ -627,7 +627,7 @@ export default {
.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-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: 2px solid #606266; }
+.route-overview__line { flex: 1 0 56px; min-width: 56px; 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%; } }
diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue
index 6fa95ca..ae95707 100644
--- a/src/views/business/loading-manage.vue
+++ b/src/views/business/loading-manage.vue
@@ -2360,7 +2360,7 @@ export default {
.loading-detail__value { display: flex; flex-wrap: wrap; gap: 8px; text-align: left; }
.loading-detail__steps { display: flex; align-items: flex-start; overflow-x: auto; padding: 8px 4px 16px; }
.loading-detail__step { position: relative; min-width: 190px; flex: 1; text-align: center; }
- .loading-detail__step:not(:last-child)::after { position: absolute; z-index: 0; top: 16px; left: calc(50% + 25px); width: calc(100% - 50px); height: 2px; content: ''; background: #606266; }
+ .loading-detail__step:not(:last-child)::after { position: absolute; z-index: 0; top: 16px; left: calc(50% + 25px); width: calc(100% - 50px); height: 6px; content: ''; background: #e4e7ed; }
.loading-detail__step-line { display: flex; align-items: center; justify-content: center; }
.loading-detail__step-dot { position: relative; z-index: 1; display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; color: #fff; border-radius: 4px; font-weight: 600; }
.loading-detail__step-dot.start { background: #409eff; }.loading-detail__step-dot.middle { background: #67c23a; }.loading-detail__step-dot.end { background: #e6a23c; }
diff --git a/src/views/business/master-order.vue b/src/views/business/master-order.vue
index f6bd45d..bd2db8f 100644
--- a/src/views/business/master-order.vue
+++ b/src/views/business/master-order.vue
@@ -76,7 +76,7 @@
{{ node.text }}
- {{ node.name }}
+ {{ node.name }}{{ node.name }}
{{ line }}
@@ -511,8 +511,8 @@ export default {
}
}
.route-connector {
- width: clamp(180px, 20vw, 344px);
- flex: 0 0 clamp(180px, 20vw, 344px);
+ width: clamp(180px, 20vw, 266px);
+ flex: 0 0 clamp(180px, 20vw, 266px);
padding-top: 2px;
margin: 0 -6px;
small {
@@ -525,8 +525,8 @@ export default {
line-height: 1.2;
}
:deep(.el-progress-bar__outer) {
- height: 8px !important;
- background-color: #f1f2f5;
+ height: 6px !important;
+ background-color: #e4e7ed;
}
:deep(.el-progress-bar__inner) {
background-color: #409eff;
@@ -538,6 +538,8 @@ export default {
header {
margin-bottom: 10px;
font-weight: 600;
+ font-size: 14px;
+ text-align: center;
}
.el-link {
display: flex;
diff --git a/src/views/business/voucher-manage.vue b/src/views/business/voucher-manage.vue
index abe9894..d37323c 100644
--- a/src/views/business/voucher-manage.vue
+++ b/src/views/business/voucher-manage.vue
@@ -153,15 +153,16 @@
destroy-on-close
:before-close="beforeUploadDialogClose"
>
-
-
+
+
-
+ 上传支持 zip、7z 格式,采用分片上传,上传中断后可在“上传进度”继续上传。上传支持 zip、7z 格式,采用分片上传,上传中断后可在“上传进度”继续上传。
-
+ 选择
-
+ >
+
+
+
Date: Fri, 14 Aug 2026 08:29:01 +0800
Subject: [PATCH 2/6] =?UTF-8?q?style(business):=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E5=88=86=E9=9A=94=E7=BA=BF=E9=AB=98=E5=BA=A6=E5=92=8C=E9=A2=9C?=
=?UTF-8?q?=E8=89=B2=E5=8F=8A=E8=A1=A8=E5=8D=95=E6=A0=87=E7=AD=BE=E6=A0=B7?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将分隔线高度从2px调整为4px
- 修改分隔线背景色为#e4e7ed,替换原来的#606266
- 为.el-form-item--default .el-form-item__label设置行高18px
- 为.el-form-item--label-right .el-form-item__label添加垂直居中样式
---
src/styles/element-ui.scss | 7 +++++++
src/views/business/components/business-crud-page.vue | 4 ++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index c8d6403..bd37191 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -806,3 +806,10 @@
.el-form-item__label {
margin-left: 12px !important;
}
+
+.el-form-item--default .el-form-item__label {
+ line-height: 18px;
+}
+.el-form-item--label-right .el-form-item__label {
+ align-items: center;
+}
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index a495342..4af2783 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -13859,9 +13859,9 @@ export default {
&::before {
flex: 1;
order: 2;
- height: 2px;
+ height: 4px;
content: '';
- background: #606266;
+ background: #e4e7ed;
}
b.end {
From 9948c8f33b8d0e564992f6cdfbc21889c98d23b3 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, 14 Aug 2026 08:46:39 +0800
Subject: [PATCH 3/6] =?UTF-8?q?refactor(process-config):=20=E9=87=8D?=
=?UTF-8?q?=E6=9E=84=E8=BF=87=E7=A8=8B=E9=85=8D=E7=BD=AE=E5=BC=B9=E7=AA=97?=
=?UTF-8?q?=E4=B8=BA=E6=89=8B=E5=86=99=20el-dialog?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将 process-config 弹窗由 Avue 内置弹窗改为手写 el-dialog 对齐 customer-archive 风格
- 移除 avue-crud 原有的弹窗相关生命周期和插槽方法
- 新增 openProcessConfig、submitProcessConfig、resetProcess 等方法管理弹窗状态和数据提交
- 更新模板结构,新增具备基本信息、过程节点、节点设置的表单布局和底部操作按钮
- 关闭原 avue-crud 弹窗的内置按钮,改由手写对话框控制操作
- 优化样式,增加弹窗内部滚动,保持 footer 固定
- 微调业务组件样式,调整边框和表单布局宽度以适配新弹窗设计
---
.workbuddy/memory/2026-08-14.md | 13 +
src/option/business/process-config.js | 4 +
src/option/business/temporary-credit-limit.js | 16 +-
.../components/business-crud-page.vue | 2 +-
src/views/business/process-config.vue | 454 +++++++++---------
5 files changed, 256 insertions(+), 233 deletions(-)
diff --git a/.workbuddy/memory/2026-08-14.md b/.workbuddy/memory/2026-08-14.md
index c73b5db..7d3de7a 100644
--- a/.workbuddy/memory/2026-08-14.md
+++ b/.workbuddy/memory/2026-08-14.md
@@ -31,3 +31,16 @@
3. option:将 `expireStatus` 列的 `search: true → search: false`(否则会在搜索网格里多渲染一个空输入框);`searchIndex` 设为 ≥ 真实搜索列数(vehicle: `4 → 6`;ship 已是 `6`),使 `columnLen ≤ searchIndex`,Avue 不再显示「展开」按钮。
- 原理:Avue `header-search3.js` 中 `#search-menu` 插槽内容渲染进 `menu-form`,位于默认搜索/重置按钮之后、展开按钮之前;`order: -1` 将标签推到按钮左侧。
- 验证:`node --check` 两个 option 文件通过;页面刷新即可见效果。
+
+## process-config.vue 弹窗重构为手写 el-dialog(对齐 customer-archive 风格)
+
+- 需求:用户要求 `/business/process-config.vue` 排版风格改成和 `/vehicle/customer-archive.vue` 一样,保持风格统一。
+- 根因:两页弹窗架构根本不同——customer-archive 用手写 `` + `section-card` 分组 + `#footer` 按钮;process-config 原用 Avue 内置弹窗(`#basicInfo-form`/`#nodeConfigJson-form` 插槽 + `#menu-form-before` 保存按钮)。要真正统一,只能把 process-config 改成手写弹窗。
+- 模板改动(已完成):
+ - 移除 avue-crud 的 `:before-open`/`@row-save`/`@row-update`/`@row-del` 与 `#menu-form-before`、`#basicInfo-form`、`#nodeConfigJson-form` 插槽。
+ - 在 `` 后新增手写 ``,内部 ``,含 3 个 `section-card`:基本信息 / 现行过程节点(时间线)/ 节点设置(节点表格);`#footer` 含 保存草稿(plain) + 保存并启用(primary) + 取消/关闭。
+ - 顶部「新建过程配置」、表格「查看/编辑」链接改调 `openProcessConfig()` / `openProcessConfig(row, true)` / `openProcessConfig(row, false)`。
+- 脚本改动(本次完成):删除 Avue 生命周期方法 `beforeOpen/rowSave/rowUpdate/submitRow/stopSubmitLoading/handleProcessConfigSave`;新增 `openProcessConfig(row, readonly)`(load 详情后 `this.form=data` + `selectedProjectId` + `parseNodeConfig` + 开框;新增则清空表单 + `resetNodeRows`)、`submitProcessConfig(mode)`(`this.$refs.processForm.validate` → `syncNodeFields` → `normalizeRow` → `validateRow` → `confirmDuplicateVoucher` → `api.submit`,成功后关框并刷新)、`resetProcess()`(`@closed` 重置 `dialogReadonly/submitting/submitStatus/form/selectedProjectId` + `resetNodeRows` + `clearValidate`)。`data()` 已含 `processBox/submitting`、`computed.dialogTitle`;`rowDel`/`handleCopy`/`handleAction` 不变(独立 API 调用)。
+- option 改动(已完成):`src/option/business/process-config.js` 置 `saveBtn/updateBtn/addBtn/viewBtn/editBtn/delBtn:false`,关闭 Avue 内置弹窗按钮。
+- 样式:新增 `:deep(.process-dialog .el-dialog__body){max-height:72vh;overflow:auto}`,对齐 customer-archive 的 `.archive-dialog` 滚动行为(长内容时 body 滚动、footer 固定)。
+- 验证:`vite build --outDir /tmp/pc-build-check` 全量编译通过(仅动态导入 chunk 警告,与本改动无关);之前 `npm run build` 失败仅因沙箱 safe-delete 守卫清理旧 dist/ 触发,非代码错误。
diff --git a/src/option/business/process-config.js b/src/option/business/process-config.js
index f5aa1e9..7a21f9d 100644
--- a/src/option/business/process-config.js
+++ b/src/option/business/process-config.js
@@ -177,6 +177,10 @@ export const option = {
]),
saveBtn: false,
updateBtn: false,
+ addBtn: false,
+ viewBtn: false,
+ editBtn: false,
+ delBtn: false,
dialogTop: '10px',
dialogWidth: '96%',
menuWidth: 220,
diff --git a/src/option/business/temporary-credit-limit.js b/src/option/business/temporary-credit-limit.js
index f1e5e22..a539440 100644
--- a/src/option/business/temporary-credit-limit.js
+++ b/src/option/business/temporary-credit-limit.js
@@ -113,7 +113,7 @@ export const option = {
value: 'projectName',
},
filterable: true,
- span: 12,
+ span: 8,
minWidth: 180,
rules: textRule('项目名称', 100, true),
},
@@ -128,7 +128,7 @@ export const option = {
prop: 'projectCode',
hide: true,
disabled: true,
- span: 12,
+ span: 8,
minWidth: 150,
rules: textRule('项目编号', 50),
},
@@ -137,7 +137,7 @@ export const option = {
prop: 'undertakeDeptName',
hide: true,
disabled: true,
- span: 12,
+ span: 8,
minWidth: 150,
rules: textRule('承办部门', 50, true),
},
@@ -146,7 +146,7 @@ export const option = {
prop: 'projectFundLimit',
hide: true,
disabled: true,
- span: 12,
+ span: 8,
minWidth: 200,
rules: [nonNegativeRule('项目资金使用额度')],
},
@@ -155,7 +155,7 @@ export const option = {
prop: 'usedFundLimit',
hide: true,
disabled: true,
- span: 12,
+ span: 8,
minWidth: 220,
value: 0,
rules: [nonNegativeRule('已使用项目资金额度')],
@@ -165,7 +165,7 @@ export const option = {
prop: 'remainingFundLimit',
hide: true,
disabled: true,
- span: 12,
+ span: 8,
minWidth: 230,
value: 0,
rules: [nonNegativeRule('剩余项目资金使用额度')],
@@ -174,7 +174,7 @@ export const option = {
label: '申请临时额度(万元)',
prop: 'applyLimit',
formslot: true,
- span: 12,
+ span: 8,
minWidth: 180,
rules: [
{ required: true, message: '请输入申请临时额度', trigger: 'blur' },
@@ -187,7 +187,7 @@ export const option = {
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
- span: 12,
+ span: 8,
minWidth: 140,
rules: [{ required: true, message: '请选择申请有效期至', trigger: 'change' }],
},
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 4af2783..48f450e 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -13681,7 +13681,7 @@ export default {
min-width: 56px;
height: 22px;
margin: 0 14px;
- border-bottom: 3px solid #303133;
+ border-bottom: 4px solid #e4e7ed;
}
&__transport-plan-waybill-card {
diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue
index c5825d2..5c29c76 100644
--- a/src/views/business/process-config.vue
+++ b/src/views/business/process-config.vue
@@ -8,10 +8,6 @@
v-model="form"
ref="crud"
:permission="permissionList"
- :before-open="beforeOpen"
- @row-save="rowSave"
- @row-update="rowUpdate"
- @row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@@ -25,7 +21,7 @@
type="primary"
icon="el-icon-plus"
v-if="hasPermission('process_config_add')"
- @click="$refs.crud.rowAdd()"
+ @click="openProcessConfig()"
>新建过程配置
-
-
-
- 保存草稿
-
-
- 保存并启用
-
-
-
-
{{ row.statusName || displayStatus(row.status) }}
@@ -79,101 +54,154 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 默认
-
- 天后完成运输
-
-
-
-
-
-
-
-
-
-
-
+
+
+ 查看
+
+
+ 编辑
+
+
+ 复制
+
+
+ 启用
+
+
+ 停用
+
+
+ 删除
+
+
-
-
-
-
-
-
-
-
{{ node.name }}
-
-
{{ text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 默认
+
+ 天后完成运输
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
-
-
- 查看
-
-
- 编辑
-
-
- 复制
-
-
- 启用
-
-
- 停用
-
-
- 删除
-
+
+
+
+ 保存草稿
+
+
+ 保存并启用
+
+
+ {{ dialogReadonly ? '关闭' : '取消' }}
-
+
item.enabled);
},
+ dialogTitle() {
+ if (this.dialogReadonly) return '查看过程配置';
+ return this.form.id ? '编辑过程配置' : '新增过程配置';
+ },
},
created() {
this.resetNodeRows();
@@ -853,11 +853,6 @@ export default {
}
return true;
},
- stopSubmitLoading(loading) {
- if (typeof loading === 'function') {
- loading();
- }
- },
needsDuplicateVoucherConfirm() {
const signNode = this.nodeRows.find(item => item.key === 'sign');
const returnNode = this.nodeRows.find(item => item.key === 'return');
@@ -887,39 +882,74 @@ export default {
}
);
},
- submitRow(row, done, loading, status = this.submitStatus) {
+ openProcessConfig(row, readonly = false) {
+ this.dialogReadonly = readonly;
this.submitStatus = 1;
- this.syncNodeFields();
- const submitRow = this.normalizeRow({ ...row, status });
- if (!this.validateRow(submitRow)) {
- this.stopSubmitLoading(loading);
+ if (row && row.id) {
+ api.getDetail(row.id).then(res => {
+ const data = res.data.data || {};
+ this.form = data;
+ this.selectedProjectId = data.projectIds ? String(data.projectIds) : '';
+ this.ensureSelectedProjectOption();
+ this.parseNodeConfig(data);
+ this.processBox = true;
+ });
return;
}
- this.confirmDuplicateVoucher()
- .then(() => api.submit(submitRow))
- .then(() => {
- this.onLoad(this.page);
- this.$message({ type: 'success', message: '操作成功!' });
- done();
- })
- .catch(error => {
- if (error !== 'cancel' && error !== 'close') {
- window.console.log(error);
- }
- this.stopSubmitLoading(loading);
- });
+ this.form = {
+ configName: '',
+ projectIds: '',
+ projectNames: '',
+ defaultFinishDays: '',
+ remark: '',
+ status: 0,
+ };
+ this.selectedProjectId = '';
+ this.resetNodeRows();
+ this.processBox = true;
},
- rowSave(row, done, loading) {
- this.submitRow(row, done, loading);
+ submitProcessConfig(mode) {
+ this.$refs.processForm.validate(valid => {
+ if (!valid) return;
+ this.submitting = true;
+ this.submitStatus = mode === 'draft' ? 2 : 1;
+ this.syncNodeFields();
+ const submitRow = this.normalizeRow({ ...this.form, status: this.submitStatus });
+ if (!this.validateRow(submitRow)) {
+ this.submitting = false;
+ return;
+ }
+ this.confirmDuplicateVoucher()
+ .then(() => api.submit(submitRow))
+ .then(() => {
+ this.submitting = false;
+ this.processBox = false;
+ this.onLoad(this.page);
+ this.$message({ type: 'success', message: '操作成功!' });
+ })
+ .catch(error => {
+ this.submitting = false;
+ if (error !== 'cancel' && error !== 'close') {
+ window.console.log(error);
+ }
+ });
+ });
},
- 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();
- }
+ resetProcess() {
+ this.dialogReadonly = false;
+ this.submitting = false;
+ this.submitStatus = 1;
+ this.form = {
+ configName: '',
+ projectIds: '',
+ projectNames: '',
+ defaultFinishDays: '',
+ remark: '',
+ status: 0,
+ };
+ this.selectedProjectId = '';
+ this.resetNodeRows();
+ this.$refs.processForm?.clearValidate();
},
rowDel(row) {
this.$confirm('确定将选择数据删除?', {
@@ -963,35 +993,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();
@@ -1239,5 +1240,10 @@ export default {
:deep(.el-table__body tr:nth-child(even) > td.el-table__cell) {
background: #fafafa;
}
+
+ :deep(.process-dialog .el-dialog__body) {
+ max-height: 72vh;
+ overflow: auto;
+ }
}
From c68ce66405681e72d03ed8c66e88102d2b71e621 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, 14 Aug 2026 08:53:33 +0800
Subject: [PATCH 4/6] =?UTF-8?q?style(styles):=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E8=A1=A8=E5=8D=95=E9=A1=B9=E6=A0=87=E7=AD=BE=E8=A1=8C=E9=AB=98?=
=?UTF-8?q?=E5=8F=8A=E9=97=B4=E8=B7=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将.el-form-item--default的标签行高从18px改为14px
- 为.el-form-item--default和.el-form-item添加底部外边距14px
- 保持.el-form-item--label-right标签垂直居中对齐效果不变
---
src/styles/element-ui.scss | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index bd37191..9f83e18 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -808,8 +808,14 @@
}
.el-form-item--default .el-form-item__label {
- line-height: 18px;
+ line-height: 14px;
}
.el-form-item--label-right .el-form-item__label {
align-items: center;
}
+.el-form-item--default {
+ margin-bottom: 14px;
+}
+.el-form-item {
+ margin-bottom: 14px;
+}
From 2fae0772fe886620872c6f92f3635fb25aa92c15 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, 14 Aug 2026 12:10:16 +0800
Subject: [PATCH 5/6] =?UTF-8?q?style(business-crud-page):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E5=88=B0=E6=9C=9F=E7=AD=9B=E9=80=89=E6=A0=87=E7=AD=BE?=
=?UTF-8?q?=E5=AF=B9=E9=BD=90=E5=92=8C=E4=BC=98=E5=8C=96=E7=BD=91=E6=A0=BC?=
=?UTF-8?q?=E5=88=97=E5=AE=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- contract-manage 页面到期筛选标签由靠左改为靠右对齐,满足用户需求
- 修改 .business-crud-page__contract-expiry-search 样式,移除 order 并应用 margin-left: auto
- 增加 waybill-summary-grid 网格最后一列宽度,提升布局视觉效果
- transportCapacity 下 transport-ship 和 transport-vehicle 配置中调整 searchIndex 值以优化搜索栏顺序
- 确认 vite build 全量编译通过,无新增构建错误或警告
---
.workbuddy/memory/2026-08-14.md | 6 ++++++
src/option/transportCapacity/transport-ship.js | 2 +-
src/option/transportCapacity/transport-vehicle.js | 2 +-
src/views/business/components/business-crud-page.vue | 5 ++---
4 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/.workbuddy/memory/2026-08-14.md b/.workbuddy/memory/2026-08-14.md
index 7d3de7a..26ebf84 100644
--- a/.workbuddy/memory/2026-08-14.md
+++ b/.workbuddy/memory/2026-08-14.md
@@ -44,3 +44,9 @@
- option 改动(已完成):`src/option/business/process-config.js` 置 `saveBtn/updateBtn/addBtn/viewBtn/editBtn/delBtn:false`,关闭 Avue 内置弹窗按钮。
- 样式:新增 `:deep(.process-dialog .el-dialog__body){max-height:72vh;overflow:auto}`,对齐 customer-archive 的 `.archive-dialog` 滚动行为(长内容时 body 滚动、footer 固定)。
- 验证:`vite build --outDir /tmp/pc-build-check` 全量编译通过(仅动态导入 chunk 警告,与本改动无关);之前 `npm run build` 失败仅因沙箱 safe-delete 守卫清理旧 dist/ 触发,非代码错误。
+
+## contract-manage 到期筛选标签靠右对齐
+
+- 需求:用户截图反馈 `/business/contract-manage` 搜索栏中「全部/30天内到期/90天内到期/90天以上/已到期」标签需要靠右对齐。
+- 改动:`src/views/business/components/business-crud-page.vue` 中 `.business-crud-page__contract-expiry-search` 样式由 `order: -1; margin-right: auto` 改为 `margin-left: auto`。这样该 slot 内容会被推到 `#search-menu` 行的右侧,搜索/重置按钮留在左侧,与 vehicle/ship 的左侧标签方案相反,符合用户本次要求。
+- 验证:`vite build --outDir /tmp/pc-build-check-2` 全量编译通过。
diff --git a/src/option/transportCapacity/transport-ship.js b/src/option/transportCapacity/transport-ship.js
index 08a69f9..dced0f4 100644
--- a/src/option/transportCapacity/transport-ship.js
+++ b/src/option/transportCapacity/transport-ship.js
@@ -5,7 +5,7 @@ export const option = {
searchShow: true,
searchMenuSpan: 24,
searchIcon: true,
- searchIndex: 6,
+ searchIndex: 4,
searchMenuPosition: 'right',
border: true,
index: true,
diff --git a/src/option/transportCapacity/transport-vehicle.js b/src/option/transportCapacity/transport-vehicle.js
index 1bbaf7d..320d3a4 100644
--- a/src/option/transportCapacity/transport-vehicle.js
+++ b/src/option/transportCapacity/transport-vehicle.js
@@ -5,7 +5,7 @@ export const option = {
searchShow: true,
searchMenuSpan: 24,
searchIcon: true,
- searchIndex: 6,
+ searchIndex: 4,
searchMenuPosition: 'right',
border: true,
index: true,
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 48f450e..d910227 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -12199,10 +12199,9 @@ export default {
&__contract-expiry-search {
display: flex;
- order: -1;
align-items: center;
gap: 8px;
- margin-right: auto;
+ margin-left: auto;
min-width: 0;
:deep(.el-select) {
@@ -13786,7 +13785,7 @@ export default {
&__waybill-summary-grid {
display: grid;
- grid-template-columns: repeat(4, minmax(130px, 1fr)) minmax(360px, 2fr);
+ grid-template-columns: repeat(4, minmax(130px, 1fr)) minmax(420px, 2.5fr);
gap: 16px 24px;
}
From a69a2efe453822e29a6696bb337043dd3b5a31d3 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, 14 Aug 2026 12:16:50 +0800
Subject: [PATCH 6/6] =?UTF-8?q?style(contract-manage):=20=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E6=A0=87=E7=AD=BE?=
=?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=92=8C=E8=A1=A8=E5=8D=95=E5=B8=83=E5=B1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 为合同格式、法人章和一式字段添加统一的标签宽度72px
- 合同管理弹窗标签支持长文字自动换行,提升显示效果
- Vite配置中新增本地开发服务器端口设置及API代理规则调整,便于本地联调接口
---
src/option/business/contract-manage.js | 3 +++
src/views/business/contract-manage.vue | 8 ++++++++
vite.config.mjs | 26 +++++++++++++-------------
3 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js
index bb06258..31c163f 100644
--- a/src/option/business/contract-manage.js
+++ b/src/option/business/contract-manage.js
@@ -386,6 +386,7 @@ export const option = createCrudOption([
{
label: '合同格式',
prop: 'contractFormat',
+ labelWidth: '72px',
type: 'select',
dicData: [
{ label: '电子合同', value: '电子合同' },
@@ -399,6 +400,7 @@ export const option = createCrudOption([
{
label: '是否需要加盖法人章',
prop: 'legalSealFlag',
+ labelWidth: '72px',
type: 'select',
dicData: [
{ label: '否', value: 0 },
@@ -413,6 +415,7 @@ export const option = createCrudOption([
{
label: '一式',
prop: 'copyCount',
+ labelWidth: '72px',
formslot: true,
hide: true,
order: 60,
diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue
index be5b5b1..346f1d8 100644
--- a/src/views/business/contract-manage.vue
+++ b/src/views/business/contract-manage.vue
@@ -18,3 +18,11 @@ export default {
},
};
+
+
diff --git a/vite.config.mjs b/vite.config.mjs
index 09134a0..8c0a2a9 100644
--- a/vite.config.mjs
+++ b/vite.config.mjs
@@ -50,26 +50,26 @@ export default ({
__VUE_I18N_LEGACY_API__: true,
__INTLIFY_PROD_DEVTOOLS__: false,
},
- // server: {
- // port: 2888,
- // proxy: {
- // '/api': {
- // target: 'http://localhost',
- // //target: 'https://saber3.bladex.cn/api',
- // changeOrigin: true,
- // rewrite: path => path.replace(/^\/api/, ''),
- // },
- // },
- // },
server: {
- port: 2889,
+ port: 2888,
proxy: {
'/api': {
- target: 'http://172.16.203.228:8000',
+ target: 'http://localhost',
+ //target: 'https://saber3.bladex.cn/api',
changeOrigin: true,
+ rewrite: path => path.replace(/^\/api/, ''),
},
},
},
+ // server: {
+ // port: 2889,
+ // proxy: {
+ // '/api': {
+ // target: 'http://172.16.203.228:8000',
+ // changeOrigin: true,
+ // },
+ // },
+ // },
resolve: {
alias: {
'~': resolve(__dirname, './'),