From f9f82218709a406c47876dfff942a28c63431d70 Mon Sep 17 00:00:00 2001
From: b2894lxlx <517289602@qq.com>
Date: Tue, 4 Aug 2026 12:17:49 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=8C=E5=96=84=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=202=E3=80=81=E5=AE=8C=E5=96=84=E5=90=88=E5=90=8C=203=E3=80=81?=
=?UTF-8?q?=E5=AE=8C=E5=96=84=E8=B4=B9=E7=94=A8=E9=A1=B9=204=E3=80=81?=
=?UTF-8?q?=E5=8F=B8=E6=9C=BA=E7=AE=A1=E7=90=86=E5=AF=B9=E6=8E=A5OCR=205?=
=?UTF-8?q?=E3=80=81=E5=AE=8C=E5=96=84=E8=BF=90=E8=BE=93=E8=AE=A1=E5=88=92?=
=?UTF-8?q?=206=E3=80=81=E5=AE=8C=E5=96=84=E4=B8=B4=E6=97=B6=E9=A2=9D?=
=?UTF-8?q?=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
AGENTS.md | 2 +-
src/api/business/project-apply.js | 14 +
src/api/business/waybill-manage.js | 12 +-
src/api/transportCapacity/driver.js | 20 +
.../transportCapacity/transport-vehicle.js | 9 +
src/components/image-upload-field/main.vue | 58 +-
.../vehicle-attachment-upload/main.vue | 13 +-
src/option/business/common.js | 4 +-
src/option/business/contract-manage.js | 411 +-
src/option/business/process-config.js | 5 +-
src/option/business/project-apply.js | 103 +-
src/option/business/shipping-template.js | 2 +-
src/option/business/temporary-credit-limit.js | 371 +-
src/option/business/transport-plan.js | 629 +-
src/option/business/waybill-manage.js | 761 ++-
src/styles/element-ui.scss | 23 +-
src/utils/table-menu.js | 16 +
src/utils/upload.js | 12 +
src/views/base/cargo-type.vue | 6 +-
src/views/base/fee-item.vue | 355 +-
.../components/business-crud-page.vue | 5056 ++++++++++++++++-
src/views/business/project-apply.vue | 528 +-
src/views/desk/notice-composition.vue | 2 +
src/views/desk/notice.vue | 2 +
src/views/resource/attach.vue | 9 +-
src/views/resource/oss.vue | 2 +
src/views/system/menu.vue | 8 +-
src/views/system/tenant.vue | 2 +
src/views/system/userinfo.vue | 11 +-
src/views/transportCapacity/driver.vue | 259 +-
src/views/transportCapacity/ship.vue | 6 +-
src/views/transportCapacity/vehicle.vue | 145 +-
src/views/vehicle/customer-archive.vue | 9 +-
src/views/vehicle/insurance-record.vue | 5 +-
34 files changed, 7887 insertions(+), 983 deletions(-)
create mode 100644 src/utils/table-menu.js
create mode 100644 src/utils/upload.js
diff --git a/AGENTS.md b/AGENTS.md
index a200e7f..3b6157b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -167,7 +167,7 @@ Avue 表格/表单配置独立存放于 `src/option/` 目录,与 `views` 和 `
- 搜索组件需展示轻量阴影,统一使用 `0 2px 8px rgba(0, 0, 0, 0.06)`,不得被局部卡片去样式规则覆盖。
- 表格线条颜色需统一使用 `#EFF1F7`,包括表格外边框、单元格分割线和固定列边线。
- 表格偶数行需统一使用 `#FAFAFA` 背景色,固定列单元格必须与对应行背景保持一致。
-- 表格操作列同时展示“查看、编辑、删除”等三个按钮时,操作列宽度统一不小于 `220px`,禁止出现按钮裁切或显示不全。
+- 表格操作列同时展示“查看、编辑、删除”等三个按钮时,操作列宽度统一不小于 `220px`;操作列最大按钮数量超过 3 个时,操作列宽度统一加宽到不小于 `320px`;最大按钮数量超过 4 个时,仍按 `320px` 保持列宽,并从第 5 个按钮开始换行展示,禁止出现按钮裁切或显示不全。
- 表格操作列按钮统一仅展示文字,禁止配置 `icon` / `:icon` 或在操作按钮、操作下拉项中嵌入图标;顶部工具栏按钮不受此条限制。
- `.avue-crud__header` 顶部间距统一为 `12px`。
- 分页组件整体靠右展示,必须展示接口返回的数据总条数,`X条/页` 的页容量选择器必须放在总条数右侧。
diff --git a/src/api/business/project-apply.js b/src/api/business/project-apply.js
index 6d8224c..a08c3ea 100644
--- a/src/api/business/project-apply.js
+++ b/src/api/business/project-apply.js
@@ -51,6 +51,20 @@ export const voidProject = (id, reason) =>
params: { id, reason },
});
+export const saveChange = row =>
+ request({
+ url: `${baseUrl}/save-change`,
+ method: 'post',
+ data: row,
+ });
+
+export const submitChange = row =>
+ request({
+ url: `${baseUrl}/submit-change`,
+ method: 'post',
+ data: row,
+ });
+
export const startChange = (id, reason) =>
request({
url: `${baseUrl}/start-change`,
diff --git a/src/api/business/waybill-manage.js b/src/api/business/waybill-manage.js
index 64ed50e..f762bae 100644
--- a/src/api/business/waybill-manage.js
+++ b/src/api/business/waybill-manage.js
@@ -1,6 +1,8 @@
+import request from '@/axios';
import { createCrudApi } from './common';
-const api = createCrudApi('/blade-transport/waybill-manage');
+const baseUrl = '/blade-transport/waybill-manage';
+const api = createCrudApi(baseUrl);
export const getList = api.getList;
export const getDetail = api.getDetail;
@@ -11,3 +13,11 @@ export const cancel = api.cancel;
export const reassign = api.reassign;
export const complete = api.complete;
export const batchComplete = api.batchComplete;
+export const roadLoading = ids =>
+ request({
+ url: `${baseUrl}/road-loading`,
+ method: 'post',
+ params: {
+ ids,
+ },
+ });
diff --git a/src/api/transportCapacity/driver.js b/src/api/transportCapacity/driver.js
index 16597ae..f3962af 100644
--- a/src/api/transportCapacity/driver.js
+++ b/src/api/transportCapacity/driver.js
@@ -58,3 +58,23 @@ export const getExpiryStat = params => {
params,
});
};
+
+export const recognitionIDCard = url => {
+ return request({
+ url: '/blade-file/file/recognitionIDCard',
+ method: 'get',
+ timeout: 60000,
+ params: {
+ url,
+ },
+ });
+};
+
+export const recognitionTransportCertificates = objectKeys => {
+ return request({
+ url: '/blade-file/file/recognitionTransportCertificates',
+ method: 'post',
+ timeout: 60000,
+ data: objectKeys,
+ });
+};
diff --git a/src/api/transportCapacity/transport-vehicle.js b/src/api/transportCapacity/transport-vehicle.js
index 573d67d..8c8b741 100644
--- a/src/api/transportCapacity/transport-vehicle.js
+++ b/src/api/transportCapacity/transport-vehicle.js
@@ -58,3 +58,12 @@ export const getExpiryStat = params => {
params,
});
};
+
+export const recognitionTransportCertificates = objectKeys => {
+ return request({
+ url: '/blade-file/file/recognitionTransportCertificates',
+ method: 'post',
+ timeout: 60000,
+ data: objectKeys,
+ });
+};
diff --git a/src/components/image-upload-field/main.vue b/src/components/image-upload-field/main.vue
index 608fb83..802c128 100644
--- a/src/components/image-upload-field/main.vue
+++ b/src/components/image-upload-field/main.vue
@@ -4,11 +4,13 @@
:class="[`${classPrefix}-uploader`, { [`${classPrefix}-uploader--large`]: large }]"
action="/api/blade-resource/oss/endpoint/put-file"
name="file"
- :headers="headers"
+ :headers="uploadHeaders"
:show-file-list="false"
:disabled="readonly"
:before-upload="beforeUpload"
+ :on-progress="handleProgress"
:on-success="handleSuccess"
+ :on-error="handleError"
>