From 433c61119529e384e09814b99db8c9922809a398 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Wed, 5 Aug 2026 15:52:24 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=8C=E5=96=84=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=202=E3=80=81=E5=AE=8C=E5=96=84=E8=BF=90?= =?UTF-8?q?=E8=BE=93=E8=AE=A1=E5=88=92=203=E3=80=81=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 1 + package.json | 3 +- pnpm-lock.yaml | 71 +- src/api/business/common.js | 10 + src/api/business/loading-manage.js | 91 + src/api/business/shipping-template.js | 2 + src/api/business/transport-plan.js | 29 +- src/api/business/waybill-manage.js | 9 + src/api/transportCapacity/driver.js | 4 +- src/option/business/contract-manage.js | 3 +- src/option/business/loading-manage.js | 36 + src/option/business/shipping-template.js | 360 +- src/option/business/transport-plan.js | 53 + src/option/business/waybill-manage.js | 213 +- src/option/transportCapacity/driver.js | 22 +- src/styles/element-ui.scss | 29 +- src/views/authority/apikey.vue | 23 +- src/views/authority/apiscope.vue | 6 +- src/views/authority/datascope.vue | 6 +- src/views/authority/ratelimit.vue | 18 +- src/views/authority/role.vue | 6 +- src/views/base/airport-master.vue | 16 +- src/views/base/cargo-type.vue | 14 +- src/views/base/common-address.vue | 19 +- src/views/base/currency.vue | 10 +- src/views/base/customer-type.vue | 10 +- src/views/base/fee-item.vue | 9 +- src/views/base/port-terminal.vue | 10 +- src/views/base/railway-station.vue | 16 +- src/views/business/common-cargo.vue | 15 +- src/views/business/common-route.vue | 30 +- .../components/business-crud-page.vue | 4315 ++++++++++++++++- .../components/waybill-import-dialog.vue | 167 + src/views/business/loading-manage.vue | 1997 ++++++++ src/views/business/process-config.vue | 30 +- src/views/business/project-apply.vue | 29 +- src/views/flow/manager.vue | 15 +- src/views/flow/model.vue | 15 +- src/views/job/jobinfo.vue | 4 +- src/views/job/jobserver.vue | 4 +- src/views/report/reportlist.vue | 10 +- src/views/resource/attach.vue | 5 +- src/views/resource/oss.vue | 10 +- src/views/resource/sms.vue | 10 +- src/views/system/authlock.vue | 11 +- src/views/system/authlog.vue | 6 +- src/views/system/dept.vue | 5 +- src/views/system/dict.vue | 10 +- src/views/system/dictbiz.vue | 10 +- src/views/system/menu.vue | 50 +- src/views/system/param.vue | 15 +- src/views/system/tenant.vue | 10 +- src/views/system/topmenu.vue | 5 +- src/views/system/user.vue | 12 +- src/views/tool/code.vue | 10 +- src/views/tool/codesetting.vue | 5 +- src/views/tool/formsetting.vue | 9 +- src/views/tool/model.vue | 6 +- src/views/transportCapacity/driver.vue | 191 +- src/views/transportCapacity/ship.vue | 15 +- src/views/transportCapacity/vehicle.vue | 15 +- src/views/util/crud-form.vue | 4 +- src/views/util/demo/dict-classic.vue | 5 +- src/views/util/demo/dict.vue | 5 +- src/views/util/demo/dictbiz.vue | 5 +- .../vehicle/credit-score-quantification.vue | 44 +- src/views/vehicle/customer-archive.vue | 65 +- src/views/work/claim.vue | 15 +- src/views/work/done.vue | 10 +- src/views/work/send.vue | 10 +- src/views/work/start.vue | 10 +- src/views/work/todo.vue | 15 +- 72 files changed, 7556 insertions(+), 772 deletions(-) create mode 100644 src/api/business/loading-manage.js create mode 100644 src/option/business/loading-manage.js create mode 100644 src/views/business/components/waybill-import-dialog.vue create mode 100644 src/views/business/loading-manage.vue diff --git a/AGENTS.md b/AGENTS.md index 3b6157b..202dc20 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -169,6 +169,7 @@ Avue 表格/表单配置独立存放于 `src/option/` 目录,与 `views` 和 ` - 表格偶数行需统一使用 `#FAFAFA` 背景色,固定列单元格必须与对应行背景保持一致。 - 表格操作列同时展示“查看、编辑、删除”等三个按钮时,操作列宽度统一不小于 `220px`;操作列最大按钮数量超过 3 个时,操作列宽度统一加宽到不小于 `320px`;最大按钮数量超过 4 个时,仍按 `320px` 保持列宽,并从第 5 个按钮开始换行展示,禁止出现按钮裁切或显示不全。 - 表格操作列按钮统一仅展示文字,禁止配置 `icon` / `:icon` 或在操作按钮、操作下拉项中嵌入图标;顶部工具栏按钮不受此条限制。 +- 纯文字操作入口统一使用 ``,禁止使用带 `text` 属性的 ``;提交、确认、上传等具有明确命令语义或需要加载状态的按钮可继续使用 ``。 - `.avue-crud__header` 顶部间距统一为 `12px`。 - 分页组件整体靠右展示,必须展示接口返回的数据总条数,`X条/页` 的页容量选择器必须放在总条数右侧。 - `.basic-container__card` 的直接子级 `.el-card__body` 内边距统一去除,保持 `padding: 0` diff --git a/package.json b/package.json index 0123244..7edf25c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "vue-i18n": "^11.4.2", "vue-router": "^4.3.2", "vue3-clipboard": "^1.0.0", - "vuex": "^4.1.0" + "vuex": "^4.1.0", + "xlsx": "0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61aeeab..8f4b0f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,9 @@ importers: vuex: specifier: ^4.1.0 version: 4.1.0(vue@3.5.34) + xlsx: + specifier: 0.18.5 + version: 0.18.5 devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.4 @@ -2772,30 +2775,30 @@ snapshots: dependencies: vue: 3.5.34 - '@wangeditor-next/basic-modules@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': + '@wangeditor-next/basic-modules@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) - dom7: 4.0.6 + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 is-url: 1.2.4 lodash.throttle: 4.1.1 - nanoid: 5.1.11 - slate: 0.123.0 + nanoid: 3.3.12 + slate: 0.72.8 snabbdom: 3.6.3 '@wangeditor-next/code-highlight@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.123.0)(snabbdom@3.6.3)': dependencies: - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 4.0.6 prismjs: 1.30.0 slate: 0.123.0 snabbdom: 3.6.3 - '@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': + '@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: '@types/event-emitter': 0.3.5 '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - dom7: 4.0.6 + dom7: 3.0.0 event-emitter: 0.3.5 html-void-elements: 3.0.0 i18next: 23.16.8 @@ -2806,9 +2809,9 @@ snapshots: lodash.foreach: 4.5.0 lodash.throttle: 4.1.1 lodash.toarray: 4.4.0 - nanoid: 5.1.11 + nanoid: 3.3.12 scroll-into-view-if-needed: 3.1.0 - slate: 0.123.0 + slate: 0.72.8 slate-history: 0.115.0(slate@0.123.0) snabbdom: 3.6.3 @@ -2816,9 +2819,9 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor-next/basic-modules': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/basic-modules': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor-next/code-highlight': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.123.0)(snabbdom@3.6.3) - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor-next/list-module': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.123.0)(snabbdom@3.6.3) '@wangeditor-next/table-module': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.debounce@4.0.8)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) '@wangeditor-next/upload-image-module': 2.0.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor-next/basic-modules@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.foreach@4.5.0)(slate@0.123.0)(snabbdom@3.6.3) @@ -2837,14 +2840,14 @@ snapshots: '@wangeditor-next/list-module@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.123.0)(snabbdom@3.6.3)': dependencies: - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 4.0.6 slate: 0.123.0 snabbdom: 3.6.3 '@wangeditor-next/table-module@2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.debounce@4.0.8)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': dependencies: - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 4.0.6 lodash.debounce: 4.0.8 lodash.throttle: 4.1.1 @@ -2856,8 +2859,8 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor-next/basic-modules': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/basic-modules': 2.0.0(@wangeditor-next/core@1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 4.0.6 lodash.foreach: 4.5.0 slate: 0.123.0 @@ -2867,36 +2870,36 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor-next/core': 1.8.0(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 4.0.6 nanoid: 5.1.11 slate: 0.123.0 snabbdom: 3.6.3 - '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': + '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) - dom7: 4.0.6 + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 is-url: 1.2.4 lodash.throttle: 4.1.1 - nanoid: 5.1.11 - slate: 0.123.0 + nanoid: 3.3.12 + slate: 0.72.8 snabbdom: 3.6.3 '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 3.0.0 prismjs: 1.30.0 slate: 0.72.8 snabbdom: 3.6.3 - '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': + '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: '@types/event-emitter': 0.3.5 '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - dom7: 4.0.6 + dom7: 3.0.0 event-emitter: 0.3.5 html-void-elements: 2.0.1 i18next: 20.6.1 @@ -2908,9 +2911,9 @@ snapshots: lodash.isequal: 4.5.0 lodash.throttle: 4.1.1 lodash.toarray: 4.4.0 - nanoid: 5.1.11 + nanoid: 3.3.12 scroll-into-view-if-needed: 2.2.31 - slate: 0.123.0 + slate: 0.72.8 slate-history: 0.66.0(slate@0.72.8) snabbdom: 3.6.3 @@ -2923,9 +2926,9 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3) - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3) @@ -2945,14 +2948,14 @@ snapshots: '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 3.0.0 slate: 0.72.8 snabbdom: 3.6.3 '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3)': dependencies: - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 3.0.0 lodash.isequal: 4.5.0 lodash.throttle: 4.1.1 @@ -2964,8 +2967,8 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 3.0.0 lodash.foreach: 4.5.0 slate: 0.72.8 @@ -2975,7 +2978,7 @@ snapshots: dependencies: '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.12)(slate@0.72.8)(snabbdom@3.6.3) dom7: 3.0.0 nanoid: 3.3.12 slate: 0.72.8 diff --git a/src/api/business/common.js b/src/api/business/common.js index b74ffe7..c2dd4f3 100644 --- a/src/api/business/common.js +++ b/src/api/business/common.js @@ -82,6 +82,16 @@ export const createCrudApi = baseUrl => ({ }, }); }, + dispatch(payload) { + const data = payload && typeof payload === 'object' ? payload : { id: payload }; + const id = data.id || payload; + return request({ + url: `${baseUrl}/dispatch`, + method: 'post', + params: id ? { id } : undefined, + data, + }); + }, reassign(id) { return request({ url: `${baseUrl}/reassign`, diff --git a/src/api/business/loading-manage.js b/src/api/business/loading-manage.js new file mode 100644 index 0000000..e051fa0 --- /dev/null +++ b/src/api/business/loading-manage.js @@ -0,0 +1,91 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/loading-manage'; + +export const exportUrl = `${baseUrl}/export-loading-manage`; + +export const getList = (current, size, params) => + request({ + url: `${baseUrl}/list`, + method: 'get', + params: { + ...params, + current, + size, + }, + }); + +export const getDetail = id => + request({ + url: `${baseUrl}/detail`, + method: 'get', + params: { + id, + }, + }); + +export const saveDraft = row => + request({ + url: `${baseUrl}/save-draft`, + method: 'post', + data: row, + }); + +export const submit = row => + request({ + url: `${baseUrl}/submit`, + method: 'post', + data: row, + }); + +export const remove = ids => + request({ + url: `${baseUrl}/remove`, + method: 'post', + params: { + ids, + }, + }); + +export const copy = id => + request({ + url: `${baseUrl}/copy`, + method: 'post', + params: { + id, + }, + }); + +export const reassign = row => + request({ + url: `${baseUrl}/reassign`, + method: 'post', + data: row, + }); + +export const cancel = id => + request({ + url: `${baseUrl}/cancel`, + method: 'post', + params: { + id, + }, + }); + +export const complete = id => + request({ + url: `${baseUrl}/complete`, + method: 'post', + params: { + id, + }, + }); + +export const batchComplete = ids => + request({ + url: `${baseUrl}/batch-complete`, + method: 'post', + params: { + ids, + }, + }); diff --git a/src/api/business/shipping-template.js b/src/api/business/shipping-template.js index 7246a79..9d08622 100644 --- a/src/api/business/shipping-template.js +++ b/src/api/business/shipping-template.js @@ -1,4 +1,5 @@ import { createCrudApi } from './common'; +import request from '@/axios'; const api = createCrudApi('/blade-transport/shipping-template'); @@ -7,3 +8,4 @@ export const getDetail = api.getDetail; export const submit = api.submit; export const remove = api.remove; export const copy = api.copy; +export const nextCode = () => request({ url: '/blade-transport/shipping-template/next-code', method: 'get' }); diff --git a/src/api/business/transport-plan.js b/src/api/business/transport-plan.js index c6a46a5..b43f2d6 100644 --- a/src/api/business/transport-plan.js +++ b/src/api/business/transport-plan.js @@ -1,11 +1,38 @@ import { createCrudApi } from './common'; +import request from '@/axios'; -const api = createCrudApi('/blade-transport/transport-plan'); +const baseUrl = '/blade-transport/transport-plan'; +const api = createCrudApi(baseUrl); export const getList = api.getList; export const getDetail = api.getDetail; export const submit = api.submit; +export const dispatch = api.dispatch; export const remove = api.remove; export const copy = api.copy; export const cancel = api.cancel; export const complete = api.complete; + +export const importTransportPlan = ({ + file, + projectId, + projectName, + customerName, + contractId, + contractName, +}) => { + const data = new FormData(); + data.append('file', file); + data.append('projectId', projectId || ''); + data.append('projectName', projectName || ''); + data.append('customerName', customerName || ''); + data.append('contractId', contractId || ''); + data.append('contractName', contractName || ''); + return request({ + url: `${baseUrl}/import-transport-plan`, + method: 'post', + data, + responseType: 'blob', + timeout: 60000, + }); +}; diff --git a/src/api/business/waybill-manage.js b/src/api/business/waybill-manage.js index f762bae..07f3d35 100644 --- a/src/api/business/waybill-manage.js +++ b/src/api/business/waybill-manage.js @@ -21,3 +21,12 @@ export const roadLoading = ids => ids, }, }); + +export const getImportBatches = params => request({ url: `${baseUrl}/import-batch/list`, method: 'get', params }); +export const getImportDetails = params => request({ url: `${baseUrl}/import-batch/details`, method: 'get', params }); +export const removeImportBatches = ids => request({ url: `${baseUrl}/import-batch/remove`, method: 'post', params: { ids } }); +export const getImportOptions = () => request({ url: `${baseUrl}/import-batch/options`, method: 'get' }); +export const getImportContracts = projectId => request({ url: `${baseUrl}/import-batch/contracts`, method: 'get', params: { projectId } }); +export const exportImportTemplate = () => request({ url: `${baseUrl}/import-batch/export-template`, method: 'get', responseType: 'blob' }); +export const saveImportDraft = data => request({ url: `${baseUrl}/import-batch/draft`, method: 'post', data }); +export const confirmImport = data => request({ url: `${baseUrl}/import-batch/confirm`, method: 'post', data }); diff --git a/src/api/transportCapacity/driver.js b/src/api/transportCapacity/driver.js index f3962af..81d2230 100644 --- a/src/api/transportCapacity/driver.js +++ b/src/api/transportCapacity/driver.js @@ -70,11 +70,11 @@ export const recognitionIDCard = url => { }); }; -export const recognitionTransportCertificates = objectKeys => { +export const recognitionTransportCertificates = certificates => { return request({ url: '/blade-file/file/recognitionTransportCertificates', method: 'post', timeout: 60000, - data: objectKeys, + data: certificates, }); }; diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index 880b8e0..dc7d4f4 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -219,7 +219,8 @@ export const option = createCrudOption([ type: 'select', search: true, searchOrder: 1, - span: 24, + span: 6, + row: true, order: 190, dicData: signTypeOptions, minWidth: 120, diff --git a/src/option/business/loading-manage.js b/src/option/business/loading-manage.js new file mode 100644 index 0000000..007bd23 --- /dev/null +++ b/src/option/business/loading-manage.js @@ -0,0 +1,36 @@ +import { dataSourceOptions } from './common'; + +export const transportTypeDict = { + dicUrl: '/blade-system/dict-biz/dictionary?code=transport_type', + props: { + label: 'dictValue', + value: 'dictKey', + }, +}; + +export const carrierTypeOptions = ['承运商', '自运', '网签平台']; + +export const loadingStatusOptions = [ + { label: '草稿', value: 'draft' }, + { label: '待执行', value: 'pending' }, + { label: '进行中', value: 'running' }, + { label: '已完成', value: 'completed' }, + { label: '已取消', value: 'cancelled' }, +]; + +export const loadingStatusMap = loadingStatusOptions.reduce((result, item) => { + result[item.value] = item.label; + return result; +}, {}); + +export const loadingManageConfig = { + title: '配载管理', + permission: 'loading_manage', + exportUrl: '/blade-transport/loading-manage/export-loading-manage', + exportName: '配载管理', + createText: '新建配载', + batchCompleteText: '批量完成', + statusProp: 'businessStatus', + statusTextProp: 'businessStatusName', + dataSourceOptions, +}; diff --git a/src/option/business/shipping-template.js b/src/option/business/shipping-template.js index f7e72f3..8ca887e 100644 --- a/src/option/business/shipping-template.js +++ b/src/option/business/shipping-template.js @@ -1,11 +1,9 @@ -import { - auditColumns, - createCrudOption, - templateTypeOptions, - transportTypeOptions, - selectRule, - textRule, -} from './common'; +import { auditColumns, createCrudOption, selectRule, textRule, transportTypeOptions } from './common'; + +const templateTypeOptions = [ + { label: '运输计划', value: '运输计划' }, + { label: '运单', value: '运单' }, +]; export const config = { title: '发货模板', @@ -13,155 +11,203 @@ export const config = { exportUrl: '/blade-transport/shipping-template/export-shipping-template', exportName: '发货模板', enableAllDept: false, + enableProjectSelect: true, + enableAttachmentTable: true, + enableTransportPlanForm: true, + enableTemplateCodePreview: true, + attachmentTitle: '附件', + defaultForm: { + templateType: '运输计划', + }, + transportFormRequiredFields: [ + ['projectName', '项目'], + ['contractName', '客户合同'], + ['transportType', '运输方式'], + ['departureAddress', '发货地址'], + ['arrivalAddress', '收货地址'], + ], actions: ['copy'], + operations: [ + { + action: 'createFromTemplate', + label: '从模板新建', + permission: 'shipping_template_add', + }, + ], }; -export const option = createCrudOption([ - { - label: '模板编号', - prop: 'templateCode', - search: true, - minWidth: 150, - addDisplay: false, - editDisabled: true, - }, - { - label: '模板名称', - prop: 'templateName', - search: true, - minWidth: 150, - rules: textRule('模板名称', 50, true), - }, - { - label: '模板类型', - prop: 'templateType', - type: 'select', - search: true, - dicData: templateTypeOptions, - minWidth: 120, - value: '运输计划', - rules: selectRule('模板类型'), - }, - { - label: '项目', - prop: 'projectName', - search: true, - minWidth: 150, - rules: textRule('项目', 100, true), - }, - { - label: '项目ID', - prop: 'projectId', - hide: true, - }, - { - label: '客户合同', - prop: 'contractName', - minWidth: 160, - rules: textRule('客户合同', 100, true), - }, - { - label: '客户合同ID', - prop: 'contractId', - hide: true, - }, - { - label: '运输类型', - prop: 'transportType', - type: 'select', - dicData: transportTypeOptions, - minWidth: 130, - rules: selectRule('运输类型'), - }, - { - label: '发货地', - prop: 'departureName', - minWidth: 140, - rules: textRule('发货地', 100, true), - }, - { - label: '发货地址', - prop: 'departureAddress', - minWidth: 220, - rules: textRule('发货地址', 255, true), - }, - { - label: '发货联系人', - prop: 'departureContact', - minWidth: 120, - rules: textRule('发货联系人', 20), - }, - { - label: '发货联系方式', - prop: 'departurePhone', - minWidth: 140, - rules: textRule('发货联系方式', 20), - }, - { - label: '收货地', - prop: 'arrivalName', - minWidth: 140, - rules: textRule('收货地', 100, true), - }, - { - label: '收货地址', - prop: 'arrivalAddress', - minWidth: 220, - rules: textRule('收货地址', 255, true), - }, - { - label: '收货联系人', - prop: 'arrivalContact', - minWidth: 120, - rules: textRule('收货联系人', 20), - }, - { - label: '收货联系方式', - prop: 'arrivalPhone', - minWidth: 140, - rules: textRule('收货联系方式', 20), - }, - { - label: '货物信息JSON', - prop: 'goodsJson', - type: 'textarea', - minRows: 5, - span: 24, - hide: true, - }, - { - label: '运费信息JSON', - prop: 'freightJson', - type: 'textarea', - minRows: 4, - span: 24, - hide: true, - }, - { - label: '附件JSON', - prop: 'attachmentsJson', - type: 'textarea', - minRows: 3, - span: 24, - hide: true, - }, - { - label: '所属组织', - prop: 'deptName', - minWidth: 150, - addDisplay: false, - editDisplay: false, - }, - { - label: '备注', - prop: 'remark', - type: 'textarea', - minRows: 4, - span: 24, - hide: true, - maxlength: 200, - showWordLimit: true, - rules: textRule('备注', 200), - }, - ...auditColumns, -]); +export const option = { + ...createCrudOption([ + { + label: '', + prop: 'templateInfoTitle', + formslot: true, + span: 24, + order: 400, + hide: true, + labelWidth: 0, + }, + { + label: '模板编号', + prop: 'templateCode', + search: true, + searchOrder: 4, + span: 8, + order: 390, + minWidth: 170, + disabled: true, + placeholder: '系统自动生成', + }, + { + label: '模板名称', + prop: 'templateName', + search: true, + searchOrder: 3, + span: 8, + order: 380, + minWidth: 150, + rules: textRule('模板名称', 50, true), + }, + { + label: '模板类型', + prop: 'templateType', + type: 'select', + search: true, + searchOrder: 2, + span: 8, + order: 370, + dicData: templateTypeOptions, + minWidth: 120, + rules: selectRule('模板类型'), + }, + { + label: '备注', + prop: 'remark', + type: 'textarea', + minRows: 3, + span: 24, + order: 360, + minWidth: 180, + maxlength: 200, + showWordLimit: true, + rules: textRule('备注', 200), + }, + { + label: '', + prop: 'basicInfoTitle', + formslot: true, + span: 24, + order: 350, + hide: true, + labelWidth: 0, + }, + { + label: '项目', + prop: 'projectName', + formslot: true, + search: true, + searchOrder: 1, + span: 8, + order: 340, + minWidth: 150, + rules: textRule('项目', 100, true), + }, + { + label: '客户合同', + prop: 'contractName', + formslot: true, + span: 8, + order: 330, + minWidth: 160, + rules: textRule('客户合同', 100, true), + }, + { + label: '运输方式', + prop: 'transportType', + type: 'select', + span: 8, + order: 320, + dicData: transportTypeOptions, + minWidth: 130, + rules: selectRule('运输方式'), + }, + { + label: '', + prop: 'shippingInfoTitle', + formslot: true, + span: 24, + order: 310, + hide: true, + labelWidth: 0, + }, + { + label: '发货地址', + prop: 'departureAddress', + formslot: true, + span: 24, + order: 300, + minWidth: 220, + rules: textRule('发货地址', 255, true), + }, + { + label: '收货地址', + prop: 'arrivalAddress', + formslot: true, + span: 24, + order: 290, + minWidth: 220, + rules: textRule('收货地址', 255, true), + }, + { + label: '', + prop: 'goodsInfoTitle', + formslot: true, + span: 24, + order: 280, + hide: true, + labelWidth: 0, + }, + { + label: '', + prop: 'goodsJson', + type: 'textarea', + formslot: true, + span: 24, + order: 270, + hide: true, + labelWidth: '0px', + className: 'business-crud-page__full-form-item', + }, + { + label: '', + prop: 'attachmentTitle', + formslot: true, + span: 24, + order: 260, + hide: true, + labelWidth: 0, + }, + { + label: '', + prop: 'attachmentsJson', + type: 'textarea', + formslot: true, + span: 24, + order: 250, + hide: true, + labelWidth: '0px', + className: 'business-crud-page__full-form-item', + }, + { label: '项目ID', prop: 'projectId', hide: true, display: false }, + { label: '客户合同ID', prop: 'contractId', hide: true, display: false }, + { label: '发货地', prop: 'departureName', hide: true, display: false }, + { label: '发货联系人', prop: 'departureContact', hide: true, display: false }, + { label: '发货联系方式', prop: 'departurePhone', hide: true, display: false }, + { label: '收货地', prop: 'arrivalName', hide: true, display: false }, + { label: '收货联系人', prop: 'arrivalContact', hide: true, display: false }, + { label: '收货联系方式', prop: 'arrivalPhone', hide: true, display: false }, + { label: '所属组织', prop: 'deptName', minWidth: 150, addDisplay: false, editDisplay: false }, + ...auditColumns, + ]), + dialogWidth: '96%', +}; diff --git a/src/option/business/transport-plan.js b/src/option/business/transport-plan.js index 82a7056..cda3ed3 100644 --- a/src/option/business/transport-plan.js +++ b/src/option/business/transport-plan.js @@ -116,9 +116,13 @@ export const config = { exportName: '运输计划', enableAllDept: false, enableProjectSelect: true, + templateCreateTarget: 'transport-plan', enableAttachmentTable: true, enableTransportPlanForm: true, enableTransportPlanCreateActions: true, + enableTransportPlanImport: true, + transportPlanImportTitle: '导入发货计划', + transportPlanTemplateUrl: '/blade-transport/transport-plan/export-template', attachmentTitle: '附件', searchRangeMap: { planStartDateRange: ['planStartDateStart', 'planStartDateEnd'], @@ -129,6 +133,55 @@ export const config = { statusTextProp: 'businessStatusName', deleteStatus: ['draft'], editStatus: ['draft', 'waiting_dispatch'], + detailButton: true, + detailSections: [ + { + title: '基本信息', + fields: [ + ['planNo', '计划单号'], + ['planName', '计划名称'], + ['projectName', '项目名称'], + ['customerName', '客户名称'], + ['transportType', '运输方式'], + ['businessStatus', '调度状态'], + ['planStartDate', '计划开始日期'], + ['planEndDate', '计划结束日期'], + ['dataSource', '数据来源'], + ], + }, + { + title: '收发货信息', + fields: [ + ['departureName', '发货地'], + ['departureAddress', '发货地址', 2], + ['departureContact', '发货联系人'], + ['departurePhone', '发货联系方式'], + ['arrivalName', '收货地'], + ['arrivalAddress', '到货地址', 2], + ['arrivalContact', '收货联系人'], + ['arrivalPhone', '收货联系方式'], + ], + }, + { + title: '其它信息', + fields: [ + ['remark', '备注', 2], + ['updateUserName', '更新人'], + ['updateTime', '更新时间'], + ['createTime', '创建时间'], + ], + }, + ], + operations: [ + { + action: 'dispatch', + label: '调度', + statusProp: 'businessStatus', + status: ['waiting_dispatch'], + permission: 'transport_plan_edit', + confirm: '确定调度该运输计划?', + }, + ], }; export const option = { diff --git a/src/option/business/waybill-manage.js b/src/option/business/waybill-manage.js index eb094d1..21edd0f 100644 --- a/src/option/business/waybill-manage.js +++ b/src/option/business/waybill-manage.js @@ -2,6 +2,7 @@ import { auditColumns, createCrudOption, dataSourceOptions, + phoneRule, selectRule, textRule, waybillStatusOptions, @@ -96,9 +97,17 @@ export const config = { exportName: '运单管理', importUrl: '/blade-transport/waybill-manage/import-waybill-manage', enableAllDept: false, + enableProjectSelect: true, + templateCreateTarget: 'waybill-manage', + enableContractSelect: true, + enableShippingPlanSelect: true, + enableShippingInfoForm: true, + enableTaskInfoForm: true, batchDelete: false, + actionButtonLikeSearch: true, createText: '新建运单', importText: '导入运单', + enableWaybillImport: true, roadLoading: true, roadLoadingText: '公路配载', searchRangeMap: { @@ -115,6 +124,15 @@ export const config = { export const option = { ...createCrudOption([ + { + label: '', + prop: 'basicInfoTitle', + formslot: true, + span: 24, + order: 900, + hide: true, + labelWidth: 0, + }, { label: '运单号', prop: 'waybillNo', @@ -129,6 +147,8 @@ export const option = { prop: 'loadingNo', search: true, searchOrder: 5, + span: 6, + order: 840, minWidth: 140, }, { @@ -137,13 +157,18 @@ export const option = { search: true, searchLabel: '多联总单', searchOrder: 6, + span: 6, + order: 830, minWidth: 140, }, { - label: '项目名称', + label: '项目', prop: 'projectName', + formslot: true, search: true, searchOrder: 22, + span: 6, + order: 890, minWidth: 150, rules: textRule('项目', 100, true), }, @@ -154,6 +179,10 @@ export const option = { searchLabel: '客户名称', searchOrder: 21, minWidth: 150, + addDisplay: false, + editDisplay: false, + viewDisplay: false, + display: false, }, { label: '车牌号/航班号/船号/班列号', @@ -162,6 +191,7 @@ export const option = { searchLabel: '车/船/航班/班列', searchOrder: 13, minWidth: 210, + display: false, }, { label: '司机', @@ -170,6 +200,7 @@ export const option = { searchLabel: '司机名称', searchOrder: 14, minWidth: 120, + display: false, }, { label: '联系方式', @@ -179,6 +210,7 @@ export const option = { addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { label: '运输方式', @@ -199,6 +231,8 @@ export const option = { type: 'select', search: true, searchOrder: 20, + span: 6, + order: 850, ...transportTypeDict, minWidth: 130, rules: selectRule('运输类型'), @@ -207,6 +241,10 @@ export const option = { label: '过程节点', prop: 'currentProcessNode', minWidth: 140, + addDisplay: false, + editDisplay: false, + viewDisplay: false, + display: false, }, { label: '承运类型', @@ -216,6 +254,7 @@ export const option = { addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { label: '承运商', @@ -224,6 +263,7 @@ export const option = { searchLabel: '承运商名称', searchOrder: 15, minWidth: 150, + display: false, }, { label: '货物信息', @@ -238,17 +278,23 @@ export const option = { { label: '发货地址', prop: 'departureAddress', + formslot: true, search: true, searchOrder: 17, + span: 24, + order: 790, minWidth: 220, rules: textRule('发货地址', 255, true), }, { label: '到货地址', prop: 'arrivalAddress', + formslot: true, search: true, searchLabel: '收货地址', searchOrder: 16, + span: 24, + order: 780, minWidth: 220, rules: textRule('收货地址', 255, true), }, @@ -307,14 +353,20 @@ export const option = { { label: '客户合同', prop: 'contractName', + formslot: true, + span: 6, + order: 880, minWidth: 160, rules: textRule('客户合同', 100, true), }, { - label: '计划名称', + label: '发货计划', prop: 'planName', + formslot: true, search: true, searchOrder: 7, + span: 6, + order: 870, minWidth: 150, }, { @@ -324,6 +376,7 @@ export const option = { searchOrder: 18, formatter: row => formatGoodsField(row, ['cargoType', 'goodsType', 'typeName']), minWidth: 130, + display: false, rules: textRule('货物类型', 100, true), }, { @@ -333,6 +386,7 @@ export const option = { searchOrder: 19, formatter: row => formatGoodsField(row, ['cargoName', 'goodsName', 'name']), minWidth: 150, + display: false, rules: textRule('货物名称', 100, true), }, { @@ -356,6 +410,8 @@ export const option = { prop: 'originalNo', search: true, searchOrder: 12, + span: 6, + order: 860, minWidth: 140, }, { @@ -365,30 +421,36 @@ export const option = { searchLabel: '运输批次', searchOrder: 3, minWidth: 140, + addDisplay: false, + editDisplay: false, + viewDisplay: false, + display: false, }, { - label: '预计发货时间', + label: '预计发货日期', prop: 'estimatedStartTime', - type: 'datetime', - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'date', + format: 'YYYY-MM-DD', + valueFormat: 'YYYY-MM-DD', formatter: row => getFirstValue(row, ['estimatedStartTime', 'planStartDate']), minWidth: 170, addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { - label: '预计完成时间', + label: '预计完成日期', prop: 'estimatedEndTime', - type: 'datetime', - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'date', + format: 'YYYY-MM-DD', + valueFormat: 'YYYY-MM-DD', formatter: row => getFirstValue(row, ['estimatedEndTime', 'planEndDate']), minWidth: 170, addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { label: '备注', @@ -396,11 +458,12 @@ export const option = { type: 'textarea', minRows: 4, span: 24, + order: 810, minWidth: 180, overHidden: true, - maxlength: 500, + maxlength: 200, showWordLimit: true, - rules: textRule('备注', 500), + rules: textRule('备注', 200), }, { label: '数据来源', @@ -410,6 +473,10 @@ export const option = { searchOrder: 10, dicData: dataSourceOptions, minWidth: 120, + addDisplay: false, + editDisplay: false, + viewDisplay: false, + display: false, }, { ...auditColumn('createTime'), @@ -431,6 +498,34 @@ export const option = { addDisplay: false, editDisplay: false, }, + { + label: '', + prop: 'shippingInfoTitle', + formslot: true, + span: 24, + order: 800, + hide: true, + labelWidth: 0, + }, + { + label: '', + prop: 'taskInfoTitle', + formslot: true, + span: 24, + order: 770, + hide: true, + labelWidth: 0, + }, + { + label: '', + prop: 'taskInfoForm', + formslot: true, + span: 24, + order: 760, + hide: true, + labelWidth: '0px', + className: 'business-crud-page__full-form-item', + }, { label: '实际发货时间', prop: 'startDateRange', @@ -444,6 +539,7 @@ export const option = { addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { label: '实际完成时间', @@ -458,6 +554,7 @@ export const option = { addDisplay: false, editDisplay: false, viewDisplay: false, + display: false, }, { label: '创建时间', @@ -478,51 +575,70 @@ export const option = { prop: 'relationNo', search: true, searchOrder: 2, + span: 6, + order: 820, minWidth: 140, hide: true, - addDisplay: false, - editDisplay: false, - viewDisplay: false, }, { - label: '货物信息JSON', + label: '货物信息', prop: 'goodsJson', type: 'textarea', minRows: 5, span: 24, hide: true, + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, }, { - label: '承运信息JSON', + label: '承运信息', prop: 'carrierJson', type: 'textarea', minRows: 4, span: 24, hide: true, + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, }, { - label: '过程配置JSON', + label: '过程配置', prop: 'processJson', type: 'textarea', minRows: 4, span: 24, hide: true, + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, }, { - label: '运费信息JSON', + label: '运费信息', prop: 'freightJson', type: 'textarea', minRows: 4, span: 24, hide: true, + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, }, { - label: '附件JSON', + label: '附件', prop: 'attachmentsJson', type: 'textarea', minRows: 3, span: 24, hide: true, + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, }, { label: '所属组织', @@ -532,6 +648,36 @@ export const option = { addDisplay: false, editDisplay: false, }, + { + label: '发货地', + prop: 'departureName', + hide: true, + display: false, + minWidth: 140, + rules: textRule('发货地', 100, true), + }, + { + label: '收货地', + prop: 'arrivalName', + hide: true, + display: false, + minWidth: 140, + rules: textRule('收货地', 100, true), + }, + { + label: '发货联系方式', + prop: 'departurePhone', + hide: true, + display: false, + rules: [phoneRule('发货联系方式'), ...textRule('发货联系方式', 50)], + }, + { + label: '收货联系方式', + prop: 'arrivalPhone', + hide: true, + display: false, + rules: [phoneRule('收货联系方式'), ...textRule('收货联系方式', 50)], + }, { label: '项目ID', prop: 'projectId', @@ -544,6 +690,33 @@ export const option = { hide: true, display: false, }, + { + label: '发货计划ID', + prop: 'planId', + hide: true, + display: false, + }, + { + label: '任务录入模式', + prop: 'taskEntryMode', + hide: true, + display: false, + value: 'simple', + }, + { + label: '任务备注', + prop: 'taskRemark', + hide: true, + display: false, + }, + { + label: '任务信息', + prop: 'taskInfoJson', + hide: true, + display: false, + }, ]), + dialogWidth: '96%', + dialogTop: '10px', menuWidth: 320, }; diff --git a/src/option/transportCapacity/driver.js b/src/option/transportCapacity/driver.js index e1fef33..c1b5afb 100644 --- a/src/option/transportCapacity/driver.js +++ b/src/option/transportCapacity/driver.js @@ -9,12 +9,14 @@ export const option = { searchMenuPosition: 'right', border: true, index: true, + indexLabel: '序号', + indexWidth: 70, selection: true, addBtn: false, editBtn: false, delBtn: false, viewBtn: false, - menuWidth: 160, + menuWidth: 220, dialogClickModal: false, column: [ { @@ -23,14 +25,14 @@ export const option = { search: true, searchOrder: 7, slot: true, - width: 110, + minWidth: 120, }, { label: '手机号', prop: 'mobile', search: true, searchOrder: 6, - width: 130, + minWidth: 130, }, { label: '准驾车型', @@ -69,7 +71,7 @@ export const option = { value: 'C2', }, ], - width: 110, + minWidth: 110, }, { label: '状态', @@ -107,7 +109,7 @@ export const option = { value: '外协', }, ], - width: 100, + minWidth: 110, align: 'center', }, { @@ -115,7 +117,7 @@ export const option = { prop: 'idCardNo', search: true, searchOrder: 2, - width: 190, + minWidth: 190, }, { label: '所属组织', @@ -125,7 +127,7 @@ export const option = { type: 'select', filterable: true, dicData: [], - width: 140, + minWidth: 160, }, { label: '性别', @@ -136,20 +138,20 @@ export const option = { { label: '岗位', prop: 'posts', - width: 150, + minWidth: 150, }, { label: '驾驶认证', prop: 'drivingLicenseEndDate', slot: true, - width: 130, + minWidth: 140, align: 'center', }, { label: '从业资格认证', prop: 'qualificationEndDate', slot: true, - width: 140, + minWidth: 150, align: 'center', }, ], diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss index 3492362..4b46cab 100644 --- a/src/styles/element-ui.scss +++ b/src/styles/element-ui.scss @@ -337,7 +337,12 @@ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); } -// 上一页 / 下一页 箭头按钮与页码按钮等宽,不再单独加宽 +.el-pagination .btn-prev, +.el-pagination .btn-next, +.erp-pagination-first, +.erp-pagination-last { + min-width: 54px; +} .el-pagination .el-pager { gap: 6px; @@ -345,7 +350,18 @@ padding: 0; } -// 上一页 / 下一页 改为原生箭头图标:不再隐藏原生图标,也不再注入「上一页 / 下一页」文字 +.el-pagination .btn-prev .el-icon, +.el-pagination .btn-next .el-icon { + display: none; +} + +.el-pagination .btn-prev::before { + content: '上一页'; +} + +.el-pagination .btn-next::before { + content: '下一页'; +} .el-pagination.is-background .el-pager li.is-active, .el-pagination .el-pager li.is-active { @@ -431,7 +447,14 @@ color: #fff; } -// 全站统一:分页展示「上一页 / 下一页」原生箭头图标(不再隐藏;首页 / 尾页仍不注入) +// 全站统一:隐藏分页的「上一页 / 下一页」原生导航按钮 +// (「首页 / 尾页」由 src/utils/pagination.js 的全局增强器统一不再注入) +.el-pagination { + .btn-prev, + .btn-next { + display: none !important; + } +} // 全站统一:隐藏操作栏按钮前的图标 .avue-crud__menu .el-button--text i, diff --git a/src/views/authority/apikey.vue b/src/views/authority/apikey.vue index 217e750..e9b412d 100644 --- a/src/views/authority/apikey.vue +++ b/src/views/authority/apikey.vue @@ -41,27 +41,24 @@ {{ row.expireTimeInfo }} diff --git a/src/views/base/common-address.vue b/src/views/base/common-address.vue index 59892be..141be93 100644 --- a/src/views/base/common-address.vue +++ b/src/views/base/common-address.vue @@ -54,30 +54,27 @@ diff --git a/src/views/base/customer-type.vue b/src/views/base/customer-type.vue index b441b39..028c117 100644 --- a/src/views/base/customer-type.vue +++ b/src/views/base/customer-type.vue @@ -36,22 +36,20 @@ diff --git a/src/views/base/port-terminal.vue b/src/views/base/port-terminal.vue index f2486ad..cc977fc 100644 --- a/src/views/base/port-terminal.vue +++ b/src/views/base/port-terminal.vue @@ -113,22 +113,20 @@ diff --git a/src/views/business/common-route.vue b/src/views/business/common-route.vue index 47bbf66..5be939a 100644 --- a/src/views/business/common-route.vue +++ b/src/views/business/common-route.vue @@ -102,30 +102,27 @@ @@ -220,7 +217,7 @@ @@ -239,7 +236,6 @@ @@ -276,7 +272,6 @@ export default { addressQuery: {}, addressData: [], addressLoading: false, - addressSelected: null, deptOptions: [], page: { pageSize: 10, @@ -348,7 +343,6 @@ export default { openAddressDialog(target) { if (this.dialogReadonly) return; this.addressTarget = target; - this.addressSelected = null; this.addressPage.currentPage = 1; this.resetAddressQuery(); this.addressDialogVisible = true; @@ -387,14 +381,8 @@ export default { }); }, selectAddressRow(row) { - this.addressSelected = row; - }, - confirmAddressPick() { - if (!this.addressSelected) { - this.$message.warning('请选择常用地址'); - return; - } - this.applyAddress(this.addressTarget, this.addressSelected); + if (!row) return; + this.applyAddress(this.addressTarget, row); this.addressDialogVisible = false; }, applyAddress(target, address) { diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index 985dac2..6125b50 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -23,8 +23,8 @@ + + + + + + diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue index 301f96c..a5c8806 100644 --- a/src/views/business/project-apply.vue +++ b/src/views/business/project-apply.vue @@ -62,27 +62,25 @@ @@ -507,13 +505,12 @@ @@ -559,9 +556,9 @@ @@ -652,7 +649,7 @@ diff --git a/src/views/flow/manager.vue b/src/views/flow/manager.vue index 46e4a1d..44fd201 100644 --- a/src/views/flow/manager.vue +++ b/src/views/flow/manager.vue @@ -23,27 +23,24 @@ diff --git a/src/views/report/reportlist.vue b/src/views/report/reportlist.vue index 2fcc7fc..8af35bf 100644 --- a/src/views/report/reportlist.vue +++ b/src/views/report/reportlist.vue @@ -23,20 +23,18 @@ diff --git a/src/views/system/authlog.vue b/src/views/system/authlog.vue index 22ab38f..88ad4cd 100644 --- a/src/views/system/authlog.vue +++ b/src/views/system/authlog.vue @@ -18,12 +18,10 @@ @on-load="authLogOnLoad" > diff --git a/src/views/tool/model.vue b/src/views/tool/model.vue index f25228b..678af5c 100644 --- a/src/views/tool/model.vue +++ b/src/views/tool/model.vue @@ -26,14 +26,12 @@ @@ -186,10 +184,15 @@ - @@ -496,6 +499,7 @@ import { recognitionTransportCertificates, } from '@/api/transportCapacity/driver'; import { getDeptTree } from '@/api/system/dept'; +import { getLazyTree } from '@/api/base/region'; import { exportBlob } from '@/api/common'; import { getToken } from '@/utils/auth'; import { getUploadHeaders } from '@/utils/upload'; @@ -510,6 +514,7 @@ const emptyForm = () => ({ gender: '', nation: '', education: '', + addressRegionPath: [], addressRegion: '', address: '', postList: ['司机'], @@ -644,6 +649,7 @@ export default { ], relationOptions: ['父母', '配偶', '子女', '兄弟姐妹', '朋友', '同事'], organizationOptions: [], + regionOptions: [], formRules: { driverName: [{ required: true, message: '请输入司机姓名', trigger: 'blur' }], idCardNo: [{ required: true, message: '请输入身份证号', trigger: 'blur' }], @@ -709,9 +715,18 @@ export default { } return this.driverForm.id ? '修改司机' : '新增司机'; }, + regionCascaderProps() { + return { + value: 'id', + label: 'title', + children: 'children', + emitPath: true, + }; + }, }, created() { this.initDeptTree(); + this.initRegionOptions(); }, methods: { hasPermission(code) { @@ -738,6 +753,117 @@ export default { }); return result; }, + initRegionOptions() { + getLazyTree().then(res => { + const regions = this.buildRegionTree(res.data.data || []); + this.regionOptions = this.extractChinaRegionOptions(regions); + this.syncAddressRegionPath(); + }); + }, + buildRegionTree(regions = []) { + const flatRegions = []; + const collectRegions = list => { + (list || []).forEach(item => { + flatRegions.push({ + ...item, + children: undefined, + }); + if (item.children?.length) collectRegions(item.children); + }); + }; + collectRegions(regions); + + const nodeMap = new Map(); + flatRegions.forEach(item => { + const id = item.id === undefined || item.id === null ? item.value : item.id; + if (id === undefined || id === null) return; + nodeMap.set(String(id), { + ...item, + id: String(id), + parentId: + item.parentId === undefined || item.parentId === null ? '' : String(item.parentId), + children: [], + }); + }); + + const rootNodes = []; + nodeMap.forEach(node => { + const parent = nodeMap.get(node.parentId); + if (parent && parent !== node) { + parent.children.push(node); + } else { + rootNodes.push(node); + } + }); + return rootNodes.map(item => this.normalizeRegionTreeNode(item)); + }, + normalizeRegionTreeNode(region) { + const children = (region.children || []).map(item => this.normalizeRegionTreeNode(item)); + return { + ...region, + children: children.length ? children : undefined, + leaf: !children.length, + }; + }, + isChinaRegion(region = {}) { + const title = String(region.title || region.name || '').trim(); + return title === '中国' || title === '中华人民共和国'; + }, + extractChinaRegionOptions(regions) { + const china = (regions || []).find(item => this.isChinaRegion(item)); + if (china?.children?.length) return china.children; + if (regions.length === 1 && regions[0].children?.length) return regions[0].children; + return regions; + }, + findRegionOption(options, value) { + for (const item of options || []) { + if (String(item.id) === String(value)) return item; + const child = this.findRegionOption(item.children, value); + if (child) return child; + } + return null; + }, + findRegionPathByName(options = [], addressRegion = '', parents = []) { + const target = String(addressRegion || '').replace(/\s+/g, ''); + if (!target) return []; + for (const item of options || []) { + const nextParents = [...parents, item]; + const nextName = nextParents.map(region => region.title || region.name || '').join(''); + if (nextName === target) { + return nextParents.map(region => region.id); + } + const childPath = this.findRegionPathByName(item.children, target, nextParents); + if (childPath.length) return childPath; + } + return []; + }, + getAddressRegionLabels(value) { + const nodes = this.$refs.addressRegionCascader?.getCheckedNodes?.() || []; + if (nodes.length && nodes[0].pathLabels?.length) { + return nodes[0].pathLabels; + } + return (value || []) + .map(code => this.findRegionOption(this.regionOptions, code)?.title) + .filter(Boolean); + }, + handleAddressRegionChange(value) { + if (!value || !value.length) { + this.driverForm.addressRegion = ''; + this.$refs.driverForm?.validateField('addressRegion'); + return; + } + this.$nextTick(() => { + this.driverForm.addressRegion = this.getAddressRegionLabels(value).join(''); + this.$refs.driverForm?.validateField('addressRegion'); + }); + }, + syncAddressRegionPath() { + if (!this.driverForm.addressRegion || this.driverForm.addressRegionPath?.length) return; + const path = this.findRegionPathByName(this.regionOptions, this.driverForm.addressRegion); + if (path.length) { + this.driverForm.addressRegionPath = path; + } + }, validateDrivingLicenseEndDate(rule, value, callback) { if (!this.driverForm.drivingLicenseStartDate) { callback(new Error('请选择驾驶证有效期起')); @@ -768,8 +894,12 @@ export default { this.driverForm = { ...emptyForm(), ...detail, + addressRegionPath: Array.isArray(detail.addressRegionPath) + ? detail.addressRegionPath + : [], postList: detail.posts ? detail.posts.split(',').filter(Boolean) : [], }; + this.syncAddressRegionPath(); this.driverBox = true; }); }, @@ -817,11 +947,8 @@ export default { }); }, recognizeDrivingLicense() { - const objectKeys = [ - this.drivingLicenseUploads.drivingLicenseFront || this.driverForm.drivingLicenseFront, - this.drivingLicenseUploads.drivingLicenseBack || this.driverForm.drivingLicenseBack, - ].filter(Boolean); - if (!objectKeys.length) { + const certificates = this.buildDrivingLicenseRecognitionCertificates(); + if (!certificates.length) { this.$message.warning('驾驶证图片上传成功,未获取到图片地址,无法自动识别'); return; } @@ -830,7 +957,7 @@ export default { text: '驾驶证识别中', background: 'rgba(255, 255, 255, 0.7)', }); - recognitionTransportCertificates(objectKeys) + recognitionTransportCertificates(certificates) .then(res => { const data = res.data.data || {}; this.applyDrivingLicenseRecognition(data); @@ -843,8 +970,20 @@ export default { loading.close(); }); }, + buildDrivingLicenseRecognitionCertificates() { + return ['drivingLicenseFront', 'drivingLicenseBack'] + .map(prop => { + const objectKey = this.drivingLicenseUploads[prop] || this.driverForm[prop]; + if (!objectKey) return null; + return { + driverLicenseUrl: objectKey, + }; + }) + .filter(Boolean); + }, applyDrivingLicenseRecognition(data = {}) { - const driverName = data.driverLicenseName || data.name || this.getOcrValue(data, ['name', '姓名']); + const driverName = + data.driverLicenseName || data.name || this.getOcrValue(data, ['name', '姓名']); const idCardNo = String( data.driverLicenseIdNo || data.idNo || @@ -1021,6 +1160,7 @@ export default { qualificationNo: this.driverForm.qualificationNo || this.driverForm.idCardNo, posts: this.driverForm.postList.join(','), }; + delete row.addressRegionPath; this.submitLoading = true; submit(row) .then(() => { @@ -1183,18 +1323,6 @@ export default { flex-shrink: 0; } - :deep(.avue-crud__search .avue-form__menu), - :deep(.avue-crud__search .avue-form__menu--right) { - flex: 0 0 auto; - width: auto; - max-width: none; - } - - :deep(.avue-crud__search .avue-form__menu--right) { - margin-left: 12px; - justify-content: flex-end; - } - :deep(.el-table th .cell), :deep(.el-table td .cell) { white-space: nowrap; @@ -1217,6 +1345,7 @@ export default { :deep(.el-date-editor.el-input), :deep(.el-date-editor.el-input__wrapper), + :deep(.el-cascader), :deep(.el-select), :deep(.el-input) { width: 100%; diff --git a/src/views/transportCapacity/ship.vue b/src/views/transportCapacity/ship.vue index 3c8d598..1056a35 100644 --- a/src/views/transportCapacity/ship.vue +++ b/src/views/transportCapacity/ship.vue @@ -87,30 +87,27 @@ diff --git a/src/views/transportCapacity/vehicle.vue b/src/views/transportCapacity/vehicle.vue index 63154f1..cd7392b 100644 --- a/src/views/transportCapacity/vehicle.vue +++ b/src/views/transportCapacity/vehicle.vue @@ -79,30 +79,27 @@ diff --git a/src/views/util/crud-form.vue b/src/views/util/crud-form.vue index 87550c4..edec9bb 100644 --- a/src/views/util/crud-form.vue +++ b/src/views/util/crud-form.vue @@ -6,9 +6,9 @@ add diff --git a/src/views/util/demo/dict-classic.vue b/src/views/util/demo/dict-classic.vue index 29af2da..3a65543 100644 --- a/src/views/util/demo/dict-classic.vue +++ b/src/views/util/demo/dict-classic.vue @@ -34,12 +34,11 @@ {{ row.isSealed === 0 ? '否' : '是' }} diff --git a/src/views/util/demo/dict.vue b/src/views/util/demo/dict.vue index 0332252..0f7dc8a 100644 --- a/src/views/util/demo/dict.vue +++ b/src/views/util/demo/dict.vue @@ -88,13 +88,12 @@ @@ -150,7 +146,7 @@ @@ -177,9 +173,9 @@ @@ -216,16 +212,15 @@ @@ -271,20 +266,19 @@ - 删除 - +
- + +添加选项 - +
diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue index b71cd8b..f8d05ee 100644 --- a/src/views/vehicle/customer-archive.vue +++ b/src/views/vehicle/customer-archive.vue @@ -63,25 +63,22 @@ @@ -447,10 +440,10 @@ @@ -477,10 +470,10 @@ @@ -513,10 +506,10 @@ @@ -602,9 +595,9 @@ @@ -1083,9 +1076,9 @@ diff --git a/src/views/work/claim.vue b/src/views/work/claim.vue index 03f7d1f..ba7a31f 100644 --- a/src/views/work/claim.vue +++ b/src/views/work/claim.vue @@ -15,27 +15,24 @@ @on-load="onLoad" >