From 415e1fd58de36a6f6bd848973f262add83c21521 Mon Sep 17 00:00:00 2001 From: weicw <594098497@qq.com> Date: Thu, 29 Oct 2026 08:58:21 +0800 Subject: [PATCH 1/8] =?UTF-8?q?:sparkles:=20=E7=BB=B4=E4=BF=AE=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E5=B1=95=E7=A4=BA=E5=85=B3=E8=81=94?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E4=B8=8E=E5=85=B3=E8=81=94=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/vehicle/maintenance-record.vue | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/views/vehicle/maintenance-record.vue b/src/views/vehicle/maintenance-record.vue index 886c483..504c88b 100644 --- a/src/views/vehicle/maintenance-record.vue +++ b/src/views/vehicle/maintenance-record.vue @@ -179,6 +179,14 @@ const createTimeRangeMap = { createTimeRange: ['createTimeStart', 'createTimeEnd'], }; +/** 关联异常列:一级 / 二级(如「车辆异常 / 车辆故障维修」),无关联显示 — */ +function formatExceptionSource(row) { + const parts = [row?.exceptionType, row?.exceptionReason].filter( + item => item !== undefined && item !== null && String(item).trim() !== '' + ); + return parts.length ? parts.join(' / ') : '—'; +} + const exportColumns = [ { prop: 'vehicleType', label: '车船类型' }, { prop: 'vehicleNo', label: '车牌号/船号' }, @@ -284,6 +292,23 @@ export default { { max: 30, message: '最多 30 个字符', trigger: 'change' }, ], }, + // 关联信息只读展示:由异常处置录入的记录带出运单与异常类型,PC 新增/编辑不产生关联 + { + label: '关联运单', + prop: 'waybillNo', + minWidth: 150, + addDisplay: false, + editDisplay: false, + formatter: row => row.waybillNo || '—', + }, + { + label: '关联异常', + prop: 'exceptionReason', + minWidth: 180, + addDisplay: false, + editDisplay: false, + formatter: formatExceptionSource, + }, { label: '维修人', prop: 'maintainer', From 72471f48dee6504e42651aa4de7479dfeceea7b9 Mon Sep 17 00:00:00 2001 From: weicw <594098497@qq.com> Date: Thu, 29 Oct 2026 09:45:31 +0800 Subject: [PATCH 2/8] =?UTF-8?q?:wrench:=20=E7=B1=BB=E5=9E=8B=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=94=B9=E7=94=A8=20jsconfig=20=E5=B9=B6=E9=94=81?= =?UTF-8?q?=E5=AE=9A=20TypeScript=205.9=EF=BC=8C=E6=81=A2=E5=A4=8D=20vue-t?= =?UTF-8?q?sc=20=E5=8F=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +- pnpm-lock.yaml | 389 ++++++++++++------------------------------------- 2 files changed, 96 insertions(+), 297 deletions(-) diff --git a/package.json b/package.json index 41bbadd..aacafed 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build:prod": "vite build --mode production && node scripts/zip-dist.mjs", "zip:dist": "node scripts/zip-dist.mjs", "serve": "vite preview --host", - "typecheck": "vue-tsc --noEmit" + "typecheck": "vue-tsc -p jsconfig.json --noEmit" }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", @@ -49,7 +49,7 @@ "prettier": "^2.8.7", "sass": "^1.85.1", "terser": "^5.31.1", - "typescript": "^7.0.2", + "typescript": "5.9.3", "unplugin-auto-import": "^0.11.2", "vite": "^5.4.19", "vite-plugin-compression": "^0.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 697277b..0668854 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,31 +13,31 @@ importers: dependencies: '@element-plus/icons-vue': specifier: ^2.3.1 - version: 2.3.2(vue@3.5.34(typescript@7.0.2)) + version: 2.3.2(vue@3.5.34(typescript@5.9.3)) '@open-file-viewer/core': specifier: ^0.1.27 version: 0.1.27(pdfjs-dist@6.1.200) '@open-file-viewer/vue': specifier: ^0.1.27 - version: 0.1.27(@open-file-viewer/core@0.1.27(pdfjs-dist@6.1.200))(vue@3.5.34(typescript@7.0.2)) + version: 0.1.27(@open-file-viewer/core@0.1.27(pdfjs-dist@6.1.200))(vue@3.5.34(typescript@5.9.3)) '@saber/nf-design-base-elp': specifier: ^1.3.0 version: 1.3.0 '@saber/nf-form-design-elp': specifier: ^1.6.1 - version: 1.6.1(vue@3.5.34(typescript@7.0.2)) + version: 1.6.1(vue@3.5.34(typescript@5.9.3)) '@saber/nf-form-elp': specifier: ^1.6.3 version: 1.7.0 '@smallwei/avue': specifier: ~3.9.2 - version: 3.9.2(patch_hash=5ba15ad41b2c301250bf24adf39da2ed526b8375143da2c5a495361b29e862db)(@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@7.0.2)))(debug@4.4.3(supports-color@7.2.0))(element-plus@2.14.2(vue@3.5.34(typescript@7.0.2)))(vue@3.5.34(typescript@7.0.2)) + version: 3.9.2(patch_hash=5ba15ad41b2c301250bf24adf39da2ed526b8375143da2c5a495361b29e862db)(@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@5.9.3)))(debug@4.4.3(supports-color@7.2.0))(element-plus@2.14.2(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3)) animate.css: specifier: ^4.1.1 version: 4.1.1 avue-plugin-ueditor: specifier: ^1.0.4 - version: 1.0.4(axios@1.16.0(debug@4.4.3(supports-color@7.2.0)))(vue@3.5.34(typescript@7.0.2)) + version: 1.0.4(axios@1.16.0(debug@4.4.3(supports-color@7.2.0)))(vue@3.5.34(typescript@5.9.3)) axios: specifier: ^1.13.5 version: 1.16.0(debug@4.4.3(supports-color@7.2.0)) @@ -58,7 +58,7 @@ importers: version: 6.1.0 element-plus: specifier: ^2.14.2 - version: 2.14.2(vue@3.5.34(typescript@7.0.2)) + version: 2.14.2(vue@3.5.34(typescript@5.9.3)) exceljs: specifier: ^4.4.0 version: 4.4.0 @@ -85,29 +85,29 @@ importers: version: 0.4.0 vue: specifier: ^3.5.13 - version: 3.5.34(typescript@7.0.2) + version: 3.5.34(typescript@5.9.3) vue-i18n: specifier: ^11.4.2 - version: 11.4.2(vue@3.5.34(typescript@7.0.2)) + version: 11.4.2(vue@3.5.34(typescript@5.9.3)) vue-pdf-embed: specifier: ^2.1.6 - version: 2.1.6(vue@3.5.34(typescript@7.0.2)) + version: 2.1.6(vue@3.5.34(typescript@5.9.3)) vue-router: specifier: ^4.3.2 - version: 4.6.4(vue@3.5.34(typescript@7.0.2)) + version: 4.6.4(vue@3.5.34(typescript@5.9.3)) vue3-clipboard: specifier: ^1.0.0 - version: 1.0.0(vue@3.5.34(typescript@7.0.2)) + version: 1.0.0(vue@3.5.34(typescript@5.9.3)) vuex: specifier: ^4.1.0 - version: 4.1.0(vue@3.5.34(typescript@7.0.2)) + version: 4.1.0(vue@3.5.34(typescript@5.9.3)) xlsx: specifier: 0.18.5 version: 0.18.5 devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.4 - version: 5.2.4(vite@5.4.21(sass@1.99.0)(terser@5.46.2))(vue@3.5.34(typescript@7.0.2)) + version: 5.2.4(vite@5.4.21(sass@1.99.0)(terser@5.46.2))(vue@3.5.34(typescript@5.9.3)) '@vue/compiler-sfc': specifier: ^3.4.27 version: 3.5.34 @@ -121,11 +121,11 @@ importers: specifier: ^5.31.1 version: 5.46.2 typescript: - specifier: ^7.0.2 - version: 7.0.2 + specifier: 5.9.3 + version: 5.9.3 unplugin-auto-import: specifier: ^0.11.2 - version: 0.11.5(@vueuse/core@14.3.0(vue@3.5.34(typescript@7.0.2)))(rollup@4.60.3) + version: 0.11.5(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.9.3)))(rollup@4.60.3) vite: specifier: ^5.4.19 version: 5.4.21(sass@1.99.0)(terser@5.46.2) @@ -137,7 +137,7 @@ importers: version: 0.4.0(vite@5.4.21(sass@1.99.0)(terser@5.46.2)) vue-tsc: specifier: ^3.3.11 - version: 3.3.13(typescript@7.0.2) + version: 3.3.13(typescript@5.9.3) packages: @@ -771,126 +771,6 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript/typescript-aix-ppc64@7.0.2': - resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} - engines: {node: '>=16.20.0'} - cpu: [ppc64] - os: [aix] - - '@typescript/typescript-darwin-arm64@7.0.2': - resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [darwin] - - '@typescript/typescript-darwin-x64@7.0.2': - resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [darwin] - - '@typescript/typescript-freebsd-arm64@7.0.2': - resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [freebsd] - - '@typescript/typescript-freebsd-x64@7.0.2': - resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [freebsd] - - '@typescript/typescript-linux-arm64@7.0.2': - resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [linux] - - '@typescript/typescript-linux-arm@7.0.2': - resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} - engines: {node: '>=16.20.0'} - cpu: [arm] - os: [linux] - - '@typescript/typescript-linux-loong64@7.0.2': - resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} - engines: {node: '>=16.20.0'} - cpu: [loong64] - os: [linux] - - '@typescript/typescript-linux-mips64el@7.0.2': - resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} - engines: {node: '>=16.20.0'} - cpu: [mips64el] - os: [linux] - - '@typescript/typescript-linux-ppc64@7.0.2': - resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} - engines: {node: '>=16.20.0'} - cpu: [ppc64] - os: [linux] - - '@typescript/typescript-linux-riscv64@7.0.2': - resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} - engines: {node: '>=16.20.0'} - cpu: [riscv64] - os: [linux] - - '@typescript/typescript-linux-s390x@7.0.2': - resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} - engines: {node: '>=16.20.0'} - cpu: [s390x] - os: [linux] - - '@typescript/typescript-linux-x64@7.0.2': - resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [linux] - - '@typescript/typescript-netbsd-arm64@7.0.2': - resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [netbsd] - - '@typescript/typescript-netbsd-x64@7.0.2': - resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [netbsd] - - '@typescript/typescript-openbsd-arm64@7.0.2': - resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [openbsd] - - '@typescript/typescript-openbsd-x64@7.0.2': - resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [openbsd] - - '@typescript/typescript-sunos-x64@7.0.2': - resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [sunos] - - '@typescript/typescript-win32-arm64@7.0.2': - resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} - engines: {node: '>=16.20.0'} - cpu: [arm64] - os: [win32] - - '@typescript/typescript-win32-x64@7.0.2': - resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} - engines: {node: '>=16.20.0'} - cpu: [x64] - os: [win32] - '@uppy/companion-client@2.2.2': resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} @@ -2194,9 +2074,9 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@7.0.2: - resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} - engines: {node: '>=16.20.0'} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} hasBin: true ufo@1.6.4: @@ -2408,9 +2288,9 @@ snapshots: '@ctrl/tinycolor@4.2.0': {} - '@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@7.0.2))': + '@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@5.9.3))': dependencies: - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) '@esbuild/aix-ppc64@0.21.5': optional: true @@ -2651,10 +2531,10 @@ snapshots: transitivePeerDependencies: - geotiff - '@open-file-viewer/vue@0.1.27(@open-file-viewer/core@0.1.27(pdfjs-dist@6.1.200))(vue@3.5.34(typescript@7.0.2))': + '@open-file-viewer/vue@0.1.27(@open-file-viewer/core@0.1.27(pdfjs-dist@6.1.200))(vue@3.5.34(typescript@5.9.3))': dependencies: '@open-file-viewer/core': 0.1.27(pdfjs-dist@6.1.200) - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -2806,9 +2686,9 @@ snapshots: codemirror: 5.65.21 randomcolor: 0.6.2 - '@saber/nf-form-design-elp@1.6.1(vue@3.5.34(typescript@7.0.2))': + '@saber/nf-form-design-elp@1.6.1(vue@3.5.34(typescript@5.9.3))': dependencies: - vuedraggable: 4.1.0(vue@3.5.34(typescript@7.0.2)) + vuedraggable: 4.1.0(vue@3.5.34(typescript@5.9.3)) transitivePeerDependencies: - vue @@ -2820,16 +2700,16 @@ snapshots: countup.js: 2.10.0 signature_pad: 5.1.3 - '@smallwei/avue@3.9.2(patch_hash=5ba15ad41b2c301250bf24adf39da2ed526b8375143da2c5a495361b29e862db)(@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@7.0.2)))(debug@4.4.3(supports-color@7.2.0))(element-plus@2.14.2(vue@3.5.34(typescript@7.0.2)))(vue@3.5.34(typescript@7.0.2))': + '@smallwei/avue@3.9.2(patch_hash=5ba15ad41b2c301250bf24adf39da2ed526b8375143da2c5a495361b29e862db)(@element-plus/icons-vue@2.3.2(vue@3.5.34(typescript@5.9.3)))(debug@4.4.3(supports-color@7.2.0))(element-plus@2.14.2(vue@3.5.34(typescript@5.9.3)))(vue@3.5.34(typescript@5.9.3))': dependencies: - '@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@7.0.2)) + '@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@5.9.3)) axios: 0.21.4(debug@4.4.3(supports-color@7.2.0)) countup.js: 1.9.3 dayjs: 1.11.20 - element-plus: 2.14.2(vue@3.5.34(typescript@7.0.2)) + element-plus: 2.14.2(vue@3.5.34(typescript@5.9.3)) lodash: 4.18.1 lodash-es: 4.18.1 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) transitivePeerDependencies: - debug @@ -2856,66 +2736,6 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript/typescript-aix-ppc64@7.0.2': - optional: true - - '@typescript/typescript-darwin-arm64@7.0.2': - optional: true - - '@typescript/typescript-darwin-x64@7.0.2': - optional: true - - '@typescript/typescript-freebsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-freebsd-x64@7.0.2': - optional: true - - '@typescript/typescript-linux-arm64@7.0.2': - optional: true - - '@typescript/typescript-linux-arm@7.0.2': - optional: true - - '@typescript/typescript-linux-loong64@7.0.2': - optional: true - - '@typescript/typescript-linux-mips64el@7.0.2': - optional: true - - '@typescript/typescript-linux-ppc64@7.0.2': - optional: true - - '@typescript/typescript-linux-riscv64@7.0.2': - optional: true - - '@typescript/typescript-linux-s390x@7.0.2': - optional: true - - '@typescript/typescript-linux-x64@7.0.2': - optional: true - - '@typescript/typescript-netbsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-netbsd-x64@7.0.2': - optional: true - - '@typescript/typescript-openbsd-arm64@7.0.2': - optional: true - - '@typescript/typescript-openbsd-x64@7.0.2': - optional: true - - '@typescript/typescript-sunos-x64@7.0.2': - optional: true - - '@typescript/typescript-win32-arm64@7.0.2': - optional: true - - '@typescript/typescript-win32-x64@7.0.2': - optional: true - '@uppy/companion-client@2.2.2': dependencies: '@uppy/utils': 4.1.3 @@ -2945,10 +2765,10 @@ snapshots: '@uppy/utils': 4.1.3 nanoid: 3.3.12 - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(sass@1.99.0)(terser@5.46.2))(vue@3.5.34(typescript@7.0.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(sass@1.99.0)(terser@5.46.2))(vue@3.5.34(typescript@5.9.3))': dependencies: vite: 5.4.21(sass@1.99.0)(terser@5.46.2) - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -2956,13 +2776,13 @@ snapshots: '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.28(typescript@7.0.2)': + '@volar/typescript@2.4.28(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 path-browserify: 1.0.1 vscode-uri: 3.2.0 optionalDependencies: - typescript: 7.0.2 + typescript: 5.9.3 '@vue/compiler-core@3.5.34': dependencies: @@ -3022,51 +2842,51 @@ snapshots: '@vue/shared': 3.5.34 csstype: 3.2.3 - '@vue/server-renderer@3.5.34(vue@3.5.34(typescript@7.0.2))': + '@vue/server-renderer@3.5.34(vue@3.5.34(typescript@5.9.3))': dependencies: '@vue/compiler-ssr': 3.5.34 '@vue/shared': 3.5.34 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) '@vue/shared@3.5.34': {} - '@vueuse/core@14.3.0(vue@3.5.34(typescript@7.0.2))': + '@vueuse/core@14.3.0(vue@3.5.34(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.3.0 - '@vueuse/shared': 14.3.0(vue@3.5.34(typescript@7.0.2)) - vue: 3.5.34(typescript@7.0.2) + '@vueuse/shared': 14.3.0(vue@3.5.34(typescript@5.9.3)) + vue: 3.5.34(typescript@5.9.3) '@vueuse/metadata@14.3.0': {} - '@vueuse/shared@14.3.0(vue@3.5.34(typescript@7.0.2))': + '@vueuse/shared@14.3.0(vue@3.5.34(typescript@5.9.3))': dependencies: - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(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@4.0.6)(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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) - dom7: 3.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 is-url: 1.2.4 lodash.throttle: 4.1.1 nanoid: 5.1.11 slate: 0.123.0 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@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@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/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@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@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 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@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@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)': dependencies: '@types/event-emitter': 0.3.5 '@uppy/core': 2.3.4 '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) - dom7: 3.0.0 + dom7: 4.0.6 event-emitter: 0.3.5 html-void-elements: 3.0.0 i18next: 23.16.8 @@ -3087,13 +2907,13 @@ 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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(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@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@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@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@5.1.11)(slate@0.123.0)(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@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@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@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@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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(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@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@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) - '@wangeditor-next/video-module': 2.0.0(@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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(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@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.11)(slate@0.123.0)(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/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) + '@wangeditor-next/video-module': 2.0.0(@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))(dom7@4.0.6)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3) dom7: 4.0.6 is-hotkey: 0.2.0 lodash.camelcase: 4.3.0 @@ -3106,16 +2926,16 @@ snapshots: slate: 0.123.0 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@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@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/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@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@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 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@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@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/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@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@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.debounce: 4.0.8 lodash.throttle: 4.1.1 @@ -3123,22 +2943,22 @@ snapshots: 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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(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@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@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)': + '@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)': 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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@3.0.0)(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@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@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@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 - '@wangeditor-next/video-module@2.0.0(@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@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@5.1.11)(slate@0.123.0)(snabbdom@3.6.3))(dom7@4.0.6)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': + '@wangeditor-next/video-module@2.0.0(@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))(dom7@4.0.6)(nanoid@5.1.11)(slate@0.123.0)(snabbdom@3.6.3)': 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@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@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 nanoid: 5.1.11 slate: 0.123.0 @@ -3185,10 +3005,10 @@ snapshots: slate-history: 0.66.0(slate@0.72.8) snabbdom: 3.6.3 - '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.34(typescript@7.0.2))': + '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.34(typescript@5.9.3))': dependencies: '@wangeditor/editor': 5.1.23 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) '@wangeditor/editor@5.1.23': dependencies: @@ -3317,12 +3137,12 @@ snapshots: asynckit@0.4.0: {} - avue-plugin-ueditor@1.0.4(axios@1.16.0(debug@4.4.3(supports-color@7.2.0)))(vue@3.5.34(typescript@7.0.2)): + avue-plugin-ueditor@1.0.4(axios@1.16.0(debug@4.4.3(supports-color@7.2.0)))(vue@3.5.34(typescript@5.9.3)): dependencies: '@wangeditor/editor': 5.1.23 - '@wangeditor/editor-for-vue': 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.34(typescript@7.0.2)) + '@wangeditor/editor-for-vue': 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.34(typescript@5.9.3)) axios: 1.16.0(debug@4.4.3(supports-color@7.2.0)) - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) axios@0.21.4(debug@4.4.3(supports-color@7.2.0)): dependencies: @@ -3575,15 +3395,15 @@ snapshots: tslib: 2.3.0 zrender: 6.1.0 - element-plus@2.14.2(vue@3.5.34(typescript@7.0.2)): + element-plus@2.14.2(vue@3.5.34(typescript@5.9.3)): dependencies: '@ctrl/tinycolor': 4.2.0 - '@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@7.0.2)) + '@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@5.9.3)) '@floating-ui/dom': 1.7.6 '@popperjs/core': '@sxzz/popperjs-es@2.11.8' '@types/lodash': 4.17.24 '@types/lodash-es': 4.17.12 - '@vueuse/core': 14.3.0(vue@3.5.34(typescript@7.0.2)) + '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3)) async-validator: 4.2.5 dayjs: 1.11.20 lodash: 4.18.1 @@ -3591,7 +3411,7 @@ snapshots: lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.18.1)(lodash@4.18.1) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) vue-component-type-helpers: 3.3.6 end-of-stream@1.4.5: @@ -4352,28 +4172,7 @@ snapshots: typedarray@0.0.6: {} - typescript@7.0.2: - optionalDependencies: - '@typescript/typescript-aix-ppc64': 7.0.2 - '@typescript/typescript-darwin-arm64': 7.0.2 - '@typescript/typescript-darwin-x64': 7.0.2 - '@typescript/typescript-freebsd-arm64': 7.0.2 - '@typescript/typescript-freebsd-x64': 7.0.2 - '@typescript/typescript-linux-arm': 7.0.2 - '@typescript/typescript-linux-arm64': 7.0.2 - '@typescript/typescript-linux-loong64': 7.0.2 - '@typescript/typescript-linux-mips64el': 7.0.2 - '@typescript/typescript-linux-ppc64': 7.0.2 - '@typescript/typescript-linux-riscv64': 7.0.2 - '@typescript/typescript-linux-s390x': 7.0.2 - '@typescript/typescript-linux-x64': 7.0.2 - '@typescript/typescript-netbsd-arm64': 7.0.2 - '@typescript/typescript-netbsd-x64': 7.0.2 - '@typescript/typescript-openbsd-arm64': 7.0.2 - '@typescript/typescript-openbsd-x64': 7.0.2 - '@typescript/typescript-sunos-x64': 7.0.2 - '@typescript/typescript-win32-arm64': 7.0.2 - '@typescript/typescript-win32-x64': 7.0.2 + typescript@5.9.3: {} ufo@1.6.4: {} @@ -4397,7 +4196,7 @@ snapshots: universalify@2.0.1: {} - unplugin-auto-import@0.11.5(@vueuse/core@14.3.0(vue@3.5.34(typescript@7.0.2)))(rollup@4.60.3): + unplugin-auto-import@0.11.5(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.9.3)))(rollup@4.60.3): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.3.0(rollup@4.60.3) @@ -4406,7 +4205,7 @@ snapshots: unimport: 1.3.0(rollup@4.60.3) unplugin: 1.16.1 optionalDependencies: - '@vueuse/core': 14.3.0(vue@3.5.34(typescript@7.0.2)) + '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.9.3)) transitivePeerDependencies: - rollup @@ -4465,54 +4264,54 @@ snapshots: vue-component-type-helpers@3.3.6: {} - vue-i18n@11.4.2(vue@3.5.34(typescript@7.0.2)): + vue-i18n@11.4.2(vue@3.5.34(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.4.2 '@intlify/devtools-types': 11.4.2 '@intlify/shared': 11.4.2 '@vue/devtools-api': 6.6.4 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) - vue-pdf-embed@2.1.6(vue@3.5.34(typescript@7.0.2)): + vue-pdf-embed@2.1.6(vue@3.5.34(typescript@5.9.3)): dependencies: pdfjs-dist: 6.2.108 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) - vue-router@4.6.4(vue@3.5.34(typescript@7.0.2)): + vue-router@4.6.4(vue@3.5.34(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) - vue-tsc@3.3.13(typescript@7.0.2): + vue-tsc@3.3.13(typescript@5.9.3): dependencies: - '@volar/typescript': 2.4.28(typescript@7.0.2) + '@volar/typescript': 2.4.28(typescript@5.9.3) '@vue/language-core': 3.3.13 - typescript: 7.0.2 + typescript: 5.9.3 - vue3-clipboard@1.0.0(vue@3.5.34(typescript@7.0.2)): + vue3-clipboard@1.0.0(vue@3.5.34(typescript@5.9.3)): dependencies: clipboard: 2.0.11 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) - vue@3.5.34(typescript@7.0.2): + vue@3.5.34(typescript@5.9.3): dependencies: '@vue/compiler-dom': 3.5.34 '@vue/compiler-sfc': 3.5.34 '@vue/runtime-dom': 3.5.34 - '@vue/server-renderer': 3.5.34(vue@3.5.34(typescript@7.0.2)) + '@vue/server-renderer': 3.5.34(vue@3.5.34(typescript@5.9.3)) '@vue/shared': 3.5.34 optionalDependencies: - typescript: 7.0.2 + typescript: 5.9.3 - vuedraggable@4.1.0(vue@3.5.34(typescript@7.0.2)): + vuedraggable@4.1.0(vue@3.5.34(typescript@5.9.3)): dependencies: sortablejs: 1.14.0 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) - vuex@4.1.0(vue@3.5.34(typescript@7.0.2)): + vuex@4.1.0(vue@3.5.34(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.34(typescript@7.0.2) + vue: 3.5.34(typescript@5.9.3) webpack-virtual-modules@0.6.2: {} From a528788409170e37c35c8a0466d981f279bbecd0 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Thu, 29 Oct 2026 14:04:55 +0800 Subject: [PATCH 3/8] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=80=BB?= =?UTF-8?q?=E5=8D=95=E5=9C=B0=E5=9D=80=E5=9B=9E=E5=A1=AB=E3=80=81=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E8=B4=B9=E7=94=A8=E8=8B=B1=E6=96=87=E9=A1=B9=E4=B8=8E?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=83=A8=E9=97=A8=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 常用地址级联回填不再误清空;预结算/正式结算过滤 freightJson 杂项;项目查看态业务部门/平台公司支持悬停完整信息。 Co-authored-by: Cursor --- src/views/business/common-cargo.vue | 20 ++- .../components/master-order-editor.vue | 119 +++++++++++++++--- src/views/business/loading-manage.vue | 4 +- src/views/business/project-apply.vue | 115 +++++++++++++---- .../components/formal-settlement-editor.vue | 41 +++++- .../components/pre-settlement-editor.vue | 36 ++++++ 6 files changed, 284 insertions(+), 51 deletions(-) diff --git a/src/views/business/common-cargo.vue b/src/views/business/common-cargo.vue index ef871c0..818b33c 100644 --- a/src/views/business/common-cargo.vue +++ b/src/views/business/common-cargo.vue @@ -280,6 +280,23 @@ export default { .filter(Boolean)[0] || ''; }, applyDefaultDeptSearch() { + // 超管默认不限组织,避免预填当前组织后看不到其他组织/无组织数据。 + if (this.isAdmin) { + const deptColumn = this.findColumn(this.option.column, 'searchDeptId'); + if (deptColumn) { + deptColumn.searchValue = undefined; + } + const nextQuery = { ...this.query }; + delete nextQuery.deptId; + delete nextQuery.searchDeptId; + this.query = nextQuery; + this.$nextTick(() => { + if (this.$refs.crud?.searchForm) { + this.$refs.crud.searchForm.searchDeptId = undefined; + } + }); + return; + } const deptId = this.defaultDeptId(); const deptColumn = this.findColumn(this.option.column, 'searchDeptId'); if (!deptId || !deptColumn) return; @@ -298,7 +315,8 @@ export default { if (deptColumn) { deptColumn.dicData = this.deptOptions; } - // dicData 异步到位后再回填,避免下拉选项为空时清空已选组织,导致请求丢失 deptId。 + // 超管不回填默认组织;普通用户在 dicData 到位后再回填,避免下拉清空已选组织。 + if (this.isAdmin) return; const deptId = String(this.query.deptId || this.defaultDeptId() || ''); if (!deptId) return; if (deptColumn) { diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue index 6ad4fde..0417c0e 100644 --- a/src/views/business/components/master-order-editor.vue +++ b/src/views/business/components/master-order-editor.vue @@ -652,6 +652,8 @@ export default { addressQuery: {}, addressPage: { current: 1, size: 10, total: 0 }, addressRegionPaths: { departure: [], arrival: [] }, + // 程序回填省市区时抑制 cascader @change,避免空值回调把已填地址清空 + suppressAddressRegionChange: false, regionOptions: [], regionLoading: false, regionRequest: null, @@ -889,26 +891,63 @@ export default { findRegionPathByName(options = [], regionName = '', parents = []) { const target = String(regionName || '').replace(/\s+/g, ''); if (!target) return []; + let suffixMatch = []; for (const item of options) { const nextParents = [...parents, item]; const name = nextParents.map(region => region.title || region.name || '').join(''); if (name === target) return nextParents.map(region => region.id); + // 常用地址可能缺省名,允许「市+区」后缀命中完整省市区路径 + if (!suffixMatch.length && name.endsWith(target) && target.length >= 2) { + suffixMatch = nextParents.map(region => region.id); + } const path = this.findRegionPathByName(item.children, target, nextParents); if (path.length) return path; } - return []; + return suffixMatch; }, findRegionPathByCode(options = [], regionCode = '', parents = []) { const target = String(regionCode || '').trim(); if (!target) return []; for (const item of options) { const nextParents = [...parents, item]; - if (String(item.id) === target) return nextParents.map(region => region.id); + if (String(item.id) === target || String(item.value || '') === target) { + return nextParents.map(region => region.id); + } const path = this.findRegionPathByCode(item.children, target, nextParents); if (path.length) return path; } return []; }, + resolveRegionPath(field) { + if (!field) return []; + const codePath = this.findRegionPathByCode( + this.regionOptions, + field.model[field.regionCode] + ); + if (codePath.length) return codePath; + const namePath = this.findRegionPathByName(this.regionOptions, field.model[field.name]); + if (namePath.length) return namePath; + const composed = [field.model[field.provinceName], field.model[field.cityName], field.model[field.districtName]] + .filter(Boolean) + .join(''); + return this.findRegionPathByName(this.regionOptions, composed); + }, + setAddressRegionPath(target, path = []) { + const nextPath = Array.isArray(path) ? path.map(item => String(item)) : []; + const current = this.addressRegionPaths[target] || []; + if ( + current.length === nextPath.length && + current.every((item, index) => String(item) === String(nextPath[index])) + ) { + return; + } + this.suppressAddressRegionChange = true; + // Vue3 直接写动态 key,避免整体替换对象导致其它 cascader 重建并触发空 @change + this.addressRegionPaths[target] = nextPath; + this.$nextTick(() => { + this.suppressAddressRegionChange = false; + }); + }, regionLabels(path = []) { let options = this.regionOptions; const labels = []; @@ -947,10 +986,22 @@ export default { this.setAddressRegionNames(field, [provinceMatch?.[0], cityMatch?.[0], districtMatch?.[0]]); }, handleAddressRegionChange(target, value) { + if (this.suppressAddressRegionChange) return; const field = this.addressModel(target); const path = Array.isArray(value) ? value.map(item => String(item)) : []; - this.addressRegionPaths = { ...this.addressRegionPaths, [target]: path }; + this.setAddressRegionPath(target, path); if (!field) return; + // 程序回填/重建过程中 cascader 可能短暂抛出空值,不能据此清空已选常用地址 + if (!path.length) { + const hasExisting = + String(field.model[field.name] || '').trim() || + String(field.model[field.address] || '').trim() || + String(field.model[field.regionCode] || '').trim(); + if (hasExisting) { + this.$nextTick(() => this.syncAddressRegionPath(target)); + return; + } + } const labels = this.regionLabels(path); field.model[field.name] = labels.join(''); field.model[field.regionCode] = path.at(-1) || ''; @@ -959,19 +1010,29 @@ export default { }, syncAddressRegionPath(target) { const field = this.addressModel(target); - if (!field) return; - const codePath = this.findRegionPathByCode(this.regionOptions, field.model[field.regionCode]); - const path = codePath.length - ? codePath - : this.findRegionPathByName(this.regionOptions, field.model[field.name]); - this.addressRegionPaths = { ...this.addressRegionPaths, [target]: path }; + if (!field || !this.regionOptions.length) return; + const path = this.resolveRegionPath(field); + this.setAddressRegionPath(target, path); if (path.length) this.setAddressRegionNames(field, this.regionLabels(path)); }, syncAddressRegionPaths() { if (!this.regionOptions.length) return; - ['departure', 'arrival', ...this.form.routes.map((route, index) => `route-${index}`)].forEach(target => { - this.syncAddressRegionPath(target); - }); + this.suppressAddressRegionChange = true; + try { + ['departure', 'arrival', ...this.form.routes.map((route, index) => `route-${index}`)].forEach( + target => { + const field = this.addressModel(target); + if (!field) return; + const path = this.resolveRegionPath(field); + this.addressRegionPaths[target] = path; + if (path.length) this.setAddressRegionNames(field, this.regionLabels(path)); + } + ); + } finally { + this.$nextTick(() => { + this.suppressAddressRegionChange = false; + }); + } }, async loadDetail(id) { const res = await api.getDetail(id); @@ -1233,8 +1294,9 @@ export default { this.stationPage.current = 1; this.loadStationList(); }, - selectStation(row) { - const target = this.addressModel(this.addressTarget); + async selectStation(row) { + const targetKey = this.addressTarget; + const target = this.addressModel(targetKey); if (!target) return; const station = this.normalizeStation(row); target.model[target.name] = station.stationName || station.regionName; @@ -1245,7 +1307,9 @@ export default { target.model[target.siteCode] = station.stationCode; this.setAddressRegionNamesFromRow(target, station); this.stationDialogVisible = false; - this.loadRegionOptions().then(() => this.syncAddressRegionPath(this.addressTarget)); + await this.loadRegionOptions(); + await this.$nextTick(); + this.syncAddressRegionPath(targetKey); }, async loadAddressList() { this.addressLoading = true; @@ -1271,8 +1335,9 @@ export default { this.addressPage.current = 1; this.loadAddressList(); }, - selectAddress(row) { - const target = this.addressModel(this.addressTarget); + async selectAddress(row) { + const targetKey = this.addressTarget; + const target = this.addressModel(targetKey); if (!target) return; target.model[target.name] = row.regionName || row.addressName || ''; target.model[target.address] = row.detailAddress || row.address || ''; @@ -1284,7 +1349,10 @@ export default { target.model[target.siteCode] = ''; this.setAddressRegionNamesFromRow(target, row); this.addressDialogVisible = false; - this.loadRegionOptions().then(() => this.syncAddressRegionPath(this.addressTarget)); + await this.loadRegionOptions(); + // nextTick 确保途经点动态 key 已挂载 cascader 后再回填路径 + await this.$nextTick(); + this.syncAddressRegionPath(targetKey); }, handleAddressDetailClick(target) { if (this.isBasicRouteReadonly) return; @@ -1803,12 +1871,23 @@ export default { }, addRoute() { if (this.isBasicRouteReadonly) return; - this.form.routes.push(this.createRoute()); + const index = this.form.routes.length; + this.form.routes.push(this.createRoute(index)); + this.addressRegionPaths[`route-${index}`] = []; }, removeRoute(index) { if (this.isBasicRouteReadonly) return; this.form.routes.splice(index, 1); - this.syncAddressRegionPaths(); + const nextPaths = { departure: this.addressRegionPaths.departure || [], arrival: this.addressRegionPaths.arrival || [] }; + this.form.routes.forEach((route, routeIndex) => { + nextPaths[`route-${routeIndex}`] = this.addressRegionPaths[`route-${routeIndex >= index ? routeIndex + 1 : routeIndex}`] || []; + }); + this.suppressAddressRegionChange = true; + this.addressRegionPaths = nextPaths; + this.$nextTick(() => { + this.suppressAddressRegionChange = false; + this.syncAddressRegionPaths(); + }); }, goodsKey(row = {}) { return `${row.cargoName || ''}\u0000${row.cargoType || ''}`; diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue index 340f404..5be2599 100644 --- a/src/views/business/loading-manage.vue +++ b/src/views/business/loading-manage.vue @@ -4023,7 +4023,7 @@ export default { exists.add(key); } }); - // 承运商类型:新增后须仍存在共同的承运商合同乙方(按客户合同甲方匹配后取交集) + // 承运商类型:新增后须仍存在共同的承运商合同乙方(按客户合同乙方=承运商合同甲方匹配后取交集) if ( String(this.dialogForm.carrierType || '').trim() === '承运商' && nextRows.length > this.selectedWaybillRows.length @@ -4744,7 +4744,7 @@ export default { } this.taskCarrierLoading = true; try { - // 配载单只有一个项目;传入子运单后按客户合同甲方匹配并取承运商合同乙方交集 + // 配载单只有一个项目;传入子运单后按客户合同乙方=承运商合同甲方匹配并取承运商合同乙方交集 const projectId = this.selectedWaybillRows.map(row => row.projectId).find(Boolean); const waybillIds = this.selectedWaybillRows.map(row => row.id).filter(Boolean); const response = await loadingApi.getCarrierContracts( diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue index ff81715..3d9034d 100644 --- a/src/views/business/project-apply.vue +++ b/src/views/business/project-apply.vue @@ -249,35 +249,57 @@ /> - + + + + + + - - - + + + + + + + String(item.value) === String(id)); + if (!node) break; + labels.push(node.label); + nodes = node.children; + } + if (labels.length) return labels.join(' / '); + } + return String(this.form.businessDeptName || '').trim(); + }, + undertakeDeptTooltipText() { + const name = String(this.form.undertakeDeptName || '').trim(); + if (name) return name; + return this.resolveUndertakeDeptNames(this.parseUndertakeDeptIds(this.form.undertakeDeptId)); + }, + shouldShowBusinessDeptTooltip() { + return this.dialogReadonly && !!this.businessDeptTooltipText; + }, + shouldShowUndertakeDeptTooltip() { + return this.dialogReadonly && !!this.undertakeDeptTooltipText; + }, permissionList() { return { addBtn: this.canCreate, @@ -3272,6 +3321,20 @@ export default { width: 100%; } + &__field-tooltip-trigger { + display: block; + width: 100%; + } + + &__field-tooltip { + max-width: 480px; + max-height: 240px; + overflow: auto; + white-space: pre-wrap; + word-break: break-word; + line-height: 1.5; + } + :deep(.el-form-item) { //margin-bottom: 24px; } diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue index dd85e42..bb59b40 100644 --- a/src/views/settlement/components/formal-settlement-editor.vue +++ b/src/views/settlement/components/formal-settlement-editor.vue @@ -3222,10 +3222,47 @@ export default { return files.length ? JSON.stringify(files) : ''; }, parseFeeItems(value) { + const raw = this.parseRawFeeItems(value); + const metaKeys = new Set([ + 'currency', + 'totalFreightAmount', + 'otherFreightAmount', + 'freightItems', + 'freightTotal', + 'totalFreight', + 'totalAmount', + 'freight', + 'freightAmount', + 'transportFee', + 'otherFeeTotal', + 'otherAmount', + ]); + const result = {}; + let otherFeeAmount = 0; + Object.entries(raw).forEach(([key, amount]) => { + if (!key) return; + if (key === 'otherFreightAmount' || key === 'otherFeeTotal' || key === 'otherAmount') { + otherFeeAmount += Number(amount || 0); + return; + } + if (metaKeys.has(key)) return; + if (amount && typeof amount === 'object') return; + result[key] = amount; + }); + const hasOtherFee = Object.keys(result).some( + name => String(name).includes('其它费') || String(name).includes('其他费') + ); + if (otherFeeAmount && !hasOtherFee) { + result['其它费用'] = otherFeeAmount; + } + return result; + }, + parseRawFeeItems(value) { if (!value) return {}; - if (typeof value === 'object') return value; + if (typeof value === 'object') return { ...value }; try { - return JSON.parse(value); + const parsed = JSON.parse(value); + return parsed && typeof parsed === 'object' ? parsed : {}; } catch { return {}; } diff --git a/src/views/settlement/components/pre-settlement-editor.vue b/src/views/settlement/components/pre-settlement-editor.vue index cf92c7b..5dfb517 100644 --- a/src/views/settlement/components/pre-settlement-editor.vue +++ b/src/views/settlement/components/pre-settlement-editor.vue @@ -3061,6 +3061,42 @@ export default { }); }, parseFeeItems(value) { + const raw = this.parseRawFeeItems(value); + const metaKeys = new Set([ + 'currency', + 'totalFreightAmount', + 'otherFreightAmount', + 'freightItems', + 'freightTotal', + 'totalFreight', + 'totalAmount', + 'freight', + 'freightAmount', + 'transportFee', + 'otherFeeTotal', + 'otherAmount', + ]); + const result = {}; + let otherFeeAmount = 0; + Object.entries(raw).forEach(([key, amount]) => { + if (!key) return; + if (key === 'otherFreightAmount' || key === 'otherFeeTotal' || key === 'otherAmount') { + otherFeeAmount += Number(amount || 0); + return; + } + if (metaKeys.has(key)) return; + if (amount && typeof amount === 'object') return; + result[key] = amount; + }); + const hasOtherFee = Object.keys(result).some( + name => String(name).includes('其它费') || String(name).includes('其他费') + ); + if (otherFeeAmount && !hasOtherFee) { + result['其它费用'] = otherFeeAmount; + } + return result; + }, + parseRawFeeItems(value) { if (!value) return {}; if (typeof value === 'object') return { ...value }; try { From 083d9547656d4ddf92500b847bccba5908eea323 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Thu, 29 Oct 2026 22:44:01 +0800 Subject: [PATCH 4/8] =?UTF-8?q?:bug:=20=E6=94=BE=E5=BC=80=E6=9C=AC?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E8=BF=90=E5=8D=95=E5=A4=8D=E5=88=B6=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E9=81=BF=E5=85=8D=E6=80=BB=E5=8D=95=E9=80=89=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=97=B6=E6=8F=90=E5=89=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../business/components/master-order-editor.vue | 15 --------------- .../business/components/waybill-manage-page.vue | 9 +++++++-- src/views/business/waybill-manage.vue | 2 +- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue index 0417c0e..bcd21cc 100644 --- a/src/views/business/components/master-order-editor.vue +++ b/src/views/business/components/master-order-editor.vue @@ -1229,25 +1229,11 @@ export default { // 展示模式由已选数据决定:有站点编码则显示站点名,否则省市区;暂不按运输方式强制站点限制。 return Boolean(siteCode && siteCode !== '/'); }, - hasAddressValue(target) { - const field = this.addressModel(target); - if (!field) return false; - return Boolean( - String(field.model[field.address] || '').trim() || String(field.model[field.name] || '').trim() - ); - }, - tipEmptyAddressDetail(target) { - // 替代原「请先选择运输方式」placeholder:空地址点击时 toast,已有值不再提示。 - if (!this.hasAddressValue(target)) { - this.$message.warning('请输入详细地址'); - } - }, resolveAddressRegionCode(row = {}) { return row.regionCode || row.districtCode || row.areaCode || row.adcode || ''; }, openCommonAddress(target) { if (this.isBasicRouteReadonly) return; - this.tipEmptyAddressDetail(target); this.addressTarget = target; // 暂不按运输方式限制站点:统一走常用地址选择。 this.addressQuery = {}; @@ -1356,7 +1342,6 @@ export default { }, handleAddressDetailClick(target) { if (this.isBasicRouteReadonly) return; - this.tipEmptyAddressDetail(target); this.openAddressMap(target); }, openAddressMap(target) { diff --git a/src/views/business/components/waybill-manage-page.vue b/src/views/business/components/waybill-manage-page.vue index e1dd0f9..268d6cc 100644 --- a/src/views/business/components/waybill-manage-page.vue +++ b/src/views/business/components/waybill-manage-page.vue @@ -5116,11 +5116,16 @@ export default { ); }, canCopy(row) { + if (!row) return false; + // 归属本账号可见范围的运单允许复制。跨组织但项目归属本账号的记录会被标成只读, + // 只读仅拦截编辑/删除,不拦截复制。具备查看、新增、编辑或复制权限即可使用。 return ( this.hasAction('copy') && - this.hasPermission(`${this.config.permission}_copy`) && !this.readonlyScope && - !row.readonly + (this.hasPermission(`${this.config.permission}_copy`) || + this.hasPermission(`${this.config.permission}_add`) || + this.hasPermission(`${this.config.permission}_edit`) || + this.hasPermission(`${this.config.permission}_view`)) ); }, canEnable(row) { diff --git a/src/views/business/waybill-manage.vue b/src/views/business/waybill-manage.vue index bc03525..ffc278b 100644 --- a/src/views/business/waybill-manage.vue +++ b/src/views/business/waybill-manage.vue @@ -6,7 +6,7 @@ :config="config" :crud-option="option" :detail-id="detailId" - :menu-width="250" + :menu-width="320" standalone-form-page /> From fe4255c59b5af820c69297efadad2453e36a0493 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Fri, 30 Oct 2026 11:40:32 +0800 Subject: [PATCH 5/8] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=AD=A3?= =?UTF-8?q?=E5=BC=8F=E7=BB=93=E7=AE=97=E6=97=A7=E8=B7=AF=E5=BE=84=E7=A9=BA?= =?UTF-8?q?=E7=99=BD=EF=BC=8C=E6=8C=89=E5=8D=95=E5=8F=B7=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E4=BB=98=E6=AC=BE/=E6=94=B6=E6=AC=BE=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/router/views/index.js | 16 +++++++ .../settlement/formal-settlement-redirect.vue | 42 +++++++++++++++++++ src/views/settlement/formal-settlement.vue | 27 ++++++++++-- .../settlement/receivable-payable-detail.vue | 2 +- .../settlement/settlement-adjustment.vue | 12 ++++-- 5 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 src/views/settlement/formal-settlement-redirect.vue diff --git a/src/router/views/index.js b/src/router/views/index.js index be1a05d..e90da64 100644 --- a/src/router/views/index.js +++ b/src/router/views/index.js @@ -104,6 +104,22 @@ export default [ }, ], }, + { + // 兼容旧菜单路径:按 detailNo 解析应付/应收后跳转到拆分后的列表页 + path: '/settlement/formal-settlement', + component: Layout, + children: [ + { + path: '', + name: '正式结算单兼容跳转', + meta: { + keepAlive: false, + activeMenu: '/settlement/payment-settlement', + }, + component: loadView(() => import('@/views/settlement/formal-settlement-redirect.vue')), + }, + ], + }, { path: '/settlement/formal-settlement/form', component: Layout, diff --git a/src/views/settlement/formal-settlement-redirect.vue b/src/views/settlement/formal-settlement-redirect.vue new file mode 100644 index 0000000..76f3ce1 --- /dev/null +++ b/src/views/settlement/formal-settlement-redirect.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/views/settlement/formal-settlement.vue b/src/views/settlement/formal-settlement.vue index 3c7926c..f622d02 100644 --- a/src/views/settlement/formal-settlement.vue +++ b/src/views/settlement/formal-settlement.vue @@ -152,6 +152,8 @@ export default { form: { appliedAmount: 0, remark: '' }, }, mkEnabled: false, + // keep-alive 多标签下仅激活实例响应 detailNo,避免缓存页重复弹窗 + isPageActive: true, }; }, computed: { @@ -222,11 +224,10 @@ export default { }, }, created() { - // 标签机制按 fullPath 缓存同页多实例:仅当前路由实例应响应 detailNo 跳转,防止缓存旧实例也弹窗 - this.ownFullPath = this.$route.fullPath; this.loadOrganizationOptions(); }, mounted() { + this.isPageActive = true; this.openRouteDetail(); loadMkEnabled() .then(enabled => { @@ -237,10 +238,18 @@ export default { }); }, activated() { + this.isPageActive = true; if (sessionStorage.getItem('formal-settlement-list-refresh') === '1') { sessionStorage.removeItem('formal-settlement-list-refresh'); this.onLoad(this.page); } + // 从其他页带 detailNo 跳回时,激活态补开详情 + if (this.$route.query.detailNo) { + this.openRouteDetail(); + } + }, + deactivated() { + this.isPageActive = false; }, methods: { hasPermission(actionOrCode) { @@ -320,7 +329,7 @@ export default { }, async openRouteDetail(detailNo = this.$route.query.detailNo) { const formalSettlementNo = String(detailNo || '').trim(); - if (!formalSettlementNo || this.ownFullPath !== this.$route.fullPath) return; + if (!formalSettlementNo || !this.isPageActive) return; const response = await api.getList(1, 10, { formalSettlementNo }); const data = this.unwrapData(response); const row = (data.records || []).find(item => item.formalSettlementNo === formalSettlementNo); @@ -328,6 +337,18 @@ export default { this.$message.warning(`未找到对应的${this.billLabel}`); return; } + // 锁定菜单(付款/收款)下若单号属于另一类型,跳到对应列表页再打开 + if ( + this.lockedSettlementType && + row.settlementType && + row.settlementType !== this.lockedSettlementType + ) { + await this.$router.replace({ + path: settlementListPath(row.settlementType), + query: { detailNo: formalSettlementNo }, + }); + return; + } if (!this.lockedSettlementType) { this.activeSettlementType = row.settlementType || this.activeSettlementType; } diff --git a/src/views/settlement/receivable-payable-detail.vue b/src/views/settlement/receivable-payable-detail.vue index 75603cd..3d15c6c 100644 --- a/src/views/settlement/receivable-payable-detail.vue +++ b/src/views/settlement/receivable-payable-detail.vue @@ -1914,7 +1914,7 @@ export default { return; } if (this.settlementType === 'payable' && column.prop === 'formalSettlementNo') { - this.openSettlementDetail('/settlement/formal-settlement', row.formalSettlementNo); + this.openSettlementDetail('/settlement/payment-settlement', row.formalSettlementNo); return; } this.openDetailDialog(row); diff --git a/src/views/settlement/settlement-adjustment.vue b/src/views/settlement/settlement-adjustment.vue index 3d99e0c..93f1b06 100644 --- a/src/views/settlement/settlement-adjustment.vue +++ b/src/views/settlement/settlement-adjustment.vue @@ -185,6 +185,7 @@ import { kingdeeSyncStatusOptions } from '@/option/settlement/formalSettlementSe import SettlementAdjustmentEditor from './components/settlement-adjustment-editor.vue'; import SettlementTableTools from './components/settlement-table-tools.vue'; import { isAdministrator } from '@/utils/auth'; +import { settlementListPath } from '@/utils/settlement-menu'; const emptyQuery = () => ({ adjustmentNo: '', @@ -285,20 +286,23 @@ export default { openView(row) { this.editor = { visible: true, id: row.id, readonly: true }; }, - // 单据号→本单查看弹窗;结算单号→跳正式结算列表页并自动打开该单详情(页面支持 ?detailNo=) + // 单据号→本单查看弹窗;结算单号→跳付款/收款结算列表页并自动打开该单详情(页面支持 ?detailNo=) handleTableLink(row, column) { if (column.prop === 'formalSettlementNo') { - this.openSettlementDetail(row.formalSettlementNo); + this.openSettlementDetail(row.formalSettlementNo, row.settlementType); return; } this.openView(row); }, - openSettlementDetail(detailNo) { + openSettlementDetail(detailNo, settlementType) { if (!detailNo) { this.$message.info('当前记录未关联结算单详情'); return; } - this.$router.push({ path: '/settlement/formal-settlement', query: { detailNo } }); + this.$router.push({ + path: settlementListPath(settlementType), + query: { detailNo }, + }); }, isEditable(row) { return ['draft', 'returned'].includes(row.approvalStatus); From 8d85311bb327effef2ea4fb3351cb31ecd180a75 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Fri, 30 Oct 2026 11:47:21 +0800 Subject: [PATCH 6/8] =?UTF-8?q?:sparkles:=20=E5=8F=B8=E6=9C=BA=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E8=AF=81OCR=E6=94=AF=E6=8C=81=E6=AD=A3=E5=8F=8D?= =?UTF-8?q?=E9=9D=A2=E8=AF=86=E5=88=AB=E5=B9=B6=E5=9B=9E=E5=A1=AB=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/views/transportCapacity/driver.vue | 130 +++++++++++++++++++++---- 1 file changed, 112 insertions(+), 18 deletions(-) diff --git a/src/views/transportCapacity/driver.vue b/src/views/transportCapacity/driver.vue index dbf7be1..c694ff3 100644 --- a/src/views/transportCapacity/driver.vue +++ b/src/views/transportCapacity/driver.vue @@ -303,6 +303,42 @@ /> + + + +
+ + +
+
+
+ + + + 是 + + + +
@@ -701,6 +737,9 @@ const emptyForm = () => ({ posts: '', idCardFront: '', idCardBack: '', + idCardValidStart: '', + idCardValidEnd: '', + idCardLongTerm: 0, headPhoto: '', drivingType: '', drivingLicenseNo: '', @@ -1260,12 +1299,13 @@ export default { }, handleIdCardUploadSuccess(prop, url) { this.setImage(prop, url); - if (prop !== 'idCardFront') { - return; + this.recognizeIdCard(url, prop); + }, + handleIdCardLongTermChange() { + if (this.driverForm.idCardLongTerm === 1) { + this.driverForm.idCardValidEnd = ''; } - this.recognizeBaiduOcr(url, 'id_card', 'front', '身份证', data => { - this.applyIdCardRecognition(data); - }); + this.validateFormField('idCardValidEnd'); }, handleDrivingLicenseUploadSuccess(prop, url) { this.setImage(prop, url); @@ -1308,7 +1348,7 @@ export default { loading.close(); }); }, - recognizeIdCard(url = '') { + recognizeIdCard(url = '', prop = 'idCardFront') { if (!url) { this.$message.warning('身份证图片上传成功,未获取到图片地址,无法自动识别'); return; @@ -1321,7 +1361,7 @@ export default { recognitionIDCard(url) .then(res => { const data = res.data.data || {}; - this.applyIdCardRecognition(data); + this.applyIdCardRecognition(data, prop); this.$message.success('身份证识别完成'); }) .catch(() => { @@ -1444,45 +1484,62 @@ export default { this.driverForm.drivingLicenseLongTerm = 0; } }, - applyIdCardRecognition(data = {}) { + applyIdCardRecognition(data = {}, prop = 'idCardFront') { + // 正反面都走同一 ShenFenZheng 接口;反面结果可能也带姓名/民族等字段, + // 反面只补空、不覆盖正面已填值,避免国徽页误识别冲掉正面信息。 + const fromBack = prop === 'idCardBack'; + const canWrite = (current, next) => !!next && (!fromBack || !current); const driverName = data.name || data.driverName || this.getOcrValue(data, ['name', '姓名']); const idCardNo = String( data.idNo || data.idCardNo || data.idCard || - this.getOcrValue(data, ['idNo', 'idCardNo', 'number', '公民身份号码', '身份证号']) - ).toUpperCase(); + this.getOcrValue(data, ['idNo', 'idCardNo', 'number', '公民身份号码', '身份证号']) || + '' + ) + .trim() + .toUpperCase(); const ocrGender = data.gender || this.getOcrValue(data, ['gender', '性别']); const ocrNation = data.nation || data.ethnicGroup || this.getOcrValue(data, ['ethnic_group', 'nation', '民族']); const ocrAddress = data.address || this.getOcrValue(data, ['address', '住址', '地址']); - if (driverName) { + const ocrBirthday = + data.birthday || this.getOcrValue(data, ['birthday', '出生', '出生年月', '出生日期']); + if (canWrite(this.driverForm.driverName, driverName)) { this.driverForm.driverName = driverName; } - if (ocrGender) { + if (canWrite(this.driverForm.gender, ocrGender)) { this.driverForm.gender = ocrGender; } - if (ocrNation) { + if (canWrite(this.driverForm.nation, ocrNation)) { this.driverForm.nation = this.normalizeNation(ocrNation); } - if (ocrAddress) { + if (canWrite(this.driverForm.address, ocrAddress)) { this.driverForm.address = String(ocrAddress).trim(); } - if (idCardNo) { + if (ocrBirthday) { + const birthday = this.normalizeBirthday(ocrBirthday); + if (canWrite(this.driverForm.birthday, birthday)) { + this.driverForm.birthday = birthday; + } + } + if (idCardNo && canWrite(this.driverForm.idCardNo, idCardNo)) { this.driverForm.idCardNo = idCardNo; if (!this.driverForm.qualificationNo) { this.driverForm.qualificationNo = idCardNo; } const idCardInfo = this.parseIdCardInfo(idCardNo); - if (idCardInfo.birthday) { + if (!this.driverForm.birthday && idCardInfo.birthday) { this.driverForm.birthday = idCardInfo.birthday; } if (!this.driverForm.gender && idCardInfo.gender) { this.driverForm.gender = idCardInfo.gender; } } + // 有效期:正反面都可回填;反面通常才有,识别到就覆盖 + this.applyIdCardValidity(data); this.$nextTick(() => { [ 'driverName', @@ -1492,11 +1549,46 @@ export default { 'nation', 'qualificationNo', 'address', - ].forEach(prop => { - this.$refs.driverForm?.validateField(prop); + 'idCardValidEnd', + ].forEach(field => { + this.$refs.driverForm?.validateField(field); }); }); }, + applyIdCardValidity(data = {}) { + const validStart = + data.validDateStart || + data.idCardValidStart || + this.getOcrValue(data, ['签发日期', '有效起始日期', '有效期限起', '身份证_签发日期']); + const validEndRaw = + data.validDateEnd || + data.idCardValidEnd || + this.getOcrValue(data, [ + '失效日期', + '有效期限', + '有效期限止', + '身份证_有效期限', + '身份证_失效日期', + ]); + const longTerm = data.longTerm ?? data.idCardLongTerm; + const validEndText = String(validEndRaw || '').trim(); + if (longTerm === 1 || longTerm === '1' || /长期|永久/.test(validEndText)) { + this.driverForm.idCardLongTerm = 1; + this.driverForm.idCardValidEnd = ''; + } else if (validEndText) { + const endDate = this.normalizeBirthday(validEndText); + if (endDate) { + this.driverForm.idCardValidEnd = endDate; + this.driverForm.idCardLongTerm = 0; + } + } + if (validStart) { + const startDate = this.normalizeBirthday(validStart); + if (startDate) { + this.driverForm.idCardValidStart = startDate; + } + } + }, getOcrValue(data = {}, keys = []) { const keyInfos = data.keyInfos || data.keyInfo || data.ocrKeyInfos || []; const list = Array.isArray(keyInfos) ? keyInfos : []; @@ -1675,6 +1767,8 @@ export default { const row = { ...this.driverForm, birthday: this.normalizeBirthday(this.driverForm.birthday), + idCardValidStart: this.normalizeBirthday(this.driverForm.idCardValidStart), + idCardValidEnd: this.normalizeBirthday(this.driverForm.idCardValidEnd), drivingLicenseStartDate: this.normalizeBirthday(this.driverForm.drivingLicenseStartDate), drivingLicenseEndDate: this.normalizeBirthday(this.driverForm.drivingLicenseEndDate), qualificationStartDate: this.normalizeBirthday(this.driverForm.qualificationStartDate), From 5ce91ec5d5cbfff2a997034265633aeefd395475 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Fri, 30 Oct 2026 11:47:51 +0800 Subject: [PATCH 7/8] =?UTF-8?q?:bug:=20=E6=80=BB=E5=8D=95=E9=80=89?= =?UTF-8?q?=E5=9D=80=E5=BC=B9=E7=AA=97=E5=9B=BA=E5=AE=9Alabel=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=EF=BC=8C=E5=B9=B6=E5=85=BC=E5=AE=B9=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=9D=9E=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../components/master-order-editor.vue | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue index bcd21cc..4212ea1 100644 --- a/src/views/business/components/master-order-editor.vue +++ b/src/views/business/components/master-order-editor.vue @@ -352,7 +352,12 @@ @opened="loadAddressList" >