From 3cb365253b8208a55ae60fd537acf25cf6845497 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 18:43:25 +0800
Subject: [PATCH 01/10] =?UTF-8?q?style(attachment):=20=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E9=99=84=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=8C=89=E9=92=AE=E4=BD=8D?=
=?UTF-8?q?=E7=BD=AE=E5=8F=8A=E6=A0=B7=E5=BC=8F=E5=8F=8A=E6=8F=90=E7=A4=BA?=
=?UTF-8?q?=E6=96=87=E6=A1=88=E6=A0=BC=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将站点所有附件上传按钮移至表格下方左侧,与批量下载按钮分开,布局统一
- 统一附件上传按钮旁提示文案格式,改为同一行按钮右侧显示,间距固定30px,文本左对齐
- 统一附件上传支持文件格式说明为“支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件不超过500M”
- 统一单个附件文件大小限制改为500M,涉及多页面文件修改
- 恢复vehicle-attachment-upload组件showTip属性门控,支持按需隐藏提示
- 修复master-order编辑页附件上传按钮与描述文字排列,改为单行且按钮左侧描述右侧排列
- 优化customer-archive客商材料上传按钮及提示的布局,按钮左、提示右,间距30px,超长文案省略
- 调整部分页面缩进与标签样式,提升视觉一致性
- 修改部分组件及页面的css样式,适配上述布局与样式调整
---
.workbuddy/memory/2026-08-25.md | 51 ++++++
.../vehicle-attachment-upload/main.vue | 31 +++-
.../components/business-crud-page.vue | 56 ++++---
.../components/master-order-editor.vue | 45 +++--
src/views/business/contract-manage-change.vue | 12 +-
src/views/business/contract-manage.vue | 131 +++++++--------
src/views/business/process-config.vue | 2 +-
src/views/business/project-apply.vue | 21 ++-
src/views/business/temporary-credit-limit.vue | 52 ++++--
src/views/payment/bill-ledger-form.vue | 2 +-
src/views/payment/bill-payment-form.vue | 2 +-
.../payment/invoice-application-form.vue | 35 ++--
.../payment/payment-application-form.vue | 36 ++--
.../components/pre-settlement-editor.vue | 42 +++--
src/views/vehicle/customer-archive.vue | 53 ++++--
....timestamp-1787653210304-5b6c221708201.mjs | 158 ++++++++++++++++++
16 files changed, 553 insertions(+), 176 deletions(-)
create mode 100644 vite.config.mjs.timestamp-1787653210304-5b6c221708201.mjs
diff --git a/.workbuddy/memory/2026-08-25.md b/.workbuddy/memory/2026-08-25.md
index 915344d..b396de2 100644
--- a/.workbuddy/memory/2026-08-25.md
+++ b/.workbuddy/memory/2026-08-25.md
@@ -82,3 +82,54 @@
- 实现:复用已有组件 `src/views/settlement/components/formal-settlement-table-panel.vue`(工具栏+表格+分页一体,通过 emit 事件与父通信),分别挂入"应付""应收"两个 `el-tab-pane` 内,共享父级 `rows/columns/loading/page/hasPermissionFn`,事件回连:@create→openCreate、@payment→openPaymentDialog、@sync→handleSync、@export→handleExport、@refresh→loadTable、@page-change→onPageChange、@action→onAction(分发 view/edit/delete/submit/approve/return/void/print)、@update:selection→selection 同步。切 tab 仍走 `handleSettlementTypeChange` 重载数据。
- 配套改动:父页 `:has-permission` 传 `hasPermissionFn`(computed 返回箭头函数,避免方法作 prop 时 this 丢失导致权限恒为 true);`handlePrint(row)` 增加可选 row 入参;移除父页内联表格及对应 scoped 样式(.formal-page__toolbar/links/pagination);组件操作列 width 120→320(符合 AGENTS.md >3 按钮规范)。
- 校验:@vue/compiler-sfc parse/compileTemplate 0 错误、esbuild 脚本语法 OK;`pnpm build` 因沙箱保护 dist/ 被拦截(非代码问题)。仅改 formal-settlement.vue 一个页面文件 + 组件 width。
+
+## 临时额度管理附件上传按钮移至表格左下角
+- 需求:用户截图反馈 `business/temporary-credit-limit` 新增弹窗中「上传附件」按钮在表格上方,要求统一放到附件表格左下角,与 project-apply 的项目材料交互一致。
+- 改动文件:`src/views/business/temporary-credit-limit.vue`:
+ - 模板:将 `vehicle-attachment-upload` 从 `temporary-credit-limit-page__attachment-head` 移除,放到 `el-table` 之后的新增 `temporary-credit-limit-page__attachment-upload` 容器内;head 内只保留「批量下载」按钮。
+ - 样式:`&__attachment-head` 的 `justify-content` 由 `space-between` 改为 `flex-end`;新增 `&__attachment-upload` 样式,左对齐并控制上传组件宽度自适应。
+- 结论:临时额度管理附件区域现与合同管理、项目材料保持一致:批量下载在表格上方右侧,上传附件在表格下方左侧。
+
+## 项目材料上传提示文字移到按钮右侧
+- 需求:用户要求 project-apply/form「上传附件」按钮支持指定格式(pdf/bmp/jpeg/png/jpg/doc/docx/ppt/pptx/xlsx/xls/eml/msg/zip)、单文件 50M,并把提示文字放到按钮后面(右侧同一行)。
+- 现状:project-apply.vue 第 537-540 行早已配置 `:file-types`、`:max-size="50"` 与完整 `tip` 文案,但 vehicle-attachment-upload 组件默认把提示渲染在按钮下方。
+- 修复:仅改 `&__upload` 样式,用 `:deep` 把 `.vehicle-attachment-upload` 设为 `display:flex; align-items:center`,并把 `.el-upload__tip` 由默认块级(下方)改为 `display:inline-block; margin-left:12px`,使格式/大小提示与按钮同一行、位于按钮右侧。
+- 结论:project-apply 附件提示现为"上传附件按钮 + 右侧灰色提示文字",未改动组件逻辑与其它页面。
+
+## 附件格式说明三页统一(按钮右侧 30px / 500M)
+- 需求:用户要求「支持pdf、bmp、…、zip,单个文件不超过500M」这段说明在 project-apply / temporary-credit-limit / contract-manage 三处附件上传区统一摆放:放到「上传附件」按钮右侧、间距 30px、文字左对齐;文件限制上限由 50M 改为 500M(说明与校验一致)。
+- 实现(三页一致):
+ - 统一 `tip` 文案:`支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件不超过500M`。
+ - `:max-size`(contract-manage 为 `maxSize`)统一 500;project-apply / temporary-credit-limit 由 50→500。
+ - 样式:用 `:deep` 把 `.vehicle-attachment-upload` 设为 `display:flex;align-items:center`,`.el-upload__tip` 改 `display:inline-block;margin-left:30px;color:#909399;font-size:13px;text-align:left`,使说明在按钮右侧 30px、左对齐。
+ - contract-manage 的 AttachmentSection render 把上传按钮从表格上方 head 移到表格下方左侧(`.contract-manage-form__attachment-upload`),head 仅保留「批量下载」;同步删除失效的 `__attachment-actions` 死样式,新增 `__attachment-upload` 样式。至此三页上传按钮均位于附件表格左下角、说明在按钮右侧。
+- 校验:@vue/compiler-sfc 对三文件 parse/compileScript/compileTemplate 均 OK;dev localhost:2889 HMR 已生效。
+
+## 全站附件上传统一(vehicle-attachment-upload 组件级单一事实来源)
+- 需求:把"上传附件按钮在附件表格左下角 + 按钮右侧 30px 左对齐统一说明 + 单文件 500M"方案应用到整个站点,统一风格。
+- 核心做法(改 1 个组件即全站生效):`src/components/vehicle-attachment-upload/main.vue`
+ - 新增常量 `UNIFIED_ATTACHMENT_TIP = '支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件不超过500M'`;`tipText` 改为 `this.tip || UNIFIED_ATTACHMENT_TIP`(不再按 acceptText 拼装)。
+ - `maxSize` 默认值 `0` → `500`(说明与校验一致)。
+ - 模板 `v-if="showTip && ..."` 去掉 `showTip` 门控 → `v-if="tipText && !readonly"`,全站始终显示统一说明(原 `:show-tip="false"` 变为无害 no-op,未逐一清理)。
+ - SCSS 新增 `.vehicle-attachment-upload :deep(.el-upload){display:flex;align-items:center}` 与 `:deep(.el-upload__tip){display:inline-block;margin:0 0 0 30px;color:#909399;font-size:13px;text-align:left}`,按钮与说明内联、说明在按钮右侧 30px 左对齐。
+- 表格型附件区布局对齐(上传移表格下方左侧,批量下载留表头右侧):business-crud-page.vue(2 处 attachmentsJson-form / 派车明细附件)、contract-manage-change.vue、pre-settlement-editor.vue、master-order-editor.vue、payment-application-form.vue、invoice-application-form.vue;各页新增 `__attachment-upload` 左对齐样式、`__attachment-head` 改 `justify-content:flex-end`。
+- 大小异常值修正:bill-ledger-form / bill-payment-form 的 `:max-size="10"` → 500;invoice-application-form `:max-size="50"` → 500(同时把上传从表格上方移到下方)。
+- 已是下方布局无需移动(仅随组件生效):invoice-receipt / receipt-claim-record / receipt-flow / bill-ledger / bill-payment / formal-settlement-editor(独立上传无表格)/ 各 vehicle 页(独立上传无表格)。
+- 校验:@vue/compiler-sfc 对 12 个改动文件(组件 + 上述各页 + 此前已改的 project-apply/temporary-credit-limit/contract-manage)全部编译通过;grep 确认全站无残留非 500M 的附件 max-size。
+
+## master-order 附件上传"按钮 + 描述"由两行改一行
+- 需求:用户截图 `/business/master-order?mode=editor` 详情附件区,"上传附件"按钮与"支持pdf…"描述文字分别居中、各占一行,要求并到同一行(与 vehicle-attachment-upload 组件默认样式一致)。
+- 根因:`master-order-editor.vue` 第 1814-1824 行 scoped CSS 把 `.master-editor__attachment-upload .el-upload` 强制 `display: inline-flex` 但未显式 `flex-wrap/align-items/text-align`;而 Element Plus 全局 `.el-upload` 默认 `text-align: center`,加 inline-flex 子元素被 EP 默认行为按各自一行居中显示。
+- 修复:在 `.master-editor__attachment-upload` 内用 `:deep(.el-upload)` 显式声明 `display: inline-flex; align-items: center; flex-wrap: nowrap; text-align: left`,并 `:deep(.el-upload__tip)` 改 `display: inline-block; margin: 0 0 0 8px; color:#909399; font-size:13px; line-height:1.4; white-space:normal; text-align:left`,让按钮与说明内联排成一行。
+- 结论:master-order 附件区与 project-apply/temporary-credit-limit/contract-manage 风格一致(按钮左 + 描述贴右侧)。
+
+## vehicle-attachment-upload 恢复 showTip 门控
+- 根因:用户截图 feedback `customer-archive/form` 的「OCR上传识别」按钮下方仍显示统一附件说明,要求「OCR上传识别这里不用加描述」。该组件虽有 `showTip` prop,但此前「全站附件上传统一」时把模板门控 `v-if="showTip && tipText && !readonly"` 简化成了 `v-if="tipText && !readonly"`,导致 `:show-tip="false"` 失效。
+- 修复:恢复 `src/components/vehicle-attachment-upload/main.vue` 第 24 行的 `showTip &&` 条件,使 `:show-tip="false"` 可正常隐藏按钮旁说明;`customer-archive.vue` 中 OCR 上传实例已配置 `:show-tip="false"`,无需额外改动。
+- 影响:所有 `:show-tip="false"` 的调用点(annual-inspection/maintenance/accident/violation/tire/customer-archive 等)现在会按预期隐藏提示;未配置 `show-tip` 或 `:show-tip="true"` 的实例继续显示 `UNIFIED_ATTACHMENT_TIP`。
+
+## customer-archive 客商材料上传按钮左、描述右、间距 30px
+- 需求:用户第三轮明确「客商材料」表格下"上传附件"按钮与「支持pdf…」描述需并排、按钮左、描述右、间距严格 30px。
+- 定位:`src/views/vehicle/customer-archive.vue` 第 4637-4666 行 `.qualification-upload-bar`(grid 1fr auto 1fr 改 flex 的二次修正)。
+- 修复:保留 flex 容器,按钮区 `.vehicle-attachment-upload > :deep(.el-upload)` `flex: 0 0 auto` 贴左固定;描述 `:deep(.el-upload__tip)` `margin-left: 30px + white-space: nowrap + overflow:hidden + text-overflow:ellipsis + text-align:left`,与按钮同行紧贴、间距固定 30px、超长文案省略号。
+- 结论:布局"「上传附件」按钮 ←30px→ 「支持pdf…」描述",单行两端对齐。
diff --git a/src/components/vehicle-attachment-upload/main.vue b/src/components/vehicle-attachment-upload/main.vue
index c4988ec..692197c 100644
--- a/src/components/vehicle-attachment-upload/main.vue
+++ b/src/components/vehicle-attachment-upload/main.vue
@@ -75,6 +75,9 @@ import pdfWorkerSrc from 'pdfjs-dist/build/pdf.worker.mjs?url';
import { baseUrl } from '@/config/env';
import { getUploadHeaders } from '@/utils/upload';
+const UNIFIED_ATTACHMENT_TIP =
+ '支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件不超过500M';
+
const MIME_MAP = {
jpg: 'image/jpeg',
jpeg: 'image/jpeg',
@@ -143,7 +146,7 @@ export default {
},
maxSize: {
type: Number,
- default: 0,
+ default: 500,
},
readonly: {
type: Boolean,
@@ -212,10 +215,7 @@ export default {
return this.acceptedList.join(',');
},
tipText() {
- if (this.tip) return this.tip;
- const typeText = this.acceptText || '所有类型';
- const sizeText = this.maxSize > 0 ? `,单文件不超过 ${this.maxSize}MB` : '';
- return `支持上传 ${typeText}${sizeText}`;
+ return this.tip || UNIFIED_ATTACHMENT_TIP;
},
uploadingCount() {
return this.fileList.filter(file => ['ready', 'uploading'].includes(file.status)).length;
@@ -372,6 +372,27 @@ export default {
diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue
index 1e824ed..9ff0400 100644
--- a/src/views/business/process-config.vue
+++ b/src/views/business/process-config.vue
@@ -105,7 +105,7 @@
:title="dialogReadonly ? '查看过程配置' : form.id ? '编辑过程配置' : '新建过程配置'"
append-to-body
v-model="configBox"
- width="96%"
+ width="90%"
top="4vh"
class="process-config-dialog"
:close-on-click-modal="false"
diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue
index d79b25e..4fb3219 100644
--- a/src/views/business/project-apply.vue
+++ b/src/views/business/project-apply.vue
@@ -535,9 +535,9 @@
class="project-apply-form__upload"
:readonly="dialogReadonly"
:file-types="attachmentFileTypes"
- :max-size="50"
+ :max-size="500"
button-text="上传附件"
- tip="支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件大小限制50M"
+ tip="支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip的文件格式,单个文件不超过500M"
@change="handleAttachmentChange"
/>
@@ -2060,6 +2060,23 @@ export default {
border-radius: 6px;
padding: 12px 0;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
+
+ :deep(.vehicle-attachment-upload) {
+ display: flex;
+ align-items: center;
+ }
+
+ :deep(.el-upload) {
+ display: inline-flex;
+ }
+
+ :deep(.el-upload__tip) {
+ display: inline-block;
+ margin: 0 0 0 30px;
+ color: #909399;
+ font-size: 13px;
+ line-height: 1.4;
+ }
}
&__change-textarea {
diff --git a/src/views/business/temporary-credit-limit.vue b/src/views/business/temporary-credit-limit.vue
index a351fde..15fa241 100644
--- a/src/views/business/temporary-credit-limit.vue
+++ b/src/views/business/temporary-credit-limit.vue
@@ -84,15 +84,6 @@
-
批量下载
@@ -121,6 +112,18 @@
+
+
+
@@ -639,10 +642,35 @@ export default {
&__attachment-head {
display: flex;
align-items: center;
- justify-content: space-between;
+ justify-content: flex-end;
margin-bottom: 12px;
}
+ &__attachment-upload {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 12px;
+
+ :deep(.vehicle-attachment-upload) {
+ display: flex;
+ align-items: center;
+ width: auto;
+ }
+
+ :deep(.el-upload) {
+ display: inline-flex;
+ }
+
+ :deep(.el-upload__tip) {
+ display: inline-block;
+ margin: 0 0 0 30px;
+ color: #909399;
+ font-size: 13px;
+ line-height: 1.4;
+ text-align: left;
+ }
+ }
+
&__flow {
width: 100%;
height: calc(100vh - 150px);
@@ -670,4 +698,8 @@ export default {
.temporary-credit-limit-dialog .business-crud-page__detail-content .el-descriptions__label {
width: 180px !important;
}
+.el-form-item--default .el-form-item__label {
+ min-height: 30px;
+ height: auto !important;
+}
diff --git a/src/views/payment/bill-ledger-form.vue b/src/views/payment/bill-ledger-form.vue
index 87daa14..0568bfd 100644
--- a/src/views/payment/bill-ledger-form.vue
+++ b/src/views/payment/bill-ledger-form.vue
@@ -231,7 +231,7 @@
class="bill-ledger-form-page__uploader"
:multiple="true"
:limit="20"
- :max-size="10"
+ :max-size="500"
:file-types="attachmentFileTypes"
:show-file-list="false"
button-text="上传"
diff --git a/src/views/payment/bill-payment-form.vue b/src/views/payment/bill-payment-form.vue
index 38e9dfd..d77ca32 100644
--- a/src/views/payment/bill-payment-form.vue
+++ b/src/views/payment/bill-payment-form.vue
@@ -113,7 +113,7 @@
class="bill-payment-form-page__uploader"
:multiple="true"
:limit="20"
- :max-size="10"
+ :max-size="500"
:file-types="attachmentFileTypes"
:show-file-list="false"
button-text="上传"
diff --git a/src/views/payment/invoice-application-form.vue b/src/views/payment/invoice-application-form.vue
index abfb2be..bdb50e5 100644
--- a/src/views/payment/invoice-application-form.vue
+++ b/src/views/payment/invoice-application-form.vue
@@ -366,17 +366,6 @@
-
@@ -399,6 +388,19 @@
+
+
+
@@ -970,6 +972,17 @@ export default {
gap: 8px;
padding: 16px 0 8px;
}
+.invoice-form-page__attachment-upload {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 12px;
+}
+.invoice-form-page__attachment-upload .vehicle-attachment-upload {
+ width: auto;
+}
+.invoice-form-page__attachment-upload .el-upload {
+ display: inline-flex;
+}
.invoice-form-page__dialog-search {
display: flex;
justify-content: flex-end;
diff --git a/src/views/payment/payment-application-form.vue b/src/views/payment/payment-application-form.vue
index f0cdb00..4a1d369 100644
--- a/src/views/payment/payment-application-form.vue
+++ b/src/views/payment/payment-application-form.vue
@@ -245,17 +245,7 @@
/>
-
+
+
+
返回
-
批量下载
@@ -341,6 +328,20 @@
+
+
+
@@ -1559,10 +1560,25 @@ export default {
&__attachment-actions {
display: flex;
align-items: center;
+ justify-content: flex-end;
gap: 8px;
margin-bottom: 12px;
}
+ &__attachment-upload {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 12px;
+
+ :deep(.vehicle-attachment-upload) {
+ width: auto;
+ }
+
+ :deep(.el-upload) {
+ display: inline-flex;
+ }
+ }
+
&__summary-total {
padding: 12px 16px 0;
text-align: right;
diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue
index 2eeae7a..b24f89e 100644
--- a/src/views/vehicle/customer-archive.vue
+++ b/src/views/vehicle/customer-archive.vue
@@ -606,7 +606,6 @@
v-model="ocrQualificationUploadFiles"
:multiple="true"
:limit="20"
- accept=".pdf,.bmp,.jpeg,.png,.jpg,.doc,.docx,.ppt,.pptx,.xlsx,.xls,.eml,.msg,.zip"
:max-size="500"
button-text="OCR上传识别"
:show-tip="false"
@@ -689,14 +688,10 @@
accept=".pdf,.bmp,.jpeg,.png,.jpg,.doc,.docx,.ppt,.pptx,.xlsx,.xls,.eml,.msg,.zip"
:max-size="500"
button-text="上传附件"
- :show-tip="false"
:show-file-list="false"
:show-uploading="true"
@success="handleQualificationUploadSuccess"
/>
-
- 支持pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip,单个文件不超过500M
-
@@ -859,7 +854,13 @@
-
+
@@ -951,7 +952,13 @@
-
+
@@ -4537,7 +4544,7 @@ export default {
display: flex;
align-items: center;
gap: 10px;
- width: 97%;
+ width: 100%;
}
.business-term-field {
@@ -4628,21 +4635,33 @@ export default {
}
.qualification-upload-bar {
- display: grid;
- grid-template-columns: 1fr auto 1fr;
+ display: flex;
align-items: center;
margin-top: 12px;
margin-bottom: 6px;
:deep(.vehicle-attachment-upload) {
- width: auto;
- }
+ flex: 1;
+ display: flex;
+ align-items: center;
+ min-width: 0;
- &__tip {
- grid-column: 2;
- color: #909399;
- font-size: 13px;
- text-align: center;
+ :deep(.el-upload) {
+ flex: 0 0 auto;
+ display: inline-flex;
+ align-items: center;
+ }
+
+ :deep(.el-upload__tip) {
+ margin-left: 30px;
+ color: #909399;
+ font-size: 13px;
+ line-height: 1.4;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
}
}
diff --git a/vite.config.mjs.timestamp-1787653210304-5b6c221708201.mjs b/vite.config.mjs.timestamp-1787653210304-5b6c221708201.mjs
new file mode 100644
index 0000000..30fcf0c
--- /dev/null
+++ b/vite.config.mjs.timestamp-1787653210304-5b6c221708201.mjs
@@ -0,0 +1,158 @@
+// vite.config.mjs
+import {
+ defineConfig,
+ loadEnv
+} from "file:///Users/gxwebsoft/VUE/tms-erp-web-ws/node_modules/.pnpm/vite@5.4.21_sass@1.99.0_terser@5.46.2/node_modules/vite/dist/node/index.js";
+import { resolve } from "path";
+
+// vite/plugins/index.js
+import vue from "file:///Users/gxwebsoft/VUE/tms-erp-web-ws/node_modules/.pnpm/@vitejs+plugin-vue@5.2.4_vite@5.4.21_sass@1.99.0_terser@5.46.2__vue@3.5.34/node_modules/@vitejs/plugin-vue/dist/index.mjs";
+
+// vite/plugins/auto-import.js
+import autoImport from "file:///Users/gxwebsoft/VUE/tms-erp-web-ws/node_modules/.pnpm/unplugin-auto-import@0.11.5_@vueuse+core@14.3.0_vue@3.5.34__rollup@4.60.3/node_modules/unplugin-auto-import/dist/vite.js";
+function createAutoImport() {
+ return autoImport({
+ imports: ["vue", "vue-router", "vuex"],
+ dts: false
+ });
+}
+
+// vite/plugins/compression.js
+import compression from "file:///Users/gxwebsoft/VUE/tms-erp-web-ws/node_modules/.pnpm/vite-plugin-compression@0.5.1_vite@5.4.21_sass@1.99.0_terser@5.46.2_/node_modules/vite-plugin-compression/dist/index.mjs";
+function createCompression(env) {
+ const { VITE_BUILD_COMPRESS } = env;
+ const plugin = [];
+ if (VITE_BUILD_COMPRESS) {
+ const compressList = VITE_BUILD_COMPRESS.split(",");
+ if (compressList.includes("gzip")) {
+ plugin.push(
+ compression({
+ ext: ".gz",
+ deleteOriginFile: false
+ })
+ );
+ }
+ if (compressList.includes("brotli")) {
+ plugin.push(
+ compression({
+ ext: ".br",
+ algorithm: "brotliCompress",
+ deleteOriginFile: false
+ })
+ );
+ }
+ }
+ return plugin;
+}
+
+// vite/plugins/setup-extend.js
+import setupExtend from "file:///Users/gxwebsoft/VUE/tms-erp-web-ws/node_modules/.pnpm/vite-plugin-vue-setup-extend@0.4.0_vite@5.4.21_sass@1.99.0_terser@5.46.2_/node_modules/vite-plugin-vue-setup-extend/dist/index.mjs";
+function createSetupExtend() {
+ return setupExtend();
+}
+
+// vite/plugins/index.js
+function createVitePlugins(viteEnv, isBuild = false) {
+ const vitePlugins = [vue()];
+ vitePlugins.push(createAutoImport());
+ vitePlugins.push(createSetupExtend());
+ isBuild && vitePlugins.push(...createCompression(viteEnv));
+ return vitePlugins;
+}
+
+// vite.config.mjs
+var __vite_injected_original_dirname = "/Users/gxwebsoft/VUE/tms-erp-web-ws";
+var vite_config_default = ({
+ mode,
+ command
+}) => {
+ const env = loadEnv(mode, process.cwd());
+ const {
+ VITE_APP_ENV,
+ VITE_APP_BASE
+ } = env;
+ const isProd = VITE_APP_ENV === "production";
+ const buildConfig = {
+ target: "esnext",
+ minify: isProd ? "terser" : "esbuild"
+ // 根据环境选择压缩工具
+ };
+ if (isProd) {
+ buildConfig.terserOptions = {
+ compress: {
+ drop_console: true,
+ // 删除 console
+ drop_debugger: true
+ // 删除 debugger
+ },
+ format: {
+ comments: false
+ // 删除所有注释
+ }
+ };
+ buildConfig.rollupOptions = {
+ output: {
+ manualChunks: {
+ "element-plus": ["element-plus"],
+ "@smallwei/avue": ["@smallwei/avue"]
+ }
+ }
+ };
+ }
+ return defineConfig({
+ base: VITE_APP_BASE,
+ define: {
+ __VUE_I18N_FULL_INSTALL__: true,
+ __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,
+ proxy: {
+ "/api": {
+ target: "http://172.16.203.228:8000",
+ changeOrigin: true
+ }
+ }
+ },
+ resolve: {
+ alias: {
+ "~": resolve(__vite_injected_original_dirname, "./"),
+ "@": resolve(__vite_injected_original_dirname, "./src"),
+ components: resolve(__vite_injected_original_dirname, "./src/components"),
+ styles: resolve(__vite_injected_original_dirname, "./src/styles"),
+ utils: resolve(__vite_injected_original_dirname, "./src/utils")
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ api: "modern-compiler",
+ additionalData: `@use "@/styles/variables.scss" as *;`
+ }
+ }
+ },
+ plugins: createVitePlugins(env, command === "build"),
+ build: buildConfig,
+ optimizeDeps: {
+ esbuildOptions: {
+ target: "esnext"
+ }
+ }
+ });
+};
+export {
+ vite_config_default as default
+};
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubWpzIiwgInZpdGUvcGx1Z2lucy9pbmRleC5qcyIsICJ2aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQuanMiLCAidml0ZS9wbHVnaW5zL2NvbXByZXNzaW9uLmpzIiwgInZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2d4d2Vic29mdC9WVUUvdG1zLWVycC13ZWItd3Mvdml0ZS5jb25maWcubWpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9neHdlYnNvZnQvVlVFL3Rtcy1lcnAtd2ViLXdzL3ZpdGUuY29uZmlnLm1qc1wiO2ltcG9ydCB7XG4gIGRlZmluZUNvbmZpZyxcbiAgbG9hZEVudlxufSBmcm9tICd2aXRlJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJ1xuaW1wb3J0IGNyZWF0ZVZpdGVQbHVnaW5zIGZyb20gJy4vdml0ZS9wbHVnaW5zJztcbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCAoe1xuICBtb2RlLFxuICBjb21tYW5kXG59KSA9PiB7XG4gIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSlcbiAgY29uc3Qge1xuICAgIFZJVEVfQVBQX0VOVixcbiAgICBWSVRFX0FQUF9CQVNFXG4gIH0gPSBlbnZcbiAgLy8gXHU1MjI0XHU2NUFEXHU2NjJGXHU2MjUzXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU1MzA1XG4gIGNvbnN0IGlzUHJvZCA9IFZJVEVfQVBQX0VOViA9PT0gJ3Byb2R1Y3Rpb24nXG5cbiAgLy8gXHU2ODM5XHU2MzZFXHU2NjJGXHU1NDI2XHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHVGRjBDXHU1MkE4XHU2MDAxXHU4QkJFXHU3RjZFXHU1MzhCXHU3RjI5XHU5MTREXHU3RjZFXG4gIGNvbnN0IGJ1aWxkQ29uZmlnID0ge1xuICAgIHRhcmdldDogJ2VzbmV4dCcsXG4gICAgbWluaWZ5OiBpc1Byb2QgPyAndGVyc2VyJyA6ICdlc2J1aWxkJywgLy8gXHU2ODM5XHU2MzZFXHU3M0FGXHU1ODgzXHU5MDA5XHU2MkU5XHU1MzhCXHU3RjI5XHU1REU1XHU1MTc3XG4gIH07XG5cbiAgLy8gXHU1OTgyXHU2NzlDXHU2NjJGXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHVGRjBDXHU2REZCXHU1MkEwVGVyc2VyXHU3Njg0XHU5MTREXHU3RjZFXG4gIGlmIChpc1Byb2QpIHtcbiAgICBidWlsZENvbmZpZy50ZXJzZXJPcHRpb25zID0ge1xuICAgICAgY29tcHJlc3M6IHtcbiAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTUyMjBcdTk2NjQgY29uc29sZVxuICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlLCAvLyBcdTUyMjBcdTk2NjQgZGVidWdnZXJcbiAgICAgIH0sXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgY29tbWVudHM6IGZhbHNlIC8vIFx1NTIyMFx1OTY2NFx1NjI0MFx1NjcwOVx1NkNFOFx1OTFDQVxuICAgICAgfVxuICAgIH07XG4gICAgYnVpbGRDb25maWcucm9sbHVwT3B0aW9ucyA9IHtcbiAgICAgIG91dHB1dDoge1xuICAgICAgICBtYW51YWxDaHVua3M6IHtcbiAgICAgICAgICAnZWxlbWVudC1wbHVzJzogWydlbGVtZW50LXBsdXMnXSxcbiAgICAgICAgICAnQHNtYWxsd2VpL2F2dWUnOiBbJ0BzbWFsbHdlaS9hdnVlJ11cbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgYmFzZTogVklURV9BUFBfQkFTRSxcbiAgICBkZWZpbmU6IHtcbiAgICAgIF9fVlVFX0kxOE5fRlVMTF9JTlNUQUxMX186IHRydWUsXG4gICAgICBfX1ZVRV9JMThOX0xFR0FDWV9BUElfXzogdHJ1ZSxcbiAgICAgIF9fSU5UTElGWV9QUk9EX0RFVlRPT0xTX186IGZhbHNlLFxuICAgIH0sXG4gICAgLy8gc2VydmVyOiB7XG4gICAgLy8gICBwb3J0OiAyODg4LFxuICAgIC8vICAgcHJveHk6IHtcbiAgICAvLyAgICAgJy9hcGknOiB7XG4gICAgLy8gICAgICAgdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgLy8gICAgICAgLy90YXJnZXQ6ICdodHRwczovL3NhYmVyMy5ibGFkZXguY24vYXBpJyxcbiAgICAvLyAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgLy8gICAgICAgcmV3cml0ZTogcGF0aCA9PiBwYXRoLnJlcGxhY2UoL15cXC9hcGkvLCAnJyksXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9LFxuICAgIC8vIH0sXG4gICAgc2VydmVyOiB7XG4gICAgICBwb3J0OiAyODg5LFxuICAgICAgcHJveHk6IHtcbiAgICAgICAgJy9hcGknOiB7XG4gICAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzE3Mi4xNi4yMDMuMjI4OjgwMDAnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczoge1xuICAgICAgICAnfic6IHJlc29sdmUoX19kaXJuYW1lLCAnLi8nKSxcbiAgICAgICAgJ0AnOiByZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjJyksXG4gICAgICAgIGNvbXBvbmVudHM6IHJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMvY29tcG9uZW50cycpLFxuICAgICAgICBzdHlsZXM6IHJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMvc3R5bGVzJyksXG4gICAgICAgIHV0aWxzOiByZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjL3V0aWxzJyksXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBhcGk6ICdtb2Rlcm4tY29tcGlsZXInLFxuICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBgQHVzZSBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzXCIgYXMgKjtgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHBsdWdpbnM6IGNyZWF0ZVZpdGVQbHVnaW5zKGVudiwgY29tbWFuZCA9PT0gJ2J1aWxkJyksXG4gICAgYnVpbGQ6IGJ1aWxkQ29uZmlnLFxuICAgIG9wdGltaXplRGVwczoge1xuICAgICAgZXNidWlsZE9wdGlvbnM6IHtcbiAgICAgICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59O1xuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9neHdlYnNvZnQvVlVFL3Rtcy1lcnAtd2ViLXdzL3ZpdGUvcGx1Z2lucy9pbmRleC5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnMvaW5kZXguanNcIjtpbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSc7XG5cbmltcG9ydCBjcmVhdGVBdXRvSW1wb3J0IGZyb20gJy4vYXV0by1pbXBvcnQnO1xuaW1wb3J0IGNyZWF0ZUNvbXByZXNzaW9uIGZyb20gJy4vY29tcHJlc3Npb24nO1xuaW1wb3J0IGNyZWF0ZVNldHVwRXh0ZW5kIGZyb20gJy4vc2V0dXAtZXh0ZW5kJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVml0ZVBsdWdpbnModml0ZUVudiwgaXNCdWlsZCA9IGZhbHNlKSB7XG4gIGNvbnN0IHZpdGVQbHVnaW5zID0gW3Z1ZSgpXTtcbiAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVBdXRvSW1wb3J0KCkpO1xuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZVNldHVwRXh0ZW5kKCkpO1xuICBpc0J1aWxkICYmIHZpdGVQbHVnaW5zLnB1c2goLi4uY3JlYXRlQ29tcHJlc3Npb24odml0ZUVudikpO1xuICByZXR1cm4gdml0ZVBsdWdpbnM7XG59IiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9neHdlYnNvZnQvVlVFL3Rtcy1lcnAtd2ViLXdzL3ZpdGUvcGx1Z2lucy9hdXRvLWltcG9ydC5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQuanNcIjtpbXBvcnQgYXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQXV0b0ltcG9ydCgpIHtcbiAgcmV0dXJuIGF1dG9JbXBvcnQoe1xuICAgIGltcG9ydHM6IFsndnVlJywgJ3Z1ZS1yb3V0ZXInLCAndnVleCddLFxuICAgIGR0czogZmFsc2UsXG4gIH0pO1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9neHdlYnNvZnQvVlVFL3Rtcy1lcnAtd2ViLXdzL3ZpdGUvcGx1Z2lucy9jb21wcmVzc2lvbi5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnMvY29tcHJlc3Npb24uanNcIjtpbXBvcnQgY29tcHJlc3Npb24gZnJvbSAndml0ZS1wbHVnaW4tY29tcHJlc3Npb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVDb21wcmVzc2lvbihlbnYpIHtcbiAgY29uc3QgeyBWSVRFX0JVSUxEX0NPTVBSRVNTIH0gPSBlbnY7XG4gIGNvbnN0IHBsdWdpbiA9IFtdO1xuICBpZiAoVklURV9CVUlMRF9DT01QUkVTUykge1xuICAgIGNvbnN0IGNvbXByZXNzTGlzdCA9IFZJVEVfQlVJTERfQ09NUFJFU1Muc3BsaXQoJywnKTtcbiAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdnemlwJykpIHtcbiAgICAgIHBsdWdpbi5wdXNoKFxuICAgICAgICBjb21wcmVzc2lvbih7XG4gICAgICAgICAgZXh0OiAnLmd6JyxcbiAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjb21wcmVzc0xpc3QuaW5jbHVkZXMoJ2Jyb3RsaScpKSB7XG4gICAgICBwbHVnaW4ucHVzaChcbiAgICAgICAgY29tcHJlc3Npb24oe1xuICAgICAgICAgIGV4dDogJy5icicsXG4gICAgICAgICAgYWxnb3JpdGhtOiAnYnJvdGxpQ29tcHJlc3MnLFxuICAgICAgICAgIGRlbGV0ZU9yaWdpbkZpbGU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBsdWdpbjtcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL2d4d2Vic29mdC9WVUUvdG1zLWVycC13ZWItd3Mvdml0ZS9wbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvZ3h3ZWJzb2Z0L1ZVRS90bXMtZXJwLXdlYi13cy92aXRlL3BsdWdpbnMvc2V0dXAtZXh0ZW5kLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9neHdlYnNvZnQvVlVFL3Rtcy1lcnAtd2ViLXdzL3ZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQuanNcIjtpbXBvcnQgc2V0dXBFeHRlbmQgZnJvbSAndml0ZS1wbHVnaW4tdnVlLXNldHVwLWV4dGVuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwRXh0ZW5kKCkge1xuICByZXR1cm4gc2V0dXBFeHRlbmQoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBNlI7QUFBQSxFQUMzUjtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlOzs7QUNKOFIsT0FBTyxTQUFTOzs7QUNBSixPQUFPLGdCQUFnQjtBQUUxVSxTQUFSLG1CQUFvQztBQUN6QyxTQUFPLFdBQVc7QUFBQSxJQUNoQixTQUFTLENBQUMsT0FBTyxjQUFjLE1BQU07QUFBQSxJQUNyQyxLQUFLO0FBQUEsRUFDUCxDQUFDO0FBQ0g7OztBQ1BrVSxPQUFPLGlCQUFpQjtBQUUzVSxTQUFSLGtCQUFtQyxLQUFLO0FBQzdDLFFBQU0sRUFBRSxvQkFBb0IsSUFBSTtBQUNoQyxRQUFNLFNBQVMsQ0FBQztBQUNoQixNQUFJLHFCQUFxQjtBQUN2QixVQUFNLGVBQWUsb0JBQW9CLE1BQU0sR0FBRztBQUNsRCxRQUFJLGFBQWEsU0FBUyxNQUFNLEdBQUc7QUFDakMsYUFBTztBQUFBLFFBQ0wsWUFBWTtBQUFBLFVBQ1YsS0FBSztBQUFBLFVBQ0wsa0JBQWtCO0FBQUEsUUFDcEIsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQ0EsUUFBSSxhQUFhLFNBQVMsUUFBUSxHQUFHO0FBQ25DLGFBQU87QUFBQSxRQUNMLFlBQVk7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLFdBQVc7QUFBQSxVQUNYLGtCQUFrQjtBQUFBLFFBQ3BCLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7OztBQzFCb1UsT0FBTyxpQkFBaUI7QUFFN1UsU0FBUixvQkFBcUM7QUFDMUMsU0FBTyxZQUFZO0FBQ3JCOzs7QUhFZSxTQUFSLGtCQUFtQyxTQUFTLFVBQVUsT0FBTztBQUNsRSxRQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUM7QUFDMUIsY0FBWSxLQUFLLGlCQUFpQixDQUFDO0FBQ25DLGNBQVksS0FBSyxrQkFBa0IsQ0FBQztBQUNwQyxhQUFXLFlBQVksS0FBSyxHQUFHLGtCQUFrQixPQUFPLENBQUM7QUFDekQsU0FBTztBQUNUOzs7QURaQSxJQUFNLG1DQUFtQztBQU96QyxJQUFPLHNCQUFRLENBQUM7QUFBQSxFQUNkO0FBQUEsRUFDQTtBQUNGLE1BQU07QUFDSixRQUFNLE1BQU0sUUFBUSxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQ3ZDLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sU0FBUyxpQkFBaUI7QUFHaEMsUUFBTSxjQUFjO0FBQUEsSUFDbEIsUUFBUTtBQUFBLElBQ1IsUUFBUSxTQUFTLFdBQVc7QUFBQTtBQUFBLEVBQzlCO0FBR0EsTUFBSSxRQUFRO0FBQ1YsZ0JBQVksZ0JBQWdCO0FBQUEsTUFDMUIsVUFBVTtBQUFBLFFBQ1IsY0FBYztBQUFBO0FBQUEsUUFDZCxlQUFlO0FBQUE7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsUUFBUTtBQUFBLFFBQ04sVUFBVTtBQUFBO0FBQUEsTUFDWjtBQUFBLElBQ0Y7QUFDQSxnQkFBWSxnQkFBZ0I7QUFBQSxNQUMxQixRQUFRO0FBQUEsUUFDTixjQUFjO0FBQUEsVUFDWixnQkFBZ0IsQ0FBQyxjQUFjO0FBQUEsVUFDL0Isa0JBQWtCLENBQUMsZ0JBQWdCO0FBQUEsUUFDckM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLGFBQWE7QUFBQSxJQUNsQixNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTiwyQkFBMkI7QUFBQSxNQUMzQix5QkFBeUI7QUFBQSxNQUN6QiwyQkFBMkI7QUFBQSxJQUM3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVlBLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMLFFBQVE7QUFBQSxVQUNOLFFBQVE7QUFBQSxVQUNSLGNBQWM7QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxPQUFPO0FBQUEsUUFDTCxLQUFLLFFBQVEsa0NBQVcsSUFBSTtBQUFBLFFBQzVCLEtBQUssUUFBUSxrQ0FBVyxPQUFPO0FBQUEsUUFDL0IsWUFBWSxRQUFRLGtDQUFXLGtCQUFrQjtBQUFBLFFBQ2pELFFBQVEsUUFBUSxrQ0FBVyxjQUFjO0FBQUEsUUFDekMsT0FBTyxRQUFRLGtDQUFXLGFBQWE7QUFBQSxNQUN6QztBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILHFCQUFxQjtBQUFBLFFBQ25CLE1BQU07QUFBQSxVQUNKLEtBQUs7QUFBQSxVQUNMLGdCQUFnQjtBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFNBQVMsa0JBQWtCLEtBQUssWUFBWSxPQUFPO0FBQUEsSUFDbkQsT0FBTztBQUFBLElBQ1AsY0FBYztBQUFBLE1BQ1osZ0JBQWdCO0FBQUEsUUFDZCxRQUFRO0FBQUEsTUFDVjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
From 5033dc9e431a8c8e5d5fde1fde178e2bf4e909f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 19:23:33 +0800
Subject: [PATCH 02/10] =?UTF-8?q?feat(sidebar):=20=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=AD=90=E8=B7=AF=E7=94=B1=E5=9B=9E=E9=80=80=E9=AB=98=E4=BA=AE?=
=?UTF-8?q?=E7=88=B6=E8=8F=9C=E5=8D=95=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加 menuPaths 集合收录全站菜单路径
- 在 activeMenu 中判断子路由路径是否存在于菜单路径集合
- 对不在集合中的子路由,匹配最长前缀父菜单路径进行高亮回退
- 实现子路由(如 /vehicle/customer-archive/form)对父菜单自动高亮回退功能
- 提升侧边栏菜单选中状态的准确性和用户体验
---
src/page/index/sidebar/index.vue | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/src/page/index/sidebar/index.vue b/src/page/index/sidebar/index.vue
index e98ce1f..ef2f0e7 100644
--- a/src/page/index/sidebar/index.vue
+++ b/src/page/index/sidebar/index.vue
@@ -44,6 +44,19 @@ export default {
collect(this.menu);
return indexes;
},
+ // 全站菜单路径集合,用于子路由(如 /vehicle/customer-archive/form)回退高亮父菜单
+ menuPaths() {
+ const props = website.menu;
+ const set = new Set();
+ const collect = list => {
+ (list || []).forEach(item => {
+ if (item[props.path]) set.add(item[props.path]);
+ collect(item[props.children]);
+ });
+ };
+ collect(this.menu);
+ return set;
+ },
activeMenu() {
const route = this.$route;
const { meta, path } = route;
@@ -55,6 +68,15 @@ export default {
if (fullPath !== path && this.menuIndexes.has(fullPath)) {
return fullPath;
}
+ // 子路由(如 /vehicle/customer-archive/form)自动回退高亮最长前缀匹配的父菜单
+ if (!this.menuPaths.has(path)) {
+ const matched = [...this.menuPaths]
+ .filter(p => path.startsWith(p + '/'))
+ .sort((a, b) => b.length - a.length);
+ if (matched.length) {
+ return matched[0];
+ }
+ }
return path;
},
},
From cf39d63396148275088d83ba03e4d781701aa8c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 19:25:47 +0800
Subject: [PATCH 03/10] =?UTF-8?q?style(contract-manage):=20=E5=BC=BA?=
=?UTF-8?q?=E5=88=B6=E8=AE=BE=E7=BD=AE=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97=E9=A2=9C=E8=89=B2=E4=B8=BA?=
=?UTF-8?q?=E7=BA=A2=E8=89=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在合同管理组件的提示文字颜色样式中添加!important
- 确保提示文字颜色样式优先应用
- 修正样式优先级问题避免被覆盖
---
src/views/business/contract-manage.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue
index 34df465..4262909 100644
--- a/src/views/business/contract-manage.vue
+++ b/src/views/business/contract-manage.vue
@@ -2399,7 +2399,7 @@ export default {
line-height: 1.2;
}
.contract-manage-form__tip {
- color: #ff0000;
+ color: #ff0000 !important;
font-size: 12px;
}
From f21e3d56d9c013c4940ed03e07fa617d16ab3caa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 19:51:46 +0800
Subject: [PATCH 04/10] =?UTF-8?q?fix(sidebar):=20=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E5=AD=90=E8=B7=AF=E7=94=B1=E9=AB=98=E4=BA=AE=E4=B8=A2=E5=A4=B1?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 menuPaths 计算属性,递归收集全站菜单路径
- 修改 activeMenu 逻辑,针对无匹配菜单路径尝试最长前缀匹配
- 解决子路由菜单高亮消失问题,支持全站多场景适用
- 优化 master-order-dispatch 页面 select 宽度,防止 append 区域撑爆
- 修正运输单位 select 固定宽度为 92px,并防止被父容器拉伸
- 调整 business-crud-page 任务备注和附加选择器宽度及样式
- 减少 process-config 备注输入区域行数,提升界面紧凑度
---
.workbuddy/memory/2026-08-25.md | 17 ++++++++++++++
.../components/business-crud-page.vue | 23 ++++++++++++++++---
.../components/master-order-dispatch.vue | 4 ++--
src/views/business/process-config.vue | 2 +-
4 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/.workbuddy/memory/2026-08-25.md b/.workbuddy/memory/2026-08-25.md
index b396de2..dcc15c6 100644
--- a/.workbuddy/memory/2026-08-25.md
+++ b/.workbuddy/memory/2026-08-25.md
@@ -133,3 +133,20 @@
- 定位:`src/views/vehicle/customer-archive.vue` 第 4637-4666 行 `.qualification-upload-bar`(grid 1fr auto 1fr 改 flex 的二次修正)。
- 修复:保留 flex 容器,按钮区 `.vehicle-attachment-upload > :deep(.el-upload)` `flex: 0 0 auto` 贴左固定;描述 `:deep(.el-upload__tip)` `margin-left: 30px + white-space: nowrap + overflow:hidden + text-overflow:ellipsis + text-align:left`,与按钮同行紧贴、间距固定 30px、超长文案省略号。
- 结论:布局"「上传附件」按钮 ←30px→ 「支持pdf…」描述",单行两端对齐。
+
+## sidebar 子路由高亮回退(方案B)
+- 需求:用户反馈点「客商档案」菜单后,再点新增/编辑/查看(跳子路由 /vehicle/customer-archive/form),左侧菜单选中灰底消失。
+- 根因:sidebar `activeMenu` getter 在无 `meta.activeMenu` 时退到 `route.path`(即子路由 /vehicle/customer-archive/form),与菜单 path /vehicle/customer-archive 不匹配,`
` 找不到项 → 高亮丢失。同因还影响 /business/contract-manage/change 等独立子路由。
+- 修复(方案B,通用兜底,改 1 文件):`src/page/index/sidebar/index.vue`
+ - 新增 `menuPaths` computed:递归收集全站菜单 `website.menu` 的 `path` 字段进 Set。
+ - `activeMenu` 在 `return path` 前加分支:当 `path` 不在 menuPaths 时,过滤出所有 `path.startsWith(p + '/')` 的菜单路径,按长度降序取最长前缀匹配者作为高亮项(即 /vehicle/customer-archive/form → /vehicle/customer-archive)。
+ - 原有 `meta.activeMenu` 与 `menuIndexes`(带参菜单精确匹配)分支保持不变;路径完全相同的路由仍精确匹配,不受影响。
+- 结论:一次改动全站受益,所有"父菜单 + 独立子表单页"场景(customer-archive/form、contract-manage/change 等)自动保持父菜单高亮,无需逐路由配 activeMenu。HMR 已生效。
+
+## master-order-dispatch 运费单位 select 撑爆 append 槽
+- 需求:用户截图 dispatch 页"任务信息"块下"数量 → 吨"与"单价 → 元/吨"两个 select 宽度比左侧 input 还宽,红框标记要求改小。
+- 根因:`src/views/business/components/master-order-dispatch.vue` 第 702 行 `.dispatch-form` 全局规则 `:deep(.el-input), :deep(.el-select), :deep(.el-date-editor), :deep(.el-input-number) { width: 100%; }` 把整个 dispatch 表单内**所有** el-select 强制 100% 宽;这两个 select 处于 `el-input` 的 `#append` slot 内,被强制撑开 append 容器,append 又把整个 `el-col :span="6"` 列占满。第 707 行 `.freight-form { :deep(.freight-unit-select) { width: 92px; } }` 想兜底 92px,但因 specificity 与覆盖时机问题未生效。
+- 修复(最小改动,2 处):
+ - 行 702 末尾追加 `:deep(.el-input-group__append .el-select) { width: auto; }`,使 append 内的 select 退回内容自适应宽度(避免被 100% 拉伸)。
+ - 行 707 强化兜底:`.freight-unit-select` 加 `flex: 0 0 92px; min-width: 0;`,固定 92px 防止 append flex 拉伸。
+- 结论:单位 select(吨/元/吨)宽度由内容决定(≈92px),不再撑爆 append 与列;其它顶层 select(承运商/币种等)仍维持 100% 宽,行为不变。
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index f724e86..6bde282 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -13041,7 +13041,16 @@ export default {
}
&__task-remark {
- grid-column: span 3;
+ grid-column: 1 / -1;
+
+ :deep(.el-form-item__content) {
+ width: 100%;
+ }
+
+ :deep(.el-input),
+ :deep(.el-textarea) {
+ width: 100%;
+ }
}
&__task-note {
@@ -13111,8 +13120,16 @@ export default {
}
&__append-select--wide {
- width: 108px;
- min-width: 108px;
+ width: 96px;
+ min-width: 96px;
+
+ // 仅这两个窄 append 内的 placeholder 文字水平居中
+ :deep(.el-select__placeholder) {
+ left: 50% !important;
+ transform: translateY(-50%) translateX(-50%) !important;
+ text-align: center;
+ width: auto;
+ }
}
:deep(.business-crud-page__goods-info-cell .cell) {
diff --git a/src/views/business/components/master-order-dispatch.vue b/src/views/business/components/master-order-dispatch.vue
index 5b4efe4..8a45236 100644
--- a/src/views/business/components/master-order-dispatch.vue
+++ b/src/views/business/components/master-order-dispatch.vue
@@ -699,12 +699,12 @@ export default {
.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%; } }
+.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%; } :deep(.el-input-group__append .el-select) { width: auto; } }
.transport-type-field :deep(.el-input) { width: 240px; }
.goods-heading { display: flex; align-items: center; justify-content: space-between; margin: 0 -24px 12px; padding: 14px 24px; border-top: 1px solid #eff1f7; border-bottom: 1px solid #eff1f7; h3 { margin: 0; padding-left: 12px; border-left: 4px solid #409eff; font-size: 16px; } span { color: #909399; font-size: 13px; } }
.freight-heading { margin: 16px 0 12px; h3 { margin: 0; padding-left: 12px; border-left: 4px solid #409eff; font-size: 16px; } }
.goods-table { :deep(th.el-table__cell), :deep(td.el-table__cell) { border-color: #eff1f7; } :deep(.el-table__row--striped td.el-table__cell) { background: #fafafa; } :deep(.goods-table__remaining .cell) { white-space: nowrap; } :deep(.goods-table__dispatch .el-input) { width: 100%; min-width: 0; } :deep(.goods-table__cargo-type .el-input__inner), :deep(.goods-table__cargo-name .el-select__selected-item) { color: #303133; } }
-.freight-form { :deep(.freight-unit-select) { width: 92px; } }
+.freight-form { :deep(.freight-unit-select) { width: 92px; flex: 0 0 92px; min-width: 0; } }
.carrier-type-form { margin-top: 16px; }
.carrier-form { padding-top: 8px; }
.segment-actions { display: flex; justify-content: flex-end; gap: 12px; padding-top: 4px; }
diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue
index 9ff0400..e06458c 100644
--- a/src/views/business/process-config.vue
+++ b/src/views/business/process-config.vue
@@ -170,7 +170,7 @@
Date: Tue, 25 Aug 2026 19:57:17 +0800
Subject: [PATCH 05/10] =?UTF-8?q?refactor(ui):=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E5=A4=9A=E5=A4=84=E6=96=87=E6=9C=AC=E6=A1=86=E8=A1=8C=E6=95=B0?=
=?UTF-8?q?=E4=B8=BA2=E8=A1=8C=E4=BB=A5=E4=BC=98=E5=8C=96=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2=E5=B8=83=E5=B1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将锁定和解锁原因文本框行数由3改为2行
- 调整支付单据和发票相关备注输入框行数为2行
- 优化业务组件中多处备注和说明文本框行数为2行
- 修改异常处理及风险处置页面文本框行数为2行
- 更新项目申请及合同变更中的多处文本框行数为2行
- 在发货地址输入框中添加“选择”链接,提升地址选择体验
- 规范备注输入框显示,统一字数限制及行数设置
- 统一调整信用评分、路线变更备注输入框行数及样式样式调整
---
.../components/business-crud-page.vue | 36 ++++++++++++++++---
src/views/business/contract-manage-change.vue | 2 +-
src/views/business/contract-manage.vue | 2 +-
src/views/business/loading-manage.vue | 4 +--
src/views/business/project-apply.vue | 12 +++----
src/views/payment/bill-ledger-form.vue | 2 +-
src/views/payment/bill-payment-form.vue | 2 +-
.../payment/invoice-application-form.vue | 2 +-
src/views/payment/invoice-receipt-form.vue | 2 +-
.../payment/receipt-claim-record-form.vue | 2 +-
src/views/payment/receipt-flow-form.vue | 2 +-
src/views/system/authlock.vue | 4 +--
src/views/system/user.vue | 2 +-
src/views/transit/exception-disposal.vue | 2 +-
src/views/transit/risk-disposal.vue | 2 +-
.../vehicle/credit-score-quantification.vue | 2 +-
16 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 6bde282..7ccbe10 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -2857,7 +2857,7 @@
+ >
+
+ 选择
+
+
联系人
联系方式
@@ -3536,8 +3544,16 @@
+ >
+
+ 选择
+
+
联系人
联系方式
@@ -13200,6 +13216,16 @@ export default {
}
}
+ &__address-choose-link {
+ display: inline-flex;
+ align-items: center;
+ height: 100%;
+ padding: 0 4px;
+ font-size: 13px;
+ line-height: 1;
+ cursor: pointer;
+ }
+
&__dispatch-shipping-form &__route-address-row {
grid-template-columns: 260px minmax(280px, 1fr) 58px minmax(160px, 220px) 72px minmax(
160px,
diff --git a/src/views/business/contract-manage-change.vue b/src/views/business/contract-manage-change.vue
index 3118d06..5cf0529 100644
--- a/src/views/business/contract-manage-change.vue
+++ b/src/views/business/contract-manage-change.vue
@@ -76,7 +76,7 @@
上传附件
-
+
diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue
index 4262909..7c7f9c8 100644
--- a/src/views/business/contract-manage.vue
+++ b/src/views/business/contract-manage.vue
@@ -294,7 +294,7 @@
拖拽调整顺序{{ routeChangeTypeText(index) }}{{ node.address }}{{ tag }}
-
+
{{ row.content || '-' }}
diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue
index 4fb3219..ce81605 100644
--- a/src/views/business/project-apply.vue
+++ b/src/views/business/project-apply.vue
@@ -428,7 +428,7 @@
diff --git a/src/views/payment/invoice-receipt-form.vue b/src/views/payment/invoice-receipt-form.vue
index 45925ce..d783b48 100644
--- a/src/views/payment/invoice-receipt-form.vue
+++ b/src/views/payment/invoice-receipt-form.vue
@@ -232,7 +232,7 @@
v-model="form.remark"
:disabled="readonly"
type="textarea"
- :rows="3"
+ :rows="2"
maxlength="200"
show-word-limit
/>
diff --git a/src/views/payment/receipt-claim-record-form.vue b/src/views/payment/receipt-claim-record-form.vue
index 5c46897..9abbc6a 100644
--- a/src/views/payment/receipt-claim-record-form.vue
+++ b/src/views/payment/receipt-claim-record-form.vue
@@ -145,7 +145,7 @@
-
+
diff --git a/src/views/payment/receipt-flow-form.vue b/src/views/payment/receipt-flow-form.vue
index 32dd9b9..c6fb752 100644
--- a/src/views/payment/receipt-flow-form.vue
+++ b/src/views/payment/receipt-flow-form.vue
@@ -159,7 +159,7 @@
>
diff --git a/src/views/system/authlock.vue b/src/views/system/authlock.vue
index 883c783..f45f8d9 100644
--- a/src/views/system/authlock.vue
+++ b/src/views/system/authlock.vue
@@ -88,7 +88,7 @@
@@ -144,7 +144,7 @@
diff --git a/src/views/system/user.vue b/src/views/system/user.vue
index 1442bbe..4a93510 100644
--- a/src/views/system/user.vue
+++ b/src/views/system/user.vue
@@ -200,7 +200,7 @@
仅所属组织全部组织自定义
包含下级仅本级
-
+
diff --git a/src/views/transit/exception-disposal.vue b/src/views/transit/exception-disposal.vue
index de4bad0..a202a86 100644
--- a/src/views/transit/exception-disposal.vue
+++ b/src/views/transit/exception-disposal.vue
@@ -200,7 +200,7 @@
type="textarea"
maxlength="500"
show-word-limit
- :rows="4"
+ :rows="2"
placeholder="请输入"
/>
diff --git a/src/views/transit/risk-disposal.vue b/src/views/transit/risk-disposal.vue
index fa49742..36c5118 100644
--- a/src/views/transit/risk-disposal.vue
+++ b/src/views/transit/risk-disposal.vue
@@ -158,7 +158,7 @@
v-model="disposeForm.disposalRemark"
type="textarea"
maxlength="500"
- :rows="4"
+ :rows="2"
:disabled="dialog.readonly"
/>
diff --git a/src/views/vehicle/credit-score-quantification.vue b/src/views/vehicle/credit-score-quantification.vue
index cbf0124..dbef287 100644
--- a/src/views/vehicle/credit-score-quantification.vue
+++ b/src/views/vehicle/credit-score-quantification.vue
@@ -105,7 +105,7 @@
From 8bf0c31dcdb39e9ce5629ad7186bb250f9a4fd86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 20:00:43 +0800
Subject: [PATCH 06/10] =?UTF-8?q?style(loading-manage):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E5=8F=98=E6=9B=B4=E5=A4=87=E6=B3=A8=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=A1=86=E8=A1=8C=E6=95=B0=E5=8F=8A=E5=8D=A1=E7=89=87=E6=9C=80?=
=?UTF-8?q?=E5=B0=8F=E9=AB=98=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 设置变更备注输入框默认显示2行,提升输入体验
- 为 section-card 添加最小高度限制,防止内容过少时布局过紧
- 注释掉无用样式,保持代码整洁
---
src/views/business/loading-manage.vue | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue
index e644e63..a85e52b 100644
--- a/src/views/business/loading-manage.vue
+++ b/src/views/business/loading-manage.vue
@@ -957,7 +957,7 @@
拖拽调整顺序{{ routeChangeTypeText(index) }}{{ node.address }}{{ tag }}
-
+
{{ row.content || '-' }}
@@ -2631,6 +2631,9 @@ export default {
gap: 16px;
align-items: start;
//margin-bottom: 12px;
+ .section-card {
+ min-height: 257px;
+ }
}
.loading-manage-dialog__candidate-actions,
From fdd17c5878845d0cbad6f99cc00111a2d4396102 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 20:07:16 +0800
Subject: [PATCH 07/10] =?UTF-8?q?style(loading-manage):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E5=8F=98=E6=9B=B4=E5=A4=87=E6=B3=A8=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=A1=86=E8=A1=8C=E6=95=B0=E5=8F=8A=E5=8D=A1=E7=89=87=E6=9C=80?=
=?UTF-8?q?=E5=B0=8F=E9=AB=98=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 设置变更备注输入框默认显示2行,提升输入体验
- 为 section-card 添加最小高度限制,防止内容过少时布局过紧
- 注释掉无用样式,保持代码整洁
---
.../components/business-crud-page.vue | 21 ++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 7ccbe10..7a922a6 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -869,11 +869,12 @@
>
@@ -990,11 +991,12 @@
>
@@ -1058,12 +1060,13 @@
class="business-crud-page__task-note business-crud-page__task-span-4"
>
@@ -3990,8 +3993,11 @@
@@ -4133,6 +4139,7 @@
:rows="2"
maxlength="200"
show-word-limit
+ :disabled="dialogReadonly"
placeholder="请输入,200字以内"
/>
From d58f73ab50a95266355979babfd9f59912308ea4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 20:18:19 +0800
Subject: [PATCH 08/10] =?UTF-8?q?style(loading-manage):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E5=8F=98=E6=9B=B4=E5=A4=87=E6=B3=A8=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=A1=86=E8=A1=8C=E6=95=B0=E5=8F=8A=E5=8D=A1=E7=89=87=E6=9C=80?=
=?UTF-8?q?=E5=B0=8F=E9=AB=98=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 设置变更备注输入框默认显示2行,提升输入体验
- 为 section-card 添加最小高度限制,防止内容过少时布局过紧
- 注释掉无用样式,保持代码整洁
---
.../components/business-crud-page.vue | 40 +++++++++----------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 7a922a6..b60ce53 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -319,15 +319,14 @@
-
-
-
+
+ 选择
+
联系人
-
-
-
+
+ 选择
+
联系人
联系方式
@@ -5155,7 +5153,7 @@ import { openImportDialog } from '@/utils/import-excel';
import { applyTableMenuWidth } from '@/utils/table-menu';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { isMobile } from '@/utils/validate';
-import { List, Location, Rank, Search } from '@element-plus/icons-vue';
+import { Location, Rank, Search } from '@element-plus/icons-vue';
import { ElImageViewer } from 'element-plus';
import { OpenFileViewer } from '@open-file-viewer/vue';
import {
@@ -5449,7 +5447,6 @@ export default {
},
data() {
return {
- List,
Location,
Search,
form: {},
@@ -15339,4 +15336,7 @@ export default {
top: 92px !important;
left: 0 !important;
}
+.el-input__icon {
+ color: #1e90ff !important;
+}
From 112acbbf349ba3740f00a09dbc958a571ab55fa6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 20:37:47 +0800
Subject: [PATCH 09/10] =?UTF-8?q?refactor(business):=20=E7=94=A8el-button?=
=?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=9C=B0=E5=9D=80=E9=80=89=E6=8B=A9=E9=93=BE?=
=?UTF-8?q?=E6=8E=A5=E5=B9=B6=E7=BB=9F=E4=B8=80=E5=9B=BE=E6=A0=87=E6=A0=B7?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将business-crud-page.vue中发货地、收货地地址选择操作由el-link替换为带提示的el-button组件
- 所有地址选择按钮统一使用OfficeBuilding图标代替List图标
- master-order-editor.vue中的常用地址选择按钮图标由List改为OfficeBuilding
- 增加样式定义调整地址选择按钮图标大小和颜色
- 优化按钮交互体验,保持禁用状态时按钮不可点击
---
.../components/business-crud-page.vue | 89 +++++++++++--------
.../components/master-order-editor.vue | 14 +--
2 files changed, 63 insertions(+), 40 deletions(-)
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index b60ce53..644d8dd 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -319,14 +319,16 @@
-
- 选择
-
+
+
+
联系人
联系方式
-
- 选择
-
+
+
+
@@ -386,26 +390,30 @@
-
- 选择
-
+
+
+
联系人
联系方式
-
- 选择
-
+
+
+
@@ -5153,7 +5161,7 @@ import { openImportDialog } from '@/utils/import-excel';
import { applyTableMenuWidth } from '@/utils/table-menu';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { isMobile } from '@/utils/validate';
-import { Location, Rank, Search } from '@element-plus/icons-vue';
+import { Location, OfficeBuilding, Rank, Search } from '@element-plus/icons-vue';
import { ElImageViewer } from 'element-plus';
import { OpenFileViewer } from '@open-file-viewer/vue';
import {
@@ -5448,6 +5456,7 @@ export default {
data() {
return {
Location,
+ OfficeBuilding,
Search,
form: {},
suppressTransportTypeClear: false,
@@ -13203,13 +13212,23 @@ export default {
padding: 0;
}
+ .business-crud-page__map-suffix {
+ color: #409eff;
+ }
+
+ :deep(.el-input .el-input__icon) {
+ color: #409eff;
+ }
+
&--shipping-template {
grid-template-columns:
220px minmax(220px, 1fr) 58px minmax(220px, 280px) 72px minmax(220px, 280px)
40px;
+ }
- .business-crud-page__map-suffix {
- color: #409eff;
+ .business-crud-page__address-pick-btn {
+ :deep(.el-icon) {
+ font-size: 22px;
}
}
}
diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue
index 3f35c80..0205ef7 100644
--- a/src/views/business/components/master-order-editor.vue
+++ b/src/views/business/components/master-order-editor.vue
@@ -63,7 +63,7 @@
visible && loadRegionOptions()" @change="value => handleAddressRegionChange(`route-${index}`, value)" />
visible && loadRegionOptions()" @change="value => handleAddressRegionChange(`route-${index}`, value)" />
@@ -104,7 +104,7 @@
@@ -549,7 +549,7 @@ import { getLazyTree as getRegionLazyTree } from '@/api/base/region';
import { getList as getCommonCargoList } from '@/api/business/common-cargo';
import { exportBlob, importBlob } from '@/api/common';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
-import { List, Search } from '@element-plus/icons-vue';
+import { OfficeBuilding, Search } from '@element-plus/icons-vue';
import { ElImageViewer } from 'element-plus';
import { OpenFileViewer } from '@open-file-viewer/vue';
import { fallbackPlugin, imagePlugin, officePlugin, pdfPlugin, textPlugin } from '@open-file-viewer/core';
@@ -581,7 +581,7 @@ export default {
emits: ['back', 'dispatch'],
data() {
return {
- List,
+ OfficeBuilding,
Search,
loading: false,
projects: [],
@@ -1965,6 +1965,10 @@ export default {
}
.address-picker-button {
flex: 0 0 auto;
+
+ :deep(.el-icon) {
+ font-size: 22px;
+ }
}
}
.route-step-title {
From 325e708ef11a3248abbd288e6087058b3683980a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 25 Aug 2026 20:42:11 +0800
Subject: [PATCH 10/10] =?UTF-8?q?style(business-crud-page):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E5=9C=B0=E5=9B=BE=E6=A0=87=E8=AE=B0=E5=92=8C=E8=BE=93?=
=?UTF-8?q?=E5=85=A5=E6=A1=86=E5=9B=BE=E6=A0=87=E5=AD=97=E4=BD=93=E5=A4=A7?=
=?UTF-8?q?=E5=B0=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将地图标记后缀文字字体大小设置为18px
- 设置输入框图标的字体大小为18px
- 调整配送模板地图后缀的字体大小为18px
- 保持原有颜色和悬停样式不变
---
src/views/business/components/business-crud-page.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index 644d8dd..b44c0b2 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -13214,10 +13214,12 @@ export default {
.business-crud-page__map-suffix {
color: #409eff;
+ font-size: 18px;
}
:deep(.el-input .el-input__icon) {
color: #409eff;
+ font-size: 18px;
}
&--shipping-template {
@@ -13286,6 +13288,7 @@ export default {
&__map-suffix {
cursor: pointer;
color: #909399;
+ font-size: 18px;
&:hover {
color: #409eff;