From d16c0fdba3c9e309580d0549df2ffeb451686dfe Mon Sep 17 00:00:00 2001 From: z9130 <984661593@qq.com> Date: Thu, 24 Oct 2024 10:28:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E9=A1=B9=E7=9B=AE,=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-contract/.env | 5 - apps/web-contract/.env.analyze | 7 - apps/web-contract/.env.development | 16 - apps/web-contract/.env.production | 19 - apps/web-contract/auto-imports.d.ts | 134 --- apps/web-contract/forge.config.ts | 63 -- apps/web-contract/index.html | 39 - apps/web-contract/package.json | 66 -- apps/web-contract/postcss.config.mjs | 1 - apps/web-contract/public/favicon.ico | Bin 67646 -> 0 bytes apps/web-contract/readme.md | 3 - apps/web-contract/src/api/global.d.ts | 28 - apps/web-contract/src/api/index.ts | 958 ------------------ apps/web-contract/src/api/request/config.ts | 19 - apps/web-contract/src/api/request/getToken.ts | 83 -- apps/web-contract/src/api/request/index.ts | 324 ------ .../src/api/request/transferResponse.ts | 89 -- apps/web-contract/src/api/system/auth.ts | 77 -- apps/web-contract/src/api/system/menu.ts | 8 - apps/web-contract/src/app.vue | 115 --- .../src/assets/canteen/orderfood.png | Bin 4404 -> 0 bytes apps/web-contract/src/bootstrap.ts | 41 - apps/web-contract/src/common/unit.ts | 97 -- .../src/components/dict-tag/dict-tag.vue | 110 -- .../src/components/dict-tag/index.ts | 1 - .../src/components/flow-record-table/curd.tsx | 13 - .../flow-record-table/flow-record-table.vue | 0 .../temporary-form-modal.vue | 61 -- apps/web-contract/src/globals.d.ts | 28 - apps/web-contract/src/hooks/fastCrud.ts | 0 apps/web-contract/src/hooks/useRender.ts | 149 --- apps/web-contract/src/hooks/vxeTable.ts | 76 -- .../layouts/authentication/authentication.vue | 121 --- .../src/layouts/authentication/form.vue | 33 - .../layouts/authentication/icons/slogan.vue | 3 - .../src/layouts/authentication/index.ts | 1 - apps/web-contract/src/layouts/basic.vue | 201 ---- apps/web-contract/src/layouts/index.ts | 8 - .../src/layouts/notification/index.ts | 3 - .../src/layouts/notification/notification.vue | 187 ---- .../src/layouts/notification/types.ts | 9 - apps/web-contract/src/locales/README.md | 3 - apps/web-contract/src/locales/index.ts | 94 -- .../web-contract/src/locales/langs/en-US.json | 8 - .../web-contract/src/locales/langs/zh-CN.json | 8 - apps/web-contract/src/main.ts | 31 - apps/web-contract/src/plugins/fastCrud.ts | 14 - apps/web-contract/src/plugins/vxeTable.ts | 202 ---- apps/web-contract/src/preferences.ts | 13 - apps/web-contract/src/router/access.ts | 42 - apps/web-contract/src/router/guard.ts | 262 ----- apps/web-contract/src/router/index.ts | 32 - apps/web-contract/src/router/routes/core.ts | 114 --- apps/web-contract/src/router/routes/index.ts | 31 - .../src/router/routes/modules/contract.ts | 537 ---------- .../src/router/routes/modules/dashboard.ts | 49 - .../src/router/routes/modules/system.ts | 29 - .../src/router/routes/modules/ucenter.ts | 51 - apps/web-contract/src/store/auth.ts | 130 --- apps/web-contract/src/store/dict.ts | 202 ---- apps/web-contract/src/store/index.ts | 2 - apps/web-contract/src/utils/dict/index.ts | 226 ----- apps/web-contract/src/utils/dict/shared.ts | 61 -- .../src/utils/dict/static.data.js | 123 --- apps/web-contract/src/utils/file.ts | 101 -- apps/web-contract/src/utils/index.ts | 220 ---- apps/web-contract/src/utils/logger.ts | 44 - apps/web-contract/src/utils/time.ts | 68 -- apps/web-contract/src/views/_core/README.md | 3 - .../src/views/_core/about/index.vue | 9 - .../views/_core/authentication/code-login.vue | 30 - .../_core/authentication/forget-password.vue | 23 - .../src/views/_core/authentication/login.vue | 101 -- .../_core/authentication/qrcode-login.vue | 10 - .../views/_core/authentication/register.vue | 25 - .../src/views/_core/fallback/coming-soon.vue | 7 - .../src/views/_core/fallback/forbidden.vue | 9 - .../views/_core/fallback/internal-error.vue | 9 - .../src/views/_core/fallback/not-found.vue | 9 - .../src/views/_core/fallback/offline.vue | 9 - .../src/views/contract/approval/edit/curd.tsx | 186 ---- .../views/contract/approval/edit/index.vue | 829 --------------- .../src/views/contract/approval/list/crud.tsx | 205 ---- .../views/contract/approval/list/index.vue | 215 ---- .../choose-signing-basis-modal.vue | 204 ---- .../approval/signing-basis/columns.tsx | 49 - .../contract/approval/signing-basis/crud.tsx | 176 ---- .../contract/approval/signing-basis/index.vue | 173 ---- .../signing-basis-edit-modal.vue | 199 ---- .../views/contract/approval/todo/index.vue | 12 - .../src/views/contract/archive/list/crud.tsx | 85 -- .../src/views/contract/archive/list/index.vue | 122 --- .../contract/archive/todo/archive/crud.tsx | 99 -- .../contract/archive/todo/archive/index.vue | 122 --- .../archive/todo/retracement/crud.tsx | 105 -- .../archive/todo/retracement/index.vue | 122 --- .../src/views/contract/audit/list/crud.tsx | 97 -- .../src/views/contract/audit/list/index.vue | 245 ----- .../src/views/contract/audit/todo/index.vue | 182 ---- .../business/edit/basic-info-card.vue | 282 ------ .../business/edit/basic-info-curd.tsx | 189 ---- .../contract/business/edit/bid-columns.tsx | 85 -- .../contract/business/edit/business-card.vue | 751 -------------- .../src/views/contract/business/edit/curd.tsx | 233 ----- .../views/contract/business/edit/index.vue | 779 -------------- .../src/views/contract/business/list/crud.tsx | 129 --- .../views/contract/business/list/index.vue | 190 ---- .../contract/business/result-list/crud.tsx | 129 --- .../contract/business/result-list/index.vue | 184 ---- .../business/result/basic-info-curd.tsx | 205 ---- .../contract/business/result/bid-columns.tsx | 74 -- .../views/contract/business/result/curd.tsx | 367 ------- .../business/result/fill-result-card.vue | 600 ----------- .../views/contract/business/result/index.vue | 334 ------ .../views/contract/business/todo/index.vue | 12 - .../src/views/contract/company/edit/curd.tsx | 412 -------- .../src/views/contract/company/edit/index.vue | 341 ------- .../company/list/choose-company-modal.vue | 228 ----- .../src/views/contract/company/list/crud.tsx | 135 --- .../src/views/contract/company/list/index.vue | 186 ---- .../audit-node-table/audit-node-table.vue | 93 -- .../components/basis-table/basis-table.vue | 120 --- .../components/file-card/file-card.vue | 70 -- .../components/todo-page/todo-page.vue | 224 ---- .../contract-type-edit-modal.vue | 150 --- .../contract-type/contract-type.vue | 164 --- .../config/components/contract-type/crud.tsx | 31 - .../components/project-manager/crud.tsx | 42 - .../project-manager-edit-modal.vue | 89 -- .../project-manager/project-manager.vue | 167 --- .../components/project-name-manager/crud.tsx | 42 - .../project-name-manager-edit-modal.vue | 87 -- .../project-name-manager.vue | 166 --- .../components/template-manager/crud.tsx | 62 -- .../template-manager-edit-modal.vue | 168 --- .../template-manager/template-manager.vue | 164 --- .../src/views/contract/config/index.vue | 105 -- .../declaration/edit/basic-info-curd.tsx | 206 ---- .../views/contract/declaration/edit/curd.tsx | 266 ----- .../views/contract/declaration/edit/index.vue | 630 ------------ .../views/contract/declaration/list/crud.tsx | 178 ---- .../views/contract/declaration/list/index.vue | 180 ---- .../views/contract/declaration/print/crud.tsx | 91 -- .../contract/declaration/print/index.vue | 248 ----- .../views/contract/declaration/todo/index.vue | 12 - .../info-approval/approval-card.vue | 76 -- .../components/info-approval/curd.tsx | 274 ----- .../info-approval/info-approval.vue | 81 -- .../components/info-archived/curd.tsx | 307 ------ .../info-archived/info-archived.vue | 209 ---- .../info-business/business-card.vue | 206 ---- .../components/info-business/curd.tsx | 430 -------- .../info-business/info-business.vue | 120 --- .../info-declaration/info-declaration.vue | 9 - .../components/info-perform/info-perform.vue | 9 - .../components/info-sign/info-sign.vue | 9 - .../components/info-track/curd.tsx | 10 - .../components/info-track/info-track.vue | 115 --- .../src/views/contract/iframe-info/index.vue | 98 -- .../perform/edit/components/break/curd.tsx | 97 -- .../perform/edit/components/break/index.vue | 288 ------ .../perform/edit/components/change/curd.tsx | 263 ----- .../perform/edit/components/change/index.vue | 288 ------ .../perform/edit/components/payment/curd.tsx | 298 ------ .../perform/edit/components/payment/index.vue | 288 ------ .../perform/edit/components/relieve/curd.tsx | 108 -- .../perform/edit/components/relieve/index.vue | 288 ------ .../src/views/contract/perform/edit/index.vue | 68 -- .../src/views/contract/perform/list/crud.tsx | 71 -- .../src/views/contract/perform/list/index.vue | 138 --- .../contract/perform/result-list/crud.tsx | 109 -- .../contract/perform/result-list/index.vue | 179 ---- .../views/contract/perform/result/crud.tsx | 71 -- .../views/contract/perform/result/index.vue | 130 --- .../perform/temporary-archive/crud.tsx | 44 - .../perform/temporary-archive/index.vue | 135 --- .../src/views/contract/perform/todo/index.vue | 12 - .../views/contract/perform/todo/info-curd.tsx | 123 --- .../web-contract/src/views/contract/schema.ts | 144 --- .../contract/sign-authorization/edit/curd.tsx | 366 ------- .../sign-authorization/edit/index.vue | 431 -------- .../contract/sign-authorization/list/crud.tsx | 77 -- .../sign-authorization/list/index.vue | 183 ---- .../src/views/contract/sign/edit/curd.tsx | 234 ----- .../src/views/contract/sign/edit/index.vue | 483 --------- .../views/contract/sign/edit/upload-modal.vue | 129 --- .../src/views/contract/sign/list/crud.tsx | 126 --- .../src/views/contract/sign/list/index.vue | 133 --- .../src/views/contract/sign/todo/index.vue | 12 - apps/web-contract/src/views/contract/utils.ts | 91 -- .../dashboard/analytics/analytics-trends.vue | 82 -- .../analytics/analytics-visits-data.vue | 84 -- .../analytics/analytics-visits-sales.vue | 48 - .../analytics/analytics-visits-source.vue | 67 -- .../dashboard/analytics/analytics-visits.vue | 57 -- .../src/views/dashboard/analytics/index.vue | 90 -- .../src/views/dashboard/components/typing.ts | 46 - .../dashboard/components/workbench-header.vue | 44 - .../components/workbench-quick-nav.vue | 44 - .../dashboard/components/workbench-todo.vue | 99 -- .../src/views/dashboard/home/index.vue | 108 -- .../src/views/dashboard/workspace/index.vue | 225 ---- .../src/views/demos/antd/index.vue | 66 -- .../src/views/system/dict/crud.tsx | 77 -- .../system/dict/dict-data-edit-modal.vue | 194 ---- .../system/dict/dict-type-edit-modal.vue | 156 --- .../src/views/system/dict/index.vue | 357 ------- .../views/system/user/choose-user-modal.vue | 383 ------- .../src/views/user-center/center/index.vue | 32 - .../src/views/user-center/todo/index.vue | 73 -- apps/web-contract/tailwind.config.mjs | 1 - apps/web-contract/tsconfig.json | 15 - apps/web-contract/tsconfig.node.json | 11 - apps/web-contract/vite.config.mts | 135 --- apps/web-facilities/.env | 5 - apps/web-facilities/.env.analyze | 7 - apps/web-facilities/.env.development | 16 - apps/web-facilities/.env.production | 19 - apps/web-facilities/auto-imports.d.ts | 134 --- apps/web-facilities/index.html | 39 - apps/web-facilities/package.json | 66 -- apps/web-facilities/postcss.config.mjs | 1 - apps/web-facilities/public/favicon.ico | Bin 67646 -> 0 bytes apps/web-facilities/readme.md | 3 - apps/web-facilities/src/api/global.d.ts | 22 - apps/web-facilities/src/api/index.ts | 516 ---------- apps/web-facilities/src/api/request/config.ts | 19 - .../src/api/request/getToken.ts | 83 -- apps/web-facilities/src/api/request/index.ts | 319 ------ .../src/api/request/transferResponse.ts | 89 -- apps/web-facilities/src/api/system/auth.ts | 77 -- apps/web-facilities/src/api/system/menu.ts | 8 - apps/web-facilities/src/app.vue | 66 -- .../src/assets/canteen/orderfood.png | Bin 4404 -> 0 bytes apps/web-facilities/src/bootstrap.ts | 42 - apps/web-facilities/src/common/unit.ts | 96 -- .../src/components/dict-tag/dict-tag.vue | 99 -- .../src/components/dict-tag/index.ts | 1 - apps/web-facilities/src/hooks/fastCrud.ts | 0 apps/web-facilities/src/hooks/useRender.ts | 149 --- apps/web-facilities/src/hooks/vxeTable.ts | 79 -- .../layouts/authentication/authentication.vue | 124 --- .../src/layouts/authentication/form.vue | 33 - .../layouts/authentication/icons/slogan.vue | 3 - .../src/layouts/authentication/index.ts | 1 - apps/web-facilities/src/layouts/basic.vue | 166 --- apps/web-facilities/src/layouts/index.ts | 8 - apps/web-facilities/src/locales/README.md | 3 - apps/web-facilities/src/locales/index.ts | 94 -- .../src/locales/langs/en-US.json | 8 - .../src/locales/langs/zh-CN.json | 8 - apps/web-facilities/src/main.ts | 31 - apps/web-facilities/src/plugins/fastCrud.ts | 15 - apps/web-facilities/src/plugins/vxeTable.ts | 202 ---- apps/web-facilities/src/preferences.ts | 13 - apps/web-facilities/src/router/access.ts | 42 - apps/web-facilities/src/router/guard.ts | 240 ----- apps/web-facilities/src/router/index.ts | 32 - apps/web-facilities/src/router/routes/core.ts | 56 - .../web-facilities/src/router/routes/index.ts | 31 - .../src/router/routes/modules/dashboard.ts | 49 - .../src/router/routes/modules/facilities.ts | 0 .../src/router/routes/modules/system.ts | 29 - .../src/router/routes/modules/ucenter.ts | 51 - apps/web-facilities/src/store/auth.ts | 131 --- apps/web-facilities/src/store/dict.ts | 182 ---- apps/web-facilities/src/store/index.ts | 2 - apps/web-facilities/src/utils/dict/index.ts | 87 -- apps/web-facilities/src/utils/dict/shared.ts | 45 - .../src/utils/dict/static.data.js | 65 -- apps/web-facilities/src/utils/file.ts | 101 -- apps/web-facilities/src/utils/index.ts | 220 ---- apps/web-facilities/src/utils/time.ts | 65 -- apps/web-facilities/src/views/_core/README.md | 3 - .../src/views/_core/about/index.vue | 9 - .../views/_core/authentication/code-login.vue | 30 - .../_core/authentication/forget-password.vue | 23 - .../src/views/_core/authentication/login.vue | 107 -- .../_core/authentication/qrcode-login.vue | 10 - .../views/_core/authentication/register.vue | 25 - .../src/views/_core/fallback/coming-soon.vue | 7 - .../src/views/_core/fallback/forbidden.vue | 9 - .../views/_core/fallback/internal-error.vue | 9 - .../src/views/_core/fallback/not-found.vue | 9 - .../src/views/_core/fallback/offline.vue | 9 - .../dashboard/analytics/analytics-trends.vue | 82 -- .../analytics/analytics-visits-data.vue | 84 -- .../analytics/analytics-visits-sales.vue | 48 - .../analytics/analytics-visits-source.vue | 67 -- .../dashboard/analytics/analytics-visits.vue | 57 -- .../src/views/dashboard/analytics/index.vue | 90 -- .../dashboard/components/workbench-header.vue | 44 - .../components/workbench-quick-nav.vue | 44 - .../src/views/dashboard/home/index.vue | 79 -- .../src/views/dashboard/workspace/index.vue | 225 ---- .../src/views/demos/antd/index.vue | 66 -- .../src/views/system/dict/crud.tsx | 77 -- .../system/dict/dict-data-edit-modal.vue | 186 ---- .../system/dict/dict-type-edit-modal.vue | 157 --- .../src/views/system/dict/index.vue | 354 ------- .../views/system/user/choose-user-modal.vue | 355 ------- .../src/views/user-center/center/index.vue | 32 - .../src/views/user-center/todo/index.vue | 224 ---- apps/web-facilities/tailwind.config.mjs | 1 - apps/web-facilities/tsconfig.json | 15 - apps/web-facilities/tsconfig.node.json | 10 - apps/web-facilities/vite.config.mts | 90 -- apps/web-materials/readme.md | 0 apps/web-oa/readme.md | 0 apps/web-office/.env | 5 - apps/web-office/.env.analyze | 7 - apps/web-office/.env.development | 16 - apps/web-office/.env.production | 19 - apps/web-office/auto-imports.d.ts | 134 --- apps/web-office/index.html | 39 - apps/web-office/package.json | 66 -- apps/web-office/postcss.config.mjs | 1 - apps/web-office/public/favicon.ico | Bin 67646 -> 0 bytes apps/web-office/readme.md | 3 - apps/web-office/src/api/global.d.ts | 22 - apps/web-office/src/api/index.ts | 825 --------------- apps/web-office/src/api/request/config.ts | 19 - apps/web-office/src/api/request/getToken.ts | 83 -- apps/web-office/src/api/request/index.ts | 320 ------ .../src/api/request/transferResponse.ts | 89 -- apps/web-office/src/api/system/auth.ts | 77 -- apps/web-office/src/api/system/menu.ts | 8 - apps/web-office/src/app.vue | 115 --- .../src/assets/canteen/orderfood.png | Bin 4404 -> 0 bytes apps/web-office/src/bootstrap.ts | 42 - apps/web-office/src/common/unit.ts | 96 -- .../src/components/dict-tag/dict-tag.vue | 108 -- .../src/components/dict-tag/index.ts | 1 - .../flow-record-table/flow-record-table.vue | 0 apps/web-office/src/hooks/fastCrud.ts | 0 apps/web-office/src/hooks/useRender.ts | 156 --- apps/web-office/src/hooks/vxeTable.ts | 76 -- apps/web-office/src/layouts/basic.vue | 179 ---- apps/web-office/src/layouts/index.ts | 8 - apps/web-office/src/locales/README.md | 3 - apps/web-office/src/locales/index.ts | 94 -- apps/web-office/src/locales/langs/en-US.json | 8 - apps/web-office/src/locales/langs/zh-CN.json | 8 - apps/web-office/src/main.ts | 31 - apps/web-office/src/plugins/fastCrud.ts | 15 - apps/web-office/src/plugins/vxeTable.ts | 202 ---- apps/web-office/src/preferences.ts | 14 - apps/web-office/src/router/access.ts | 42 - apps/web-office/src/router/guard.ts | 240 ----- apps/web-office/src/router/index.ts | 32 - apps/web-office/src/router/routes/core.ts | 136 --- apps/web-office/src/router/routes/index.ts | 31 - .../src/router/routes/modules/contract.ts | 456 --------- .../src/router/routes/modules/dashboard.ts | 49 - .../src/router/routes/modules/offfice.ts | 314 ------ .../src/router/routes/modules/system.ts | 29 - .../src/router/routes/modules/ucenter.ts | 51 - apps/web-office/src/store/auth.ts | 131 --- apps/web-office/src/store/dict.ts | 182 ---- apps/web-office/src/store/index.ts | 2 - apps/web-office/src/utils/dict/index.ts | 217 ---- apps/web-office/src/utils/dict/shared.ts | 69 -- apps/web-office/src/utils/dict/static.data.ts | 33 - apps/web-office/src/utils/file.ts | 101 -- apps/web-office/src/utils/index.ts | 220 ---- apps/web-office/src/utils/time.ts | 65 -- apps/web-office/src/utils/workflow.ts | 37 - apps/web-office/src/views/_core/README.md | 3 - .../src/views/_core/about/index.vue | 9 - .../views/_core/authentication/code-login.vue | 30 - .../_core/authentication/forget-password.vue | 23 - .../src/views/_core/authentication/login.vue | 101 -- .../_core/authentication/qrcode-login.vue | 10 - .../views/_core/authentication/register.vue | 25 - .../src/views/_core/fallback/coming-soon.vue | 7 - .../src/views/_core/fallback/forbidden.vue | 9 - .../views/_core/fallback/internal-error.vue | 9 - .../src/views/_core/fallback/not-found.vue | 9 - .../src/views/_core/fallback/offline.vue | 9 - .../src/views/bussiness-trip/edit/curd.tsx | 5 - .../src/views/bussiness-trip/edit/index.vue | 474 --------- .../list/choose-audit-people-modal.vue | 271 ----- .../src/views/bussiness-trip/list/crud.tsx | 72 -- .../src/views/bussiness-trip/list/index.vue | 221 ---- .../src/views/bussiness-trip/todo/crud.tsx | 132 --- .../src/views/bussiness-trip/todo/index.vue | 319 ------ .../canteen/collect/collect-detail-modal.vue | 274 ----- .../src/views/canteen/collect/crud.tsx | 88 -- .../src/views/canteen/collect/index.vue | 239 ----- .../auto-people-batch-add-modal.vue | 193 ---- .../auto-people/auto-people-edit-modal.vue | 142 --- .../components/auto-people/auto-people.vue | 229 ----- .../config/components/auto-people/crud.tsx | 23 - .../basic-settings/basic-settings.vue | 313 ------ .../config/components/basic-settings/crud.tsx | 80 -- .../components/delivery-address/crud.tsx | 43 - .../delivery-address-edit-modal.vue | 86 -- .../delivery-address/delivery-address.vue | 177 ---- .../config/components/duty-people/crud.tsx | 51 - .../duty-people-batch-add-modal.vue | 229 ----- .../duty-people/duty-people-edit-modal.vue | 139 --- .../components/duty-people/duty-people.vue | 198 ---- .../src/views/canteen/config/index.vue | 108 -- .../canteen/orderfood/collect/collect.vue | 106 -- .../views/canteen/orderfood/collect/crud.tsx | 140 --- .../src/views/canteen/orderfood/index.vue | 37 - .../orderfood/choose-address-modal.vue | 93 -- .../canteen/orderfood/orderfood/orderfood.vue | 532 ---------- .../src/views/canteen/recipe/crud.tsx | 53 - .../src/views/canteen/recipe/index.vue | 303 ------ .../canteen/recipe/recipe-sync-modal.vue | 315 ------ .../src/views/canteen/statistics/crud.tsx | 111 -- .../src/views/canteen/statistics/index.vue | 38 - .../canteen/statistics/subsidy-statistics.vue | 352 ------- .../canteen/statistics/unit-statistics.vue | 664 ------------ .../dashboard/analytics/analytics-trends.vue | 82 -- .../analytics/analytics-visits-data.vue | 84 -- .../analytics/analytics-visits-sales.vue | 48 - .../analytics/analytics-visits-source.vue | 67 -- .../dashboard/analytics/analytics-visits.vue | 57 -- .../src/views/dashboard/analytics/index.vue | 90 -- .../dashboard/components/workbench-header.vue | 44 - .../components/workbench-quick-nav.vue | 44 - .../src/views/dashboard/home/index.vue | 79 -- .../src/views/dashboard/workspace/index.vue | 225 ---- .../web-office/src/views/demos/antd/index.vue | 66 -- apps/web-office/src/views/duty/list/crud.tsx | 160 --- .../src/views/duty/list/duty-edit-modal.vue | 286 ------ .../src/views/duty/list/duty-upload-modal.vue | 132 --- apps/web-office/src/views/duty/list/index.vue | 276 ----- .../src/views/duty/standing-book/crud.tsx | 153 --- .../src/views/duty/standing-book/index.vue | 275 ----- .../addressor-sort-edit-modal.vue | 155 --- .../addressor-sort-setting.vue | 250 ----- .../addressor-sort-setting/crud.tsx | 21 - .../src/views/meeting/config/index.vue | 83 -- .../src/views/meeting/edit/index.vue | 700 ------------- .../meeting/edit/spoken-person-edit-modal.vue | 170 ---- .../src/views/meeting/list/crud.tsx | 202 ---- .../src/views/meeting/list/index.vue | 249 ----- .../views/meeting/production-edit/index.vue | 658 ------------ .../spoken-person-edit-modal.vue | 170 ---- .../views/meeting/production-list/crud.tsx | 160 --- .../views/meeting/production-list/index.vue | 254 ----- .../src/views/meeting/standing-book/crud.tsx | 73 -- .../src/views/meeting/standing-book/index.vue | 151 --- .../src/views/meeting/start/index.vue | 523 ---------- .../src/views/office-supplies/apply/crud.tsx | 132 --- .../src/views/office-supplies/apply/index.vue | 161 --- .../apply/office-batch-apply-modal.vue | 212 ---- .../src/views/office-supplies/audit/crud.tsx | 225 ---- .../src/views/office-supplies/audit/index.vue | 261 ----- .../inventory/choose-office-modal.vue | 213 ---- .../views/office-supplies/inventory/crud.tsx | 66 -- .../views/office-supplies/inventory/index.vue | 206 ---- .../inventory/purchase-summary-modal.vue | 270 ----- .../inventory/supplies-edit-modal.vue | 123 --- .../inventory/supplies-out-modal.vue | 300 ------ .../inventory/supplies-put-modal.vue | 219 ---- .../src/views/office-supplies/settle/crud.tsx | 157 --- .../views/office-supplies/settle/index.vue | 423 -------- .../src/views/supervise/edit/curd.tsx | 275 ----- .../src/views/supervise/edit/index.vue | 297 ------ .../src/views/supervise/feedback/crud.tsx | 94 -- .../src/views/supervise/feedback/index.vue | 159 --- .../src/views/supervise/list/crud.tsx | 188 ---- .../supervise/list/detail-drawer/curd.tsx | 0 .../list/detail-drawer/detail-drawer.vue | 84 -- .../src/views/supervise/list/index.vue | 203 ---- .../src/views/supervise/summary/crud.tsx | 190 ---- .../src/views/supervise/summary/index.vue | 124 --- .../web-office/src/views/system/dict/crud.tsx | 77 -- .../system/dict/dict-data-edit-modal.vue | 194 ---- .../system/dict/dict-type-edit-modal.vue | 156 --- .../src/views/system/dict/index.vue | 354 ------- .../views/system/user/choose-user-modal.vue | 407 -------- .../src/views/user-center/center/index.vue | 32 - .../src/views/user-center/todo/index.vue | 224 ---- apps/web-office/tailwind.config.mjs | 1 - apps/web-office/tsconfig.json | 15 - apps/web-office/tsconfig.node.json | 10 - apps/web-office/vite.config.mts | 90 -- 482 files changed, 60296 deletions(-) delete mode 100644 apps/web-contract/.env delete mode 100644 apps/web-contract/.env.analyze delete mode 100644 apps/web-contract/.env.development delete mode 100644 apps/web-contract/.env.production delete mode 100644 apps/web-contract/auto-imports.d.ts delete mode 100644 apps/web-contract/forge.config.ts delete mode 100644 apps/web-contract/index.html delete mode 100644 apps/web-contract/package.json delete mode 100644 apps/web-contract/postcss.config.mjs delete mode 100644 apps/web-contract/public/favicon.ico delete mode 100644 apps/web-contract/readme.md delete mode 100644 apps/web-contract/src/api/global.d.ts delete mode 100644 apps/web-contract/src/api/index.ts delete mode 100644 apps/web-contract/src/api/request/config.ts delete mode 100644 apps/web-contract/src/api/request/getToken.ts delete mode 100644 apps/web-contract/src/api/request/index.ts delete mode 100644 apps/web-contract/src/api/request/transferResponse.ts delete mode 100644 apps/web-contract/src/api/system/auth.ts delete mode 100644 apps/web-contract/src/api/system/menu.ts delete mode 100644 apps/web-contract/src/app.vue delete mode 100644 apps/web-contract/src/assets/canteen/orderfood.png delete mode 100644 apps/web-contract/src/bootstrap.ts delete mode 100644 apps/web-contract/src/common/unit.ts delete mode 100644 apps/web-contract/src/components/dict-tag/dict-tag.vue delete mode 100644 apps/web-contract/src/components/dict-tag/index.ts delete mode 100644 apps/web-contract/src/components/flow-record-table/curd.tsx delete mode 100644 apps/web-contract/src/components/flow-record-table/flow-record-table.vue delete mode 100644 apps/web-contract/src/components/temporary-form-modal/temporary-form-modal.vue delete mode 100644 apps/web-contract/src/globals.d.ts delete mode 100644 apps/web-contract/src/hooks/fastCrud.ts delete mode 100644 apps/web-contract/src/hooks/useRender.ts delete mode 100644 apps/web-contract/src/hooks/vxeTable.ts delete mode 100644 apps/web-contract/src/layouts/authentication/authentication.vue delete mode 100644 apps/web-contract/src/layouts/authentication/form.vue delete mode 100644 apps/web-contract/src/layouts/authentication/icons/slogan.vue delete mode 100644 apps/web-contract/src/layouts/authentication/index.ts delete mode 100644 apps/web-contract/src/layouts/basic.vue delete mode 100644 apps/web-contract/src/layouts/index.ts delete mode 100644 apps/web-contract/src/layouts/notification/index.ts delete mode 100644 apps/web-contract/src/layouts/notification/notification.vue delete mode 100644 apps/web-contract/src/layouts/notification/types.ts delete mode 100644 apps/web-contract/src/locales/README.md delete mode 100644 apps/web-contract/src/locales/index.ts delete mode 100644 apps/web-contract/src/locales/langs/en-US.json delete mode 100644 apps/web-contract/src/locales/langs/zh-CN.json delete mode 100644 apps/web-contract/src/main.ts delete mode 100644 apps/web-contract/src/plugins/fastCrud.ts delete mode 100644 apps/web-contract/src/plugins/vxeTable.ts delete mode 100644 apps/web-contract/src/preferences.ts delete mode 100644 apps/web-contract/src/router/access.ts delete mode 100644 apps/web-contract/src/router/guard.ts delete mode 100644 apps/web-contract/src/router/index.ts delete mode 100644 apps/web-contract/src/router/routes/core.ts delete mode 100644 apps/web-contract/src/router/routes/index.ts delete mode 100644 apps/web-contract/src/router/routes/modules/contract.ts delete mode 100644 apps/web-contract/src/router/routes/modules/dashboard.ts delete mode 100644 apps/web-contract/src/router/routes/modules/system.ts delete mode 100644 apps/web-contract/src/router/routes/modules/ucenter.ts delete mode 100644 apps/web-contract/src/store/auth.ts delete mode 100644 apps/web-contract/src/store/dict.ts delete mode 100644 apps/web-contract/src/store/index.ts delete mode 100644 apps/web-contract/src/utils/dict/index.ts delete mode 100644 apps/web-contract/src/utils/dict/shared.ts delete mode 100644 apps/web-contract/src/utils/dict/static.data.js delete mode 100644 apps/web-contract/src/utils/file.ts delete mode 100644 apps/web-contract/src/utils/index.ts delete mode 100644 apps/web-contract/src/utils/logger.ts delete mode 100644 apps/web-contract/src/utils/time.ts delete mode 100644 apps/web-contract/src/views/_core/README.md delete mode 100644 apps/web-contract/src/views/_core/about/index.vue delete mode 100644 apps/web-contract/src/views/_core/authentication/code-login.vue delete mode 100644 apps/web-contract/src/views/_core/authentication/forget-password.vue delete mode 100644 apps/web-contract/src/views/_core/authentication/login.vue delete mode 100644 apps/web-contract/src/views/_core/authentication/qrcode-login.vue delete mode 100644 apps/web-contract/src/views/_core/authentication/register.vue delete mode 100644 apps/web-contract/src/views/_core/fallback/coming-soon.vue delete mode 100644 apps/web-contract/src/views/_core/fallback/forbidden.vue delete mode 100644 apps/web-contract/src/views/_core/fallback/internal-error.vue delete mode 100644 apps/web-contract/src/views/_core/fallback/not-found.vue delete mode 100644 apps/web-contract/src/views/_core/fallback/offline.vue delete mode 100644 apps/web-contract/src/views/contract/approval/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/approval/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/approval/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/approval/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/approval/signing-basis/choose-signing-basis-modal.vue delete mode 100644 apps/web-contract/src/views/contract/approval/signing-basis/columns.tsx delete mode 100644 apps/web-contract/src/views/contract/approval/signing-basis/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/approval/signing-basis/index.vue delete mode 100644 apps/web-contract/src/views/contract/approval/signing-basis/signing-basis-edit-modal.vue delete mode 100644 apps/web-contract/src/views/contract/approval/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/archive/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/archive/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/archive/todo/archive/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/archive/todo/archive/index.vue delete mode 100644 apps/web-contract/src/views/contract/archive/todo/retracement/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/archive/todo/retracement/index.vue delete mode 100644 apps/web-contract/src/views/contract/audit/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/audit/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/audit/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/business/edit/basic-info-card.vue delete mode 100644 apps/web-contract/src/views/contract/business/edit/basic-info-curd.tsx delete mode 100644 apps/web-contract/src/views/contract/business/edit/bid-columns.tsx delete mode 100644 apps/web-contract/src/views/contract/business/edit/business-card.vue delete mode 100644 apps/web-contract/src/views/contract/business/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/business/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/business/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/business/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/business/result-list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/business/result-list/index.vue delete mode 100644 apps/web-contract/src/views/contract/business/result/basic-info-curd.tsx delete mode 100644 apps/web-contract/src/views/contract/business/result/bid-columns.tsx delete mode 100644 apps/web-contract/src/views/contract/business/result/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/business/result/fill-result-card.vue delete mode 100644 apps/web-contract/src/views/contract/business/result/index.vue delete mode 100644 apps/web-contract/src/views/contract/business/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/company/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/company/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/company/list/choose-company-modal.vue delete mode 100644 apps/web-contract/src/views/contract/company/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/company/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/components/audit-node-table/audit-node-table.vue delete mode 100644 apps/web-contract/src/views/contract/components/basis-table/basis-table.vue delete mode 100644 apps/web-contract/src/views/contract/components/file-card/file-card.vue delete mode 100644 apps/web-contract/src/views/contract/components/todo-page/todo-page.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/contract-type/contract-type-edit-modal.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/contract-type/contract-type.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/contract-type/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/config/components/project-manager/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/config/components/project-manager/project-manager-edit-modal.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/project-manager/project-manager.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/project-name-manager/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager-edit-modal.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/template-manager/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/config/components/template-manager/template-manager-edit-modal.vue delete mode 100644 apps/web-contract/src/views/contract/config/components/template-manager/template-manager.vue delete mode 100644 apps/web-contract/src/views/contract/config/index.vue delete mode 100644 apps/web-contract/src/views/contract/declaration/edit/basic-info-curd.tsx delete mode 100644 apps/web-contract/src/views/contract/declaration/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/declaration/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/declaration/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/declaration/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/declaration/print/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/declaration/print/index.vue delete mode 100644 apps/web-contract/src/views/contract/declaration/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-approval/approval-card.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-approval/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-approval/info-approval.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-archived/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-archived/info-archived.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-business/business-card.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-business/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-business/info-business.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-declaration/info-declaration.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-perform/info-perform.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-sign/info-sign.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-track/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/iframe-info/components/info-track/info-track.vue delete mode 100644 apps/web-contract/src/views/contract/iframe-info/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/break/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/break/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/change/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/change/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/payment/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/payment/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/relieve/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/edit/components/relieve/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/result-list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/result-list/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/result/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/result/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/temporary-archive/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/perform/temporary-archive/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/perform/todo/info-curd.tsx delete mode 100644 apps/web-contract/src/views/contract/schema.ts delete mode 100644 apps/web-contract/src/views/contract/sign-authorization/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/sign-authorization/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/sign-authorization/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/sign-authorization/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/sign/edit/curd.tsx delete mode 100644 apps/web-contract/src/views/contract/sign/edit/index.vue delete mode 100644 apps/web-contract/src/views/contract/sign/edit/upload-modal.vue delete mode 100644 apps/web-contract/src/views/contract/sign/list/crud.tsx delete mode 100644 apps/web-contract/src/views/contract/sign/list/index.vue delete mode 100644 apps/web-contract/src/views/contract/sign/todo/index.vue delete mode 100644 apps/web-contract/src/views/contract/utils.ts delete mode 100644 apps/web-contract/src/views/dashboard/analytics/analytics-trends.vue delete mode 100644 apps/web-contract/src/views/dashboard/analytics/analytics-visits-data.vue delete mode 100644 apps/web-contract/src/views/dashboard/analytics/analytics-visits-sales.vue delete mode 100644 apps/web-contract/src/views/dashboard/analytics/analytics-visits-source.vue delete mode 100644 apps/web-contract/src/views/dashboard/analytics/analytics-visits.vue delete mode 100644 apps/web-contract/src/views/dashboard/analytics/index.vue delete mode 100644 apps/web-contract/src/views/dashboard/components/typing.ts delete mode 100644 apps/web-contract/src/views/dashboard/components/workbench-header.vue delete mode 100644 apps/web-contract/src/views/dashboard/components/workbench-quick-nav.vue delete mode 100644 apps/web-contract/src/views/dashboard/components/workbench-todo.vue delete mode 100644 apps/web-contract/src/views/dashboard/home/index.vue delete mode 100644 apps/web-contract/src/views/dashboard/workspace/index.vue delete mode 100644 apps/web-contract/src/views/demos/antd/index.vue delete mode 100644 apps/web-contract/src/views/system/dict/crud.tsx delete mode 100644 apps/web-contract/src/views/system/dict/dict-data-edit-modal.vue delete mode 100644 apps/web-contract/src/views/system/dict/dict-type-edit-modal.vue delete mode 100644 apps/web-contract/src/views/system/dict/index.vue delete mode 100644 apps/web-contract/src/views/system/user/choose-user-modal.vue delete mode 100644 apps/web-contract/src/views/user-center/center/index.vue delete mode 100644 apps/web-contract/src/views/user-center/todo/index.vue delete mode 100644 apps/web-contract/tailwind.config.mjs delete mode 100644 apps/web-contract/tsconfig.json delete mode 100644 apps/web-contract/tsconfig.node.json delete mode 100644 apps/web-contract/vite.config.mts delete mode 100644 apps/web-facilities/.env delete mode 100644 apps/web-facilities/.env.analyze delete mode 100644 apps/web-facilities/.env.development delete mode 100644 apps/web-facilities/.env.production delete mode 100644 apps/web-facilities/auto-imports.d.ts delete mode 100644 apps/web-facilities/index.html delete mode 100644 apps/web-facilities/package.json delete mode 100644 apps/web-facilities/postcss.config.mjs delete mode 100644 apps/web-facilities/public/favicon.ico delete mode 100644 apps/web-facilities/readme.md delete mode 100644 apps/web-facilities/src/api/global.d.ts delete mode 100644 apps/web-facilities/src/api/index.ts delete mode 100644 apps/web-facilities/src/api/request/config.ts delete mode 100644 apps/web-facilities/src/api/request/getToken.ts delete mode 100644 apps/web-facilities/src/api/request/index.ts delete mode 100644 apps/web-facilities/src/api/request/transferResponse.ts delete mode 100644 apps/web-facilities/src/api/system/auth.ts delete mode 100644 apps/web-facilities/src/api/system/menu.ts delete mode 100644 apps/web-facilities/src/app.vue delete mode 100644 apps/web-facilities/src/assets/canteen/orderfood.png delete mode 100644 apps/web-facilities/src/bootstrap.ts delete mode 100644 apps/web-facilities/src/common/unit.ts delete mode 100644 apps/web-facilities/src/components/dict-tag/dict-tag.vue delete mode 100644 apps/web-facilities/src/components/dict-tag/index.ts delete mode 100644 apps/web-facilities/src/hooks/fastCrud.ts delete mode 100644 apps/web-facilities/src/hooks/useRender.ts delete mode 100644 apps/web-facilities/src/hooks/vxeTable.ts delete mode 100644 apps/web-facilities/src/layouts/authentication/authentication.vue delete mode 100644 apps/web-facilities/src/layouts/authentication/form.vue delete mode 100644 apps/web-facilities/src/layouts/authentication/icons/slogan.vue delete mode 100644 apps/web-facilities/src/layouts/authentication/index.ts delete mode 100644 apps/web-facilities/src/layouts/basic.vue delete mode 100644 apps/web-facilities/src/layouts/index.ts delete mode 100644 apps/web-facilities/src/locales/README.md delete mode 100644 apps/web-facilities/src/locales/index.ts delete mode 100644 apps/web-facilities/src/locales/langs/en-US.json delete mode 100644 apps/web-facilities/src/locales/langs/zh-CN.json delete mode 100644 apps/web-facilities/src/main.ts delete mode 100644 apps/web-facilities/src/plugins/fastCrud.ts delete mode 100644 apps/web-facilities/src/plugins/vxeTable.ts delete mode 100644 apps/web-facilities/src/preferences.ts delete mode 100644 apps/web-facilities/src/router/access.ts delete mode 100644 apps/web-facilities/src/router/guard.ts delete mode 100644 apps/web-facilities/src/router/index.ts delete mode 100644 apps/web-facilities/src/router/routes/core.ts delete mode 100644 apps/web-facilities/src/router/routes/index.ts delete mode 100644 apps/web-facilities/src/router/routes/modules/dashboard.ts delete mode 100644 apps/web-facilities/src/router/routes/modules/facilities.ts delete mode 100644 apps/web-facilities/src/router/routes/modules/system.ts delete mode 100644 apps/web-facilities/src/router/routes/modules/ucenter.ts delete mode 100644 apps/web-facilities/src/store/auth.ts delete mode 100644 apps/web-facilities/src/store/dict.ts delete mode 100644 apps/web-facilities/src/store/index.ts delete mode 100644 apps/web-facilities/src/utils/dict/index.ts delete mode 100644 apps/web-facilities/src/utils/dict/shared.ts delete mode 100644 apps/web-facilities/src/utils/dict/static.data.js delete mode 100644 apps/web-facilities/src/utils/file.ts delete mode 100644 apps/web-facilities/src/utils/index.ts delete mode 100644 apps/web-facilities/src/utils/time.ts delete mode 100644 apps/web-facilities/src/views/_core/README.md delete mode 100644 apps/web-facilities/src/views/_core/about/index.vue delete mode 100644 apps/web-facilities/src/views/_core/authentication/code-login.vue delete mode 100644 apps/web-facilities/src/views/_core/authentication/forget-password.vue delete mode 100644 apps/web-facilities/src/views/_core/authentication/login.vue delete mode 100644 apps/web-facilities/src/views/_core/authentication/qrcode-login.vue delete mode 100644 apps/web-facilities/src/views/_core/authentication/register.vue delete mode 100644 apps/web-facilities/src/views/_core/fallback/coming-soon.vue delete mode 100644 apps/web-facilities/src/views/_core/fallback/forbidden.vue delete mode 100644 apps/web-facilities/src/views/_core/fallback/internal-error.vue delete mode 100644 apps/web-facilities/src/views/_core/fallback/not-found.vue delete mode 100644 apps/web-facilities/src/views/_core/fallback/offline.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/analytics-trends.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/analytics-visits-data.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/analytics-visits-sales.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/analytics-visits-source.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/analytics-visits.vue delete mode 100644 apps/web-facilities/src/views/dashboard/analytics/index.vue delete mode 100644 apps/web-facilities/src/views/dashboard/components/workbench-header.vue delete mode 100644 apps/web-facilities/src/views/dashboard/components/workbench-quick-nav.vue delete mode 100644 apps/web-facilities/src/views/dashboard/home/index.vue delete mode 100644 apps/web-facilities/src/views/dashboard/workspace/index.vue delete mode 100644 apps/web-facilities/src/views/demos/antd/index.vue delete mode 100644 apps/web-facilities/src/views/system/dict/crud.tsx delete mode 100644 apps/web-facilities/src/views/system/dict/dict-data-edit-modal.vue delete mode 100644 apps/web-facilities/src/views/system/dict/dict-type-edit-modal.vue delete mode 100644 apps/web-facilities/src/views/system/dict/index.vue delete mode 100644 apps/web-facilities/src/views/system/user/choose-user-modal.vue delete mode 100644 apps/web-facilities/src/views/user-center/center/index.vue delete mode 100644 apps/web-facilities/src/views/user-center/todo/index.vue delete mode 100644 apps/web-facilities/tailwind.config.mjs delete mode 100644 apps/web-facilities/tsconfig.json delete mode 100644 apps/web-facilities/tsconfig.node.json delete mode 100644 apps/web-facilities/vite.config.mts delete mode 100644 apps/web-materials/readme.md delete mode 100644 apps/web-oa/readme.md delete mode 100644 apps/web-office/.env delete mode 100644 apps/web-office/.env.analyze delete mode 100644 apps/web-office/.env.development delete mode 100644 apps/web-office/.env.production delete mode 100644 apps/web-office/auto-imports.d.ts delete mode 100644 apps/web-office/index.html delete mode 100644 apps/web-office/package.json delete mode 100644 apps/web-office/postcss.config.mjs delete mode 100644 apps/web-office/public/favicon.ico delete mode 100644 apps/web-office/readme.md delete mode 100644 apps/web-office/src/api/global.d.ts delete mode 100644 apps/web-office/src/api/index.ts delete mode 100644 apps/web-office/src/api/request/config.ts delete mode 100644 apps/web-office/src/api/request/getToken.ts delete mode 100644 apps/web-office/src/api/request/index.ts delete mode 100644 apps/web-office/src/api/request/transferResponse.ts delete mode 100644 apps/web-office/src/api/system/auth.ts delete mode 100644 apps/web-office/src/api/system/menu.ts delete mode 100644 apps/web-office/src/app.vue delete mode 100644 apps/web-office/src/assets/canteen/orderfood.png delete mode 100644 apps/web-office/src/bootstrap.ts delete mode 100644 apps/web-office/src/common/unit.ts delete mode 100644 apps/web-office/src/components/dict-tag/dict-tag.vue delete mode 100644 apps/web-office/src/components/dict-tag/index.ts delete mode 100644 apps/web-office/src/components/flow-record-table/flow-record-table.vue delete mode 100644 apps/web-office/src/hooks/fastCrud.ts delete mode 100644 apps/web-office/src/hooks/useRender.ts delete mode 100644 apps/web-office/src/hooks/vxeTable.ts delete mode 100644 apps/web-office/src/layouts/basic.vue delete mode 100644 apps/web-office/src/layouts/index.ts delete mode 100644 apps/web-office/src/locales/README.md delete mode 100644 apps/web-office/src/locales/index.ts delete mode 100644 apps/web-office/src/locales/langs/en-US.json delete mode 100644 apps/web-office/src/locales/langs/zh-CN.json delete mode 100644 apps/web-office/src/main.ts delete mode 100644 apps/web-office/src/plugins/fastCrud.ts delete mode 100644 apps/web-office/src/plugins/vxeTable.ts delete mode 100644 apps/web-office/src/preferences.ts delete mode 100644 apps/web-office/src/router/access.ts delete mode 100644 apps/web-office/src/router/guard.ts delete mode 100644 apps/web-office/src/router/index.ts delete mode 100644 apps/web-office/src/router/routes/core.ts delete mode 100644 apps/web-office/src/router/routes/index.ts delete mode 100644 apps/web-office/src/router/routes/modules/contract.ts delete mode 100644 apps/web-office/src/router/routes/modules/dashboard.ts delete mode 100644 apps/web-office/src/router/routes/modules/offfice.ts delete mode 100644 apps/web-office/src/router/routes/modules/system.ts delete mode 100644 apps/web-office/src/router/routes/modules/ucenter.ts delete mode 100644 apps/web-office/src/store/auth.ts delete mode 100644 apps/web-office/src/store/dict.ts delete mode 100644 apps/web-office/src/store/index.ts delete mode 100644 apps/web-office/src/utils/dict/index.ts delete mode 100644 apps/web-office/src/utils/dict/shared.ts delete mode 100644 apps/web-office/src/utils/dict/static.data.ts delete mode 100644 apps/web-office/src/utils/file.ts delete mode 100644 apps/web-office/src/utils/index.ts delete mode 100644 apps/web-office/src/utils/time.ts delete mode 100644 apps/web-office/src/utils/workflow.ts delete mode 100644 apps/web-office/src/views/_core/README.md delete mode 100644 apps/web-office/src/views/_core/about/index.vue delete mode 100644 apps/web-office/src/views/_core/authentication/code-login.vue delete mode 100644 apps/web-office/src/views/_core/authentication/forget-password.vue delete mode 100644 apps/web-office/src/views/_core/authentication/login.vue delete mode 100644 apps/web-office/src/views/_core/authentication/qrcode-login.vue delete mode 100644 apps/web-office/src/views/_core/authentication/register.vue delete mode 100644 apps/web-office/src/views/_core/fallback/coming-soon.vue delete mode 100644 apps/web-office/src/views/_core/fallback/forbidden.vue delete mode 100644 apps/web-office/src/views/_core/fallback/internal-error.vue delete mode 100644 apps/web-office/src/views/_core/fallback/not-found.vue delete mode 100644 apps/web-office/src/views/_core/fallback/offline.vue delete mode 100644 apps/web-office/src/views/bussiness-trip/edit/curd.tsx delete mode 100644 apps/web-office/src/views/bussiness-trip/edit/index.vue delete mode 100644 apps/web-office/src/views/bussiness-trip/list/choose-audit-people-modal.vue delete mode 100644 apps/web-office/src/views/bussiness-trip/list/crud.tsx delete mode 100644 apps/web-office/src/views/bussiness-trip/list/index.vue delete mode 100644 apps/web-office/src/views/bussiness-trip/todo/crud.tsx delete mode 100644 apps/web-office/src/views/bussiness-trip/todo/index.vue delete mode 100644 apps/web-office/src/views/canteen/collect/collect-detail-modal.vue delete mode 100644 apps/web-office/src/views/canteen/collect/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/collect/index.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/auto-people/auto-people-batch-add-modal.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/auto-people/auto-people-edit-modal.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/auto-people/auto-people.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/auto-people/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/config/components/basic-settings/basic-settings.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/basic-settings/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/config/components/delivery-address/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address-edit-modal.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/duty-people/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/config/components/duty-people/duty-people-batch-add-modal.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/duty-people/duty-people-edit-modal.vue delete mode 100644 apps/web-office/src/views/canteen/config/components/duty-people/duty-people.vue delete mode 100644 apps/web-office/src/views/canteen/config/index.vue delete mode 100644 apps/web-office/src/views/canteen/orderfood/collect/collect.vue delete mode 100644 apps/web-office/src/views/canteen/orderfood/collect/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/orderfood/index.vue delete mode 100644 apps/web-office/src/views/canteen/orderfood/orderfood/choose-address-modal.vue delete mode 100644 apps/web-office/src/views/canteen/orderfood/orderfood/orderfood.vue delete mode 100644 apps/web-office/src/views/canteen/recipe/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/recipe/index.vue delete mode 100644 apps/web-office/src/views/canteen/recipe/recipe-sync-modal.vue delete mode 100644 apps/web-office/src/views/canteen/statistics/crud.tsx delete mode 100644 apps/web-office/src/views/canteen/statistics/index.vue delete mode 100644 apps/web-office/src/views/canteen/statistics/subsidy-statistics.vue delete mode 100644 apps/web-office/src/views/canteen/statistics/unit-statistics.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/analytics-trends.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/analytics-visits-data.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/analytics-visits-sales.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/analytics-visits-source.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/analytics-visits.vue delete mode 100644 apps/web-office/src/views/dashboard/analytics/index.vue delete mode 100644 apps/web-office/src/views/dashboard/components/workbench-header.vue delete mode 100644 apps/web-office/src/views/dashboard/components/workbench-quick-nav.vue delete mode 100644 apps/web-office/src/views/dashboard/home/index.vue delete mode 100644 apps/web-office/src/views/dashboard/workspace/index.vue delete mode 100644 apps/web-office/src/views/demos/antd/index.vue delete mode 100644 apps/web-office/src/views/duty/list/crud.tsx delete mode 100644 apps/web-office/src/views/duty/list/duty-edit-modal.vue delete mode 100644 apps/web-office/src/views/duty/list/duty-upload-modal.vue delete mode 100644 apps/web-office/src/views/duty/list/index.vue delete mode 100644 apps/web-office/src/views/duty/standing-book/crud.tsx delete mode 100644 apps/web-office/src/views/duty/standing-book/index.vue delete mode 100644 apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-edit-modal.vue delete mode 100644 apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-setting.vue delete mode 100644 apps/web-office/src/views/meeting/config/components/addressor-sort-setting/crud.tsx delete mode 100644 apps/web-office/src/views/meeting/config/index.vue delete mode 100644 apps/web-office/src/views/meeting/edit/index.vue delete mode 100644 apps/web-office/src/views/meeting/edit/spoken-person-edit-modal.vue delete mode 100644 apps/web-office/src/views/meeting/list/crud.tsx delete mode 100644 apps/web-office/src/views/meeting/list/index.vue delete mode 100644 apps/web-office/src/views/meeting/production-edit/index.vue delete mode 100644 apps/web-office/src/views/meeting/production-edit/spoken-person-edit-modal.vue delete mode 100644 apps/web-office/src/views/meeting/production-list/crud.tsx delete mode 100644 apps/web-office/src/views/meeting/production-list/index.vue delete mode 100644 apps/web-office/src/views/meeting/standing-book/crud.tsx delete mode 100644 apps/web-office/src/views/meeting/standing-book/index.vue delete mode 100644 apps/web-office/src/views/meeting/start/index.vue delete mode 100644 apps/web-office/src/views/office-supplies/apply/crud.tsx delete mode 100644 apps/web-office/src/views/office-supplies/apply/index.vue delete mode 100644 apps/web-office/src/views/office-supplies/apply/office-batch-apply-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/audit/crud.tsx delete mode 100644 apps/web-office/src/views/office-supplies/audit/index.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/choose-office-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/crud.tsx delete mode 100644 apps/web-office/src/views/office-supplies/inventory/index.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/purchase-summary-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/supplies-edit-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/supplies-out-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/inventory/supplies-put-modal.vue delete mode 100644 apps/web-office/src/views/office-supplies/settle/crud.tsx delete mode 100644 apps/web-office/src/views/office-supplies/settle/index.vue delete mode 100644 apps/web-office/src/views/supervise/edit/curd.tsx delete mode 100644 apps/web-office/src/views/supervise/edit/index.vue delete mode 100644 apps/web-office/src/views/supervise/feedback/crud.tsx delete mode 100644 apps/web-office/src/views/supervise/feedback/index.vue delete mode 100644 apps/web-office/src/views/supervise/list/crud.tsx delete mode 100644 apps/web-office/src/views/supervise/list/detail-drawer/curd.tsx delete mode 100644 apps/web-office/src/views/supervise/list/detail-drawer/detail-drawer.vue delete mode 100644 apps/web-office/src/views/supervise/list/index.vue delete mode 100644 apps/web-office/src/views/supervise/summary/crud.tsx delete mode 100644 apps/web-office/src/views/supervise/summary/index.vue delete mode 100644 apps/web-office/src/views/system/dict/crud.tsx delete mode 100644 apps/web-office/src/views/system/dict/dict-data-edit-modal.vue delete mode 100644 apps/web-office/src/views/system/dict/dict-type-edit-modal.vue delete mode 100644 apps/web-office/src/views/system/dict/index.vue delete mode 100644 apps/web-office/src/views/system/user/choose-user-modal.vue delete mode 100644 apps/web-office/src/views/user-center/center/index.vue delete mode 100644 apps/web-office/src/views/user-center/todo/index.vue delete mode 100644 apps/web-office/tailwind.config.mjs delete mode 100644 apps/web-office/tsconfig.json delete mode 100644 apps/web-office/tsconfig.node.json delete mode 100644 apps/web-office/vite.config.mts diff --git a/apps/web-contract/.env b/apps/web-contract/.env deleted file mode 100644 index 14bacc7a..00000000 --- a/apps/web-contract/.env +++ /dev/null @@ -1,5 +0,0 @@ -# 应用标题 -VITE_APP_TITLE=热力合同系统 - -# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 -VITE_APP_NAMESPACE=contract diff --git a/apps/web-contract/.env.analyze b/apps/web-contract/.env.analyze deleted file mode 100644 index ffafa8dd..00000000 --- a/apps/web-contract/.env.analyze +++ /dev/null @@ -1,7 +0,0 @@ -# public path -VITE_BASE=/ - -# Basic interface address SPA -VITE_GLOB_API_URL=/api - -VITE_VISUALIZER=true diff --git a/apps/web-contract/.env.development b/apps/web-contract/.env.development deleted file mode 100644 index c138f482..00000000 --- a/apps/web-contract/.env.development +++ /dev/null @@ -1,16 +0,0 @@ -# 端口号 -VITE_PORT=5666 - -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启 Nitro Mock服务,true 为开启,false 为关闭 -VITE_NITRO_MOCK=true - -# 是否打开 devtools,true 为打开,false 为关闭 -VITE_DEVTOOLS=false - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true diff --git a/apps/web-contract/.env.production b/apps/web-contract/.env.production deleted file mode 100644 index 5993af93..00000000 --- a/apps/web-contract/.env.production +++ /dev/null @@ -1,19 +0,0 @@ -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启压缩,可以设置为 none, brotli, gzip -VITE_COMPRESS=none - -# 是否开启 PWA -VITE_PWA=false - -# vue-router 的模式 -VITE_ROUTER_HISTORY=history - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true - -# 打包后是否生成dist.zip -VITE_ARCHIVER=true diff --git a/apps/web-contract/auto-imports.d.ts b/apps/web-contract/auto-imports.d.ts deleted file mode 100644 index d7d30c37..00000000 --- a/apps/web-contract/auto-imports.d.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// noinspection JSUnusedGlobalSymbols -// Generated by unplugin-auto-import -// biome-ignore lint: disable -export {} -declare global { - const EffectScope: typeof import('vue')['EffectScope'] - const computed: typeof import('vue')['computed'] - const createApp: typeof import('vue')['createApp'] - const customRef: typeof import('vue')['customRef'] - const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] - const defineComponent: typeof import('vue')['defineComponent'] - const effectScope: typeof import('vue')['effectScope'] - const getCurrentInstance: typeof import('vue')['getCurrentInstance'] - const getCurrentScope: typeof import('vue')['getCurrentScope'] - const h: typeof import('vue')['h'] - const inject: typeof import('vue')['inject'] - const isProxy: typeof import('vue')['isProxy'] - const isReactive: typeof import('vue')['isReactive'] - const isReadonly: typeof import('vue')['isReadonly'] - const isRef: typeof import('vue')['isRef'] - const markRaw: typeof import('vue')['markRaw'] - const nextTick: typeof import('vue')['nextTick'] - const onActivated: typeof import('vue')['onActivated'] - const onBeforeMount: typeof import('vue')['onBeforeMount'] - const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] - const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] - const onDeactivated: typeof import('vue')['onDeactivated'] - const onErrorCaptured: typeof import('vue')['onErrorCaptured'] - const onMounted: typeof import('vue')['onMounted'] - const onRenderTracked: typeof import('vue')['onRenderTracked'] - const onRenderTriggered: typeof import('vue')['onRenderTriggered'] - const onScopeDispose: typeof import('vue')['onScopeDispose'] - const onServerPrefetch: typeof import('vue')['onServerPrefetch'] - const onUnmounted: typeof import('vue')['onUnmounted'] - const onUpdated: typeof import('vue')['onUpdated'] - const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] - const provide: typeof import('vue')['provide'] - const reactive: typeof import('vue')['reactive'] - const readonly: typeof import('vue')['readonly'] - const ref: typeof import('vue')['ref'] - const resolveComponent: typeof import('vue')['resolveComponent'] - const shallowReactive: typeof import('vue')['shallowReactive'] - const shallowReadonly: typeof import('vue')['shallowReadonly'] - const shallowRef: typeof import('vue')['shallowRef'] - const toRaw: typeof import('vue')['toRaw'] - const toRef: typeof import('vue')['toRef'] - const toRefs: typeof import('vue')['toRefs'] - const toValue: typeof import('vue')['toValue'] - const triggerRef: typeof import('vue')['triggerRef'] - const unref: typeof import('vue')['unref'] - const useAttrs: typeof import('vue')['useAttrs'] - const useCssModule: typeof import('vue')['useCssModule'] - const useCssVars: typeof import('vue')['useCssVars'] - const useId: typeof import('vue')['useId'] - const useModel: typeof import('vue')['useModel'] - const useSlots: typeof import('vue')['useSlots'] - const useTemplateRef: typeof import('vue')['useTemplateRef'] - const watch: typeof import('vue')['watch'] - const watchEffect: typeof import('vue')['watchEffect'] - const watchPostEffect: typeof import('vue')['watchPostEffect'] - const watchSyncEffect: typeof import('vue')['watchSyncEffect'] -} -// for type re-export -declare global { - // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' - import('vue') -} -// for vue template auto import -import { UnwrapRef } from 'vue' -declare module 'vue' { - interface GlobalComponents {} - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef - readonly computed: UnwrapRef - readonly createApp: UnwrapRef - readonly customRef: UnwrapRef - readonly defineAsyncComponent: UnwrapRef - readonly defineComponent: UnwrapRef - readonly effectScope: UnwrapRef - readonly getCurrentInstance: UnwrapRef - readonly getCurrentScope: UnwrapRef - readonly h: UnwrapRef - readonly inject: UnwrapRef - readonly isProxy: UnwrapRef - readonly isReactive: UnwrapRef - readonly isReadonly: UnwrapRef - readonly isRef: UnwrapRef - readonly markRaw: UnwrapRef - readonly nextTick: UnwrapRef - readonly onActivated: UnwrapRef - readonly onBeforeMount: UnwrapRef - readonly onBeforeUnmount: UnwrapRef - readonly onBeforeUpdate: UnwrapRef - readonly onDeactivated: UnwrapRef - readonly onErrorCaptured: UnwrapRef - readonly onMounted: UnwrapRef - readonly onRenderTracked: UnwrapRef - readonly onRenderTriggered: UnwrapRef - readonly onScopeDispose: UnwrapRef - readonly onServerPrefetch: UnwrapRef - readonly onUnmounted: UnwrapRef - readonly onUpdated: UnwrapRef - readonly onWatcherCleanup: UnwrapRef - readonly provide: UnwrapRef - readonly reactive: UnwrapRef - readonly readonly: UnwrapRef - readonly ref: UnwrapRef - readonly resolveComponent: UnwrapRef - readonly shallowReactive: UnwrapRef - readonly shallowReadonly: UnwrapRef - readonly shallowRef: UnwrapRef - readonly toRaw: UnwrapRef - readonly toRef: UnwrapRef - readonly toRefs: UnwrapRef - readonly toValue: UnwrapRef - readonly triggerRef: UnwrapRef - readonly unref: UnwrapRef - readonly useAttrs: UnwrapRef - readonly useCssModule: UnwrapRef - readonly useCssVars: UnwrapRef - readonly useId: UnwrapRef - readonly useModel: UnwrapRef - readonly useSlots: UnwrapRef - readonly useTemplateRef: UnwrapRef - readonly watch: UnwrapRef - readonly watchEffect: UnwrapRef - readonly watchPostEffect: UnwrapRef - readonly watchSyncEffect: UnwrapRef - } -} diff --git a/apps/web-contract/forge.config.ts b/apps/web-contract/forge.config.ts deleted file mode 100644 index 75b83e68..00000000 --- a/apps/web-contract/forge.config.ts +++ /dev/null @@ -1,63 +0,0 @@ -const createEntry = (description = '', data: any = []) => ({ - description, - data, -}); - -const staticDicts = { - cancel_reson: createEntry('变更原因', [ - { label: '未填写原因', value: '0' }, - { label: '用户取消', value: '1' }, - { label: '系统取消', value: '2' }, - { label: '其他原因', value: '3' }, - ]), -}; - -export default { - // 配置路径,如果存在,则使用配置路径下的文件 - configPath: '', - // 接口配置,仅用于生成 api 接口文件 - apis: { - enable: true, - generator: [ - { - input: '', - templatePath: 'src/api/template', - output: 'src/api/index.ts', - needTs: true, - outputTs: 'src/api/globals.d.ts', - handleApi: (apiDescriptor) => { - // 返回falsy值表示过滤此api - if (!apiDescriptor.path.startWith('/user')) { - return; - } - - apiDescriptor.parameter = apiDescriptor.parameter.filter( - (param) => param.in === 'header' && param.name === 'token', - ); - delete apiDescriptor.requestBody.id; - apiDescriptor.url = apiDescriptor.url.replace('/user', ''); - return apiDescriptor; - }, - }, - ], - }, - // 字典配置,仅用于生成字典枚举文件 - dicts: { - enable: true, - generator: [ - { - input: '', - templatePath: 'src/api/template', - output: 'src/utils/dict/shared.ts', - handleDict: async (dictDescriptor) => { - // await dictDescriptor.request(); - - // 请求数据类型表为了生成对应注释 - // 返回falsy值表示过滤此api - staticDicts[dictDescriptor.name] = dictDescriptor; - return dictDescriptor; - }, - }, - ], - }, -}; diff --git a/apps/web-contract/index.html b/apps/web-contract/index.html deleted file mode 100644 index 0aa687e0..00000000 --- a/apps/web-contract/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - <%= VITE_APP_TITLE %> - - - - -
- - - - diff --git a/apps/web-contract/package.json b/apps/web-contract/package.json deleted file mode 100644 index d4f17bc7..00000000 --- a/apps/web-contract/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "web-contract", - "version": "1.0.0", - "type": "module", - "scripts": { - "build": "pnpm vite build --mode production", - "build:dev": "pnpm vite build --mode development", - "build:analyze": "pnpm vite build --mode analyze", - "dev": "pnpm vite --mode development", - "dev:prod": "pnpm vite --mode production", - "preview": "vite preview --port 4174", - "typecheck": "vue-tsc --noEmit --skipLibCheck" - }, - "imports": { - "#/*": "./src/*" - }, - "dependencies": { - "@fast-crud/fast-crud": "^1.21.2", - "@fast-crud/fast-extends": "^1.21.2", - "@fast-crud/ui-antdv4": "^1.21.2", - "@fast-crud/ui-interface": "^1.21.2", - "@vben-core/shadcn-ui": "workspace:*", - "@vben/access": "workspace:*", - "@vben/common-ui": "workspace:*", - "@vben/constants": "workspace:*", - "@vben/hooks": "workspace:*", - "@vben/icons": "workspace:*", - "@vben/layouts": "workspace:*", - "@vben/locales": "workspace:*", - "@vben/plugins": "workspace:*", - "@vben/preferences": "workspace:*", - "@vben/request": "workspace:*", - "@vben/stores": "workspace:*", - "@vben/styles": "workspace:*", - "@vben/types": "workspace:*", - "@vben/utils": "workspace:*", - "@vueuse/core": "^11.0.3", - "alova": "^3.0.14", - "ant-design-vue": "^4.2.3", - "big.js": "^6.2.1", - "common-utils": "workspace:*", - "dayjs": "^1.11.13", - "exceljs": "^4.4.0", - "lodash-es": "^4.17.21", - "pinia": "2.2.2", - "pinia-plugin-persistedstate": "^3.2.1", - "sortablejs": "^1.15.2", - "tyme4ts": "^1.1.2", - "vue": "^3.4.38", - "vue-router": "^4.4.3", - "vxe-pc-ui": "^4.1.12", - "vxe-table": "^4.7.74", - "vxe-table-plugin-antd": "^4.0.8", - "vxe-table-plugin-export-xlsx": "^4.0.2", - "xe-utils": "^3.5.30" - }, - "devDependencies": { - "@types/big.js": "^6.2.2", - "@types/lodash-es": "^4.17.12", - "sass": "^1.77.8", - "typescript": "^5.5.4", - "unplugin-auto-import": "^0.18.2", - "unplugin-vue-components": "^0.27.4", - "vite-plugin-lazy-import": "^1.0.7" - } -} diff --git a/apps/web-contract/postcss.config.mjs b/apps/web-contract/postcss.config.mjs deleted file mode 100644 index 3d807045..00000000 --- a/apps/web-contract/postcss.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config/postcss'; diff --git a/apps/web-contract/public/favicon.ico b/apps/web-contract/public/favicon.ico deleted file mode 100644 index bce5299c7c127268d844c7163ebc7721ccb0ded5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/apps/web-contract/readme.md b/apps/web-contract/readme.md deleted file mode 100644 index 2d70e919..00000000 --- a/apps/web-contract/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -pnpm i @fast-crud/fast-crud -pnpm i @fast-crud/fast-extends -pnpm i @fast-crud/ui-interface diff --git a/apps/web-contract/src/api/global.d.ts b/apps/web-contract/src/api/global.d.ts deleted file mode 100644 index c068b841..00000000 --- a/apps/web-contract/src/api/global.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface QueryOptions { - params?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface BodyOptions { - params?: AnyObject; - data?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface RequestOptions { - url: string; - data?: QueryOptions; -} - -export interface MutationOptions { - url: string; - data?: BodyOptions; -} - -declare interface PageVo { - rows: number; - data: any; - message: string; -} diff --git a/apps/web-contract/src/api/index.ts b/apps/web-contract/src/api/index.ts deleted file mode 100644 index bf5bb49d..00000000 --- a/apps/web-contract/src/api/index.ts +++ /dev/null @@ -1,958 +0,0 @@ -import type { BodyOptions, QueryOptions } from './global.d'; - -import { http } from './request/index'; - -export default { - meeting: { - /** 协同办公/会议管理 分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/meeting/page', data), - /** 协同办公/会议管理 删除会议 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/meeting/deletes', data), - /** 协同办公/会议管理 会议保存 */ - post_save: (data?: BodyOptions) => http.post('/app/meeting/save', data), - /** 协同办公/会议管理 查看会议台账 */ - get_list: (data?: QueryOptions) => http.get('/app/meeting/list', data), - list: { - /** 协同办公/会议管理 会议台账导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/meeting/list/export', data), - }, - /** 协同办公/会议管理 门户获取会议数据 */ - get_getFundingSource: (data?: QueryOptions) => - http.get('/app/meeting/getFundingSource', data), - }, - tysq: { - zzjg: { - yhjbda: { - YhjbdaController: { - /** 统一授权 未命名接口 */ - get_yhjbdaGrid: (data?: QueryOptions) => - http.get('/app/tysq/zzjg/yhjbda/YhjbdaController/yhjbdaGrid', data), - }, - }, - }, - }, - dictType: { - /** 协同办公/字典表 字典类型查询 */ - get_list: (data?: QueryOptions) => http.get('/app/dictType/list', data), - /** 协同办公/字典表 字典类型保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dictType/save', data), - /** 协同办公/字典表 字典类型删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dictType/deletes', data), - }, - uaa: { - /** 用户中心 用户登陆 */ - post_validateAccount: (data?: BodyOptions) => - http.post('/uc/uaa/validateAccount', data), - }, - api: { - core: { - orgemplbc: { - employee: { - /** 用户中心 获取用户信息(分页) */ - post_paging: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/employee/paging', data), - }, - organization: { - RL: { - /** 用户中心 根据组织机构id获取员工信息 */ - get_employee: (data?: QueryOptions) => - http.get('/uc/api/core/orgemplbc/organization/RL/employee', data), - }, - /** 用户中心 获取组织结构信息 */ - post_paging: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/organization/paging', data), - }, - /** 用户中心 根据组织机构id和用户信息查询 */ - post_employee: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/employee', data), - }, - }, - }, - sys: { - user: { - /** 用户中心 根据token获取用户信息 */ - post_checkToken: (data?: BodyOptions) => - http.post('/uc/sys/user/checkToken', data), - functiontree: { - /** 用户中心 获取菜单接口 */ - get_XTBGXT: (data?: QueryOptions) => - http.get('/uc/sys/user/functiontree/HTGL', data), - /** 统一授权 未命名接口 */ - get_PLRL: (data?: QueryOptions) => - http.get('/uc/sys/user/functiontree/PLRL', data), - }, - }, - }, - zbgl: { - /** 协同办公/值班管理 值班查询 */ - get_queryZbInfo: (data?: QueryOptions) => - http.get('/app/zbgl/queryZbInfo', data), - /** 协同办公/值班管理 保存值班信息 */ - post_save: (data?: BodyOptions) => http.post('/app/zbgl/save', data), - /** 协同办公/值班管理 删除值班信息 */ - get_deletes: (data?: QueryOptions) => http.get('/app/zbgl/deletes', data), - /** 协同办公/值班管理 导入值班人员信息 */ - post_importZbry: (data?: BodyOptions) => - http.post('/app/zbgl/importZbry', data), - /** 协同办公/值班管理 门户值班信息查询 */ - get_getDutyInfo: (data?: QueryOptions) => - http.get('/app/zbgl/getDutyInfo', data), - /** 协同办公/值班管理 导出 */ - post_export: (data?: BodyOptions) => http.post('/app/zbgl/export', data), - }, - dictData: { - /** 协同办公/字典表 字典数据保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dictData/save', data), - /** 合同系统/项目管理 保存 */ - get_save: (data?: QueryOptions) => http.get('/app/dictData/save', data), - /** 合同系统/项目名称管理 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dictData/page', data), - /** 协同办公/字典表 字典数据删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dictData/deletes', data), - /** 合同系统/项目管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/dictData/deletes', data), - }, - user: { - /** 统一授权 获取用户列表 */ - get_page: (data?: QueryOptions) => http.get('/app/user/page', data), - }, - dish: { - /** 协同办公/订餐管理/菜谱管理 菜谱查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dish/page', data), - /** 协同办公/订餐管理/菜谱管理 菜谱保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dish/save', data), - /** 协同办公/订餐管理/食谱管理 菜谱删除 */ - post_deletes: (data?: BodyOptions) => http.post('/app/dish/deletes', data), - }, - recipe: { - /** 协同办公/订餐管理/食谱管理 食谱查询 */ - get_page: (data?: QueryOptions) => http.get('/app/recipe/page', data), - /** 协同办公/订餐管理/食谱管理 食谱保存 */ - post_save: (data?: BodyOptions) => http.post('/app/recipe/save', data), - /** 协同办公/订餐管理/食谱管理 食谱导出 */ - get_export: (data?: QueryOptions) => http.get('/app/recipe/export', data), - /** 协同办公/订餐管理/食谱管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/recipe/saveBatch', data), - /** 协同办公/订餐管理/食谱管理 食谱编辑 */ - post_edit: (data?: BodyOptions) => http.post('/app/recipe/edit', data), - }, - ccsq: { - /** 协同办公/出差申请 出差申请查询 */ - get_page: (data?: QueryOptions) => http.get('/app/ccsq/page', data), - /** 协同办公/出差申请 申请单保存 */ - post_save: (data?: BodyOptions) => http.post('/app/ccsq/save', data), - /** 协同办公/出差申请 申请单删除 */ - post_deletes: (data?: BodyOptions) => http.post('/app/ccsq/deletes', data), - /** 协同办公/出差申请 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/ccsq/rollback', data), - /** 协同办公/出差申请 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/ccsq/startWorkFlow', data), - /** 协同办公/出差申请 审核 */ - post_submit: (data?: BodyOptions) => http.post('/app/ccsq/submit', data), - /** 协同办公/出差申请 待办 */ - get_toDoPage: (data?: QueryOptions) => http.get('/app/ccsq/toDoPage', data), - /** 协同办公/出差申请 已办 */ - get_donePage: (data?: QueryOptions) => http.get('/app/ccsq/donePage', data), - /** 协同办公/出差申请 获取可退回节点信息 */ - get_getBackNode: (data?: QueryOptions) => - http.get('/app/ccsq/getBackNode', data), - /** 协同办公/出差申请 查询流程节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/ccsq/getFlowNodeUserConfig', data), - /** 协同办公/出差申请 下一审核节点 */ - post_getNextNodeUserConfig: (data?: BodyOptions) => - http.post('/app/ccsq/getNextNodeUserConfig', data), - /** 协同办公/出差申请 查看出差信息 */ - get_getBusinessTripInfo: (data?: QueryOptions) => - http.get('/app/ccsq/getBusinessTripInfo', data), - /** 协同办公/出差申请 查看审核过程 */ - get_history: (data?: QueryOptions) => http.get('/app/ccsq/history', data), - }, - orderfood: { - /** 协同办公/订餐管理/订餐 订餐加载接口 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/orderfood/getOne', data), - /** 协同办公/订餐管理/订餐 订餐保存 */ - post_save: (data?: BodyOptions) => http.post('/app/orderfood/save', data), - /** 协同办公/订餐管理/订餐 取消订餐 */ - post_cancel: (data?: BodyOptions) => - http.post('/app/orderfood/cancel', data), - /** 协同办公/订餐管理/订餐 协助取消他人订餐 */ - post_assistCancel: (data?: BodyOptions) => - http.post('/app/orderfood/assistCancel', data), - }, - orderfoods: { - /** 协同办公/订餐管理/汇总 单位订餐汇总 */ - get_departmentSummary: (data?: QueryOptions) => - http.get('/app/orderfoods/departmentSummary', data), - /** 协同办公/订餐管理/汇总 订餐汇总 */ - get_infoList: (data?: QueryOptions) => - http.get('/app/orderfoods/infoList', data), - /** 协同办公/订餐管理/汇总 个人结算汇总 */ - get_personalSummary: (data?: QueryOptions) => - http.get('/app/orderfoods/personalSummary', data), - infoList: { - /** 协同办公/订餐管理/汇总 订餐汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/infoList/export', data), - }, - personalSummary: { - /** 协同办公/订餐管理/汇总 个人结算汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/personalSummary/export', data), - }, - departmentSummary: { - /** 协同办公/订餐管理/汇总 单位订餐汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/departmentSummary/export', data), - }, - /** 协同办公/订餐管理/汇总 结算单 */ - get_finalStatement: (data?: QueryOptions) => - http.get('/app/orderfoods/finalStatement', data), - finalStatement: { - /** 协同办公/订餐管理/汇总 结算表导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/finalStatement/export', data), - }, - /** 协同办公/订餐管理/汇总 结算操作 */ - post_balance: (data?: BodyOptions) => - http.post('/app/orderfoods/balance', data), - }, - officeSuppliesApply: { - /** 协同办公/办公用品/办公用品申请 申请页面查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/officeSuppliesApply/page', data), - /** 协同办公/办公用品/办公用品申请 申请保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/save', data), - /** 协同办公/办公用品/办公用品申请 批量审核 */ - post_audit: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/audit', data), - /** 协同办公/办公用品/办公用品申请 批量申请 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/saveBatch', data), - /** 协同办公/办公用品/办公用品申请 撤销申请 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/deletes', data), - }, - warehousing: { - /** 协同办公/办公用品/入库/出库 入库查询 */ - get_page: (data?: QueryOptions) => http.get('/app/warehousing/page', data), - }, - inOrOut: { - /** 协同办公/办公用品/入库/出库 入库/保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/inOrOut/saveBatch', data), - }, - supervise: { - /** 协同办公/督查督办/立项发起 立项分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/supervise/page', data), - /** 协同办公/督查督办/立项发起 立项保存 */ - post_save: (data?: BodyOptions) => http.post('/app/supervise/save', data), - /** 协同办公/督查督办/立项发起 立项删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/supervise/deletes', data), - /** 协同办公/督查督办/立项发起 立项提交 */ - post_audit: (data?: BodyOptions) => http.post('/app/supervise/audit', data), - /** 协同办公/督查督办/执行反馈 执行反馈提交 */ - post_auditFankui: (data?: BodyOptions) => - http.post('/app/supervise/auditFankui', data), - /** 协同办公/督查督办/报表汇总 统计 */ - get_huizong: (data?: QueryOptions) => - http.get('/app/supervise/huizong', data), - /** 协同办公/督查督办/立项发起 更新状态 */ - post_updateStatus: (data?: BodyOptions) => - http.post('/app/supervise/updateStatus', data), - }, - feedback: { - /** 协同办公/督查督办/执行反馈 执行反馈待办查询 */ - get_page: (data?: QueryOptions) => http.get('/app/feedback/page', data), - /** 协同办公/督查督办/执行反馈 执行反馈保存,实际修改操作,保存反馈时间,反馈内容,进度 */ - post_saveUpdate: (data?: BodyOptions) => - http.post('/app/feedback/saveUpdate', data), - /** 协同办公/督查督办/执行反馈 查询负责部门列表,返回所有的反馈信息 */ - get_getDepartment: (data?: QueryOptions) => - http.get('/app/feedback/getDepartment', data), - /** 协同办公/督查督办/执行反馈 分发立项任务 */ - post_save: (data?: BodyOptions) => http.post('/app/feedback/save', data), - /** 协同办公/督查督办/执行反馈 执行反馈已办查询 */ - get_pageDone: (data?: QueryOptions) => - http.get('/app/feedback/pageDone', data), - /** 协同办公/督查督办/立项发起 查询立项对应的反馈 */ - get_queryFeedback: (data?: QueryOptions) => - http.get('/app/feedback/queryFeedback', data), - }, - file: { - /** 协同办公/文件上传/下载 多文件上传 */ - post_uploads: (data?: BodyOptions) => http.post('/app/file/uploads', data), - }, - addressor: { - /** 协同办公/会议管理/发言人 发言人查询 */ - get_list: (data?: QueryOptions) => http.get('/app/addressor/list', data), - /** 协同办公/会议管理/发言人 发言人批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/addressor/saveBatch', data), - /** 协同办公/会议管理/发言人 发言人保存 */ - post_save: (data?: BodyOptions) => http.post('/app/addressor/save', data), - /** 协同办公/会议管理/发言人 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/addressor/deletes', data), - }, - officeSuppliesList: { - /** 协同办公/办公用品/办公用品清单 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/officeSuppliesList/page', data), - /** 协同办公/办公用品/办公用品清单 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/officeSuppliesList/saveBatch', data), - /** 协同办公/办公用品/办公用品清单 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/officeSuppliesList/deletes', data), - }, - officeSuppliesApplySum: { - /** 协同办公/办公用品 采购汇总 */ - get_list: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/list', data), - /** 协同办公/办公用品 结算清单 */ - get_finalStatement: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/finalStatement', data), - /** 协同办公/办公用品 单位结算清单 */ - get_unitFinalStatement: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/unitFinalStatement', data), - finalStatement: { - /** 协同办公/办公用品 结算清单导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/finalStatement/export', data), - }, - /** 协同办公/办公用品 结算清单结算操作 */ - post_balance: (data?: BodyOptions) => - http.post('/app/officeSuppliesApplySum/balance', data), - }, - autoOrderfoodPeoples: { - /** 协同办公/订餐管理/自动订餐人员管理 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/autoOrderfoodPeoples/page', data), - /** 协同办公/订餐管理/自动订餐人员管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/autoOrderfoodPeoples/saveBatch', data), - /** 协同办公/订餐管理/自动订餐人员管理 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/autoOrderfoodPeoples/deletes', data), - }, - usercenter: { - /** 协同办公 获取菜单 */ - get_menus: (data?: QueryOptions) => http.get('/app/usercenter/menus', data), - }, - workflow: { - /** 协同办公/工作流 待办 */ - post_queryMyTodoTask: (data?: BodyOptions) => - http.post('/app/workflow/queryMyTodoTask', data), - /** 协同办公/工作流 已办 */ - post_getHistoricTaskByUserID: (data?: BodyOptions) => - http.post('/app/workflow/getHistoricTaskByUserID', data), - }, - personTask: { - /** 合同系统/签订 待办查询 */ - get_page: (data?: QueryOptions) => http.get('/app/personTask/page', data), - /** 合同系统/签订 已办查询 */ - get_pagePersonTaskOver: (data?: QueryOptions) => - http.get('/app/personTask/pagePersonTaskOver', data), - /** 合同系统/履行/履行查询 分页合同履行审批查询 */ - get_pagePerformanceAudit: (data?: QueryOptions) => - http.get('/app/personTask/pagePerformanceAudit', data), - /** 合同系统/履行/履行提示/申请归档 归档保存 */ - post_applicationFiling: (data?: BodyOptions) => - http.post('/app/personTask/applicationFiling', data), - }, - sbCtrBasePt: { - /** 合同系统/申报 合同申报数据查询 */ - get_QuerySbCtrBase: (data?: QueryOptions) => - http.get('/app/sbCtrBasePt/QuerySbCtrBase', data), - /** 合同系统/申报 合同申报基本信息加载 */ - post_page: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/page', data), - /** 合同系统/申报 合同申报基本信息保存 */ - post_save: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/save', data), - /** 合同系统/申报 合同申报基本信息删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/deletes', data), - /** 合同系统/申报 获取资金渠道 */ - get_getFundingSource: (data?: QueryOptions) => - http.get('/app/sbCtrBasePt/getFundingSource', data), - /** 合同系统/申报 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/submit', data), - /** 合同系统/申报 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/rollback', data), - /** 合同系统/申报 发起废除 */ - post_repeal: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/repeal', data), - /** 合同系统/申报 发起流程 */ - post_start: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/start', data), - }, - contractBaseInfo: { - /** 合同系统/立项 合同立项保存 */ - post_apply: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/apply', data), - /** 合同系统/立项 合同立项查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/contractBaseInfo/page', data), - /** 合同系统/立项 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/deletes', data), - /** 合同系统/立项 单条查询 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/contractBaseInfo/getOne', data), - /** 合同系统/立项 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/submit', data), - /** 合同系统/立项废除 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/rollback', data), - /** 合同系统/立项废除 提交 */ - post_abolishSubmit: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/abolishSubmit', data), - /** 合同系统/立项 流程启动(非待办提交) */ - post_applyFlowStart: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/applyFlowStart', data), - /** 合同系统/立项废除 流程启动(非待办提交) */ - post_abolishFlowStart: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/abolishFlowStart', data), - }, - proProviderInfo: { - /** 合同系统/相对人管理 合同相对人查询 */ - get_Query: (data?: QueryOptions) => - http.get('/app/proProviderInfo/Query', data), - /** 合同系统/相对人管理 获取币种 */ - get_getBz: (data?: QueryOptions) => - http.get('/app/proProviderInfo/getBz', data), - /** 合同系统/相对人管理 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/proProviderInfo/save', data), - /** 合同系统/相对人管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/proProviderInfo/deletes', data), - /** 合同系统/相对人管理 加载 */ - post_page: (data?: BodyOptions) => - http.post('/app/proProviderInfo/page', data), - }, - contractModelInfo: { - /** 合同系统/模板管理 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractModelInfo/save', data), - /** 合同系统/模板管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/contractModelInfo/deletes', data), - /** 合同系统/模板管理 加载 */ - post_page: (data?: BodyOptions) => - http.post('/app/contractModelInfo/page', data), - }, - contractReferType: { - /** 合同系统/合同类型参照 查询 */ - get_list: (data?: QueryOptions) => - http.get('/app/contractReferType/list', data), - /** 合同系统/合同类型参照 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractReferType/save', data), - /** 合同系统/合同类型参照 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/contractReferType/deletes', data), - }, - attachment: { - /** 文件上传/下载(新) 附件加载 */ - get_list: (data?: QueryOptions) => http.get('/app/attachment/list', data), - /** 文件上传/下载(新) 文件下载 */ - get_download: (data?: QueryOptions) => - http.get('/app/attachment/download/{fileUuid}', data), - /** 文件上传/下载(新) 多文件上传 */ - post_uploads: (data?: BodyOptions) => - http.post('/app/attachment/uploads', data), - }, - contractPayment: { - /** 合同系统/履行/履行提示/合同付款 获取合同付款信息 */ - get_queryPaymentInfo: (data?: QueryOptions) => - http.get('/app/contractPayment/queryPaymentInfo', data), - /** 合同系统/归档/合同归档 历史记录 */ - get_historyPaymentInfo: (data?: QueryOptions) => - http.get('/app/contractPayment/historyPaymentInfo', data), - /** 合同系统/履行/履行提示/合同付款 保存付款申请 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractPayment/save', data), - /** 合同系统/履行/履行提示/合同付款 查询流程未配置人员节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/contractPayment/getFlowNodeUserConfig', data), - /** 合同系统/履行/履行提示/合同付款 送审 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/contractPayment/startWorkFlow', data), - /** 合同系统/履行/履行提示/合同付款 审核通过 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractPayment/submit', data), - /** 合同系统/履行/履行提示/合同付款 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractPayment/rollback', data), - /** 合同系统/履行/履行提示/合同付款 待审核 */ - get_toDoPage: (data?: QueryOptions) => - http.get('/app/contractPayment/toDoPage', data), - /** 合同系统/履行/履行提示/合同付款 已审核 */ - get_donePage: (data?: QueryOptions) => - http.get('/app/contractPayment/donePage', data), - }, - selectMerchantsBasicInfo: { - /** 合同系统/选商 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/selectMerchantsBasicInfo/page', data), - /** 合同系统/选商 选商信息查询(单条) */ - get_getOne: (data?: QueryOptions) => - http.get('/app/selectMerchantsBasicInfo/getOne', data), - /** 合同系统/选商 选商信息保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/save', data), - /** 合同系统/选商 合同选商保存操作(多个对象) */ - post_saveMultiEntity: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/saveMultiEntity', data), - /** 合同系统/选商 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/submit', data), - /** 合同系统/选商 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/rollback', data), - /** 合同系统/选商废除 选商废除(弃用) */ - post_abolish: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolish', data), - /** 合同系统/选商废除 选商废除(开始节点提交,非待办提交) */ - post_abolishFlowStart: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishFlowStart', data), - /** 合同系统/选商废除 提交 */ - post_abolishSubmit: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishSubmit', data), - /** 合同系统/选商废除 退回 */ - post_abolishRollback: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishRollback', data), - /** 合同系统/选商 流程启动(非待办提交) */ - post_flowStart: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/flowStart', data), - }, - lvxChange: { - /** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxChange/save', data), - /** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */ - get_getContractChangeInfo: (data?: QueryOptions) => - http.get('/app/lvxChange/getContractChangeInfo', data), - /** 合同系统/履行/履行提示/合同变更 查询流程未配置人员节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/lvxChange/getFlowNodeUserConfig', data), - /** 合同系统/履行/履行提示/合同变更 流程启动 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/lvxChange/startWorkFlow', data), - /** 合同系统/履行/履行提示/合同变更 审核通过 */ - post_submit: (data?: BodyOptions) => - http.post('/app/lvxChange/submit', data), - }, - contractRelieve: { - /** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */ - get_getContractRelieveInfo: (data?: QueryOptions) => - http.get('/app/contractRelieve/getContractRelieveInfo', data), - /** 合同系统/履行/履行提示/合同解除 保存合同解除信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractRelieve/save', data), - }, - contractBreach: { - /** 合同系统/履行/履行提示/合同违约情况 保存合同违约信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractBreach/save', data), - /** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */ - get_getContractBreachInfo: (data?: QueryOptions) => - http.get('/app/contractBreach/getContractBreachInfo', data), - /** 合同系统/履行/履行提示/合同违约情况 查询流程未配置人员节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/contractBreach/getFlowNodeUserConfig', data), - /** 合同系统/履行/履行提示/合同违约情况 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/contractBreach/startWorkFlow', data), - /** 合同系统/履行/履行提示/合同违约情况 审核 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractBreach/submit', data), - /** 合同系统/履行/履行提示/合同违约情况 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractBreach/rollback', data), - }, - lvxResult: { - /** 合同系统/履行/履行结果 履行结果保存 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data), - /** 合同系统/履行/履行结果 分页履行结果查询 */ - get_page: (data?: QueryOptions) => http.get('/app/lvxResult/page', data), - /** 合同系统/履行/履行结果 已办 */ - get_pageDone: (data?: QueryOptions) => - http.get('/app/lvxResult/pageDone', data), - }, - contractFiling: { - /** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractFiling/save', data), - /** 合同系统/履行/履行提示/临时归档 分页查询 */ - get_pageFillingList: (data?: QueryOptions) => - http.get('/app/contractFiling/pageFillingList', data), - /** 合同系统/履行/履行提示/临时归档 回档 */ - post_update: (data?: BodyOptions) => - http.post('/app/contractFiling/update', data), - /** 合同系统/履行/履行提示/临时归档 获取临时归档信息 */ - get_getLsgd: (data?: QueryOptions) => - http.get('/app/contractFiling/getLsgd', data), - }, - biddingExpert: { - /** 合同系统/选商/选商招标专家 招标专家查询 */ - get_list: (data?: QueryOptions) => - http.get('/app/biddingExpert/list', data), - /** 合同系统/选商/选商招标专家 选商招标专家保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/biddingExpert/saveBatch', data), - /** 合同系统/选商/选商招标专家 选商招标专家删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/biddingExpert/deletes', data), - }, - contractFilingFormal: { - /** 合同系统/归档/合同归档 分页查询归档信息 */ - get_queryContractFiling: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/queryContractFiling', data), - /** 合同系统/归档/合同归档 获取合同招标选商申请信息 */ - get_getContractSupplier: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/getContractSupplier', data), - /** 合同系统/归档/合同归档 保存合同归档 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractFilingFormal/save', data), - /** 合同系统/归档/合同回档 分页查询-已归档 */ - get_pageArchivedContract: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/pageArchivedContract', data), - /** 合同系统/归档/合同回档 回档 */ - post_saveFilingBack: (data?: BodyOptions) => - http.post('/app/contractFilingFormal/saveFilingBack', data), - }, - lvxProduct: { - /** 合同系统/履行/履行提示/产品或服务 获取合同产品信息 */ - get_getContractProductInfo: (data?: QueryOptions) => - http.get('/app/lvxProduct/getContractProductInfo', data), - /** 合同系统/履行/履行提示/产品或服务 累计收款金额 */ - get_getSumFromProduct: (data?: QueryOptions) => - http.get('/app/lvxProduct/getSumFromProduct', data), - /** 合同系统/履行/履行提示/产品或服务 历史记录 */ - get_getListFromHistoryRecord: (data?: QueryOptions) => - http.get('/app/lvxProduct/getListFromHistoryRecord', data), - /** 合同系统/履行/履行提示/产品或服务 保存合同产品服务 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxProduct/save', data), - }, - qdSign: { - /** 合同系统/签订 签订查询 */ - get_page: (data?: QueryOptions) => http.get('/app/qdSign/page', data), - /** 合同系统/签订 获取合同签订信息 */ - get_getContractSignInfo: (data?: QueryOptions) => - http.get('/app/qdSign/getContractSignInfo', data), - /** 合同系统/打印 选商打印 */ - get_printApprove: (data?: QueryOptions) => - http.get('/app/qdSign/printApprove', data), - /** 合同系统/签订 打印文本 */ - get_textPrint: (data?: QueryOptions) => - http.get('/app/qdSign/textPrint', data), - /** 合同系统/签订 保存送审 */ - post_save: (data?: BodyOptions) => http.post('/app/qdSign/save', data), - /** 合同系统/签订 废除 */ - post_abolish: (data?: BodyOptions) => - http.post('/app/qdSign/abolish', data), - }, - flowCenter: { - /** 流程中心 启动流程 */ - post_start: (data?: BodyOptions) => http.post('/flowCenter/start', data), - /** 流程中心 审核通过 */ - post_agree: (data?: BodyOptions) => http.post('/flowCenter/agree', data), - /** 流程中心 审核退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/flowCenter/rollback', data), - /** 流程中心 获取待办 */ - post_getTodoList: (data?: BodyOptions) => - http.post('/flowCenter/getTodoList', data), - /** 流程中心 获取已办 */ - post_doneList: (data?: BodyOptions) => - http.post('/flowCenter/doneList', data), - /** 流程中心 审核撤回 */ - get_revoke: (data?: QueryOptions) => http.get('/flowCenter/revoke', data), - /** 流程中心 审核记录 */ - get_history: (data?: QueryOptions) => http.get('/flowCenter/history', data), - /** 流程中心 查看流程图 */ - get_getFlowImg: (data?: QueryOptions) => - http.get('/flowCenter/getFlowImg', data), - /** 流程中心 获取可退回节点 */ - get_getReturnNode: (data?: QueryOptions) => - http.get('/flowCenter/getReturnNode', data), - /** 流程中心 获取流程节点人员配置信息 */ - get_getNextNodeUserConfig: (data?: QueryOptions) => - http.get('/flowCenter/getNextNodeUserConfig', data), - /** 流程中心 获取待办数量 */ - get_getTodoListSize: (data?: QueryOptions) => - http.get('/flowCenter/getTodoListSize', data), - /** 流程中心 获取当前审核节点配置信息 */ - get_getNodeConfigInfo: (data?: QueryOptions) => - http.get('/flowCenter/getNodeConfigInfo', data), - /** 流程中心 获取下一节点配置信息 */ - get_getNextNodeConfig: (data?: QueryOptions) => - http.get('/flowCenter/getNextNodeConfig', data), - /** 流程中心 获取流程节点人员配置信息 */ - post_getFlowNodeUserConfig: (data?: BodyOptions) => - http.post('/flowCenter/getFlowNodeUserConfig', data), - /** 流程中心 获取流程变量配置 */ - get_getFlowVariablesConfig: (data?: QueryOptions) => - http.get('/flowCenter/getFlowVariablesConfig', data), - /** 流程中心 获取流程所有人员配置信息 */ - get_getFlowUserConfig: (data?: QueryOptions) => - http.get('/flowCenter/getFlowUserConfig', data), - }, - rl: { - moduleParameter: { - /** 流程中心/流程规划 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/rl/moduleParameter/save', data), - /** 流程中心/流程规划 查询 */ - post_page: (data?: BodyOptions) => - http.post('/app/rl/moduleParameter/page', data), - /** 流程中心/流程规划 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/rl/moduleParameter/deletes', data), - /** 流程中心/流程规划 获取节点审核人 */ - get_getNextNodeUser: (data?: QueryOptions) => - http.get('/app/rl/moduleParameter/getNextNodeUser', data), - }, - workFlow: { - /** 合同系统 流程待办 */ - get_queryMyTodoTask: (data?: QueryOptions) => - http.get('/app/rl/workFlow/queryMyTodoTask', data), - }, - }, - dutyCount: { - /** 协同办公/订餐管理/值班天数 分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dutyCount/page', data), - /** 协同办公/订餐管理/值班天数 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/dutyCount/saveBatch', data), - /** 协同办公/订餐管理/值班天数 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dutyCount/deletes', data), - }, - common: { - /** 公共 获取请求ip */ - get_getClientIp: (data?: QueryOptions) => - http.get('/app/common/getClientIp', data), - /** 公共 获取项目地址 */ - get_getProjectAddress: (data?: QueryOptions) => - http.get('/app/common/getProjectAddress', data), - }, - address: { - /** 协同办公/订餐管理/订餐地址 查询(分页) */ - get_page: (data?: QueryOptions) => http.get('/app/address/page', data), - /** 协同办公/订餐管理/订餐地址 保存 */ - post_save: (data?: BodyOptions) => http.post('/app/address/save', data), - /** 协同办公/订餐管理/订餐地址 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/address/deletes', data), - }, - superviseFeedbackRecord: { - /** 协同办公/督查督办/反馈记录 保存反馈记录 */ - post_save: (data?: BodyOptions) => - http.post('/app/superviseFeedbackRecord/save', data), - /** 协同办公/督查督办/反馈记录 查询反馈记录 */ - get_page: (data?: QueryOptions) => - http.get('/app/superviseFeedbackRecord/page', data), - /** 协同办公/督查督办/反馈记录 删除反馈记录 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/superviseFeedbackRecord/deletes', data), - }, - lxBasisSale: { - /** 合同系统/签约依据 分页保存/修改 */ - post_save: (data?: BodyOptions) => http.post('/app/lxBasisSale/save', data), - /** 合同系统/签约依据 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/lxBasisSale/page', data), - /** 合同系统/签约依据 删除测试 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/lxBasisSale/deletes', data), - }, - workFlow: { - /** 合同系统 查询下一节点id */ - get_getNextNodeUserConfig: (data?: QueryOptions) => - http.get('/app/workFlow/getNextNodeUserConfig', data), - /** 合同系统 获取可退回节点 */ - get_getBackNode: (data?: QueryOptions) => - http.get('/app/workFlow/getBackNode', data), - /** 合同系统 审核记录 */ - get_history: (data?: QueryOptions) => - http.get('/app/workFlow/history', data), - /** 合同系统 流程已办 */ - get_getDoneTaskByUserID: (data?: QueryOptions) => - http.get('/app/workFlow/getDoneTaskByUserID', data), - /** 合同系统 获取流程图 */ - get_getFlowImg: (data?: QueryOptions) => - http.get('/app/workFlow/getFlowImg', data), - }, - biddingResult: { - /** 合同系统/选商/选商结果 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/biddingResult/page', data), - /** 合同系统/选商/选商结果 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/biddingResult/save', data), - /** 合同系统/选商/选商结果 查询流程审核节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/biddingResult/getFlowNodeUserConfig', data), - /** 合同系统/选商/选商结果 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/biddingResult/startWorkFlow', data), - /** 合同系统/选商/选商结果 审核通过 */ - post_submit: (data?: BodyOptions) => - http.post('/app/biddingResult/submit', data), - /** 合同系统/选商/选商结果 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/biddingResult/rollback', data), - /** 合同系统/选商/选商结果 待审核 */ - get_toDoPage: (data?: QueryOptions) => - http.get('/app/biddingResult/toDoPage', data), - /** 合同系统/选商/选商结果 查询合同信息 */ - get_getContractInfo: (data?: QueryOptions) => - http.get('/app/biddingResult/getContractInfo', data), - /** 合同系统/选商/选商结果 查询供应商列表 */ - get_getProviderInfo: (data?: QueryOptions) => - http.get('/app/biddingResult/getProviderInfo', data), - /** 合同系统/选商/选商结果 选商专家列表 */ - get_queryBiddingExpert: (data?: QueryOptions) => - http.get('/app/biddingResult/queryBiddingExpert', data), - }, - home: { - /** 合同系统/首页待办/已办 首页待办 */ - get_todo: (data?: QueryOptions) => http.get('/app/home/todo', data), - /** 合同系统/首页待办/已办 首页已办 */ - get_done: (data?: QueryOptions) => http.get('/app/home/done', data), - }, - sqConsignPt: { - /** 合同系统/签约授权 签约授权保存 */ - post_saveSignMultiEntity: (data?: BodyOptions) => - http.post('/app/sqConsignPt/saveSignMultiEntity', data), - /** 合同系统/签约授权 签约授权查询 */ - get_SigningaAuthorizationSerch: (data?: QueryOptions) => - http.get('/app/sqConsignPt/SigningaAuthorizationSerch', data), - /** 合同系统/签约授权 查询单条签约授权数据 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/sqConsignPt/getOne', data), - /** 合同系统/签约授权 签约授权提交(非待办提交) */ - post_flowStart: (data?: BodyOptions) => - http.post('/app/sqConsignPt/flowStart', data), - /** 合同系统/签约授权 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/sqConsignPt/deletes', data), - /** 合同系统/签约授权 签约授权提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/sqConsignPt/submit', data), - }, - addressorsort: { - /** 协同办公/会议管理/发言人顺序配置 发言人顺序查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/addressorsort/page', data), - /** 协同办公/会议管理/发言人顺序配置 发言人排序保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/addressorsort/save', data), - /** 协同办公/会议管理/发言人顺序配置 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/addressorsort/deletes', data), - }, - equInfo: { - /** 设备管理/设备静态库管理/ 设备信息维护 设备信息保存 */ - post_save: (data?: BodyOptions) => http.post('/app/equInfo/save', data), - /** 设备管理/设备静态库管理/ 设备信息维护 设备信息(获取/查询) */ - get_page: (data?: QueryOptions) => http.get('/app/equInfo/page', data), - /** 设备管理/设备静态库管理/ 设备信息维护 设备信息删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equInfo/deletes', data), - }, - equAllot: { - /** 设备管理/查询管理/设备调拨查询 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/equAllot/page', data), - /** 设备管理/设备静态库管理/设备调拨 调拨信息保存 */ - post_save: (data?: BodyOptions) => http.post('/app/equAllot/save', data), - /** 设备管理/设备静态库管理/设备调拨 调拨信息删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equAllot/deletes', data), - }, - bidding: { - /** 合同系统/标段信息 标段查询 */ - get_list: (data?: QueryOptions) => http.get('/app/bidding/list', data), - /** 合同系统/标段信息 标段信息保存(弃用,在选商中报错) */ - post_save: (data?: BodyOptions) => http.post('/app/bidding/save', data), - /** 合同系统/标段信息 标段信息删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/bidding/deletes', data), - /** 合同系统/选商/选商结果 查询标段列表 */ - get_getBuddingPtInfoList: (data?: QueryOptions) => - http.get('/app/bidding/getBuddingPtInfoList', data), - }, - equAccident: { - /** 设备管理/设备使用管理/事故处理 事故处理(查询/获取) */ - get_page: (data?: QueryOptions) => http.get('/app/equAccident/page', data), - /** 设备管理/设备使用管理/事故处理 保存 */ - post_save: (data?: BodyOptions) => http.post('/app/equAccident/save', data), - /** 设备管理/设备使用管理/事故处理 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equAccident/deletes', data), - /** 设备管理/查询管理/事故处理查询 查询 */ - get_query: (data?: QueryOptions) => - http.get('/app/equAccident/query', data), - }, - equStopRepair: { - /** 设备管理/设备使用管理/停炉检修处理 查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/equStopRepair/page', data), - /** 设备管理/设备使用管理/停炉检修处理 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/equStopRepair/save', data), - /** 设备管理/设备使用管理/停炉检修处理 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equStopRepair/deletes', data), - /** 设备管理/查询管理/停炉检修处理查询 查询 */ - get_query: (data?: QueryOptions) => - http.get('/app/equStopRepair/query', data), - }, - equDanger: { - /** 设备管理/设备使用管理/隐患排查 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/equDanger/page', data), - /** 设备管理/设备使用管理/隐患排查 保存 */ - post_save: (data?: BodyOptions) => http.post('/app/equDanger/save', data), - /** 设备管理/设备使用管理/隐患排查 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equDanger/deletes', data), - /** 设备管理/查询管理/隐患排查处理查询 查询 */ - get_query: (data?: QueryOptions) => http.get('/app/equDanger/query', data), - }, - equDayRepair: { - /** 设备管理/设备使用管理/日常维修 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/equDayRepair/page', data), - /** 设备管理/设备使用管理/日常维修 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/equDayRepair/save', data), - /** 设备管理/设备使用管理/日常维修 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/equDayRepair/deletes', data), - /** 设备管理/查询管理/日常维修查询 查询 */ - get_query: (data?: QueryOptions) => - http.get('/app/equDayRepair/query', data), - }, - contractRecommendProvider: { - /** 合同系统/选商/合同推荐供应商信息 推荐供应商查询 */ - get_list: (data?: QueryOptions) => - http.get('/app/contractRecommendProvider/list', data), - /** 合同系统/选商/合同推荐供应商信息 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/contractRecommendProvider/deletes', data), - }, -}; diff --git a/apps/web-contract/src/api/request/config.ts b/apps/web-contract/src/api/request/config.ts deleted file mode 100644 index 50e70181..00000000 --- a/apps/web-contract/src/api/request/config.ts +++ /dev/null @@ -1,19 +0,0 @@ - -/** BaseUrl: 基础路径 */ -const BASE_URL: string = '/api' - -/** AccessTokenField: header 里传accessToken的键名,一般为 Authorization */ -export const ACCESS_TOKEN_FIELD = 'Token' - -/** - * 动态获取baseURL,仅限开发环境 - * 适用于同时连接多个后端功能开发,通过设置 proxy_type 值实现‘非重启更新’连接的后端 - */ -export function getBaseURL(): string { - if (import.meta.env.MODE === 'development') { - const proxyType = localStorage.getItem('@@@proxy_type') || ''; - // return BASE_URL + "/zzz" - return BASE_URL + proxyType - } - return BASE_URL -} diff --git a/apps/web-contract/src/api/request/getToken.ts b/apps/web-contract/src/api/request/getToken.ts deleted file mode 100644 index 4e905d94..00000000 --- a/apps/web-contract/src/api/request/getToken.ts +++ /dev/null @@ -1,83 +0,0 @@ - -/** - * 获取RefreshToken - * @description: 创建新的请求实例实现 - */ -import { createAlova } from 'alova' -import { useAccessStore } from '@vben/stores'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { getBaseURL, ACCESS_TOKEN_FIELD } from './config'; - -let lock = false -let promiseResult: any[] = [] - -const alova = createAlova({ - baseURL: getBaseURL(), - cacheFor: null, - statesHook: vueHook, - requestAdapter: fetchAdapter(), - beforeRequest: (method) => { - // ...原请求前拦截器 - const accessStore = useAccessStore(); - - // const userStore = useUserStore() - // console.log('beforeRequest', userStore.accessToken) - // 添加token到请求头 - // method.config.headers[ACCESS_TOKEN_FIELD] = `${userStore.accessToken}` - }, - responded: async (response, method) => { - let json = await response.json(); - return json.data || null - }, -}) - -export function getAccessToken(rToken: string): Promise { - return new Promise(async (resolve, reject) => { - promiseResult.push({ - resolve, - reject - }) - // const userStore = useUserStore(); - - if (!lock) { - lock = true - // 为了让refreshToken请求顺利通过,需要通过元数据标识authRole为refreshToken。参考官方文档 - const method = alova.Post('/system/auth/refreshToken', { token: rToken }, { - meta: { - authRole: 'refreshToken' - } - }); - method.send() - .then((data: any) => { - console.log(data) - // 如果 refreshToken 请求成功,则将新的token存储到本地 - if (data && data.accessToken) { - // userStore.setToken(data.accessToken); - // userStore.setTokenExpiresTime(data.accessExpire) - // userStore.setRefreshToken(data.refreshToken); - while (promiseResult.length) { - // p1.resolve(res.data) - promiseResult.shift().resolve(data) - } - lock = false - return - } - // userStore.resetStore() - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject("身份认证已失效,请重新登录") - } - - }) - .catch(err => { - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject(err) - } - lock = false - }) - } - - }) -} diff --git a/apps/web-contract/src/api/request/index.ts b/apps/web-contract/src/api/request/index.ts deleted file mode 100644 index 6377f518..00000000 --- a/apps/web-contract/src/api/request/index.ts +++ /dev/null @@ -1,324 +0,0 @@ -/** - * 该文件可自行根据业务逻辑进行调整 - */ -import { preferences } from '@vben/preferences'; -import { useAccessStore } from '@vben/stores'; - -import { createAlova } from 'alova'; -import { createServerTokenAuthentication } from 'alova/client'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { message } from 'ant-design-vue'; -import { merge } from 'lodash-es'; - -import { useAuthStore } from '#/store'; - -import { type BodyOptions, type QueryOptions } from '../global.d'; -import { ACCESS_TOKEN_FIELD, getBaseURL } from './config'; -import { transferResponse } from './transferResponse'; - -/** 储存过期的token */ -const expireTokenCache = []; - -/** 服务端 Token 校验 */ -const { onAuthRequired, onResponseRefreshToken } = - createServerTokenAuthentication({ - refreshTokenOnSuccess: { - /** - * 判断 Token 是否过期 - * 响应时触发,可获取到response和method,并返回boolean表示token是否过期 - */ - isExpired: async (response, method) => { - // 文件下载操作 - if (method.meta?.responseType === 'blob') { - return false; - } - - const responseClone = response.clone(); - const data = await responseClone.json(); - - // 当服务端返回401时,表示token过期 - const isExpired = ['401'].includes(data.code); - if (isExpired) { - console.log('AccessToken已过期', data.code); - expireTokenCache.push(method.config.headers[ACCESS_TOKEN_FIELD]); - } - - return isExpired; - }, - /** 当token过期时触发,在此函数中触发刷新token */ - handler: async (_response, _method) => { - console.warn('Access token or refresh token is invalid or expired. '); - const accessStore = useAccessStore(); - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - if ( - preferences.app.loginExpiredMode === 'modal' && - accessStore.isAccessChecked - ) { - accessStore.setLoginExpired(true); - } else { - await authStore.logout(false); - } - throw new Error('登录已过期,请重新登录'); - - // const userStore = useUserStore(); - // try { - // let rToken = userStore.refreshToken; - // // 如果没有refreshToken,则跳转登录页 - // if (!rToken) { - // throw new Error('登录已过期,请重新登录'); - // } - // await getAccessToken(rToken) - // expireTokenCache = [] - // } catch (error: any) { - // window.$message?.error(error.message); - // userStore.resetStore() - // throw error; - // } - }, - }, - }); - -export const alovaInstance = createAlova({ - /** 动态代理配置 */ - baseURL: getBaseURL(), - /** 框架请求适配器 */ - statesHook: vueHook, - requestAdapter: fetchAdapter(), - /** 设置缓存状态:不开启 */ - cacheFor: null, - // cacheFor: { - // // 统一设置POST的缓存模式 - // GET: { - // mode: 'restore', - // expire: 60 * 10 * 1000, - // }, - // // POST: { - // // mode: 'restore', - // // expire: 60 * 10 * 1000 - // // }, - // // // 统一设置HEAD请求的缓存模式 - // // HEAD: 60 * 10 * 1000 - // }, - /** 请求拦截器 */ - beforeRequest: onAuthRequired((method) => { - const accessStore = useAccessStore(); - - if (accessStore.accessToken) { - method.config.headers.Token = accessStore.accessToken; - // 统一授权的这个接口需要以Authorization传参,无语 /sys/user/functiontree/XTBGXT - method.config.headers.Authorization = `Bearer ${accessStore.accessToken}`; - } - method.config.headers['Accept-Language'] = preferences.app.locale; - - // const userStore = useUserStore() - // // 添加token到请求头 - // if (userStore.accessToken) { - // method.config.headers[ACCESS_TOKEN_FIELD] = `Bearer ${userStore.accessToken}` - - // method.config.headers["Authorization"] = `Bearer ${userStore.accessToken}` - // } - - // method.config.cacheFor = { - // // 设置缓存模式为内存模式 - // mode: 'restore', - // // 单位为毫秒 - // // 当设置为`Infinity`,表示数据永不过期,设置为0或负数时表示不缓存 - // expire: 60 * 10 * 1000 - // } - // method.config.transform = (rawData, headers) => { - // console.log('接口响应', rawData) - // return transferResponse(rawData) - // } - }), - /** 响应拦截器 */ - responded: onResponseRefreshToken(async (response, method) => { - if (method.meta?.responseType === 'blob') { - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - const contentDisposition = response.headers.get('content-disposition'); - let fileName = 'downloaded-file'; - if (contentDisposition) { - const matches = /filename="?([^"]+)"?/.exec(contentDisposition); - if (matches != null && matches[1]) { - fileName = decodeURIComponent(matches[1]); - } - } - a.download = fileName; - // 触发下载 - document.body.append(a); - a.click(); - // 移除链接 - a.remove(); - window.URL.revokeObjectURL(url); - return { - blob, - url, - filename: fileName, - }; - } - - // if (response.status >= 400) { - // throw new Error(response.statusText); - // } - - let json = await response.json(); - console.log('【接口】', method.url); - console.log('原始响应', JSON.parse(JSON.stringify(json))); - - json = transferResponse(json); - console.log('改造响应', JSON.parse(JSON.stringify(json))); - - const accessStore = useAccessStore(); - - if (json.code != 0) { - if (json.code == '401') { - message.error('用户身份过期,请重新登录'); - - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - await authStore.logout(); - // const userStore = useUserStore(); - // userStore.resetStore(); - } else { - message.error(json.msg || '服务器开小差,请稍后再试'); - } - // 抛出错误或返回reject状态的Promise实例时,此请求将抛出错误 - throw new Error((json && json.msg) || '出错了'); - } - - // 解析的响应数据将传给method实例的transformData钩子函数,这些函数将在后续讲解 - return json.data; - }), -}); - -// 请求配置处理中间件 -function requestConfigMiddleware(method: string, url: string) {} - -class Http { - private appendParamsToUrl(url: string, params: any): string { - let queryString = ''; - for (const key in params) { - if (Object.prototype.hasOwnProperty.call(params, key)) { - queryString += `${queryString ? '&' : '?'}${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`; - } - } - return url + queryString; - } - - /** - * 全局默认配置 - * @param customConfig - * @returns - */ - private getConfig(customConfig?: any): any { - // 递归属性拷贝 - return merge( - {}, - { - meta: { - showLoading: false, - showError: false, - }, - }, - customConfig, - ); - } - - private isBodyOptions( - options: BodyOptions | QueryOptions, - ): options is BodyOptions { - return (options as BodyOptions).data !== undefined; - } - - /** - * 适配swagger路径参数,针对于pathParams - * 输入参数 "/api/v1/user/{id}",{ pathParams:{ id :1 },params:{ id:2 } } - * 输出请求 /api/v1/user/1?id=2 - */ - private replacePathParams(url: string, pathParams?: any): string { - if (!pathParams) return url; - return url.replaceAll( - /\{(\w+)\}/g, - (_, key) => pathParams[key] || `{${key}}`, - ); - } - - private request( - method: string, - url: string, - data?: BodyOptions | QueryOptions, - ): Promise { - let finalUrl = this.replacePathParams(url, data?.pathParams); - const config = this.getConfig(data?.config); - - // 当组件使用allowClear属性时,会将数据置为null,导致数据查询失败 - if (data && data.params) { - Object.keys(data.params).forEach((key) => { - if (data.params[key] === null || data.params[key] === undefined) { - delete data.params[key]; - } - }); - } - if (data && this.isBodyOptions(data)) { - Object.keys(data.data).forEach((key) => { - if (data.data[key] === null || data.data[key] === undefined) { - delete data.data[key]; - } - }); - } - - let alovaMethod: 'Delete' | 'Get' | 'Post' | 'Put' = 'Get'; - - if (method === 'get' || method === 'delete') { - if (method === 'get') { - alovaMethod = 'Get'; - } - if (method === 'delete') { - alovaMethod = 'Delete'; - } - return alovaInstance[alovaMethod](finalUrl, { - ...config, - params: data?.params, - }); - } else { - // 处理 params 到 url 的逻辑 - if (data?.params) { - finalUrl = this.appendParamsToUrl(finalUrl, data.params); - } - if (method === 'post') { - alovaMethod = 'Post'; - } - if (method === 'put') { - alovaMethod = 'Put'; - } - - return alovaInstance[alovaMethod](finalUrl, data?.data, { ...config }); - } - } - - delete(url: string, data?: QueryOptions) { - return this.request('delete', url, data); - } - - get(url: string, data?: QueryOptions) { - return this.request('get', url, data); - } - - patch(url: string, data?: BodyOptions) { - return this.request('patch', url, data); - } - - post(url: string, data?: BodyOptions) { - return this.request('post', url, data); - } - - put(url: string, data?: BodyOptions) { - return this.request('put', url, data); - } -} - -export const http = new Http(); diff --git a/apps/web-contract/src/api/request/transferResponse.ts b/apps/web-contract/src/api/request/transferResponse.ts deleted file mode 100644 index b79533bb..00000000 --- a/apps/web-contract/src/api/request/transferResponse.ts +++ /dev/null @@ -1,89 +0,0 @@ -const SUCCESS_CODE = 0; - -/** - * 统一相应处理,伪BFF层 很多接口返回的响应信息不统一,防止因后端规范问题导致前端工作量增加!!!!!!!故在此做统一处理 - * 目前项目后端会返回的几种响应情况,xxx代指需要的数据:[xxx]、{xxx}、{data:{xxx}}、{records:xxx}、{content:xxx}.........................沉默 - * 数据总条数涉及字段:total、totalElements - * - * @param response - */ -export function transferResponse(response: any) { - // 如果后端直接返回数组,如[xxx] - if (Array.isArray(response)) { - return { - code: SUCCESS_CODE, - data: { - rows: response, - }, - msg: 'Ok', - }; - } - - // 如果后端直接返回数据内容对象,如{xxx},则先进行统一响应包装 - if (response.code == undefined) { - response = { - code: SUCCESS_CODE, - data: response, - msg: 'Ok', - }; - } - - let { code, data = {}, msg, ...rest } = response; - - if (!data) { - data = {}; - } - if (typeof data === 'string') { - data = { - value: data, - }; - } - // eslint-disable-next-line eqeqeq - if (code == 'success') { - code = 0; - } - - if (code == 'failure' && msg && msg.includes('token无效')) { - code = 401; - } - - if (Array.isArray(data)) { - data = { - rows: data, - }; - } - - if (!data.total && data.totalElements) { - data.total = data.totalElements; - } - - if (data.records && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (data.content && Array.isArray(data.content)) { - data.rows = data.content; - delete data.content; - } - - if (data.content && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (response.code == 200 && response.flag === false) { - code = 500; - } else if (response.code == '200') { - code = 0; - } - - return { - code, - data: { - ...data, - ...rest, - }, - msg, - }; -} diff --git a/apps/web-contract/src/api/system/auth.ts b/apps/web-contract/src/api/system/auth.ts deleted file mode 100644 index 3c11602a..00000000 --- a/apps/web-contract/src/api/system/auth.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { http } from '../request/index'; - -import { useAccessStore } from '@vben/stores'; - -export namespace AuthApi { - /** 登录接口参数 */ - export interface LoginParams { - password: string; - username: string; - } - - /** 登录接口返回值 */ - export interface LoginResult { - accessToken: string; - desc: string; - realName: string; - userId: string; - username: string; - } - - export interface RefreshTokenResult { - data: string; - status: number; - } -} - -/** - * 登录 - */ -export async function loginApi(data: AuthApi.LoginParams) { - return http.post('/uc/uaa/validateAccount', { - data, - config: { - transform(rawData) { - if (rawData.access_token) { - rawData.accessToken = rawData.access_token; - rawData.realName = rawData.display_name; - return rawData; - } - return rawData; - }, - }, - }); -} - -/** - * 刷新accessToken - */ -export async function refreshTokenApi() { - return http.post('/auth/refresh'); -} - -/** - * 退出登录 - */ -export async function logoutApi() { - return http.post('/uc/uaa/logout'); -} - -/** - * 获取用户权限码 - */ -export async function getAccessCodesApi() { - return http.post('/auth/codes'); -} - -/** - * 获取用户信息 - */ -export async function getUserInfoApi() { - const accessStore = useAccessStore(); - return http.post('/uc/sys/user/checkToken', { - data: { - token: accessStore.accessToken, - }, - }); -} diff --git a/apps/web-contract/src/api/system/menu.ts b/apps/web-contract/src/api/system/menu.ts deleted file mode 100644 index 31fab94c..00000000 --- a/apps/web-contract/src/api/system/menu.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { http } from '../request/index'; - -/** - * 获取用户所有菜单 - */ -export async function getAllMenusApi() { - return http.get('/menu/all'); -} diff --git a/apps/web-contract/src/app.vue b/apps/web-contract/src/app.vue deleted file mode 100644 index 06f7d675..00000000 --- a/apps/web-contract/src/app.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/assets/canteen/orderfood.png b/apps/web-contract/src/assets/canteen/orderfood.png deleted file mode 100644 index 8984b82394f2182899c1905a04eb72a8df0a7360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4404 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 { - item.label = item.ORG_NAME; - item.value = item.ORG_ID; - }); - const treeData = transTree(data.rows); - return treeData; - }, - }), -}; - -export async function getUnitData(_params?: any) { - const data: any = await Apis.api.core.orgemplbc.organization.post_paging({ - params: { - page: 1, - size: 1000, - }, - data: { - subFilter: [ - { - symbol: 'like', - singleValue: '0001%', - key: 'ORG_ID', - logic: 'AND', - }, - ], - }, - }); - data.rows.forEach((item: any) => { - item.label = item.ORG_NAME; - item.value = item.ORG_ID; - }); - const treeData = transTree(data.rows); - return treeData; -} - -// 转换树行数据的方法 -function transTree(list) { - // 最终生成的树行结构 - const _treeData: any[] = []; - - // 对传入进来的 数据进行遍历,查找对应的子级 - list.forEach((item) => { - // 给每一项添加子节点 - // item.children = [] - item.key = item.ORG_ID; - item.label = item.ORG_NAME; - // 如果 pid 为空,说明是最顶级,直接放到 _treeData 中即可 - if (item.ORG_LEVEL === 1) { - item.selectable = false; - _treeData.push(item); - } - - // 根据前面的分析,pid 代表的是父级的 id,从而可以进行筛选子级 - // filter 方法会把满足条件到的每一项,组成一个数组进行返回 - const children = list.filter((data) => data.PARENT_ID === item.ORG_ID); - - // 如果没有子节点,直接 return 不做任何处理 - if (children.length === 0) return; - - // 将返回的子级进行赋值给父级(item)的 children 属性 - item.children = children; - }); - - // 将最终生成的数据返回出去 - return _treeData; -} diff --git a/apps/web-contract/src/components/dict-tag/dict-tag.vue b/apps/web-contract/src/components/dict-tag/dict-tag.vue deleted file mode 100644 index 7ab6a0ee..00000000 --- a/apps/web-contract/src/components/dict-tag/dict-tag.vue +++ /dev/null @@ -1,110 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/components/dict-tag/index.ts b/apps/web-contract/src/components/dict-tag/index.ts deleted file mode 100644 index 881265a3..00000000 --- a/apps/web-contract/src/components/dict-tag/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as DictTag } from './dict-tag.vue'; diff --git a/apps/web-contract/src/components/flow-record-table/curd.tsx b/apps/web-contract/src/components/flow-record-table/curd.tsx deleted file mode 100644 index 9b355511..00000000 --- a/apps/web-contract/src/components/flow-record-table/curd.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - - ]; -} diff --git a/apps/web-contract/src/components/flow-record-table/flow-record-table.vue b/apps/web-contract/src/components/flow-record-table/flow-record-table.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-contract/src/components/temporary-form-modal/temporary-form-modal.vue b/apps/web-contract/src/components/temporary-form-modal/temporary-form-modal.vue deleted file mode 100644 index ffaebac5..00000000 --- a/apps/web-contract/src/components/temporary-form-modal/temporary-form-modal.vue +++ /dev/null @@ -1,61 +0,0 @@ - - diff --git a/apps/web-contract/src/globals.d.ts b/apps/web-contract/src/globals.d.ts deleted file mode 100644 index fa3cd6e3..00000000 --- a/apps/web-contract/src/globals.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { RouteMeta as IRouteMeta } from '@vben-core/typings'; - -import 'vue-router'; - -declare module 'vue-router' { - // eslint-disable-next-line @typescript-eslint/no-empty-object-type - interface RouteMeta extends IRouteMeta {} -} - -export interface VbenAdminProAppConfigRaw { - VITE_GLOB_API_URL: string; -} - -export interface ApplicationConfig { - apiURL: string; -} - -declare global { - interface Window { - _VBEN_ADMIN_PRO_APP_CONF_: VbenAdminProAppConfigRaw; - } -} - -export interface PageVo { - code: number; - data: any; - message: string; -} diff --git a/apps/web-contract/src/hooks/fastCrud.ts b/apps/web-contract/src/hooks/fastCrud.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-contract/src/hooks/useRender.ts b/apps/web-contract/src/hooks/useRender.ts deleted file mode 100644 index 31eba247..00000000 --- a/apps/web-contract/src/hooks/useRender.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { h } from 'vue'; -import dayjs from 'dayjs'; -import { Button, Tag } from 'ant-design-vue'; -import { isArray, isString } from 'lodash-es'; -import { DictTag } from '#/components/dict-tag'; -// import { Icon } from '@/components/Icon'; -import { Tooltip } from 'ant-design-vue' -import { getDictOpts } from '#/utils/dict'; -export const useRender = { - /** - * 渲染图片 - * @param text 图片地址 - * @returns image标签 - */ - // renderImg: (text: string) => { - // if (text) { - // if (isArray(text)) return h(TableImg, { imgList: text }); - // else if (isString(text)) return h(TableImg, { imgList: [text] }); - // } - // return ''; - // }, - /** - * 渲染链接 - * @param url 链接地址 - * @param text 文字说明 - * @returns link 按钮 - */ - renderLink: (url: string, text?: string) => { - if (url) return h(Button, { type: 'link', href: url, target: '_blank' }, () => text || ''); - - return ''; - }, - /** - * 渲染文本,将text与val 拼接到一起 - * @param text 文本1 - * @param val 文本2 - * @returns 文本1 + 文本2 - */ - renderText: (text: string, val: string) => { - if (text) return `${text} ${val}`; - else return ''; - }, - /** - * 渲染多行文本 - * @param text - * @param val - */ - renderMultiLineText: (text: string, params?: any) => { - if (text) { - params = params || {} - let classArr: string[] = params.class || []; - if (params?.maxLine && params?.maxLine > 0) { - classArr.push('line-clamp-' + params?.maxLine) - } - return h( - Tooltip, - { trigger: 'hover' }, - { - trigger: () => h('span', { class: classArr.join(' ') }, text), - default: () => text - } - ) - } - return ''; - }, - /** - * 渲染标签 - * @param text 标签文本 - * @param color 标签颜色 - * @returns 标签 - */ - renderTag: (text: string | number, color?: string) => { - if (color) return h(Tag, { color }, () => text); - else return h(Tag, {}, () => text); - }, - /** - * 渲染多标签 - * @param texts 文本 - * @returns 多标签 - */ - renderTags: (texts: string[]) => { - if (texts) { - return h('div', null, [ - texts.map((text) => { - return h(Tag, null, () => text); - }), - ]); - } - return ''; - }, - /** - * 渲染日期 - * @param text 日期 - * @param format 格式化 - * @returns 格式化后日期 - */ - renderDate: (text: string, format?: string) => { - if (!text) return ''; - - if (!format) return dayjs(text).format('YYYY-MM-DD HH:mm:ss'); - else return dayjs(text).format(format); - }, - /** - * 渲染字典 - * @param text 字典值 - * @param dictType 字典类型 - * @returns 字典标签 - */ - renderDict: (text: string, dictType: string, params?: any) => { - if (!dictType && !params.options) { - console.warn('请传入字典类型') - return ''; - } - let dict: any[] = []; - if (dictType) { - dict = getDictOpts(dictType) - } - if (params && params.options) { - dict = params.options; - } - return h(DictTag, { options: dict, value: text, ...params }); - } - // /** - // * 渲染图标icon - // * @param text icon - // * @returns icon - // */ - // renderIcon: (text: string) => { - // if (text) return h(Icon, { icon: text }); - // }, - /** - * 使用JsonPreview组件 方便预览JSON - * @param json json字符串/obj - * @returns 能转为json返回JsonPreview 否则返回自身 - */ - // renderJsonPreview: (json: any) => { - // if (!json) return ''; - // if (typeof json === 'object') return h(JsonPreview, { data: json }); - - // if (typeof json === 'string') { - // try { - // const data = JSON.parse(json); - // return h(JsonPreview, { data }); - // } catch (e) { - // return json; - // } - // } - // }, -}; diff --git a/apps/web-contract/src/hooks/vxeTable.ts b/apps/web-contract/src/hooks/vxeTable.ts deleted file mode 100644 index 686c8244..00000000 --- a/apps/web-contract/src/hooks/vxeTable.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { ref } from 'vue'; - -import { merge } from 'lodash-es'; -import { type VxeGridInstance, type VxeGridProps } from 'vxe-table'; - -export function useVxeTable(props: { ref: string }) { - const xGridRef = ref>(); - - return { - xGridRef, - gridProps: (props: VxeGridProps) => { - // 设置默认属性 - const defaultProps: VxeGridProps = { - // 保持原始值的状态,被某些功能所依赖,比如编辑状态、还原数据等(开启后影响性能,具体取决于数据量) - keepSource: false, - height: 'auto', - border: true, - editConfig: { - mode: 'row', - }, - rowConfig: { - isCurrent: true, - }, - // 斑马条纹 - stripe: false, - pagerConfig: { - enabled: true, - size: 'mini', - pageSize: 50, - autoHidden: false, - }, - // 列设置 - columnConfig: { - // 取消列选中效果 - isCurrent: false, - isHover: false, - // 取消列宽拖动功能 - resizable: false, - }, - toolbarConfig: { - enabled: true, - export: false, - // print: true, - zoom: true, - custom: true, - refresh: true, - slots: { - buttons: 'toolbar_buttons', - }, - }, - headerAlign: 'left', - align: 'left', - }; - - // 如果mergedProps.proxyConfig是空对象,则删除该字段,不然 vxetable 可能会误判断 - if (props.proxyConfig && JSON.stringify(props.proxyConfig) != '{}') { - defaultProps.proxyConfig = { - props: { - list: 'rows', - result: 'rows', - total: 'total', - }, - }; - } - - return merge({}, defaultProps, props); - }, - - triggerProxy: (code: string) => { - const $grid = xGridRef.value; - if ($grid) { - $grid.commitProxy(code); - } - }, - }; -} diff --git a/apps/web-contract/src/layouts/authentication/authentication.vue b/apps/web-contract/src/layouts/authentication/authentication.vue deleted file mode 100644 index 50af611a..00000000 --- a/apps/web-contract/src/layouts/authentication/authentication.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/layouts/authentication/form.vue b/apps/web-contract/src/layouts/authentication/form.vue deleted file mode 100644 index 80c90749..00000000 --- a/apps/web-contract/src/layouts/authentication/form.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/apps/web-contract/src/layouts/authentication/icons/slogan.vue b/apps/web-contract/src/layouts/authentication/icons/slogan.vue deleted file mode 100644 index ae9f8888..00000000 --- a/apps/web-contract/src/layouts/authentication/icons/slogan.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/apps/web-contract/src/layouts/authentication/index.ts b/apps/web-contract/src/layouts/authentication/index.ts deleted file mode 100644 index 6c684d11..00000000 --- a/apps/web-contract/src/layouts/authentication/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as AuthPageLayout } from './authentication.vue'; diff --git a/apps/web-contract/src/layouts/basic.vue b/apps/web-contract/src/layouts/basic.vue deleted file mode 100644 index 8a5c0dde..00000000 --- a/apps/web-contract/src/layouts/basic.vue +++ /dev/null @@ -1,201 +0,0 @@ - - - diff --git a/apps/web-contract/src/layouts/index.ts b/apps/web-contract/src/layouts/index.ts deleted file mode 100644 index 027db3b9..00000000 --- a/apps/web-contract/src/layouts/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -const BasicLayout = () => import('./basic.vue'); - -const IFrameView = () => import('@vben/layouts').then((m) => m.IFrameView); - -const AuthPageLayout = () => - import('#/layouts/authentication').then((m) => m.AuthPageLayout); - -export { AuthPageLayout, BasicLayout, IFrameView }; diff --git a/apps/web-contract/src/layouts/notification/index.ts b/apps/web-contract/src/layouts/notification/index.ts deleted file mode 100644 index e219b710..00000000 --- a/apps/web-contract/src/layouts/notification/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as Notification } from './notification.vue'; - -export type * from './types'; diff --git a/apps/web-contract/src/layouts/notification/notification.vue b/apps/web-contract/src/layouts/notification/notification.vue deleted file mode 100644 index 20a6703b..00000000 --- a/apps/web-contract/src/layouts/notification/notification.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - - diff --git a/apps/web-contract/src/layouts/notification/types.ts b/apps/web-contract/src/layouts/notification/types.ts deleted file mode 100644 index 57e17943..00000000 --- a/apps/web-contract/src/layouts/notification/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -interface NotificationItem { - avatar: string; - date: string; - isRead?: boolean; - message: string; - title: string; -} - -export type { NotificationItem }; diff --git a/apps/web-contract/src/locales/README.md b/apps/web-contract/src/locales/README.md deleted file mode 100644 index 7b451032..00000000 --- a/apps/web-contract/src/locales/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# locale - -每个app使用的国际化可能不同,这里用于扩展国际化的功能,例如扩展 dayjs、antd组件库的多语言切换,以及app本身的国际化文件。 diff --git a/apps/web-contract/src/locales/index.ts b/apps/web-contract/src/locales/index.ts deleted file mode 100644 index c3fd8c84..00000000 --- a/apps/web-contract/src/locales/index.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales'; -import type { Locale } from 'ant-design-vue/es/locale'; - -import type { App } from 'vue'; -import { ref } from 'vue'; - -import { $t, setupI18n as coreSetup, loadLocalesMap } from '@vben/locales'; -import { preferences } from '@vben/preferences'; - -import antdEnLocale from 'ant-design-vue/es/locale/en_US'; -import antdDefaultLocale from 'ant-design-vue/es/locale/zh_CN'; -import dayjs from 'dayjs'; - -const antdLocale = ref(antdDefaultLocale); - -const modules = import.meta.glob('./langs/*.json'); - -const localesMap = loadLocalesMap(modules); - -/** - * 加载应用特有的语言包 - * 这里也可以改造为从服务端获取翻译数据 - * @param lang - */ -async function loadMessages(lang: SupportedLanguagesType) { - const [appLocaleMessages] = await Promise.all([ - localesMap[lang]?.(), - loadThirdPartyMessage(lang), - ]); - return appLocaleMessages?.default; -} - -/** - * 加载第三方组件库的语言包 - * @param lang - */ -async function loadThirdPartyMessage(lang: SupportedLanguagesType) { - await Promise.all([loadAntdLocale(lang), loadDayjsLocale(lang)]); -} - -/** - * 加载dayjs的语言包 - * @param lang - */ -async function loadDayjsLocale(lang: SupportedLanguagesType) { - let locale; - switch (lang) { - case 'zh-CN': { - locale = await import('dayjs/locale/zh-cn'); - break; - } - case 'en-US': { - locale = await import('dayjs/locale/en'); - break; - } - // 默认使用英语 - default: { - locale = await import('dayjs/locale/en'); - } - } - if (locale) { - dayjs.locale(locale); - } else { - console.error(`Failed to load dayjs locale for ${lang}`); - } -} - -/** - * 加载antd的语言包 - * @param lang - */ -async function loadAntdLocale(lang: SupportedLanguagesType) { - switch (lang) { - case 'zh-CN': { - antdLocale.value = antdDefaultLocale; - break; - } - case 'en-US': { - antdLocale.value = antdEnLocale; - break; - } - } -} - -async function setupI18n(app: App, options: LocaleSetupOptions = {}) { - await coreSetup(app, { - defaultLocale: preferences.app.locale, - loadMessages, - missingWarn: !import.meta.env.PROD, - ...options, - }); -} - -export { $t, antdLocale, setupI18n }; diff --git a/apps/web-contract/src/locales/langs/en-US.json b/apps/web-contract/src/locales/langs/en-US.json deleted file mode 100644 index 864c721f..00000000 --- a/apps/web-contract/src/locales/langs/en-US.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "Demos", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-contract/src/locales/langs/zh-CN.json b/apps/web-contract/src/locales/langs/zh-CN.json deleted file mode 100644 index 31d3475b..00000000 --- a/apps/web-contract/src/locales/langs/zh-CN.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "演示", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-contract/src/main.ts b/apps/web-contract/src/main.ts deleted file mode 100644 index 5d728a02..00000000 --- a/apps/web-contract/src/main.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { initPreferences } from '@vben/preferences'; -import { unmountGlobalLoading } from '@vben/utils'; - -import { overridesPreferences } from './preferences'; - -/** - * 应用初始化完成之后再进行页面加载渲染 - */ -async function initApplication() { - // name用于指定项目唯一标识 - // 用于区分不同项目的偏好设置以及存储数据的key前缀以及其他一些需要隔离的数据 - const env = import.meta.env.PROD ? 'prod' : 'dev'; - const appVersion = import.meta.env.VITE_APP_VERSION; - const namespace = `${import.meta.env.VITE_APP_NAMESPACE}-${appVersion}-${env}`; - - // app偏好设置初始化 - await initPreferences({ - namespace, - overrides: overridesPreferences, - }); - - // 启动应用并挂载 - // vue应用主要逻辑及视图 - const { bootstrap } = await import('./bootstrap'); - await bootstrap(namespace); - - // 移除并销毁loading - unmountGlobalLoading(); -} - -initApplication(); diff --git a/apps/web-contract/src/plugins/fastCrud.ts b/apps/web-contract/src/plugins/fastCrud.ts deleted file mode 100644 index 29c46213..00000000 --- a/apps/web-contract/src/plugins/fastCrud.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { App } from 'vue'; - -import FastCrud from '@fast-crud/fast-crud'; -import ui from '@fast-crud/ui-antdv4'; -import Antdv from 'ant-design-vue'; -import '@fast-crud/fast-crud/dist/style.css'; -import '@fast-crud/ui-antdv4/dist/style.css'; - -export function registerFastCrud(app: App) { - app.use(Antdv); - app.use(ui); - app.use(FastCrud, { - }); -} diff --git a/apps/web-contract/src/plugins/vxeTable.ts b/apps/web-contract/src/plugins/vxeTable.ts deleted file mode 100644 index 850334f0..00000000 --- a/apps/web-contract/src/plugins/vxeTable.ts +++ /dev/null @@ -1,202 +0,0 @@ -import type { App } from 'vue'; - -import VXETable from 'vxe-table' - -import { - VxeTable, - VxeColumn, - VxeColgroup, - VxeGrid, - VxeToolbar -} from 'vxe-table' - -import VxeUI from 'vxe-pc-ui' - -import { - - VxeAlert, - VxeAnchor, - VxeAnchorLink, - VxeBreadcrumb, - VxeBreadcrumbItem, - VxeButton, - VxeButtonGroup, - VxeCalendar, - VxeCard, - VxeCarousel, - VxeCheckbox, - VxeCheckboxGroup, - VxeCol, - VxeCollapse, - VxeCollapsePane, - VxeDatePicker, - VxeDrawer, - VxeForm, - VxeFormDesign, - VxeFormGather, - VxeFormItem, - VxeFormView, - VxeIcon, - VxeIconPicker, - VxeImage, - VxeImageGroup, - VxeImagePreview, - VxeInput, - VxeLayoutAside, - VxeLayoutBody, - VxeLayoutContainer, - VxeLayoutFooter, - VxeLayoutHeader, - VxeLink, - VxeListDesign, - VxeListView, - VxeList, - VxeLoading, - VxeMenu, - VxeModal, - VxeNumberInput, - VxeOptgroup, - VxeOption, - VxePager, - VxePasswordInput, - VxePrintPageBreak, - VxePrint, - VxePulldown, - VxeRadio, - VxeRadioButton, - VxeRadioGroup, - VxeRow, - VxeSelect, - VxeSwitch, - VxeTabPane, - VxeTabs, - VxeTag, - VxeText, - VxeTextarea, - VxeTip, - VxeTooltip, - VxeTree, - VxeTreeSelect, - VxeUpload -} from 'vxe-pc-ui' - -import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx' -import ExcelJS from 'exceljs' - -import VXETablePluginAntd from 'vxe-table-plugin-antd' - -// 导入主题变量,也可以重写主题变量 -import 'vxe-pc-ui/lib/style.css' -import 'vxe-table/lib/style.css' -import 'vxe-table/styles/cssvar.scss' -import 'vxe-pc-ui/styles/cssvar.scss' - -// VxeUI.setTheme('dark') - -VxeUI.component(VxeAlert) -VxeUI.component(VxeAnchor) -VxeUI.component(VxeAnchorLink) -VxeUI.component(VxeBreadcrumb) -VxeUI.component(VxeBreadcrumbItem) -VxeUI.component(VxeButton) -VxeUI.component(VxeButtonGroup) -VxeUI.component(VxeCalendar) -VxeUI.component(VxeCard) -VxeUI.component(VxeCarousel) -VxeUI.component(VxeCheckbox) -VxeUI.component(VxeCheckboxGroup) -VxeUI.component(VxeCol) -VxeUI.component(VxeCollapse) -VxeUI.component(VxeCollapsePane) -VxeUI.component(VxeDatePicker) -VxeUI.component(VxeDrawer) -VxeUI.component(VxeForm) -VxeUI.component(VxeFormDesign) -VxeUI.component(VxeFormGather) -VxeUI.component(VxeFormItem) -VxeUI.component(VxeFormView) -VxeUI.component(VxeIcon) -VxeUI.component(VxeIconPicker) -VxeUI.component(VxeImage) -VxeUI.component(VxeImageGroup) -VxeUI.component(VxeImagePreview) -VxeUI.component(VxeInput) -VxeUI.component(VxeLayoutAside) -VxeUI.component(VxeLayoutBody) -VxeUI.component(VxeLayoutContainer) -VxeUI.component(VxeLayoutFooter) -VxeUI.component(VxeLayoutHeader) -VxeUI.component(VxeLink) -VxeUI.component(VxeListDesign) -VxeUI.component(VxeListView) -VxeUI.component(VxeList) -VxeUI.component(VxeLoading) -VxeUI.component(VxeMenu) -VxeUI.component(VxeModal) -VxeUI.component(VxeNumberInput) -VxeUI.component(VxeOptgroup) -VxeUI.component(VxeOption) -VxeUI.component(VxePager) -VxeUI.component(VxePasswordInput) -VxeUI.component(VxePrintPageBreak) -VxeUI.component(VxePrint) -VxeUI.component(VxePulldown) -VxeUI.component(VxeRadio) -VxeUI.component(VxeRadioButton) -VxeUI.component(VxeRadioGroup) -VxeUI.component(VxeRow) -VxeUI.component(VxeSelect) -VxeUI.component(VxeSwitch) -VxeUI.component(VxeTabPane) -VxeUI.component(VxeTabs) -VxeUI.component(VxeTag) -VxeUI.component(VxeText) -VxeUI.component(VxeTextarea) -VxeUI.component(VxeTip) -VxeUI.component(VxeTooltip) -VxeUI.component(VxeTree) -VxeUI.component(VxeTreeSelect) -VxeUI.component(VxeUpload) - -VxeUI.component(VxeTable) -VxeUI.component(VxeColumn) -VxeUI.component(VxeColgroup) -VxeUI.component(VxeGrid) -VxeUI.component(VxeToolbar) - -VXETable.use(VXETablePluginAntd) - -VXETable.use(VXETablePluginExportXLSX, { - ExcelJS -}) - -VXETable.setConfig({ - // zIndex: 9999, - grid: { - size: 'mini', - proxyConfig: { - props: { - result: 'data.rows', - total: 'data.total', - }, - }, - toolbarConfig: { - enabled: true, - }, - }, - - pager: { - background: true, - pageSize: 50, - pageSizes: [50, 100, 300, 500, 1000], - layouts: ['PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total'], - }, -}) -export function registerVxeTable(app: App) { - app.use(VxeUI) - app.use(VxeTable) - app.use(VxeColumn) - app.use(VxeColgroup) - app.use(VxeGrid) - app.use(VxeToolbar) -} diff --git a/apps/web-contract/src/preferences.ts b/apps/web-contract/src/preferences.ts deleted file mode 100644 index 2cd2786d..00000000 --- a/apps/web-contract/src/preferences.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineOverridesPreferences } from '@vben/preferences'; - -/** - * @description 项目配置文件 - * 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置 - */ -export const overridesPreferences = defineOverridesPreferences({ - // overrides - app: { - name: import.meta.env.VITE_APP_TITLE, - authPageLayout: 'panel-right', - }, -}); diff --git a/apps/web-contract/src/router/access.ts b/apps/web-contract/src/router/access.ts deleted file mode 100644 index 72c1b2c0..00000000 --- a/apps/web-contract/src/router/access.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { - ComponentRecordType, - GenerateMenuAndRoutesOptions, -} from '@vben/types'; - -import { generateAccessible } from '@vben/access'; -import { preferences } from '@vben/preferences'; - -import { message } from 'ant-design-vue'; - -import { getAllMenusApi } from '#/api/system/menu'; -import { BasicLayout, IFrameView } from '#/layouts'; -import { $t } from '#/locales'; - -const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue'); - -async function generateAccess(options: GenerateMenuAndRoutesOptions) { - const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue'); - - const layoutMap: ComponentRecordType = { - BasicLayout, - IFrameView, - }; - - return await generateAccessible(preferences.app.accessMode, { - ...options, - fetchMenuListAsync: async () => { - message.loading({ - content: `${$t('common.loadingMenu')}...`, - duration: 1.5, - }); - return await getAllMenusApi(); - }, - // 可以指定没有权限跳转403页面 - forbiddenComponent, - // 如果 route.meta.menuVisibleWithForbidden = true - layoutMap, - pageMap, - }); -} - -export { generateAccess }; diff --git a/apps/web-contract/src/router/guard.ts b/apps/web-contract/src/router/guard.ts deleted file mode 100644 index b5f6bfd8..00000000 --- a/apps/web-contract/src/router/guard.ts +++ /dev/null @@ -1,262 +0,0 @@ -import type { Router } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { preferences } from '@vben/preferences'; -import { useAccessStore, useUserStore } from '@vben/stores'; -import { startProgress, stopProgress } from '@vben/utils'; - -import { useTitle } from '@vueuse/core'; - -import Apis from '#/api'; -import { $t } from '#/locales'; -import { coreRouteNames, dynamicRoutes } from '#/router/routes'; -import { useAuthStore } from '#/store'; - -import { generateAccess } from './access'; - -/** - * 通用守卫配置 - * @param router - */ -function setupCommonGuard(router: Router) { - // 记录已经加载的页面 - const loadedPaths = new Set(); - - router.beforeEach(async (to) => { - to.meta.loaded = loadedPaths.has(to.path); - - // 页面加载进度条 - if (!to.meta.loaded && preferences.transition.progress) { - startProgress(); - } - return true; - }); - - router.afterEach((to) => { - // 记录页面是否加载,如果已经加载,后续的页面切换动画等效果不在重复执行 - - if (preferences.tabbar.enable) { - loadedPaths.add(to.path); - } - - // 关闭页面加载进度条 - if (preferences.transition.progress) { - stopProgress(); - } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } - }); -} - -/** - * 匹配路径 - * permission.path = "/xx/edit" 但route.path = "/xx/edit/:id?" 这种情况,其中id可以为任意值,如meetingId roleId等, - */ -function matchPaths(routePath, permissionPath) { - const routeParts = routePath.path.split('/'); - const permissionParts = permissionPath.path.split('/'); - - if (routePath.name === permissionPath.id) { - return true; - } - - if (permissionParts.length > routeParts.length) { - return false; - } - - return routeParts.every((part, index) => { - return part === permissionParts[index] || part.startsWith(':'); - }); -} - -// 过滤路由,只保留第三个数据源配置的路由 -function filterRoutesByPermissions(routes, permissions, staticRouteKeys) { - const filteredRoutes = []; - for (const route of routes) { - // console.log('[ route ] >', route) - // console.log('[ permission.path ] >', permissions) - - const permission = permissions.find((permission) => - matchPaths(route, permission), - ); - - const isStaticRoute = staticRouteKeys.includes(route.name); - - if (permission || isStaticRoute) { - const newRoute = { ...route }; - if (permission) { - newRoute.meta = { - ...newRoute.meta, - title: permission.name, - }; - if (permission.order) { - newRoute.meta.order = permission.order; - } - } - if (route.children) { - newRoute.children = filterRoutesByPermissions( - route.children, - permissions, - staticRouteKeys, - ); - } - filteredRoutes.push(newRoute); - // console.log(JSON.parse(JSON.stringify(filteredRoutes))); - } - } - - return filteredRoutes; -} - -/** - * 权限访问守卫配置 - * @param router - */ -function setupAccessGuard(router: Router) { - router.beforeEach(async (to, from) => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const authStore = useAuthStore(); - - // 基本路由,这些路由不需要进入权限拦截 - if (coreRouteNames.includes(to.name as string)) { - if (to.path === LOGIN_PATH && accessStore.accessToken) { - return decodeURIComponent( - (to.query?.redirect as string) || DEFAULT_HOME_PATH, - ); - } - return true; - } - - // accessToken 检查 - if (!accessStore.accessToken) { - // 明确声明忽略权限访问权限,则可以访问 - if (to.meta.ignoreAccess) { - return true; - } - - // 没有访问权限,跳转登录页面 - if (to.fullPath !== LOGIN_PATH) { - return { - path: LOGIN_PATH, - // 如不需要,直接删除 query - query: { redirect: encodeURIComponent(to.fullPath) }, - // 携带当前跳转的页面,登录后重新跳转该页面 - replace: true, - }; - } - return to; - } - - // 是否已经生成过动态路由 - if (accessStore.isAccessChecked) { - return true; - } - - // 生成路由表 - // 当前登录用户拥有的角色标识列表 - const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); - const userRoles = userInfo.roles ?? []; - - // debugger - - // 二开,从统一授权获取菜单key值,遍历本地所有菜单进行添加 - - const staticRouteKeys = [ - 'Dashboard', - 'home', - 'User', - 'UserCenter', - 'UserTodo', - 'IFrame', - 'MeetingStandingBook', - 'MeetingStart', - 'DutyStandingBook', - 'ContractInfo', - ]; - - const r = await Apis.sys.user.functiontree.get_XTBGXT(); - let originRouters = r.rows[0].children; - // 提取数据的函数 - const extractData = (input: any[]) => { - const result: any[] = []; - function traverse(node: any) { - if (node.id && node.name) { - result.push({ - id: node.id, - path: node.remark, - name: node.name, - order: node.showOrder || 0, - }); - } - if (node.children && node.children.length > 0) { - for (const child of node.children) { - traverse(child); - } - } - } - - for (const node of input) { - traverse(node); - } - - return result; - }; - // console.log('originRouters', originRouters) - originRouters = extractData(originRouters); - // console.log('originRouters', originRouters) - - let finalRoutes = filterRoutesByPermissions( - dynamicRoutes, - originRouters, - staticRouteKeys, - ); - console.log(originRouters); - // console.log('finalRoutes', finalRoutes) - - // console.log('dynamicRoutes', dynamicRoutes) - // console.log('userInfo', userInfo) - - if (userInfo.accountId == 'Admin.itl' || userInfo._isSkip) { - finalRoutes = dynamicRoutes; - } - - // console.log(userInfo) - - // 生成菜单和路由 - const { accessibleMenus, accessibleRoutes } = await generateAccess({ - roles: userRoles, - router, - // 则会在菜单中显示,但是访问会被重定向到403 - routes: finalRoutes, - }); - // 保存菜单信息和路由信息 - accessStore.setAccessMenus(accessibleMenus); - accessStore.setAccessRoutes(accessibleRoutes); - accessStore.setIsAccessChecked(true); - const redirectPath = (from.query.redirect ?? to.fullPath) as string; - - return { - ...router.resolve(decodeURIComponent(redirectPath)), - replace: true, - }; - }); -} - -/** - * 项目守卫配置 - * @param router - */ -function createRouterGuard(router: Router) { - /** 通用 */ - setupCommonGuard(router); - /** 权限访问 */ - setupAccessGuard(router); -} - -export { createRouterGuard }; diff --git a/apps/web-contract/src/router/index.ts b/apps/web-contract/src/router/index.ts deleted file mode 100644 index 313b372b..00000000 --- a/apps/web-contract/src/router/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - createRouter, - createWebHashHistory, - createWebHistory, -} from 'vue-router'; - -import { resetStaticRoutes } from '@vben/utils'; - -import { createRouterGuard } from './guard'; -import { routes } from './routes'; - -/** - * @zh_CN 创建vue-router实例 - */ -const router = createRouter({ - history: - import.meta.env.VITE_ROUTER_HISTORY === 'hash' - ? createWebHashHistory(import.meta.env.VITE_BASE) - : createWebHistory(import.meta.env.VITE_BASE), - // 应该添加到路由的初始路由列表。 - routes, - scrollBehavior: () => ({ left: 0, top: 0 }), - // 是否应该禁止尾部斜杠。 - // strict: true, -}); - -const resetRoutes = () => resetStaticRoutes(router, routes); - -// 创建路由守卫 -createRouterGuard(router); - -export { resetRoutes, router }; diff --git a/apps/web-contract/src/router/routes/core.ts b/apps/web-contract/src/router/routes/core.ts deleted file mode 100644 index e5e29c51..00000000 --- a/apps/web-contract/src/router/routes/core.ts +++ /dev/null @@ -1,114 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { DEFAULT_HOME_PATH } from '@vben/constants'; - -import { AuthPageLayout, BasicLayout, IFrameView } from '#/layouts'; -import { $t } from '#/locales'; -import Login from '#/views/_core/authentication/login.vue'; - -/** 全局404页面 */ -const fallbackNotFoundRoute: RouteRecordRaw = { - component: () => import('#/views/_core/fallback/not-found.vue'), - meta: { - hideInBreadcrumb: true, - hideInMenu: true, - hideInTab: true, - title: '404', - }, - name: 'FallbackNotFound', - path: '/:path(.*)*', -}; - -/** 基本路由,这些路由是必须存在的 */ -const coreRoutes: RouteRecordRaw[] = [ - { - meta: { - title: 'Root', - }, - name: 'Root', - path: '/', - redirect: DEFAULT_HOME_PATH, - }, - { - component: AuthPageLayout, - props: { - toolbar: false, - }, - meta: { - title: 'Authentication', - }, - name: 'Authentication', - path: '/auth', - children: [ - { - name: 'Login', - path: 'login', - component: Login, - meta: { - title: $t('page.core.login'), - }, - }, - { - name: 'CodeLogin', - path: 'code-login', - component: () => import('#/views/_core/authentication/code-login.vue'), - meta: { - title: $t('page.core.codeLogin'), - }, - }, - { - name: 'QrCodeLogin', - path: 'qrcode-login', - component: () => - import('#/views/_core/authentication/qrcode-login.vue'), - meta: { - title: $t('page.core.qrcodeLogin'), - }, - }, - { - name: 'ForgetPassword', - path: 'forget-password', - component: () => - import('#/views/_core/authentication/forget-password.vue'), - meta: { - title: $t('page.core.forgetPassword'), - }, - }, - { - name: 'Register', - path: 'register', - component: () => import('#/views/_core/authentication/register.vue'), - meta: { - title: $t('page.core.register'), - }, - }, - ], - }, - { - component: IFrameView, - meta: { - icon: 'lucide:layout-dashboard', - order: 210, - title: 'iframe', - hideInMenu: true, - hideInTab: true, - }, - name: 'IFrame', - path: '/iframe', - children: [ - { - name: 'ContractInfo', - path: '/iframe/contract/info', - component: () => import('#/views/contract/iframe-info/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '合同明细信息', - }, - }, - ], - }, -]; - -export { coreRoutes, fallbackNotFoundRoute }; diff --git a/apps/web-contract/src/router/routes/index.ts b/apps/web-contract/src/router/routes/index.ts deleted file mode 100644 index a70c4875..00000000 --- a/apps/web-contract/src/router/routes/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { mergeRouteModules, traverseTreeValues } from '@vben/utils'; - -import { coreRoutes, fallbackNotFoundRoute } from './core'; - -const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { - eager: true, -}); - -// 有需要可以自行打开注释,并创建文件夹 -// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true }); - -/** 动态路由 */ -const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles); - -/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统 */ -// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); -const externalRoutes: RouteRecordRaw[] = []; - -/** 路由列表,由基本路由+静态路由组成 */ -const routes: RouteRecordRaw[] = [ - ...coreRoutes, - ...externalRoutes, - fallbackNotFoundRoute, -]; - -/** 基本路由列表,这些路由不需要进入权限拦截 */ -const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name); - -export { coreRouteNames, dynamicRoutes, routes }; diff --git a/apps/web-contract/src/router/routes/modules/contract.ts b/apps/web-contract/src/router/routes/modules/contract.ts deleted file mode 100644 index 0bb65c4d..00000000 --- a/apps/web-contract/src/router/routes/modules/contract.ts +++ /dev/null @@ -1,537 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - title: '合同配置', - }, - name: 'HTGLHTPZ', - path: '/contract/config', - children: [ - { - name: 'ContractConfigIndex', - path: '/contract/config', - component: () => import('#/views/contract/config/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '合同配置', - }, - }, - ], - }, - { - name: 'HTGLHTLX', - path: '/contract/approval', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同立项', - }, - children: [ - { - name: 'ContractApprovalEdit', - path: '/contract/approval/edit/:id?', - beforeEnter: (e) => { - console.log('e', e); - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/approval/edit'; - } - }, - component: () => import('#/views/contract/approval/edit/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '立项申报', - activePath: '/contract/approval/edit/:id?', - }, - }, - { - name: 'ContractApprovalList', - path: '/contract/approval/list', - component: () => import('#/views/contract/approval/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '立项编制', - }, - }, - { - name: 'ContractApprovalTodo', - path: '/contract/approval/todo', - component: () => import('#/views/contract/approval/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '立项提示', - }, - }, - - { - name: 'ContractApprovalSigningBasis', - path: '/contract/approval/signing-basis', - component: () => - import('#/views/contract/approval/signing-basis/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '签约依据维护', - }, - }, - ], - }, - { - name: 'HTGLHTXS', - path: '/contract/business', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同选商', - }, - children: [ - { - name: 'ContractBusinessEdit', - path: '/contract/business/edit/:id?', - component: () => import('#/views/contract/business/edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '选商填报', - activePath: '/contract/business/todo', - }, - }, - { - name: 'ContractBusinessResult', - path: '/contract/business/result/:id?', - component: () => import('#/views/contract/business/result/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '选商结果填报', - activePath: '/contract/business/todo', - }, - }, - - { - name: 'ContractBusinessList', - path: '/contract/business/list', - component: () => import('#/views/contract/business/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '选商编制', - }, - }, - { - name: 'ContractBusinessResultList', - path: '/contract/business/result-list', - component: () => - import('#/views/contract/business/result-list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '选商结果编制', - }, - }, - { - name: 'ContractBusinessTodo', - path: '/contract/business/todo', - component: () => import('#/views/contract/business/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '选商提示', - }, - }, - ], - }, - { - name: 'HTGLHTSB', - path: '/contract/declaration', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同申报', - }, - children: [ - { - name: 'ContractDeclarationEdit', - path: '/contract/declaration/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/declaration/edit'; - } - }, - component: () => import('#/views/contract/declaration/edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '申报填报', - activePath: '/contract/declaration/todo', - }, - }, - { - name: 'ContractDeclarationList', - path: '/contract/declaration/list', - component: () => import('#/views/contract/declaration/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '申报编制', - }, - }, - { - name: 'ContractDeclarationTodo', - path: '/contract/declaration/todo', - component: () => import('#/views/contract/declaration/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '申报提示', - }, - }, - - { - name: 'ContractDeclarationPrint', - path: '/contract/declaration/print', - component: () => import('#/views/contract/declaration/print/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '合同打印', - }, - }, - ], - }, - // { - // name: 'ContractAudit', - // path: '/contract/audit', - // component: BasicLayout, - // meta: { - // icon: 'lucide:area-chart', - // title: '合同审批', - // }, - // children: [ - // { - // name: 'ContractAuditTodo', - // path: '/contract/audit/todo', - // component: () => import('#/views/contract/audit/todo/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '审批提示', - // }, - // }, - // { - // name: 'ContractAuditList', - // path: '/contract/audit/list', - // component: () => import('#/views/contract/audit/list/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '审批查询', - // }, - // }, - // ], - // }, - { - name: 'HTGLHTQD', - path: '/contract/sign', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同签订', - }, - children: [ - { - name: 'ContractSignEdit', - path: '/contract/sign/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/sign/edit'; - } - }, - component: () => import('#/views/contract/sign/edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '签订填报', - activePath: '/contract/sign/todo', - }, - }, - { - name: 'ContractSignList', - path: '/contract/sign/list', - component: () => import('#/views/contract/sign/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '签订编制', - }, - }, - { - name: 'ContractSignTodo', - path: '/contract/sign/todo', - component: () => import('#/views/contract/sign/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '签订提示', - }, - }, - ], - }, - { - name: 'HTGLHTLVX', - path: '/contract/perform', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同履行', - }, - children: [ - { - name: 'ContractPerformEdit', - path: '/contract/perform/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/perform/edit'; - } - }, - component: () => import('#/views/contract/perform/edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '履行填报', - activePath: '/contract/perform/todo', - }, - }, - { - name: 'ContractPerformList', - path: '/contract/perform/list', - component: () => import('#/views/contract/perform/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '履行编制', - }, - }, - { - name: 'ContractPerformTodo', - path: '/contract/perform/todo', - component: () => import('#/views/contract/perform/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '履行提示', - }, - }, - { - name: 'ContractPerformResult', - path: '/contract/perform/result', - component: () => import('#/views/contract/perform/result/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '履行结果填报', - }, - }, - { - name: 'ContractPerformResultList', - path: '/contract/perform/resultList', - component: () => - import('#/views/contract/perform/result-list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '履行结果编制', - }, - }, - { - name: 'ContractPerformTemporaryArchive', - path: '/contract/perform/temporary-archive', - component: () => - import('#/views/contract/perform/temporary-archive/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '临时归档', - }, - }, - ], - }, - { - name: 'HTGLHTGD', - path: '/contract/archive', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同归档', - }, - children: [ - { - name: 'ContractArchiveTodoArchive', - path: '/contract/archive/todo/archive', - component: () => - import('#/views/contract/archive/todo/archive/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '合同归档', - }, - }, - { - name: 'ContractArchiveTodoRetracement', - path: '/contract/archive/todo/retracement', - component: () => - import('#/views/contract/archive/todo/retracement/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '合同回档', - }, - }, - { - name: 'ContractArchiveList', - path: '/contract/archive/list', - component: () => import('#/views/contract/archive/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '归档查询', - }, - }, - ], - }, - { - name: 'HTGLHTQYSQ', - path: '/contract/sign-authorization', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '签约授权管理', - }, - children: [ - { - name: 'ContractSignAuthorizationEdit', - path: '/contract/sign-authorization/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/sign-authorization/edit'; - } - }, - component: () => - import('#/views/contract/sign-authorization/edit/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '签约授权申报', - activePath: '/contract/sign-authorization/edit/:id?', - }, - }, - { - name: 'ContractSignAuthorizationList', - path: '/contract/sign-authorization/list', - component: () => - import('#/views/contract/sign-authorization/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '签约授权查询', - }, - }, - ], - }, - { - name: 'HTGLHTXDR', - path: '/contract/company', - component: BasicLayout, - meta: { - icon: 'lucide:area-chart', - title: '合同相对人', - }, - children: [ - { - name: 'ContractCompanyEdit', - path: '/contract/company/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/contract/company/edit'; - } - }, - component: () => import('#/views/contract/company/edit/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '相对人录入维护', - activePath: '/contract/company/edit/:id?', - }, - }, - { - name: 'ContractCompanyList', - path: '/contract/company/list', - component: () => import('#/views/contract/company/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '相对人查询', - }, - }, - ], - }, - // { - // name: 'ContractStatistic', - // path: '/contract/statistic', - // meta: { - // icon: 'lucide:area-chart', - // title: '统计分析', - // }, - // children: [ - // { - // name: 'ContractStatisticAnalysis', - // path: '/contract/statistic/analysis', - // beforeEnter: (e) => { - // if (e.params.id && e.params.id === ':id') { - // e.params.id = '' - // e.fullPath = '/contract/company/edit' - // } - // }, - // component: () => import('#/views/contract/company/edit/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '统计分析', - // }, - // }, - // { - // name: 'ContractStatisticAbrogateList', - // path: '/contract/statistic/abrogate-list', - // component: () => import('#/views/contract/company/list/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '废除查询', - // }, - // }, - - // ], - // }, - // { - // name: 'ContractPrint', - // path: '/contract/statistic', - // meta: { - // icon: 'lucide:area-chart', - // title: '统计分析', - // }, - // children: [ - // { - // name: 'ContractPrintBusiness', - // path: '/contract/print/business', - // component: () => import('#/views/contract/company/edit/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '统计分析', - // }, - // }, - // { - // name: 'ContractPrintAbrogateList', - // path: '/contract/print/abrogate-list', - // component: () => import('#/views/contract/company/list/index.vue'), - // meta: { - // icon: 'lucide:area-chart', - // title: '废除查询', - // }, - // }, - - // ], - // }, -]; - -export default routes; diff --git a/apps/web-contract/src/router/routes/modules/dashboard.ts b/apps/web-contract/src/router/routes/modules/dashboard.ts deleted file mode 100644 index c83eeb0b..00000000 --- a/apps/web-contract/src/router/routes/modules/dashboard.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: -1, - title: '首页', - }, - name: 'Dashboard', - path: '/home', - children: [ - { - name: 'home', - path: '/home', - component: () => import('#/views/dashboard/home/index.vue'), - meta: { - affixTab: true, - hideInMenu: true, - icon: 'lucide:area-chart', - title: '首页', - }, - }, - // { - // name: 'Analytics', - // path: '/analytics', - // component: () => import('#/views/dashboard/analytics/index.vue'), - // meta: { - // affixTab: true, - // icon: 'lucide:area-chart', - // title: $t('page.dashboard.analytics'), - // }, - // }, - // { - // name: 'Workspace', - // path: '/workspace', - // component: () => import('#/views/dashboard/workspace/index.vue'), - // meta: { - // title: $t('page.dashboard.workspace'), - // }, - // }, - ], - }, -]; - -export default routes; diff --git a/apps/web-contract/src/router/routes/modules/system.ts b/apps/web-contract/src/router/routes/modules/system.ts deleted file mode 100644 index 5146406c..00000000 --- a/apps/web-contract/src/router/routes/modules/system.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 10, - title: '系统管理', - }, - name: 'System', - path: '/system', - children: [ - { - name: 'Dict', - path: '/system/dict', - component: () => import('#/views/system/dict/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '字典管理', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-contract/src/router/routes/modules/ucenter.ts b/apps/web-contract/src/router/routes/modules/ucenter.ts deleted file mode 100644 index 2cc9b060..00000000 --- a/apps/web-contract/src/router/routes/modules/ucenter.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - hideInMenu: true, - icon: 'lucide:layout-dashboard', - order: -1, - title: '用户中心', - }, - name: 'User', - path: '/user', - children: [ - { - name: 'UserTodo', - path: '/user/todo', - component: () => import('#/views/user-center/todo/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '消息通知', - }, - }, - { - name: 'UserCenter', - path: '/user/center', - component: () => import('#/views/user-center/center/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '个人中心', - }, - }, - { - name: 'About', - path: '/about', - component: () => import('#/views/_core/about/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '关于', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-contract/src/store/auth.ts b/apps/web-contract/src/store/auth.ts deleted file mode 100644 index 972a6280..00000000 --- a/apps/web-contract/src/store/auth.ts +++ /dev/null @@ -1,130 +0,0 @@ -import type { LoginAndRegisterParams } from '@vben/common-ui'; -import type { UserInfo } from '@vben/types'; - -import { ref } from 'vue'; -import { useRouter } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores'; - -import { notification } from 'ant-design-vue'; -import { defineStore } from 'pinia'; - -import { getUserInfoApi, loginApi } from '#/api/system/auth'; -import { $t } from '#/locales'; - -export const useAuthStore = defineStore('auth', () => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const router = useRouter(); - - const loginLoading = ref(false); - let loginInfo = localStorage.getItem('loginInfo') || '{}'; - /** - * 异步处理登录操作 - * Asynchronously handle the login process - * @param params 登录表单数据 - */ - async function authLogin( - params: LoginAndRegisterParams, - onSuccess?: () => Promise | void, - ) { - // 异步处理用户登录操作并获取 accessToken - let userInfo: null | UserInfo = null; - try { - loginLoading.value = true; - if (params.username == 'Admin.itl' || params._isSkip) { - } else { - params.username = `${params.username}.RL`; - } - - const loginRes = await loginApi({ - ...params, - appId: 'HTGL', - appName: '合同管理系统', - appSecret: 'r1og4wiyrrvr4qvw2aafhgvy', - }); - console.log(loginRes); - if (params._isSkip) { - loginRes._isSkip = params._isSkip; - } - - loginInfo = JSON.stringify(loginRes); - localStorage.setItem('loginInfo', loginInfo); - - const { accessToken } = loginRes; - // 如果成功获取到 accessToken - if (accessToken) { - accessStore.setAccessToken(accessToken); - - // 获取用户信息并存储到 accessStore 中 - const [fetchUserInfoResult] = await Promise.all([fetchUserInfo()]); - - userInfo = fetchUserInfoResult; - if (params._isSkip) { - userInfo._isSkip = params._isSkip; - } - userStore.setUserInfo(userInfo); - - if (accessStore.loginExpired) { - accessStore.setLoginExpired(false); - } else { - onSuccess - ? await onSuccess?.() - : await router.push(userInfo.homePath || DEFAULT_HOME_PATH); - } - - if (userInfo?.realName) { - notification.success({ - description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`, - duration: 3, - message: $t('authentication.loginSuccess'), - }); - } - } - } finally { - loginLoading.value = false; - } - - return { - userInfo, - }; - } - - async function logout(redirect: boolean = true) { - // await logoutApi(); - resetAllStores(); - accessStore.setLoginExpired(false); - - // 回登陆页带上当前路由地址 - await router.replace({ - path: LOGIN_PATH, - query: redirect - ? { - redirect: encodeURIComponent(router.currentRoute.value.fullPath), - } - : {}, - }); - } - - async function fetchUserInfo() { - let userInfo: null | UserInfo = null; - userInfo = await getUserInfoApi(); - userInfo = { ...JSON.parse(loginInfo), ...userInfo }; - userStore.setUserInfo(userInfo); - return userInfo; - } - - function $reset() { - localStorage.removeItem('loginInfo'); - loginLoading.value = false; - } - - return { - $reset, - authLogin, - fetchUserInfo, - loginLoading, - logout, - }; -}); diff --git a/apps/web-contract/src/store/dict.ts b/apps/web-contract/src/store/dict.ts deleted file mode 100644 index a83f8ae9..00000000 --- a/apps/web-contract/src/store/dict.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { computed, ref } from 'vue'; - -import { defineStore } from 'pinia'; - -// import { getDictDataList } from '@/api/system/dict'; -import Apis from '#/api'; -import dataModule from '#/utils/dict/static.data'; - -const DICT_STORAGE_KEY = 'DICT_KEY'; - -interface DictDataVO { - dictType: string; - label: string; - value: null | number | string; - colorType: string; - cssClass: string; -} - -export const useDictStore = defineStore('app-dict', () => { - /** 是否初始化字典,是的话每次应用自动加载,后续走缓存,否的话每次请求 */ - const initDict = ref(true); - /** 字典合集,仅initDict为true时生效 */ - const dictMap = ref>({}); - /** 是否已设置字典合集,仅initDict为true时生效 */ - const isSetDict = ref(false); - /** 每次新查询字典时的查询缓存,单位:秒 主要用于循环获取数据显示label的场景,建议不低于10s */ - const expireAfterSeconds = ref(30); - - /** 获取所有字典数据 */ - const getDictMap = computed(() => dictMap.value); - /** 判断是否已设置字典表 */ - const getIsSetDict = computed(() => isSetDict.value); - - /** - * 设置字典信息 - * - * @returns - */ - const setDictMap = async (): Promise => { - try { - // 模拟网络请求 - // await new Promise((resolve) => setTimeout(resolve, 2000)); - - const data = await Apis.dictData.get_page({ - params: { pageNum: 1, pageSize: 10_000 }, - }); - const dictDataMap: Record = {}; - // 处理静态字典数据 - Object.keys(dataModule).forEach((dictType) => { - const dictEntries = dataModule[dictType]; - dictEntries.data.forEach((dictData) => { - dictData.type = dictType; - - if (!dictDataMap[dictType]) { - dictDataMap[dictType] = []; - } - dictDataMap[dictType].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData, - } as DictDataVO); - }); - }); - - // 处理动态字典数据 - data?.rows.forEach((dictData: any) => { - if (!dictDataMap[dictData.type]) dictDataMap[dictData.type] = []; - dictDataMap[dictData.type].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData, - } as DictDataVO); - }); - - console.log('[ dictDataMap ] >', dictDataMap); - dictMap.value = dictDataMap; - isSetDict.value = true; - return true; - } catch (error) { - console.error('字典数据获取失败:', error); - return false; - } - }; - - /** 获取字典数据 输入字典数组,输出包含对应类型的字典对象 */ - const getDictData = async ( - dictTypeArr: string[], - ): Promise> => { - const newDictMap: Record = {}; - - return await new Promise((resolve) => { - if ( - initDict.value && - isSetDict.value && - Object.keys(dictMap.value).length > 0 - ) { - dictTypeArr.forEach((dictType) => { - newDictMap[dictType] = dictMap.value[dictType] || []; - }); - resolve(newDictMap); - } - - // if (!isSetDict.value) { - // console.warn('字典数据尚未加载,正在等待...'); - - // const checkInterval = setInterval(() => { - // console.warn('字典数据加载中...'); - - // if (isSetDict.value) { - // console.warn('字典数据完成.'); - // clearInterval(checkInterval); - // dictTypeArr.forEach((dictType) => { - // newDictMap[dictType] = dictMap.value[dictType] || []; - // }); - // resolve(newDictMap); - // } - // }, 45); - // } - - // try { - // return {}; - // } catch (error) { - // console.error('getDictMap 函数报错:', error); - // return {}; - // } - resolve(newDictMap); - }); - }; - - /** - * 获取指定类型的具体的某个字典数据信息,数据默认会存在30秒缓存,以备快速使用 - * - * @returns Array - */ - const getDictInfo = async (dictType: string): Promise => { - const StorageKey = `${DICT_STORAGE_KEY}:${dictType}`; - try { - localStorage.setItem(StorageKey, JSON.stringify(dictMap.value)); - const dictDataMap = (await getDictData([dictType])) || {}; - setTimeout(() => { - localStorage.removeItem(StorageKey); - }, expireAfterSeconds.value * 1000); - return JSON.parse(JSON.stringify(dictDataMap[dictType])) || []; - } catch (error) { - console.error('getDictInfo函数报错:', error); - return []; - } - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataInfo = async ( - dictType: string, - value: string, - ): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - return ( - dictDataMap.find((item) => item.value === value) || ({} as DictDataVO) - ); - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataLabel = async ( - dictType: string, - value: string, - ): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - const info = - dictDataMap.find((item) => item.value === value) || ({} as DictDataVO); - return info.label; - }; - - function $reset() { - // loginLoading.value = false; - } - - return { - initDict, - dictMap, - isSetDict, - expireAfterSeconds, - getDictMap, - getIsSetDict, - setDictMap, - getDictData, - getDictInfo, - getDictDataInfo, - getDictDataLabel, - $reset, - }; -}); diff --git a/apps/web-contract/src/store/index.ts b/apps/web-contract/src/store/index.ts deleted file mode 100644 index f8a40031..00000000 --- a/apps/web-contract/src/store/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './auth'; -export * from './dict' diff --git a/apps/web-contract/src/utils/dict/index.ts b/apps/web-contract/src/utils/dict/index.ts deleted file mode 100644 index 78afc682..00000000 --- a/apps/web-contract/src/utils/dict/index.ts +++ /dev/null @@ -1,226 +0,0 @@ -/** 数据字典工具类 */ -import { computed } from 'vue'; - -import Apis from '#/api'; -import { useDictStore } from '#/store/dict'; -import dataModule from '#/utils/dict/static.data'; - -export * from './shared'; - -const dictStore = useDictStore(); - -const dictData = computed(() => { - return dictStore.dictMap; -}); - -/** - * 获取 dictType 对应的数据字典数组 - * - * @param dictType 数据类型 - * @returns {any | Array} 数据字典数组 - */ -export interface DictDataType { - dictType?: string; - label: string; - value: boolean | null | number | string; - key?: any; - colorType?: string; - cssClass?: string; - isDefault?: boolean; -} - -export interface DictDataOptions { - label?: any; - value?: null | number | string; -} - -export function getDictDatas(dictType: string) { - return dictData.value[dictType] || []; -} - -export function getDictOpts(dictType: string) { - /** - * 这里原来是转换类型 转换类型后反而显示不出来正确的Tag 实际类型转换交给下面的getDictOptions来处理 - * - * bugfix: dictOption.push({ ...dict, value: parseInt(dict.value + '') }) 原来的这种写法是造成页面卡死的原因 - */ - return getDictDatas(dictType); -} - -export async function getDictDatasAsync( - dictTypeParams: { type: string; valueType?: string }[], -) { - const dictDataMap: Record = {}; - const foundTypes = new Set(); - - // 处理静态字典数据 - for (const dictType of Object.keys(dataModule)) { - const dictParam = dictTypeParams.find((d) => d.type === dictType); - if (dictParam) { - const dictEntries = dataModule[dictType]; - if (dictEntries && dictEntries.data && dictEntries.data.length > 0) { - dictEntries.data.forEach((dictData) => { - dictData.type = dictType; - - if (!dictDataMap[dictType]) { - dictDataMap[dictType] = []; - } - dictDataMap[dictType].push({ - ...dictData, - value: dictData.value, - label: dictData.label, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - } as DictDataType); - }); - foundTypes.add(dictType); - } - // 如果所有类型都已找到,提前返回 - if (foundTypes.size === dictTypeParams.length) { - return dictDataMap; - } - } - } - - // 并行获取远程字典数据 - const promises = dictTypeParams.map(async ({ type, valueType }) => { - if (!foundTypes.has(type)) { - try { - const data = await Apis.dictData.get_page({ - params: { type }, - }); - dictDataMap[type] = (data.rows || []).map((dictData: any) => ({ - value: convertValue(dictData.value, valueType), - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - })); - } catch (error) { - console.error(`Failed to fetch data for type ${type}:`, error); - } - } - }); - - await Promise.all(promises); - return dictDataMap; -} - -export function getDictOptions( - dictType: string, - valueType?: 'boolean' | 'number' | 'string', -): any[] { - const dictOption: DictDataType[] = []; - valueType ||= 'string'; - - const dictOptions: DictDataType[] = dictData.value[dictType] || []; - if (dictOptions && dictOptions.length > 0) { - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - key: dict.value, - value: convertValue(dict.value, valueType), - }); - }); - } - - return dictOption; -} - -function convertValue(value, type) { - switch (type) { - case 'boolean': { - return value === 'true'; - } - case 'number': { - return Number.parseInt(value, 10); - } - case 'string': { - return String(value); - } - default: { - return value; - } - } -} -export async function getDictOptionsAsync( - dictType: string, - valueType: 'boolean' | 'number' | 'string' = 'string', -): Promise { - try { - const response = await getDictDatasAsync([ - { type: dictType, valueType: valueType }, - ]); - const dictOptions: DictDataType[] = response[dictType] || []; - - return dictOptions.map((dict: DictDataType) => ({ - ...dict, - key: dict.value, - value: convertValue(dict.value, valueType), - })); - } catch (error) { - console.error('Error fetching dictionary data:', error); - return []; - } -} - -/** 获取指定 value 的字典数据 */ -export function getDictObj(dictType: string, value: any): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - if (dictOptions) { - if (value) { - return ( - dictOptions.find( - (dict: DictDataType) => dict.value === value.toString(), - ) || null - ); - } - return null; - } else { - return null; - } -} - -/** 获取指定 value 的字典数据 */ -export function getDictObjByOptions( - options: DictDataType[], - value: any, -): DictDataType | null { - if (options) { - if (value) { - const result = options.find((dict: DictDataType) => dict.value === value); - return result || null; - } - return null; - } else { - return null; - } -} - -/** 获取指定 value 的字典数据 */ -export async function getDictObjAsync( - dictType: string, - value: any, -): Promise { - const dictOptions = await getDictOptionsAsync(dictType); - if (dictOptions) { - if (value) { - return ( - dictOptions.find( - (dict: DictDataType) => dict.value === value.toString(), - ) || null - ); - } - return null; - } else { - return null; - } -} - -/** 获取字典默认数据 */ -export function getDictDefaultObj(dictType: string): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - return dictOptions - ? dictOptions.find((dict: DictDataType) => dict.isDefault == '1') || - dictOptions[0] - : null; -} diff --git a/apps/web-contract/src/utils/dict/shared.ts b/apps/web-contract/src/utils/dict/shared.ts deleted file mode 100644 index e759b25b..00000000 --- a/apps/web-contract/src/utils/dict/shared.ts +++ /dev/null @@ -1,61 +0,0 @@ -export enum DICT_TYPE { - /** 系统通用状态 */ - sys_normal_disable = 'sys_normal_disable', - /** 合同管理-资金流向 */ - contract_fund_flow = 'contract_fund_flow', - /** 合同管理-资金渠道 */ - contract_funding_source = 'contract_funding_source', - /** 合同管理-组织形式 */ - contract_organization_form = 'contract_organization_form', - /** 合同管理-币种单位 */ - contract_currency_unit = 'contract_currency_unit', - /** 合同管理-合同模块 */ - contract_module = 'contract_module', - /** 合同管理-选商方式 */ - contract_selection_method = 'contract_selection_method', - /** 合同管理-合同审批 */ - contract_approval = 'contract_approval', - /** 合同管理-履行状态 */ - contract_performance_status = 'contract_performance_status', - /** 合同管理-授权类型 */ - contract_authorization_type = 'contract_authorization_type', - /** 合同管理-项目类型 */ - contract_project_type = 'contract_project_type', - /** 合同管理-商务计价方式 */ - contract_price_style = 'contract_price_style', - /** 综合管理-项目管理 */ - comprehensive_project = 'comprehensive_project', - /** 综合管理-项目名称管理 */ - comprehensive_project_name = 'comprehensive_project_name', - comprehensive_config = 'comprehensive_config', - /** 合同管理-签约依据类型 */ - contract_basis_type = 'contract_basis_type', - /** 合同管理-合同相对人性质 */ - counterparty_nature = 'counterparty_nature', - /** 变更原因 */ - cancel_reson = 'cancel_reson', - /** 划分标段 */ - section_type = 'section_type', - /** 标段数 */ - section_num = 'section_num', - /** 常用是否 */ - common_whether = 'common_whether', - /** 履行期限 */ - deadline_for_performance = 'deadline_for_performance', - /** 纠纷解决方式 */ - dispute_settlement_methods = 'dispute_settlement_methods', - /** 付款性质 */ - payment_nature = 'payment_nature', - /** 合同立项节点流程 */ - contract_approval_flow_node = 'contract_approval_flow_node', - /** 合同选商节点流程 */ - contract_business_flow_node = 'contract_business_flow_node', - /** 合同立项节点流程 */ - contract_abolish_flow_node = 'contract_abolish_flow_node', - /** 合同授权类型 */ - contract_authorization_type2 = 'contract_authorization_type2', - /** 合同授权期限 */ - contract_authorization_period = 'contract_authorization_period', - /** 合同待办类型 */ - contract_todo_type = 'contract_todo_type' -} diff --git a/apps/web-contract/src/utils/dict/static.data.js b/apps/web-contract/src/utils/dict/static.data.js deleted file mode 100644 index a499c971..00000000 --- a/apps/web-contract/src/utils/dict/static.data.js +++ /dev/null @@ -1,123 +0,0 @@ -const createEntry = (annotation = '', data = []) => ({ - annotation, - data, -}); - -export default { - sys_normal_disable: createEntry('系统通用状态'), - contract_fund_flow: createEntry('合同管理-资金流向'), - contract_funding_source: createEntry('合同管理-资金渠道'), - contract_organization_form: createEntry('合同管理-组织形式'), - contract_currency_unit: createEntry('合同管理-币种单位'), - contract_module: createEntry('合同管理-合同模块'), - contract_selection_method: createEntry('合同管理-选商方式'), - contract_approval: createEntry('合同管理-合同审批'), - contract_performance_status: createEntry('合同管理-履行状态'), - contract_authorization_type: createEntry('合同管理-授权类型'), - contract_project_type: createEntry('合同管理-项目类型'), - contract_price_style: createEntry('合同管理-商务计价方式'), - - comprehensive_project: createEntry('综合管理-项目管理'), - comprehensive_project_name: createEntry('综合管理-项目名称管理'), - comprehensive_config: createEntry(), - - contract_basis_type: createEntry('合同管理-签约依据类型'), - - counterparty_nature: createEntry('合同管理-合同相对人性质'), - - cancel_reson: createEntry('变更原因', [ - { label: '未填写原因', value: '0' }, - { label: '用户取消', value: '1' }, - { label: '系统取消', value: '2' }, - { label: '其他原因', value: '3' }, - ]), - - section_type: createEntry('划分标段', [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ]), - - section_num: createEntry('标段数', [ - { label: '1', value: '1' }, - { label: '2', value: '2' }, - { label: '3', value: '3' }, - { label: '4', value: '4' }, - { label: '5', value: '5' }, - { label: '6', value: '6' }, - { label: '7', value: '7' }, - { label: '8', value: '8' }, - ]), - - common_whether: createEntry('常用是否', [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ]), - - deadline_for_performance: createEntry('履行期限', [ - { label: '确定', value: '1' }, - { label: '不确定', value: '0' }, - ]), - - dispute_settlement_methods: createEntry('纠纷解决方式', [ - { label: '诉讼', value: '1' }, - { label: '仲裁', value: '2' }, - { label: '其它', value: '3' }, - ]), - - payment_nature: createEntry('付款性质', [ - { label: '结算款', value: '1' }, - { label: '其它', value: '3' }, - ]), - - contract_approval_flow_node: createEntry('合同立项节点流程', [ - { label: '开始节点', value: 'paStart' }, - { label: '立项编制', value: 'paEdit' }, - { label: '立项审批中', value: 'paApproval' }, - { label: '选商编制', value: 'smEdit' }, - { label: '选商审批中', value: 'smApproval' }, - { label: '选商结果编制', value: 'smrEdit' }, - { label: '结束', value: 'end' }, - ]), - - contract_business_flow_node: createEntry('合同选商节点流程', [ - { label: '开始节点', value: 'smStart' }, - { label: '待编制', value: 'smEdit' }, - { label: '待部门自审', value: 'smDepartmentAudit' }, - { label: '待计划规划部审查', value: 'smPlanningDepartment' }, - { label: '待财务资产部审查', value: 'smFinancialDepartment' }, - { label: '待合规审查(企管法规部)', value: 'smRegulationDepartment' }, - { label: '待主管领导审批', value: 'smManager' }, - { label: '待公司领导审核', value: 'smLeaders' }, - { label: '选商结果填报', value: 'smrEdit' }, - { label: '结束', value: 'end' }, - ]), - - contract_abolish_flow_node: createEntry('合同立项节点流程', [ - { label: '待提交', value: 'edit' }, - { label: '待部门审核', value: 'departmentAudit' }, - { label: '已结束', value: 'end' }, - { label: '废除', value: 'abolishEdit' }, - ]), - - // 授权类型 - contract_authorization_type2: createEntry('合同授权类型', [ - { label: '长期授权', value: '0' }, - { label: '单项授权', value: '1' }, - ]), - - // 授权期限 - contract_authorization_period: createEntry('合同授权期限', [ - { label: '确定', value: '0' }, - { label: '不确定', value: '1' }, - ]), - - // 合同待办类型 - contract_todo_type: createEntry('合同待办类型', [ - { label: '合同立项', value: 'contractSetup' }, - { label: '合同选商', value: 'selectMerchant' }, - { label: '合同申报', value: 'contractDeclare' }, - { label: '合同签订', value: 'contractSign' }, - { label: '合同履行', value: 'contractPerform' }, - { label: '合同归档', value: 'contractFile' }, - ]), -}; diff --git a/apps/web-contract/src/utils/file.ts b/apps/web-contract/src/utils/file.ts deleted file mode 100644 index 5937ad8e..00000000 --- a/apps/web-contract/src/utils/file.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { message, type UploadProps } from "ant-design-vue"; -import Apis from '#/api'; - -export class FileUploader { - - - fileList = [] as UploadProps['fileList']; - uploading = false; - constructor(params: any) { - - } - - select = async (fileUuids: string) => { - return new Promise(async (resolve, reject) => { - Apis.attachment.get_list({ - params: { uuid: fileUuids } - }).then((data) => { - let files = [] as UploadProps['fileList']; - for (const element of data.rows) { - files?.push({ - uid: element.fileUuid, - name: element.fileName, - status: 'done', - url: element.fileUrl, - }) - } - resolve(files) - }).catch(e => { - reject() - }) - }) - } - - remove: UploadProps['onRemove'] = file => { - if (this.fileList) { - const index = this.fileList.indexOf(file); - const newFileList = this.fileList.slice(); - newFileList.splice(index, 1); - this.fileList = newFileList; - } - }; - - upload = async (files?: UploadProps['fileList'], data?: any) => { - return new Promise(async (resolve, reject) => { - if (this.fileList) { - const formData = new FormData(); - - if (data && Object.keys(data).length) { - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - } - - let file = files ? files : this.fileList; - let alreadyUploaded = [] as string[]; - file.forEach((file: UploadProps['fileList'][number]) => { - if (file.originFileObj) { - formData.append('files', file.originFileObj as any); - } else { - alreadyUploaded.push(file.uid) - } - }); - this.uploading = true; - - // You can use any AJAX library you like - try { - - this.fileList = []; - this.uploading = false; - let files = [] - for (const element of alreadyUploaded) { - files.push({ - fileUuid: element, - }) - } - - const filesCount = formData.getAll('files').length; - if (filesCount > 0) { - let data = await Apis.attachment.post_uploads({ - data: formData, - }) - files = files.concat(data.rows) - message.success('上传成功.'); - } - resolve(files || []) - - } catch (error) { - this.uploading = false; - reject() - message.error('上传失败.'); - } finally { - this.uploading = false; - } - - } - reject() - }); - - }; - -} diff --git a/apps/web-contract/src/utils/index.ts b/apps/web-contract/src/utils/index.ts deleted file mode 100644 index c297a8d1..00000000 --- a/apps/web-contract/src/utils/index.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { h, unref } from 'vue'; -import type { App, Component, Plugin } from 'vue'; -import { cloneDeep, isObject } from 'lodash-es'; - - -/** 递归组装菜单格式 */ -export function generatorMenu(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name, - icon: isRoot ? item.meta?.icon : info.meta?.icon - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = generatorMenu(info.children); - } - return currentMenu; - }); -} - -/** 混合菜单 */ -export function generatorMenuMix(routerMap: Array, routerName: string, location: string) { - const cloneRouterMap = cloneDeep(routerMap); - const newRouter = filterRouter(cloneRouterMap); - if (location === 'header') { - const firstRouter: any[] = []; - newRouter.forEach(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - info.children = undefined; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - firstRouter.push(currentMenu); - }); - return firstRouter; - } - return getChildrenRouter(newRouter.filter(item => item.name === routerName)); -} - -/** 递归组装子菜单 */ -export function getChildrenRouter(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = getChildrenRouter(info.children); - } - return currentMenu; - }); -} - -/** 判断根路由 Router */ -export function isRootRouter(item) { - return item.meta?.alwaysShow != true && item?.children?.filter(item => !item?.meta?.hidden)?.length === 1; -} - -export const withInstall = (component: T, alias?: string) => { - const comp = component as any; - comp.install = (app: App) => { - app.component(comp.name || comp.displayName, component); - if (alias) { - app.config.globalProperties[alias] = component; - } - }; - return component as T & Plugin; -}; - -/** 找到对应的节点 */ -let result = null; -export function getTreeItem(data: any[], key?: string | number): any { - data.map(item => { - if (item.key === key) { - result = item; - } else if (item.children && item.children.length) { - getTreeItem(item.children, key); - } - }); - return result; -} - -/** 找到所有节点 */ -const treeAll: any[] = []; -export function getTreeAll(data: any[]): any[] { - data.map(item => { - treeAll.push(item.key); - if (item.children && item.children.length) { - getTreeAll(item.children); - } - }); - return treeAll; -} - -// dynamic use hook props -export function getDynamicProps(props: T): Partial { - const ret: Recordable = {}; - - Object.keys(props).map(key => { - ret[key] = unref((props as Recordable)[key]); - }); - - return ret as Partial; -} - -export function deepMerge(src: any = {}, target: any = {}): T { - let key: string; - for (key in target) { - src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]); - } - return src; -} - -/** - * Sums the passed percentage to the R, G or B of a HEX color - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed part of the color - */ -function addLight(color: string, amount: number) { - const cc = Number.parseInt(color, 16) + amount; - const c = cc > 255 ? 255 : cc; - return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`; -} - -/** - * Lightens a 6 char HEX color according to the passed percentage - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed color represented as HEX - */ -export function lighten(color: string, amount: number) { - color = color.includes('#') ? color.substring(1, color.length) : color; - amount = Math.trunc((255 * amount) / 100); - return `#${addLight(color.substring(0, 2), amount)}${addLight( - color.substring(2, 4), - amount - )}${addLight(color.substring(4, 6), amount)}`; -} - -/** 判断是否 url */ -export function isUrl(url: string) { - return /^(http|https):\/\//g.test(url); -} - -/** - * 数组结构转树形结构 - * - * @param {Array} arrayData 数据源 - * @param {Object} treeProps 树结构配置 { id:"_id", parent_id:"parent_id", - * children:"children",need_field:["_id","name"],deleteParentId:true } - * @returns {Array} treeData 树形结构 - */ -export function arrayToTree(originalArrayData, treeProps) { - const arrayData = cloneDeep(originalArrayData); - let { id = '_id', parent_id = 'parent_id', children = 'children', deleteParentId = false, need_field } = treeProps; - const result = []; - const temp = {}; - for (let i = 0; i < arrayData.length; i++) { - temp[arrayData[i][id]] = arrayData[i]; // 以id作为索引存储元素,可以无需遍历直接定位元素 - } - for (let j = 0; j < arrayData.length; j++) { - const currentElement = arrayData[j]; - const newCurrentElement = {}; - if (need_field) { - need_field = uniqueArr(need_field.concat([id, parent_id, children])); - for (const keyName in currentElement) { - if (!need_field.includes(keyName)) { - delete currentElement[keyName]; - } - } - } - const tempCurrentElementParent = temp[currentElement[parent_id]]; // 临时变量里面的当前元素的父元素 - if (tempCurrentElementParent) { - // 如果存在父元素 - if (!tempCurrentElementParent[children]) { - // 如果父元素没有chindren键 - tempCurrentElementParent[children] = []; // 设上父元素的children键 - } - if (deleteParentId) { - delete currentElement[parent_id]; - } - tempCurrentElementParent[children].push(currentElement); // 给父元素加上当前元素作为子元素 - } else { - // 不存在父元素,意味着当前元素是一级元素 - result.push(currentElement); - } - } - return result; -} - -// 最简单数组去重法 -export function uniqueArr(array) { - const n = []; // 一个新的临时数组 - // 遍历当前数组 - for (let i = 0; i < array.length; i++) { - // 如果当前数组的第i已经保存进了临时数组,那么跳过, - // 否则把当前项push到临时数组里面 - if (!n.includes(array[i])) n.push(array[i]); - } - return n; -} diff --git a/apps/web-contract/src/utils/logger.ts b/apps/web-contract/src/utils/logger.ts deleted file mode 100644 index 1a1c4538..00000000 --- a/apps/web-contract/src/utils/logger.ts +++ /dev/null @@ -1,44 +0,0 @@ -export const logger = { - log(level: string, message: any, error?: any) { - const timestamp = new Date().toISOString(); - const stack = error ? error.stack : ''; - const formattedMessage = `[${timestamp}] [${level}] ${message} ${stack}`; - switch (level) { - case 'DEBUG': { - console.debug(formattedMessage); - break; - } - case 'ERROR': - case 'FATAL': { - console.error(formattedMessage); - break; - } - case 'INFO': { - console.info(formattedMessage); - break; - } - case 'WARN': { - console.warn(formattedMessage); - break; - } - default: { - console.log(formattedMessage); - } - } - }, - debug(message: any) { - this.log('DEBUG', message); - }, - info(message: any) { - this.log('INFO', message); - }, - warn(message: any) { - this.log('WARN', message); - }, - error(message: any, error: any) { - this.log('ERROR', message, error); - }, - fatal(message: any, error: any) { - this.log('FATAL', message, error); - }, -}; diff --git a/apps/web-contract/src/utils/time.ts b/apps/web-contract/src/utils/time.ts deleted file mode 100644 index ac1811a6..00000000 --- a/apps/web-contract/src/utils/time.ts +++ /dev/null @@ -1,68 +0,0 @@ -import dayjs from 'dayjs'; - -/** - * 通过传入年月获取对应月份的起止时间 - * @param dateStr YYYY-MM 的日期格式,如2024-06,不传默认当月 - */ -export function getMonthStartAndEnd(dateStr?: string) { - if (!dateStr) { - dateStr = dayjs().format('YYYY-MM'); - } - - // 验证输入格式是否正确 - const regex = /^\d{4}-\d{2}$/; - if (!regex.test(dateStr)) { - throw new Error('日期字符串格式不正确,应为 YYYY-MM'); - } - - // 使用 split 方法分割字符串 - const [year, month] = dateStr.split('-').map(Number); - - // 获取指定月份的第一天 - const firstDayOfMonth = dayjs(new Date(year, month - 1, 1)) - .startOf('month') - .format('YYYY-MM-DD'); - - // 获取指定月份的最后一天 - const lastDayOfMonth = dayjs(new Date(year, month - 1, 1)) - .endOf('month') - .format('YYYY-MM-DD'); - - return [firstDayOfMonth, lastDayOfMonth]; -} - -export function shortcuts(params?: any) { - return { - 当前月: () => { - const now = dayjs().valueOf(); - return [ - dayjs(now).startOf('month').valueOf(), - dayjs(now).endOf('month').valueOf(), - ] as const; - }, - 最近一周: () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(7, 'day').valueOf(), now] as const; - }, - 最近一个月: () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'month').valueOf(), now] as const; - }, - 最近三个月: () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(3, 'month').valueOf(), now] as const; - }, - 最近半年: () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(6, 'month').valueOf(), now] as const; - }, - 最近一年: () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'year').valueOf(), now] as const; - }, - 当前年: () => { - const now = dayjs().valueOf(); - return [dayjs(now).startOf('year').valueOf(), now] as const; - }, - }; -} diff --git a/apps/web-contract/src/views/_core/README.md b/apps/web-contract/src/views/_core/README.md deleted file mode 100644 index 8248afe6..00000000 --- a/apps/web-contract/src/views/_core/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# \_core - -此目录包含应用程序正常运行所需的基本视图。这些视图是应用程序布局中使用的视图。 diff --git a/apps/web-contract/src/views/_core/about/index.vue b/apps/web-contract/src/views/_core/about/index.vue deleted file mode 100644 index 0ee52433..00000000 --- a/apps/web-contract/src/views/_core/about/index.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/authentication/code-login.vue b/apps/web-contract/src/views/_core/authentication/code-login.vue deleted file mode 100644 index 36cf50ec..00000000 --- a/apps/web-contract/src/views/_core/authentication/code-login.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/authentication/forget-password.vue b/apps/web-contract/src/views/_core/authentication/forget-password.vue deleted file mode 100644 index 74ccc27e..00000000 --- a/apps/web-contract/src/views/_core/authentication/forget-password.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/authentication/login.vue b/apps/web-contract/src/views/_core/authentication/login.vue deleted file mode 100644 index cfe7d854..00000000 --- a/apps/web-contract/src/views/_core/authentication/login.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/authentication/qrcode-login.vue b/apps/web-contract/src/views/_core/authentication/qrcode-login.vue deleted file mode 100644 index 23f5f2da..00000000 --- a/apps/web-contract/src/views/_core/authentication/qrcode-login.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/authentication/register.vue b/apps/web-contract/src/views/_core/authentication/register.vue deleted file mode 100644 index f6b227d9..00000000 --- a/apps/web-contract/src/views/_core/authentication/register.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/fallback/coming-soon.vue b/apps/web-contract/src/views/_core/fallback/coming-soon.vue deleted file mode 100644 index f394930f..00000000 --- a/apps/web-contract/src/views/_core/fallback/coming-soon.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/fallback/forbidden.vue b/apps/web-contract/src/views/_core/fallback/forbidden.vue deleted file mode 100644 index 8ea65fed..00000000 --- a/apps/web-contract/src/views/_core/fallback/forbidden.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/fallback/internal-error.vue b/apps/web-contract/src/views/_core/fallback/internal-error.vue deleted file mode 100644 index 819a47d5..00000000 --- a/apps/web-contract/src/views/_core/fallback/internal-error.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/fallback/not-found.vue b/apps/web-contract/src/views/_core/fallback/not-found.vue deleted file mode 100644 index 4d178e9c..00000000 --- a/apps/web-contract/src/views/_core/fallback/not-found.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/_core/fallback/offline.vue b/apps/web-contract/src/views/_core/fallback/offline.vue deleted file mode 100644 index 5de4a88d..00000000 --- a/apps/web-contract/src/views/_core/fallback/offline.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/approval/edit/curd.tsx b/apps/web-contract/src/views/contract/approval/edit/curd.tsx deleted file mode 100644 index 386ba4b3..00000000 --- a/apps/web-contract/src/views/contract/approval/edit/curd.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { filterContractTypes } from '#/views/contract/utils'; - -export function getFormSchema(params: any = {}) { - const { contractTypeData, readOnly = false } = params; - - return { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: readOnly, - }, - rules: [{ required: true, message: '请输入合同名称' }], - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - prototype: true, - dict: dict({ - async getData(_context) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - disabled: readOnly, - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form, value, getComponentRef }) { - form.ctrTwoType = undefined; - console.log(getComponentRef('ctrTwoType')); - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - }, - }, - rules: [{ required: true, message: '请选择合同类别' }], - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - prototype: true, - dict: dict({ - async getData({ form = {} }) { - console.log(form); - return filterContractTypes(contractTypeData, form.ctrType); - }, - }), - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择二级类别' }], - }, - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择框架协议' }], - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 12 }, - labelCol: { style: { width: '200px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择框架协议下的合同' }], - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - disabled: readOnly, - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form }) { - form.fundAllocationName = getDictObj( - DICT_TYPE.contract_fund_flow, - form.fundAllocation, - )?.label; - }, - }, - rules: [{ required: true, message: '请选择资金流向' }], - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择资金渠道' }], - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 8 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - disabled: readOnly, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 6 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - disabled: readOnly, - }, - }, - organiza: { - title: '组织形式', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[180px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form, 'number'), - }), - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择组织形式' }], - }, - fileList: { - title: '相关附件', - key: 'fileList', - }, - }; -} diff --git a/apps/web-contract/src/views/contract/approval/edit/index.vue b/apps/web-contract/src/views/contract/approval/edit/index.vue deleted file mode 100644 index 590fa366..00000000 --- a/apps/web-contract/src/views/contract/approval/edit/index.vue +++ /dev/null @@ -1,829 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/approval/list/crud.tsx b/apps/web-contract/src/views/contract/approval/list/crud.tsx deleted file mode 100644 index 6552012c..00000000 --- a/apps/web-contract/src/views/contract/approval/list/crud.tsx +++ /dev/null @@ -1,205 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { getContractTypes } from '#/views/contract/utils'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'step', - title: '节点状态', - width: 130, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.step, - DICT_TYPE.contract_approval_flow_node, - ); - }, - }, - }, - { - field: 'contractName', - title: '合同名称', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.contractName); - }, - }, - }, - { - field: 'reportNo', - title: '报审序号', - width: 100, - }, - { - field: 'ctrTypeName', - title: '合同类别', - width: 200, - slots: { - default: ({ row }) => { - return useRender.renderText( - row.ctrTypeName, - `-${row.ctrTwoTypeName}`, - ); - }, - }, - }, - { field: 'budgetSum', title: '预算金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { - field: 'organiza', - title: '组织形式', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.organiza, - DICT_TYPE.contract_organization_form, - ); - }, - }, - }, - { - field: 'fundAllocation', - title: '资金流向', - width: 100, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.fundAllocation, - DICT_TYPE.contract_fund_flow, - ); - }, - }, - }, - { field: 'createTime', title: '申报时间', width: 130 }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - { - field: 'operate', - title: '操作', - width: 60, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - organiza: { - title: '组织形式', - key: 'organiza', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - render({ form }) { - return ( -
- - - - - - - -
- ); - }, - }, - time: { - title: '申报时间', - key: 'time', - autoSearchTrigger: 'enter', - show: true, - render({ form }) { - // 注意此处的v-model写法 - return ( -
- - - - - - - -
- ); - }, - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - show: true, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData(_context) { - return await getContractTypes('-1'); - }, - }), - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/approval/list/index.vue b/apps/web-contract/src/views/contract/approval/list/index.vue deleted file mode 100644 index 7c37e222..00000000 --- a/apps/web-contract/src/views/contract/approval/list/index.vue +++ /dev/null @@ -1,215 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/approval/signing-basis/choose-signing-basis-modal.vue b/apps/web-contract/src/views/contract/approval/signing-basis/choose-signing-basis-modal.vue deleted file mode 100644 index aa87e47c..00000000 --- a/apps/web-contract/src/views/contract/approval/signing-basis/choose-signing-basis-modal.vue +++ /dev/null @@ -1,204 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/approval/signing-basis/columns.tsx b/apps/web-contract/src/views/contract/approval/signing-basis/columns.tsx deleted file mode 100644 index 8babd595..00000000 --- a/apps/web-contract/src/views/contract/approval/signing-basis/columns.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictObj } from '#/utils/dict'; - -export function getColumns(params?): VxeGridPropTypes.Columns { - const { readOnly = false } = params || {}; - - const columns: VxeGridPropTypes.Columns = [ - { type: 'seq', title: '序号', width: 60 }, - { field: 'basisId', title: '依据号', width: 130 }, - { - field: 'basisName', - title: '依据名称', - width: 200, - }, - { field: 'basisNum', title: '依据编号', width: 180 }, - { - field: 'basisTypeId', - title: '依据类型', - width: 100, - slots: { - default: ({ row }) => { - return getDictObj(DICT_TYPE.contract_basis_type, row.basisTypeId) - ?.label; - }, - }, - }, - { - field: 'endDate', - title: '有效期', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.endDate, 'YYYY-MM-DD'); - }, - }, - }, - ]; - - if (!readOnly) { - columns.push({ - title: '操作', - width: 120, - slots: { default: 'operate' }, - }); - } - return columns; -} diff --git a/apps/web-contract/src/views/contract/approval/signing-basis/crud.tsx b/apps/web-contract/src/views/contract/approval/signing-basis/crud.tsx deleted file mode 100644 index 2daf4481..00000000 --- a/apps/web-contract/src/views/contract/approval/signing-basis/crud.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = []; - - if (params.type === 'choose') { - return [ - { field: 'basisId', title: '依据号', type: 'checkbox', width: 160 }, - { - field: 'basisName', - title: '依据名称', - width: 200, - }, - { field: 'basisNum', title: '依据编号', width: 180 }, - { - field: 'basisTypeId', - title: '依据类型', - width: 100, - slots: { - default: ({ row }) => { - return ( - getDictObj(DICT_TYPE.contract_basis_type, row.basisTypeId) - ?.label || '' - ); - }, - }, - }, - { - field: 'endDate', - title: '有效期', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.endDate, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'inputPerson', title: '创建人', width: 150 }, - { - field: 'inputDate', - title: '创建时间', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.inputDate, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'remark', title: '备注', minWidth: 200 }, - ]; - } - return [ - { field: 'basisId', title: '依据号', width: 130 }, - { - field: 'basisName', - title: '依据名称', - width: 200, - }, - { field: 'basisNum', title: '依据编号', width: 180 }, - { - field: 'basisTypeId', - title: '依据类型', - width: 100, - slots: { - default: ({ row }) => { - return ( - getDictObj(DICT_TYPE.contract_basis_type, row.basisTypeId)?.label || - '' - ); - }, - }, - }, - { - field: 'endDate', - title: '有效期', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.endDate, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'inputPerson', title: '创建人', width: 150 }, - { - field: 'inputDate', - title: '创建时间', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.inputDate, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'remark', title: '备注', minWidth: 200 }, - ]; - - return columns; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - basisName: { - title: '依据名称', - key: 'basisName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - basisNum: { - title: '依据编号', - key: 'basisNum', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - basisTypeId: { - title: '依据类型', - key: 'basisTypeId', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - async getData(_form) { - return getDictOptions(DICT_TYPE.contract_basis_type); - }, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - inputPerson: { - title: '创建人', - key: 'inputPerson', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - inputDate: { - title: '创建年份', - key: 'inputDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - picker: 'year', - format: 'YYYY年', - valueFormat: 'YYYY', - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/approval/signing-basis/index.vue b/apps/web-contract/src/views/contract/approval/signing-basis/index.vue deleted file mode 100644 index 1f636006..00000000 --- a/apps/web-contract/src/views/contract/approval/signing-basis/index.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/approval/signing-basis/signing-basis-edit-modal.vue b/apps/web-contract/src/views/contract/approval/signing-basis/signing-basis-edit-modal.vue deleted file mode 100644 index 72e82c75..00000000 --- a/apps/web-contract/src/views/contract/approval/signing-basis/signing-basis-edit-modal.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - - diff --git a/apps/web-contract/src/views/contract/approval/todo/index.vue b/apps/web-contract/src/views/contract/approval/todo/index.vue deleted file mode 100644 index da3cec00..00000000 --- a/apps/web-contract/src/views/contract/approval/todo/index.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/archive/list/crud.tsx b/apps/web-contract/src/views/contract/archive/list/crud.tsx deleted file mode 100644 index 386b4e4c..00000000 --- a/apps/web-contract/src/views/contract/archive/list/crud.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'reviewNumber', - title: '报审序号', - width: 120, - align: 'center', - }, - { - field: 'contractNumber', - title: '正式合同编号', - width: 150, - align: 'center', - }, - { - field: 'contractName', - title: '合同名称', - width: 200, - align: 'left', - }, - { - field: 'contractType', - title: '合同类别', - width: 120, - align: 'center', - }, - { - field: 'contractTerminator', - title: '合同终止人', - width: 120, - align: 'center', - }, - { - field: 'archiveTime', - title: '合同归档时间', - width: 150, - align: 'center', - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - contractNumber: { - title: '正式合同编号', - key: 'contractNumber', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/archive/list/index.vue b/apps/web-contract/src/views/contract/archive/list/index.vue deleted file mode 100644 index b81b2612..00000000 --- a/apps/web-contract/src/views/contract/archive/list/index.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/archive/todo/archive/crud.tsx b/apps/web-contract/src/views/contract/archive/todo/archive/crud.tsx deleted file mode 100644 index d2ccc877..00000000 --- a/apps/web-contract/src/views/contract/archive/todo/archive/crud.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 're', - title: '归档', - width: 80, - align: 'center', - }, - { - field: 'reviewNumber', - title: '报审序号', - width: 120, - align: 'center', - }, - { - field: 'contractNumber', - title: '正式合同编号', - width: 150, - align: 'center', - }, - { - field: 'contractName', - title: '合同名称', - width: 200, - align: 'left', - }, - { - field: 'contractType', - title: '合同类别', - width: 120, - align: 'center', - }, - { - field: 'contractTerminator', - title: '合同终止人', - width: 120, - align: 'center', - }, - { - field: 'archiveTime', - title: '合同归档时间', - width: 150, - align: 'center', - }, - { - title: '操作', - width: 80, - align: 'center', - slots: { - default: 'operate', - }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - contractNumber: { - title: '正式合同编号', - key: 'contractNumber', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/archive/todo/archive/index.vue b/apps/web-contract/src/views/contract/archive/todo/archive/index.vue deleted file mode 100644 index b81b2612..00000000 --- a/apps/web-contract/src/views/contract/archive/todo/archive/index.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/archive/todo/retracement/crud.tsx b/apps/web-contract/src/views/contract/archive/todo/retracement/crud.tsx deleted file mode 100644 index 51b382f0..00000000 --- a/apps/web-contract/src/views/contract/archive/todo/retracement/crud.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 're', - title: '回档', - width: 80, - align: 'center', - }, - { - field: 'reviewNumber', - title: '报审序号', - width: 120, - align: 'center', - }, - { - field: 'contractDeclareNumber', - title: '合同申报编号', - width: 150, - align: 'center', - }, - { - field: 'contractNumber', - title: '正式合同编号', - width: 150, - align: 'center', - }, - { - field: 'contractName', - title: '合同名称', - width: 200, - align: 'left', - }, - { - field: 'contractType', - title: '合同类别', - width: 120, - align: 'center', - }, - { - field: 'contractTerminator', - title: '合同终止人', - width: 120, - align: 'center', - }, - { - field: 'contractTerminationTime', - title: '合同终止时间', - width: 150, - align: 'center', - }, - { - title: '操作', - width: 80, - align: 'center', - slots: { - default: 'operate', - }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - contractNumber: { - title: '正式合同编号', - key: 'contractNumber', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/archive/todo/retracement/index.vue b/apps/web-contract/src/views/contract/archive/todo/retracement/index.vue deleted file mode 100644 index b81b2612..00000000 --- a/apps/web-contract/src/views/contract/archive/todo/retracement/index.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/audit/list/crud.tsx b/apps/web-contract/src/views/contract/audit/list/crud.tsx deleted file mode 100644 index d8698f63..00000000 --- a/apps/web-contract/src/views/contract/audit/list/crud.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { - field: 'contractName', title: '合同名称', minWidth: 200, slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.contractName); - } - }, fixed: 'left' - }, - { - field: 'reportNo', title: '报审序号', width: 100, - }, - { - field: 'ctrTypeName', title: '合同类别', width: 200, slots: { - default: ({ row }) => { - return useRender.renderText(row.ctrTypeName, '-' + row.ctrTwoTypeName); - } - } - }, - { field: 'budgetSum', title: '预算金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { - field: 'organiza', title: '组织形式', width: 120, slots: { - default: ({ row }) => { - return useRender.renderDict(row.organiza, DICT_TYPE.contract_organization_form); - } - } - }, - { - field: 'fundAllocation', title: '资金流向', width: 100, slots: { - default: ({ row }) => { - return useRender.renderDict(row.fundAllocation, DICT_TYPE.contract_fund_flow); - } - } - }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format("YYYY-MM-DD"), - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - organiza: { - title: '组织形式', - key: 'organiza', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form) - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - }, - time: { - title: '申报时间', - key: 'startDate', - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/audit/list/index.vue b/apps/web-contract/src/views/contract/audit/list/index.vue deleted file mode 100644 index a9a8e862..00000000 --- a/apps/web-contract/src/views/contract/audit/list/index.vue +++ /dev/null @@ -1,245 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/audit/todo/index.vue b/apps/web-contract/src/views/contract/audit/todo/index.vue deleted file mode 100644 index 827b86f0..00000000 --- a/apps/web-contract/src/views/contract/audit/todo/index.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/edit/basic-info-card.vue b/apps/web-contract/src/views/contract/business/edit/basic-info-card.vue deleted file mode 100644 index b091dfce..00000000 --- a/apps/web-contract/src/views/contract/business/edit/basic-info-card.vue +++ /dev/null @@ -1,282 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/edit/basic-info-curd.tsx b/apps/web-contract/src/views/contract/business/edit/basic-info-curd.tsx deleted file mode 100644 index 05e36bfc..00000000 --- a/apps/web-contract/src/views/contract/business/edit/basic-info-curd.tsx +++ /dev/null @@ -1,189 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { filterContractTypes } from '#/views/contract/utils'; - -export function getFormSchema(params: any = {}) { - const { contractTypeData } = params; - - return { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 16 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true }], - }, - reportNo: { - title: '报审序号', - key: 'reportNo', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return {form.reportNo}; - }, - }, - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {}, getComponentRef }) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - }, - valueChange({ form, value, getComponentRef }) { - form.ctrTwoType = undefined; - if (value) { - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - } - }, - rules: [{ required: true }], - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, form.ctrType); - }, - }), - }, - rules: [{ required: true }], - }, - ctrThreeType: { - title: '三级类别', - key: 'ctrTwoType', - col: { span: 8 }, - render({ form }) { - return ; - }, - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 5 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 3 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - }, - rules: [{ required: true, message: '请选择资金流向' }], - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - rules: [{ required: true, message: '请选择资金渠道' }], - }, - - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ], - }), - }, - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 8 }, - labelCol: { style: { width: '150px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ], - }), - }, - }, - organiza: { - title: '组织方式', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form, 'number'), - }), - }, - rules: [{ required: true, message: '请选择组织方式' }], - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/edit/bid-columns.tsx b/apps/web-contract/src/views/contract/business/edit/bid-columns.tsx deleted file mode 100644 index fdaa384b..00000000 --- a/apps/web-contract/src/views/contract/business/edit/bid-columns.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -export function getBidColumns(_params?: any): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - // { - // type: 'seq', - // width: 50, - // }, - { - type: 'expand', - width: '0px', - slots: { content: 'expand-content-slot' }, - }, - { - field: 'bidName', - title: '标段名称', - width: 180, - slots: { default: 'bidname-slot' }, - }, - { - field: 'phaseMoney', - title: '预算金额', - width: 200, - slots: { default: 'phasemoney-slot' }, - }, - { - field: 'phaseDesc', - title: '标段范围说明', - minWidth: 300, - slots: { default: 'phasedesc-slot' }, - }, - { - field: 'operate', - title: '操作', - width: 120, - fixed: 'right', - slots: { default: 'operate-slot' }, - }, - ]; - - return columns; -} - -export function getProviderColumns(_params?: any): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { - field: 'providerName', - title: '供应商名称', - width: 250, - }, - { - field: 'qualification', - title: '资质情况', - width: 200, - slots: { default: 'qualification-slot' }, - }, - { - field: 'contactPerson', - title: '联系人', - width: 150, - slots: { default: 'contactPerson-slot' }, - }, - { - field: 'contactPhone', - title: '联系电话', - width: 150, - slots: { default: 'contactPhone-slot' }, - }, - { - field: 'remarks', - title: '备注', - minWidth: 200, - slots: { default: 'remarks-slot' }, - }, - { - field: 'operate', - title: '操作', - width: 120, - fixed: 'right', - slots: { default: 'operate-slot' }, - }, - ]; - - return columns; -} diff --git a/apps/web-contract/src/views/contract/business/edit/business-card.vue b/apps/web-contract/src/views/contract/business/edit/business-card.vue deleted file mode 100644 index 7f84c79a..00000000 --- a/apps/web-contract/src/views/contract/business/edit/business-card.vue +++ /dev/null @@ -1,751 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/business/edit/curd.tsx b/apps/web-contract/src/views/contract/business/edit/curd.tsx deleted file mode 100644 index 5bc32033..00000000 --- a/apps/web-contract/src/views/contract/business/edit/curd.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import { ref } from 'vue'; - -import { useVbenModal } from '@vben/common-ui'; - -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE } from '#/utils/dict'; - -import chooseCompanyModal from '../../company/list/choose-company-modal.vue'; -import { getBidColumns, getProviderColumns } from './bid-columns'; - -const [ChooseCompanyModal, chooseCompanyModalApi] = useVbenModal({ - connectedComponent: chooseCompanyModal, -}); - -const xGridRefs = ref>(new Map()); - -const gridRefs = ref>(new Map()); -export function getFormSchema(params: any = {}) { - const { formRef, dictMap = {}, bidList = [], showBid = true } = params; - - /** Hooks - 表格 */ - const gridOptions = { - showOverflow: true, - columns: getBidColumns({ readOnly: false }), - data: [], - toolbarConfig: { - enabled: false, - }, - pagerConfig: { - enabled: false, - }, - rowConfig: { - useKey: true, - isCurrent: false, - keyField: 'id', - }, - expandConfig: { - expandAll: true, - reserve: true, - showIcon: false, - }, - }; - - const gridOptionsByProvider = { - columns: getProviderColumns({ readOnly: false }), - toolbarConfig: { - enabled: false, - }, - pagerConfig: { - enabled: false, - }, - rowConfig: { - useKey: true, - isCurrent: false, - }, - }; - - return { - col: { span: 24 }, - initialForm: { - contractName: '', - priceType: 'CNY', - isBid: '0', - bidNum: 2, - }, - labelCol: { style: { width: '120px' } }, - columns: { - projectNum: { - title: '项目', - key: 'projectNum', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入项目' }], - }, - projectProp: { - title: '项目类别', - key: 'projectProp', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: dictMap[DICT_TYPE.contract_project_type], - }), - }, - rules: [{ required: true, message: '请选择项目类别' }], - }, - projectName: { - title: '项目名称', - key: 'projectName', - col: { span: 24 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: dictMap[DICT_TYPE.comprehensive_project_name], - }), - }, - rules: [{ required: true, message: '请输入项目名称' }], - }, - priceStyleId: { - title: '商务计价方式', - key: 'priceStyleId', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: dictMap[DICT_TYPE.contract_price_style], - }), - }, - }, - remark: { - title: '备注', - key: 'remark', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: dictMap[DICT_TYPE.contract_selection_method], - }), - }, - rules: [{ required: true, message: '请选择选商方式' }], - }, - choiceReason: { - title: '选商方式说明', - key: 'choiceReason', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - rules: [{ required: true, message: '请输入选商方式说明' }], - }, - qualificReq: { - title: '资质要求', - key: 'qualificReq', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - isBid: { - title: '划分标段', - key: 'isBid', - col: { span: 24 }, - show: showBid, - // component: { - // name: "fs-dict-radio", - // vModel: "value", - // dict: dict({ - // data: getDictOptions(DICT_TYPE.section_type) - // }), - // }, - }, - projectRange: { - title: '项目范围', - key: 'projectRange', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - projectContent: { - title: '项目内容', - key: 'projectContent', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - quality: { - title: '工期/质量要求', - key: 'quality', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - stockNums: { - title: '工程/采购量', - key: 'stockNums', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - stockPlanMx: { - title: '计划投资明细', - key: 'stockPlanMx', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/edit/index.vue b/apps/web-contract/src/views/contract/business/edit/index.vue deleted file mode 100644 index 62650c2b..00000000 --- a/apps/web-contract/src/views/contract/business/edit/index.vue +++ /dev/null @@ -1,779 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/list/crud.tsx b/apps/web-contract/src/views/contract/business/list/crud.tsx deleted file mode 100644 index 56b96915..00000000 --- a/apps/web-contract/src/views/contract/business/list/crud.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import { unitComponentProps } from '#/common/unit'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'step', - title: '节点状态', - width: 130, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.step, - DICT_TYPE.contract_business_flow_node, - ); - }, - }, - }, - { field: 'reportNo', title: '报审序号', width: 100 }, - { - field: 'contractName', - title: '合同名称', - minWidth: 200, - slots: { - default: 'contract-name-slot', - }, - }, - { field: 'choiceTypeName', title: '选商方式', width: 150 }, - { field: 'fundDitchName', title: '资金渠道', width: 150 }, - { field: 'contractMoney', title: '金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - { - field: 'operate', - title: '操作', - width: 60, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - node: 'smEdit', - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - inputDepartId: { - title: '承办单位', - key: 'inputUnitId', - component: unitComponentProps, - autoSearchTrigger: 'enter', - show: true, - }, - contractMoney: { - title: '合同金额', - key: 'contractMoney', - component: { - name: 'a-input-number', - vModel: 'value', - min: 0, - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_selection_method), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - node: { - title: '是否编制', - key: 'node', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { label: '全部', value: '' }, - { label: '待编制', value: 'smEdit' }, - ], - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/list/index.vue b/apps/web-contract/src/views/contract/business/list/index.vue deleted file mode 100644 index 2b0aac0f..00000000 --- a/apps/web-contract/src/views/contract/business/list/index.vue +++ /dev/null @@ -1,190 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/result-list/crud.tsx b/apps/web-contract/src/views/contract/business/result-list/crud.tsx deleted file mode 100644 index 0c325768..00000000 --- a/apps/web-contract/src/views/contract/business/result-list/crud.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import { unitComponentProps } from '#/common/unit'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'step', - title: '节点状态', - width: 130, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.step, - DICT_TYPE.contract_business_flow_node, - ); - }, - }, - }, - { field: 'reportNo', title: '报审序号', width: 100 }, - { - field: 'contractName', - title: '合同名称', - minWidth: 200, - slots: { - default: 'contract-name-slot', - }, - }, - { field: 'choiceTypeName', title: '选商方式', width: 150 }, - { field: 'fundDitchName', title: '资金渠道', width: 150 }, - { field: 'contractMoney', title: '金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - { - field: 'operate', - title: '操作', - width: 60, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - node: 'smrEdit', - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - inputDepartId: { - title: '承办单位', - key: 'inputUnitId', - component: unitComponentProps, - autoSearchTrigger: 'enter', - show: true, - }, - contractMoney: { - title: '合同金额', - key: 'contractMoney', - component: { - name: 'a-input-number', - vModel: 'value', - min: 0, - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_selection_method), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - node: { - title: '是否编制', - key: 'node', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { label: '全部', value: '' }, - { label: '待编制', value: 'smrEdit' }, - ], - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/result-list/index.vue b/apps/web-contract/src/views/contract/business/result-list/index.vue deleted file mode 100644 index ba419516..00000000 --- a/apps/web-contract/src/views/contract/business/result-list/index.vue +++ /dev/null @@ -1,184 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/result/basic-info-curd.tsx b/apps/web-contract/src/views/contract/business/result/basic-info-curd.tsx deleted file mode 100644 index 7cde3716..00000000 --- a/apps/web-contract/src/views/contract/business/result/basic-info-curd.tsx +++ /dev/null @@ -1,205 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -/** - * 筛选合同列表数据 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} - -export function getFormSchema(params: any = {}) { - const { contractTypeData } = params; - - return { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 16 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true }], - }, - reportNo: { - title: '报审序号', - key: 'reportNo', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return {form.reportNo}; - }, - }, - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {}, getComponentRef }) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - }, - valueChange({ form, value, getComponentRef }) { - form.ctrTwoType = undefined; - if (value) { - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - } - }, - rules: [{ required: true }], - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - if (form.ctrType) { - return filterContractTypes(contractTypeData, form.ctrType); - } - return contractTypeData; - }, - }), - }, - rules: [{ required: true }], - }, - ctrThreeType: { - title: '三级类别', - key: 'ctrTwoType', - col: { span: 8 }, - render({ form }) { - return ; - }, - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 5 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 3 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - }, - rules: [{ required: true, message: '请选择资金流向' }], - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - rules: [{ required: true, message: '请选择资金渠道' }], - }, - - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '是', value: 1 }, - { label: '否', value: 0 }, - ], - }), - }, - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 8 }, - labelCol: { style: { width: '150px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '是', value: 1 }, - { label: '否', value: 0 }, - ], - }), - }, - }, - organiza: { - title: '组织方式', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - rules: [{ required: true, message: '请选择组织方式' }], - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/result/bid-columns.tsx b/apps/web-contract/src/views/contract/business/result/bid-columns.tsx deleted file mode 100644 index e9cb3523..00000000 --- a/apps/web-contract/src/views/contract/business/result/bid-columns.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -export function getBidColumns(_params?: any): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { - type: 'seq', - width: 50, - }, - { - type: 'expand', - width: '0px', - slots: { content: 'expand-content-slot' }, - }, - { - field: 'bidName', - title: '标段名称', - width: 180, - slots: { default: 'bidname-slot' }, - }, - { - field: 'phaseMoney', - title: '预算金额', - width: 200, - slots: { default: 'phasemoney-slot' }, - }, - { - field: 'phaseDesc', - title: '标段范围说明', - minWidth: 300, - slots: { default: 'phasedesc-slot' }, - }, - { - field: 'operate', - title: '操作', - width: 120, - slots: { default: 'operate-slot' }, - fixed: 'right', - }, - ]; - - return columns; -} - -export function getProviderColumns(_params?: any): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { - field: 'providerName', - title: '供应商名称', - width: 200, - }, - { - field: 'qualification', - title: '资质情况', - width: 200, - }, - { - field: 'contactPerson', - title: '联系人', - width: 150, - }, - { - field: 'contactPhone', - title: '联系电话', - width: 150, - }, - { - field: 'remarks', - title: '备注', - minWidth: 200, - }, - ]; - - return columns; -} diff --git a/apps/web-contract/src/views/contract/business/result/curd.tsx b/apps/web-contract/src/views/contract/business/result/curd.tsx deleted file mode 100644 index 7ed185ac..00000000 --- a/apps/web-contract/src/views/contract/business/result/curd.tsx +++ /dev/null @@ -1,367 +0,0 @@ -import { ref } from 'vue'; - -import { useVbenModal } from '@vben/common-ui'; - -import { dict } from '@fast-crud/fast-crud'; -import { VxeGrid } from 'vxe-table'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -import chooseCompanyModal from '../../company/list/choose-company-modal.vue'; -import { getBidColumns, getProviderColumns } from './bid-columns'; - -const [ChooseCompanyModal, chooseCompanyModalApi] = useVbenModal({ - connectedComponent: chooseCompanyModal, -}); - -export function getFormSchema(_params: any = {}) { - const xGridRef = ref(); - - /** Hooks - 表格 */ - const gridOptions = { - columns: getBidColumns({ readOnly: false }), - data: [], - toolbarConfig: { - enabled: false, - }, - pagerConfig: { - enabled: false, - }, - rowConfig: { - useKey: true, - isCurrent: false, - keyField: 'id', - }, - expandConfig: { - expandAll: true, - reserve: true, - showIcon: false, - }, - }; - - const gridOptionsByProvider = { - columns: getProviderColumns({ readOnly: false }), - toolbarConfig: { - enabled: false, - }, - pagerConfig: { - enabled: false, - }, - rowConfig: { - useKey: true, - isCurrent: false, - }, - }; - - const gridRefs = ref>(new Map()); - - return { - col: { span: 24 }, - initialForm: { - contractName: '', - priceType: 'CNY', - isBid: '0', - budgetSum2: 0, - }, - labelCol: { style: { width: '120px' } }, - columns: { - projectNum: { - title: '项目', - key: 'projectNum', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入项目' }], - }, - projectProp: { - title: '项目类别', - key: 'projectProp', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_project_type), - }), - }, - rules: [{ required: true, message: '请选择项目类别' }], - }, - projectName: { - title: '项目名称', - key: 'projectName', - col: { span: 24 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.comprehensive_project_name), - }), - }, - rules: [{ required: true, message: '请输入项目名称' }], - }, - priceStyleId: { - title: '商务计价方式', - key: 'priceStyleId', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_price_style), - }), - }, - }, - remark: { - title: '备注', - key: 'remark', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_selection_method), - }), - }, - rules: [{ required: true, message: '请选择选商方式' }], - }, - choiceReason: { - title: '选商方式说明', - key: 'choiceReason', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - rules: [{ required: true, message: '请输入选商方式说明' }], - }, - qualificReq: { - title: '资质要求', - key: 'qualificReq', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - isBid: { - title: '划分标段', - key: 'isBid', - col: { span: 24 }, - // component: { - // name: "fs-dict-radio", - // vModel: "value", - // dict: dict({ - // data: getDictOptions(DICT_TYPE.section_type) - // }), - // }, - render({ form }) { - // 注意此处的v-model写法 - const options1 = getDictOptions(DICT_TYPE.section_type, 'string'); - const options2 = getDictOptions(DICT_TYPE.section_num, 'string'); - let id = ''; - return ( -
- { - console.log(e); - console.log(id); - const xGridRef = gridRefs.value.get(id); // Assuming you have a main grid ref - console.log(gridRefs.value); - console.log(xGridRef); - - xGridRef && xGridRef.insertAt(e, -1); - }} - > -
- - - -
- {form.isBid === '1' && ( - -
- 标段数量: - { - // 获取当前表格的全部数据 - const { fullData } = xGridRef.value.getTableData(); - - const currentLength = fullData.length; - - if (value < currentLength) { - // 删除多余的行(从 value 开始的行) - const rowsToRemove = fullData.slice(value); - xGridRef.value.remove(rowsToRemove); - } else if (value > currentLength) { - // 插入新的行数据 - const rowsToAdd = Array.from({ - length: value - currentLength, - }).map((_, i) => ({ - id: currentLength + i + 1, - bidName: `第${currentLength + i + 1}标段`, - providerList: [], - })); - xGridRef.value.insertAt(rowsToAdd, -1); - } - xGridRef.value.setAllRowExpand(true); - }} - options={options2} - v-model:value={form.budgetSum2} - /> -
-
- )} -
- -
0 - ? 'block' - : 'none', - }} - > - - - {{ - 'bidname-slot': ({ row }: any) => ( - - ), - 'phasemoney-slot': ({ row }: any) => ( - - ), - 'phasedesc-slot': ({ row }: any) => ( - - ), - 'expand-content-slot': ({ row }: any) => ( - el && gridRefs.value.set(row.id, el)} - {...gridOptionsByProvider} - /> - ), - 'operate-slot': ({ row }: any) => ( - { - id = row.id; - const tableFullData = - xGridRef.value?.getTableData().fullData; - if (tableFullData && tableFullData.length > 0) { - chooseCompanyModalApi.setData({ - title: '选择签约依据', - guids: - tableFullData.map((item) => item.guid) || [], - }); - } else { - chooseCompanyModalApi.setData({ - title: '选择签约依据', - guids: [], - }); - } - - chooseCompanyModalApi.open(); - // row.providerList.push({ - // providerName: '供应商11', - // qualification: '', - // contactPerson: '', - // contactPhone: '', - // remarks: '', - // }); - }} - size="small" - type="primary" - > - 选择供应商 - - ), - }} - - -
-
- ); - }, - }, - projectRange: { - title: '项目范围', - key: 'projectRange', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - projectContent: { - title: '项目内容', - key: 'projectContent', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - quality: { - title: '工期/质量要求', - key: 'quality', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - stockNums: { - title: '工程/采购量', - key: 'stockNums', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - stockPlanMx: { - title: '计划投资明细', - key: 'stockPlanMx', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/business/result/fill-result-card.vue b/apps/web-contract/src/views/contract/business/result/fill-result-card.vue deleted file mode 100644 index 0c266664..00000000 --- a/apps/web-contract/src/views/contract/business/result/fill-result-card.vue +++ /dev/null @@ -1,600 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/business/result/index.vue b/apps/web-contract/src/views/contract/business/result/index.vue deleted file mode 100644 index 84a71bef..00000000 --- a/apps/web-contract/src/views/contract/business/result/index.vue +++ /dev/null @@ -1,334 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/business/todo/index.vue b/apps/web-contract/src/views/contract/business/todo/index.vue deleted file mode 100644 index d7677dcf..00000000 --- a/apps/web-contract/src/views/contract/business/todo/index.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/company/edit/curd.tsx b/apps/web-contract/src/views/contract/company/edit/curd.tsx deleted file mode 100644 index b6a32946..00000000 --- a/apps/web-contract/src/views/contract/company/edit/curd.tsx +++ /dev/null @@ -1,412 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; -import dayjs from 'dayjs'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -export function getFormSchema(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - currencyTypeId: 'CNY', - }, - columns: { - providerName: { - title: '单位全称', - key: 'providerName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入单位名称' }], - }, - providerKindId: { - title: '性质', - key: 'providerKindId', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.counterparty_nature), - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form }) { - form.providerKindName = getDictObj( - DICT_TYPE.counterparty_nature, - form.providerKindId, - )?.label; - }, - }, - rules: [{ required: true, message: '请选择单位性质' }], - }, - providerAddr: { - title: '住所', - key: 'providerAddr', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - businessCode: { - title: '营业执照注册号', - key: 'businessCode', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - juridicalPerson: { - title: '法人姓名', - key: 'juridicalPerson', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - taxNo: { - title: '税务登记证号', - key: 'taxNo', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - organizeNum: { - title: '组织机构代码', - key: 'organizeNum', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - creditCode: { - title: '统一社会信用代码', - key: 'creditCode', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - registerMoney: { - title: '注册资金', - key: 'registerMoney', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - currencyTypeId: { - title: '币种', - key: 'currencyTypeId', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form }) { - form.currencyTypeName = getDictObj( - DICT_TYPE.contract_currency_unit, - form.currencyTypeId, - )?.label; - }, - }, - }, - marketScope: { - title: '营业执照经营范围', - key: 'marketScope', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} - -export function getFormSchemaByBank(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - isOutside: 0, - }, - columns: { - accountBank: { - title: '开户银行', - key: 'accountBank', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - bankAccount: { - title: '银行账号', - key: 'bankAccount', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - bankNetwork: { - title: '开户银行网点', - key: 'bankNetwork', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - bankNetworkAddr: { - title: '银行网点地址', - key: 'bankNetwork', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - linkPerson: { - title: '联系人', - key: 'linkPerson', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - linkPhone: { - title: '联系人电话', - key: 'linkPhone', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - fax: { - title: '传真', - key: 'fax', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - email: { - title: '电子邮件', - key: 'email', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - isOutside: { - title: '是否境外主体', - key: 'isOutside', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '否', value: 0 }, - { label: '是', value: 1 }, - ], - }), - }, - }, - customerCode: { - title: 'MDM客户编码', - key: 'customerCode', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - vendorCoding: { - title: 'MDM供应商编码', - key: 'vendorCoding', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - remark: { - title: '备注', - key: 'remark', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} - -export function getFormSchemaByCertification(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: {}, - columns: { - aptitudeName: { - title: '资质名称', - key: 'aptitudeName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - aptitudeGrade: { - title: '资质等级', - key: 'aptitudeGrade', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - time: { - title: '有效期', - key: 'time', - col: { span: 12 }, - render({ form }) { - // 注意此处的v-model写法 - return ( -
- - - - - - { - return current && current < dayjs(form.aptitudeBeginDate); - }} - format="YYYY-MM-DD" - placeholder="" - v-model:value={form.aptitudeEndDate} - value-format="YYYY-MM-DD" - /> - -
- ); - }, - }, - fileList: { - title: '相关资质附件', - key: 'fileList', - col: { span: 24 }, - }, - aptitudeRemark: { - title: '备注', - key: 'aptitudeRemark', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} - -export function getFormSchemaByShareholder(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - columns: { - shareholderName: { - title: '股东名称', - key: 'shareholderName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - shareholderIdCard: { - title: '股东身份证号', - key: 'shareholderIdCard', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - shareholderTypeId: { - title: '类型', - key: 'shareholderIdCard', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.counterparty_nature), - }), - }, - }, - investmentRate: { - title: '出资比例', - key: 'investmentRate', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/company/edit/index.vue b/apps/web-contract/src/views/contract/company/edit/index.vue deleted file mode 100644 index b44985a5..00000000 --- a/apps/web-contract/src/views/contract/company/edit/index.vue +++ /dev/null @@ -1,341 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/company/list/choose-company-modal.vue b/apps/web-contract/src/views/contract/company/list/choose-company-modal.vue deleted file mode 100644 index e99844b0..00000000 --- a/apps/web-contract/src/views/contract/company/list/choose-company-modal.vue +++ /dev/null @@ -1,228 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/company/list/crud.tsx b/apps/web-contract/src/views/contract/company/list/crud.tsx deleted file mode 100644 index d5914526..00000000 --- a/apps/web-contract/src/views/contract/company/list/crud.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - if (params.type === 'choose') { - return [ - { field: 'providerId', title: '编号', type: 'checkbox', width: 130 }, - { - field: 'providerName', - title: '单位全称', - minWidth: 250, - slots: { - default: 'provider-name-slot', - }, - }, - { field: 'providerKindName', title: '性质', width: 150 }, - { field: 'providerAddr', title: '住所', width: 150 }, - { field: 'juridicalPerson', title: '法人姓名', width: 100 }, - { field: 'organizeNum', title: '组织机构代码', width: 100 }, - { field: 'creditCode', title: '信用代码', width: 100 }, - { field: 'registerMoney', title: '注册资金', width: 100 }, - { field: 'currencyTypeName', title: '币种', width: 100 }, - { field: 'createPerson', title: '创建人', width: 100 }, - { - field: 'createDate', - title: '创建时间', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.applyTime, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'inputDepartName', title: '备注', width: 150 }, - ]; - } - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { field: 'providerId', title: '编号', width: 100 }, - { - field: 'providerName', - title: '单位全称', - minWidth: 200, - slots: { - default: 'provider-name-slot', - }, - }, - { field: 'providerKindName', title: '性质', width: 150 }, - { field: 'providerAddr', title: '住所', width: 150 }, - { field: 'juridicalPerson', title: '法人姓名', width: 100 }, - { field: 'organizeNum', title: '组织机构代码', width: 100 }, - { field: 'creditCode', title: '信用代码', width: 100 }, - { field: 'registerMoney', title: '注册资金', width: 100 }, - { field: 'currencyTypeName', title: '币种', width: 100 }, - { field: 'createPerson', title: '创建人', width: 100 }, - { field: 'createDate', title: '创建时间', width: 100 }, - { field: 'inputDepartName', title: '备注', width: 100 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - providerName: { - title: '相对人名称', - key: 'providerName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - juridicalPerson: { - title: '法人姓名', - key: 'juridicalPerson', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - currencyTypeId: { - title: '币种', - key: 'currencyTypeId', - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - show: true, - }, - organizeNum: { - title: '组织机构代码', - key: 'organizeNum', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - creditCode: { - title: '统一社会信用代码', - key: 'creditCode', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/company/list/index.vue b/apps/web-contract/src/views/contract/company/list/index.vue deleted file mode 100644 index ba795ea8..00000000 --- a/apps/web-contract/src/views/contract/company/list/index.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/components/audit-node-table/audit-node-table.vue b/apps/web-contract/src/views/contract/components/audit-node-table/audit-node-table.vue deleted file mode 100644 index 88039d8d..00000000 --- a/apps/web-contract/src/views/contract/components/audit-node-table/audit-node-table.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/components/basis-table/basis-table.vue b/apps/web-contract/src/views/contract/components/basis-table/basis-table.vue deleted file mode 100644 index bf20b900..00000000 --- a/apps/web-contract/src/views/contract/components/basis-table/basis-table.vue +++ /dev/null @@ -1,120 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/components/file-card/file-card.vue b/apps/web-contract/src/views/contract/components/file-card/file-card.vue deleted file mode 100644 index fc1f9fc1..00000000 --- a/apps/web-contract/src/views/contract/components/file-card/file-card.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/components/todo-page/todo-page.vue b/apps/web-contract/src/views/contract/components/todo-page/todo-page.vue deleted file mode 100644 index deee6951..00000000 --- a/apps/web-contract/src/views/contract/components/todo-page/todo-page.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/config/components/contract-type/contract-type-edit-modal.vue b/apps/web-contract/src/views/contract/config/components/contract-type/contract-type-edit-modal.vue deleted file mode 100644 index 10c42943..00000000 --- a/apps/web-contract/src/views/contract/config/components/contract-type/contract-type-edit-modal.vue +++ /dev/null @@ -1,150 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/config/components/contract-type/contract-type.vue b/apps/web-contract/src/views/contract/config/components/contract-type/contract-type.vue deleted file mode 100644 index e5cac6f4..00000000 --- a/apps/web-contract/src/views/contract/config/components/contract-type/contract-type.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/config/components/contract-type/crud.tsx b/apps/web-contract/src/views/contract/config/components/contract-type/crud.tsx deleted file mode 100644 index 96b3b462..00000000 --- a/apps/web-contract/src/views/contract/config/components/contract-type/crud.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE } from '#/utils/dict'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - - { field: 'contrLevelName', title: '合同类型', width: 200, showOverflow: true, treeNode: true }, - { field: 'contrLevelDesc', title: '合同描述', minWidth: 150, showOverflow: true }, - { - field: 'status', title: '状态', width: 150, slots: { - default: ({ row }) => { - return useRender.renderDict(row.status, DICT_TYPE.sys_normal_disable); - } - } - }, - { field: 'createPerson', title: '创建人', width: 100 }, - { field: 'createDate', title: '创建时间', width: 180 }, - ]; -} - -export function formSchema() { - return { - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - - }, - }; -} diff --git a/apps/web-contract/src/views/contract/config/components/project-manager/crud.tsx b/apps/web-contract/src/views/contract/config/components/project-manager/crud.tsx deleted file mode 100644 index 12008f50..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-manager/crud.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import Apis from '#/api'; - -import dayjs from 'dayjs'; -import { useRender } from '#/hooks/useRender'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { - field: 'name', title: '项目名称', minWidth: 200, slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.name); - } - }, fixed: 'left' - }, - { - field: 'extend1', title: '排序', width: 100, - }, - { field: 'createTime', title: '创建时间', width: 140 }, - { field: 'updateTime', title: '修改时间', width: 140 }, - ]; -} -export function formSchema() { - return { - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - name: { - title: '项目名称', - key: 'name', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/config/components/project-manager/project-manager-edit-modal.vue b/apps/web-contract/src/views/contract/config/components/project-manager/project-manager-edit-modal.vue deleted file mode 100644 index 2175f411..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-manager/project-manager-edit-modal.vue +++ /dev/null @@ -1,89 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/config/components/project-manager/project-manager.vue b/apps/web-contract/src/views/contract/config/components/project-manager/project-manager.vue deleted file mode 100644 index 7e6dc0a8..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-manager/project-manager.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/config/components/project-name-manager/crud.tsx b/apps/web-contract/src/views/contract/config/components/project-name-manager/crud.tsx deleted file mode 100644 index 12008f50..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-name-manager/crud.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import Apis from '#/api'; - -import dayjs from 'dayjs'; -import { useRender } from '#/hooks/useRender'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { - field: 'name', title: '项目名称', minWidth: 200, slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.name); - } - }, fixed: 'left' - }, - { - field: 'extend1', title: '排序', width: 100, - }, - { field: 'createTime', title: '创建时间', width: 140 }, - { field: 'updateTime', title: '修改时间', width: 140 }, - ]; -} -export function formSchema() { - return { - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - name: { - title: '项目名称', - key: 'name', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager-edit-modal.vue b/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager-edit-modal.vue deleted file mode 100644 index 0f7fcb56..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager-edit-modal.vue +++ /dev/null @@ -1,87 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager.vue b/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager.vue deleted file mode 100644 index 78ab379c..00000000 --- a/apps/web-contract/src/views/contract/config/components/project-name-manager/project-name-manager.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/config/components/template-manager/crud.tsx b/apps/web-contract/src/views/contract/config/components/template-manager/crud.tsx deleted file mode 100644 index 4fbc5fa3..00000000 --- a/apps/web-contract/src/views/contract/config/components/template-manager/crud.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import Apis from '#/api'; - -import dayjs from 'dayjs'; -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE } from '#/utils/dict'; - -export const PrimaryKey = 'contractModelId'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { - field: 'contractModelName', title: '模板名称', minWidth: 200, slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.contractModelName); - } - } - }, - { - field: 'contractTypeName', title: '合同类别', width: 100, - }, - { - field: 'status', title: '状态', width: 150, slots: { - default: ({ row }) => { - return useRender.renderDict(row.status, DICT_TYPE.sys_normal_disable); - } - } - }, - { - field: 'contractModelContent', title: '备注', minWidth: 200, slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.contractModelContent); - } - } - }, - { field: 'meetingType1', title: '编制人', width: 120 }, - // { field: 'gznr', title: '工作内容', width: 120 }, - { field: 'ysje', title: '创建时间', width: 80 }, - { field: 'bz', title: '失效时间', width: 80 }, - { title: '操作', width: 80, fixed: 'right', slots: { default: 'operate' } } - ]; -} -export function formSchema() { - return { - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - name: { - title: '模板名称', - key: 'name', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/config/components/template-manager/template-manager-edit-modal.vue b/apps/web-contract/src/views/contract/config/components/template-manager/template-manager-edit-modal.vue deleted file mode 100644 index c9b45489..00000000 --- a/apps/web-contract/src/views/contract/config/components/template-manager/template-manager-edit-modal.vue +++ /dev/null @@ -1,168 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/config/components/template-manager/template-manager.vue b/apps/web-contract/src/views/contract/config/components/template-manager/template-manager.vue deleted file mode 100644 index 87c192a4..00000000 --- a/apps/web-contract/src/views/contract/config/components/template-manager/template-manager.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/config/index.vue b/apps/web-contract/src/views/contract/config/index.vue deleted file mode 100644 index 8816002c..00000000 --- a/apps/web-contract/src/views/contract/config/index.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/declaration/edit/basic-info-curd.tsx b/apps/web-contract/src/views/contract/declaration/edit/basic-info-curd.tsx deleted file mode 100644 index 9bed6722..00000000 --- a/apps/web-contract/src/views/contract/declaration/edit/basic-info-curd.tsx +++ /dev/null @@ -1,206 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -/** - * 筛选合同列表数据 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} - -export function getFormSchema(params: any = {}) { - const { contractTypeData } = params; - - return { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 16 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: true, - }, - }, - reportNo: { - title: '报审序号', - key: 'reportNo', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: true, - }, - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - dict: dict({ - async getData({ form = {}, getComponentRef }) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - disabled: true, - }, - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - dict: dict({ - async getData({ form = {} }) { - if (form.ctrType) { - return filterContractTypes(contractTypeData, form.ctrType); - } - return contractTypeData; - }, - }), - disabled: true, - }, - }, - ctrThreeType: { - title: '三级类别', - key: 'ctrTwoType', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - class: 'min-w-[180px]', - disabled: true, - }, - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 5 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - disabled: true, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 3 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - disabled: true, - }, - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[180px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - disabled: true, - }, - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[180px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - disabled: true, - }, - }, - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - disabled: true, - }, - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 8 }, - labelCol: { style: { width: '150px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - disabled: true, - }, - }, - organiza: { - title: '组织方式', - key: 'organiza', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[180px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_organization_form, form.organiza) - ?.label - } - - ); - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/declaration/edit/curd.tsx b/apps/web-contract/src/views/contract/declaration/edit/curd.tsx deleted file mode 100644 index c7a10c30..00000000 --- a/apps/web-contract/src/views/contract/declaration/edit/curd.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; -import { message } from 'ant-design-vue'; -import dayjs, { type Dayjs } from 'dayjs'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export function getFormSchema(params: any = {}) { - const { chooseCompanyModalApi, formRef, dictMap, sqConsignPt } = params || {}; - - const disabledDate = (current: Dayjs) => { - const form = formRef.value.form; - return current && current < dayjs(form.performStartDate); - }; - - const handleUpdateFormattedValue = () => { - const { performStartDate, performEndDate } = formRef.value.form; - - if ( - performStartDate && - performEndDate && - performEndDate < performStartDate - ) { - message.error('截止时间不能早于开始时间'); - formRef.value.setFormData({ - performEndDate: '', - }); - } - }; - - return { - col: { span: 24 }, - labelCol: { style: { width: '120px' } }, - initialForm: { - signUnitName: '克拉玛依市热力有限责任公司', - }, - columns: { - objects: { - title: '合同标的', - key: 'objects', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入合同标的' }], - }, - objectsSum: { - title: '标的金额', - key: 'objectsSum', - col: { span: 8 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - suffixRender({ form }) { - return ( - - {dictMap[DICT_TYPE.contract_currency_unit]?.label} - - ); - }, - }, - isIncludeTax: { - title: '是否含税', - key: 'isIncludeTax', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - dict: dict({ - data: dictMap[DICT_TYPE.common_whether], - }), - }, - }, - signUserId: { - title: '我方签约人', - key: 'signUserId', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - showSearch: true, - filterOption: (input, option) => { - return option.label.includes(input.toLowerCase()); - }, - dict: dict({ - data: sqConsignPt, - }), - }, - }, - signUnitName: { - title: '我方签约单位', - key: 'signUnitName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - readOnly: true, - }, - }, - providerName: { - title: '合同相对人', - key: 'providerName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - readOnly: true, - placeholder: '请选择合同相对人', - onClick: () => { - console.log(formRef.value.form); - chooseCompanyModalApi.setData({ - title: '选择合同相对人', - guids: formRef.value.form.providerId - ? [formRef.value.form.providerId] - : [], - }); - chooseCompanyModalApi.open(); - }, - }, - rules: [{ required: true, message: '请选择合同相对人' }], - }, - // media: { - // title: '公告发布方式', - // key: 'media', - // col: { span: 12 }, - // component: { - // name: 'a-input', - // vModel: 'value', - // }, - // }, - performType: { - title: '履行期限', - key: 'performType', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - }, - conditionalRender: { - match(_context) { - return true; - }, - render({ form }) { - // 注意此处的v-model写法 - - const options1 = dictMap[DICT_TYPE.contract_authorization_period]; - - return ( -
- - - -
- {form.performType === '0' && ( -
- - - - - - - - -
- )} - {form.isPerformDate === '1' && ( - - - - )} -
- ); - }, - }, - }, - performPlace: { - title: '履行地点', - key: 'performPlace', - col: { span: 16 }, - component: { - name: 'a-input', - vModel: 'value', - }, - }, - theIndexNum: { - title: '专项号', - key: 'theIndexNum', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - }, - }, - disputeMethod: { - title: '纠纷解决方式', - key: 'disputeMethod', - col: { span: 16 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.dispute_settlement_methods), - }), - }, - }, - warranty: { - title: '质保金期限', - key: 'warranty', - col: { span: 8 }, - component: { - name: 'a-input-number', - vModel: 'value', - min: 0, - addonAfter: '个月', - }, - }, - subsistRatio: { - title: '预付款比例', - key: 'subsistRatio', - col: { span: 16 }, - component: { - name: 'a-input-number', - vModel: 'value', - min: 0, - addonAfter: '%', - }, - }, - inputOpinion: { - title: '承办人意见', - key: 'inputOpinion', - col: { span: 24 }, - labelWrap: true, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/declaration/edit/index.vue b/apps/web-contract/src/views/contract/declaration/edit/index.vue deleted file mode 100644 index bd67d1b4..00000000 --- a/apps/web-contract/src/views/contract/declaration/edit/index.vue +++ /dev/null @@ -1,630 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/declaration/list/crud.tsx b/apps/web-contract/src/views/contract/declaration/list/crud.tsx deleted file mode 100644 index 08b59c6e..00000000 --- a/apps/web-contract/src/views/contract/declaration/list/crud.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'GUID'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { field: 'CTR_BASE_ID', title: '合同申报编号', width: 150 }, - { field: 'CONTRACT_NUMBER', title: '合同编号', width: 100 }, - { - field: 'CTR_NAME', - title: '合同名称', - minWidth: 200, - slots: { - default: 'contract-name-slot', - }, - }, - { field: 'OBJECTS', title: '合同标的', width: 150 }, - { - field: 'OBJECTS_SUM', - title: '标的金额', - width: 150, - slots: { - default: ({ row }) => { - return useRender.renderText(row.OBJECTS_SUM, row.PRICE_TYPE_NAME); - }, - }, - }, - { field: 'INPUT_PERSON', title: '合同承办人', width: 120 }, - { field: 'PROVIDER_NAME', title: '合同相对人名称', width: 150 }, - { field: 'CONTRACT_SOURCE_TYPE', title: '合同来源', width: 100 }, - { field: 'CHOICE_TYPE_NAME', title: '采购方式', width: 120 }, - { field: 'INPUT_DEPT_NAME', title: '承办人部门', width: 120 }, - { field: 'INPUT_DATE', title: '承办时间', width: 150 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - ctrBaseId2: { - title: '合同申报编号', - key: 'ctrBaseId2', - autoSearchTrigger: 'enter', - show: true, - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '标的金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - render({ form }) { - // 注意此处的v-model写法 - return ( -
- - - - - - - -
- ); - }, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - autoSearchTrigger: 'enter', - show: true, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: true, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_selection_method), - }), - }, - }, - time: { - title: '申报时间', - key: 'time', - autoSearchTrigger: 'enter', - show: true, - render({ form }) { - // 注意此处的v-model写法 - return ( -
- - - - - - - -
- ); - }, - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - autoSearchTrigger: 'enter', - show: true, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: true, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/declaration/list/index.vue b/apps/web-contract/src/views/contract/declaration/list/index.vue deleted file mode 100644 index 47a42f12..00000000 --- a/apps/web-contract/src/views/contract/declaration/list/index.vue +++ /dev/null @@ -1,180 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/declaration/print/crud.tsx b/apps/web-contract/src/views/contract/declaration/print/crud.tsx deleted file mode 100644 index 043ca29e..00000000 --- a/apps/web-contract/src/views/contract/declaration/print/crud.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { field: 'ctrBaseId', title: '合同申报编号', width: 150 }, - { field: 'contractNumber', title: '合同编号', width: 100 }, - { - field: 'ctrName', title: '合同名称', minWidth: 200, slots: { - default: 'contract-name-slot' - } - }, - { field: 'objects', title: '合同标的', width: 150 }, - { - field: 'objectsSum', title: '标的金额', width: 150, slots: { - default: ({ row }) => { - return useRender.renderText(row.objectsSum, row.priceTypeName); - } - } - }, - { field: 'inputPerson', title: '合同承办人', width: 120 }, - { field: 'providerName', title: '合同相对人名称', width: 150 }, - { field: 'contractSourceType', title: '合同来源', width: 100 }, - { field: 'choiceTypeName', title: '采购方式', width: 120 }, - { field: 'inputDeptName', title: '承办人部门', width: 120 }, - { field: 'inputDate', title: '承办时间', width: 150 }, - { - title: "操作", - width: 120, - slots: { default: "operate" }, - fixed:'right' - }, - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - }, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - render({ form }) { - //注意此处的v-model写法 - return ( -
- - - - - - - -
- ); - } - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/declaration/print/index.vue b/apps/web-contract/src/views/contract/declaration/print/index.vue deleted file mode 100644 index f78c099d..00000000 --- a/apps/web-contract/src/views/contract/declaration/print/index.vue +++ /dev/null @@ -1,248 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/declaration/todo/index.vue b/apps/web-contract/src/views/contract/declaration/todo/index.vue deleted file mode 100644 index caccae68..00000000 --- a/apps/web-contract/src/views/contract/declaration/todo/index.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/approval-card.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-approval/approval-card.vue deleted file mode 100644 index e014fc92..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/approval-card.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/curd.tsx b/apps/web-contract/src/views/contract/iframe-info/components/info-approval/curd.tsx deleted file mode 100644 index 4e78c6de..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/curd.tsx +++ /dev/null @@ -1,274 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -/** - * 筛选合同列表数据 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} - -export function getFormSchema(params: any = {}): any { - const { contractTypeData, readOnly = false } = params; - - return { - col: { span: 24 }, - initialForm: { - contractName: '', - frameProtocol: '0', - frameProtocolCtr: '0', - priceType: 'CNY', - }, - labelCol: { style: { width: '120px' } }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: readOnly, - }, - conditionalRender: { - match(_context) { - return true; - }, - render({ form }) { - return {form.contractName}; - }, - }, - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 6 }, - conditionalRender: { - match(_context) { - return true; - }, - render({ form }) { - const data = filterContractTypes(contractTypeData, '-1'); - for (const item of data) { - if (item.value === form.ctrType) { - return {item.label}; - } - } - return ; - }, - }, - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 6 }, - conditionalRender: { - match(_context) { - return true; - }, - render({ form }) { - const data = filterContractTypes(contractTypeData, form.ctrType); - for (const item of data) { - if (item.value === form.ctrTwoType) { - return {item.label}; - } - } - return ; - }, - }, - }, - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 6 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.common_whether, form.frameProtocol) - ?.label - } - - ); - }, - }, - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 6 }, - labelCol: { style: { width: '200px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.common_whether, form.frameProtocolCtr) - ?.label - } - - ); - }, - }, - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 6 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form }) { - console.log(form); - form.fundAllocationName = getDictObj( - DICT_TYPE.contract_fund_flow, - form.fundAllocation, - )?.label; - }, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_fund_flow, form.fundAllocation) - ?.label - } - - ); - }, - }, - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 6 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_funding_source, form.fundDitch) - ?.label - } - - ); - }, - }, - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 6 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {form.budgetSum} {form.priceTypeName} - - ); - }, - }, - }, - organiza: { - title: '组织形式', - key: 'organiza', - col: { span: 6 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj( - DICT_TYPE.contract_organization_form, - form.organiza, - )} - - ); - }, - }, - }, - fileList: { - title: '相关附件', - key: 'fileList', - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/info-approval.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-approval/info-approval.vue deleted file mode 100644 index 71e2a7ce..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-approval/info-approval.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-archived/curd.tsx b/apps/web-contract/src/views/contract/iframe-info/components/info-archived/curd.tsx deleted file mode 100644 index 38143209..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-archived/curd.tsx +++ /dev/null @@ -1,307 +0,0 @@ -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -/** - * 筛选合同列表数据 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} - -export function getFormSchema(params: any = {}) { - const { contractTypeData, readOnly = false } = params; - - return { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - }, - valueChange({ form, value, getComponentRef }) { - form.ctrTwoType = undefined; - if (value) { - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - } - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - let data = filterContractTypes(contractTypeData, '-1'); - for (const item of data) { - if (item.value === form.ctrType) { - return {item.label}; - } - } - return ; - }, - }, - rules: [{ required: true }], - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, form.ctrType); - }, - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - let data = filterContractTypes(contractTypeData, form.ctrType); - for (const item of data) { - if (item.value === form.ctrTwoType) { - return {item.label}; - } - } - return ; - }, - }, - rules: [{ required: true }], - }, - frameProtocol: { - title: '框架协议', - key: 'frameProtocol', - col: { span: 8 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj(DICT_TYPE.common_whether, form.frameProtocol)?.label} - - ); - }, - }, - }, - frameProtocolCtr: { - title: '框架协议下的合同', - key: 'frameProtocolCtr', - col: { span: 12 }, - labelCol: { style: { width: '200px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.common_whether, form.frameProtocolCtr) - ?.label - } - - ); - }, - }, - }, - fundAllocation: { - title: '资金流向', - key: 'fundAllocation', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - }, - valueChange: { - immediate: true, //是否立即执行一次 - handle({ form }) { - console.log(form); - form.fundAllocationName = getDictObj( - DICT_TYPE.contract_fund_flow, - form.fundAllocation, - )?.label; - }, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_fund_flow, form.fundAllocation) - ?.label - } - - ); - }, - }, - rules: [{ required: true, message: '请选择资金流向' }], - }, - fundDitch: { - title: '资金渠道', - key: 'fundDitch', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_funding_source, form.fundDitch) - ?.label - } - - ); - }, - }, - rules: [{ required: true, message: '请选择资金渠道' }], - }, - budgetSum: { - title: '预算金额', - key: 'budgetSum', - col: { span: 8 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.budgetSum}; - }, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 6 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj(DICT_TYPE.contract_currency_unit, form.priceType)} - - ); - }, - }, - }, - organiza: { - title: '组织形式', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj(DICT_TYPE.contract_organization_form, form.organiza)} - - ); - }, - }, - rules: [{ required: true, message: '请选择组织形式' }], - }, - fileList: { - title: '相关附件', - key: 'fileList', - }, - }; -} diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-archived/info-archived.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-archived/info-archived.vue deleted file mode 100644 index 21fe95e3..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-archived/info-archived.vue +++ /dev/null @@ -1,209 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-business/business-card.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-business/business-card.vue deleted file mode 100644 index 8e35bf97..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-business/business-card.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-business/curd.tsx b/apps/web-contract/src/views/contract/iframe-info/components/info-business/curd.tsx deleted file mode 100644 index 99005eac..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-business/curd.tsx +++ /dev/null @@ -1,430 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -/** - * 合同选商 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} - -export function getFormSchemaByBusiness(params: any = {}) { - const { contractTypeData, readOnly = false } = params; - - return { - col: { span: 24 }, - initialForm: { - contractName: '', - frameProtocol: '0', - frameProtocolCtr: '0', - priceType: 'CNY', - }, - labelCol: { style: { width: '120px' } }, - columns: { - contractName: { - title: '项目', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - ctrType: { - title: '项目类别', - key: 'ctrType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - }, - valueChange({ form, value, getComponentRef }) { - form.ctrTwoType = undefined; - if (value) { - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - } - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - const data = filterContractTypes(contractTypeData, '-1'); - for (const item of data) { - if (item.value === form.ctrType) { - return {item.label}; - } - } - return ; - }, - }, - rules: [{ required: true }], - }, - ctrTwoType: { - title: '项目名称', - key: 'ctrTwoType', - col: { span: 24 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, form.ctrType); - }, - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - const data = filterContractTypes(contractTypeData, form.ctrType); - for (const item of data) { - if (item.value === form.ctrTwoType) { - return {item.label}; - } - } - return ; - }, - }, - rules: [{ required: true }], - }, - frameProtocol: { - title: '商务计价方式', - key: 'frameProtocol', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.common_whether, form.frameProtocol) - ?.label - } - - ); - }, - }, - }, - frameProtocolCtr: { - title: '选商方式', - key: 'frameProtocolCtr', - col: { span: 12 }, - labelCol: { style: { width: '200px' } }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.common_whether), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.common_whether, form.frameProtocolCtr) - ?.label - } - - ); - }, - }, - }, - fundAllocation: { - title: '选商方式说明', - key: 'fundAllocation', - col: { span: 24 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_fund_flow), - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form }) { - console.log(form); - form.fundAllocationName = getDictObj( - DICT_TYPE.contract_fund_flow, - form.fundAllocation, - )?.label; - }, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_fund_flow, form.fundAllocation) - ?.label - } - - ); - }, - }, - rules: [{ required: true, message: '请选择资金流向' }], - }, - fundDitch: { - title: '资质要求', - key: 'fundDitch', - col: { span: 24 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_funding_source), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - { - getDictObj(DICT_TYPE.contract_funding_source, form.fundDitch) - ?.label - } - - ); - }, - }, - rules: [{ required: true, message: '请选择资金渠道' }], - }, - budgetSum: { - title: '受托招标代理', - key: 'budgetSum', - col: { span: 24 }, - colon: false, - component: { - name: 'a-input-number', - vModel: 'value', - class: 'w-full', - min: 0, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.budgetSum}; - }, - }, - }, - priceType: { - title: '', - key: 'priceType', - col: { span: 6 }, - labelCol: { style: { width: '12px' } }, - colon: false, - component: { - name: 'fs-dict-select', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_currency_unit), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj(DICT_TYPE.contract_currency_unit, form.priceType)} - - ); - }, - }, - }, - organiza: { - title: '推荐供应商', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj( - DICT_TYPE.contract_organization_form, - form.organiza, - )} - - ); - }, - }, - rules: [{ required: true, message: '请选择组织形式' }], - }, - organiza1: { - title: '项目范围', - key: 'organiza', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj( - DICT_TYPE.contract_organization_form, - form.organiza, - )} - - ); - }, - }, - rules: [{ required: true, message: '请选择组织形式' }], - }, - contractName1: { - title: '项目内容', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - contractName2: { - title: '工期要求(质量要求)', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - contractName3: { - title: '工程量(采购量)', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - contractName4: { - title: '计划投资明细', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return readOnly; - }, - render({ form }) { - return {form.contractName}; - }, - }, - rules: [{ required: true }], - }, - fileList: { - title: '相关附件', - key: 'fileList', - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-business/info-business.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-business/info-business.vue deleted file mode 100644 index a51fec70..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-business/info-business.vue +++ /dev/null @@ -1,120 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-declaration/info-declaration.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-declaration/info-declaration.vue deleted file mode 100644 index 22a51245..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-declaration/info-declaration.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-perform/info-perform.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-perform/info-perform.vue deleted file mode 100644 index b4821873..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-perform/info-perform.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-sign/info-sign.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-sign/info-sign.vue deleted file mode 100644 index b07af01f..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-sign/info-sign.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-track/curd.tsx b/apps/web-contract/src/views/contract/iframe-info/components/info-track/curd.tsx deleted file mode 100644 index 5add2898..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-track/curd.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export function getColumns(_params?: any): any { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '阶段', width: 100 }, - { field: 'handleUser', title: '处理人', width: 100 }, - { field: 'handleDepart', title: '处理人部门', width: 100 }, - { field: 'handleTime', title: '处理时间', width: 100 }, - { field: 'status', title: '处理状态', width: 100 }, - ]; -} diff --git a/apps/web-contract/src/views/contract/iframe-info/components/info-track/info-track.vue b/apps/web-contract/src/views/contract/iframe-info/components/info-track/info-track.vue deleted file mode 100644 index 80b9a1e7..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/components/info-track/info-track.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/iframe-info/index.vue b/apps/web-contract/src/views/contract/iframe-info/index.vue deleted file mode 100644 index 7b26ee06..00000000 --- a/apps/web-contract/src/views/contract/iframe-info/index.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/perform/edit/components/break/curd.tsx b/apps/web-contract/src/views/contract/perform/edit/components/break/curd.tsx deleted file mode 100644 index 4144324f..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/break/curd.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -export function getFormSchema(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - currencyTypeId: 'CNY', - }, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入' }], - }, - ctrName: { - title: '合同名称', - key: 'ctrName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入合同名称' }], - }, - breachReason: { - title: '违约方', - key: 'breachReason', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '我方违约', value: 0 }, - { label: '对方违约', value: 1 }, - { label: '双方违约', value: 2 }, - ], - }), - }, - }, - lidatedDamages: { - title: '违约金', - key: 'lidatedDamages', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - breachReasonDesc: { - title: '违约情况简述', - key: 'breachReasonDesc', - col: { span: 12 }, - - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - proposal: { - title: '处理意见', - key: 'proposal', - col: { span: 12 }, - - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} - -export function getFormSchemaByCertification(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: {}, - columns: {}, - }; -} - -export function getFormSchemaByShareholder(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - columns: {}, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/edit/components/break/index.vue b/apps/web-contract/src/views/contract/perform/edit/components/break/index.vue deleted file mode 100644 index 941322de..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/break/index.vue +++ /dev/null @@ -1,288 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/edit/components/change/curd.tsx b/apps/web-contract/src/views/contract/perform/edit/components/change/curd.tsx deleted file mode 100644 index 40899bfd..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/change/curd.tsx +++ /dev/null @@ -1,263 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import type { delay } from 'lodash-es'; -import type { Dayjs } from 'dayjs'; -import dayjs from 'dayjs'; - -export function getFormSchema(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - currencyTypeId: 'CNY', - }, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入' }], - }, - ctrName: { - title: '合同名称', - key: 'ctrName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入合同名称' }], - }, - - changeReason: { - title: '变更原因', - key: 'changeReason', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '我方', value: 0 }, - { label: '对方', value: 1 }, - { label: '双方', value: 2 }, - { label: '其它', value: 3 }, - ], - }), - }, - }, - performDescribe: { - title: '变更原因说明', - key: 'performDescribe', - col: { span: 12 }, - - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - changeMatters: { - title: '变更事项', - key: 'changeMatters', - col: { span: 24 }, - component: { - name: 'fs-dict-checkbox', - vModel: 'value', - dict: dict({ - data: [ - { label: '合同名称', value: 0 }, - { label: '标的金额', value: 1 }, - { label: '履行期限', value: 2 }, - { label: '合同相对人', value: 3 }, - { label: '纠纷解决方式', value: 4 }, - { label: '其它', value: 5 }, - ], - }), - }, - }, - changeCtrName: { - title: '合同名称变更为', - key: 'changeCtrName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - priObjectSum: { - title: '原标的金额', - key: 'priObjectSum', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - objectsSum: { - title: '累变更后标的金额', - key: 'objectsSum', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - oldperformtime: { - title: '原履行时间', - key: 'oldperformtime', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - performStartDate: { - title: '变更后履行时间', - key: 'performStartDate', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - providerChange: { - title: '合同相对人变更', - key: 'providerChange', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '名称变更', value: 0 }, - { label: '法人变更', value: 1 }, - ], - }), - }, - }, - priProviderName: { - title: '原合同相对人', - key: 'priProviderName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - providerName: { - title: '变更为', - key: 'providerName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - juridicalPerson: { - title: '原供应商法人', - key: 'juridicalPerson', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - oldsuppliesotherpersonchange: { - title: '变更后供应商法人', - key: 'oldsuppliesotherpersonchange', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - isDisputeMethod: { - title: '解决纠纷方式', - key: 'isDisputeMethod', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - disputeMethod: { - title: '变更为', - key: 'disputeMethod', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '仲裁', value: 0 }, - { label: '诉讼', value: 1 }, - { label: '其它', value: 2 }, - ], - }), - }, - }, - other: { - title: '其他', - key: 'other', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - //需要更换对应的组件 - fileUuid: { - title: '附件', - key: 'fileUuid', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - - }, - }; -} - - -export function getFormSchemaByCertification(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: {}, - columns: { - - - }, - }; -} - -export function getFormSchemaByShareholder(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - columns: { - - - - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/edit/components/change/index.vue b/apps/web-contract/src/views/contract/perform/edit/components/change/index.vue deleted file mode 100644 index 116249bc..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/change/index.vue +++ /dev/null @@ -1,288 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/edit/components/payment/curd.tsx b/apps/web-contract/src/views/contract/perform/edit/components/payment/curd.tsx deleted file mode 100644 index af147d59..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/payment/curd.tsx +++ /dev/null @@ -1,298 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import type { delay } from 'lodash-es'; -import type { Dayjs } from 'dayjs'; -import dayjs from 'dayjs'; - -export function getFormSchema(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - currencyTypeId: 'CNY', - }, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入合同编号' }], - }, - ctrName: { - title: '合同名称', - key: 'ctrName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入' }], - }, - contractMoney: { - title: '合同标的金额', - key: 'contractMoney', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - paymentSum: { - title: '累计结算金额', - key: 'paymentSum', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - paymentMoney: { - title: '本次付款金额', - key: 'paymentMoney', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - surplusMoney: { - title: '剩余金额', - key: 'surplusMoney', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - }, - paymentDate: { - title: '应付款时间', - key: 'paymentDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - rules: [{ required: true, message: '请选择应付款时间' }], - }, - paympaymentKindIdenttype: { - title: '付款性质', - key: 'paymentKindId', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[200px]', - dict: dict({ - data: getDictOptions(DICT_TYPE.counterparty_nature), - }), - }, - rules: [{ required: true, message: '请选择付款性质' }], - }, - paymentUnit: { - title: '付款单位', - key: 'paymentUnit', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - gatheringUnit: { - title: '收款单位', - key: 'gatheringUnit', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - gatheringBank: { - title: '开户银行', - key: 'gatheringBank', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - gatheringAccount: { - title: '收款账号', - key: 'gatheringAccount', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - paymentRemark: { - title: '合同约定的付款条件', - key: 'paymentRemark', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - creditCode: { - title: '合同相对人履约情况', - key: 'creditCode', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - checkResult: { - title: '本次验收成果', - key: 'checkResult', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - delaySay: { - title: '延迟履行说明', - key: 'delaySay', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - isYsDelay: { - title: '验收是否延迟履行', - key: 'isYsDelay', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '否', value: 0 }, - { label: '是', value: 1 }, - ], - }), - }, - }, - isFkDelay: { - title: '付款是否延迟履行', - key: 'isFkDelay', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '否', value: 0 }, - { label: '是', value: 1 }, - ], - }), - }, - }, - isOver: { - title: '合同是否履行完毕', - key: 'isOver', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '否', value: 0 }, - { label: '是', value: 1 }, - ], - }), - }, - }, - toUsePerson: { - title: '对方经办人', - key: 'toUsePerson', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - doneDate: { - title: '完成时间', - key: 'doneDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - rules: [{ required: true, message: '请选择有效期' }], - }, - remark: { - title: '付款备注', - key: 'remark', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - }, - - // marketScope: { - // title: '营业执照经营范围', - // key: 'marketScope', - // col: { span: 24 }, - // component: { - // name: 'a-textarea', - // vModel: 'value', - // autosize: { minRows: 4, maxRows: 6 }, - // }, - // }, - }, - }; -} - - -export function getFormSchemaByCertification(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: {}, - columns: { - - - }, - }; -} - -export function getFormSchemaByShareholder(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - columns: { - - - - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/edit/components/payment/index.vue b/apps/web-contract/src/views/contract/perform/edit/components/payment/index.vue deleted file mode 100644 index 6f2afd3f..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/payment/index.vue +++ /dev/null @@ -1,288 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/edit/components/relieve/curd.tsx b/apps/web-contract/src/views/contract/perform/edit/components/relieve/curd.tsx deleted file mode 100644 index cab1a1eb..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/relieve/curd.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import type { delay } from 'lodash-es'; -import type { Dayjs } from 'dayjs'; -import dayjs from 'dayjs'; - -export function getFormSchema(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: { - currencyTypeId: 'CNY', - }, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入' }], - }, - ctrName: { - title: '合同名称', - key: 'ctrName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - rules: [{ required: true, message: '请输入合同名称' }], - }, - canType: { - title: '事项', - key: 'canType', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '合同终止', value: 0 }, - { label: '合同解除', value: 1 }, - ], - }), - }, - }, - - cancelReason: { - title: '变更原因', - key: 'cancelReason', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: [ - { label: '我方', value: 0 }, - { label: '对方', value: 1 }, - { label: '双方', value: 2 }, - { label: '其他', value: 3 }, - ], - }), - }, - }, - cancelReasonDesc: { - title: '变更原因说明', - key: 'cancelReasonDesc', - col: { span: 12 }, - - component: { - name: 'a-textarea', - vModel: 'value', - autosize: { minRows: 4, maxRows: 6 }, - }, - }, - - - }, - }; -} - - -export function getFormSchemaByCertification(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - initialForm: {}, - columns: { - - - }, - }; -} - -export function getFormSchemaByShareholder(_params: any = {}) { - return { - labelCol: { style: { width: '140px' } }, - columns: { - - - - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/edit/components/relieve/index.vue b/apps/web-contract/src/views/contract/perform/edit/components/relieve/index.vue deleted file mode 100644 index 1dfd566a..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/components/relieve/index.vue +++ /dev/null @@ -1,288 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/edit/index.vue b/apps/web-contract/src/views/contract/perform/edit/index.vue deleted file mode 100644 index fcbcc7c8..00000000 --- a/apps/web-contract/src/views/contract/perform/edit/index.vue +++ /dev/null @@ -1,68 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/contract/perform/list/crud.tsx b/apps/web-contract/src/views/contract/perform/list/crud.tsx deleted file mode 100644 index 530a5341..00000000 --- a/apps/web-contract/src/views/contract/perform/list/crud.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '合同编号', width: 100 }, - { - field: 'ctrName', title: '合同名称', minWidth: 200, slots: { - default: 'contract-name-slot' - } - }, - { field: 'contractAmount', title: '标的金额', width: 100 }, - { field: 'contractSubject', title: '合同标的', width: 150 }, - { field: 'contractCounterparty', title: '合同相对人', width: 150 }, - { field: 'cumulativeSettlementAmount', title: '累计结算金额', width: 150 }, - { field: 'changeCount', title: '变更次数', width: 100 }, - { field: 'contractStatus', title: '合同状态', width: 100 } - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - organiza: { - title: '组织形式', - key: 'organiza', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form) - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - }, - time: { - title: '申报时间', - key: 'startDate', - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/list/index.vue b/apps/web-contract/src/views/contract/perform/list/index.vue deleted file mode 100644 index 3587b876..00000000 --- a/apps/web-contract/src/views/contract/perform/list/index.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/result-list/crud.tsx b/apps/web-contract/src/views/contract/perform/result-list/crud.tsx deleted file mode 100644 index 82f9c1e2..00000000 --- a/apps/web-contract/src/views/contract/perform/result-list/crud.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import { unitComponentProps } from '#/common/unit'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'step', - title: '节点状态', - width: 130, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.step, - DICT_TYPE.contract_business_flow_node, - ); - }, - }, - }, - { field: 'reportNo', title: '报审序号', width: 100 }, - { - field: 'contractName', - title: '合同名称', - minWidth: 200, - slots: { - default: 'contract-name-slot', - }, - }, - { field: 'choiceTypeName', title: '选商方式', width: 150 }, - { field: 'fundDitchName', title: '资金渠道', width: 150 }, - { field: 'contractMoney', title: '金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - { - field: 'operate', - title: '操作', - width: 60, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - inputDepartId: { - title: '承办单位', - key: 'inputUnitId', - component: unitComponentProps, - autoSearchTrigger: 'enter', - show: true, - }, - contractMoney: { - title: '合同金额', - key: 'contractMoney', - component: { - name: 'a-input-number', - vModel: 'value', - min: 0, - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - choiceType: { - title: '选商方式', - key: 'choiceType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_selection_method), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/result-list/index.vue b/apps/web-contract/src/views/contract/perform/result-list/index.vue deleted file mode 100644 index a8131919..00000000 --- a/apps/web-contract/src/views/contract/perform/result-list/index.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/result/crud.tsx b/apps/web-contract/src/views/contract/perform/result/crud.tsx deleted file mode 100644 index 530a5341..00000000 --- a/apps/web-contract/src/views/contract/perform/result/crud.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '合同编号', width: 100 }, - { - field: 'ctrName', title: '合同名称', minWidth: 200, slots: { - default: 'contract-name-slot' - } - }, - { field: 'contractAmount', title: '标的金额', width: 100 }, - { field: 'contractSubject', title: '合同标的', width: 150 }, - { field: 'contractCounterparty', title: '合同相对人', width: 150 }, - { field: 'cumulativeSettlementAmount', title: '累计结算金额', width: 150 }, - { field: 'changeCount', title: '变更次数', width: 100 }, - { field: 'contractStatus', title: '合同状态', width: 100 } - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - organiza: { - title: '组织形式', - key: 'organiza', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form) - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - }, - time: { - title: '申报时间', - key: 'startDate', - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/result/index.vue b/apps/web-contract/src/views/contract/perform/result/index.vue deleted file mode 100644 index 9004bc22..00000000 --- a/apps/web-contract/src/views/contract/perform/result/index.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/temporary-archive/crud.tsx b/apps/web-contract/src/views/contract/perform/temporary-archive/crud.tsx deleted file mode 100644 index 765eddb0..00000000 --- a/apps/web-contract/src/views/contract/perform/temporary-archive/crud.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '合同编号', width: 100 }, - { - field: 'ctrName', title: '合同名称', minWidth: 200, slots: { - default: 'contract-name-slot' - } - }, - { field: 'contractAmount', title: '标的金额', width: 100 }, - { field: 'contractSubject', title: '合同标的', width: 150 }, - { field: 'contractCounterparty', title: '合同相对人', width: 150 }, - { field: 'cumulativeSettlementAmount', title: '累计结算金额', width: 150 }, - { field: 'changeCount', title: '变更次数', width: 100 }, - { field: 'contractStatus', title: '合同状态', width: 100 } - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/perform/temporary-archive/index.vue b/apps/web-contract/src/views/contract/perform/temporary-archive/index.vue deleted file mode 100644 index b65a150a..00000000 --- a/apps/web-contract/src/views/contract/perform/temporary-archive/index.vue +++ /dev/null @@ -1,135 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/todo/index.vue b/apps/web-contract/src/views/contract/perform/todo/index.vue deleted file mode 100644 index 81f10202..00000000 --- a/apps/web-contract/src/views/contract/perform/todo/index.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/perform/todo/info-curd.tsx b/apps/web-contract/src/views/contract/perform/todo/info-curd.tsx deleted file mode 100644 index 4b408ca0..00000000 --- a/apps/web-contract/src/views/contract/perform/todo/info-curd.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import type { Dayjs } from 'dayjs'; -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - ctrBaseId: { - title: '合同编号', - key: 'ctrBaseId', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return {form.ctrBaseId}; - }, - }, - }, - ctrName: { - title: '合同名称', - key: 'ctrName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return {form.ctrName}; - }, - }, - }, - paymentSum: { - title: '累计结算金额', - key: 'paymentSum', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - allowClear: false, - }, - conditionalRender: { - match({ form }) { - return true; - }, - render({ form }) { - return {form.paymentSum || 0}; - }, - }, - suffixRender({ form, value }) { - return ( - - { - getDictObj(DICT_TYPE.contract_currency_unit, form.priceType) - ?.label - } - - ); - }, - }, - // 剩余金额 - // 本次付款金额 - // 合同标的金额 - - paymentKindId: { - title: '付款性质', - key: 'paymentKindId', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.payment_nature), - }), - }, - valueChange: { - immediate: true, //是否立即执行一次 - handle({ form }) { - form.paymentKindName = getDictObj( - DICT_TYPE.payment_nature, - form.paymentKindId, - )?.label; - }, - }, - }, - paymentDate: { - title: '应付款时间', - key: 'paymentDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - }, - time: { - title: '申报时间', - key: 'startDate', - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/schema.ts b/apps/web-contract/src/views/contract/schema.ts deleted file mode 100644 index 535bc6d1..00000000 --- a/apps/web-contract/src/views/contract/schema.ts +++ /dev/null @@ -1,144 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { h } from 'vue'; - -import { Tooltip } from 'ant-design-vue'; - -export const PrimaryKey = 'guid'; - -/** 获取待办/已办列表的列 */ -export function getTodoColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '编号', width: 150 }, - { - field: 'contractName', - title: '名称', - minWidth: 250, - slots: { default: 'title_slot' }, - }, - { - field: 'module', - title: '模块', - width: 120, - slots: { - default: ({ row }) => { - return row.flowName; - }, - }, - }, - { - field: 'taskName', - title: '任务', - width: 150, - slots: { - default: ({ row }) => { - return row.taskName; - }, - }, - }, - { field: 'createTime', title: '分配时间', width: 150 }, - { field: 'inputDepartName', title: '承办单位/部门', width: 150 }, - { field: 'assigneeName', title: '承办人', width: 100 }, - { - field: 'operate', - title: '操作', - width: 60, - fixed: 'right', - slots: { default: 'operate' }, - }, - // { field: 'contractStatus', title: '交接给', width: 100 }, - ]; -} - -/** 获取审批列表的列 */ -export function getApprovalColumns( - _params: any = {}, -): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '编号', width: 150 }, - { - field: 'title', - title: '任务名称', - minWidth: 250, - slots: { - default: ({ row }) => { - const text = row.title; - if (text) { - const classArr: string[] = ['line-clamp-3']; - return h( - Tooltip, - { trigger: 'hover' }, - { - trigger: () => h('span', { class: classArr.join(' ') }, text), - default: () => text, - }, - ); - } - return ''; - }, - }, - }, - { field: 'contractAmount', title: '送审方式', width: 150 }, - { field: 'contractSubject', title: '审批级别', width: 200 }, - { field: 'contractCounterparty', title: '审批人', width: 150 }, - { field: 'cumulativeSettlementAmount', title: '送审时间', width: 150 }, - { field: 'changeCount', title: '审批时间', width: 100 }, - { field: 'contractStatus', title: '审批状态', width: 100 }, - { field: 'contractStatus', title: '审批意见', width: 100 }, - ]; -} - -export function getAuditInfoColumns( - _params: any = {}, -): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - // { field: 'contractId', title: '编号', width: 100 }, - { - field: 'taskName', - title: '任务名称', - minWidth: 200, - }, - { - field: 'assigneeId', - title: '审批人', - width: 150, - slots: { default: ({ row }) => row.userName || row.assigneeId }, - }, - { field: 'startTime', title: '送审时间', width: 150 }, - { field: 'endTime', title: '审批时间', width: 150 }, - { field: 'type', title: '审批状态', width: 100 }, - { field: 'message', title: '审批意见', width: 100 }, - ]; -} - -export function getColumnsByFiles(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 60, align: 'center', fixed: 'left' }, - { field: 'contractId', title: '附件编号', width: 120 }, - { - field: 'name', - title: '附件名称', - minWidth: 200, - slots: { - default: ({ row }) => { - const text = row.title; - if (text) { - const classArr: string[] = ['line-clamp-3']; - return h( - Tooltip, - { trigger: 'hover' }, - { - trigger: () => h('span', { class: classArr.join(' ') }, text), - default: () => text, - }, - ); - } - return ''; - }, - }, - }, - ]; -} diff --git a/apps/web-contract/src/views/contract/sign-authorization/edit/curd.tsx b/apps/web-contract/src/views/contract/sign-authorization/edit/curd.tsx deleted file mode 100644 index de8a8657..00000000 --- a/apps/web-contract/src/views/contract/sign-authorization/edit/curd.tsx +++ /dev/null @@ -1,366 +0,0 @@ -import { ref } from 'vue'; - -import { useVbenModal } from '@vben/common-ui'; - -import { dict } from '@fast-crud/fast-crud'; -import { message } from 'ant-design-vue'; -import dayjs, { type Dayjs } from 'dayjs'; -import { VxeGrid, type VxeGridPropTypes } from 'vxe-table'; - -import { unitComponentProps } from '#/common/unit'; -import { - DICT_TYPE, - getDictObjByOptions, - getDictOptions, - getDictOptionsAsync, -} from '#/utils/dict'; -import chooseUserModal from '#/views/system/user/choose-user-modal.vue'; - -const [ChooseUserModal, chooseUserModalApi] = useVbenModal({ - connectedComponent: chooseUserModal, -}); - -export function getUserColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { field: 'ACCOUNT_ID', title: '用户ID', width: 120 }, - { field: 'EMPLOYEE_NAME', title: '用户姓名', width: 100 }, - { field: 'EMPLOYEE_GENDER', title: '性别', width: 80 }, - { field: 'ORG_NAME', title: '所属组织', width: 150 }, - { field: 'EMPLOYEE_ID_CODE_NO', title: '身份证号', width: 180 }, - ]; -} - -export function getFormSchema(params?: any): any { - const { formRef, dictMap } = params || {}; - const xGridRef = ref(); - - /** Hooks - 表格 */ - const gridOptions = { - columns: getUserColumns(), - data: [], - toolbarConfig: { - enabled: false, - }, - pagerConfig: { - enabled: false, - }, - }; - - const disabledDate = (current: Dayjs) => { - const form = formRef.value.form; - return current && current < dayjs(form.consignDateBegin); - }; - - const handleUpdateFormattedValue = () => { - const { consignDateBegin, consignDateEnd } = formRef.value.form; - - if ( - consignDateBegin && - consignDateEnd && - consignDateEnd < consignDateBegin - ) { - message.error('截止时间不能早于开始时间'); - formRef.value.setFormData({ - consignDateEnd: '', - }); - } - }; - - return { - col: { span: 24 }, - initialForm: { - entrustUserName: '克拉玛依市热力有限责任公司', - lawUserId: '', - lawUserName: '吴兴明', - positionName: '经理', - contractName: '', - priceType: 'CNY', - isBid: '0', - }, - labelCol: { style: { width: '120px' } }, - columns: { - entrustUserName: { - title: '委托人', - key: 'entrustUserName', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - render({ form }) { - return {form.entrustUserName}; - }, - }, - lawUserName: { - title: '法定代表人', - key: 'lawUserName', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - render({ form }) { - return {form.lawUserName}; - }, - }, - positionName: { - title: '职务', - key: 'positionName', - col: { span: 8 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - }, - render({ form }) { - return {form.positionName}; - }, - }, - consignType: { - title: '授权类型', - key: 'consignType', - col: { span: 24 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - allowClear: false, - dict: dict({ - async getData(_context) { - const type = DICT_TYPE.contract_authorization_type2; - dictMap[type] = await getDictOptionsAsync(type); - return dictMap[type]; - }, - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - async handle({ form }) { - form.consignTypeName = getDictObjByOptions( - dictMap[DICT_TYPE.contract_authorization_type2], - form.consignType, - )?.label; - }, - }, - rules: [{ required: true, message: '请选择授权类型' }], - }, - projectNum5: { - title: '受托人', - key: 'projectNum5', - col: { span: 20 }, - conditionalRender: { - match(_context) { - return true; - }, - render(context) { - return ( -
- { - context.form.peoples = e; - xGridRef && xGridRef.value.loadData(e); - }} - > - { - console.log(context); - chooseUserModalApi.setData({ - limitMultipleNum: 1, - userIds: - context.form.peoples && context.form.peoples.length > 0 - ? context.form.peoples.map((row) => row.ACCOUNT_ID) - : [], - }); - chooseUserModalApi.open(); - }} - type="primary" - > - 点击选择 - - - -
- ); - }, - }, - }, - isconsignDate: { - title: '授权期限', - key: 'isconsignDate', - col: { span: 24 }, - render({ form }) { - // 注意此处的v-model写法 - const options1 = dictMap[DICT_TYPE.contract_authorization_period]; - - return ( -
- - - -
- {form.isconsignDate === '0' && ( -
- - - - - - - -
- )} - {form.isconsignDate === '1' && ( - - - - )} -
- ); - }, - rules: [{ required: true, message: '请选择授权期限' }], - }, - remarks: { - title: '备注', - key: 'remarks', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} - -/** - * 筛选合同列表数据 - * - */ -function filterContractTypes(contractTypeData: any = [], parentId: string) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); -} -export function getFormSchemaByAuthRange(params?: any): any { - const { contractTypeData, readOnly = false } = params || {}; - - return { - col: { span: 24 }, - labelCol: { style: { width: '120px' } }, - initialForm: { - priceType: 'CNY', - }, - columns: { - authRange: { - title: '承办部门', - key: 'authRange', - col: { span: 8 }, - component: { - ...unitComponentProps, - disabled: readOnly, - }, - rules: [{ required: true, message: '请选择承办部门' }], - }, - ctrType: { - title: '合同类别', - key: 'ctrType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - prototype: true, - disabled: readOnly, - dict: dict({ - async getData(_context) { - return filterContractTypes(contractTypeData, '-1'); - }, - }), - }, - valueChange: { - immediate: true, // 是否立即执行一次 - handle({ form, getComponentRef }) { - form.ctrTwoType = undefined; - getComponentRef('ctrTwoType').reloadDict(); // 执行city的select组件的reloadDict()方法,触发“city”重新加载字典 - }, - }, - rules: [{ required: true, message: '请选择合同类别' }], - }, - ctrTwoType: { - title: '二级类别', - key: 'ctrTwoType', - col: { span: 8 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - prototype: true, - disabled: readOnly, - dict: dict({ - async getData({ form = {} }) { - return filterContractTypes(contractTypeData, form.ctrType); - }, - }), - }, - rules: [{ required: true, message: '请选择二级类别' }], - }, - price: { - title: '标的金额', - key: 'price', - col: { span: 24 }, - render({ form }) { - return ( -
- - - - - - - - - - - -
- ); - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/sign-authorization/edit/index.vue b/apps/web-contract/src/views/contract/sign-authorization/edit/index.vue deleted file mode 100644 index facaab71..00000000 --- a/apps/web-contract/src/views/contract/sign-authorization/edit/index.vue +++ /dev/null @@ -1,431 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/sign-authorization/list/crud.tsx b/apps/web-contract/src/views/contract/sign-authorization/list/crud.tsx deleted file mode 100644 index fc7206f4..00000000 --- a/apps/web-contract/src/views/contract/sign-authorization/list/crud.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { DICT_TYPE, getDictObj } from '#/utils/dict'; - -export const PrimaryKey = 'consignId'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - title: '签约授权编号', - field: 'consignId', - width: 200, - }, - { - title: '受托人', - field: 'userPerson', - width: 200, - }, - { - title: '授权类型', - field: 'consignType', - width: 120, - slots: { - default: ({ row }) => { - return ( - getDictObj(DICT_TYPE.contract_authorization_type2, row.consignType) - ?.label || '' - ); - }, - }, - }, - { - title: '授权期限(起)', - field: 'authorizationStartDate', - width: 150, - }, - { - title: '授权期限(止)', - field: 'authorizationEndDate', - width: 150, - }, - // { - // field: 'operate', - // title: '操作', - // width: 60, - // align: 'center', - // fixed: 'right', - // slots: { default: 'operate' }, - // }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - contractName: { - title: '受托人姓名', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/sign-authorization/list/index.vue b/apps/web-contract/src/views/contract/sign-authorization/list/index.vue deleted file mode 100644 index b34b1bf3..00000000 --- a/apps/web-contract/src/views/contract/sign-authorization/list/index.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/sign/edit/curd.tsx b/apps/web-contract/src/views/contract/sign/edit/curd.tsx deleted file mode 100644 index ecebee1a..00000000 --- a/apps/web-contract/src/views/contract/sign/edit/curd.tsx +++ /dev/null @@ -1,234 +0,0 @@ -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictOptionsAsync } from '#/utils/dict'; - -export function getFormSchema(params: any = {}) { - const { readOnly = false } = params; - - return { - col: { span: 24 }, - labelCol: { style: { width: '120px' } }, - initialForm: { - ourStampName: '克拉玛依市热力有限责任公司合同专用章', - }, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: readOnly, - }, - }, - contractNumber: { - title: '合同编号', - key: 'contractNumber', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - allowClear: false, - disabled: readOnly, - }, - }, - signUserName: { - title: '我方签约人', - key: 'signUserName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - disabled: readOnly, - }, - }, - signTime: { - title: '我方签字时间', - key: 'signTime', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - valueFormat: 'YYYY-MM-DD', - }, - }, - providerName: { - title: '合同相对人', - key: 'providerName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - readOnly: true, - placeholder: '请选择合同相对人', - disabled: readOnly, - }, - }, - providerSigner: { - title: '对方签约人', - key: 'providerSigner', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - readOnly: true, - placeholder: '请输入对方签约人', - }, - rules: [{ required: true, message: '请输入对方签约人' }], - }, - ourStamp: { - title: '我方盖章人', - key: 'ourStamp', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - }, - }, - ourStampDate: { - title: '我方盖章(签订)时间', - key: 'ourStampDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - valueFormat: 'YYYY-MM-DD', - }, - }, - ourStampName: { - title: '我方用章名称', - key: 'ourStampName', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - disabled: readOnly, - }, - }, - signPlace: { - title: '签订地点', - key: 'signPlace', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - }, - }, - effectType: { - title: '合同成立时生效', - key: 'effectType', - col: { span: 12 }, - component: { - name: 'fs-dict-select', - vModel: 'value', - allowClear: false, - class: 'min-w-[180px]', - dict: dict({ - getData: async () => { - return await getDictOptionsAsync(DICT_TYPE.common_whether); - }, - }), - }, - }, - buildDate: { - title: '合同成立时间', - key: 'buildDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - valueFormat: 'YYYY-MM-DD', - }, - }, - }, - }; -} - -export function getFormSchemaByText(params: any = {}) { - const { contractTypeData, readOnly = false } = params; - - return { - col: { span: 24 }, - labelCol: { style: { width: '120px' } }, - initialForm: {}, - columns: { - textDistributionQuantity: { - title: '文本分发数量', - key: 'textDistributionQuantity', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - }, - rules: [{ required: true, message: '请输入文本分发数量' }], - }, - textDistributionDate: { - title: '文本分发时间', - key: 'textDistributionDate', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - valueFormat: 'YYYY-MM-DD', - }, - rules: [{ required: true, message: '请选择文本分发时间' }], - }, - textRecoveryQuantity: { - title: '文本回收数量', - key: 'textRecoveryQuantity', - col: { span: 12 }, - component: { - name: 'a-input-number', - vModel: 'value', - }, - rules: [{ required: true, message: '请输入文本回收数量' }], - }, - textRecoveryType: { - title: '文本回收类型', - key: 'textRecoveryType', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - }, - rules: [{ required: true, message: '请输入文本回收类型' }], - }, - isTextRecovered: { - title: '文本是否回收', - key: 'isTextRecovered', - col: { span: 12 }, - component: { - name: 'a-radio-group', - vModel: 'value', - options: [ - { label: '是', value: '是' }, - { label: '否', value: '否' }, - ], - }, - rules: [{ required: true, message: '请选择文本是否回收' }], - }, - textDistributor: { - title: '文本分发人', - key: 'textDistributor', - col: { span: 12 }, - component: { - name: 'a-input', - vModel: 'value', - }, - rules: [{ required: true, message: '请输入文本分发人' }], - }, - textDistributionNotes: { - title: '文本分发说明', - key: 'textDistributionNotes', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/sign/edit/index.vue b/apps/web-contract/src/views/contract/sign/edit/index.vue deleted file mode 100644 index 5fd5d614..00000000 --- a/apps/web-contract/src/views/contract/sign/edit/index.vue +++ /dev/null @@ -1,483 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/sign/edit/upload-modal.vue b/apps/web-contract/src/views/contract/sign/edit/upload-modal.vue deleted file mode 100644 index d19de0e0..00000000 --- a/apps/web-contract/src/views/contract/sign/edit/upload-modal.vue +++ /dev/null @@ -1,129 +0,0 @@ - - diff --git a/apps/web-contract/src/views/contract/sign/list/crud.tsx b/apps/web-contract/src/views/contract/sign/list/crud.tsx deleted file mode 100644 index fadf5a67..00000000 --- a/apps/web-contract/src/views/contract/sign/list/crud.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'contractId'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'contractName', - title: '合同名称', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.contractName); - }, - }, - fixed: 'left', - }, - { - field: 'reportNo', - title: '报审序号', - width: 100, - }, - { - field: 'ctrTypeName', - title: '合同类别', - width: 200, - slots: { - default: ({ row }) => { - return useRender.renderText( - row.ctrTypeName, - `-${row.ctrTwoTypeName}`, - ); - }, - }, - }, - { field: 'budgetSum', title: '预算金额', width: 100 }, - { field: 'priceTypeName', title: '币种', width: 100 }, - { - field: 'organiza', - title: '组织形式', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.organiza, - DICT_TYPE.contract_organization_form, - ); - }, - }, - }, - { - field: 'fundAllocation', - title: '资金流向', - width: 100, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.fundAllocation, - DICT_TYPE.contract_fund_flow, - ); - }, - }, - }, - { field: 'inputPerson', title: '承办人', width: 100 }, - { field: 'inputDepartName', title: '承办部门', width: 100 }, - { field: 'inputDate', title: '承办时间', width: 130 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - contractName: { - title: '合同名称', - key: 'contractName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - organiza: { - title: '组织形式', - key: 'organiza', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.contract_organization_form), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - price: { - title: '预算金额', - key: 'price', - autoSearchTrigger: 'enter', - show: true, - }, - time: { - title: '申报时间', - key: 'startDate', - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/contract/sign/list/index.vue b/apps/web-contract/src/views/contract/sign/list/index.vue deleted file mode 100644 index f6a26b80..00000000 --- a/apps/web-contract/src/views/contract/sign/list/index.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/sign/todo/index.vue b/apps/web-contract/src/views/contract/sign/todo/index.vue deleted file mode 100644 index 577cd56f..00000000 --- a/apps/web-contract/src/views/contract/sign/todo/index.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/contract/utils.ts b/apps/web-contract/src/views/contract/utils.ts deleted file mode 100644 index ec1a9e24..00000000 --- a/apps/web-contract/src/views/contract/utils.ts +++ /dev/null @@ -1,91 +0,0 @@ -import Apis from '#/api'; - -/** - * 前往详情页 - * @param type - * @param id - */ -export function toDetailPage(type: string, id: string, params?: any) { - const { contractId, flowInstanceId } = params || {}; - const name = '合同详情'; // 网页名称,可为空; - const iWidth = 1200; // 弹出窗口的宽度; - const iHeight = 800; // 弹出窗口的高度; - // window.screen.height获得屏幕的高,window.screen.width获得屏幕的宽 - const iTop = (window.screen.height - 30 - iHeight) / 2; // 获得窗口的垂直位置; - const iLeft = (window.screen.width - 10 - iWidth) / 2; // 获得窗口的水平位置; - const queryParams = new URLSearchParams(); - - if (type !== undefined) queryParams.append('type', type); - if (flowInstanceId !== undefined) queryParams.append('f', flowInstanceId); - if (id !== undefined) queryParams.append('id', id); - if (contractId !== undefined) queryParams.append('contractId', contractId); - - const url = `/iframe/contract/info?${queryParams.toString()}`; - - // 5. 创建一个新的 标签 - const a = document.createElement('a'); - - // 6. 设置 标签的属性 - a.href = url; // 目标 URL - a.target = '_blank'; // 在新标签页中打开 - a.rel = 'noopener noreferrer'; // 增加安全性,防止新页面获取原页面的 window 对象 - - // 7. 隐藏 标签 - a.style.display = 'none'; // 设置为不可见 - - // 8. 将 标签添加到页面中 - document.body.appendChild(a); - - // 9. 模拟点击 标签 - a.click(); - - // 10. 点击完成后,移除 标签 - document.body.removeChild(a); - // window.open( - // url, - // name, - // `height=${iHeight},innerHeight=${iHeight},width=${iWidth},innerWidth=${iWidth},top=${iTop},left=${iLeft},toolbar=no,menubar=no,scrollbars=auto,resizable=no,location=no,status=no`, - // ); -} - -/** - * 筛选合同列表数据 - */ -export async function getContractTypes(parentId: string) { - try { - const contractReferTypeData = await Apis.contractReferType.get_list({ - params: {}, - }); - return contractReferTypeData.rows - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => item.parentId === parentId); - } catch (error) { - console.log(error); - return []; - } -} - -/** - * 筛选合同列表数据 - */ -export function filterContractTypes( - contractTypeData: any = [], - parentId: string, -) { - return contractTypeData - .map((item) => { - item.label = item.contrLevelName; - item.value = item.contrLevelId; - return item; - }) - .filter((item) => { - if (parentId) { - return item.parentId === parentId; - } - return true; - }); -} diff --git a/apps/web-contract/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-contract/src/views/dashboard/analytics/analytics-trends.vue deleted file mode 100644 index 35e90276..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/analytics-trends.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-data.vue b/apps/web-contract/src/views/dashboard/analytics/analytics-visits-data.vue deleted file mode 100644 index 30c4265d..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-data.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-sales.vue b/apps/web-contract/src/views/dashboard/analytics/analytics-visits-sales.vue deleted file mode 100644 index 260520b8..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-sales.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-contract/src/views/dashboard/analytics/analytics-visits-source.vue deleted file mode 100644 index e0d0aab5..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/analytics-visits-source.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/analytics/analytics-visits.vue b/apps/web-contract/src/views/dashboard/analytics/analytics-visits.vue deleted file mode 100644 index 7e1f14ee..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/analytics-visits.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/analytics/index.vue b/apps/web-contract/src/views/dashboard/analytics/index.vue deleted file mode 100644 index 00b34df1..00000000 --- a/apps/web-contract/src/views/dashboard/analytics/index.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/components/typing.ts b/apps/web-contract/src/views/dashboard/components/typing.ts deleted file mode 100644 index 4053d262..00000000 --- a/apps/web-contract/src/views/dashboard/components/typing.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { Component } from 'vue'; - -interface AnalysisOverviewItem { - icon: Component | string; - title: string; - totalTitle: string; - totalValue: number; - value: number; -} - -interface WorkbenchProjectItem { - color?: string; - content: string; - date: string; - group: string; - icon: Component | string; - title: string; -} - -interface WorkbenchTrendItem { - avatar: string; - content: string; - date: string; - title: string; -} - -interface WorkbenchTodoItem { - completed: boolean; - content: string; - date: string; - title: string; -} - -interface WorkbenchQuickNavItem { - color?: string; - icon: Component | string; - title: string; -} - -export type { - AnalysisOverviewItem, - WorkbenchProjectItem, - WorkbenchQuickNavItem, - WorkbenchTodoItem, - WorkbenchTrendItem, -}; diff --git a/apps/web-contract/src/views/dashboard/components/workbench-header.vue b/apps/web-contract/src/views/dashboard/components/workbench-header.vue deleted file mode 100644 index 0bc6dc63..00000000 --- a/apps/web-contract/src/views/dashboard/components/workbench-header.vue +++ /dev/null @@ -1,44 +0,0 @@ - - diff --git a/apps/web-contract/src/views/dashboard/components/workbench-quick-nav.vue b/apps/web-contract/src/views/dashboard/components/workbench-quick-nav.vue deleted file mode 100644 index 4c127cdf..00000000 --- a/apps/web-contract/src/views/dashboard/components/workbench-quick-nav.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/components/workbench-todo.vue b/apps/web-contract/src/views/dashboard/components/workbench-todo.vue deleted file mode 100644 index 80b4d200..00000000 --- a/apps/web-contract/src/views/dashboard/components/workbench-todo.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/home/index.vue b/apps/web-contract/src/views/dashboard/home/index.vue deleted file mode 100644 index c15fbc2e..00000000 --- a/apps/web-contract/src/views/dashboard/home/index.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/dashboard/workspace/index.vue b/apps/web-contract/src/views/dashboard/workspace/index.vue deleted file mode 100644 index c8ae0273..00000000 --- a/apps/web-contract/src/views/dashboard/workspace/index.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/demos/antd/index.vue b/apps/web-contract/src/views/demos/antd/index.vue deleted file mode 100644 index 8286bebb..00000000 --- a/apps/web-contract/src/views/demos/antd/index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/apps/web-contract/src/views/system/dict/crud.tsx b/apps/web-contract/src/views/system/dict/crud.tsx deleted file mode 100644 index 11a90d40..00000000 --- a/apps/web-contract/src/views/system/dict/crud.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { type CreateCrudOptionsRet, dict, utils } from '@fast-crud/fast-crud'; - -export default function (): CreateCrudOptionsRet { - return { - crudOptions: { - columns: { - age: { - form: { - helper: '正则表达式', - rules: [{ message: '必须为整数', pattern: /^\d+$/ }], - }, - title: '年龄', - type: 'text', - }, - email: { - form: { - rules: [{ message: '请填写正确的邮箱', type: 'email' }], - }, - title: '邮箱', - type: 'text', - }, - name: { - editForm: { - rules: [{ max: 5, message: '姓名长度为2-5', min: 2 }], - }, - form: { - component: { - props: { - showWordLimit: true, - type: 'text', - }, - }, - helper: '添加和编辑时必填,编辑时额外需要校验长度', - rules: [{ message: '请输入姓名', required: true }], - }, - search: { - show: true, - }, - title: '姓名', - type: 'text', - }, - status: { - dict: dict({ - url: '/mock/dicts/OpenStatusEnum', - }), - form: { - rules: [{ message: '请选择一个选项', required: true }], - }, - title: '必选', - type: 'dict-select', - }, - url: { - form: { - rules: [{ message: '请填写正确的url', type: 'url' }], - }, - title: 'URL', - type: 'text', - }, - }, - form: { - afterSubmit(context) { - utils.logger.log('afterSubmit', context); - }, - beforeSubmit(context) { - utils.logger.log('beforeSubmit', context); - }, - row: { - gutter: 20, - }, - }, - request: {}, - settings: { - viewFormUseCellComponent: true, - }, - }, - }; -} diff --git a/apps/web-contract/src/views/system/dict/dict-data-edit-modal.vue b/apps/web-contract/src/views/system/dict/dict-data-edit-modal.vue deleted file mode 100644 index f2d74cc9..00000000 --- a/apps/web-contract/src/views/system/dict/dict-data-edit-modal.vue +++ /dev/null @@ -1,194 +0,0 @@ - - diff --git a/apps/web-contract/src/views/system/dict/dict-type-edit-modal.vue b/apps/web-contract/src/views/system/dict/dict-type-edit-modal.vue deleted file mode 100644 index c45b1ac4..00000000 --- a/apps/web-contract/src/views/system/dict/dict-type-edit-modal.vue +++ /dev/null @@ -1,156 +0,0 @@ - - diff --git a/apps/web-contract/src/views/system/dict/index.vue b/apps/web-contract/src/views/system/dict/index.vue deleted file mode 100644 index 744d927d..00000000 --- a/apps/web-contract/src/views/system/dict/index.vue +++ /dev/null @@ -1,357 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/system/user/choose-user-modal.vue b/apps/web-contract/src/views/system/user/choose-user-modal.vue deleted file mode 100644 index f8301779..00000000 --- a/apps/web-contract/src/views/system/user/choose-user-modal.vue +++ /dev/null @@ -1,383 +0,0 @@ - - diff --git a/apps/web-contract/src/views/user-center/center/index.vue b/apps/web-contract/src/views/user-center/center/index.vue deleted file mode 100644 index 324c1a74..00000000 --- a/apps/web-contract/src/views/user-center/center/index.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/apps/web-contract/src/views/user-center/todo/index.vue b/apps/web-contract/src/views/user-center/todo/index.vue deleted file mode 100644 index ca9cbd20..00000000 --- a/apps/web-contract/src/views/user-center/todo/index.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - - diff --git a/apps/web-contract/tailwind.config.mjs b/apps/web-contract/tailwind.config.mjs deleted file mode 100644 index f17f556f..00000000 --- a/apps/web-contract/tailwind.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config'; diff --git a/apps/web-contract/tsconfig.json b/apps/web-contract/tsconfig.json deleted file mode 100644 index 9abc9995..00000000 --- a/apps/web-contract/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/web-app.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "#/*": ["./src/*"] - }, - "allowImportingTsExtensions": true, - "noImplicitAny": false - }, - - "references": [{ "path": "./tsconfig.node.json" }], - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] -} diff --git a/apps/web-contract/tsconfig.node.json b/apps/web-contract/tsconfig.node.json deleted file mode 100644 index f40de7f5..00000000 --- a/apps/web-contract/tsconfig.node.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/node.json", - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "types": ["./src/globals.d.ts"], - "noEmit": false - }, - "include": ["vite.config.mts"] -} diff --git a/apps/web-contract/vite.config.mts b/apps/web-contract/vite.config.mts deleted file mode 100644 index 413e1066..00000000 --- a/apps/web-contract/vite.config.mts +++ /dev/null @@ -1,135 +0,0 @@ -import { defineConfig, viteAutoBuildDict } from '@vben/vite-config'; - -// import { autoBuildDict } from 'common-utils'; -import autoImport from 'unplugin-auto-import/vite'; - -export default defineConfig(async () => { - return { - application: {}, - vite: { - plugins: [ - viteAutoBuildDict({ - dataPath: 'src/utils/dict/static.data.js', - sharedPath: 'src/utils/dict/shared.ts', - }), - autoImport({ - dts: true, // (false) 配置文件生成位置,默认是根目录 /auto-imports.d.ts - // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 - imports: ['vue'], - include: [/\.[tj]sx?$/, /\.vue$/, /\.vue\?vue/], - resolvers: [], - vueTemplate: true, // 是否在 vue 模板中自动导入 - }), - ], - server: { - host: '0.0.0.0', - open: false, - port: 9529, - proxy: { - '/api/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/app/, '/'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.147.164:8083/rl`, - ws: true, - }, - '/api/flowCenter': { - changeOrigin: true, - rewrite: (path) => - path.replace(/^\/api\/flowCenter/, '/flowCenter'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.147.164:19007`, - ws: true, - }, - '/api/czg/flowCenter': { - changeOrigin: true, - rewrite: (path) => - path.replace(/^\/api\/czg\/flowCenter/, '/flowCenter'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.147.164:19007`, - ws: true, - }, - '/api/zp/flowCenter': { - changeOrigin: true, - rewrite: (path) => - path.replace(/^\/api\/zp\/flowCenter/, '/flowCenter'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.147.164:19007`, - ws: true, - }, - '/api/zzz/flowCenter': { - changeOrigin: true, - rewrite: (path) => - path.replace(/^\/api\/zzz\/flowCenter/, '/flowCenter'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.147.164:19007`, - ws: true, - }, - '/api/czg/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/app/, '/'), - // target: `http://192.168.0.193:8083/rl`, - target: `http://192.168.147.238:8083/rl`, - ws: true, - }, - '/api/czg/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/uc/, '/'), - target: `http://192.168.147.164:8082`, - // target: `http://192.168.147.164:8082`, - ws: true, - }, - '/api/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/uc/, '/'), - // target: `http://10.71.220.24:8082`, - target: `http://192.168.147.164:8082`, - ws: true, - }, - '/api/xmh/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.147.144:8083/rl`, - ws: true, - }, - '/api/xmh/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.147.164:8082`, - ws: true, - }, - '/api/zp/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.153.236:8083/rl`, - ws: true, - }, - '/api/zp/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.147.164:8082`, - ws: true, - }, - '/api/zzz/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zzz\/app/, '/'), - // target: `http://192.168.0.193:8083/rl`, - target: `http://192.168.147.164:8089/rl`, - ws: true, - }, - '/api/zzz/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zzz\/uc/, '/'), - target: `http://192.168.147.164:8082`, - // target: `http://192.168.147.164:8082`, - ws: true, - }, - }, - }, - }, - }; -}); diff --git a/apps/web-facilities/.env b/apps/web-facilities/.env deleted file mode 100644 index 611670ee..00000000 --- a/apps/web-facilities/.env +++ /dev/null @@ -1,5 +0,0 @@ -# 应用标题 -VITE_APP_TITLE=热力设备管理系统 - -# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 -VITE_APP_NAMESPACE=fac diff --git a/apps/web-facilities/.env.analyze b/apps/web-facilities/.env.analyze deleted file mode 100644 index ffafa8dd..00000000 --- a/apps/web-facilities/.env.analyze +++ /dev/null @@ -1,7 +0,0 @@ -# public path -VITE_BASE=/ - -# Basic interface address SPA -VITE_GLOB_API_URL=/api - -VITE_VISUALIZER=true diff --git a/apps/web-facilities/.env.development b/apps/web-facilities/.env.development deleted file mode 100644 index c138f482..00000000 --- a/apps/web-facilities/.env.development +++ /dev/null @@ -1,16 +0,0 @@ -# 端口号 -VITE_PORT=5666 - -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启 Nitro Mock服务,true 为开启,false 为关闭 -VITE_NITRO_MOCK=true - -# 是否打开 devtools,true 为打开,false 为关闭 -VITE_DEVTOOLS=false - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true diff --git a/apps/web-facilities/.env.production b/apps/web-facilities/.env.production deleted file mode 100644 index 5993af93..00000000 --- a/apps/web-facilities/.env.production +++ /dev/null @@ -1,19 +0,0 @@ -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启压缩,可以设置为 none, brotli, gzip -VITE_COMPRESS=none - -# 是否开启 PWA -VITE_PWA=false - -# vue-router 的模式 -VITE_ROUTER_HISTORY=history - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true - -# 打包后是否生成dist.zip -VITE_ARCHIVER=true diff --git a/apps/web-facilities/auto-imports.d.ts b/apps/web-facilities/auto-imports.d.ts deleted file mode 100644 index d7d30c37..00000000 --- a/apps/web-facilities/auto-imports.d.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// noinspection JSUnusedGlobalSymbols -// Generated by unplugin-auto-import -// biome-ignore lint: disable -export {} -declare global { - const EffectScope: typeof import('vue')['EffectScope'] - const computed: typeof import('vue')['computed'] - const createApp: typeof import('vue')['createApp'] - const customRef: typeof import('vue')['customRef'] - const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] - const defineComponent: typeof import('vue')['defineComponent'] - const effectScope: typeof import('vue')['effectScope'] - const getCurrentInstance: typeof import('vue')['getCurrentInstance'] - const getCurrentScope: typeof import('vue')['getCurrentScope'] - const h: typeof import('vue')['h'] - const inject: typeof import('vue')['inject'] - const isProxy: typeof import('vue')['isProxy'] - const isReactive: typeof import('vue')['isReactive'] - const isReadonly: typeof import('vue')['isReadonly'] - const isRef: typeof import('vue')['isRef'] - const markRaw: typeof import('vue')['markRaw'] - const nextTick: typeof import('vue')['nextTick'] - const onActivated: typeof import('vue')['onActivated'] - const onBeforeMount: typeof import('vue')['onBeforeMount'] - const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] - const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] - const onDeactivated: typeof import('vue')['onDeactivated'] - const onErrorCaptured: typeof import('vue')['onErrorCaptured'] - const onMounted: typeof import('vue')['onMounted'] - const onRenderTracked: typeof import('vue')['onRenderTracked'] - const onRenderTriggered: typeof import('vue')['onRenderTriggered'] - const onScopeDispose: typeof import('vue')['onScopeDispose'] - const onServerPrefetch: typeof import('vue')['onServerPrefetch'] - const onUnmounted: typeof import('vue')['onUnmounted'] - const onUpdated: typeof import('vue')['onUpdated'] - const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] - const provide: typeof import('vue')['provide'] - const reactive: typeof import('vue')['reactive'] - const readonly: typeof import('vue')['readonly'] - const ref: typeof import('vue')['ref'] - const resolveComponent: typeof import('vue')['resolveComponent'] - const shallowReactive: typeof import('vue')['shallowReactive'] - const shallowReadonly: typeof import('vue')['shallowReadonly'] - const shallowRef: typeof import('vue')['shallowRef'] - const toRaw: typeof import('vue')['toRaw'] - const toRef: typeof import('vue')['toRef'] - const toRefs: typeof import('vue')['toRefs'] - const toValue: typeof import('vue')['toValue'] - const triggerRef: typeof import('vue')['triggerRef'] - const unref: typeof import('vue')['unref'] - const useAttrs: typeof import('vue')['useAttrs'] - const useCssModule: typeof import('vue')['useCssModule'] - const useCssVars: typeof import('vue')['useCssVars'] - const useId: typeof import('vue')['useId'] - const useModel: typeof import('vue')['useModel'] - const useSlots: typeof import('vue')['useSlots'] - const useTemplateRef: typeof import('vue')['useTemplateRef'] - const watch: typeof import('vue')['watch'] - const watchEffect: typeof import('vue')['watchEffect'] - const watchPostEffect: typeof import('vue')['watchPostEffect'] - const watchSyncEffect: typeof import('vue')['watchSyncEffect'] -} -// for type re-export -declare global { - // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' - import('vue') -} -// for vue template auto import -import { UnwrapRef } from 'vue' -declare module 'vue' { - interface GlobalComponents {} - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef - readonly computed: UnwrapRef - readonly createApp: UnwrapRef - readonly customRef: UnwrapRef - readonly defineAsyncComponent: UnwrapRef - readonly defineComponent: UnwrapRef - readonly effectScope: UnwrapRef - readonly getCurrentInstance: UnwrapRef - readonly getCurrentScope: UnwrapRef - readonly h: UnwrapRef - readonly inject: UnwrapRef - readonly isProxy: UnwrapRef - readonly isReactive: UnwrapRef - readonly isReadonly: UnwrapRef - readonly isRef: UnwrapRef - readonly markRaw: UnwrapRef - readonly nextTick: UnwrapRef - readonly onActivated: UnwrapRef - readonly onBeforeMount: UnwrapRef - readonly onBeforeUnmount: UnwrapRef - readonly onBeforeUpdate: UnwrapRef - readonly onDeactivated: UnwrapRef - readonly onErrorCaptured: UnwrapRef - readonly onMounted: UnwrapRef - readonly onRenderTracked: UnwrapRef - readonly onRenderTriggered: UnwrapRef - readonly onScopeDispose: UnwrapRef - readonly onServerPrefetch: UnwrapRef - readonly onUnmounted: UnwrapRef - readonly onUpdated: UnwrapRef - readonly onWatcherCleanup: UnwrapRef - readonly provide: UnwrapRef - readonly reactive: UnwrapRef - readonly readonly: UnwrapRef - readonly ref: UnwrapRef - readonly resolveComponent: UnwrapRef - readonly shallowReactive: UnwrapRef - readonly shallowReadonly: UnwrapRef - readonly shallowRef: UnwrapRef - readonly toRaw: UnwrapRef - readonly toRef: UnwrapRef - readonly toRefs: UnwrapRef - readonly toValue: UnwrapRef - readonly triggerRef: UnwrapRef - readonly unref: UnwrapRef - readonly useAttrs: UnwrapRef - readonly useCssModule: UnwrapRef - readonly useCssVars: UnwrapRef - readonly useId: UnwrapRef - readonly useModel: UnwrapRef - readonly useSlots: UnwrapRef - readonly useTemplateRef: UnwrapRef - readonly watch: UnwrapRef - readonly watchEffect: UnwrapRef - readonly watchPostEffect: UnwrapRef - readonly watchSyncEffect: UnwrapRef - } -} diff --git a/apps/web-facilities/index.html b/apps/web-facilities/index.html deleted file mode 100644 index 0aa687e0..00000000 --- a/apps/web-facilities/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - <%= VITE_APP_TITLE %> - - - - -
- - - - diff --git a/apps/web-facilities/package.json b/apps/web-facilities/package.json deleted file mode 100644 index 3d8c01ed..00000000 --- a/apps/web-facilities/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "web-facilities", - "version": "1.0.0", - "type": "module", - "scripts": { - "build": "pnpm vite build --mode production", - "build:dev": "pnpm vite build --mode development", - "build:analyze": "pnpm vite build --mode analyze", - "dev": "pnpm vite --mode development", - "dev:prod": "pnpm vite --mode production", - "preview": "vite preview --port 4174", - "typecheck": "vue-tsc --noEmit --skipLibCheck" - }, - "imports": { - "#/*": "./src/*" - }, - "dependencies": { - "common-utils": "workspace:*", - "@fast-crud/fast-crud": "^1.21.2", - "@fast-crud/fast-extends": "^1.21.2", - "@fast-crud/ui-antdv4": "^1.21.2", - "@fast-crud/ui-interface": "^1.21.2", - "@vben-core/shadcn-ui": "workspace:*", - "@vben/access": "workspace:*", - "@vben/common-ui": "workspace:*", - "@vben/constants": "workspace:*", - "@vben/hooks": "workspace:*", - "@vben/icons": "workspace:*", - "@vben/layouts": "workspace:*", - "@vben/locales": "workspace:*", - "@vben/plugins": "workspace:*", - "@vben/preferences": "workspace:*", - "@vben/request": "workspace:*", - "@vben/stores": "workspace:*", - "@vben/styles": "workspace:*", - "@vben/types": "workspace:*", - "@vben/utils": "workspace:*", - "@vueuse/core": "^11.0.3", - "alova": "^3.0.14", - "ant-design-vue": "^4.2.3", - "big.js": "^6.2.1", - "dayjs": "^1.11.13", - "exceljs": "^4.4.0", - "lodash-es": "^4.17.21", - "pinia": "2.2.2", - "pinia-plugin-persistedstate": "^3.2.1", - "sortablejs": "^1.15.2", - "tyme4ts": "^1.1.2", - "vue": "^3.4.38", - "vue-router": "^4.4.3", - "vxe-pc-ui": "^4.1.12", - "vxe-table": "^4.7.74", - "vxe-table-plugin-antd": "^4.0.8", - "vxe-table-plugin-export-xlsx": "^4.0.2", - "xe-utils": "^3.5.30" - }, - "devDependencies": { - "@types/big.js": "^6.2.2", - "@types/lodash-es": "^4.17.12", - "sass": "^1.77.8", - "typescript": "^5.5.4", - "unplugin-auto-import": "^0.18.2", - "unplugin-vue-components": "^0.27.4", - "vite-plugin-lazy-import": "^1.0.7" - } -} diff --git a/apps/web-facilities/postcss.config.mjs b/apps/web-facilities/postcss.config.mjs deleted file mode 100644 index 3d807045..00000000 --- a/apps/web-facilities/postcss.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config/postcss'; diff --git a/apps/web-facilities/public/favicon.ico b/apps/web-facilities/public/favicon.ico deleted file mode 100644 index bce5299c7c127268d844c7163ebc7721ccb0ded5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/apps/web-facilities/readme.md b/apps/web-facilities/readme.md deleted file mode 100644 index 2d70e919..00000000 --- a/apps/web-facilities/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -pnpm i @fast-crud/fast-crud -pnpm i @fast-crud/fast-extends -pnpm i @fast-crud/ui-interface diff --git a/apps/web-facilities/src/api/global.d.ts b/apps/web-facilities/src/api/global.d.ts deleted file mode 100644 index efaaa939..00000000 --- a/apps/web-facilities/src/api/global.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface QueryOptions { - params?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface BodyOptions { - params?: AnyObject; - data?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface RequestOptions { - url: string; - data?: QueryOptions; -} - -export interface MutationOptions { - url: string; - data?: BodyOptions; -} diff --git a/apps/web-facilities/src/api/index.ts b/apps/web-facilities/src/api/index.ts deleted file mode 100644 index 8338cf2d..00000000 --- a/apps/web-facilities/src/api/index.ts +++ /dev/null @@ -1,516 +0,0 @@ -import { http } from "./request/index" -import type { QueryOptions, BodyOptions } from "./global.d" - -export default { - - meeting: { - /** 协同办公/会议管理 分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/meeting/page", data), - /** 协同办公/会议管理 删除会议 */ - post_deletes: (data?: BodyOptions) => http.post("/app/meeting/deletes", data), - /** 协同办公/会议管理 会议保存 */ - post_save: (data?: BodyOptions) => http.post("/app/meeting/save", data), - /** 协同办公/会议管理 查看会议台账 */ - get_list: (data?: QueryOptions) => http.get("/app/meeting/list", data), - list: { - /** 协同办公/会议管理 会议台账导出 */ - get_export: (data?: QueryOptions) => http.get("/app/meeting/list/export", data), - }, - }, - tysq: { - zzjg: { - yhjbda: { - YhjbdaController: { - /** 统一授权 未命名接口 */ - get_yhjbdaGrid: (data?: QueryOptions) => http.get("/app/tysq/zzjg/yhjbda/YhjbdaController/yhjbdaGrid", data), - }, - }, - }, - }, - dictType: { - /** 协同办公/字典表 字典类型查询 */ - get_list: (data?: QueryOptions) => http.get("/app/dictType/list", data), - /** 协同办公/字典表 字典类型保存 */ - post_save: (data?: BodyOptions) => http.post("/app/dictType/save", data), - /** 协同办公/字典表 字典类型删除 */ - post_delete: (data?: BodyOptions) => http.post("/app/dictType/deletes", data), - }, - uaa: { - /** 用户中心 用户登陆 Copy */ - post_validateAccount: (data?: BodyOptions) => http.post("/uc/uaa/validateAccount", data), - }, - api: { - core: { - orgemplbc: { - employee: { - /** 用户中心 获取用户信息(分页) */ - post_paging: (data?: BodyOptions) => http.post("/uc/api/core/orgemplbc/employee/paging", data), - }, - organization: { - RL: { - /** 用户中心 根据组织机构id获取员工信息 */ - get_employee: (data?: QueryOptions) => http.get("/uc/api/core/orgemplbc/organization/RL/employee", data), - }, - /** 用户中心 获取组织结构信息 */ - post_paging: (data?: BodyOptions) => http.post("/uc/api/core/orgemplbc/organization/paging", data), - }, - /** 用户中心 根据组织机构id和用户信息查询 */ - post_employee: (data?: BodyOptions) => http.post("/uc/api/core/orgemplbc/employee", data), - }, - }, - }, - sys: { - user: { - /** 用户中心 根据token获取用户信息 */ - post_checkToken: (data?: BodyOptions) => http.post("/uc/sys/user/checkToken", data), - functiontree: { - /** 用户中心 获取菜单接口 */ - get_XTBGXT: (data?: QueryOptions) => http.get("/uc/sys/user/functiontree/XTBGXT", data), - /** 统一授权 未命名接口 */ - get_PLRL: (data?: QueryOptions) => http.get("/uc/sys/user/functiontree/PLRL", data), - }, - }, - }, - zbgl: { - /** 协同办公/值班管理 值班查询 */ - get_queryZbInfo: (data?: QueryOptions) => http.get("/app/zbgl/queryZbInfo", data), - /** 协同办公/值班管理 保存值班信息 */ - post_save: (data?: BodyOptions) => http.post("/app/zbgl/save", data), - /** 协同办公/值班管理 删除值班信息 */ - get_deletes: (data?: QueryOptions) => http.get("/app/zbgl/deletes", data), - /** 协同办公/值班管理 导入值班人员信息 */ - post_importZbry: (data?: BodyOptions) => http.post("/app/zbgl/importZbry", data), - /** 协同办公/值班管理 门户值班信息查询 */ - get_getDutyInfo: (data?: QueryOptions) => http.get("/app/zbgl/getDutyInfo", data), - /** 协同办公/值班管理 导出 */ - post_export: (data?: BodyOptions) => http.post("/app/zbgl/export", data), - }, - dictData: { - /** 协同办公/字典表 字典数据保存 */ - post_save: (data?: BodyOptions) => http.post("/app/dictData/save", data), - /** 合同系统/项目管理 保存 */ - get_save: (data?: QueryOptions) => http.get("/app/dictData/save", data), - /** 合同系统/项目名称管理 查询 */ - get_page: (data?: QueryOptions) => http.get("/app/dictData/page", data), - /** 协同办公/字典表 字典数据删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/dictData/deletes", data), - /** 合同系统/项目管理 删除 */ - get_deletes: (data?: QueryOptions) => http.get("/app/dictData/deletes", data), - }, - user: { - /** 统一授权 获取用户列表 */ - get_page: (data?: QueryOptions) => http.get("/app/user/page", data), - }, - dish: { - /** 协同办公/订餐管理/菜谱管理 菜谱查询 */ - get_page: (data?: QueryOptions) => http.get("/app/dish/page", data), - /** 协同办公/订餐管理/菜谱管理 菜谱保存 */ - post_save: (data?: BodyOptions) => http.post("/app/dish/save", data), - /** 协同办公/订餐管理/食谱管理 菜谱删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/dish/deletes", data), - }, - recipe: { - /** 协同办公/订餐管理/食谱管理 食谱查询 */ - get_page: (data?: QueryOptions) => http.get("/app/recipe/page", data), - /** 协同办公/订餐管理/食谱管理 食谱保存 */ - post_save: (data?: BodyOptions) => http.post("/app/recipe/save", data), - /** 协同办公/订餐管理/食谱管理 食谱导出 */ - get_export: (data?: QueryOptions) => http.get("/app/recipe/export", data), - /** 协同办公/订餐管理/食谱管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/recipe/saveBatch", data), - /** 协同办公/订餐管理/食谱管理 食谱编辑 */ - post_edit: (data?: BodyOptions) => http.post("/app/recipe/edit", data), - }, - ccsq: { - /** 协同办公/出差申请 出差申请查询 */ - get_page: (data?: QueryOptions) => http.get("/app/ccsq/page", data), - /** 协同办公/出差申请 申请单保存 */ - post_save: (data?: BodyOptions) => http.post("/app/ccsq/save", data), - /** 协同办公/出差申请 申请单删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/ccsq/deletes", data), - /** 协同办公/出差申请 出差送审、审核 */ - post_audit: (data?: BodyOptions) => http.post("/app/ccsq/audit", data), - /** 协同办公/出差申请 退回 */ - post_turnTask: (data?: BodyOptions) => http.post("/app/ccsq/turnTask", data), - /** 协同办公/出差申请 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => http.post("/app/ccsq/startWorkFlow", data), - /** 协同办公/出差申请 送审 */ - post_submit: (data?: BodyOptions) => http.post("/app/ccsq/submit", data), - /** 协同办公/出差申请 待办 */ - get_toDoPage: (data?: QueryOptions) => http.get("/app/ccsq/toDoPage", data), - /** 协同办公/出差申请 已办 */ - get_donePage: (data?: QueryOptions) => http.get("/app/ccsq/donePage", data), - /** 协同办公/出差申请 获取可退回节点信息 */ - get_getBackNode: (data?: QueryOptions) => http.get("/app/ccsq/getBackNode", data), - - }, - orderfood: { - /** 协同办公/订餐管理/订餐 订餐加载接口 */ - get_getOne: (data?: QueryOptions) => http.get("/app/orderfood/getOne", data), - /** 协同办公/订餐管理/订餐 订餐保存 */ - post_save: (data?: BodyOptions) => http.post("/app/orderfood/save", data), - /** 协同办公/订餐管理/订餐 取消订餐 */ - post_cancel: (data?: BodyOptions) => http.post("/app/orderfood/cancel", data), - /** 协同办公/订餐管理/订餐 协助取消他人订餐 */ - post_assistCancel: (data?: BodyOptions) => http.post("/app/orderfood/assistCancel", data), - }, - orderfoods: { - /** 协同办公/订餐管理/汇总 部门结算汇总 */ - get_departmentSummary: (data?: QueryOptions) => http.get("/app/orderfoods/departmentSummary", data), - /** 协同办公/订餐管理/汇总 订餐汇总 */ - get_infoList: (data?: QueryOptions) => http.get("/app/orderfoods/infoList", data), - /** 协同办公/订餐管理/汇总 个人结算汇总 */ - get_personalSummary: (data?: QueryOptions) => http.get("/app/orderfoods/personalSummary", data), - infoList: { - /** 协同办公/订餐管理/汇总 订餐汇总导出 */ - get_export: (data?: QueryOptions) => http.get("/app/orderfoods/infoList/export", data), - }, - personalSummary: { - /** 协同办公/订餐管理/汇总 个人结算汇总导出 */ - get_export: (data?: QueryOptions) => http.get("/app/orderfoods/personalSummary/export", data), - }, - departmentSummary: { - /** 协同办公/订餐管理/汇总 部门结算汇总导出 */ - get_export: (data?: QueryOptions) => http.get("/app/orderfoods/departmentSummary/export", data), - }, - /** 协同办公/订餐管理/汇总 结算单 */ - get_finalStatement: (data?: QueryOptions) => http.get("/app/orderfoods/finalStatement", data), - finalStatement: { - /** 协同办公/订餐管理/汇总 结算表导出 */ - get_export: (data?: QueryOptions) => http.get("/app/orderfoods/finalStatement/export", data), - }, - /** 协同办公/订餐管理/汇总 结算操作 */ - post_balance: (data?: BodyOptions) => http.post("/app/orderfoods/balance", data), - }, - officeSuppliesApply: { - /** 协同办公/办公用品/办公用品申请 申请页面查询 */ - get_page: (data?: QueryOptions) => http.get("/app/officeSuppliesApply/page", data), - /** 协同办公/办公用品/办公用品申请 申请保存 */ - post_save: (data?: BodyOptions) => http.post("/app/officeSuppliesApply/save", data), - /** 协同办公/办公用品/办公用品申请 批量审核 */ - post_audit: (data?: BodyOptions) => http.post("/app/officeSuppliesApply/audit", data), - /** 协同办公/办公用品/办公用品申请 批量申请 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/officeSuppliesApply/saveBatch", data), - /** 协同办公/办公用品/办公用品申请 撤销申请 */ - post_deletes: (data?: BodyOptions) => http.post("/app/officeSuppliesApply/deletes", data), - }, - warehousing: { - /** 协同办公/办公用品/入库/出库 入库查询 */ - get_page: (data?: QueryOptions) => http.get("/app/warehousing/page", data), - }, - inOrOut: { - /** 协同办公/办公用品/入库/出库 入库/保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/inOrOut/saveBatch", data), - }, - supervise: { - /** 协同办公/督查督办/立项发起 立项分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/supervise/page", data), - /** 协同办公/督查督办/立项发起 立项保存 */ - post_save: (data?: BodyOptions) => http.post("/app/supervise/save", data), - /** 协同办公/督查督办/立项发起 立项删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/supervise/deletes", data), - /** 协同办公/督查督办/立项发起 立项提交 */ - post_audit: (data?: BodyOptions) => http.post("/app/supervise/audit", data), - /** 协同办公/督查督办/执行反馈 执行反馈提交 */ - post_auditFankui: (data?: BodyOptions) => http.post("/app/supervise/auditFankui", data), - /** 协同办公/督查督办/报表汇总 统计 */ - get_huizong: (data?: QueryOptions) => http.get("/app/supervise/huizong", data), - /** 协同办公/督查督办/立项发起 更新状态 */ - post_updateStatus: (data?: BodyOptions) => http.post("/app/supervise/updateStatus", data), - }, - feedback: { - /** 协同办公/督查督办/执行反馈 执行反馈待办查询 */ - get_page: (data?: QueryOptions) => http.get("/app/feedback/page", data), - /** 协同办公/督查督办/执行反馈 执行反馈保存,实际修改操作,保存反馈时间,反馈内容,进度 */ - post_saveUpdate: (data?: BodyOptions) => http.post("/app/feedback/saveUpdate", data), - /** 协同办公/督查督办/执行反馈 查询负责部门列表,返回所有的反馈信息 */ - get_getDepartment: (data?: QueryOptions) => http.get("/app/feedback/getDepartment", data), - /** 协同办公/督查督办/执行反馈 分发立项任务 */ - post_save: (data?: BodyOptions) => http.post("/app/feedback/save", data), - /** 协同办公/督查督办/执行反馈 执行反馈已办查询 */ - get_pageDone: (data?: QueryOptions) => http.get("/app/feedback/pageDone", data), - }, - file: { - /** 协同办公/文件上传/下载 多文件上传 */ - post_uploads: (data?: BodyOptions) => http.post("/app/file/uploads", data), - }, - addressor: { - /** 协同办公/会议管理/发言人 发言人查询 */ - get_list: (data?: QueryOptions) => http.get("/app/addressor/list", data), - /** 协同办公/会议管理/发言人 发言人批量保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/addressor/saveBatch", data), - /** 协同办公/会议管理/发言人 发言人保存 */ - post_save: (data?: BodyOptions) => http.post("/app/addressor/save", data), - post_deletes: (data?: BodyOptions) => http.post("/app/addressor/deletes", data), - }, - officeSuppliesList: { - /** 协同办公/办公用品/办公用品清单 分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/officeSuppliesList/page", data), - /** 协同办公/办公用品/办公用品清单 批量保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/officeSuppliesList/saveBatch", data), - post_deletes: (data?: BodyOptions) => http.post("/app/officeSuppliesList/deletes", data), - }, - officeSuppliesApplySum: { - /** 协同办公/办公用品 采购汇总 */ - get_list: (data?: QueryOptions) => http.get("/app/officeSuppliesApplySum/list", data), - }, - autoOrderfoodPeoples: { - /** 协同办公/订餐管理/自动订餐人员管理 分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/autoOrderfoodPeoples/page", data), - /** 协同办公/订餐管理/自动订餐人员管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/autoOrderfoodPeoples/saveBatch", data), - post_deletes: (data?: BodyOptions) => http.post("/app/autoOrderfoodPeoples/deletes", data), - }, - usercenter: { - /** 协同办公 获取菜单 */ - get_menus: (data?: QueryOptions) => http.get("/app/usercenter/menus", data), - }, - workflow: { - /** 协同办公/工作流 待办 */ - post_queryMyTodoTask: (data?: BodyOptions) => http.post("/app/workflow/queryMyTodoTask", data), - /** 协同办公/工作流 已办 */ - post_getHistoricTaskByUserID: (data?: BodyOptions) => http.post("/app/workflow/getHistoricTaskByUserID", data), - }, - personTask: { - /** 合同系统/签订 待办查询 */ - get_page: (data?: QueryOptions) => http.get("/app/personTask/page", data), - /** 合同系统/签订 已办查询 */ - get_pagePersonTaskOver: (data?: QueryOptions) => http.get("/app/personTask/pagePersonTaskOver", data), - /** 合同系统/履行/履行查询 分页合同履行审批查询 */ - get_pagePerformanceAudit: (data?: QueryOptions) => http.get("/app/personTask/pagePerformanceAudit", data), - /** 合同系统/履行/履行提示/申请归档 归档保存 */ - post_applicationFiling: (data?: BodyOptions) => http.post("/app/personTask/applicationFiling", data), - }, - sbCtrBasePt: { - /** 合同系统/申报 合同申报数据查询 */ - get_QuerySbCtrBase: (data?: QueryOptions) => http.get("/app/sbCtrBasePt/QuerySbCtrBase", data), - /** 合同系统/申报 合同申报基本信息加载 */ - post_page: (data?: BodyOptions) => http.post("/app/sbCtrBasePt/page", data), - /** 合同系统/申报 合同申报基本信息保存 */ - post_save: (data?: BodyOptions) => http.post("/app/sbCtrBasePt/save", data), - /** 合同系统/申报 合同申报基本信息删除 */ - get_deletes: (data?: QueryOptions) => http.get("/app/sbCtrBasePt/deletes", data), - /** 合同系统/申报 获取资金渠道 */ - get_getFundingSource: (data?: QueryOptions) => http.get("/app/sbCtrBasePt/getFundingSource", data), - }, - contractBaseInfo: { - /** 合同系统/立项 合同立项保存 */ - post_apply: (data?: BodyOptions) => http.post("/app/contractBaseInfo/apply", data), - /** 合同系统/立项 合同立项查询 */ - get_page: (data?: QueryOptions) => http.get("/app/contractBaseInfo/page", data), - /** 合同系统/立项 删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/contractBaseInfo/deletes", data), - /** 合同系统/立项 单条查询 */ - get_getOne: (data?: QueryOptions) => http.get("/app/contractBaseInfo/getOne", data), - /** 合同系统/立项 提交 */ - post_submit: (data?: BodyOptions) => http.post("/app/contractBaseInfo/submit", data), - /** 合同系统/立项 退回 */ - post_rollback: (data?: BodyOptions) => http.post("/app/contractBaseInfo/rollback", data), - }, - proProviderInfo: { - /** 合同系统/相对人管理 合同相对人查询 */ - get_Query: (data?: QueryOptions) => http.get("/app/proProviderInfo/Query", data), - /** 合同系统/相对人管理 获取币种 */ - get_getBz: (data?: QueryOptions) => http.get("/app/proProviderInfo/getBz", data), - /** 合同系统/相对人管理 保存 */ - post_save: (data?: BodyOptions) => http.post("/app/proProviderInfo/save", data), - /** 合同系统/相对人管理 删除 */ - get_deletes: (data?: QueryOptions) => http.get("/app/proProviderInfo/deletes", data), - /** 合同系统/相对人管理 加载 */ - post_page: (data?: BodyOptions) => http.post("/app/proProviderInfo/page", data), - }, - contractModelInfo: { - /** 合同系统/模板管理 保存 */ - post_save: (data?: BodyOptions) => http.post("/app/contractModelInfo/save", data), - /** 合同系统/模板管理 删除 */ - get_deletes: (data?: QueryOptions) => http.get("/app/contractModelInfo/deletes", data), - /** 合同系统/模板管理 加载 */ - post_page: (data?: BodyOptions) => http.post("/app/contractModelInfo/page", data), - }, - contractReferType: { - /** 合同系统/合同类型参照 查询 */ - get_list: (data?: QueryOptions) => http.get("/app/contractReferType/list", data), - /** 合同系统/合同类型参照 保存 */ - post_save: (data?: BodyOptions) => http.post("/app/contractReferType/save", data), - /** 合同系统/合同类型参照 删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/contractReferType/deletes", data), - }, - attachment: { - /** 文件上传/下载(新) 附件加载 */ - get_list: (data?: QueryOptions) => http.get("/app/attachment/list", data), - /** 文件上传/下载(新) 文件下载 */ - get_download: (data?: QueryOptions) => http.get("/app/attachment/download/{fileUuid}", data), - /** 文件上传/下载(新) 多文件上传 */ - post_uploads: (data?: BodyOptions) => http.post("/app/attachment/uploads", data), - }, - contractPayment: { - /** 合同系统/履行/履行提示/合同付款 获取合同付款信息 */ - get_queryPaymentInfo: (data?: QueryOptions) => http.get("/app/contractPayment/queryPaymentInfo", data), - /** 合同系统/归档/合同归档 历史记录 */ - get_historyPaymentInfo: (data?: QueryOptions) => http.get("/app/contractPayment/historyPaymentInfo", data), - /** 合同系统/履行/履行提示/合同付款 保存付款申请 */ - post_save: (data?: BodyOptions) => http.post("/app/contractPayment/save", data), - }, - selectMerchantsBasicInfo: { - /** 合同系统/选商 分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/selectMerchantsBasicInfo/page", data), - /** 合同系统/选商 选商信息查询(单条) */ - get_getOne: (data?: QueryOptions) => http.get("/app/selectMerchantsBasicInfo/getOne", data), - /** 合同系统/选商 选商信息保存 */ - post_save: (data?: BodyOptions) => http.post("/app/selectMerchantsBasicInfo/save", data), - /** 合同系统/选商 合同选商保存操作(多个对象) */ - post_saveMultiEntity: (data?: BodyOptions) => http.post("/app/selectMerchantsBasicInfo/saveMultiEntity", data), - /** 合同系统/选商 提交 */ - post_submit: (data?: BodyOptions) => http.post("/app/selectMerchantsBasicInfo/submit", data), - /** 合同系统/选商 退回 */ - post_rollback: (data?: BodyOptions) => http.post("/app/selectMerchantsBasicInfo/rollback", data), - }, - lvxChange: { - /** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */ - post_save: (data?: BodyOptions) => http.post("/app/lvxChange/save", data), - /** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */ - get_getContractChangeInfo: (data?: QueryOptions) => http.get("/app/lvxChange/getContractChangeInfo", data), - }, - contractRelieve: { - /** 合同系统/履行/履行提示/合同终止(解除) 获取合同终止(解除)信息 */ - get_getContractRelieveInfo: (data?: QueryOptions) => http.get("/app/contractRelieve/getContractRelieveInfo", data), - /** 合同系统/履行/履行提示/合同终止(解除) 保存合同终止信息 */ - post_save: (data?: BodyOptions) => http.post("/app/contractRelieve/save", data), - }, - contractBreach: { - /** 合同系统/履行/履行提示/合同违约情况 保存合同违约信息 */ - post_save: (data?: BodyOptions) => http.post("/app/contractBreach/save", data), - /** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */ - get_getContractBreachInfo: (data?: QueryOptions) => http.get("/app/contractBreach/getContractBreachInfo", data), - }, - lvxResult: { - /** 合同系统/履行/履行结果 履行结果保存 */ - post_save: (data?: BodyOptions) => http.post("/app/lvxResult/save", data), - }, - contractFiling: { - /** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */ - post_save: (data?: BodyOptions) => http.post("/app/contractFiling/save", data), - }, - biddingExpert: { - /** 合同系统/选商/选商招标专家 招标专家查询 */ - get_list: (data?: QueryOptions) => http.get("/app/biddingExpert/list", data), - /** 合同系统/选商/选商招标专家 选商招标专家保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/biddingExpert/saveBatch", data), - /** 合同系统/选商/选商招标专家 选商招标专家删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/biddingExpert/deletes", data), - }, - contractFilingFormal: { - /** 合同系统/归档/合同归档 分页查询归档信息 */ - get_queryContractFiling: (data?: QueryOptions) => http.get("/app/contractFilingFormal/queryContractFiling", data), - /** 合同系统/归档/合同归档 获取合同招标选商申请信息 */ - get_getContractSupplier: (data?: QueryOptions) => http.get("/app/contractFilingFormal/getContractSupplier", data), - /** 合同系统/归档/合同归档 保存合同归档 */ - post_save: (data?: BodyOptions) => http.post("/app/contractFilingFormal/save", data), - /** 合同系统/归档/合同回档 分页查询 */ - get_pageArchivedContract: (data?: QueryOptions) => http.get("/app/contractFilingFormal/pageArchivedContract", data), - /** 合同系统/归档/合同回档 回档 */ - post_saveFilingBack: (data?: BodyOptions) => http.post("/app/contractFilingFormal/saveFilingBack", data), - }, - lvxProduct: { - /** 合同系统/履行/履行提示/产品或服务 获取合同产品信息 */ - get_getContractProductInfo: (data?: QueryOptions) => http.get("/app/lvxProduct/getContractProductInfo", data), - /** 合同系统/履行/履行提示/产品或服务 累计收款金额 */ - get_getSumFromProduct: (data?: QueryOptions) => http.get("/app/lvxProduct/getSumFromProduct", data), - /** 合同系统/履行/履行提示/产品或服务 历史记录 */ - get_getListFromHistoryRecord: (data?: QueryOptions) => http.get("/app/lvxProduct/getListFromHistoryRecord", data), - /** 合同系统/履行/履行提示/产品或服务 保存合同产品服务 */ - post_save: (data?: BodyOptions) => http.post("/app/lvxProduct/save", data), - }, - qdSign: { - /** 合同系统/签订 签订查询 */ - get_page: (data?: QueryOptions) => http.get("/app/qdSign/page", data), - /** 合同系统/签订 获取合同签订信息 */ - get_getContractSignInfo: (data?: QueryOptions) => http.get("/app/qdSign/getContractSignInfo", data), - /** 合同系统/签订 打印签订审批表 */ - get_createUserListWord: (data?: QueryOptions) => http.get("/app/qdSign/createUserListWord", data), - /** 合同系统/签订 打印文本 */ - get_textPrint: (data?: QueryOptions) => http.get("/app/qdSign/textPrint", data), - /** 合同系统/签订 保存送审 */ - post_save: (data?: BodyOptions) => http.post("/app/qdSign/save", data), - /** 合同系统/签订 废除 */ - post_abolish: (data?: BodyOptions) => http.post("/app/qdSign/abolish", data), - }, - flowCenter: { - /** 流程中心 启动流程 */ - post_start: (data?: BodyOptions) => http.post("/app/flowCenter/start", data), - /** 流程中心 审核通过 */ - post_agree: (data?: BodyOptions) => http.post("/app/flowCenter/agree", data), - /** 流程中心 审核退回 */ - post_rollback: (data?: BodyOptions) => http.post("/app/flowCenter/rollback", data), - /** 流程中心 获取待办 */ - post_getTodoList: (data?: BodyOptions) => http.post("/app/flowCenter/getTodoList", data), - /** 流程中心 获取已办 */ - post_doneList: (data?: BodyOptions) => http.post("/app/flowCenter/doneList", data), - /** 流程中心 审核撤回 */ - get_revoke: (data?: QueryOptions) => http.get("/app/flowCenter/revoke", data), - /** 流程中心 审核记录 */ - get_history: (data?: QueryOptions) => http.get("/app/flowCenter/history", data), - /** 流程中心 查看流程图 */ - get_getFlowImg: (data?: QueryOptions) => http.get("/app/flowCenter/getFlowImg", data), - /** 流程中心 获取可退回节点 */ - get_getReturnNode: (data?: QueryOptions) => http.get("/app/flowCenter/getReturnNode", data), - /** 流程中心 获取流程节点人员配置信息 */ - get_getNextNodeUserConfig: (data?: QueryOptions) => http.get("/app/flowCenter/getNextNodeUserConfig", data), - /** 流程中心 获取待办数量 */ - get_getTodoListSize: (data?: QueryOptions) => http.get("/app/flowCenter/getTodoListSize", data), - /** 流程中心 获取当前审核节点配置信息 */ - get_getNodeConfigInfo: (data?: QueryOptions) => http.get("/app/flowCenter/getNodeConfigInfo", data), - /** 流程中心 获取下一节点配置信息 */ - get_getNextNodeConfig: (data?: QueryOptions) => http.get("/app/flowCenter/getNextNodeConfig", data), - /** 流程中心 获取流程节点人员配置信息 */ - post_getFlowNodeUserConfig: (data?: BodyOptions) => http.post("/app/flowCenter/getFlowNodeUserConfig", data), - }, - rl: { - moduleParameter: { - /** 流程中心/流程规划 保存 */ - post_save: (data?: BodyOptions) => http.post("/app/rl/moduleParameter/save", data), - /** 流程中心/流程规划 查询 */ - post_page: (data?: BodyOptions) => http.post("/app/rl/moduleParameter/page", data), - /** 流程中心/流程规划 删除 */ - get_deletes: (data?: QueryOptions) => http.get("/app/rl/moduleParameter/deletes", data), - /** 流程中心/流程规划 获取节点审核人 */ - get_getNextNodeUser: (data?: QueryOptions) => http.get("/app/rl/moduleParameter/getNextNodeUser", data), - }, - }, - dutyCount: { - /** 协同办公/订餐管理/值班天数 分页查询 */ - get_page: (data?: QueryOptions) => http.get("/app/dutyCount/page", data), - /** 协同办公/订餐管理/值班天数 批量保存 */ - post_saveBatch: (data?: BodyOptions) => http.post("/app/dutyCount/saveBatch", data), - /** 协同办公/订餐管理/值班天数 删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/dutyCount/deletes", data), - }, - common: { - /** 公共 获取请求ip */ - get_getClientIp: (data?: QueryOptions) => http.get("/app/common/getClientIp", data), - }, - address: { - /** 协同办公/订餐管理/订餐地址 查询(分页) */ - get_page: (data?: QueryOptions) => http.get("/app/address/page", data), - /** 协同办公/订餐管理/订餐地址 保存 */ - post_save: (data?: BodyOptions) => http.post("/app/address/save", data), - /** 协同办公/订餐管理/订餐地址 删除 */ - post_deletes: (data?: BodyOptions) => http.post("/app/address/deletes", data), - }, - superviseFeedbackRecord: { - /** 协同办公/督查督办/反馈记录 保存反馈记录 */ - post_save: (data?: BodyOptions) => http.post("/app/superviseFeedbackRecord/save", data), - /** 协同办公/督查督办/反馈记录 查询反馈记录 */ - get_page: (data?: QueryOptions) => http.get("/app/superviseFeedbackRecord/page", data), - /** 协同办公/督查督办/反馈记录 删除反馈记录 */ - post_deletes: (data?: BodyOptions) => http.post("/app/superviseFeedbackRecord/deletes", data), - }, - lxBasisSale: { - /** 合同系统/签约依据 分页保存/修改 */ - post_save: (data?: BodyOptions) => http.post("/app/lxBasisSale/save", data), - /** 合同系统/签约依据 查询 */ - get_page: (data?: QueryOptions) => http.get("/app/lxBasisSale/page", data), - /** 合同系统/签约依据 删除测试 */ - post_deletes: (data?: BodyOptions) => http.post("/app/lxBasisSale/deletes", data), - }, -} diff --git a/apps/web-facilities/src/api/request/config.ts b/apps/web-facilities/src/api/request/config.ts deleted file mode 100644 index 50e70181..00000000 --- a/apps/web-facilities/src/api/request/config.ts +++ /dev/null @@ -1,19 +0,0 @@ - -/** BaseUrl: 基础路径 */ -const BASE_URL: string = '/api' - -/** AccessTokenField: header 里传accessToken的键名,一般为 Authorization */ -export const ACCESS_TOKEN_FIELD = 'Token' - -/** - * 动态获取baseURL,仅限开发环境 - * 适用于同时连接多个后端功能开发,通过设置 proxy_type 值实现‘非重启更新’连接的后端 - */ -export function getBaseURL(): string { - if (import.meta.env.MODE === 'development') { - const proxyType = localStorage.getItem('@@@proxy_type') || ''; - // return BASE_URL + "/zzz" - return BASE_URL + proxyType - } - return BASE_URL -} diff --git a/apps/web-facilities/src/api/request/getToken.ts b/apps/web-facilities/src/api/request/getToken.ts deleted file mode 100644 index 4e905d94..00000000 --- a/apps/web-facilities/src/api/request/getToken.ts +++ /dev/null @@ -1,83 +0,0 @@ - -/** - * 获取RefreshToken - * @description: 创建新的请求实例实现 - */ -import { createAlova } from 'alova' -import { useAccessStore } from '@vben/stores'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { getBaseURL, ACCESS_TOKEN_FIELD } from './config'; - -let lock = false -let promiseResult: any[] = [] - -const alova = createAlova({ - baseURL: getBaseURL(), - cacheFor: null, - statesHook: vueHook, - requestAdapter: fetchAdapter(), - beforeRequest: (method) => { - // ...原请求前拦截器 - const accessStore = useAccessStore(); - - // const userStore = useUserStore() - // console.log('beforeRequest', userStore.accessToken) - // 添加token到请求头 - // method.config.headers[ACCESS_TOKEN_FIELD] = `${userStore.accessToken}` - }, - responded: async (response, method) => { - let json = await response.json(); - return json.data || null - }, -}) - -export function getAccessToken(rToken: string): Promise { - return new Promise(async (resolve, reject) => { - promiseResult.push({ - resolve, - reject - }) - // const userStore = useUserStore(); - - if (!lock) { - lock = true - // 为了让refreshToken请求顺利通过,需要通过元数据标识authRole为refreshToken。参考官方文档 - const method = alova.Post('/system/auth/refreshToken', { token: rToken }, { - meta: { - authRole: 'refreshToken' - } - }); - method.send() - .then((data: any) => { - console.log(data) - // 如果 refreshToken 请求成功,则将新的token存储到本地 - if (data && data.accessToken) { - // userStore.setToken(data.accessToken); - // userStore.setTokenExpiresTime(data.accessExpire) - // userStore.setRefreshToken(data.refreshToken); - while (promiseResult.length) { - // p1.resolve(res.data) - promiseResult.shift().resolve(data) - } - lock = false - return - } - // userStore.resetStore() - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject("身份认证已失效,请重新登录") - } - - }) - .catch(err => { - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject(err) - } - lock = false - }) - } - - }) -} diff --git a/apps/web-facilities/src/api/request/index.ts b/apps/web-facilities/src/api/request/index.ts deleted file mode 100644 index 6f4693ce..00000000 --- a/apps/web-facilities/src/api/request/index.ts +++ /dev/null @@ -1,319 +0,0 @@ -/** - * 该文件可自行根据业务逻辑进行调整 - */ -import { preferences } from '@vben/preferences'; - -import { useAccessStore } from '@vben/stores'; - -import { message } from 'ant-design-vue'; - -import { useAuthStore } from '#/store'; - -import { transferResponse } from './transferResponse'; -import { type QueryOptions, type BodyOptions } from '../global.d'; -import { merge } from 'lodash-es'; - -import { createAlova } from 'alova'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { ACCESS_TOKEN_FIELD, getBaseURL } from './config'; -import { createServerTokenAuthentication } from 'alova/client'; - -/** 储存过期的token */ -let expireTokenCache = []; - -/** 服务端 Token 校验 */ -const { onAuthRequired, onResponseRefreshToken } = - createServerTokenAuthentication({ - refreshTokenOnSuccess: { - /** - * 判断 Token 是否过期 - * 响应时触发,可获取到response和method,并返回boolean表示token是否过期 - */ - isExpired: async (response, method) => { - // 文件下载操作 - if (method.meta?.responseType === 'blob') { - return false; - } - - const responseClone = response.clone(); - let data = await responseClone.json(); - - // 当服务端返回401时,表示token过期 - let isExpired = ['401'].includes(data.code); - if (isExpired) { - console.log('AccessToken已过期', data.code); - expireTokenCache.push(method.config.headers[ACCESS_TOKEN_FIELD]); - } - - return isExpired; - }, - /** 当token过期时触发,在此函数中触发刷新token */ - handler: async (response, method) => { - console.warn('Access token or refresh token is invalid or expired. '); - const accessStore = useAccessStore(); - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - if ( - preferences.app.loginExpiredMode === 'modal' && - accessStore.isAccessChecked - ) { - accessStore.setLoginExpired(true); - } else { - await authStore.logout(); - } - throw new Error('登录已过期,请重新登录'); - // const userStore = useUserStore(); - // try { - // let rToken = userStore.refreshToken; - // // 如果没有refreshToken,则跳转登录页 - // if (!rToken) { - // throw new Error('登录已过期,请重新登录'); - // } - // await getAccessToken(rToken) - // expireTokenCache = [] - // } catch (error: any) { - // window.$message?.error(error.message); - // userStore.resetStore() - // throw error; - // } - }, - }, - }); - -export const alovaInstance = createAlova({ - /** 动态代理配置 */ - baseURL: getBaseURL(), - /** 框架请求适配器 */ - statesHook: vueHook, - requestAdapter: fetchAdapter(), - /** 设置缓存状态:不开启 */ - cacheFor: null, - // cacheFor: { - // // 统一设置POST的缓存模式 - // GET: { - // mode: 'restore', - // expire: 60 * 10 * 1000 - // }, - // POST: { - // mode: 'restore', - // expire: 60 * 10 * 1000 - // }, - // // 统一设置HEAD请求的缓存模式 - // HEAD: 60 * 10 * 1000 - // }, - /** 请求拦截器 */ - beforeRequest: onAuthRequired((method) => { - const accessStore = useAccessStore(); - - if (accessStore.accessToken) { - method.config.headers.Token = accessStore.accessToken; - // 统一授权的这个接口需要以Authorization传参,无语 /sys/user/functiontree/XTBGXT - method.config.headers.Authorization = `Bearer ${accessStore.accessToken}`; - } - method.config.headers['Accept-Language'] = preferences.app.locale; - - // const userStore = useUserStore() - // // 添加token到请求头 - // if (userStore.accessToken) { - // method.config.headers[ACCESS_TOKEN_FIELD] = `Bearer ${userStore.accessToken}` - - // method.config.headers["Authorization"] = `Bearer ${userStore.accessToken}` - // } - - // method.config.cacheFor = { - // // 设置缓存模式为内存模式 - // mode: 'restore', - // // 单位为毫秒 - // // 当设置为`Infinity`,表示数据永不过期,设置为0或负数时表示不缓存 - // expire: 60 * 10 * 1000 - // } - // method.config.transform = (rawData, headers) => { - // console.log('接口响应', rawData) - // return transferResponse(rawData) - // } - }), - /** 响应拦截器 */ - responded: onResponseRefreshToken(async (response, method) => { - if (method.meta?.responseType === 'blob') { - let blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - const contentDisposition = response.headers.get('content-disposition'); - let fileName = 'downloaded-file'; - if (contentDisposition) { - const matches = /filename="?([^"]+)"?/.exec(contentDisposition); - if (matches != null && matches[1]) { - fileName = decodeURIComponent(matches[1]); - } - } - a.download = fileName; - // 触发下载 - document.body.appendChild(a); - a.click(); - // 移除链接 - document.body.removeChild(a); - window.URL.revokeObjectURL(url); - return { - blob: blob, - url: url, - filename: fileName, - }; - } - - // if (response.status >= 400) { - // throw new Error(response.statusText); - // } - - let json = await response.json(); - console.log('【接口】', method.url); - console.log('原始响应', JSON.parse(JSON.stringify(json))); - - json = transferResponse(json); - console.log('改造响应', JSON.parse(JSON.stringify(json))); - - const accessStore = useAccessStore(); - - if (json.code != 0) { - if (json.code == '401') { - message.error('用户身份过期,请重新登录'); - - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - await authStore.logout(); - // const userStore = useUserStore(); - // userStore.resetStore(); - } else { - message.error(json.msg || '服务器开小差,请稍后再试'); - } - // 抛出错误或返回reject状态的Promise实例时,此请求将抛出错误 - throw new Error((json && json.msg) || '出错了'); - } - - // 解析的响应数据将传给method实例的transformData钩子函数,这些函数将在后续讲解 - return json.data; - }), -}); - -class Http { - /** - * 适配swagger路径参数,针对于pathParams - * 输入参数 "/api/v1/user/{id}",{ pathParams:{ id :1 },params:{ id:2 } } - * 输出请求 /api/v1/user/1?id=2 - */ - private replacePathParams(url: string, pathParams?: any): string { - if (!pathParams) return url; - return url.replace(/{(\w+)}/g, (_, key) => pathParams[key] || `{${key}}`); - } - - /** - * 全局默认配置 - * @param customConfig - * @returns - */ - private getConfig(customConfig?: any): any { - // 递归属性拷贝 - return merge( - {}, - { - meta: { - showLoading: false, - showError: false, - }, - }, - customConfig, - ); - } - - private isBodyOptions( - options: BodyOptions | QueryOptions, - ): options is BodyOptions { - return (options as BodyOptions).data !== undefined; - } - - private request( - method: string, - url: string, - data?: BodyOptions | QueryOptions, - ) { - let finalUrl = this.replacePathParams(url, data?.pathParams); - const config = this.getConfig(data?.config); - - // 当组件使用allowClear属性时,会将数据置为null,导致数据查询失败 - if (data && data.params) { - Object.keys(data.params).forEach((key) => { - if (data.params[key] === null || data.params[key] === undefined) { - delete data.params[key]; - } - }); - } - if (data && this.isBodyOptions(data)) { - Object.keys(data.data).forEach((key) => { - if (data.data[key] === null || data.data[key] === undefined) { - delete data.data[key]; - } - }); - } - - let alovaMethod: 'Get' | 'Post' | 'Delete' | 'Put' = 'Get'; - - if (method === 'get' || method === 'delete') { - if (method === 'get') { - alovaMethod = 'Get'; - } - if (method === 'delete') { - alovaMethod = 'Delete'; - } - return alovaInstance[alovaMethod](finalUrl, { - ...config, - params: data?.params, - }); - } else { - // 处理 params 到 url 的逻辑 - if (data?.params) { - finalUrl = this.appendParamsToUrl(finalUrl, data.params); - } - if (method === 'post') { - alovaMethod = 'Post'; - } - if (method === 'put') { - alovaMethod = 'Put'; - } - - return alovaInstance[alovaMethod](finalUrl, data?.data, { ...config }); - } - } - - private appendParamsToUrl(url: string, params: any): string { - let queryString = ''; - for (const key in params) { - if (Object.prototype.hasOwnProperty.call(params, key)) { - queryString += `${queryString ? '&' : '?'}${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`; - } - } - return url + queryString; - } - - get(url: string, data?: QueryOptions) { - return this.request('get', url, data); - } - - post(url: string, data?: BodyOptions) { - return this.request('post', url, data); - } - - put(url: string, data?: BodyOptions) { - return this.request('put', url, data); - } - - patch(url: string, data?: BodyOptions) { - return this.request('patch', url, data); - } - - delete(url: string, data?: QueryOptions) { - return this.request('delete', url, data); - } -} - -export const http = new Http(); diff --git a/apps/web-facilities/src/api/request/transferResponse.ts b/apps/web-facilities/src/api/request/transferResponse.ts deleted file mode 100644 index b79533bb..00000000 --- a/apps/web-facilities/src/api/request/transferResponse.ts +++ /dev/null @@ -1,89 +0,0 @@ -const SUCCESS_CODE = 0; - -/** - * 统一相应处理,伪BFF层 很多接口返回的响应信息不统一,防止因后端规范问题导致前端工作量增加!!!!!!!故在此做统一处理 - * 目前项目后端会返回的几种响应情况,xxx代指需要的数据:[xxx]、{xxx}、{data:{xxx}}、{records:xxx}、{content:xxx}.........................沉默 - * 数据总条数涉及字段:total、totalElements - * - * @param response - */ -export function transferResponse(response: any) { - // 如果后端直接返回数组,如[xxx] - if (Array.isArray(response)) { - return { - code: SUCCESS_CODE, - data: { - rows: response, - }, - msg: 'Ok', - }; - } - - // 如果后端直接返回数据内容对象,如{xxx},则先进行统一响应包装 - if (response.code == undefined) { - response = { - code: SUCCESS_CODE, - data: response, - msg: 'Ok', - }; - } - - let { code, data = {}, msg, ...rest } = response; - - if (!data) { - data = {}; - } - if (typeof data === 'string') { - data = { - value: data, - }; - } - // eslint-disable-next-line eqeqeq - if (code == 'success') { - code = 0; - } - - if (code == 'failure' && msg && msg.includes('token无效')) { - code = 401; - } - - if (Array.isArray(data)) { - data = { - rows: data, - }; - } - - if (!data.total && data.totalElements) { - data.total = data.totalElements; - } - - if (data.records && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (data.content && Array.isArray(data.content)) { - data.rows = data.content; - delete data.content; - } - - if (data.content && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (response.code == 200 && response.flag === false) { - code = 500; - } else if (response.code == '200') { - code = 0; - } - - return { - code, - data: { - ...data, - ...rest, - }, - msg, - }; -} diff --git a/apps/web-facilities/src/api/system/auth.ts b/apps/web-facilities/src/api/system/auth.ts deleted file mode 100644 index 3c11602a..00000000 --- a/apps/web-facilities/src/api/system/auth.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { http } from '../request/index'; - -import { useAccessStore } from '@vben/stores'; - -export namespace AuthApi { - /** 登录接口参数 */ - export interface LoginParams { - password: string; - username: string; - } - - /** 登录接口返回值 */ - export interface LoginResult { - accessToken: string; - desc: string; - realName: string; - userId: string; - username: string; - } - - export interface RefreshTokenResult { - data: string; - status: number; - } -} - -/** - * 登录 - */ -export async function loginApi(data: AuthApi.LoginParams) { - return http.post('/uc/uaa/validateAccount', { - data, - config: { - transform(rawData) { - if (rawData.access_token) { - rawData.accessToken = rawData.access_token; - rawData.realName = rawData.display_name; - return rawData; - } - return rawData; - }, - }, - }); -} - -/** - * 刷新accessToken - */ -export async function refreshTokenApi() { - return http.post('/auth/refresh'); -} - -/** - * 退出登录 - */ -export async function logoutApi() { - return http.post('/uc/uaa/logout'); -} - -/** - * 获取用户权限码 - */ -export async function getAccessCodesApi() { - return http.post('/auth/codes'); -} - -/** - * 获取用户信息 - */ -export async function getUserInfoApi() { - const accessStore = useAccessStore(); - return http.post('/uc/sys/user/checkToken', { - data: { - token: accessStore.accessToken, - }, - }); -} diff --git a/apps/web-facilities/src/api/system/menu.ts b/apps/web-facilities/src/api/system/menu.ts deleted file mode 100644 index 31fab94c..00000000 --- a/apps/web-facilities/src/api/system/menu.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { http } from '../request/index'; - -/** - * 获取用户所有菜单 - */ -export async function getAllMenusApi() { - return http.get('/menu/all'); -} diff --git a/apps/web-facilities/src/app.vue b/apps/web-facilities/src/app.vue deleted file mode 100644 index 62ab9f79..00000000 --- a/apps/web-facilities/src/app.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - - diff --git a/apps/web-facilities/src/assets/canteen/orderfood.png b/apps/web-facilities/src/assets/canteen/orderfood.png deleted file mode 100644 index 8984b82394f2182899c1905a04eb72a8df0a7360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4404 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 { - item.label = item.ORG_NAME - item.value = item.ORG_ID - }) - let treeData = transTree(data.rows); - return treeData; - }, - }), -} - -export async function getUnitData(params = {}) { - const data = await Apis.api.core.orgemplbc.organization.post_paging({ - params: { - page: 1, - size: 1000 - }, - data: { - subFilter: [ - { - symbol: "like", - singleValue: "0001%", - key: "ORG_ID", - logic: "AND", - }, - ], - } - }); - data.rows.forEach((item: any) => { - item.label = item.ORG_NAME - item.value = item.ORG_ID - }) - let treeData = transTree(data.rows); - return treeData; -} - -// 转换树行数据的方法 -function transTree(list) { - // 最终生成的树行结构 - const _treeData = []; - - // 对传入进来的 数据进行遍历,查找对应的子级 - list.forEach((item) => { - // 给每一项添加子节点 - // item.children = [] - item.key = item.ORG_ID; - item.label = item.ORG_NAME; - // 如果 pid 为空,说明是最顶级,直接放到 _treeData 中即可 - if (item.ORG_LEVEL == 1) { - item.selectable = false - _treeData.push(item); - } - - // 根据前面的分析,pid 代表的是父级的 id,从而可以进行筛选子级 - // filter 方法会把满足条件到的每一项,组成一个数组进行返回 - const children = list.filter((data) => data.PARENT_ID === item.ORG_ID); - - // 如果没有子节点,直接 return 不做任何处理 - if (!children.length) return; - - // 将返回的子级进行赋值给父级(item)的 children 属性 - item.children = children; - }); - - // 将最终生成的数据返回出去 - return _treeData; -} diff --git a/apps/web-facilities/src/components/dict-tag/dict-tag.vue b/apps/web-facilities/src/components/dict-tag/dict-tag.vue deleted file mode 100644 index 393d1c6e..00000000 --- a/apps/web-facilities/src/components/dict-tag/dict-tag.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - diff --git a/apps/web-facilities/src/components/dict-tag/index.ts b/apps/web-facilities/src/components/dict-tag/index.ts deleted file mode 100644 index 881265a3..00000000 --- a/apps/web-facilities/src/components/dict-tag/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as DictTag } from './dict-tag.vue'; diff --git a/apps/web-facilities/src/hooks/fastCrud.ts b/apps/web-facilities/src/hooks/fastCrud.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-facilities/src/hooks/useRender.ts b/apps/web-facilities/src/hooks/useRender.ts deleted file mode 100644 index 31eba247..00000000 --- a/apps/web-facilities/src/hooks/useRender.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { h } from 'vue'; -import dayjs from 'dayjs'; -import { Button, Tag } from 'ant-design-vue'; -import { isArray, isString } from 'lodash-es'; -import { DictTag } from '#/components/dict-tag'; -// import { Icon } from '@/components/Icon'; -import { Tooltip } from 'ant-design-vue' -import { getDictOpts } from '#/utils/dict'; -export const useRender = { - /** - * 渲染图片 - * @param text 图片地址 - * @returns image标签 - */ - // renderImg: (text: string) => { - // if (text) { - // if (isArray(text)) return h(TableImg, { imgList: text }); - // else if (isString(text)) return h(TableImg, { imgList: [text] }); - // } - // return ''; - // }, - /** - * 渲染链接 - * @param url 链接地址 - * @param text 文字说明 - * @returns link 按钮 - */ - renderLink: (url: string, text?: string) => { - if (url) return h(Button, { type: 'link', href: url, target: '_blank' }, () => text || ''); - - return ''; - }, - /** - * 渲染文本,将text与val 拼接到一起 - * @param text 文本1 - * @param val 文本2 - * @returns 文本1 + 文本2 - */ - renderText: (text: string, val: string) => { - if (text) return `${text} ${val}`; - else return ''; - }, - /** - * 渲染多行文本 - * @param text - * @param val - */ - renderMultiLineText: (text: string, params?: any) => { - if (text) { - params = params || {} - let classArr: string[] = params.class || []; - if (params?.maxLine && params?.maxLine > 0) { - classArr.push('line-clamp-' + params?.maxLine) - } - return h( - Tooltip, - { trigger: 'hover' }, - { - trigger: () => h('span', { class: classArr.join(' ') }, text), - default: () => text - } - ) - } - return ''; - }, - /** - * 渲染标签 - * @param text 标签文本 - * @param color 标签颜色 - * @returns 标签 - */ - renderTag: (text: string | number, color?: string) => { - if (color) return h(Tag, { color }, () => text); - else return h(Tag, {}, () => text); - }, - /** - * 渲染多标签 - * @param texts 文本 - * @returns 多标签 - */ - renderTags: (texts: string[]) => { - if (texts) { - return h('div', null, [ - texts.map((text) => { - return h(Tag, null, () => text); - }), - ]); - } - return ''; - }, - /** - * 渲染日期 - * @param text 日期 - * @param format 格式化 - * @returns 格式化后日期 - */ - renderDate: (text: string, format?: string) => { - if (!text) return ''; - - if (!format) return dayjs(text).format('YYYY-MM-DD HH:mm:ss'); - else return dayjs(text).format(format); - }, - /** - * 渲染字典 - * @param text 字典值 - * @param dictType 字典类型 - * @returns 字典标签 - */ - renderDict: (text: string, dictType: string, params?: any) => { - if (!dictType && !params.options) { - console.warn('请传入字典类型') - return ''; - } - let dict: any[] = []; - if (dictType) { - dict = getDictOpts(dictType) - } - if (params && params.options) { - dict = params.options; - } - return h(DictTag, { options: dict, value: text, ...params }); - } - // /** - // * 渲染图标icon - // * @param text icon - // * @returns icon - // */ - // renderIcon: (text: string) => { - // if (text) return h(Icon, { icon: text }); - // }, - /** - * 使用JsonPreview组件 方便预览JSON - * @param json json字符串/obj - * @returns 能转为json返回JsonPreview 否则返回自身 - */ - // renderJsonPreview: (json: any) => { - // if (!json) return ''; - // if (typeof json === 'object') return h(JsonPreview, { data: json }); - - // if (typeof json === 'string') { - // try { - // const data = JSON.parse(json); - // return h(JsonPreview, { data }); - // } catch (e) { - // return json; - // } - // } - // }, -}; diff --git a/apps/web-facilities/src/hooks/vxeTable.ts b/apps/web-facilities/src/hooks/vxeTable.ts deleted file mode 100644 index 26cd7c39..00000000 --- a/apps/web-facilities/src/hooks/vxeTable.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { merge } from "lodash-es"; -import { ref } from "vue"; -import { type VxeGridInstance, type VxeGridProps } from "vxe-table"; - -export function useVxeTable(props: { - ref: string, -}) { - - - const xGridRef = ref>(); - - return { - xGridRef, - gridProps: (props: VxeGridProps) => { - // 设置默认属性 - const defaultProps: VxeGridProps = { - // 保持原始值的状态,被某些功能所依赖,比如编辑状态、还原数据等(开启后影响性能,具体取决于数据量) - keepSource: false, - height: 'auto', - border: true, - editConfig: { - mode: 'row' - }, - rowConfig: { - isCurrent: true - }, - // 斑马条纹 - stripe: false, - pagerConfig: { - enabled: true, - size: 'mini', - pageSize: 50, - autoHidden: false - }, - // 列设置 - columnConfig: { - // 取消列选中效果 - isCurrent: false, - isHover: false, - // 取消列宽拖动功能 - resizable: false - }, - toolbarConfig: { - enabled: true, - export: false, - // print: true, - zoom: true, - custom: true, - refresh: true, - slots: { - buttons: 'toolbar_buttons' - } - }, - headerAlign: 'left', - align: 'left' - }; - - // 如果mergedProps.proxyConfig是空对象,则删除该字段,不然 vxetable 可能会误判断 - if (props.proxyConfig && JSON.stringify(props.proxyConfig) != '{}') { - defaultProps.proxyConfig = { - props: { - list: 'rows', - result: 'rows', - total: 'total' - } - }; - } - - return merge({}, defaultProps, props); - }, - - triggerProxy: (code: string) => { - const $grid = xGridRef.value; - if ($grid) { - $grid.commitProxy(code); - } - } - } -} diff --git a/apps/web-facilities/src/layouts/authentication/authentication.vue b/apps/web-facilities/src/layouts/authentication/authentication.vue deleted file mode 100644 index 53c86a3e..00000000 --- a/apps/web-facilities/src/layouts/authentication/authentication.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - - - diff --git a/apps/web-facilities/src/layouts/authentication/form.vue b/apps/web-facilities/src/layouts/authentication/form.vue deleted file mode 100644 index 80c90749..00000000 --- a/apps/web-facilities/src/layouts/authentication/form.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/apps/web-facilities/src/layouts/authentication/icons/slogan.vue b/apps/web-facilities/src/layouts/authentication/icons/slogan.vue deleted file mode 100644 index c8180ca7..00000000 --- a/apps/web-facilities/src/layouts/authentication/icons/slogan.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/apps/web-facilities/src/layouts/authentication/index.ts b/apps/web-facilities/src/layouts/authentication/index.ts deleted file mode 100644 index 6c684d11..00000000 --- a/apps/web-facilities/src/layouts/authentication/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as AuthPageLayout } from './authentication.vue'; diff --git a/apps/web-facilities/src/layouts/basic.vue b/apps/web-facilities/src/layouts/basic.vue deleted file mode 100644 index 49f03dae..00000000 --- a/apps/web-facilities/src/layouts/basic.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - diff --git a/apps/web-facilities/src/layouts/index.ts b/apps/web-facilities/src/layouts/index.ts deleted file mode 100644 index 027db3b9..00000000 --- a/apps/web-facilities/src/layouts/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -const BasicLayout = () => import('./basic.vue'); - -const IFrameView = () => import('@vben/layouts').then((m) => m.IFrameView); - -const AuthPageLayout = () => - import('#/layouts/authentication').then((m) => m.AuthPageLayout); - -export { AuthPageLayout, BasicLayout, IFrameView }; diff --git a/apps/web-facilities/src/locales/README.md b/apps/web-facilities/src/locales/README.md deleted file mode 100644 index 7b451032..00000000 --- a/apps/web-facilities/src/locales/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# locale - -每个app使用的国际化可能不同,这里用于扩展国际化的功能,例如扩展 dayjs、antd组件库的多语言切换,以及app本身的国际化文件。 diff --git a/apps/web-facilities/src/locales/index.ts b/apps/web-facilities/src/locales/index.ts deleted file mode 100644 index c3fd8c84..00000000 --- a/apps/web-facilities/src/locales/index.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales'; -import type { Locale } from 'ant-design-vue/es/locale'; - -import type { App } from 'vue'; -import { ref } from 'vue'; - -import { $t, setupI18n as coreSetup, loadLocalesMap } from '@vben/locales'; -import { preferences } from '@vben/preferences'; - -import antdEnLocale from 'ant-design-vue/es/locale/en_US'; -import antdDefaultLocale from 'ant-design-vue/es/locale/zh_CN'; -import dayjs from 'dayjs'; - -const antdLocale = ref(antdDefaultLocale); - -const modules = import.meta.glob('./langs/*.json'); - -const localesMap = loadLocalesMap(modules); - -/** - * 加载应用特有的语言包 - * 这里也可以改造为从服务端获取翻译数据 - * @param lang - */ -async function loadMessages(lang: SupportedLanguagesType) { - const [appLocaleMessages] = await Promise.all([ - localesMap[lang]?.(), - loadThirdPartyMessage(lang), - ]); - return appLocaleMessages?.default; -} - -/** - * 加载第三方组件库的语言包 - * @param lang - */ -async function loadThirdPartyMessage(lang: SupportedLanguagesType) { - await Promise.all([loadAntdLocale(lang), loadDayjsLocale(lang)]); -} - -/** - * 加载dayjs的语言包 - * @param lang - */ -async function loadDayjsLocale(lang: SupportedLanguagesType) { - let locale; - switch (lang) { - case 'zh-CN': { - locale = await import('dayjs/locale/zh-cn'); - break; - } - case 'en-US': { - locale = await import('dayjs/locale/en'); - break; - } - // 默认使用英语 - default: { - locale = await import('dayjs/locale/en'); - } - } - if (locale) { - dayjs.locale(locale); - } else { - console.error(`Failed to load dayjs locale for ${lang}`); - } -} - -/** - * 加载antd的语言包 - * @param lang - */ -async function loadAntdLocale(lang: SupportedLanguagesType) { - switch (lang) { - case 'zh-CN': { - antdLocale.value = antdDefaultLocale; - break; - } - case 'en-US': { - antdLocale.value = antdEnLocale; - break; - } - } -} - -async function setupI18n(app: App, options: LocaleSetupOptions = {}) { - await coreSetup(app, { - defaultLocale: preferences.app.locale, - loadMessages, - missingWarn: !import.meta.env.PROD, - ...options, - }); -} - -export { $t, antdLocale, setupI18n }; diff --git a/apps/web-facilities/src/locales/langs/en-US.json b/apps/web-facilities/src/locales/langs/en-US.json deleted file mode 100644 index 864c721f..00000000 --- a/apps/web-facilities/src/locales/langs/en-US.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "Demos", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-facilities/src/locales/langs/zh-CN.json b/apps/web-facilities/src/locales/langs/zh-CN.json deleted file mode 100644 index 31d3475b..00000000 --- a/apps/web-facilities/src/locales/langs/zh-CN.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "演示", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-facilities/src/main.ts b/apps/web-facilities/src/main.ts deleted file mode 100644 index 5d728a02..00000000 --- a/apps/web-facilities/src/main.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { initPreferences } from '@vben/preferences'; -import { unmountGlobalLoading } from '@vben/utils'; - -import { overridesPreferences } from './preferences'; - -/** - * 应用初始化完成之后再进行页面加载渲染 - */ -async function initApplication() { - // name用于指定项目唯一标识 - // 用于区分不同项目的偏好设置以及存储数据的key前缀以及其他一些需要隔离的数据 - const env = import.meta.env.PROD ? 'prod' : 'dev'; - const appVersion = import.meta.env.VITE_APP_VERSION; - const namespace = `${import.meta.env.VITE_APP_NAMESPACE}-${appVersion}-${env}`; - - // app偏好设置初始化 - await initPreferences({ - namespace, - overrides: overridesPreferences, - }); - - // 启动应用并挂载 - // vue应用主要逻辑及视图 - const { bootstrap } = await import('./bootstrap'); - await bootstrap(namespace); - - // 移除并销毁loading - unmountGlobalLoading(); -} - -initApplication(); diff --git a/apps/web-facilities/src/plugins/fastCrud.ts b/apps/web-facilities/src/plugins/fastCrud.ts deleted file mode 100644 index 9c5c8585..00000000 --- a/apps/web-facilities/src/plugins/fastCrud.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { App } from 'vue'; - -import FastCrud from '@fast-crud/fast-crud'; -import ui from '@fast-crud/ui-antdv4'; -import Antdv from 'ant-design-vue'; -import '@fast-crud/fast-crud/dist/style.css'; -import '@fast-crud/ui-antdv4/dist/style.css'; - -export function registerFastCrud(app: App) { - app.use(Antdv); - app.use(ui); - app.use(FastCrud, { - - }); -} diff --git a/apps/web-facilities/src/plugins/vxeTable.ts b/apps/web-facilities/src/plugins/vxeTable.ts deleted file mode 100644 index 850334f0..00000000 --- a/apps/web-facilities/src/plugins/vxeTable.ts +++ /dev/null @@ -1,202 +0,0 @@ -import type { App } from 'vue'; - -import VXETable from 'vxe-table' - -import { - VxeTable, - VxeColumn, - VxeColgroup, - VxeGrid, - VxeToolbar -} from 'vxe-table' - -import VxeUI from 'vxe-pc-ui' - -import { - - VxeAlert, - VxeAnchor, - VxeAnchorLink, - VxeBreadcrumb, - VxeBreadcrumbItem, - VxeButton, - VxeButtonGroup, - VxeCalendar, - VxeCard, - VxeCarousel, - VxeCheckbox, - VxeCheckboxGroup, - VxeCol, - VxeCollapse, - VxeCollapsePane, - VxeDatePicker, - VxeDrawer, - VxeForm, - VxeFormDesign, - VxeFormGather, - VxeFormItem, - VxeFormView, - VxeIcon, - VxeIconPicker, - VxeImage, - VxeImageGroup, - VxeImagePreview, - VxeInput, - VxeLayoutAside, - VxeLayoutBody, - VxeLayoutContainer, - VxeLayoutFooter, - VxeLayoutHeader, - VxeLink, - VxeListDesign, - VxeListView, - VxeList, - VxeLoading, - VxeMenu, - VxeModal, - VxeNumberInput, - VxeOptgroup, - VxeOption, - VxePager, - VxePasswordInput, - VxePrintPageBreak, - VxePrint, - VxePulldown, - VxeRadio, - VxeRadioButton, - VxeRadioGroup, - VxeRow, - VxeSelect, - VxeSwitch, - VxeTabPane, - VxeTabs, - VxeTag, - VxeText, - VxeTextarea, - VxeTip, - VxeTooltip, - VxeTree, - VxeTreeSelect, - VxeUpload -} from 'vxe-pc-ui' - -import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx' -import ExcelJS from 'exceljs' - -import VXETablePluginAntd from 'vxe-table-plugin-antd' - -// 导入主题变量,也可以重写主题变量 -import 'vxe-pc-ui/lib/style.css' -import 'vxe-table/lib/style.css' -import 'vxe-table/styles/cssvar.scss' -import 'vxe-pc-ui/styles/cssvar.scss' - -// VxeUI.setTheme('dark') - -VxeUI.component(VxeAlert) -VxeUI.component(VxeAnchor) -VxeUI.component(VxeAnchorLink) -VxeUI.component(VxeBreadcrumb) -VxeUI.component(VxeBreadcrumbItem) -VxeUI.component(VxeButton) -VxeUI.component(VxeButtonGroup) -VxeUI.component(VxeCalendar) -VxeUI.component(VxeCard) -VxeUI.component(VxeCarousel) -VxeUI.component(VxeCheckbox) -VxeUI.component(VxeCheckboxGroup) -VxeUI.component(VxeCol) -VxeUI.component(VxeCollapse) -VxeUI.component(VxeCollapsePane) -VxeUI.component(VxeDatePicker) -VxeUI.component(VxeDrawer) -VxeUI.component(VxeForm) -VxeUI.component(VxeFormDesign) -VxeUI.component(VxeFormGather) -VxeUI.component(VxeFormItem) -VxeUI.component(VxeFormView) -VxeUI.component(VxeIcon) -VxeUI.component(VxeIconPicker) -VxeUI.component(VxeImage) -VxeUI.component(VxeImageGroup) -VxeUI.component(VxeImagePreview) -VxeUI.component(VxeInput) -VxeUI.component(VxeLayoutAside) -VxeUI.component(VxeLayoutBody) -VxeUI.component(VxeLayoutContainer) -VxeUI.component(VxeLayoutFooter) -VxeUI.component(VxeLayoutHeader) -VxeUI.component(VxeLink) -VxeUI.component(VxeListDesign) -VxeUI.component(VxeListView) -VxeUI.component(VxeList) -VxeUI.component(VxeLoading) -VxeUI.component(VxeMenu) -VxeUI.component(VxeModal) -VxeUI.component(VxeNumberInput) -VxeUI.component(VxeOptgroup) -VxeUI.component(VxeOption) -VxeUI.component(VxePager) -VxeUI.component(VxePasswordInput) -VxeUI.component(VxePrintPageBreak) -VxeUI.component(VxePrint) -VxeUI.component(VxePulldown) -VxeUI.component(VxeRadio) -VxeUI.component(VxeRadioButton) -VxeUI.component(VxeRadioGroup) -VxeUI.component(VxeRow) -VxeUI.component(VxeSelect) -VxeUI.component(VxeSwitch) -VxeUI.component(VxeTabPane) -VxeUI.component(VxeTabs) -VxeUI.component(VxeTag) -VxeUI.component(VxeText) -VxeUI.component(VxeTextarea) -VxeUI.component(VxeTip) -VxeUI.component(VxeTooltip) -VxeUI.component(VxeTree) -VxeUI.component(VxeTreeSelect) -VxeUI.component(VxeUpload) - -VxeUI.component(VxeTable) -VxeUI.component(VxeColumn) -VxeUI.component(VxeColgroup) -VxeUI.component(VxeGrid) -VxeUI.component(VxeToolbar) - -VXETable.use(VXETablePluginAntd) - -VXETable.use(VXETablePluginExportXLSX, { - ExcelJS -}) - -VXETable.setConfig({ - // zIndex: 9999, - grid: { - size: 'mini', - proxyConfig: { - props: { - result: 'data.rows', - total: 'data.total', - }, - }, - toolbarConfig: { - enabled: true, - }, - }, - - pager: { - background: true, - pageSize: 50, - pageSizes: [50, 100, 300, 500, 1000], - layouts: ['PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total'], - }, -}) -export function registerVxeTable(app: App) { - app.use(VxeUI) - app.use(VxeTable) - app.use(VxeColumn) - app.use(VxeColgroup) - app.use(VxeGrid) - app.use(VxeToolbar) -} diff --git a/apps/web-facilities/src/preferences.ts b/apps/web-facilities/src/preferences.ts deleted file mode 100644 index 2cd2786d..00000000 --- a/apps/web-facilities/src/preferences.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineOverridesPreferences } from '@vben/preferences'; - -/** - * @description 项目配置文件 - * 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置 - */ -export const overridesPreferences = defineOverridesPreferences({ - // overrides - app: { - name: import.meta.env.VITE_APP_TITLE, - authPageLayout: 'panel-right', - }, -}); diff --git a/apps/web-facilities/src/router/access.ts b/apps/web-facilities/src/router/access.ts deleted file mode 100644 index 72c1b2c0..00000000 --- a/apps/web-facilities/src/router/access.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { - ComponentRecordType, - GenerateMenuAndRoutesOptions, -} from '@vben/types'; - -import { generateAccessible } from '@vben/access'; -import { preferences } from '@vben/preferences'; - -import { message } from 'ant-design-vue'; - -import { getAllMenusApi } from '#/api/system/menu'; -import { BasicLayout, IFrameView } from '#/layouts'; -import { $t } from '#/locales'; - -const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue'); - -async function generateAccess(options: GenerateMenuAndRoutesOptions) { - const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue'); - - const layoutMap: ComponentRecordType = { - BasicLayout, - IFrameView, - }; - - return await generateAccessible(preferences.app.accessMode, { - ...options, - fetchMenuListAsync: async () => { - message.loading({ - content: `${$t('common.loadingMenu')}...`, - duration: 1.5, - }); - return await getAllMenusApi(); - }, - // 可以指定没有权限跳转403页面 - forbiddenComponent, - // 如果 route.meta.menuVisibleWithForbidden = true - layoutMap, - pageMap, - }); -} - -export { generateAccess }; diff --git a/apps/web-facilities/src/router/guard.ts b/apps/web-facilities/src/router/guard.ts deleted file mode 100644 index 1e94cd8d..00000000 --- a/apps/web-facilities/src/router/guard.ts +++ /dev/null @@ -1,240 +0,0 @@ -import type { Router } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { preferences } from '@vben/preferences'; -import { useAccessStore, useUserStore } from '@vben/stores'; -import { startProgress, stopProgress } from '@vben/utils'; - -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; -import { coreRouteNames, dynamicRoutes } from '#/router/routes'; -import { useAuthStore } from '#/store'; -import Apis from '#/api'; -import { generateAccess } from './access'; - -/** - * 通用守卫配置 - * @param router - */ -function setupCommonGuard(router: Router) { - // 记录已经加载的页面 - const loadedPaths = new Set(); - - router.beforeEach(async (to) => { - to.meta.loaded = loadedPaths.has(to.path); - - // 页面加载进度条 - if (!to.meta.loaded && preferences.transition.progress) { - startProgress(); - } - return true; - }); - - router.afterEach((to) => { - // 记录页面是否加载,如果已经加载,后续的页面切换动画等效果不在重复执行 - - if (preferences.tabbar.enable) { - loadedPaths.add(to.path); - } - - // 关闭页面加载进度条 - if (preferences.transition.progress) { - stopProgress(); - } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } - }); -} - -/** - * 匹配路径 - * permission.path = "/xx/edit" 但route.path = "/xx/edit/:id?" 这种情况,其中id可以为任意值,如meetingId roleId等, - */ -function matchPaths(routePath, permissionPath) { - const routeParts = routePath.split('/'); - const permissionParts = permissionPath.split('/'); - - if (permissionParts.length > routeParts.length) { - return false; - } - - return routeParts.every((part, index) => { - return part === permissionParts[index] || part.startsWith(':'); - }); -} - -// 过滤路由,只保留第三个数据源配置的路由 -function filterRoutesByPermissions(routes, permissions, staticRouteKeys) { - const filteredRoutes = []; - for (let route of routes) { - console.log('[ route ] >', route) - console.log('[ permission.path ] >', permissions) - - const permission = permissions.find(permission => - matchPaths(route.path, permission.path) - ); - const isStaticRoute = staticRouteKeys.includes(route.name); - - if (permission || isStaticRoute) { - const newRoute = { ...route }; - if (permission) { - newRoute.meta = { - ...newRoute.meta, - title: permission.name, - }; - if (permission.order) { - newRoute.meta.order = permission.order - } - - } - if (route.children) { - newRoute.children = filterRoutesByPermissions(route.children, permissions, staticRouteKeys); - } - filteredRoutes.push(newRoute); - console.log(JSON.parse(JSON.stringify(filteredRoutes))); - - } - } - - return filteredRoutes; -} - -/** - * 权限访问守卫配置 - * @param router - */ -function setupAccessGuard(router: Router) { - router.beforeEach(async (to, from) => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const authStore = useAuthStore(); - - // 基本路由,这些路由不需要进入权限拦截 - if (coreRouteNames.includes(to.name as string)) { - if (to.path === LOGIN_PATH && accessStore.accessToken) { - return decodeURIComponent( - (to.query?.redirect as string) || DEFAULT_HOME_PATH, - ); - } - return true; - } - - // accessToken 检查 - if (!accessStore.accessToken) { - // 明确声明忽略权限访问权限,则可以访问 - if (to.meta.ignoreAccess) { - return true; - } - - // 没有访问权限,跳转登录页面 - if (to.fullPath !== LOGIN_PATH) { - return { - path: LOGIN_PATH, - // 如不需要,直接删除 query - query: { redirect: encodeURIComponent(to.fullPath) }, - // 携带当前跳转的页面,登录后重新跳转该页面 - replace: true, - }; - } - return to; - } - - // 是否已经生成过动态路由 - if (accessStore.isAccessChecked) { - return true; - } - - // 生成路由表 - // 当前登录用户拥有的角色标识列表 - const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); - const userRoles = userInfo.roles ?? []; - - // debugger - - // 二开,从统一授权获取菜单key值,遍历本地所有菜单进行添加 - - let staticRouteKeys = ["Dashboard", "home", "User", "UserCenter", "UserTodo","IFrame","MeetingStandingBook","MeetingStart","DutyStandingBook","ContractInfo"]; - - let r = await Apis.sys.user.functiontree.get_XTBGXT() - let originRouters = r.rows[0].children; - // 提取数据的函数 - const extractData = (input: any[]) => { - const result: any[] = []; - function traverse(node: any) { - if (node.id && node.name && node.remark) { - result.push({ - path: node.remark, - name: node.name, - order: node.showOrder || 0, - }); - } - if (node.children && node.children.length > 0) { - for (const child of node.children) { - traverse(child); - } - } - } - - for (const node of input) { - traverse(node); - } - - return result; - } - console.log('originRouters', originRouters) - originRouters = extractData(originRouters); - console.log('originRouters', originRouters) - - let finalRoutes = filterRoutesByPermissions(dynamicRoutes, originRouters, staticRouteKeys); - - console.log(originRouters) - console.log('finalRoutes', finalRoutes) - - console.log('dynamicRoutes', dynamicRoutes) - console.log('userInfo', userInfo) - - if (userInfo.accountId == 'Admin.itl'|| userInfo._isSkip) { - finalRoutes = dynamicRoutes; - } - - console.log(userInfo) - - - // 生成菜单和路由 - const { accessibleMenus, accessibleRoutes } = await generateAccess({ - roles: userRoles, - router, - // 则会在菜单中显示,但是访问会被重定向到403 - routes: finalRoutes, - }); - // 保存菜单信息和路由信息 - accessStore.setAccessMenus(accessibleMenus); - accessStore.setAccessRoutes(accessibleRoutes); - accessStore.setIsAccessChecked(true); - const redirectPath = (from.query.redirect ?? to.fullPath) as string; - - return { - ...router.resolve(decodeURIComponent(redirectPath)), - replace: true, - }; - }); -} - -/** - * 项目守卫配置 - * @param router - */ -function createRouterGuard(router: Router) { - /** 通用 */ - setupCommonGuard(router); - /** 权限访问 */ - setupAccessGuard(router); -} - -export { createRouterGuard }; diff --git a/apps/web-facilities/src/router/index.ts b/apps/web-facilities/src/router/index.ts deleted file mode 100644 index 313b372b..00000000 --- a/apps/web-facilities/src/router/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - createRouter, - createWebHashHistory, - createWebHistory, -} from 'vue-router'; - -import { resetStaticRoutes } from '@vben/utils'; - -import { createRouterGuard } from './guard'; -import { routes } from './routes'; - -/** - * @zh_CN 创建vue-router实例 - */ -const router = createRouter({ - history: - import.meta.env.VITE_ROUTER_HISTORY === 'hash' - ? createWebHashHistory(import.meta.env.VITE_BASE) - : createWebHistory(import.meta.env.VITE_BASE), - // 应该添加到路由的初始路由列表。 - routes, - scrollBehavior: () => ({ left: 0, top: 0 }), - // 是否应该禁止尾部斜杠。 - // strict: true, -}); - -const resetRoutes = () => resetStaticRoutes(router, routes); - -// 创建路由守卫 -createRouterGuard(router); - -export { resetRoutes, router }; diff --git a/apps/web-facilities/src/router/routes/core.ts b/apps/web-facilities/src/router/routes/core.ts deleted file mode 100644 index 95543525..00000000 --- a/apps/web-facilities/src/router/routes/core.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { DEFAULT_HOME_PATH } from '@vben/constants'; - -import { AuthPageLayout, IFrameView } from '#/layouts'; - -import { $t } from '#/locales'; -import Login from '#/views/_core/authentication/login.vue'; - -/** 全局404页面 */ -const fallbackNotFoundRoute: RouteRecordRaw = { - component: () => import('#/views/_core/fallback/not-found.vue'), - meta: { - hideInBreadcrumb: true, - hideInMenu: true, - hideInTab: true, - title: '404', - }, - name: 'FallbackNotFound', - path: '/:path(.*)*', -}; - -/** 基本路由,这些路由是必须存在的 */ -const coreRoutes: RouteRecordRaw[] = [ - { - meta: { - title: 'Root', - }, - name: 'Root', - path: '/', - redirect: DEFAULT_HOME_PATH, - }, - { - component: AuthPageLayout, - props: { - toolbar: false, - }, - meta: { - title: 'Authentication', - }, - name: 'Authentication', - path: '/auth', - children: [ - { - name: 'Login', - path: 'login', - component: Login, - meta: { - title: $t('page.core.login'), - }, - }, - ], - }, -]; - -export { coreRoutes, fallbackNotFoundRoute }; diff --git a/apps/web-facilities/src/router/routes/index.ts b/apps/web-facilities/src/router/routes/index.ts deleted file mode 100644 index a70c4875..00000000 --- a/apps/web-facilities/src/router/routes/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { mergeRouteModules, traverseTreeValues } from '@vben/utils'; - -import { coreRoutes, fallbackNotFoundRoute } from './core'; - -const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { - eager: true, -}); - -// 有需要可以自行打开注释,并创建文件夹 -// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true }); - -/** 动态路由 */ -const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles); - -/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统 */ -// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); -const externalRoutes: RouteRecordRaw[] = []; - -/** 路由列表,由基本路由+静态路由组成 */ -const routes: RouteRecordRaw[] = [ - ...coreRoutes, - ...externalRoutes, - fallbackNotFoundRoute, -]; - -/** 基本路由列表,这些路由不需要进入权限拦截 */ -const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name); - -export { coreRouteNames, dynamicRoutes, routes }; diff --git a/apps/web-facilities/src/router/routes/modules/dashboard.ts b/apps/web-facilities/src/router/routes/modules/dashboard.ts deleted file mode 100644 index c83eeb0b..00000000 --- a/apps/web-facilities/src/router/routes/modules/dashboard.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: -1, - title: '首页', - }, - name: 'Dashboard', - path: '/home', - children: [ - { - name: 'home', - path: '/home', - component: () => import('#/views/dashboard/home/index.vue'), - meta: { - affixTab: true, - hideInMenu: true, - icon: 'lucide:area-chart', - title: '首页', - }, - }, - // { - // name: 'Analytics', - // path: '/analytics', - // component: () => import('#/views/dashboard/analytics/index.vue'), - // meta: { - // affixTab: true, - // icon: 'lucide:area-chart', - // title: $t('page.dashboard.analytics'), - // }, - // }, - // { - // name: 'Workspace', - // path: '/workspace', - // component: () => import('#/views/dashboard/workspace/index.vue'), - // meta: { - // title: $t('page.dashboard.workspace'), - // }, - // }, - ], - }, -]; - -export default routes; diff --git a/apps/web-facilities/src/router/routes/modules/facilities.ts b/apps/web-facilities/src/router/routes/modules/facilities.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-facilities/src/router/routes/modules/system.ts b/apps/web-facilities/src/router/routes/modules/system.ts deleted file mode 100644 index 5146406c..00000000 --- a/apps/web-facilities/src/router/routes/modules/system.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 10, - title: '系统管理', - }, - name: 'System', - path: '/system', - children: [ - { - name: 'Dict', - path: '/system/dict', - component: () => import('#/views/system/dict/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '字典管理', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-facilities/src/router/routes/modules/ucenter.ts b/apps/web-facilities/src/router/routes/modules/ucenter.ts deleted file mode 100644 index 2cc9b060..00000000 --- a/apps/web-facilities/src/router/routes/modules/ucenter.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - hideInMenu: true, - icon: 'lucide:layout-dashboard', - order: -1, - title: '用户中心', - }, - name: 'User', - path: '/user', - children: [ - { - name: 'UserTodo', - path: '/user/todo', - component: () => import('#/views/user-center/todo/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '消息通知', - }, - }, - { - name: 'UserCenter', - path: '/user/center', - component: () => import('#/views/user-center/center/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '个人中心', - }, - }, - { - name: 'About', - path: '/about', - component: () => import('#/views/_core/about/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '关于', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-facilities/src/store/auth.ts b/apps/web-facilities/src/store/auth.ts deleted file mode 100644 index 1f1f226e..00000000 --- a/apps/web-facilities/src/store/auth.ts +++ /dev/null @@ -1,131 +0,0 @@ -import type { LoginAndRegisterParams } from '@vben/common-ui'; -import type { UserInfo } from '@vben/types'; - -import { ref } from 'vue'; -import { useRouter } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores'; - -import { notification } from 'ant-design-vue'; -import { defineStore } from 'pinia'; - -import { getUserInfoApi, loginApi } from '#/api/system/auth'; - -import { $t } from '#/locales'; - -export const useAuthStore = defineStore('auth', () => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const router = useRouter(); - - const loginLoading = ref(false); - let loginInfo = localStorage.getItem('loginInfo') || '{}'; - /** - * 异步处理登录操作 - * Asynchronously handle the login process - * @param params 登录表单数据 - */ - async function authLogin( - params: LoginAndRegisterParams, - onSuccess?: () => Promise | void, - ) { - // 异步处理用户登录操作并获取 accessToken - let userInfo: null | UserInfo = null; - try { - loginLoading.value = true; - if(params.username == 'Admin.itl' || params._isSkip){ - }else{ - params.username = params.username + '.RL' - } - - const loginRes = await loginApi({ - ...params, - appId: 'PLRL', - appName: 'ERP管理系统', - appSecret: 'r1og4wiyrrvr4qvw2aafhgvy', - }); - console.log(loginRes); - if (params._isSkip) { - loginRes._isSkip = params._isSkip - } - - loginInfo = JSON.stringify(loginRes); - localStorage.setItem('loginInfo', loginInfo); - - const { accessToken } = loginRes; - // 如果成功获取到 accessToken - if (accessToken) { - accessStore.setAccessToken(accessToken); - - // 获取用户信息并存储到 accessStore 中 - const [fetchUserInfoResult] = await Promise.all([fetchUserInfo()]); - - userInfo = fetchUserInfoResult; - if (params._isSkip) { - userInfo._isSkip = params._isSkip - } - userStore.setUserInfo(userInfo); - - if (accessStore.loginExpired) { - accessStore.setLoginExpired(false); - } else { - onSuccess - ? await onSuccess?.() - : await router.push(userInfo.homePath || DEFAULT_HOME_PATH); - } - - if (userInfo?.realName) { - notification.success({ - description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`, - duration: 3, - message: $t('authentication.loginSuccess'), - }); - } - } - } finally { - loginLoading.value = false; - } - - return { - userInfo, - }; - } - - async function logout(redirect: boolean = true) { - // await logoutApi(); - resetAllStores(); - accessStore.setLoginExpired(false); - - // 回登陆页带上当前路由地址 - await router.replace({ - path: LOGIN_PATH, - query: redirect - ? { - redirect: encodeURIComponent(router.currentRoute.value.fullPath), - } - : {}, - }); - } - - async function fetchUserInfo() { - let userInfo: null | UserInfo = null; - userInfo = await getUserInfoApi(); - userInfo = { ...JSON.parse(loginInfo), ...userInfo } - userStore.setUserInfo(userInfo); - return userInfo; - } - - function $reset() { - localStorage.removeItem('loginInfo'); - loginLoading.value = false; - } - - return { - $reset, - authLogin, - fetchUserInfo, - loginLoading, - logout, - }; -}); diff --git a/apps/web-facilities/src/store/dict.ts b/apps/web-facilities/src/store/dict.ts deleted file mode 100644 index b5d716ac..00000000 --- a/apps/web-facilities/src/store/dict.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { defineStore } from 'pinia'; -import { computed, ref } from 'vue'; -// import { getDictDataList } from '@/api/system/dict'; -import Apis from '#/api' -import dataModule from '#/utils/dict/static.data' - -const DICT_STORAGE_KEY = 'DICT_KEY'; - -interface DictDataVO { - dictType: string; - label: string; - value: string | number | null; - colorType: string; - cssClass: string; -} - -export const useDictStore = defineStore( - 'app-dict', - () => { - /** 是否初始化字典,是的话每次应用自动加载,后续走缓存,否的话每次请求 */ - const initDict = ref(true); - /** 字典合集,仅initDict为true时生效 */ - const dictMap = ref>({}); - /** 是否已设置字典合集,仅initDict为true时生效 */ - const isSetDict = ref(false); - /** 每次新查询字典时的查询缓存,单位:秒 主要用于循环获取数据显示label的场景,建议不低于10s */ - const expireAfterSeconds = ref(30); - - /** 获取所有字典数据 */ - const getDictMap = computed(() => dictMap.value); - /** 判断是否已设置字典表 */ - const getIsSetDict = computed(() => isSetDict.value); - - /** - * 设置字典信息 - * - * @returns - */ - const setDictMap = async (): Promise => { - try { - const data = await Apis.dictData.get_page({ params: { pageNum: 1, pageSize: 10000 } }); - const dictDataMap: Record = {}; - // 处理静态字典数据 - Object.keys(dataModule).forEach(dictType => { - const dictEntries = dataModule[dictType]; - dictEntries.forEach(dictData => { - dictData.type = dictType; - - if (!dictDataMap[dictType]) { - dictDataMap[dictType] = []; - } - dictDataMap[dictType].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData - } as DictDataVO); - }); - - }); - - // 处理动态字典数据 - data?.rows.forEach((dictData: any) => { - if (!dictDataMap[dictData.type]) dictDataMap[dictData.type] = []; - dictDataMap[dictData.type].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData - } as DictDataVO); - }); - - - console.log('[ dictDataMap ] >', dictDataMap) - dictMap.value = dictDataMap; - isSetDict.value = true; - return true; - } catch (error) { - console.error('字典数据获取失败:', error); - return false; - } - }; - - /** 获取字典数据 输入字典数组,输出包含对应类型的字典对象 */ - const getDictData = async (dictTypeArr: string[]): Promise> => { - if (initDict.value) { - const newDictMap: Record = {}; - if (isSetDict.value && Object.keys(dictMap.value).length) { - dictTypeArr.forEach(dictType => { - newDictMap[dictType] = dictMap.value[dictType] || []; - }); - return newDictMap; - } - - if (!isSetDict.value) { - console.warn('字典数据尚未加载,正在等待...'); - await new Promise(resolve => { - const checkInterval = setInterval(() => { - if (isSetDict.value) { - clearInterval(checkInterval); - dictTypeArr.forEach(dictType => { - newDictMap[dictType] = dictMap.value[dictType] || []; - }); - resolve(true); - } - }, 45); - }); - return newDictMap; - } - } - - try { - return {}; - } catch (error) { - console.error('getDictMap 函数报错:', error); - return {}; - } - }; - - /** - * 获取指定类型的具体的某个字典数据信息,数据默认会存在30秒缓存,以备快速使用 - * - * @returns Array - */ - const getDictInfo = async (dictType: string): Promise => { - const StorageKey = `${DICT_STORAGE_KEY}:${dictType}`; - try { - localStorage.setItem(StorageKey, JSON.stringify(dictMap.value)); - const dictDataMap = (await getDictData([dictType])) || {}; - setTimeout(() => { - localStorage.removeItem(StorageKey); - }, expireAfterSeconds.value * 1000); - return JSON.parse(JSON.stringify(dictDataMap[dictType])) || []; - } catch (error) { - console.error('getDictInfo函数报错:', error); - return []; - } - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataInfo = async (dictType: string, value: string): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - return dictDataMap.find(item => item.value === value) || ({} as DictDataVO); - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataLabel = async (dictType: string, value: string): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - const info = dictDataMap.find(item => item.value === value) || ({} as DictDataVO); - return info.label; - }; - - function $reset() { - // loginLoading.value = false; - } - - return { - initDict, - dictMap, - isSetDict, - expireAfterSeconds, - getDictMap, - getIsSetDict, - setDictMap, - getDictData, - getDictInfo, - getDictDataInfo, - getDictDataLabel, - $reset - }; - } -); diff --git a/apps/web-facilities/src/store/index.ts b/apps/web-facilities/src/store/index.ts deleted file mode 100644 index f8a40031..00000000 --- a/apps/web-facilities/src/store/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './auth'; -export * from './dict' diff --git a/apps/web-facilities/src/utils/dict/index.ts b/apps/web-facilities/src/utils/dict/index.ts deleted file mode 100644 index 19f2ba9a..00000000 --- a/apps/web-facilities/src/utils/dict/index.ts +++ /dev/null @@ -1,87 +0,0 @@ - -/** 数据字典工具类 */ -import { useDictStore } from '#/store/dict'; - -export * from './shared'; - -const dictStore = useDictStore(); - -/** - * 获取 dictType 对应的数据字典数组 - * - * @param dictType 数据类型 - * @returns {any | Array} 数据字典数组 - */ -export interface DictDataType { - dictTyp?: string; - label: string; - value: string | number | null; - key?: any; - colorType?: string; - cssClass?: string; - isDefault?: boolean; -} - -export interface DictDataOptions { - label?: any; - value?: string | number | null; -} - -export function getDictDatas(dictType: string) { - return dictStore.getDictMap[dictType] || []; -} - -export function getDictOpts(dictType: string) { - /** - * 这里原来是转换类型 转换类型后反而显示不出来正确的Tag 实际类型转换交给下面的getDictOptions来处理 - * - * bugfix: dictOption.push({ ...dict, value: parseInt(dict.value + '') }) 原来的这种写法是造成页面卡死的原因 - */ - return getDictDatas(dictType); -} - -export function getDictOptions(dictType: string, valueType?: 'string' | 'number' | 'boolean'): any[] { - const dictOption: DictDataType[] = []; - valueType ||= 'string'; - - const dictOptions: DictDataType[] = getDictDatas(dictType); - if (dictOptions && dictOptions.length > 0) { - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - key: dict.value, - value: - valueType === 'string' - ? `${dict.value}` - : valueType === 'boolean' - ? `${dict.value}` === 'true' - : Number.parseInt(`${dict.value}`) - }); - }); - } - - return dictOption; -} - -/** 获取指定 value 的字典数据 */ -export function getDictObj(dictType: string, value: any): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - if (dictOptions) { - if (value) { - return dictOptions.find((dict: DictDataType) => dict.value === value.toString()) || null; - } - return null; - } else { - return null; - } -} - -/** 获取字典默认数据 */ -export function getDictDefaultObj(dictType: string): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - if (dictOptions) { - return dictOptions.find((dict: DictDataType) => dict.isDefault == '1') || dictOptions[0]; - } else { - return null; - } -} diff --git a/apps/web-facilities/src/utils/dict/shared.ts b/apps/web-facilities/src/utils/dict/shared.ts deleted file mode 100644 index 42de57e7..00000000 --- a/apps/web-facilities/src/utils/dict/shared.ts +++ /dev/null @@ -1,45 +0,0 @@ -export enum DICT_TYPE { - /** 系统通用状态 */ - sys_normal_disable = 'sys_normal_disable', - /** 合同管理-资金流向 */ - contract_fund_flow = 'contract_fund_flow', - /** 合同管理-资金渠道 */ - contract_funding_source = 'contract_funding_source', - /** 合同管理-组织形式 */ - contract_organization_form = 'contract_organization_form', - /** 合同管理-币种单位 */ - contract_currency_unit = 'contract_currency_unit', - /** 合同管理-合同模块 */ - contract_module = 'contract_module', - /** 合同管理-选商方式 */ - contract_selection_method = 'contract_selection_method', - /** 合同管理-合同审批 */ - contract_approval = 'contract_approval', - /** 合同管理-履行状态 */ - contract_performance_status = 'contract_performance_status', - /** 合同管理-授权类型 */ - contract_authorization_type = 'contract_authorization_type', - /** 合同管理-项目类型 */ - contract_project_type = 'contract_project_type', - /** 合同管理-商务计价方式 */ - contract_price_style = 'contract_price_style', - /** 综合管理-项目管理 */ - comprehensive_project = 'comprehensive_project', - /** 综合管理-项目名称管理 */ - comprehensive_project_name = 'comprehensive_project_name', - comprehensive_config = 'comprehensive_config', - /** 合同管理-签约依据类型 */ - contract_basis_type = 'contract_basis_type', - /** 变更原因 */ - cancel_reson = 'cancel_reson', - /** 划分标段 */ - section_type = 'section_type', - /** 标段数 */ - section_num = 'section_num', - /** 常用是否 */ - common_whether = 'common_whether', - /** 履行期限 */ - deadline_for_performance = 'deadline_for_performance', - /** 纠纷解决方式 */ - dispute_settlement_methods = 'dispute_settlement_methods' -} diff --git a/apps/web-facilities/src/utils/dict/static.data.js b/apps/web-facilities/src/utils/dict/static.data.js deleted file mode 100644 index 1f991558..00000000 --- a/apps/web-facilities/src/utils/dict/static.data.js +++ /dev/null @@ -1,65 +0,0 @@ -const createEntry = (annotation = '', data = []) => ({ - annotation, - data, -}); - -export default { - sys_normal_disable: createEntry('系统通用状态'), - - contract_fund_flow: createEntry('合同管理-资金流向'), - contract_funding_source: createEntry('合同管理-资金渠道'), - contract_organization_form: createEntry('合同管理-组织形式'), - contract_currency_unit: createEntry('合同管理-币种单位'), - contract_module: createEntry('合同管理-合同模块'), - contract_selection_method: createEntry('合同管理-选商方式'), - contract_approval: createEntry('合同管理-合同审批'), - contract_performance_status: createEntry('合同管理-履行状态'), - contract_authorization_type: createEntry('合同管理-授权类型'), - contract_project_type: createEntry('合同管理-项目类型'), - contract_price_style: createEntry('合同管理-商务计价方式'), - - comprehensive_project: createEntry('综合管理-项目管理'), - comprehensive_project_name: createEntry('综合管理-项目名称管理'), - comprehensive_config: createEntry(), - - contract_basis_type: createEntry('合同管理-签约依据类型'), - - cancel_reson: createEntry('变更原因', [ - { label: '未填写原因', value: '0' }, - { label: '用户取消', value: '1' }, - { label: '系统取消', value: '2' }, - { label: '其他原因', value: '3' }, - ]), - - section_type: createEntry('划分标段', [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ]), - - section_num: createEntry('标段数', [ - { label: '1', value: '1' }, - { label: '2', value: '2' }, - { label: '3', value: '3' }, - { label: '4', value: '4' }, - { label: '5', value: '5' }, - { label: '6', value: '6' }, - { label: '7', value: '7' }, - { label: '8', value: '8' }, - ]), - - common_whether: createEntry('常用是否', [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ]), - - deadline_for_performance: createEntry('履行期限', [ - { label: '确定', value: '1' }, - { label: '不确定', value: '0' }, - ]), - - dispute_settlement_methods: createEntry('纠纷解决方式', [ - { label: '诉讼', value: '1' }, - { label: '仲裁', value: '2' }, - { label: '其它', value: '3' }, - ]), -}; diff --git a/apps/web-facilities/src/utils/file.ts b/apps/web-facilities/src/utils/file.ts deleted file mode 100644 index 5937ad8e..00000000 --- a/apps/web-facilities/src/utils/file.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { message, type UploadProps } from "ant-design-vue"; -import Apis from '#/api'; - -export class FileUploader { - - - fileList = [] as UploadProps['fileList']; - uploading = false; - constructor(params: any) { - - } - - select = async (fileUuids: string) => { - return new Promise(async (resolve, reject) => { - Apis.attachment.get_list({ - params: { uuid: fileUuids } - }).then((data) => { - let files = [] as UploadProps['fileList']; - for (const element of data.rows) { - files?.push({ - uid: element.fileUuid, - name: element.fileName, - status: 'done', - url: element.fileUrl, - }) - } - resolve(files) - }).catch(e => { - reject() - }) - }) - } - - remove: UploadProps['onRemove'] = file => { - if (this.fileList) { - const index = this.fileList.indexOf(file); - const newFileList = this.fileList.slice(); - newFileList.splice(index, 1); - this.fileList = newFileList; - } - }; - - upload = async (files?: UploadProps['fileList'], data?: any) => { - return new Promise(async (resolve, reject) => { - if (this.fileList) { - const formData = new FormData(); - - if (data && Object.keys(data).length) { - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - } - - let file = files ? files : this.fileList; - let alreadyUploaded = [] as string[]; - file.forEach((file: UploadProps['fileList'][number]) => { - if (file.originFileObj) { - formData.append('files', file.originFileObj as any); - } else { - alreadyUploaded.push(file.uid) - } - }); - this.uploading = true; - - // You can use any AJAX library you like - try { - - this.fileList = []; - this.uploading = false; - let files = [] - for (const element of alreadyUploaded) { - files.push({ - fileUuid: element, - }) - } - - const filesCount = formData.getAll('files').length; - if (filesCount > 0) { - let data = await Apis.attachment.post_uploads({ - data: formData, - }) - files = files.concat(data.rows) - message.success('上传成功.'); - } - resolve(files || []) - - } catch (error) { - this.uploading = false; - reject() - message.error('上传失败.'); - } finally { - this.uploading = false; - } - - } - reject() - }); - - }; - -} diff --git a/apps/web-facilities/src/utils/index.ts b/apps/web-facilities/src/utils/index.ts deleted file mode 100644 index c297a8d1..00000000 --- a/apps/web-facilities/src/utils/index.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { h, unref } from 'vue'; -import type { App, Component, Plugin } from 'vue'; -import { cloneDeep, isObject } from 'lodash-es'; - - -/** 递归组装菜单格式 */ -export function generatorMenu(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name, - icon: isRoot ? item.meta?.icon : info.meta?.icon - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = generatorMenu(info.children); - } - return currentMenu; - }); -} - -/** 混合菜单 */ -export function generatorMenuMix(routerMap: Array, routerName: string, location: string) { - const cloneRouterMap = cloneDeep(routerMap); - const newRouter = filterRouter(cloneRouterMap); - if (location === 'header') { - const firstRouter: any[] = []; - newRouter.forEach(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - info.children = undefined; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - firstRouter.push(currentMenu); - }); - return firstRouter; - } - return getChildrenRouter(newRouter.filter(item => item.name === routerName)); -} - -/** 递归组装子菜单 */ -export function getChildrenRouter(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = getChildrenRouter(info.children); - } - return currentMenu; - }); -} - -/** 判断根路由 Router */ -export function isRootRouter(item) { - return item.meta?.alwaysShow != true && item?.children?.filter(item => !item?.meta?.hidden)?.length === 1; -} - -export const withInstall = (component: T, alias?: string) => { - const comp = component as any; - comp.install = (app: App) => { - app.component(comp.name || comp.displayName, component); - if (alias) { - app.config.globalProperties[alias] = component; - } - }; - return component as T & Plugin; -}; - -/** 找到对应的节点 */ -let result = null; -export function getTreeItem(data: any[], key?: string | number): any { - data.map(item => { - if (item.key === key) { - result = item; - } else if (item.children && item.children.length) { - getTreeItem(item.children, key); - } - }); - return result; -} - -/** 找到所有节点 */ -const treeAll: any[] = []; -export function getTreeAll(data: any[]): any[] { - data.map(item => { - treeAll.push(item.key); - if (item.children && item.children.length) { - getTreeAll(item.children); - } - }); - return treeAll; -} - -// dynamic use hook props -export function getDynamicProps(props: T): Partial { - const ret: Recordable = {}; - - Object.keys(props).map(key => { - ret[key] = unref((props as Recordable)[key]); - }); - - return ret as Partial; -} - -export function deepMerge(src: any = {}, target: any = {}): T { - let key: string; - for (key in target) { - src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]); - } - return src; -} - -/** - * Sums the passed percentage to the R, G or B of a HEX color - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed part of the color - */ -function addLight(color: string, amount: number) { - const cc = Number.parseInt(color, 16) + amount; - const c = cc > 255 ? 255 : cc; - return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`; -} - -/** - * Lightens a 6 char HEX color according to the passed percentage - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed color represented as HEX - */ -export function lighten(color: string, amount: number) { - color = color.includes('#') ? color.substring(1, color.length) : color; - amount = Math.trunc((255 * amount) / 100); - return `#${addLight(color.substring(0, 2), amount)}${addLight( - color.substring(2, 4), - amount - )}${addLight(color.substring(4, 6), amount)}`; -} - -/** 判断是否 url */ -export function isUrl(url: string) { - return /^(http|https):\/\//g.test(url); -} - -/** - * 数组结构转树形结构 - * - * @param {Array} arrayData 数据源 - * @param {Object} treeProps 树结构配置 { id:"_id", parent_id:"parent_id", - * children:"children",need_field:["_id","name"],deleteParentId:true } - * @returns {Array} treeData 树形结构 - */ -export function arrayToTree(originalArrayData, treeProps) { - const arrayData = cloneDeep(originalArrayData); - let { id = '_id', parent_id = 'parent_id', children = 'children', deleteParentId = false, need_field } = treeProps; - const result = []; - const temp = {}; - for (let i = 0; i < arrayData.length; i++) { - temp[arrayData[i][id]] = arrayData[i]; // 以id作为索引存储元素,可以无需遍历直接定位元素 - } - for (let j = 0; j < arrayData.length; j++) { - const currentElement = arrayData[j]; - const newCurrentElement = {}; - if (need_field) { - need_field = uniqueArr(need_field.concat([id, parent_id, children])); - for (const keyName in currentElement) { - if (!need_field.includes(keyName)) { - delete currentElement[keyName]; - } - } - } - const tempCurrentElementParent = temp[currentElement[parent_id]]; // 临时变量里面的当前元素的父元素 - if (tempCurrentElementParent) { - // 如果存在父元素 - if (!tempCurrentElementParent[children]) { - // 如果父元素没有chindren键 - tempCurrentElementParent[children] = []; // 设上父元素的children键 - } - if (deleteParentId) { - delete currentElement[parent_id]; - } - tempCurrentElementParent[children].push(currentElement); // 给父元素加上当前元素作为子元素 - } else { - // 不存在父元素,意味着当前元素是一级元素 - result.push(currentElement); - } - } - return result; -} - -// 最简单数组去重法 -export function uniqueArr(array) { - const n = []; // 一个新的临时数组 - // 遍历当前数组 - for (let i = 0; i < array.length; i++) { - // 如果当前数组的第i已经保存进了临时数组,那么跳过, - // 否则把当前项push到临时数组里面 - if (!n.includes(array[i])) n.push(array[i]); - } - return n; -} diff --git a/apps/web-facilities/src/utils/time.ts b/apps/web-facilities/src/utils/time.ts deleted file mode 100644 index e53cff41..00000000 --- a/apps/web-facilities/src/utils/time.ts +++ /dev/null @@ -1,65 +0,0 @@ - - -import dayjs from 'dayjs'; - -/** - * 通过传入年月获取对应月份的起止时间 - * @param dateStr YYYY-MM 的日期格式,如2024-06,不传默认当月 - */ -export function getMonthStartAndEnd(dateStr?: string) { - - if (!dateStr) { - dateStr = dayjs().format('YYYY-MM'); - } - - // 验证输入格式是否正确 - const regex = /^\d{4}-\d{2}$/; - if (!regex.test(dateStr)) { - throw new Error('日期字符串格式不正确,应为 YYYY-MM'); - } - - // 使用 split 方法分割字符串 - const [year, month] = dateStr.split('-').map(Number); - - // 获取指定月份的第一天 - const firstDayOfMonth = dayjs(new Date(year, month - 1, 1)).startOf('month').format('YYYY-MM-DD'); - - // 获取指定月份的最后一天 - const lastDayOfMonth = dayjs(new Date(year, month - 1, 1)).endOf('month').format('YYYY-MM-DD'); - - return [firstDayOfMonth, lastDayOfMonth] -} - - -export function shortcuts(params?: any) { - return { - '当前月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).startOf('month').valueOf(), dayjs(now).endOf('month').valueOf()] as const; - }, - '最近一周': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(7, 'day').valueOf(), now] as const; - }, - '最近一个月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'month').valueOf(), now] as const; - }, - '最近三个月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(3, 'month').valueOf(), now] as const; - }, - '最近半年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(6, 'month').valueOf(), now] as const; - }, - '最近一年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'year').valueOf(), now] as const; - }, - '当前年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).startOf('year').valueOf(), now] as const; - }, - } -} diff --git a/apps/web-facilities/src/views/_core/README.md b/apps/web-facilities/src/views/_core/README.md deleted file mode 100644 index 8248afe6..00000000 --- a/apps/web-facilities/src/views/_core/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# \_core - -此目录包含应用程序正常运行所需的基本视图。这些视图是应用程序布局中使用的视图。 diff --git a/apps/web-facilities/src/views/_core/about/index.vue b/apps/web-facilities/src/views/_core/about/index.vue deleted file mode 100644 index 0ee52433..00000000 --- a/apps/web-facilities/src/views/_core/about/index.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/authentication/code-login.vue b/apps/web-facilities/src/views/_core/authentication/code-login.vue deleted file mode 100644 index 36cf50ec..00000000 --- a/apps/web-facilities/src/views/_core/authentication/code-login.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/authentication/forget-password.vue b/apps/web-facilities/src/views/_core/authentication/forget-password.vue deleted file mode 100644 index 74ccc27e..00000000 --- a/apps/web-facilities/src/views/_core/authentication/forget-password.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/authentication/login.vue b/apps/web-facilities/src/views/_core/authentication/login.vue deleted file mode 100644 index f3f1fe4c..00000000 --- a/apps/web-facilities/src/views/_core/authentication/login.vue +++ /dev/null @@ -1,107 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/authentication/qrcode-login.vue b/apps/web-facilities/src/views/_core/authentication/qrcode-login.vue deleted file mode 100644 index 23f5f2da..00000000 --- a/apps/web-facilities/src/views/_core/authentication/qrcode-login.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/authentication/register.vue b/apps/web-facilities/src/views/_core/authentication/register.vue deleted file mode 100644 index f6b227d9..00000000 --- a/apps/web-facilities/src/views/_core/authentication/register.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/fallback/coming-soon.vue b/apps/web-facilities/src/views/_core/fallback/coming-soon.vue deleted file mode 100644 index f394930f..00000000 --- a/apps/web-facilities/src/views/_core/fallback/coming-soon.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/fallback/forbidden.vue b/apps/web-facilities/src/views/_core/fallback/forbidden.vue deleted file mode 100644 index 8ea65fed..00000000 --- a/apps/web-facilities/src/views/_core/fallback/forbidden.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/fallback/internal-error.vue b/apps/web-facilities/src/views/_core/fallback/internal-error.vue deleted file mode 100644 index 819a47d5..00000000 --- a/apps/web-facilities/src/views/_core/fallback/internal-error.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/fallback/not-found.vue b/apps/web-facilities/src/views/_core/fallback/not-found.vue deleted file mode 100644 index 4d178e9c..00000000 --- a/apps/web-facilities/src/views/_core/fallback/not-found.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/_core/fallback/offline.vue b/apps/web-facilities/src/views/_core/fallback/offline.vue deleted file mode 100644 index 5de4a88d..00000000 --- a/apps/web-facilities/src/views/_core/fallback/offline.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-facilities/src/views/dashboard/analytics/analytics-trends.vue deleted file mode 100644 index 35e90276..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/analytics-trends.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-data.vue b/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-data.vue deleted file mode 100644 index 30c4265d..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-data.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-sales.vue b/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-sales.vue deleted file mode 100644 index 260520b8..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-sales.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-source.vue deleted file mode 100644 index e0d0aab5..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits-source.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits.vue b/apps/web-facilities/src/views/dashboard/analytics/analytics-visits.vue deleted file mode 100644 index 7e1f14ee..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/analytics-visits.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/analytics/index.vue b/apps/web-facilities/src/views/dashboard/analytics/index.vue deleted file mode 100644 index 00b34df1..00000000 --- a/apps/web-facilities/src/views/dashboard/analytics/index.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/components/workbench-header.vue b/apps/web-facilities/src/views/dashboard/components/workbench-header.vue deleted file mode 100644 index 0bc6dc63..00000000 --- a/apps/web-facilities/src/views/dashboard/components/workbench-header.vue +++ /dev/null @@ -1,44 +0,0 @@ - - diff --git a/apps/web-facilities/src/views/dashboard/components/workbench-quick-nav.vue b/apps/web-facilities/src/views/dashboard/components/workbench-quick-nav.vue deleted file mode 100644 index 4c127cdf..00000000 --- a/apps/web-facilities/src/views/dashboard/components/workbench-quick-nav.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/home/index.vue b/apps/web-facilities/src/views/dashboard/home/index.vue deleted file mode 100644 index 6fd493b5..00000000 --- a/apps/web-facilities/src/views/dashboard/home/index.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/dashboard/workspace/index.vue b/apps/web-facilities/src/views/dashboard/workspace/index.vue deleted file mode 100644 index c8ae0273..00000000 --- a/apps/web-facilities/src/views/dashboard/workspace/index.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/demos/antd/index.vue b/apps/web-facilities/src/views/demos/antd/index.vue deleted file mode 100644 index 8286bebb..00000000 --- a/apps/web-facilities/src/views/demos/antd/index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/apps/web-facilities/src/views/system/dict/crud.tsx b/apps/web-facilities/src/views/system/dict/crud.tsx deleted file mode 100644 index 11a90d40..00000000 --- a/apps/web-facilities/src/views/system/dict/crud.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { type CreateCrudOptionsRet, dict, utils } from '@fast-crud/fast-crud'; - -export default function (): CreateCrudOptionsRet { - return { - crudOptions: { - columns: { - age: { - form: { - helper: '正则表达式', - rules: [{ message: '必须为整数', pattern: /^\d+$/ }], - }, - title: '年龄', - type: 'text', - }, - email: { - form: { - rules: [{ message: '请填写正确的邮箱', type: 'email' }], - }, - title: '邮箱', - type: 'text', - }, - name: { - editForm: { - rules: [{ max: 5, message: '姓名长度为2-5', min: 2 }], - }, - form: { - component: { - props: { - showWordLimit: true, - type: 'text', - }, - }, - helper: '添加和编辑时必填,编辑时额外需要校验长度', - rules: [{ message: '请输入姓名', required: true }], - }, - search: { - show: true, - }, - title: '姓名', - type: 'text', - }, - status: { - dict: dict({ - url: '/mock/dicts/OpenStatusEnum', - }), - form: { - rules: [{ message: '请选择一个选项', required: true }], - }, - title: '必选', - type: 'dict-select', - }, - url: { - form: { - rules: [{ message: '请填写正确的url', type: 'url' }], - }, - title: 'URL', - type: 'text', - }, - }, - form: { - afterSubmit(context) { - utils.logger.log('afterSubmit', context); - }, - beforeSubmit(context) { - utils.logger.log('beforeSubmit', context); - }, - row: { - gutter: 20, - }, - }, - request: {}, - settings: { - viewFormUseCellComponent: true, - }, - }, - }; -} diff --git a/apps/web-facilities/src/views/system/dict/dict-data-edit-modal.vue b/apps/web-facilities/src/views/system/dict/dict-data-edit-modal.vue deleted file mode 100644 index c1111a6f..00000000 --- a/apps/web-facilities/src/views/system/dict/dict-data-edit-modal.vue +++ /dev/null @@ -1,186 +0,0 @@ - - diff --git a/apps/web-facilities/src/views/system/dict/dict-type-edit-modal.vue b/apps/web-facilities/src/views/system/dict/dict-type-edit-modal.vue deleted file mode 100644 index 1f82d7f6..00000000 --- a/apps/web-facilities/src/views/system/dict/dict-type-edit-modal.vue +++ /dev/null @@ -1,157 +0,0 @@ - - diff --git a/apps/web-facilities/src/views/system/dict/index.vue b/apps/web-facilities/src/views/system/dict/index.vue deleted file mode 100644 index 8febe059..00000000 --- a/apps/web-facilities/src/views/system/dict/index.vue +++ /dev/null @@ -1,354 +0,0 @@ - - - - - diff --git a/apps/web-facilities/src/views/system/user/choose-user-modal.vue b/apps/web-facilities/src/views/system/user/choose-user-modal.vue deleted file mode 100644 index 228fab90..00000000 --- a/apps/web-facilities/src/views/system/user/choose-user-modal.vue +++ /dev/null @@ -1,355 +0,0 @@ - - diff --git a/apps/web-facilities/src/views/user-center/center/index.vue b/apps/web-facilities/src/views/user-center/center/index.vue deleted file mode 100644 index 324c1a74..00000000 --- a/apps/web-facilities/src/views/user-center/center/index.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/apps/web-facilities/src/views/user-center/todo/index.vue b/apps/web-facilities/src/views/user-center/todo/index.vue deleted file mode 100644 index 0976df2c..00000000 --- a/apps/web-facilities/src/views/user-center/todo/index.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - - diff --git a/apps/web-facilities/tailwind.config.mjs b/apps/web-facilities/tailwind.config.mjs deleted file mode 100644 index f17f556f..00000000 --- a/apps/web-facilities/tailwind.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config'; diff --git a/apps/web-facilities/tsconfig.json b/apps/web-facilities/tsconfig.json deleted file mode 100644 index 9abc9995..00000000 --- a/apps/web-facilities/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/web-app.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "#/*": ["./src/*"] - }, - "allowImportingTsExtensions": true, - "noImplicitAny": false - }, - - "references": [{ "path": "./tsconfig.node.json" }], - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] -} diff --git a/apps/web-facilities/tsconfig.node.json b/apps/web-facilities/tsconfig.node.json deleted file mode 100644 index c2f0d86c..00000000 --- a/apps/web-facilities/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/node.json", - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "noEmit": false - }, - "include": ["vite.config.mts"] -} diff --git a/apps/web-facilities/vite.config.mts b/apps/web-facilities/vite.config.mts deleted file mode 100644 index cae7813a..00000000 --- a/apps/web-facilities/vite.config.mts +++ /dev/null @@ -1,90 +0,0 @@ -import { defineConfig } from '@vben/vite-config'; - -import autoImport from 'unplugin-auto-import/vite'; - -import { autoBuildDict } from 'common-utils'; - -export default defineConfig(async () => { - return { - application: {}, - vite: { - plugins: [ - autoBuildDict({ - dataPath: 'src/utils/dict/static.data.js', - sharedPath: 'src/utils/dict/shared.ts', - }), - autoImport({ - // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 - imports: ['vue'], - include: [/\.[tj]sx?$/, /\.vue$/, /\.vue\?vue/], - resolvers: [], - vueTemplate: true, // 是否在 vue 模板中自动导入 - dts: true, // (false) 配置文件生成位置,默认是根目录 /auto-imports.d.ts - }), - ], - server: { - host: '0.0.0.0', - open: false, - port: 9529, - proxy: { - '/api/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/app/, '/'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.148.88:8083/rl`, - ws: true, - }, - '/api/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/uc/, '/'), - // target: `http://10.71.220.24:8082`, - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/czg/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.147.238:8083/rl`, - ws: true, - }, - '/api/czg/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/zp/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.153.236:8083/rl`, - ws: true, - }, - '/api/zp/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/xmh/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.147.144:8083/rl`, - ws: true, - }, - '/api/xmh/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - }, - }, - }, - }; -}); diff --git a/apps/web-materials/readme.md b/apps/web-materials/readme.md deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-oa/readme.md b/apps/web-oa/readme.md deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-office/.env b/apps/web-office/.env deleted file mode 100644 index e78f5685..00000000 --- a/apps/web-office/.env +++ /dev/null @@ -1,5 +0,0 @@ -# 应用标题 -VITE_APP_TITLE=ERP协同办公系统 - -# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 -VITE_APP_NAMESPACE=office diff --git a/apps/web-office/.env.analyze b/apps/web-office/.env.analyze deleted file mode 100644 index ffafa8dd..00000000 --- a/apps/web-office/.env.analyze +++ /dev/null @@ -1,7 +0,0 @@ -# public path -VITE_BASE=/ - -# Basic interface address SPA -VITE_GLOB_API_URL=/api - -VITE_VISUALIZER=true diff --git a/apps/web-office/.env.development b/apps/web-office/.env.development deleted file mode 100644 index 1eae9e67..00000000 --- a/apps/web-office/.env.development +++ /dev/null @@ -1,16 +0,0 @@ -# 端口号 -VITE_PORT=5666 - -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启 Nitro Mock服务,true 为开启,false 为关闭 -VITE_NITRO_MOCK=false - -# 是否打开 devtools,true 为打开,false 为关闭 -VITE_DEVTOOLS=false - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true diff --git a/apps/web-office/.env.production b/apps/web-office/.env.production deleted file mode 100644 index 5993af93..00000000 --- a/apps/web-office/.env.production +++ /dev/null @@ -1,19 +0,0 @@ -VITE_BASE=/ - -# 接口地址 -VITE_GLOB_API_URL=/api - -# 是否开启压缩,可以设置为 none, brotli, gzip -VITE_COMPRESS=none - -# 是否开启 PWA -VITE_PWA=false - -# vue-router 的模式 -VITE_ROUTER_HISTORY=history - -# 是否注入全局loading -VITE_INJECT_APP_LOADING=true - -# 打包后是否生成dist.zip -VITE_ARCHIVER=true diff --git a/apps/web-office/auto-imports.d.ts b/apps/web-office/auto-imports.d.ts deleted file mode 100644 index d7d30c37..00000000 --- a/apps/web-office/auto-imports.d.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// noinspection JSUnusedGlobalSymbols -// Generated by unplugin-auto-import -// biome-ignore lint: disable -export {} -declare global { - const EffectScope: typeof import('vue')['EffectScope'] - const computed: typeof import('vue')['computed'] - const createApp: typeof import('vue')['createApp'] - const customRef: typeof import('vue')['customRef'] - const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] - const defineComponent: typeof import('vue')['defineComponent'] - const effectScope: typeof import('vue')['effectScope'] - const getCurrentInstance: typeof import('vue')['getCurrentInstance'] - const getCurrentScope: typeof import('vue')['getCurrentScope'] - const h: typeof import('vue')['h'] - const inject: typeof import('vue')['inject'] - const isProxy: typeof import('vue')['isProxy'] - const isReactive: typeof import('vue')['isReactive'] - const isReadonly: typeof import('vue')['isReadonly'] - const isRef: typeof import('vue')['isRef'] - const markRaw: typeof import('vue')['markRaw'] - const nextTick: typeof import('vue')['nextTick'] - const onActivated: typeof import('vue')['onActivated'] - const onBeforeMount: typeof import('vue')['onBeforeMount'] - const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] - const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] - const onDeactivated: typeof import('vue')['onDeactivated'] - const onErrorCaptured: typeof import('vue')['onErrorCaptured'] - const onMounted: typeof import('vue')['onMounted'] - const onRenderTracked: typeof import('vue')['onRenderTracked'] - const onRenderTriggered: typeof import('vue')['onRenderTriggered'] - const onScopeDispose: typeof import('vue')['onScopeDispose'] - const onServerPrefetch: typeof import('vue')['onServerPrefetch'] - const onUnmounted: typeof import('vue')['onUnmounted'] - const onUpdated: typeof import('vue')['onUpdated'] - const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] - const provide: typeof import('vue')['provide'] - const reactive: typeof import('vue')['reactive'] - const readonly: typeof import('vue')['readonly'] - const ref: typeof import('vue')['ref'] - const resolveComponent: typeof import('vue')['resolveComponent'] - const shallowReactive: typeof import('vue')['shallowReactive'] - const shallowReadonly: typeof import('vue')['shallowReadonly'] - const shallowRef: typeof import('vue')['shallowRef'] - const toRaw: typeof import('vue')['toRaw'] - const toRef: typeof import('vue')['toRef'] - const toRefs: typeof import('vue')['toRefs'] - const toValue: typeof import('vue')['toValue'] - const triggerRef: typeof import('vue')['triggerRef'] - const unref: typeof import('vue')['unref'] - const useAttrs: typeof import('vue')['useAttrs'] - const useCssModule: typeof import('vue')['useCssModule'] - const useCssVars: typeof import('vue')['useCssVars'] - const useId: typeof import('vue')['useId'] - const useModel: typeof import('vue')['useModel'] - const useSlots: typeof import('vue')['useSlots'] - const useTemplateRef: typeof import('vue')['useTemplateRef'] - const watch: typeof import('vue')['watch'] - const watchEffect: typeof import('vue')['watchEffect'] - const watchPostEffect: typeof import('vue')['watchPostEffect'] - const watchSyncEffect: typeof import('vue')['watchSyncEffect'] -} -// for type re-export -declare global { - // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' - import('vue') -} -// for vue template auto import -import { UnwrapRef } from 'vue' -declare module 'vue' { - interface GlobalComponents {} - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef - readonly computed: UnwrapRef - readonly createApp: UnwrapRef - readonly customRef: UnwrapRef - readonly defineAsyncComponent: UnwrapRef - readonly defineComponent: UnwrapRef - readonly effectScope: UnwrapRef - readonly getCurrentInstance: UnwrapRef - readonly getCurrentScope: UnwrapRef - readonly h: UnwrapRef - readonly inject: UnwrapRef - readonly isProxy: UnwrapRef - readonly isReactive: UnwrapRef - readonly isReadonly: UnwrapRef - readonly isRef: UnwrapRef - readonly markRaw: UnwrapRef - readonly nextTick: UnwrapRef - readonly onActivated: UnwrapRef - readonly onBeforeMount: UnwrapRef - readonly onBeforeUnmount: UnwrapRef - readonly onBeforeUpdate: UnwrapRef - readonly onDeactivated: UnwrapRef - readonly onErrorCaptured: UnwrapRef - readonly onMounted: UnwrapRef - readonly onRenderTracked: UnwrapRef - readonly onRenderTriggered: UnwrapRef - readonly onScopeDispose: UnwrapRef - readonly onServerPrefetch: UnwrapRef - readonly onUnmounted: UnwrapRef - readonly onUpdated: UnwrapRef - readonly onWatcherCleanup: UnwrapRef - readonly provide: UnwrapRef - readonly reactive: UnwrapRef - readonly readonly: UnwrapRef - readonly ref: UnwrapRef - readonly resolveComponent: UnwrapRef - readonly shallowReactive: UnwrapRef - readonly shallowReadonly: UnwrapRef - readonly shallowRef: UnwrapRef - readonly toRaw: UnwrapRef - readonly toRef: UnwrapRef - readonly toRefs: UnwrapRef - readonly toValue: UnwrapRef - readonly triggerRef: UnwrapRef - readonly unref: UnwrapRef - readonly useAttrs: UnwrapRef - readonly useCssModule: UnwrapRef - readonly useCssVars: UnwrapRef - readonly useId: UnwrapRef - readonly useModel: UnwrapRef - readonly useSlots: UnwrapRef - readonly useTemplateRef: UnwrapRef - readonly watch: UnwrapRef - readonly watchEffect: UnwrapRef - readonly watchPostEffect: UnwrapRef - readonly watchSyncEffect: UnwrapRef - } -} diff --git a/apps/web-office/index.html b/apps/web-office/index.html deleted file mode 100644 index 0aa687e0..00000000 --- a/apps/web-office/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - <%= VITE_APP_TITLE %> - - - - -
- - - - diff --git a/apps/web-office/package.json b/apps/web-office/package.json deleted file mode 100644 index 832d2420..00000000 --- a/apps/web-office/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "web-office", - "version": "1.0.0", - "type": "module", - "scripts": { - "build": "pnpm vite build --mode production", - "build:dev": "pnpm vite build --mode development", - "build:analyze": "pnpm vite build --mode analyze", - "dev": "pnpm vite --mode development", - "dev:prod": "pnpm vite --mode production", - "preview": "vite preview --port 4173", - "typecheck": "vue-tsc --noEmit --skipLibCheck" - }, - "imports": { - "#/*": "./src/*" - }, - "dependencies": { - "common-utils": "workspace:*", - "@fast-crud/fast-crud": "^1.21.2", - "@fast-crud/fast-extends": "^1.21.2", - "@fast-crud/ui-antdv4": "^1.21.2", - "@fast-crud/ui-interface": "^1.21.2", - "@vben-core/shadcn-ui": "workspace:*", - "@vben/access": "workspace:*", - "@vben/common-ui": "workspace:*", - "@vben/constants": "workspace:*", - "@vben/hooks": "workspace:*", - "@vben/icons": "workspace:*", - "@vben/layouts": "workspace:*", - "@vben/locales": "workspace:*", - "@vben/plugins": "workspace:*", - "@vben/preferences": "workspace:*", - "@vben/request": "workspace:*", - "@vben/stores": "workspace:*", - "@vben/styles": "workspace:*", - "@vben/types": "workspace:*", - "@vben/utils": "workspace:*", - "@vueuse/core": "^11.0.3", - "alova": "^3.0.14", - "ant-design-vue": "^4.2.3", - "big.js": "^6.2.1", - "dayjs": "^1.11.13", - "exceljs": "^4.4.0", - "lodash-es": "^4.17.21", - "pinia": "2.2.2", - "pinia-plugin-persistedstate": "^3.2.1", - "sortablejs": "^1.15.2", - "tyme4ts": "^1.1.2", - "vue": "^3.4.38", - "vue-router": "^4.4.3", - "vxe-pc-ui": "^4.1.12", - "vxe-table": "^4.7.74", - "vxe-table-plugin-antd": "^4.0.8", - "vxe-table-plugin-export-xlsx": "^4.0.2", - "xe-utils": "^3.5.30" - }, - "devDependencies": { - "@types/big.js": "^6.2.2", - "@types/lodash-es": "^4.17.12", - "sass": "^1.77.8", - "typescript": "^5.5.4", - "unplugin-auto-import": "^0.18.2", - "unplugin-vue-components": "^0.27.4", - "vite-plugin-lazy-import": "^1.0.7" - } -} diff --git a/apps/web-office/postcss.config.mjs b/apps/web-office/postcss.config.mjs deleted file mode 100644 index 3d807045..00000000 --- a/apps/web-office/postcss.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config/postcss'; diff --git a/apps/web-office/public/favicon.ico b/apps/web-office/public/favicon.ico deleted file mode 100644 index bce5299c7c127268d844c7163ebc7721ccb0ded5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/apps/web-office/readme.md b/apps/web-office/readme.md deleted file mode 100644 index 2d70e919..00000000 --- a/apps/web-office/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -pnpm i @fast-crud/fast-crud -pnpm i @fast-crud/fast-extends -pnpm i @fast-crud/ui-interface diff --git a/apps/web-office/src/api/global.d.ts b/apps/web-office/src/api/global.d.ts deleted file mode 100644 index efaaa939..00000000 --- a/apps/web-office/src/api/global.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface QueryOptions { - params?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface BodyOptions { - params?: AnyObject; - data?: AnyObject; - pathParams?: AnyObject; - config?: AnyObject; -} - -export interface RequestOptions { - url: string; - data?: QueryOptions; -} - -export interface MutationOptions { - url: string; - data?: BodyOptions; -} diff --git a/apps/web-office/src/api/index.ts b/apps/web-office/src/api/index.ts deleted file mode 100644 index 696164fc..00000000 --- a/apps/web-office/src/api/index.ts +++ /dev/null @@ -1,825 +0,0 @@ -import type { BodyOptions, QueryOptions } from './global.d'; - -import { http } from './request/index'; - -export default { - meeting: { - /** 协同办公/会议管理 分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/meeting/page', data), - /** 协同办公/会议管理 删除会议 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/meeting/deletes', data), - /** 协同办公/会议管理 会议保存 */ - post_save: (data?: BodyOptions) => http.post('/app/meeting/save', data), - /** 协同办公/会议管理 查看会议台账 */ - get_list: (data?: QueryOptions) => http.get('/app/meeting/list', data), - list: { - /** 协同办公/会议管理 会议台账导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/meeting/list/export', data), - }, - /** 协同办公/会议管理 门户获取会议数据 */ - get_getFundingSource: (data?: QueryOptions) => - http.get('/app/meeting/getFundingSource', data), - }, - tysq: { - zzjg: { - yhjbda: { - YhjbdaController: { - /** 统一授权 未命名接口 */ - get_yhjbdaGrid: (data?: QueryOptions) => - http.get('/app/tysq/zzjg/yhjbda/YhjbdaController/yhjbdaGrid', data), - }, - }, - }, - }, - dictType: { - /** 协同办公/字典表 字典类型查询 */ - get_list: (data?: QueryOptions) => http.get('/app/dictType/list', data), - /** 协同办公/字典表 字典类型保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dictType/save', data), - /** 协同办公/字典表 字典类型删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dictType/deletes', data), - }, - uaa: { - /** 用户中心 用户登陆 */ - post_validateAccount: (data?: BodyOptions) => - http.post('/uc/uaa/validateAccount', data), - }, - api: { - core: { - orgemplbc: { - employee: { - /** 用户中心 获取用户信息(分页) */ - post_paging: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/employee/paging', data), - }, - organization: { - RL: { - /** 用户中心 根据组织机构id获取员工信息 */ - get_employee: (data?: QueryOptions) => - http.get('/uc/api/core/orgemplbc/organization/RL/employee', data), - }, - /** 用户中心 获取组织结构信息 */ - post_paging: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/organization/paging', data), - }, - /** 用户中心 根据组织机构id和用户信息查询 */ - post_employee: (data?: BodyOptions) => - http.post('/uc/api/core/orgemplbc/employee', data), - }, - }, - }, - sys: { - user: { - /** 用户中心 根据token获取用户信息 */ - post_checkToken: (data?: BodyOptions) => - http.post('/uc/sys/user/checkToken', data), - functiontree: { - /** 用户中心 获取菜单接口 */ - get_XTBGXT: (data?: QueryOptions) => - http.get('/uc/sys/user/functiontree/XTBGXT', data), - /** 统一授权 未命名接口 */ - get_PLRL: (data?: QueryOptions) => - http.get('/uc/sys/user/functiontree/PLRL', data), - }, - }, - }, - zbgl: { - /** 协同办公/值班管理 值班查询 */ - get_queryZbInfo: (data?: QueryOptions) => - http.get('/app/zbgl/queryZbInfo', data), - /** 协同办公/值班管理 保存值班信息 */ - post_save: (data?: BodyOptions) => http.post('/app/zbgl/save', data), - /** 协同办公/值班管理 删除值班信息 */ - get_deletes: (data?: QueryOptions) => http.get('/app/zbgl/deletes', data), - /** 协同办公/值班管理 导入值班人员信息 */ - post_importZbry: (data?: BodyOptions) => - http.post('/app/zbgl/importZbry', data), - /** 协同办公/值班管理 门户值班信息查询 */ - get_getDutyInfo: (data?: QueryOptions) => - http.get('/app/zbgl/getDutyInfo', data), - /** 协同办公/值班管理 导出 */ - post_export: (data?: BodyOptions) => http.post('/app/zbgl/export', data), - }, - dictData: { - /** 协同办公/字典表 字典数据保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dictData/save', data), - /** 合同系统/项目管理 保存 */ - get_save: (data?: QueryOptions) => http.get('/app/dictData/save', data), - /** 合同系统/项目名称管理 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dictData/page', data), - /** 协同办公/字典表 字典数据删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dictData/deletes', data), - /** 合同系统/项目管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/dictData/deletes', data), - }, - user: { - /** 统一授权 获取用户列表 */ - get_page: (data?: QueryOptions) => http.get('/app/user/page', data), - }, - dish: { - /** 协同办公/订餐管理/菜谱管理 菜谱查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dish/page', data), - /** 协同办公/订餐管理/菜谱管理 菜谱保存 */ - post_save: (data?: BodyOptions) => http.post('/app/dish/save', data), - /** 协同办公/订餐管理/食谱管理 菜谱删除 */ - post_deletes: (data?: BodyOptions) => http.post('/app/dish/deletes', data), - }, - recipe: { - /** 协同办公/订餐管理/食谱管理 食谱查询 */ - get_page: (data?: QueryOptions) => http.get('/app/recipe/page', data), - /** 协同办公/订餐管理/食谱管理 食谱保存 */ - post_save: (data?: BodyOptions) => http.post('/app/recipe/save', data), - /** 协同办公/订餐管理/食谱管理 食谱导出 */ - get_export: (data?: QueryOptions) => http.get('/app/recipe/export', data), - /** 协同办公/订餐管理/食谱管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/recipe/saveBatch', data), - /** 协同办公/订餐管理/食谱管理 食谱编辑 */ - post_edit: (data?: BodyOptions) => http.post('/app/recipe/edit', data), - }, - ccsq: { - /** 协同办公/出差申请 出差申请查询 */ - get_page: (data?: QueryOptions) => http.get('/app/ccsq/page', data), - /** 协同办公/出差申请 申请单保存 */ - post_save: (data?: BodyOptions) => http.post('/app/ccsq/save', data), - /** 协同办公/出差申请 申请单删除 */ - post_deletes: (data?: BodyOptions) => http.post('/app/ccsq/deletes', data), - /** 协同办公/出差申请 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/ccsq/rollback', data), - /** 协同办公/出差申请 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/ccsq/startWorkFlow', data), - /** 协同办公/出差申请 审核 */ - post_submit: (data?: BodyOptions) => http.post('/app/ccsq/submit', data), - /** 协同办公/出差申请 待办 */ - get_toDoPage: (data?: QueryOptions) => http.get('/app/ccsq/toDoPage', data), - /** 协同办公/出差申请 已办 */ - get_donePage: (data?: QueryOptions) => http.get('/app/ccsq/donePage', data), - /** 协同办公/出差申请 获取可退回节点信息 */ - get_getBackNode: (data?: QueryOptions) => - http.get('/app/ccsq/getBackNode', data), - /** 协同办公/出差申请 查询流程节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/ccsq/getFlowNodeUserConfig', data), - /** 协同办公/出差申请 下一审核节点 */ - post_getNextNodeUserConfig: (data?: BodyOptions) => - http.post('/app/ccsq/getNextNodeUserConfig', data), - }, - orderfood: { - /** 协同办公/订餐管理/订餐 订餐加载接口 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/orderfood/getOne', data), - /** 协同办公/订餐管理/订餐 订餐保存 */ - post_save: (data?: BodyOptions) => http.post('/app/orderfood/save', data), - /** 协同办公/订餐管理/订餐 取消订餐 */ - post_cancel: (data?: BodyOptions) => - http.post('/app/orderfood/cancel', data), - /** 协同办公/订餐管理/订餐 协助取消他人订餐 */ - post_assistCancel: (data?: BodyOptions) => - http.post('/app/orderfood/assistCancel', data), - }, - orderfoods: { - /** 协同办公/订餐管理/汇总 单位订餐汇总 */ - get_departmentSummary: (data?: QueryOptions) => - http.get('/app/orderfoods/departmentSummary', data), - /** 协同办公/订餐管理/汇总 订餐汇总 */ - get_infoList: (data?: QueryOptions) => - http.get('/app/orderfoods/infoList', data), - /** 协同办公/订餐管理/汇总 个人结算汇总 */ - get_personalSummary: (data?: QueryOptions) => - http.get('/app/orderfoods/personalSummary', data), - infoList: { - /** 协同办公/订餐管理/汇总 订餐汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/infoList/export', data), - }, - personalSummary: { - /** 协同办公/订餐管理/汇总 个人结算汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/personalSummary/export', data), - }, - departmentSummary: { - /** 协同办公/订餐管理/汇总 单位订餐汇总导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/departmentSummary/export', data), - }, - /** 协同办公/订餐管理/汇总 结算单 */ - get_finalStatement: (data?: QueryOptions) => - http.get('/app/orderfoods/finalStatement', data), - finalStatement: { - /** 协同办公/订餐管理/汇总 结算表导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/orderfoods/finalStatement/export', data), - }, - /** 协同办公/订餐管理/汇总 结算操作 */ - post_balance: (data?: BodyOptions) => - http.post('/app/orderfoods/balance', data), - }, - officeSuppliesApply: { - /** 协同办公/办公用品/办公用品申请 申请页面查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/officeSuppliesApply/page', data), - /** 协同办公/办公用品/办公用品申请 申请保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/save', data), - /** 协同办公/办公用品/办公用品申请 批量审核 */ - post_audit: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/audit', data), - /** 协同办公/办公用品/办公用品申请 批量申请 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/saveBatch', data), - /** 协同办公/办公用品/办公用品申请 撤销申请 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/officeSuppliesApply/deletes', data), - }, - warehousing: { - /** 协同办公/办公用品/入库/出库 入库查询 */ - get_page: (data?: QueryOptions) => http.get('/app/warehousing/page', data), - }, - inOrOut: { - /** 协同办公/办公用品/入库/出库 入库/保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/inOrOut/saveBatch', data), - }, - supervise: { - /** 协同办公/督查督办/立项发起 立项分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/supervise/page', data), - /** 协同办公/督查督办/立项发起 立项保存 */ - post_save: (data?: BodyOptions) => http.post('/app/supervise/save', data), - /** 协同办公/督查督办/立项发起 立项删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/supervise/deletes', data), - /** 协同办公/督查督办/立项发起 立项提交 */ - post_audit: (data?: BodyOptions) => http.post('/app/supervise/audit', data), - /** 协同办公/督查督办/执行反馈 执行反馈提交 */ - post_auditFankui: (data?: BodyOptions) => - http.post('/app/supervise/auditFankui', data), - /** 协同办公/督查督办/报表汇总 统计 */ - get_huizong: (data?: QueryOptions) => - http.get('/app/supervise/huizong', data), - /** 协同办公/督查督办/立项发起 更新状态 */ - post_updateStatus: (data?: BodyOptions) => - http.post('/app/supervise/updateStatus', data), - }, - feedback: { - /** 协同办公/督查督办/执行反馈 执行反馈待办查询 */ - get_page: (data?: QueryOptions) => http.get('/app/feedback/page', data), - /** 协同办公/督查督办/执行反馈 执行反馈保存,实际修改操作,保存反馈时间,反馈内容,进度 */ - post_saveUpdate: (data?: BodyOptions) => - http.post('/app/feedback/saveUpdate', data), - /** 协同办公/督查督办/执行反馈 查询负责部门列表,返回所有的反馈信息 */ - get_getDepartment: (data?: QueryOptions) => - http.get('/app/feedback/getDepartment', data), - /** 协同办公/督查督办/执行反馈 分发立项任务 */ - post_save: (data?: BodyOptions) => http.post('/app/feedback/save', data), - /** 协同办公/督查督办/执行反馈 执行反馈已办查询 */ - get_pageDone: (data?: QueryOptions) => - http.get('/app/feedback/pageDone', data), - /** 协同办公/督查督办/立项发起 立项删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/feedback/deletes', data), - }, - file: { - /** 协同办公/文件上传/下载 多文件上传 */ - post_uploads: (data?: BodyOptions) => http.post('/app/file/uploads', data), - }, - addressor: { - /** 协同办公/会议管理/发言人 发言人查询 */ - get_list: (data?: QueryOptions) => http.get('/app/addressor/list', data), - /** 协同办公/会议管理/发言人 发言人批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/addressor/saveBatch', data), - /** 协同办公/会议管理/发言人 发言人保存 */ - post_save: (data?: BodyOptions) => http.post('/app/addressor/save', data), - /** 协同办公/会议管理/发言人 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/addressor/deletes', data), - }, - officeSuppliesList: { - /** 协同办公/办公用品/办公用品清单 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/officeSuppliesList/page', data), - /** 协同办公/办公用品/办公用品清单 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/officeSuppliesList/saveBatch', data), - /** 协同办公/办公用品/办公用品清单 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/officeSuppliesList/deletes', data), - }, - officeSuppliesApplySum: { - /** 协同办公/办公用品 采购汇总 */ - get_list: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/list', data), - /** 协同办公/办公用品 结算清单 */ - get_finalStatement: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/finalStatement', data), - /** 协同办公/办公用品 单位结算清单 */ - get_unitFinalStatement: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/unitFinalStatement', data), - finalStatement: { - /** 协同办公/办公用品 结算清单导出 */ - get_export: (data?: QueryOptions) => - http.get('/app/officeSuppliesApplySum/finalStatement/export', data), - }, - /** 协同办公/办公用品 结算清单结算操作 */ - post_balance: (data?: BodyOptions) => - http.post('/app/officeSuppliesApplySum/balance', data), - }, - autoOrderfoodPeoples: { - /** 协同办公/订餐管理/自动订餐人员管理 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/autoOrderfoodPeoples/page', data), - /** 协同办公/订餐管理/自动订餐人员管理 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/autoOrderfoodPeoples/saveBatch', data), - /** 协同办公/订餐管理/自动订餐人员管理 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/autoOrderfoodPeoples/deletes', data), - }, - usercenter: { - /** 协同办公 获取菜单 */ - get_menus: (data?: QueryOptions) => http.get('/app/usercenter/menus', data), - }, - workflow: { - /** 协同办公/工作流 待办 */ - post_queryMyTodoTask: (data?: BodyOptions) => - http.post('/app/workflow/queryMyTodoTask', data), - /** 协同办公/工作流 已办 */ - post_getHistoricTaskByUserID: (data?: BodyOptions) => - http.post('/app/workflow/getHistoricTaskByUserID', data), - }, - personTask: { - /** 合同系统/签订 待办查询 */ - get_page: (data?: QueryOptions) => http.get('/app/personTask/page', data), - /** 合同系统/签订 已办查询 */ - get_pagePersonTaskOver: (data?: QueryOptions) => - http.get('/app/personTask/pagePersonTaskOver', data), - /** 合同系统/履行/履行查询 分页合同履行审批查询 */ - get_pagePerformanceAudit: (data?: QueryOptions) => - http.get('/app/personTask/pagePerformanceAudit', data), - /** 合同系统/履行/履行提示/申请归档 归档保存 */ - post_applicationFiling: (data?: BodyOptions) => - http.post('/app/personTask/applicationFiling', data), - }, - sbCtrBasePt: { - /** 合同系统/申报 合同申报数据查询 */ - get_QuerySbCtrBase: (data?: QueryOptions) => - http.get('/app/sbCtrBasePt/QuerySbCtrBase', data), - /** 合同系统/申报 合同申报基本信息加载 */ - post_page: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/page', data), - /** 合同系统/申报 合同申报基本信息保存 */ - post_save: (data?: BodyOptions) => http.post('/app/sbCtrBasePt/save', data), - /** 合同系统/申报 合同申报基本信息删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/deletes', data), - /** 合同系统/申报 获取资金渠道 */ - get_getFundingSource: (data?: QueryOptions) => - http.get('/app/sbCtrBasePt/getFundingSource', data), - /** 合同系统/申报 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/submit', data), - /** 合同系统/申报 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/rollback', data), - /** 合同系统/申报 发起废除 */ - post_repeal: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/repeal', data), - /** 合同系统/申报 发起流程 */ - post_start: (data?: BodyOptions) => - http.post('/app/sbCtrBasePt/start', data), - }, - contractBaseInfo: { - /** 合同系统/立项 合同立项保存 */ - post_apply: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/apply', data), - /** 合同系统/立项 合同立项查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/contractBaseInfo/page', data), - /** 合同系统/立项 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/deletes', data), - /** 合同系统/立项 单条查询 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/contractBaseInfo/getOne', data), - /** 合同系统/立项 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/submit', data), - /** 合同系统/立项废除 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/rollback', data), - /** 合同系统/立项废除 合同立项废除 */ - post_abolish: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/abolish', data), - /** 合同系统/立项废除 提交 */ - post_abolishSubmit: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/abolishSubmit', data), - /** 合同系统/立项 流程启动(非待办提交) */ - post_applyFlowStart: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/applyFlowStart', data), - /** 合同系统/立项废除 流程启动(非待办提交) */ - post_abolishFlowStart: (data?: BodyOptions) => - http.post('/app/contractBaseInfo/abolishFlowStart', data), - }, - proProviderInfo: { - /** 合同系统/相对人管理 合同相对人查询 */ - get_Query: (data?: QueryOptions) => - http.get('/app/proProviderInfo/Query', data), - /** 合同系统/相对人管理 获取币种 */ - get_getBz: (data?: QueryOptions) => - http.get('/app/proProviderInfo/getBz', data), - /** 合同系统/相对人管理 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/proProviderInfo/save', data), - /** 合同系统/相对人管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/proProviderInfo/deletes', data), - /** 合同系统/相对人管理 加载 */ - post_page: (data?: BodyOptions) => - http.post('/app/proProviderInfo/page', data), - }, - contractModelInfo: { - /** 合同系统/模板管理 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractModelInfo/save', data), - /** 合同系统/模板管理 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/contractModelInfo/deletes', data), - /** 合同系统/模板管理 加载 */ - post_page: (data?: BodyOptions) => - http.post('/app/contractModelInfo/page', data), - }, - contractReferType: { - /** 合同系统/合同类型参照 查询 */ - get_list: (data?: QueryOptions) => - http.get('/app/contractReferType/list', data), - /** 合同系统/合同类型参照 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractReferType/save', data), - /** 合同系统/合同类型参照 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/contractReferType/deletes', data), - }, - attachment: { - /** 文件上传/下载(新) 附件加载 */ - get_list: (data?: QueryOptions) => http.get('/app/attachment/list', data), - /** 文件上传/下载(新) 文件下载 */ - get_download: (data?: QueryOptions) => - http.get('/app/attachment/download/{fileUuid}', data), - /** 文件上传/下载(新) 多文件上传 */ - post_uploads: (data?: BodyOptions) => - http.post('/app/attachment/uploads', data), - }, - contractPayment: { - /** 合同系统/履行/履行提示/合同付款 获取合同付款信息 */ - get_queryPaymentInfo: (data?: QueryOptions) => - http.get('/app/contractPayment/queryPaymentInfo', data), - /** 合同系统/归档/合同归档 历史记录 */ - get_historyPaymentInfo: (data?: QueryOptions) => - http.get('/app/contractPayment/historyPaymentInfo', data), - /** 合同系统/履行/履行提示/合同付款 保存付款申请 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractPayment/save', data), - /** 合同系统/履行/履行提示/合同付款 查询流程未配置人员节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/contractPayment/getFlowNodeUserConfig', data), - /** 合同系统/履行/履行提示/合同付款 送审 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/contractPayment/startWorkFlow', data), - /** 合同系统/履行/履行提示/合同付款 审核通过 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractPayment/submit', data), - /** 合同系统/履行/履行提示/合同付款 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractPayment/rollback', data), - /** 合同系统/履行/履行提示/合同付款 待审核 */ - get_toDoPage: (data?: QueryOptions) => - http.get('/app/contractPayment/toDoPage', data), - /** 合同系统/履行/履行提示/合同付款 已审核 */ - get_donePage: (data?: QueryOptions) => - http.get('/app/contractPayment/donePage', data), - }, - selectMerchantsBasicInfo: { - /** 合同系统/选商 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/selectMerchantsBasicInfo/page', data), - /** 合同系统/选商 选商信息查询(单条) */ - get_getOne: (data?: QueryOptions) => - http.get('/app/selectMerchantsBasicInfo/getOne', data), - /** 合同系统/选商 选商信息保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/save', data), - /** 合同系统/选商 合同选商保存操作(多个对象) */ - post_saveMultiEntity: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/saveMultiEntity', data), - /** 合同系统/选商 提交 */ - post_submit: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/submit', data), - /** 合同系统/选商 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/rollback', data), - /** 合同系统/选商废除 选商废除(弃用) */ - post_abolish: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolish', data), - /** 合同系统/选商废除 选商废除(开始节点提交,非待办提交) */ - post_abolishFlowStart: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishFlowStart', data), - /** 合同系统/选商废除 提交 */ - post_abolishSubmit: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishSubmit', data), - /** 合同系统/选商废除 退回 */ - post_abolishRollback: (data?: BodyOptions) => - http.post('/app/selectMerchantsBasicInfo/abolishRollback', data), - }, - lvxChange: { - /** 合同系统/履行/履行提示/合同变更 保存合同变更申请 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxChange/save', data), - /** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */ - get_getContractChangeInfo: (data?: QueryOptions) => - http.get('/app/lvxChange/getContractChangeInfo', data), - }, - contractRelieve: { - /** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */ - get_getContractRelieveInfo: (data?: QueryOptions) => - http.get('/app/contractRelieve/getContractRelieveInfo', data), - /** 合同系统/履行/履行提示/合同解除 保存合同解除信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractRelieve/save', data), - }, - contractBreach: { - /** 合同系统/履行/履行提示/合同违约情况 保存合同违约信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractBreach/save', data), - /** 合同系统/履行/履行提示/合同违约情况 获取合同违约信息 */ - get_getContractBreachInfo: (data?: QueryOptions) => - http.get('/app/contractBreach/getContractBreachInfo', data), - /** 合同系统/履行/履行提示/合同违约情况 查询流程未配置人员节点 */ - get_getFlowNodeUserConfig: (data?: QueryOptions) => - http.get('/app/contractBreach/getFlowNodeUserConfig', data), - /** 合同系统/履行/履行提示/合同违约情况 启动流程 */ - post_startWorkFlow: (data?: BodyOptions) => - http.post('/app/contractBreach/startWorkFlow', data), - /** 合同系统/履行/履行提示/合同违约情况 审核 */ - post_submit: (data?: BodyOptions) => - http.post('/app/contractBreach/submit', data), - /** 合同系统/履行/履行提示/合同违约情况 退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/contractBreach/rollback', data), - }, - lvxResult: { - /** 合同系统/履行/履行结果 履行结果保存 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data), - }, - contractFiling: { - /** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractFiling/save', data), - /** 合同系统/履行/履行提示/临时归档 分页查询 */ - get_pageFillingList: (data?: QueryOptions) => - http.get('/app/contractFiling/pageFillingList', data), - /** 合同系统/履行/履行提示/临时归档 回档 */ - post_update: (data?: BodyOptions) => - http.post('/app/contractFiling/update', data), - /** 合同系统/履行/履行提示/临时归档 获取临时归档信息 */ - get_getLsgd: (data?: QueryOptions) => - http.get('/app/contractFiling/getLsgd', data), - }, - biddingExpert: { - /** 合同系统/选商/选商招标专家 招标专家查询 */ - get_list: (data?: QueryOptions) => - http.get('/app/biddingExpert/list', data), - /** 合同系统/选商/选商招标专家 选商招标专家保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/biddingExpert/saveBatch', data), - /** 合同系统/选商/选商招标专家 选商招标专家删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/biddingExpert/deletes', data), - }, - contractFilingFormal: { - /** 合同系统/归档/合同归档 分页查询归档信息 */ - get_queryContractFiling: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/queryContractFiling', data), - /** 合同系统/归档/合同归档 获取合同招标选商申请信息 */ - get_getContractSupplier: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/getContractSupplier', data), - /** 合同系统/归档/合同归档 保存合同归档 */ - post_save: (data?: BodyOptions) => - http.post('/app/contractFilingFormal/save', data), - /** 合同系统/归档/合同回档 分页查询 */ - get_pageArchivedContract: (data?: QueryOptions) => - http.get('/app/contractFilingFormal/pageArchivedContract', data), - /** 合同系统/归档/合同回档 回档 */ - post_saveFilingBack: (data?: BodyOptions) => - http.post('/app/contractFilingFormal/saveFilingBack', data), - }, - lvxProduct: { - /** 合同系统/履行/履行提示/产品或服务 获取合同产品信息 */ - get_getContractProductInfo: (data?: QueryOptions) => - http.get('/app/lvxProduct/getContractProductInfo', data), - /** 合同系统/履行/履行提示/产品或服务 累计收款金额 */ - get_getSumFromProduct: (data?: QueryOptions) => - http.get('/app/lvxProduct/getSumFromProduct', data), - /** 合同系统/履行/履行提示/产品或服务 历史记录 */ - get_getListFromHistoryRecord: (data?: QueryOptions) => - http.get('/app/lvxProduct/getListFromHistoryRecord', data), - /** 合同系统/履行/履行提示/产品或服务 保存合同产品服务 */ - post_save: (data?: BodyOptions) => http.post('/app/lvxProduct/save', data), - }, - qdSign: { - /** 合同系统/签订 签订查询 */ - get_page: (data?: QueryOptions) => http.get('/app/qdSign/page', data), - /** 合同系统/签订 获取合同签订信息 */ - get_getContractSignInfo: (data?: QueryOptions) => - http.get('/app/qdSign/getContractSignInfo', data), - /** 合同系统/签订 打印签订审批表 */ - get_createUserListWord: (data?: QueryOptions) => - http.get('/app/qdSign/createUserListWord', data), - /** 合同系统/签订 打印文本 */ - get_textPrint: (data?: QueryOptions) => - http.get('/app/qdSign/textPrint', data), - /** 合同系统/签订 保存送审 */ - post_save: (data?: BodyOptions) => http.post('/app/qdSign/save', data), - /** 合同系统/签订 废除 */ - post_abolish: (data?: BodyOptions) => - http.post('/app/qdSign/abolish', data), - }, - flowCenter: { - /** 流程中心 启动流程 */ - post_start: (data?: BodyOptions) => - http.post('/app/flowCenter/start', data), - /** 流程中心 审核通过 */ - post_agree: (data?: BodyOptions) => - http.post('/app/flowCenter/agree', data), - /** 流程中心 审核退回 */ - post_rollback: (data?: BodyOptions) => - http.post('/app/flowCenter/rollback', data), - /** 流程中心 获取待办 */ - post_getTodoList: (data?: BodyOptions) => - http.post('/app/flowCenter/getTodoList', data), - /** 流程中心 获取已办 */ - post_doneList: (data?: BodyOptions) => - http.post('/app/flowCenter/doneList', data), - /** 流程中心 审核撤回 */ - get_revoke: (data?: QueryOptions) => - http.get('/app/flowCenter/revoke', data), - /** 流程中心 审核记录 */ - get_history: (data?: QueryOptions) => - http.get('/app/flowCenter/history', data), - /** 流程中心 查看流程图 */ - get_getFlowImg: (data?: QueryOptions) => - http.get('/app/flowCenter/getFlowImg', data), - /** 流程中心 获取可退回节点 */ - get_getReturnNode: (data?: QueryOptions) => - http.get('/app/flowCenter/getReturnNode', data), - /** 流程中心 获取流程节点人员配置信息 */ - get_getNextNodeUserConfig: (data?: QueryOptions) => - http.get('/app/flowCenter/getNextNodeUserConfig', data), - /** 流程中心 获取待办数量 */ - get_getTodoListSize: (data?: QueryOptions) => - http.get('/app/flowCenter/getTodoListSize', data), - /** 流程中心 获取当前审核节点配置信息 */ - get_getNodeConfigInfo: (data?: QueryOptions) => - http.get('/app/flowCenter/getNodeConfigInfo', data), - /** 流程中心 获取下一节点配置信息 */ - get_getNextNodeConfig: (data?: QueryOptions) => - http.get('/app/flowCenter/getNextNodeConfig', data), - /** 流程中心 获取流程节点人员配置信息 */ - post_getFlowNodeUserConfig: (data?: BodyOptions) => - http.post('/app/flowCenter/getFlowNodeUserConfig', data), - /** 流程中心 获取流程变量配置 */ - get_getFlowVariablesConfig: (data?: QueryOptions) => - http.get('/app/flowCenter/getFlowVariablesConfig', data), - /** 流程中心 获取流程所有人员配置信息 */ - get_getFlowUserConfig: (data?: QueryOptions) => - http.get('/app/flowCenter/getFlowUserConfig', data), - }, - rl: { - moduleParameter: { - /** 流程中心/流程规划 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/rl/moduleParameter/save', data), - /** 流程中心/流程规划 查询 */ - post_page: (data?: BodyOptions) => - http.post('/app/rl/moduleParameter/page', data), - /** 流程中心/流程规划 删除 */ - get_deletes: (data?: QueryOptions) => - http.get('/app/rl/moduleParameter/deletes', data), - /** 流程中心/流程规划 获取节点审核人 */ - get_getNextNodeUser: (data?: QueryOptions) => - http.get('/app/rl/moduleParameter/getNextNodeUser', data), - }, - workFlow: { - /** 合同系统 流程待办 */ - get_queryMyTodoTask: (data?: QueryOptions) => - http.get('/app/rl/workFlow/queryMyTodoTask', data), - }, - }, - dutyCount: { - /** 协同办公/订餐管理/值班天数 分页查询 */ - get_page: (data?: QueryOptions) => http.get('/app/dutyCount/page', data), - /** 协同办公/订餐管理/值班天数 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/dutyCount/saveBatch', data), - /** 协同办公/订餐管理/值班天数 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/dutyCount/deletes', data), - }, - common: { - /** 公共 获取请求ip */ - get_getClientIp: (data?: QueryOptions) => - http.get('/app/common/getClientIp', data), - }, - address: { - /** 协同办公/订餐管理/订餐地址 查询(分页) */ - get_page: (data?: QueryOptions) => http.get('/app/address/page', data), - /** 协同办公/订餐管理/订餐地址 保存 */ - post_save: (data?: BodyOptions) => http.post('/app/address/save', data), - /** 协同办公/订餐管理/订餐地址 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/address/deletes', data), - }, - superviseFeedbackRecord: { - /** 协同办公/督查督办/反馈记录 保存反馈记录 */ - post_save: (data?: BodyOptions) => - http.post('/app/superviseFeedbackRecord/save', data), - /** 协同办公/督查督办/反馈记录 查询反馈记录 */ - get_page: (data?: QueryOptions) => - http.get('/app/superviseFeedbackRecord/page', data), - /** 协同办公/督查督办/反馈记录 删除反馈记录 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/superviseFeedbackRecord/deletes', data), - }, - lxBasisSale: { - /** 合同系统/签约依据 分页保存/修改 */ - post_save: (data?: BodyOptions) => http.post('/app/lxBasisSale/save', data), - /** 合同系统/签约依据 查询 */ - get_page: (data?: QueryOptions) => http.get('/app/lxBasisSale/page', data), - /** 合同系统/签约依据 删除测试 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/lxBasisSale/deletes', data), - }, - workFlow: { - /** 合同系统 查询下一节点id */ - get_getNextNodeUserConfig: (data?: QueryOptions) => - http.get('/app/workFlow/getNextNodeUserConfig', data), - /** 合同系统 获取可退回节点 */ - get_getBackNode: (data?: QueryOptions) => - http.get('/app/workFlow/getBackNode', data), - /** 合同系统 审核记录 */ - get_history: (data?: QueryOptions) => - http.get('/app/workFlow/history', data), - /** 合同系统 流程已办 */ - get_getDoneTaskByUserID: (data?: QueryOptions) => - http.get('/app/workFlow/getDoneTaskByUserID', data), - }, - biddingResult: { - /** 合同系统/选商/选商结果 分页查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/biddingResult/page', data), - /** 合同系统/选商/选商结果 保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/biddingResult/save', data), - }, - home: { - /** 合同系统/首页待办/已办 首页待办 */ - get_todo: (data?: QueryOptions) => http.get('/app/home/todo', data), - /** 合同系统/首页待办/已办 首页已办 */ - get_done: (data?: QueryOptions) => http.get('/app/home/done', data), - }, - sqConsignPt: { - /** 合同系统/签约授权 签约授权保存 */ - post_saveSignMultiEntity: (data?: BodyOptions) => - http.post('/app/sqConsignPt/saveSignMultiEntity', data), - /** 合同系统/签约授权 签约授权查询 */ - get_SigningaAuthorizationSerch: (data?: QueryOptions) => - http.get('/app/sqConsignPt/SigningaAuthorizationSerch', data), - /** 合同系统/签约授权 查询单条签约授权数据 */ - get_getOne: (data?: QueryOptions) => - http.get('/app/sqConsignPt/getOne', data), - /** 合同系统/签约授权 签约授权提交 */ - post_flowStart: (data?: BodyOptions) => - http.post('/app/sqConsignPt/flowStart', data), - /** 合同系统/签约授权 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/sqConsignPt/deletes', data), - }, - addressorsort: { - /** 协同办公/会议管理/发言人顺序配置 发言人顺序查询 */ - get_page: (data?: QueryOptions) => - http.get('/app/addressorsort/page', data), - /** 协同办公/会议管理/发言人顺序配置 发言人排序保存 */ - post_save: (data?: BodyOptions) => - http.post('/app/addressorsort/save', data), - /** 协同办公/会议管理/发言人顺序配置 批量保存 */ - post_saveBatch: (data?: BodyOptions) => - http.post('/app/addressorsort/saveBatch', data), - /** 协同办公/会议管理/发言人顺序配置 删除 */ - post_deletes: (data?: BodyOptions) => - http.post('/app/addressorsort/deletes', data), - }, -}; diff --git a/apps/web-office/src/api/request/config.ts b/apps/web-office/src/api/request/config.ts deleted file mode 100644 index 50e70181..00000000 --- a/apps/web-office/src/api/request/config.ts +++ /dev/null @@ -1,19 +0,0 @@ - -/** BaseUrl: 基础路径 */ -const BASE_URL: string = '/api' - -/** AccessTokenField: header 里传accessToken的键名,一般为 Authorization */ -export const ACCESS_TOKEN_FIELD = 'Token' - -/** - * 动态获取baseURL,仅限开发环境 - * 适用于同时连接多个后端功能开发,通过设置 proxy_type 值实现‘非重启更新’连接的后端 - */ -export function getBaseURL(): string { - if (import.meta.env.MODE === 'development') { - const proxyType = localStorage.getItem('@@@proxy_type') || ''; - // return BASE_URL + "/zzz" - return BASE_URL + proxyType - } - return BASE_URL -} diff --git a/apps/web-office/src/api/request/getToken.ts b/apps/web-office/src/api/request/getToken.ts deleted file mode 100644 index 4e905d94..00000000 --- a/apps/web-office/src/api/request/getToken.ts +++ /dev/null @@ -1,83 +0,0 @@ - -/** - * 获取RefreshToken - * @description: 创建新的请求实例实现 - */ -import { createAlova } from 'alova' -import { useAccessStore } from '@vben/stores'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { getBaseURL, ACCESS_TOKEN_FIELD } from './config'; - -let lock = false -let promiseResult: any[] = [] - -const alova = createAlova({ - baseURL: getBaseURL(), - cacheFor: null, - statesHook: vueHook, - requestAdapter: fetchAdapter(), - beforeRequest: (method) => { - // ...原请求前拦截器 - const accessStore = useAccessStore(); - - // const userStore = useUserStore() - // console.log('beforeRequest', userStore.accessToken) - // 添加token到请求头 - // method.config.headers[ACCESS_TOKEN_FIELD] = `${userStore.accessToken}` - }, - responded: async (response, method) => { - let json = await response.json(); - return json.data || null - }, -}) - -export function getAccessToken(rToken: string): Promise { - return new Promise(async (resolve, reject) => { - promiseResult.push({ - resolve, - reject - }) - // const userStore = useUserStore(); - - if (!lock) { - lock = true - // 为了让refreshToken请求顺利通过,需要通过元数据标识authRole为refreshToken。参考官方文档 - const method = alova.Post('/system/auth/refreshToken', { token: rToken }, { - meta: { - authRole: 'refreshToken' - } - }); - method.send() - .then((data: any) => { - console.log(data) - // 如果 refreshToken 请求成功,则将新的token存储到本地 - if (data && data.accessToken) { - // userStore.setToken(data.accessToken); - // userStore.setTokenExpiresTime(data.accessExpire) - // userStore.setRefreshToken(data.refreshToken); - while (promiseResult.length) { - // p1.resolve(res.data) - promiseResult.shift().resolve(data) - } - lock = false - return - } - // userStore.resetStore() - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject("身份认证已失效,请重新登录") - } - - }) - .catch(err => { - while (promiseResult.length) { - // p1.reject(err) - promiseResult.shift().reject(err) - } - lock = false - }) - } - - }) -} diff --git a/apps/web-office/src/api/request/index.ts b/apps/web-office/src/api/request/index.ts deleted file mode 100644 index 7ae63319..00000000 --- a/apps/web-office/src/api/request/index.ts +++ /dev/null @@ -1,320 +0,0 @@ -/** - * 该文件可自行根据业务逻辑进行调整 - */ -import { preferences } from '@vben/preferences'; -import { useAccessStore } from '@vben/stores'; - -import { createAlova } from 'alova'; -import { createServerTokenAuthentication } from 'alova/client'; -import fetchAdapter from 'alova/fetch'; -import vueHook from 'alova/vue'; -import { message } from 'ant-design-vue'; -import { merge } from 'lodash-es'; - -import { useAuthStore } from '#/store'; - -import { type BodyOptions, type QueryOptions } from '../global.d'; -import { ACCESS_TOKEN_FIELD, getBaseURL } from './config'; -import { transferResponse } from './transferResponse'; - -/** 储存过期的token */ -const expireTokenCache = []; - -/** 服务端 Token 校验 */ -const { onAuthRequired, onResponseRefreshToken } = - createServerTokenAuthentication({ - refreshTokenOnSuccess: { - /** - * 判断 Token 是否过期 - * 响应时触发,可获取到response和method,并返回boolean表示token是否过期 - */ - isExpired: async (response, method) => { - // 文件下载操作 - if (method.meta?.responseType === 'blob') { - return false; - } - - const responseClone = response.clone(); - const data = await responseClone.json(); - - // 当服务端返回401时,表示token过期 - const isExpired = ['401'].includes(data.code); - if (isExpired) { - console.log('AccessToken已过期', data.code); - expireTokenCache.push(method.config.headers[ACCESS_TOKEN_FIELD]); - } - - return isExpired; - }, - /** 当token过期时触发,在此函数中触发刷新token */ - handler: async (response, method) => { - console.warn('Access token or refresh token is invalid or expired. '); - const accessStore = useAccessStore(); - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - if ( - preferences.app.loginExpiredMode === 'modal' && - accessStore.isAccessChecked - ) { - accessStore.setLoginExpired(true); - } else { - await authStore.logout(false); - } - throw new Error('登录已过期,请重新登录'); - // const userStore = useUserStore(); - // try { - // let rToken = userStore.refreshToken; - // // 如果没有refreshToken,则跳转登录页 - // if (!rToken) { - // throw new Error('登录已过期,请重新登录'); - // } - // await getAccessToken(rToken) - // expireTokenCache = [] - // } catch (error: any) { - // window.$message?.error(error.message); - // userStore.resetStore() - // throw error; - // } - }, - }, - }); - -export const alovaInstance = createAlova({ - /** 动态代理配置 */ - baseURL: getBaseURL(), - /** 框架请求适配器 */ - statesHook: vueHook, - requestAdapter: fetchAdapter(), - /** 设置缓存状态:不开启 */ - cacheFor: null, - // cacheFor: { - // // 统一设置POST的缓存模式 - // GET: { - // mode: 'restore', - // expire: 60 * 10 * 1000, - // }, - // POST: { - // mode: 'restore', - // expire: 60 * 10 * 1000 - // }, - // // 统一设置HEAD请求的缓存模式 - // HEAD: 60 * 10 * 1000 - // }, - /** 请求拦截器 */ - beforeRequest: onAuthRequired((method) => { - const accessStore = useAccessStore(); - - if (accessStore.accessToken) { - method.config.headers.Token = accessStore.accessToken; - // 统一授权的这个接口需要以Authorization传参,无语 /sys/user/functiontree/XTBGXT - method.config.headers.Authorization = `Bearer ${accessStore.accessToken}`; - } - method.config.headers['Accept-Language'] = preferences.app.locale; - - // const userStore = useUserStore() - // // 添加token到请求头 - // if (userStore.accessToken) { - // method.config.headers[ACCESS_TOKEN_FIELD] = `Bearer ${userStore.accessToken}` - - // method.config.headers["Authorization"] = `Bearer ${userStore.accessToken}` - // } - - // method.config.cacheFor = { - // // 设置缓存模式为内存模式 - // mode: 'restore', - // // 单位为毫秒 - // // 当设置为`Infinity`,表示数据永不过期,设置为0或负数时表示不缓存 - // expire: 60 * 10 * 1000 - // } - // method.config.transform = (rawData, headers) => { - // console.log('接口响应', rawData) - // return transferResponse(rawData) - // } - }), - /** 响应拦截器 */ - responded: onResponseRefreshToken(async (response, method) => { - if (method.meta?.responseType === 'blob') { - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - const contentDisposition = response.headers.get('content-disposition'); - let fileName = 'downloaded-file'; - if (contentDisposition) { - const matches = /filename="?([^"]+)"?/.exec(contentDisposition); - if (matches != null && matches[1]) { - fileName = decodeURIComponent(matches[1]); - } - } - a.download = fileName; - // 触发下载 - document.body.append(a); - a.click(); - // 移除链接 - a.remove(); - window.URL.revokeObjectURL(url); - return { - blob, - url, - filename: fileName, - }; - } - - // if (response.status >= 400) { - // throw new Error(response.statusText); - // } - - let json = await response.json(); - console.log('【接口】', method.url); - console.log('原始响应', JSON.parse(JSON.stringify(json))); - - json = transferResponse(json); - console.log('改造响应', JSON.parse(JSON.stringify(json))); - - const accessStore = useAccessStore(); - - if (json.code != 0) { - if (json.code == '401') { - message.error('用户身份过期,请重新登录'); - - const authStore = useAuthStore(); - accessStore.setAccessToken(null); - await authStore.logout(); - // const userStore = useUserStore(); - // userStore.resetStore(); - } else { - message.error(json.msg || '服务器开小差,请稍后再试'); - } - // 抛出错误或返回reject状态的Promise实例时,此请求将抛出错误 - throw new Error((json && json.msg) || '出错了'); - } - - // 解析的响应数据将传给method实例的transformData钩子函数,这些函数将在后续讲解 - return json.data; - }), -}); - -class Http { - private appendParamsToUrl(url: string, params: any): string { - let queryString = ''; - for (const key in params) { - if (Object.prototype.hasOwnProperty.call(params, key)) { - queryString += `${queryString ? '&' : '?'}${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`; - } - } - return url + queryString; - } - - /** - * 全局默认配置 - * @param customConfig - * @returns - */ - private getConfig(customConfig?: any): any { - // 递归属性拷贝 - return merge( - {}, - { - meta: { - showLoading: false, - showError: false, - }, - }, - customConfig, - ); - } - - private isBodyOptions( - options: BodyOptions | QueryOptions, - ): options is BodyOptions { - return (options as BodyOptions).data !== undefined; - } - - /** - * 适配swagger路径参数,针对于pathParams - * 输入参数 "/api/v1/user/{id}",{ pathParams:{ id :1 },params:{ id:2 } } - * 输出请求 /api/v1/user/1?id=2 - */ - private replacePathParams(url: string, pathParams?: any): string { - if (!pathParams) return url; - return url.replaceAll( - /\{(\w+)\}/g, - (_, key) => pathParams[key] || `{${key}}`, - ); - } - - private request( - method: string, - url: string, - data?: BodyOptions | QueryOptions, - ): Promise { - let finalUrl = this.replacePathParams(url, data?.pathParams); - const config = this.getConfig(data?.config); - - // 当组件使用allowClear属性时,会将数据置为null,导致数据查询失败 - if (data && data.params) { - Object.keys(data.params).forEach((key) => { - if (data.params[key] === null || data.params[key] === undefined) { - delete data.params[key]; - } - }); - } - if (data && this.isBodyOptions(data)) { - Object.keys(data.data).forEach((key) => { - if (data.data[key] === null || data.data[key] === undefined) { - delete data.data[key]; - } - }); - } - - let alovaMethod: 'Delete' | 'Get' | 'Post' | 'Put' = 'Get'; - - if (method === 'get' || method === 'delete') { - if (method === 'get') { - alovaMethod = 'Get'; - } - if (method === 'delete') { - alovaMethod = 'Delete'; - } - return alovaInstance[alovaMethod](finalUrl, { - ...config, - params: data?.params, - }); - } else { - // 处理 params 到 url 的逻辑 - if (data?.params) { - finalUrl = this.appendParamsToUrl(finalUrl, data.params); - } - if (method === 'post') { - alovaMethod = 'Post'; - } - if (method === 'put') { - alovaMethod = 'Put'; - } - - return alovaInstance[alovaMethod](finalUrl, data?.data, { ...config }); - } - } - - delete(url: string, data?: QueryOptions) { - return this.request('delete', url, data); - } - - get(url: string, data?: QueryOptions) { - return this.request('get', url, data); - } - - patch(url: string, data?: BodyOptions) { - return this.request('patch', url, data); - } - - post(url: string, data?: BodyOptions) { - return this.request('post', url, data); - } - - put(url: string, data?: BodyOptions) { - return this.request('put', url, data); - } -} - -export const http = new Http(); diff --git a/apps/web-office/src/api/request/transferResponse.ts b/apps/web-office/src/api/request/transferResponse.ts deleted file mode 100644 index b79533bb..00000000 --- a/apps/web-office/src/api/request/transferResponse.ts +++ /dev/null @@ -1,89 +0,0 @@ -const SUCCESS_CODE = 0; - -/** - * 统一相应处理,伪BFF层 很多接口返回的响应信息不统一,防止因后端规范问题导致前端工作量增加!!!!!!!故在此做统一处理 - * 目前项目后端会返回的几种响应情况,xxx代指需要的数据:[xxx]、{xxx}、{data:{xxx}}、{records:xxx}、{content:xxx}.........................沉默 - * 数据总条数涉及字段:total、totalElements - * - * @param response - */ -export function transferResponse(response: any) { - // 如果后端直接返回数组,如[xxx] - if (Array.isArray(response)) { - return { - code: SUCCESS_CODE, - data: { - rows: response, - }, - msg: 'Ok', - }; - } - - // 如果后端直接返回数据内容对象,如{xxx},则先进行统一响应包装 - if (response.code == undefined) { - response = { - code: SUCCESS_CODE, - data: response, - msg: 'Ok', - }; - } - - let { code, data = {}, msg, ...rest } = response; - - if (!data) { - data = {}; - } - if (typeof data === 'string') { - data = { - value: data, - }; - } - // eslint-disable-next-line eqeqeq - if (code == 'success') { - code = 0; - } - - if (code == 'failure' && msg && msg.includes('token无效')) { - code = 401; - } - - if (Array.isArray(data)) { - data = { - rows: data, - }; - } - - if (!data.total && data.totalElements) { - data.total = data.totalElements; - } - - if (data.records && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (data.content && Array.isArray(data.content)) { - data.rows = data.content; - delete data.content; - } - - if (data.content && Array.isArray(data.records)) { - data.rows = data.records; - delete data.records; - } - - if (response.code == 200 && response.flag === false) { - code = 500; - } else if (response.code == '200') { - code = 0; - } - - return { - code, - data: { - ...data, - ...rest, - }, - msg, - }; -} diff --git a/apps/web-office/src/api/system/auth.ts b/apps/web-office/src/api/system/auth.ts deleted file mode 100644 index 3c11602a..00000000 --- a/apps/web-office/src/api/system/auth.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { http } from '../request/index'; - -import { useAccessStore } from '@vben/stores'; - -export namespace AuthApi { - /** 登录接口参数 */ - export interface LoginParams { - password: string; - username: string; - } - - /** 登录接口返回值 */ - export interface LoginResult { - accessToken: string; - desc: string; - realName: string; - userId: string; - username: string; - } - - export interface RefreshTokenResult { - data: string; - status: number; - } -} - -/** - * 登录 - */ -export async function loginApi(data: AuthApi.LoginParams) { - return http.post('/uc/uaa/validateAccount', { - data, - config: { - transform(rawData) { - if (rawData.access_token) { - rawData.accessToken = rawData.access_token; - rawData.realName = rawData.display_name; - return rawData; - } - return rawData; - }, - }, - }); -} - -/** - * 刷新accessToken - */ -export async function refreshTokenApi() { - return http.post('/auth/refresh'); -} - -/** - * 退出登录 - */ -export async function logoutApi() { - return http.post('/uc/uaa/logout'); -} - -/** - * 获取用户权限码 - */ -export async function getAccessCodesApi() { - return http.post('/auth/codes'); -} - -/** - * 获取用户信息 - */ -export async function getUserInfoApi() { - const accessStore = useAccessStore(); - return http.post('/uc/sys/user/checkToken', { - data: { - token: accessStore.accessToken, - }, - }); -} diff --git a/apps/web-office/src/api/system/menu.ts b/apps/web-office/src/api/system/menu.ts deleted file mode 100644 index 31fab94c..00000000 --- a/apps/web-office/src/api/system/menu.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { http } from '../request/index'; - -/** - * 获取用户所有菜单 - */ -export async function getAllMenusApi() { - return http.get('/menu/all'); -} diff --git a/apps/web-office/src/app.vue b/apps/web-office/src/app.vue deleted file mode 100644 index 06f7d675..00000000 --- a/apps/web-office/src/app.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/apps/web-office/src/assets/canteen/orderfood.png b/apps/web-office/src/assets/canteen/orderfood.png deleted file mode 100644 index 8984b82394f2182899c1905a04eb72a8df0a7360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4404 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 { - item.label = item.ORG_NAME - item.value = item.ORG_ID - }) - let treeData = transTree(data.rows); - return treeData; - }, - }), -} - -export async function getUnitData(params = {}) { - const data = await Apis.api.core.orgemplbc.organization.post_paging({ - params: { - page: 1, - size: 1000 - }, - data: { - subFilter: [ - { - symbol: "like", - singleValue: "0001%", - key: "ORG_ID", - logic: "AND", - }, - ], - } - }); - data.rows.forEach((item: any) => { - item.label = item.ORG_NAME - item.value = item.ORG_ID - }) - let treeData = transTree(data.rows); - return treeData; -} - -// 转换树行数据的方法 -function transTree(list) { - // 最终生成的树行结构 - const _treeData = []; - - // 对传入进来的 数据进行遍历,查找对应的子级 - list.forEach((item) => { - // 给每一项添加子节点 - // item.children = [] - item.key = item.ORG_ID; - item.label = item.ORG_NAME; - // 如果 pid 为空,说明是最顶级,直接放到 _treeData 中即可 - if (item.ORG_LEVEL == 1) { - item.selectable = false - _treeData.push(item); - } - - // 根据前面的分析,pid 代表的是父级的 id,从而可以进行筛选子级 - // filter 方法会把满足条件到的每一项,组成一个数组进行返回 - const children = list.filter((data) => data.PARENT_ID === item.ORG_ID); - - // 如果没有子节点,直接 return 不做任何处理 - if (!children.length) return; - - // 将返回的子级进行赋值给父级(item)的 children 属性 - item.children = children; - }); - - // 将最终生成的数据返回出去 - return _treeData; -} diff --git a/apps/web-office/src/components/dict-tag/dict-tag.vue b/apps/web-office/src/components/dict-tag/dict-tag.vue deleted file mode 100644 index f321148f..00000000 --- a/apps/web-office/src/components/dict-tag/dict-tag.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/apps/web-office/src/components/dict-tag/index.ts b/apps/web-office/src/components/dict-tag/index.ts deleted file mode 100644 index 881265a3..00000000 --- a/apps/web-office/src/components/dict-tag/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as DictTag } from './dict-tag.vue'; diff --git a/apps/web-office/src/components/flow-record-table/flow-record-table.vue b/apps/web-office/src/components/flow-record-table/flow-record-table.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-office/src/hooks/fastCrud.ts b/apps/web-office/src/hooks/fastCrud.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-office/src/hooks/useRender.ts b/apps/web-office/src/hooks/useRender.ts deleted file mode 100644 index ca05bb90..00000000 --- a/apps/web-office/src/hooks/useRender.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { h } from 'vue'; - -import { EllipsisText } from '@vben/common-ui'; - -import { Button, Tag } from 'ant-design-vue'; -// import { Icon } from '@/components/Icon'; -import dayjs from 'dayjs'; - -import { DictTag } from '#/components/dict-tag'; -import { getDictOpts } from '#/utils/dict'; - -export const useRender = { - /** - * 渲染图片 - * @param text 图片地址 - * @returns image标签 - */ - // renderImg: (text: string) => { - // if (text) { - // if (isArray(text)) return h(TableImg, { imgList: text }); - // else if (isString(text)) return h(TableImg, { imgList: [text] }); - // } - // return ''; - // }, - /** - * 渲染链接 - * @param url 链接地址 - * @param text 文字说明 - * @returns link 按钮 - */ - renderLink: (url: string, text?: string) => { - if (url) - return h( - Button, - { type: 'link', href: url, target: '_blank' }, - () => text || '', - ); - - return ''; - }, - /** - * 渲染文本,将text与val 拼接到一起 - * @param text 文本1 - * @param val 文本2 - * @returns 文本1 + 文本2 - */ - renderText: (text: string, val: string) => { - return text ? `${text} ${val}` : ''; - }, - /** - * 渲染多行文本 - * @param text - * @param val - */ - renderMultiLineText: (text: string, params?: any) => { - if (text) { - params = params || {}; - const classArr: string[] = params.class || []; - // if (params?.maxLine && params?.maxLine > 0) { - // classArr.push(`line-clamp-${params?.maxLine}`); - // } - - return h( - EllipsisText, - { class: classArr.join(' '), line: params?.maxLine || 6 }, - { - default: () => text, - }, - ); - } - return ''; - }, - /** - * 渲染标签 - * @param text 标签文本 - * @param color 标签颜色 - * @returns 标签 - */ - renderTag: (text: number | string, color?: string) => { - return color ? h(Tag, { color }, () => text) : h(Tag, {}, () => text); - }, - /** - * 渲染多标签 - * @param texts 文本 - * @returns 多标签 - */ - renderTags: (texts: string[]) => { - if (texts) { - return h('div', null, [ - texts.map((text) => { - return h(Tag, null, () => text); - }), - ]); - } - return ''; - }, - /** - * 渲染日期 - * @param text 日期 - * @param format 格式化 - * @returns 格式化后日期 - */ - renderDate: (text: string, format?: string) => { - if (!text) return ''; - - return format - ? dayjs(text).format(format) - : dayjs(text).format('YYYY-MM-DD HH:mm:ss'); - }, - /** - * 渲染字典 - * @param text 字典值 - * @param dictType 字典类型 - * @returns 字典标签 - */ - renderDict: (text: string, dictType: string, params?: any) => { - if (!dictType && !params.options) { - console.warn('请传入字典类型'); - return ''; - } - let dict: any[] = []; - if (dictType) { - dict = getDictOpts(dictType); - } - if (params && params.options) { - dict = params.options; - } - return h(DictTag, { options: dict, value: text, ...params }); - }, - // /** - // * 渲染图标icon - // * @param text icon - // * @returns icon - // */ - // renderIcon: (text: string) => { - // if (text) return h(Icon, { icon: text }); - // }, - /** - * 使用JsonPreview组件 方便预览JSON - * @param json json字符串/obj - * @returns 能转为json返回JsonPreview 否则返回自身 - */ - // renderJsonPreview: (json: any) => { - // if (!json) return ''; - // if (typeof json === 'object') return h(JsonPreview, { data: json }); - - // if (typeof json === 'string') { - // try { - // const data = JSON.parse(json); - // return h(JsonPreview, { data }); - // } catch (e) { - // return json; - // } - // } - // }, -}; diff --git a/apps/web-office/src/hooks/vxeTable.ts b/apps/web-office/src/hooks/vxeTable.ts deleted file mode 100644 index 686c8244..00000000 --- a/apps/web-office/src/hooks/vxeTable.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { ref } from 'vue'; - -import { merge } from 'lodash-es'; -import { type VxeGridInstance, type VxeGridProps } from 'vxe-table'; - -export function useVxeTable(props: { ref: string }) { - const xGridRef = ref>(); - - return { - xGridRef, - gridProps: (props: VxeGridProps) => { - // 设置默认属性 - const defaultProps: VxeGridProps = { - // 保持原始值的状态,被某些功能所依赖,比如编辑状态、还原数据等(开启后影响性能,具体取决于数据量) - keepSource: false, - height: 'auto', - border: true, - editConfig: { - mode: 'row', - }, - rowConfig: { - isCurrent: true, - }, - // 斑马条纹 - stripe: false, - pagerConfig: { - enabled: true, - size: 'mini', - pageSize: 50, - autoHidden: false, - }, - // 列设置 - columnConfig: { - // 取消列选中效果 - isCurrent: false, - isHover: false, - // 取消列宽拖动功能 - resizable: false, - }, - toolbarConfig: { - enabled: true, - export: false, - // print: true, - zoom: true, - custom: true, - refresh: true, - slots: { - buttons: 'toolbar_buttons', - }, - }, - headerAlign: 'left', - align: 'left', - }; - - // 如果mergedProps.proxyConfig是空对象,则删除该字段,不然 vxetable 可能会误判断 - if (props.proxyConfig && JSON.stringify(props.proxyConfig) != '{}') { - defaultProps.proxyConfig = { - props: { - list: 'rows', - result: 'rows', - total: 'total', - }, - }; - } - - return merge({}, defaultProps, props); - }, - - triggerProxy: (code: string) => { - const $grid = xGridRef.value; - if ($grid) { - $grid.commitProxy(code); - } - }, - }; -} diff --git a/apps/web-office/src/layouts/basic.vue b/apps/web-office/src/layouts/basic.vue deleted file mode 100644 index 8ee59043..00000000 --- a/apps/web-office/src/layouts/basic.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - diff --git a/apps/web-office/src/layouts/index.ts b/apps/web-office/src/layouts/index.ts deleted file mode 100644 index 23d79d6e..00000000 --- a/apps/web-office/src/layouts/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -const BasicLayout = () => import('./basic.vue'); - -const IFrameView = () => import('@vben/layouts').then((m) => m.IFrameView); - -const AuthPageLayout = () => - import('@vben/layouts').then((m) => m.AuthPageLayout); - -export { AuthPageLayout, BasicLayout, IFrameView }; diff --git a/apps/web-office/src/locales/README.md b/apps/web-office/src/locales/README.md deleted file mode 100644 index 7b451032..00000000 --- a/apps/web-office/src/locales/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# locale - -每个app使用的国际化可能不同,这里用于扩展国际化的功能,例如扩展 dayjs、antd组件库的多语言切换,以及app本身的国际化文件。 diff --git a/apps/web-office/src/locales/index.ts b/apps/web-office/src/locales/index.ts deleted file mode 100644 index c3fd8c84..00000000 --- a/apps/web-office/src/locales/index.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales'; -import type { Locale } from 'ant-design-vue/es/locale'; - -import type { App } from 'vue'; -import { ref } from 'vue'; - -import { $t, setupI18n as coreSetup, loadLocalesMap } from '@vben/locales'; -import { preferences } from '@vben/preferences'; - -import antdEnLocale from 'ant-design-vue/es/locale/en_US'; -import antdDefaultLocale from 'ant-design-vue/es/locale/zh_CN'; -import dayjs from 'dayjs'; - -const antdLocale = ref(antdDefaultLocale); - -const modules = import.meta.glob('./langs/*.json'); - -const localesMap = loadLocalesMap(modules); - -/** - * 加载应用特有的语言包 - * 这里也可以改造为从服务端获取翻译数据 - * @param lang - */ -async function loadMessages(lang: SupportedLanguagesType) { - const [appLocaleMessages] = await Promise.all([ - localesMap[lang]?.(), - loadThirdPartyMessage(lang), - ]); - return appLocaleMessages?.default; -} - -/** - * 加载第三方组件库的语言包 - * @param lang - */ -async function loadThirdPartyMessage(lang: SupportedLanguagesType) { - await Promise.all([loadAntdLocale(lang), loadDayjsLocale(lang)]); -} - -/** - * 加载dayjs的语言包 - * @param lang - */ -async function loadDayjsLocale(lang: SupportedLanguagesType) { - let locale; - switch (lang) { - case 'zh-CN': { - locale = await import('dayjs/locale/zh-cn'); - break; - } - case 'en-US': { - locale = await import('dayjs/locale/en'); - break; - } - // 默认使用英语 - default: { - locale = await import('dayjs/locale/en'); - } - } - if (locale) { - dayjs.locale(locale); - } else { - console.error(`Failed to load dayjs locale for ${lang}`); - } -} - -/** - * 加载antd的语言包 - * @param lang - */ -async function loadAntdLocale(lang: SupportedLanguagesType) { - switch (lang) { - case 'zh-CN': { - antdLocale.value = antdDefaultLocale; - break; - } - case 'en-US': { - antdLocale.value = antdEnLocale; - break; - } - } -} - -async function setupI18n(app: App, options: LocaleSetupOptions = {}) { - await coreSetup(app, { - defaultLocale: preferences.app.locale, - loadMessages, - missingWarn: !import.meta.env.PROD, - ...options, - }); -} - -export { $t, antdLocale, setupI18n }; diff --git a/apps/web-office/src/locales/langs/en-US.json b/apps/web-office/src/locales/langs/en-US.json deleted file mode 100644 index 864c721f..00000000 --- a/apps/web-office/src/locales/langs/en-US.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "Demos", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-office/src/locales/langs/zh-CN.json b/apps/web-office/src/locales/langs/zh-CN.json deleted file mode 100644 index 31d3475b..00000000 --- a/apps/web-office/src/locales/langs/zh-CN.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "page": { - "demos": { - "title": "演示", - "antd": "Ant Design Vue" - } - } -} diff --git a/apps/web-office/src/main.ts b/apps/web-office/src/main.ts deleted file mode 100644 index 5d728a02..00000000 --- a/apps/web-office/src/main.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { initPreferences } from '@vben/preferences'; -import { unmountGlobalLoading } from '@vben/utils'; - -import { overridesPreferences } from './preferences'; - -/** - * 应用初始化完成之后再进行页面加载渲染 - */ -async function initApplication() { - // name用于指定项目唯一标识 - // 用于区分不同项目的偏好设置以及存储数据的key前缀以及其他一些需要隔离的数据 - const env = import.meta.env.PROD ? 'prod' : 'dev'; - const appVersion = import.meta.env.VITE_APP_VERSION; - const namespace = `${import.meta.env.VITE_APP_NAMESPACE}-${appVersion}-${env}`; - - // app偏好设置初始化 - await initPreferences({ - namespace, - overrides: overridesPreferences, - }); - - // 启动应用并挂载 - // vue应用主要逻辑及视图 - const { bootstrap } = await import('./bootstrap'); - await bootstrap(namespace); - - // 移除并销毁loading - unmountGlobalLoading(); -} - -initApplication(); diff --git a/apps/web-office/src/plugins/fastCrud.ts b/apps/web-office/src/plugins/fastCrud.ts deleted file mode 100644 index 9c5c8585..00000000 --- a/apps/web-office/src/plugins/fastCrud.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { App } from 'vue'; - -import FastCrud from '@fast-crud/fast-crud'; -import ui from '@fast-crud/ui-antdv4'; -import Antdv from 'ant-design-vue'; -import '@fast-crud/fast-crud/dist/style.css'; -import '@fast-crud/ui-antdv4/dist/style.css'; - -export function registerFastCrud(app: App) { - app.use(Antdv); - app.use(ui); - app.use(FastCrud, { - - }); -} diff --git a/apps/web-office/src/plugins/vxeTable.ts b/apps/web-office/src/plugins/vxeTable.ts deleted file mode 100644 index 850334f0..00000000 --- a/apps/web-office/src/plugins/vxeTable.ts +++ /dev/null @@ -1,202 +0,0 @@ -import type { App } from 'vue'; - -import VXETable from 'vxe-table' - -import { - VxeTable, - VxeColumn, - VxeColgroup, - VxeGrid, - VxeToolbar -} from 'vxe-table' - -import VxeUI from 'vxe-pc-ui' - -import { - - VxeAlert, - VxeAnchor, - VxeAnchorLink, - VxeBreadcrumb, - VxeBreadcrumbItem, - VxeButton, - VxeButtonGroup, - VxeCalendar, - VxeCard, - VxeCarousel, - VxeCheckbox, - VxeCheckboxGroup, - VxeCol, - VxeCollapse, - VxeCollapsePane, - VxeDatePicker, - VxeDrawer, - VxeForm, - VxeFormDesign, - VxeFormGather, - VxeFormItem, - VxeFormView, - VxeIcon, - VxeIconPicker, - VxeImage, - VxeImageGroup, - VxeImagePreview, - VxeInput, - VxeLayoutAside, - VxeLayoutBody, - VxeLayoutContainer, - VxeLayoutFooter, - VxeLayoutHeader, - VxeLink, - VxeListDesign, - VxeListView, - VxeList, - VxeLoading, - VxeMenu, - VxeModal, - VxeNumberInput, - VxeOptgroup, - VxeOption, - VxePager, - VxePasswordInput, - VxePrintPageBreak, - VxePrint, - VxePulldown, - VxeRadio, - VxeRadioButton, - VxeRadioGroup, - VxeRow, - VxeSelect, - VxeSwitch, - VxeTabPane, - VxeTabs, - VxeTag, - VxeText, - VxeTextarea, - VxeTip, - VxeTooltip, - VxeTree, - VxeTreeSelect, - VxeUpload -} from 'vxe-pc-ui' - -import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx' -import ExcelJS from 'exceljs' - -import VXETablePluginAntd from 'vxe-table-plugin-antd' - -// 导入主题变量,也可以重写主题变量 -import 'vxe-pc-ui/lib/style.css' -import 'vxe-table/lib/style.css' -import 'vxe-table/styles/cssvar.scss' -import 'vxe-pc-ui/styles/cssvar.scss' - -// VxeUI.setTheme('dark') - -VxeUI.component(VxeAlert) -VxeUI.component(VxeAnchor) -VxeUI.component(VxeAnchorLink) -VxeUI.component(VxeBreadcrumb) -VxeUI.component(VxeBreadcrumbItem) -VxeUI.component(VxeButton) -VxeUI.component(VxeButtonGroup) -VxeUI.component(VxeCalendar) -VxeUI.component(VxeCard) -VxeUI.component(VxeCarousel) -VxeUI.component(VxeCheckbox) -VxeUI.component(VxeCheckboxGroup) -VxeUI.component(VxeCol) -VxeUI.component(VxeCollapse) -VxeUI.component(VxeCollapsePane) -VxeUI.component(VxeDatePicker) -VxeUI.component(VxeDrawer) -VxeUI.component(VxeForm) -VxeUI.component(VxeFormDesign) -VxeUI.component(VxeFormGather) -VxeUI.component(VxeFormItem) -VxeUI.component(VxeFormView) -VxeUI.component(VxeIcon) -VxeUI.component(VxeIconPicker) -VxeUI.component(VxeImage) -VxeUI.component(VxeImageGroup) -VxeUI.component(VxeImagePreview) -VxeUI.component(VxeInput) -VxeUI.component(VxeLayoutAside) -VxeUI.component(VxeLayoutBody) -VxeUI.component(VxeLayoutContainer) -VxeUI.component(VxeLayoutFooter) -VxeUI.component(VxeLayoutHeader) -VxeUI.component(VxeLink) -VxeUI.component(VxeListDesign) -VxeUI.component(VxeListView) -VxeUI.component(VxeList) -VxeUI.component(VxeLoading) -VxeUI.component(VxeMenu) -VxeUI.component(VxeModal) -VxeUI.component(VxeNumberInput) -VxeUI.component(VxeOptgroup) -VxeUI.component(VxeOption) -VxeUI.component(VxePager) -VxeUI.component(VxePasswordInput) -VxeUI.component(VxePrintPageBreak) -VxeUI.component(VxePrint) -VxeUI.component(VxePulldown) -VxeUI.component(VxeRadio) -VxeUI.component(VxeRadioButton) -VxeUI.component(VxeRadioGroup) -VxeUI.component(VxeRow) -VxeUI.component(VxeSelect) -VxeUI.component(VxeSwitch) -VxeUI.component(VxeTabPane) -VxeUI.component(VxeTabs) -VxeUI.component(VxeTag) -VxeUI.component(VxeText) -VxeUI.component(VxeTextarea) -VxeUI.component(VxeTip) -VxeUI.component(VxeTooltip) -VxeUI.component(VxeTree) -VxeUI.component(VxeTreeSelect) -VxeUI.component(VxeUpload) - -VxeUI.component(VxeTable) -VxeUI.component(VxeColumn) -VxeUI.component(VxeColgroup) -VxeUI.component(VxeGrid) -VxeUI.component(VxeToolbar) - -VXETable.use(VXETablePluginAntd) - -VXETable.use(VXETablePluginExportXLSX, { - ExcelJS -}) - -VXETable.setConfig({ - // zIndex: 9999, - grid: { - size: 'mini', - proxyConfig: { - props: { - result: 'data.rows', - total: 'data.total', - }, - }, - toolbarConfig: { - enabled: true, - }, - }, - - pager: { - background: true, - pageSize: 50, - pageSizes: [50, 100, 300, 500, 1000], - layouts: ['PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total'], - }, -}) -export function registerVxeTable(app: App) { - app.use(VxeUI) - app.use(VxeTable) - app.use(VxeColumn) - app.use(VxeColgroup) - app.use(VxeGrid) - app.use(VxeToolbar) -} diff --git a/apps/web-office/src/preferences.ts b/apps/web-office/src/preferences.ts deleted file mode 100644 index d6f4281f..00000000 --- a/apps/web-office/src/preferences.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineOverridesPreferences } from '@vben/preferences'; - -/** - * @description 项目配置文件 - * 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置 - */ -export const overridesPreferences = defineOverridesPreferences({ - // overrides - app: { - name: import.meta.env.VITE_APP_TITLE, - authPageLayout: 'panel-center', - enablePreferences:true - }, -}); diff --git a/apps/web-office/src/router/access.ts b/apps/web-office/src/router/access.ts deleted file mode 100644 index 72c1b2c0..00000000 --- a/apps/web-office/src/router/access.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { - ComponentRecordType, - GenerateMenuAndRoutesOptions, -} from '@vben/types'; - -import { generateAccessible } from '@vben/access'; -import { preferences } from '@vben/preferences'; - -import { message } from 'ant-design-vue'; - -import { getAllMenusApi } from '#/api/system/menu'; -import { BasicLayout, IFrameView } from '#/layouts'; -import { $t } from '#/locales'; - -const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue'); - -async function generateAccess(options: GenerateMenuAndRoutesOptions) { - const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue'); - - const layoutMap: ComponentRecordType = { - BasicLayout, - IFrameView, - }; - - return await generateAccessible(preferences.app.accessMode, { - ...options, - fetchMenuListAsync: async () => { - message.loading({ - content: `${$t('common.loadingMenu')}...`, - duration: 1.5, - }); - return await getAllMenusApi(); - }, - // 可以指定没有权限跳转403页面 - forbiddenComponent, - // 如果 route.meta.menuVisibleWithForbidden = true - layoutMap, - pageMap, - }); -} - -export { generateAccess }; diff --git a/apps/web-office/src/router/guard.ts b/apps/web-office/src/router/guard.ts deleted file mode 100644 index 1e94cd8d..00000000 --- a/apps/web-office/src/router/guard.ts +++ /dev/null @@ -1,240 +0,0 @@ -import type { Router } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { preferences } from '@vben/preferences'; -import { useAccessStore, useUserStore } from '@vben/stores'; -import { startProgress, stopProgress } from '@vben/utils'; - -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; -import { coreRouteNames, dynamicRoutes } from '#/router/routes'; -import { useAuthStore } from '#/store'; -import Apis from '#/api'; -import { generateAccess } from './access'; - -/** - * 通用守卫配置 - * @param router - */ -function setupCommonGuard(router: Router) { - // 记录已经加载的页面 - const loadedPaths = new Set(); - - router.beforeEach(async (to) => { - to.meta.loaded = loadedPaths.has(to.path); - - // 页面加载进度条 - if (!to.meta.loaded && preferences.transition.progress) { - startProgress(); - } - return true; - }); - - router.afterEach((to) => { - // 记录页面是否加载,如果已经加载,后续的页面切换动画等效果不在重复执行 - - if (preferences.tabbar.enable) { - loadedPaths.add(to.path); - } - - // 关闭页面加载进度条 - if (preferences.transition.progress) { - stopProgress(); - } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } - }); -} - -/** - * 匹配路径 - * permission.path = "/xx/edit" 但route.path = "/xx/edit/:id?" 这种情况,其中id可以为任意值,如meetingId roleId等, - */ -function matchPaths(routePath, permissionPath) { - const routeParts = routePath.split('/'); - const permissionParts = permissionPath.split('/'); - - if (permissionParts.length > routeParts.length) { - return false; - } - - return routeParts.every((part, index) => { - return part === permissionParts[index] || part.startsWith(':'); - }); -} - -// 过滤路由,只保留第三个数据源配置的路由 -function filterRoutesByPermissions(routes, permissions, staticRouteKeys) { - const filteredRoutes = []; - for (let route of routes) { - console.log('[ route ] >', route) - console.log('[ permission.path ] >', permissions) - - const permission = permissions.find(permission => - matchPaths(route.path, permission.path) - ); - const isStaticRoute = staticRouteKeys.includes(route.name); - - if (permission || isStaticRoute) { - const newRoute = { ...route }; - if (permission) { - newRoute.meta = { - ...newRoute.meta, - title: permission.name, - }; - if (permission.order) { - newRoute.meta.order = permission.order - } - - } - if (route.children) { - newRoute.children = filterRoutesByPermissions(route.children, permissions, staticRouteKeys); - } - filteredRoutes.push(newRoute); - console.log(JSON.parse(JSON.stringify(filteredRoutes))); - - } - } - - return filteredRoutes; -} - -/** - * 权限访问守卫配置 - * @param router - */ -function setupAccessGuard(router: Router) { - router.beforeEach(async (to, from) => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const authStore = useAuthStore(); - - // 基本路由,这些路由不需要进入权限拦截 - if (coreRouteNames.includes(to.name as string)) { - if (to.path === LOGIN_PATH && accessStore.accessToken) { - return decodeURIComponent( - (to.query?.redirect as string) || DEFAULT_HOME_PATH, - ); - } - return true; - } - - // accessToken 检查 - if (!accessStore.accessToken) { - // 明确声明忽略权限访问权限,则可以访问 - if (to.meta.ignoreAccess) { - return true; - } - - // 没有访问权限,跳转登录页面 - if (to.fullPath !== LOGIN_PATH) { - return { - path: LOGIN_PATH, - // 如不需要,直接删除 query - query: { redirect: encodeURIComponent(to.fullPath) }, - // 携带当前跳转的页面,登录后重新跳转该页面 - replace: true, - }; - } - return to; - } - - // 是否已经生成过动态路由 - if (accessStore.isAccessChecked) { - return true; - } - - // 生成路由表 - // 当前登录用户拥有的角色标识列表 - const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); - const userRoles = userInfo.roles ?? []; - - // debugger - - // 二开,从统一授权获取菜单key值,遍历本地所有菜单进行添加 - - let staticRouteKeys = ["Dashboard", "home", "User", "UserCenter", "UserTodo","IFrame","MeetingStandingBook","MeetingStart","DutyStandingBook","ContractInfo"]; - - let r = await Apis.sys.user.functiontree.get_XTBGXT() - let originRouters = r.rows[0].children; - // 提取数据的函数 - const extractData = (input: any[]) => { - const result: any[] = []; - function traverse(node: any) { - if (node.id && node.name && node.remark) { - result.push({ - path: node.remark, - name: node.name, - order: node.showOrder || 0, - }); - } - if (node.children && node.children.length > 0) { - for (const child of node.children) { - traverse(child); - } - } - } - - for (const node of input) { - traverse(node); - } - - return result; - } - console.log('originRouters', originRouters) - originRouters = extractData(originRouters); - console.log('originRouters', originRouters) - - let finalRoutes = filterRoutesByPermissions(dynamicRoutes, originRouters, staticRouteKeys); - - console.log(originRouters) - console.log('finalRoutes', finalRoutes) - - console.log('dynamicRoutes', dynamicRoutes) - console.log('userInfo', userInfo) - - if (userInfo.accountId == 'Admin.itl'|| userInfo._isSkip) { - finalRoutes = dynamicRoutes; - } - - console.log(userInfo) - - - // 生成菜单和路由 - const { accessibleMenus, accessibleRoutes } = await generateAccess({ - roles: userRoles, - router, - // 则会在菜单中显示,但是访问会被重定向到403 - routes: finalRoutes, - }); - // 保存菜单信息和路由信息 - accessStore.setAccessMenus(accessibleMenus); - accessStore.setAccessRoutes(accessibleRoutes); - accessStore.setIsAccessChecked(true); - const redirectPath = (from.query.redirect ?? to.fullPath) as string; - - return { - ...router.resolve(decodeURIComponent(redirectPath)), - replace: true, - }; - }); -} - -/** - * 项目守卫配置 - * @param router - */ -function createRouterGuard(router: Router) { - /** 通用 */ - setupCommonGuard(router); - /** 权限访问 */ - setupAccessGuard(router); -} - -export { createRouterGuard }; diff --git a/apps/web-office/src/router/index.ts b/apps/web-office/src/router/index.ts deleted file mode 100644 index 313b372b..00000000 --- a/apps/web-office/src/router/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - createRouter, - createWebHashHistory, - createWebHistory, -} from 'vue-router'; - -import { resetStaticRoutes } from '@vben/utils'; - -import { createRouterGuard } from './guard'; -import { routes } from './routes'; - -/** - * @zh_CN 创建vue-router实例 - */ -const router = createRouter({ - history: - import.meta.env.VITE_ROUTER_HISTORY === 'hash' - ? createWebHashHistory(import.meta.env.VITE_BASE) - : createWebHistory(import.meta.env.VITE_BASE), - // 应该添加到路由的初始路由列表。 - routes, - scrollBehavior: () => ({ left: 0, top: 0 }), - // 是否应该禁止尾部斜杠。 - // strict: true, -}); - -const resetRoutes = () => resetStaticRoutes(router, routes); - -// 创建路由守卫 -createRouterGuard(router); - -export { resetRoutes, router }; diff --git a/apps/web-office/src/router/routes/core.ts b/apps/web-office/src/router/routes/core.ts deleted file mode 100644 index 51937b12..00000000 --- a/apps/web-office/src/router/routes/core.ts +++ /dev/null @@ -1,136 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { DEFAULT_HOME_PATH } from '@vben/constants'; - -import { AuthPageLayout, IFrameView } from '#/layouts'; -import { $t } from '#/locales'; -import Login from '#/views/_core/authentication/login.vue'; - -/** 全局404页面 */ -const fallbackNotFoundRoute: RouteRecordRaw = { - component: () => import('#/views/_core/fallback/not-found.vue'), - meta: { - hideInBreadcrumb: true, - hideInMenu: true, - hideInTab: true, - title: '404', - }, - name: 'FallbackNotFound', - path: '/:path(.*)*', -}; - -/** 基本路由,这些路由是必须存在的 */ -const coreRoutes: RouteRecordRaw[] = [ - { - meta: { - title: 'Root', - }, - name: 'Root', - path: '/', - redirect: DEFAULT_HOME_PATH, - }, - { - component: AuthPageLayout, - props: { - toolbar: false, - }, - meta: { - title: 'Authentication', - }, - name: 'Authentication', - path: '/auth', - children: [ - { - name: 'Login', - path: 'login', - component: Login, - meta: { - title: $t('page.core.login'), - }, - }, - { - name: 'CodeLogin', - path: 'code-login', - component: () => import('#/views/_core/authentication/code-login.vue'), - meta: { - title: $t('page.core.codeLogin'), - }, - }, - { - name: 'QrCodeLogin', - path: 'qrcode-login', - component: () => - import('#/views/_core/authentication/qrcode-login.vue'), - meta: { - title: $t('page.core.qrcodeLogin'), - }, - }, - { - name: 'ForgetPassword', - path: 'forget-password', - component: () => - import('#/views/_core/authentication/forget-password.vue'), - meta: { - title: $t('page.core.forgetPassword'), - }, - }, - { - name: 'Register', - path: 'register', - component: () => import('#/views/_core/authentication/register.vue'), - meta: { - title: $t('page.core.register'), - }, - }, - ], - }, - { - component: IFrameView, - meta: { - icon: 'lucide:layout-dashboard', - order: 210, - title: 'iframe', - hideInMenu: true, - hideInTab: true, - }, - name: 'IFrame', - path: '/iframe', - children: [ - { - name: 'MeetingStandingBook', - path: '/iframe/meeting/standing-book', - component: () => import('#/views/meeting/standing-book/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '热力公司会议管理系统', - }, - }, - { - name: 'MeetingStart', - path: '/iframe/meeting/start/:id?', - component: () => import('#/views/meeting/start/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '会议发起', - }, - }, - { - name: 'DutyStandingBook', - path: '/iframe/duty/standing-book', - component: () => import('#/views/duty/standing-book/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '值班信息栏', - }, - }, - ], - }, -]; - -export { coreRoutes, fallbackNotFoundRoute }; diff --git a/apps/web-office/src/router/routes/index.ts b/apps/web-office/src/router/routes/index.ts deleted file mode 100644 index a70c4875..00000000 --- a/apps/web-office/src/router/routes/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { mergeRouteModules, traverseTreeValues } from '@vben/utils'; - -import { coreRoutes, fallbackNotFoundRoute } from './core'; - -const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { - eager: true, -}); - -// 有需要可以自行打开注释,并创建文件夹 -// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true }); - -/** 动态路由 */ -const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles); - -/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统 */ -// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); -const externalRoutes: RouteRecordRaw[] = []; - -/** 路由列表,由基本路由+静态路由组成 */ -const routes: RouteRecordRaw[] = [ - ...coreRoutes, - ...externalRoutes, - fallbackNotFoundRoute, -]; - -/** 基本路由列表,这些路由不需要进入权限拦截 */ -const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name); - -export { coreRouteNames, dynamicRoutes, routes }; diff --git a/apps/web-office/src/router/routes/modules/contract.ts b/apps/web-office/src/router/routes/modules/contract.ts deleted file mode 100644 index a5f4101d..00000000 --- a/apps/web-office/src/router/routes/modules/contract.ts +++ /dev/null @@ -1,456 +0,0 @@ -// import type { RouteRecordRaw } from 'vue-router'; - -// import { BasicLayout } from '#/layouts'; - -// const routes: RouteRecordRaw[] = [ -// { -// component: BasicLayout, -// meta: { -// icon: 'lucide:layout-dashboard', -// order: 2000, -// title: '合同管理', -// }, -// name: 'Contract', -// path: '/contract', -// children: [ -// { -// name: 'ContractConfig', -// path: '/contract/config', -// component: () => import('#/views/contract/config/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '合同配置', -// }, -// }, -// { -// name: 'ContractApproval', -// path: '/contract/approval', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同立项', -// }, -// children: [ -// { -// name: 'ContractApprovalEdit', -// path: '/contract/approval/edit/:id?', -// beforeEnter: (e) => { -// if (e.params.id && e.params.id === ':id') { -// e.params.id = '' -// e.fullPath = '/contract/approval/edit' -// } -// }, -// component: () => import('#/views/contract/approval/edit/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '立项申报', -// activePath: '/contract/approval/edit/:id?' -// }, -// }, -// { -// name: 'ContractApprovalTodo', -// path: '/contract/approval/todo', -// component: () => import('#/views/contract/approval/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '立项提示', -// }, -// }, -// { -// name: 'ContractApprovalList', -// path: '/contract/approval/list', -// component: () => import('#/views/contract/approval/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '立项查询', -// }, -// }, -// { -// name: 'ContractApprovalSigningBasis', -// path: '/contract/approval/signing-basis', -// component: () => import('#/views/contract/approval/signing-basis/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '签约依据维护', -// }, -// } -// ], -// }, -// { -// name: 'ContractBusiness', -// path: '/contract/business', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同选商', -// }, -// children: [ -// { -// name: 'ContractBusinessEdit', -// path: '/contract/business/edit/:id?', -// beforeEnter: (e) => { -// if (e.params.id && e.params.id === ':id') { -// e.params.id = '' -// e.fullPath = '/contract/business/edit' -// } -// }, -// component: () => import('#/views/contract/business/edit/index.vue'), -// meta: { -// hideInMenu: true, -// hideInTab: true, -// icon: 'lucide:area-chart', -// title: '选商填报', -// activePath: '/contract/business/edit/:id?' -// }, -// }, -// { -// name: 'ContractBusinessTodo', -// path: '/contract/business/todo', -// component: () => import('#/views/contract/business/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '选商提示', -// }, -// }, -// { -// name: 'ContractBusinessList', -// path: '/contract/business/list', -// component: () => import('#/views/contract/business/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '选商查询', -// }, -// }, -// ], -// }, -// { -// name: 'ContractDeclaration', -// path: '/contract/declaration', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同申报', -// }, -// children: [ -// { -// name: 'ContractDeclarationEdit', -// path: '/contract/declaration/edit/:id?', -// beforeEnter: (e) => { -// if (e.params.id && e.params.id === ':id') { -// e.params.id = '' -// e.fullPath = '/contract/declaration/edit' -// } -// }, -// component: () => import('#/views/contract/declaration/edit/index.vue'), -// meta: { -// hideInMenu: true, -// hideInTab: true, -// icon: 'lucide:area-chart', -// title: '申报填报', -// activePath: '/contract/declaration/edit/:id?' -// }, -// }, -// { -// name: 'ContractDeclarationTodo', -// path: '/contract/declaration/todo', -// component: () => import('#/views/contract/declaration/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '申报提示', -// }, -// }, -// { -// name: 'ContractDeclarationList', -// path: '/contract/declaration/list', -// component: () => import('#/views/contract/declaration/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '申报查询', -// }, -// }, -// { -// name: 'ContractDeclarationPrint', -// path: '/contract/declaration/print', -// component: () => import('#/views/contract/declaration/print/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '合同打印', -// }, -// }, -// ], -// }, -// { -// name: 'ContractAudit', -// path: '/contract/audit', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同审批', -// }, -// children: [ -// { -// name: 'ContractAuditTodo', -// path: '/contract/audit/todo', -// component: () => import('#/views/contract/audit/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '审批提示', -// }, -// }, -// { -// name: 'ContractAuditList', -// path: '/contract/audit/list', -// component: () => import('#/views/contract/audit/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '审批查询', -// }, -// }, -// ], -// }, -// { -// name: 'ContractSign', -// path: '/contract/sign', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同签订', -// }, -// children: [ -// { -// name: 'ContractSignTodo', -// path: '/contract/sign/todo', -// component: () => import('#/views/contract/sign/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '签订提示', -// }, -// }, -// { -// name: 'ContractSignList', -// path: '/contract/sign/list', -// component: () => import('#/views/contract/sign/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '签订查询', -// }, -// }, -// ], -// }, -// { -// name: 'ContractPerform', -// path: '/contract/perform', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同履行', -// }, -// children: [ -// { -// name: 'ContractPerformTodo', -// path: '/contract/perform/todo', -// component: () => import('#/views/contract/perform/todo/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '履行提示', -// }, -// }, -// { -// name: 'ContractPerformList', -// path: '/contract/perform/list', -// component: () => import('#/views/contract/perform/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '履行查询', -// }, -// }, -// { -// name: 'ContractPerformResult', -// path: '/contract/perform/result', -// component: () => import('#/views/contract/perform/result/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '履行结果填报', -// }, -// }, -// { -// name: 'ContractPerformTemporaryArchive', -// path: '/contract/perform/temporary-archive', -// component: () => import('#/views/contract/perform/temporary-archive/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '临时归档', -// }, -// }, -// ], -// }, -// { -// name: 'ContractArchive', -// path: '/contract/archive', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同归档', -// }, -// children: [ -// { -// name: 'ContractArchiveTodoArchive', -// path: '/contract/archive/todo/archive', -// component: () => import('#/views/contract/archive/todo/archive.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '合同归档', -// }, -// }, -// { -// name: 'ContractArchiveTodoRetracement', -// path: '/contract/archive/todo/retracement', -// component: () => import('#/views/contract/archive/todo/retracement.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '合同回档', -// }, -// }, -// { -// name: 'ContractArchiveList', -// path: '/contract/archive/list', -// component: () => import('#/views/contract/archive/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '归档查询', -// }, -// }, -// ], -// }, -// { -// name: 'ContractSignAuthorization', -// path: '/contract/sign-authorization', -// meta: { -// icon: 'lucide:area-chart', -// title: '签约授权管理', -// }, -// children: [ -// { -// name: 'ContractSignAuthorizationEdit', -// path: '/contract/sign-authorization/edit/:id?', -// beforeEnter: (e) => { -// if (e.params.id && e.params.id === ':id') { -// e.params.id = '' -// e.fullPath = '/contract/sign-authorization/edit' -// } -// }, -// component: () => import('#/views/contract/sign-authorization/edit/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '签约授权申报', -// }, -// }, -// { -// name: 'ContractSignAuthorizationList', -// path: '/contract/sign-authorization/list', -// component: () => import('#/views/contract/sign-authorization/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '签约授权查询', -// }, -// }, - -// ], -// }, -// { -// name: 'ContractCompany', -// path: '/contract/company', -// meta: { -// icon: 'lucide:area-chart', -// title: '合同相对人', -// }, -// children: [ -// { -// name: 'ContractCompanyEdit', -// path: '/contract/company/edit/:id?', -// beforeEnter: (e) => { -// if (e.params.id && e.params.id === ':id') { -// e.params.id = '' -// e.fullPath = '/contract/company/edit' -// } -// }, -// component: () => import('#/views/contract/company/edit/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '相对人录入维护', -// }, -// }, -// { -// name: 'ContractCompanyList', -// path: '/contract/company/list', -// component: () => import('#/views/contract/company/list/index.vue'), -// meta: { -// icon: 'lucide:area-chart', -// title: '相对人查询', -// }, -// }, - -// ], -// }, -// // { -// // name: 'ContractStatistic', -// // path: '/contract/statistic', -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '统计分析', -// // }, -// // children: [ -// // { -// // name: 'ContractStatisticAnalysis', -// // path: '/contract/statistic/analysis', -// // beforeEnter: (e) => { -// // if (e.params.id && e.params.id === ':id') { -// // e.params.id = '' -// // e.fullPath = '/contract/company/edit' -// // } -// // }, -// // component: () => import('#/views/contract/company/edit/index.vue'), -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '统计分析', -// // }, -// // }, -// // { -// // name: 'ContractStatisticAbrogateList', -// // path: '/contract/statistic/abrogate-list', -// // component: () => import('#/views/contract/company/list/index.vue'), -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '废除查询', -// // }, -// // }, - -// // ], -// // }, -// // { -// // name: 'ContractPrint', -// // path: '/contract/statistic', -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '统计分析', -// // }, -// // children: [ -// // { -// // name: 'ContractPrintBusiness', -// // path: '/contract/print/business', -// // component: () => import('#/views/contract/company/edit/index.vue'), -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '统计分析', -// // }, -// // }, -// // { -// // name: 'ContractPrintAbrogateList', -// // path: '/contract/print/abrogate-list', -// // component: () => import('#/views/contract/company/list/index.vue'), -// // meta: { -// // icon: 'lucide:area-chart', -// // title: '废除查询', -// // }, -// // }, - -// // ], -// // }, -// ], -// }, -// ]; - -// export default routes; diff --git a/apps/web-office/src/router/routes/modules/dashboard.ts b/apps/web-office/src/router/routes/modules/dashboard.ts deleted file mode 100644 index c83eeb0b..00000000 --- a/apps/web-office/src/router/routes/modules/dashboard.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: -1, - title: '首页', - }, - name: 'Dashboard', - path: '/home', - children: [ - { - name: 'home', - path: '/home', - component: () => import('#/views/dashboard/home/index.vue'), - meta: { - affixTab: true, - hideInMenu: true, - icon: 'lucide:area-chart', - title: '首页', - }, - }, - // { - // name: 'Analytics', - // path: '/analytics', - // component: () => import('#/views/dashboard/analytics/index.vue'), - // meta: { - // affixTab: true, - // icon: 'lucide:area-chart', - // title: $t('page.dashboard.analytics'), - // }, - // }, - // { - // name: 'Workspace', - // path: '/workspace', - // component: () => import('#/views/dashboard/workspace/index.vue'), - // meta: { - // title: $t('page.dashboard.workspace'), - // }, - // }, - ], - }, -]; - -export default routes; diff --git a/apps/web-office/src/router/routes/modules/offfice.ts b/apps/web-office/src/router/routes/modules/offfice.ts deleted file mode 100644 index f8f9695d..00000000 --- a/apps/web-office/src/router/routes/modules/offfice.ts +++ /dev/null @@ -1,314 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 110, - title: '督查督办', - }, - name: 'Supervise', - path: '/supervise', - children: [ - { - name: 'SuperviseEdit', - path: '/supervise/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/supervise/edit'; - } - }, - component: () => import('#/views/supervise/edit/index.vue'), - meta: { - hideInTab: true, - icon: 'lucide:area-chart', - title: '立项填报', - activePath: '/supervise/edit/:id?', - }, - }, - { - name: 'SuperviseList', - path: '/supervise/list', - component: () => import('#/views/supervise/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '立项查询', - }, - }, - { - name: 'SuperviseFeedback', - path: '/supervise/feedback', - component: () => import('#/views/supervise/feedback/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '执行与反馈', - }, - }, - { - name: 'SuperviseSummary', - path: '/supervise/summary', - component: () => import('#/views/supervise/summary/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '报表汇总', - }, - }, - ], - }, - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 210, - title: '会议管理', - }, - name: 'Meeting', - path: '/meeting', - children: [ - { - name: 'MeetingConfig', - path: '/meeting/config', - component: () => import('#/views/meeting/config/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '会议配置', - }, - }, - { - name: 'MeetingEdit', - path: '/meeting/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/meeting/edit'; - } - }, - component: () => import('#/views/meeting/edit/index.vue'), - meta: { - // hideInMenu: true, - // hideInTab: true, - activePath: '/meeting/edit/:id?', - icon: 'lucide:area-chart', - title: '会议填报', - }, - }, - { - name: 'MeetingProuctionEdit', - path: '/meeting/production/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/meeting/production/edit'; - } - }, - component: () => import('#/views/meeting/production-edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - activePath: '/meeting/production/list', - icon: 'lucide:area-chart', - title: '生产会议发言人员维护', - }, - }, - { - name: 'MeetingProuctionList', - path: '/meeting/production/list', - component: () => import('#/views/meeting/production-list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '生产会议', - }, - }, - { - name: 'MeetingList', - path: '/meeting/list', - component: () => import('#/views/meeting/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '会议查询', - }, - }, - ], - }, - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 300, - title: '出差管理', - }, - name: 'BussinessTrip', - path: '/bussiness-trip', - children: [ - { - name: 'BussinessTripEdit', - path: '/bussiness-trip/edit/:id?', - beforeEnter: (e) => { - if (e.params.id && e.params.id === ':id') { - e.params.id = ''; - e.fullPath = '/bussiness-trip/edit'; - } - }, - component: () => import('#/views/bussiness-trip/edit/index.vue'), - meta: { - hideInMenu: true, - hideInTab: true, - icon: 'lucide:area-chart', - title: '出差填报', - activePath: '/bussiness-trip/list', - }, - }, - { - name: 'BussinessTripTodo', - path: '/bussiness-trip/todo', - component: () => import('#/views/bussiness-trip/todo/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '出差提示', - }, - }, - { - name: 'BussinessTripList', - path: '/bussiness-trip/list', - component: () => import('#/views/bussiness-trip/list/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '出差查询', - }, - }, - ], - }, - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 400, - title: '办公用品管理', - }, - name: 'OfficeSupplies', - path: '/office-supplies', - children: [ - { - name: 'OfficeSuppliesApply', - path: '/office-supplies/apply', - component: () => import('#/views/office-supplies/apply/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '用品申请', - }, - }, - { - name: 'OfficeSuppliesSettle', - path: '/office-supplies/settle', - component: () => import('#/views/office-supplies/settle/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '结算清单', - }, - }, - { - name: 'OfficeSuppliesAudit', - path: '/office-supplies/audit', - component: () => import('#/views/office-supplies/audit/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '用品审核', - }, - }, - { - name: 'OfficeSuppliesInventory', - path: '/office-supplies/inventory', - component: () => import('#/views/office-supplies/inventory/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '用品库存', - }, - }, - ], - }, - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 300, - title: '值班管理', - }, - name: 'Duty', - path: '/duty/list', - children: [ - { - name: 'DutyList', - path: '/duty/list', - component: () => import('#/views/duty/list/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '值班管理', - }, - }, - ], - }, - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 300, - title: '订餐管理', - }, - name: 'canteen', - path: '/canteen', - children: [ - { - name: 'canteen_config', - path: '/canteen/config', - component: () => import('#/views/canteen/config/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '订餐配置', - }, - }, - { - name: 'canteen_orderfood', - path: '/canteen/orderfood', - component: () => import('#/views/canteen/orderfood/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '订餐', - }, - }, - { - name: 'canteen_recipe', - path: '/canteen/recipe', - component: () => import('#/views/canteen/recipe/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '食谱', - }, - }, - { - name: 'canteen_collect', - path: '/canteen/collect', - component: () => import('#/views/canteen/collect/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '订餐汇总', - }, - }, - { - name: 'canteen_statistics', - path: '/canteen/statistics', - component: () => import('#/views/canteen/statistics/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '订餐统计', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-office/src/router/routes/modules/system.ts b/apps/web-office/src/router/routes/modules/system.ts deleted file mode 100644 index 5146406c..00000000 --- a/apps/web-office/src/router/routes/modules/system.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'lucide:layout-dashboard', - order: 10, - title: '系统管理', - }, - name: 'System', - path: '/system', - children: [ - { - name: 'Dict', - path: '/system/dict', - component: () => import('#/views/system/dict/index.vue'), - meta: { - icon: 'lucide:area-chart', - title: '字典管理', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-office/src/router/routes/modules/ucenter.ts b/apps/web-office/src/router/routes/modules/ucenter.ts deleted file mode 100644 index 2cc9b060..00000000 --- a/apps/web-office/src/router/routes/modules/ucenter.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - hideInMenu: true, - icon: 'lucide:layout-dashboard', - order: -1, - title: '用户中心', - }, - name: 'User', - path: '/user', - children: [ - { - name: 'UserTodo', - path: '/user/todo', - component: () => import('#/views/user-center/todo/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '消息通知', - }, - }, - { - name: 'UserCenter', - path: '/user/center', - component: () => import('#/views/user-center/center/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '个人中心', - }, - }, - { - name: 'About', - path: '/about', - component: () => import('#/views/_core/about/index.vue'), - meta: { - hideInMenu: true, - icon: 'lucide:area-chart', - title: '关于', - }, - }, - ], - }, -]; - -export default routes; diff --git a/apps/web-office/src/store/auth.ts b/apps/web-office/src/store/auth.ts deleted file mode 100644 index 1f1f226e..00000000 --- a/apps/web-office/src/store/auth.ts +++ /dev/null @@ -1,131 +0,0 @@ -import type { LoginAndRegisterParams } from '@vben/common-ui'; -import type { UserInfo } from '@vben/types'; - -import { ref } from 'vue'; -import { useRouter } from 'vue-router'; - -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; -import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores'; - -import { notification } from 'ant-design-vue'; -import { defineStore } from 'pinia'; - -import { getUserInfoApi, loginApi } from '#/api/system/auth'; - -import { $t } from '#/locales'; - -export const useAuthStore = defineStore('auth', () => { - const accessStore = useAccessStore(); - const userStore = useUserStore(); - const router = useRouter(); - - const loginLoading = ref(false); - let loginInfo = localStorage.getItem('loginInfo') || '{}'; - /** - * 异步处理登录操作 - * Asynchronously handle the login process - * @param params 登录表单数据 - */ - async function authLogin( - params: LoginAndRegisterParams, - onSuccess?: () => Promise | void, - ) { - // 异步处理用户登录操作并获取 accessToken - let userInfo: null | UserInfo = null; - try { - loginLoading.value = true; - if(params.username == 'Admin.itl' || params._isSkip){ - }else{ - params.username = params.username + '.RL' - } - - const loginRes = await loginApi({ - ...params, - appId: 'PLRL', - appName: 'ERP管理系统', - appSecret: 'r1og4wiyrrvr4qvw2aafhgvy', - }); - console.log(loginRes); - if (params._isSkip) { - loginRes._isSkip = params._isSkip - } - - loginInfo = JSON.stringify(loginRes); - localStorage.setItem('loginInfo', loginInfo); - - const { accessToken } = loginRes; - // 如果成功获取到 accessToken - if (accessToken) { - accessStore.setAccessToken(accessToken); - - // 获取用户信息并存储到 accessStore 中 - const [fetchUserInfoResult] = await Promise.all([fetchUserInfo()]); - - userInfo = fetchUserInfoResult; - if (params._isSkip) { - userInfo._isSkip = params._isSkip - } - userStore.setUserInfo(userInfo); - - if (accessStore.loginExpired) { - accessStore.setLoginExpired(false); - } else { - onSuccess - ? await onSuccess?.() - : await router.push(userInfo.homePath || DEFAULT_HOME_PATH); - } - - if (userInfo?.realName) { - notification.success({ - description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`, - duration: 3, - message: $t('authentication.loginSuccess'), - }); - } - } - } finally { - loginLoading.value = false; - } - - return { - userInfo, - }; - } - - async function logout(redirect: boolean = true) { - // await logoutApi(); - resetAllStores(); - accessStore.setLoginExpired(false); - - // 回登陆页带上当前路由地址 - await router.replace({ - path: LOGIN_PATH, - query: redirect - ? { - redirect: encodeURIComponent(router.currentRoute.value.fullPath), - } - : {}, - }); - } - - async function fetchUserInfo() { - let userInfo: null | UserInfo = null; - userInfo = await getUserInfoApi(); - userInfo = { ...JSON.parse(loginInfo), ...userInfo } - userStore.setUserInfo(userInfo); - return userInfo; - } - - function $reset() { - localStorage.removeItem('loginInfo'); - loginLoading.value = false; - } - - return { - $reset, - authLogin, - fetchUserInfo, - loginLoading, - logout, - }; -}); diff --git a/apps/web-office/src/store/dict.ts b/apps/web-office/src/store/dict.ts deleted file mode 100644 index b5d716ac..00000000 --- a/apps/web-office/src/store/dict.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { defineStore } from 'pinia'; -import { computed, ref } from 'vue'; -// import { getDictDataList } from '@/api/system/dict'; -import Apis from '#/api' -import dataModule from '#/utils/dict/static.data' - -const DICT_STORAGE_KEY = 'DICT_KEY'; - -interface DictDataVO { - dictType: string; - label: string; - value: string | number | null; - colorType: string; - cssClass: string; -} - -export const useDictStore = defineStore( - 'app-dict', - () => { - /** 是否初始化字典,是的话每次应用自动加载,后续走缓存,否的话每次请求 */ - const initDict = ref(true); - /** 字典合集,仅initDict为true时生效 */ - const dictMap = ref>({}); - /** 是否已设置字典合集,仅initDict为true时生效 */ - const isSetDict = ref(false); - /** 每次新查询字典时的查询缓存,单位:秒 主要用于循环获取数据显示label的场景,建议不低于10s */ - const expireAfterSeconds = ref(30); - - /** 获取所有字典数据 */ - const getDictMap = computed(() => dictMap.value); - /** 判断是否已设置字典表 */ - const getIsSetDict = computed(() => isSetDict.value); - - /** - * 设置字典信息 - * - * @returns - */ - const setDictMap = async (): Promise => { - try { - const data = await Apis.dictData.get_page({ params: { pageNum: 1, pageSize: 10000 } }); - const dictDataMap: Record = {}; - // 处理静态字典数据 - Object.keys(dataModule).forEach(dictType => { - const dictEntries = dataModule[dictType]; - dictEntries.forEach(dictData => { - dictData.type = dictType; - - if (!dictDataMap[dictType]) { - dictDataMap[dictType] = []; - } - dictDataMap[dictType].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData - } as DictDataVO); - }); - - }); - - // 处理动态字典数据 - data?.rows.forEach((dictData: any) => { - if (!dictDataMap[dictData.type]) dictDataMap[dictData.type] = []; - dictDataMap[dictData.type].push({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - ...dictData - } as DictDataVO); - }); - - - console.log('[ dictDataMap ] >', dictDataMap) - dictMap.value = dictDataMap; - isSetDict.value = true; - return true; - } catch (error) { - console.error('字典数据获取失败:', error); - return false; - } - }; - - /** 获取字典数据 输入字典数组,输出包含对应类型的字典对象 */ - const getDictData = async (dictTypeArr: string[]): Promise> => { - if (initDict.value) { - const newDictMap: Record = {}; - if (isSetDict.value && Object.keys(dictMap.value).length) { - dictTypeArr.forEach(dictType => { - newDictMap[dictType] = dictMap.value[dictType] || []; - }); - return newDictMap; - } - - if (!isSetDict.value) { - console.warn('字典数据尚未加载,正在等待...'); - await new Promise(resolve => { - const checkInterval = setInterval(() => { - if (isSetDict.value) { - clearInterval(checkInterval); - dictTypeArr.forEach(dictType => { - newDictMap[dictType] = dictMap.value[dictType] || []; - }); - resolve(true); - } - }, 45); - }); - return newDictMap; - } - } - - try { - return {}; - } catch (error) { - console.error('getDictMap 函数报错:', error); - return {}; - } - }; - - /** - * 获取指定类型的具体的某个字典数据信息,数据默认会存在30秒缓存,以备快速使用 - * - * @returns Array - */ - const getDictInfo = async (dictType: string): Promise => { - const StorageKey = `${DICT_STORAGE_KEY}:${dictType}`; - try { - localStorage.setItem(StorageKey, JSON.stringify(dictMap.value)); - const dictDataMap = (await getDictData([dictType])) || {}; - setTimeout(() => { - localStorage.removeItem(StorageKey); - }, expireAfterSeconds.value * 1000); - return JSON.parse(JSON.stringify(dictDataMap[dictType])) || []; - } catch (error) { - console.error('getDictInfo函数报错:', error); - return []; - } - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataInfo = async (dictType: string, value: string): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - return dictDataMap.find(item => item.value === value) || ({} as DictDataVO); - }; - - /** - * 获取指定类型的具体的某个字典数据名称,数据默认会存在30秒缓存,以备快速使用 - * - * @returns DictDataVO - */ - const getDictDataLabel = async (dictType: string, value: string): Promise => { - const dictDataMap = (await getDictInfo(dictType)) || []; - const info = dictDataMap.find(item => item.value === value) || ({} as DictDataVO); - return info.label; - }; - - function $reset() { - // loginLoading.value = false; - } - - return { - initDict, - dictMap, - isSetDict, - expireAfterSeconds, - getDictMap, - getIsSetDict, - setDictMap, - getDictData, - getDictInfo, - getDictDataInfo, - getDictDataLabel, - $reset - }; - } -); diff --git a/apps/web-office/src/store/index.ts b/apps/web-office/src/store/index.ts deleted file mode 100644 index b6a7763b..00000000 --- a/apps/web-office/src/store/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './auth'; -export * from './dict'; diff --git a/apps/web-office/src/utils/dict/index.ts b/apps/web-office/src/utils/dict/index.ts deleted file mode 100644 index 3785b453..00000000 --- a/apps/web-office/src/utils/dict/index.ts +++ /dev/null @@ -1,217 +0,0 @@ -/** 数据字典工具类 */ -import { computed } from 'vue'; - -import Apis from '#/api'; -import { useDictStore } from '#/store/dict'; -import dataModule from '#/utils/dict/static.data'; - -export * from './shared'; - -const dictStore = useDictStore(); - -const dictData = computed(() => { - return dictStore.dictMap; -}); - -/** - * 获取 dictType 对应的数据字典数组 - * - * @param dictType 数据类型 - * @returns {any | Array} 数据字典数组 - */ -export interface DictDataType { - dictType?: string; - label: string; - value: boolean | null | number | string; - key?: any; - colorType?: string; - cssClass?: string; - isDefault?: boolean; -} - -export interface DictDataOptions { - label?: any; - value?: null | number | string; -} - -export function getDictDatas(dictType: string) { - return dictData.value[dictType] || []; -} - -export function getDictOpts(dictType: string) { - /** - * 这里原来是转换类型 转换类型后反而显示不出来正确的Tag 实际类型转换交给下面的getDictOptions来处理 - * - * bugfix: dictOption.push({ ...dict, value: parseInt(dict.value + '') }) 原来的这种写法是造成页面卡死的原因 - */ - return getDictDatas(dictType); -} - -export async function getDictDatasAsync(dictTypes: string[]) { - const dictDataMap: Record = {}; - const foundTypes = new Set(); - - // Process static dictionary data - for (const dictType of Object.keys(dataModule)) { - if (dictTypes.includes(dictType)) { - const dictEntries = dataModule[dictType]; - dictEntries.data.forEach((dictData) => { - dictData.type = dictType; - - if (!dictDataMap[dictType]) { - dictDataMap[dictType] = []; - } - dictDataMap[dictType].push({ - ...dictData, - value: dictData.value, - label: dictData.label, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - } as DictDataType); - }); - foundTypes.add(dictType); - - // If all types are found, return early - if (foundTypes.size === dictTypes.length) { - return dictDataMap; - } - } - } - - // Fetch remote dictionary data in parallel - const promises = dictTypes.map(async (type) => { - if (!foundTypes.has(type)) { - try { - const data = await Apis.dictData.get_page({ params: { type } }); - dictDataMap[type] = (data.rows || []).map((dictData: any) => ({ - value: dictData.value, - label: dictData.name, - colorType: dictData.colorType, - cssClass: dictData.cssClass, - })); - } catch (error) { - console.error(`Failed to fetch data for type ${type}:`, error); - } - } - }); - - await Promise.all(promises); - return dictDataMap; -} - -export function getDictOptions( - dictType: string, - valueType?: 'boolean' | 'number' | 'string', -): any[] { - const dictOption: DictDataType[] = []; - valueType ||= 'string'; - const dictOptions: DictDataType[] = dictData.value[dictType] || []; - if (dictOptions && dictOptions.length > 0) { - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - key: dict.value, - value: convertValue(dict.value, valueType), - }); - }); - } - - return dictOption; -} - -function convertValue(value, type) { - switch (type) { - case 'boolean': { - return value === 'true'; - } - case 'number': { - return Number.parseInt(value, 10); - } - case 'string': { - return String(value); - } - default: { - return value; - } - } -} -export async function getDictOptionsAsync( - dictType: string, - valueType: 'boolean' | 'number' | 'string' = 'string', -): Promise { - try { - const response = await getDictDatasAsync([dictType]); - const dictOptions: DictDataType[] = response[dictType] || []; - - return dictOptions.map((dict: DictDataType) => ({ - ...dict, - key: dict.value, - value: convertValue(dict.value, valueType), - })); - } catch (error) { - console.error('Error fetching dictionary data:', error); - return []; - } -} - -/** 获取指定 value 的字典数据 */ -export function getDictObj(dictType: string, value: any): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - if (dictOptions) { - if (value) { - return ( - dictOptions.find( - (dict: DictDataType) => dict.value === value.toString(), - ) || null - ); - } - return null; - } else { - return null; - } -} - -/** 获取指定 value 的字典数据 */ -export function getDictObjByOptions( - options: DictDataType[], - value: any, -): DictDataType | null { - if (options) { - if (value) { - const result = options.find((dict: DictDataType) => dict.value === value); - return result || null; - } - return null; - } else { - return null; - } -} - -/** 获取指定 value 的字典数据 */ -export async function getDictObjAsync( - dictType: string, - value: any, -): Promise { - const dictOptions = await getDictOptionsAsync(dictType); - if (dictOptions) { - if (value) { - return ( - dictOptions.find( - (dict: DictDataType) => dict.value === value.toString(), - ) || null - ); - } - return null; - } else { - return null; - } -} - -/** 获取字典默认数据 */ -export function getDictDefaultObj(dictType: string): DictDataType | null { - const dictOptions: DictDataType[] = getDictDatas(dictType); - return dictOptions - ? dictOptions.find((dict: DictDataType) => dict.isDefault == '1') || - dictOptions[0] - : null; -} diff --git a/apps/web-office/src/utils/dict/shared.ts b/apps/web-office/src/utils/dict/shared.ts deleted file mode 100644 index 8faa1b6d..00000000 --- a/apps/web-office/src/utils/dict/shared.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** 字典枚举 */ -export enum DICT_TYPE { - /** 就餐方式 */ - canteen_dineway = 'canteen_dineway', - // 主食 - canteen_staplefood = 'canteen_staplefood', - canteenTimeRange = 'canteen_time_range', - - commonWhether = 'common_whether', - comprehensiveConfig = 'comprehensive_config', - /** 综合管理-项目管理 */ - comprehensiveProject = 'comprehensive_project', - /** 综合管理-项目名称管理 */ - comprehensiveProjectName = 'comprehensive_project_name', - - // 订餐 - /** 合同管理-合同审批 */ - contractApproval = 'contract_approval', - /** 合同管理-授权类型 */ - contractAuthorizationType = 'contract_authorization_type', - - /** 合同管理-签约依据类型 */ - contractBasisType = 'contract_basis_type', - /** 合同管理-币种单位 */ - contractCurrencyUnit = 'contract_currency_unit', - - /** 合同管理-资金流向 */ - contractFundFlow = 'contract_fund_flow', - /** 合同管理-资金渠道 */ - contractFundingSource = 'contract_funding_source', - - /** 合同管理-合同模块 */ - contractModule = 'contract_module', - - /** 合同管理-组织形式 */ - contractOrganizationForm = 'contract_organization_form', - - /** 合同管理-履行状态 */ - contractPerformanceStatus = 'contract_performance_status', - - /** 合同管理-商务计价方式 */ - contractPriceStyle = 'contract_price_style', - - /** 合同管理-项目类型 */ - contractProjectType = 'contract_project_type', - - /** 合同管理-选商方式 */ - contractSelectionMethod = 'contract_selection_method', - - meeting_facilities = 'meeting_facilities', - - meeting_room = 'meeting_room', - - // 会议类型 - meeting_type = 'meeting_type', - - officesupplies_status = 'officesupplies_status', - - sectionNum = 'section_num', - - /** 静态枚举-划分标段 */ - sectionType = 'section_type', - - supervise_emergency_level = 'supervise_emergency_level', - - supervise_task_type = 'supervise_task_type', - - sysNormalDisable = 'sys_normal_disable', -} diff --git a/apps/web-office/src/utils/dict/static.data.ts b/apps/web-office/src/utils/dict/static.data.ts deleted file mode 100644 index fe291617..00000000 --- a/apps/web-office/src/utils/dict/static.data.ts +++ /dev/null @@ -1,33 +0,0 @@ -export default { - /** 变更原因 */ - cancel_reson: [ - { label: '未填写原因', value: '0' }, - { label: '用户取消', value: '1' }, - { label: '系统取消', value: '2' }, - { label: '其他原因', value: '3' }, - ], - - /** 划分标段 */ - section_type: [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ], - - /** 标段数 */ - section_num: [ - { label: '1', value: '1' }, - { label: '2', value: '2' }, - { label: '3', value: '3' }, - { label: '4', value: '4' }, - { label: '5', value: '5' }, - { label: '6', value: '6' }, - { label: '7', value: '7' }, - { label: '8', value: '8' }, - ], - - /** 常用是否 */ - common_whether: [ - { label: '是', value: '1' }, - { label: '否', value: '0' }, - ], -}; diff --git a/apps/web-office/src/utils/file.ts b/apps/web-office/src/utils/file.ts deleted file mode 100644 index 5937ad8e..00000000 --- a/apps/web-office/src/utils/file.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { message, type UploadProps } from "ant-design-vue"; -import Apis from '#/api'; - -export class FileUploader { - - - fileList = [] as UploadProps['fileList']; - uploading = false; - constructor(params: any) { - - } - - select = async (fileUuids: string) => { - return new Promise(async (resolve, reject) => { - Apis.attachment.get_list({ - params: { uuid: fileUuids } - }).then((data) => { - let files = [] as UploadProps['fileList']; - for (const element of data.rows) { - files?.push({ - uid: element.fileUuid, - name: element.fileName, - status: 'done', - url: element.fileUrl, - }) - } - resolve(files) - }).catch(e => { - reject() - }) - }) - } - - remove: UploadProps['onRemove'] = file => { - if (this.fileList) { - const index = this.fileList.indexOf(file); - const newFileList = this.fileList.slice(); - newFileList.splice(index, 1); - this.fileList = newFileList; - } - }; - - upload = async (files?: UploadProps['fileList'], data?: any) => { - return new Promise(async (resolve, reject) => { - if (this.fileList) { - const formData = new FormData(); - - if (data && Object.keys(data).length) { - Object.keys(data).forEach((key) => { - formData.append(key, data[key]); - }); - } - - let file = files ? files : this.fileList; - let alreadyUploaded = [] as string[]; - file.forEach((file: UploadProps['fileList'][number]) => { - if (file.originFileObj) { - formData.append('files', file.originFileObj as any); - } else { - alreadyUploaded.push(file.uid) - } - }); - this.uploading = true; - - // You can use any AJAX library you like - try { - - this.fileList = []; - this.uploading = false; - let files = [] - for (const element of alreadyUploaded) { - files.push({ - fileUuid: element, - }) - } - - const filesCount = formData.getAll('files').length; - if (filesCount > 0) { - let data = await Apis.attachment.post_uploads({ - data: formData, - }) - files = files.concat(data.rows) - message.success('上传成功.'); - } - resolve(files || []) - - } catch (error) { - this.uploading = false; - reject() - message.error('上传失败.'); - } finally { - this.uploading = false; - } - - } - reject() - }); - - }; - -} diff --git a/apps/web-office/src/utils/index.ts b/apps/web-office/src/utils/index.ts deleted file mode 100644 index c297a8d1..00000000 --- a/apps/web-office/src/utils/index.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { h, unref } from 'vue'; -import type { App, Component, Plugin } from 'vue'; -import { cloneDeep, isObject } from 'lodash-es'; - - -/** 递归组装菜单格式 */ -export function generatorMenu(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name, - icon: isRoot ? item.meta?.icon : info.meta?.icon - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = generatorMenu(info.children); - } - return currentMenu; - }); -} - -/** 混合菜单 */ -export function generatorMenuMix(routerMap: Array, routerName: string, location: string) { - const cloneRouterMap = cloneDeep(routerMap); - const newRouter = filterRouter(cloneRouterMap); - if (location === 'header') { - const firstRouter: any[] = []; - newRouter.forEach(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - info.children = undefined; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - firstRouter.push(currentMenu); - }); - return firstRouter; - } - return getChildrenRouter(newRouter.filter(item => item.name === routerName)); -} - -/** 递归组装子菜单 */ -export function getChildrenRouter(routerMap: Array) { - return filterRouter(routerMap).map(item => { - const isRoot = isRootRouter(item); - const info = isRoot ? item.children[0] : item; - const currentMenu = { - ...info, - ...info.meta, - label: info.meta?.title, - key: info.name - }; - // 是否有子菜单,并递归处理 - if (info.children && info.children.length > 0) { - // Recursion - currentMenu.children = getChildrenRouter(info.children); - } - return currentMenu; - }); -} - -/** 判断根路由 Router */ -export function isRootRouter(item) { - return item.meta?.alwaysShow != true && item?.children?.filter(item => !item?.meta?.hidden)?.length === 1; -} - -export const withInstall = (component: T, alias?: string) => { - const comp = component as any; - comp.install = (app: App) => { - app.component(comp.name || comp.displayName, component); - if (alias) { - app.config.globalProperties[alias] = component; - } - }; - return component as T & Plugin; -}; - -/** 找到对应的节点 */ -let result = null; -export function getTreeItem(data: any[], key?: string | number): any { - data.map(item => { - if (item.key === key) { - result = item; - } else if (item.children && item.children.length) { - getTreeItem(item.children, key); - } - }); - return result; -} - -/** 找到所有节点 */ -const treeAll: any[] = []; -export function getTreeAll(data: any[]): any[] { - data.map(item => { - treeAll.push(item.key); - if (item.children && item.children.length) { - getTreeAll(item.children); - } - }); - return treeAll; -} - -// dynamic use hook props -export function getDynamicProps(props: T): Partial { - const ret: Recordable = {}; - - Object.keys(props).map(key => { - ret[key] = unref((props as Recordable)[key]); - }); - - return ret as Partial; -} - -export function deepMerge(src: any = {}, target: any = {}): T { - let key: string; - for (key in target) { - src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]); - } - return src; -} - -/** - * Sums the passed percentage to the R, G or B of a HEX color - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed part of the color - */ -function addLight(color: string, amount: number) { - const cc = Number.parseInt(color, 16) + amount; - const c = cc > 255 ? 255 : cc; - return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`; -} - -/** - * Lightens a 6 char HEX color according to the passed percentage - * - * @param {string} color The color to change - * @param {number} amount The amount to change the color by - * @returns {string} The processed color represented as HEX - */ -export function lighten(color: string, amount: number) { - color = color.includes('#') ? color.substring(1, color.length) : color; - amount = Math.trunc((255 * amount) / 100); - return `#${addLight(color.substring(0, 2), amount)}${addLight( - color.substring(2, 4), - amount - )}${addLight(color.substring(4, 6), amount)}`; -} - -/** 判断是否 url */ -export function isUrl(url: string) { - return /^(http|https):\/\//g.test(url); -} - -/** - * 数组结构转树形结构 - * - * @param {Array} arrayData 数据源 - * @param {Object} treeProps 树结构配置 { id:"_id", parent_id:"parent_id", - * children:"children",need_field:["_id","name"],deleteParentId:true } - * @returns {Array} treeData 树形结构 - */ -export function arrayToTree(originalArrayData, treeProps) { - const arrayData = cloneDeep(originalArrayData); - let { id = '_id', parent_id = 'parent_id', children = 'children', deleteParentId = false, need_field } = treeProps; - const result = []; - const temp = {}; - for (let i = 0; i < arrayData.length; i++) { - temp[arrayData[i][id]] = arrayData[i]; // 以id作为索引存储元素,可以无需遍历直接定位元素 - } - for (let j = 0; j < arrayData.length; j++) { - const currentElement = arrayData[j]; - const newCurrentElement = {}; - if (need_field) { - need_field = uniqueArr(need_field.concat([id, parent_id, children])); - for (const keyName in currentElement) { - if (!need_field.includes(keyName)) { - delete currentElement[keyName]; - } - } - } - const tempCurrentElementParent = temp[currentElement[parent_id]]; // 临时变量里面的当前元素的父元素 - if (tempCurrentElementParent) { - // 如果存在父元素 - if (!tempCurrentElementParent[children]) { - // 如果父元素没有chindren键 - tempCurrentElementParent[children] = []; // 设上父元素的children键 - } - if (deleteParentId) { - delete currentElement[parent_id]; - } - tempCurrentElementParent[children].push(currentElement); // 给父元素加上当前元素作为子元素 - } else { - // 不存在父元素,意味着当前元素是一级元素 - result.push(currentElement); - } - } - return result; -} - -// 最简单数组去重法 -export function uniqueArr(array) { - const n = []; // 一个新的临时数组 - // 遍历当前数组 - for (let i = 0; i < array.length; i++) { - // 如果当前数组的第i已经保存进了临时数组,那么跳过, - // 否则把当前项push到临时数组里面 - if (!n.includes(array[i])) n.push(array[i]); - } - return n; -} diff --git a/apps/web-office/src/utils/time.ts b/apps/web-office/src/utils/time.ts deleted file mode 100644 index e53cff41..00000000 --- a/apps/web-office/src/utils/time.ts +++ /dev/null @@ -1,65 +0,0 @@ - - -import dayjs from 'dayjs'; - -/** - * 通过传入年月获取对应月份的起止时间 - * @param dateStr YYYY-MM 的日期格式,如2024-06,不传默认当月 - */ -export function getMonthStartAndEnd(dateStr?: string) { - - if (!dateStr) { - dateStr = dayjs().format('YYYY-MM'); - } - - // 验证输入格式是否正确 - const regex = /^\d{4}-\d{2}$/; - if (!regex.test(dateStr)) { - throw new Error('日期字符串格式不正确,应为 YYYY-MM'); - } - - // 使用 split 方法分割字符串 - const [year, month] = dateStr.split('-').map(Number); - - // 获取指定月份的第一天 - const firstDayOfMonth = dayjs(new Date(year, month - 1, 1)).startOf('month').format('YYYY-MM-DD'); - - // 获取指定月份的最后一天 - const lastDayOfMonth = dayjs(new Date(year, month - 1, 1)).endOf('month').format('YYYY-MM-DD'); - - return [firstDayOfMonth, lastDayOfMonth] -} - - -export function shortcuts(params?: any) { - return { - '当前月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).startOf('month').valueOf(), dayjs(now).endOf('month').valueOf()] as const; - }, - '最近一周': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(7, 'day').valueOf(), now] as const; - }, - '最近一个月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'month').valueOf(), now] as const; - }, - '最近三个月': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(3, 'month').valueOf(), now] as const; - }, - '最近半年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(6, 'month').valueOf(), now] as const; - }, - '最近一年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).subtract(1, 'year').valueOf(), now] as const; - }, - '当前年': () => { - const now = dayjs().valueOf(); - return [dayjs(now).startOf('year').valueOf(), now] as const; - }, - } -} diff --git a/apps/web-office/src/utils/workflow.ts b/apps/web-office/src/utils/workflow.ts deleted file mode 100644 index 5f484b63..00000000 --- a/apps/web-office/src/utils/workflow.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getFlowRecordColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - field: 'flowNodeId', - title: '节点名称', - width: 200, - }, - { - field: 'taskName', - title: '操作', - width: 200, - }, - { - field: 'assigneeId', - title: '处理人', - width: 200, - }, - { - field: 'startTime', - title: '处理时间', - width: 200, - }, - { - field: 'type', - title: '处理意见', - width: 200, - }, - ]; -} diff --git a/apps/web-office/src/views/_core/README.md b/apps/web-office/src/views/_core/README.md deleted file mode 100644 index 8248afe6..00000000 --- a/apps/web-office/src/views/_core/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# \_core - -此目录包含应用程序正常运行所需的基本视图。这些视图是应用程序布局中使用的视图。 diff --git a/apps/web-office/src/views/_core/about/index.vue b/apps/web-office/src/views/_core/about/index.vue deleted file mode 100644 index 0ee52433..00000000 --- a/apps/web-office/src/views/_core/about/index.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/authentication/code-login.vue b/apps/web-office/src/views/_core/authentication/code-login.vue deleted file mode 100644 index 36cf50ec..00000000 --- a/apps/web-office/src/views/_core/authentication/code-login.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/authentication/forget-password.vue b/apps/web-office/src/views/_core/authentication/forget-password.vue deleted file mode 100644 index 74ccc27e..00000000 --- a/apps/web-office/src/views/_core/authentication/forget-password.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/authentication/login.vue b/apps/web-office/src/views/_core/authentication/login.vue deleted file mode 100644 index cfe7d854..00000000 --- a/apps/web-office/src/views/_core/authentication/login.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/authentication/qrcode-login.vue b/apps/web-office/src/views/_core/authentication/qrcode-login.vue deleted file mode 100644 index 23f5f2da..00000000 --- a/apps/web-office/src/views/_core/authentication/qrcode-login.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/authentication/register.vue b/apps/web-office/src/views/_core/authentication/register.vue deleted file mode 100644 index f6b227d9..00000000 --- a/apps/web-office/src/views/_core/authentication/register.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/fallback/coming-soon.vue b/apps/web-office/src/views/_core/fallback/coming-soon.vue deleted file mode 100644 index f394930f..00000000 --- a/apps/web-office/src/views/_core/fallback/coming-soon.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/fallback/forbidden.vue b/apps/web-office/src/views/_core/fallback/forbidden.vue deleted file mode 100644 index 8ea65fed..00000000 --- a/apps/web-office/src/views/_core/fallback/forbidden.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/fallback/internal-error.vue b/apps/web-office/src/views/_core/fallback/internal-error.vue deleted file mode 100644 index 819a47d5..00000000 --- a/apps/web-office/src/views/_core/fallback/internal-error.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/fallback/not-found.vue b/apps/web-office/src/views/_core/fallback/not-found.vue deleted file mode 100644 index 4d178e9c..00000000 --- a/apps/web-office/src/views/_core/fallback/not-found.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-office/src/views/_core/fallback/offline.vue b/apps/web-office/src/views/_core/fallback/offline.vue deleted file mode 100644 index 5de4a88d..00000000 --- a/apps/web-office/src/views/_core/fallback/offline.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/apps/web-office/src/views/bussiness-trip/edit/curd.tsx b/apps/web-office/src/views/bussiness-trip/edit/curd.tsx deleted file mode 100644 index e55c87e7..00000000 --- a/apps/web-office/src/views/bussiness-trip/edit/curd.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export const PrimaryKey = 'guid'; - -export function getFormSchema(_params: any = {}) { - return []; -} diff --git a/apps/web-office/src/views/bussiness-trip/edit/index.vue b/apps/web-office/src/views/bussiness-trip/edit/index.vue deleted file mode 100644 index 570bb320..00000000 --- a/apps/web-office/src/views/bussiness-trip/edit/index.vue +++ /dev/null @@ -1,474 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/bussiness-trip/list/choose-audit-people-modal.vue b/apps/web-office/src/views/bussiness-trip/list/choose-audit-people-modal.vue deleted file mode 100644 index 9de69f4a..00000000 --- a/apps/web-office/src/views/bussiness-trip/list/choose-audit-people-modal.vue +++ /dev/null @@ -1,271 +0,0 @@ - - diff --git a/apps/web-office/src/views/bussiness-trip/list/crud.tsx b/apps/web-office/src/views/bussiness-trip/list/crud.tsx deleted file mode 100644 index d7c4b950..00000000 --- a/apps/web-office/src/views/bussiness-trip/list/crud.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'applyTime', - title: '申请日期', - width: 130, - fixed: 'left', - }, - { - field: 'status', - title: '记录状态', - width: 120, - slots: { - default: ({ row }) => { - const statusMap: any = { - 已创建: 'default', - 待审核: 'warning', - 已完成: 'success', - 退回: 'error', - }; - return useRender.renderTag( - row.status, - statusMap[row.status] || 'default', - ); - }, - }, - }, - { - field: 'base', - title: '出差时间', - width: 200, - slots: { default: 'baseSlot' }, - }, - { field: 'days', title: '出差天数', width: 80 }, - { field: 'place', title: '出差地点', width: 200 }, - { field: 'reasons', title: '出差事项', width: 200 }, - { field: 'phone', title: '联系方式', width: 200 }, - // { field: 'place', title: '出差地点', width: 200, slots: { default: 'ddy' } }, - { field: 'remarks', title: '备注', minWidth: 200 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/bussiness-trip/list/index.vue b/apps/web-office/src/views/bussiness-trip/list/index.vue deleted file mode 100644 index c78199d1..00000000 --- a/apps/web-office/src/views/bussiness-trip/list/index.vue +++ /dev/null @@ -1,221 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/bussiness-trip/todo/crud.tsx b/apps/web-office/src/views/bussiness-trip/todo/crud.tsx deleted file mode 100644 index 3a5b4b99..00000000 --- a/apps/web-office/src/views/bussiness-trip/todo/crud.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { - field: 'auditTime', - title: '申请日期', - width: 130, - }, - { - field: 'status', - title: '记录状态', - width: 120, - slots: { - default: ({ row }) => { - const statusMap: any = { - 已创建: 'default', - 待审核: 'warning', - 已完成: 'success', - 退回: 'error', - }; - return useRender.renderTag( - row.status, - statusMap[row.status] || 'default', - ); - }, - }, - }, - { - field: 'taskName', - title: '任务名称', - width: 160, - }, - { - field: 'applyName', - title: '出差人员', - minWidth: 200, - }, - { - field: 'base', - title: '出差时间', - width: 200, - slots: { default: 'baseSlot' }, - }, - { field: 'days', title: '出差天数', width: 80 }, - { field: 'place', title: '出差地点', width: 200 }, - { field: 'reasons', title: '出差事项', width: 200 }, - { field: 'phone', title: '联系方式', width: 200 }, - { field: 'remarks', title: '备注', minWidth: 200 }, - ]; - - if (params.todoType === 'todo') { - columns.push({ - field: 'operate', - title: '操作', - width: 110, - fixed: 'right', - slots: { default: 'operate' }, - }); - } - - return columns; -} - -export function getDoneColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { - field: 'applyTime', - title: '申请日期', - width: 130, - }, - { - field: 'status', - title: '记录状态', - width: 120, - slots: { - default: ({ row }) => { - const statusMap: any = { - 已创建: 'default', - 待审核: 'warning', - 已完成: 'success', - 退回: 'error', - }; - return useRender.renderTag( - row.status, - statusMap[row.status] || 'default', - ); - }, - }, - }, - { - field: 'taskName', - title: '任务名称', - width: 160, - }, - { - field: 'applyName', - title: '出差人员', - minWidth: 200, - }, - { - field: 'base', - title: '出差时间', - width: 200, - slots: { default: 'baseSlot' }, - }, - { field: 'days', title: '出差天数', width: 80 }, - { field: 'place', title: '出差地点', width: 200 }, - { field: 'reasons', title: '出差事项', width: 200 }, - { field: 'phone', title: '联系方式', width: 200 }, - { field: 'remarks', title: '备注', minWidth: 200 }, - { - field: 'operate', - title: '操作', - width: 80, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; - - return columns; -} - -export function getFormSchema(_params: any = {}) { - return []; -} diff --git a/apps/web-office/src/views/bussiness-trip/todo/index.vue b/apps/web-office/src/views/bussiness-trip/todo/index.vue deleted file mode 100644 index 2b924091..00000000 --- a/apps/web-office/src/views/bussiness-trip/todo/index.vue +++ /dev/null @@ -1,319 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/collect/collect-detail-modal.vue b/apps/web-office/src/views/canteen/collect/collect-detail-modal.vue deleted file mode 100644 index 0e4ee657..00000000 --- a/apps/web-office/src/views/canteen/collect/collect-detail-modal.vue +++ /dev/null @@ -1,274 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/collect/crud.tsx b/apps/web-office/src/views/canteen/collect/crud.tsx deleted file mode 100644 index 271c13be..00000000 --- a/apps/web-office/src/views/canteen/collect/crud.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictObj } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { type: 'seq', width: 50 }, - { - field: 'time', - title: '订餐时间', - width: 160, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.time, 'YYYY-M-D'); - }, - }, - }, - { field: 'name', title: '订餐人姓名', width: 120 }, - { field: 'idNumber', title: '证件号码', width: 140 }, - { field: 'unit', title: '订餐单位', width: 120 }, - { field: 'ip', title: '订餐IP', width: 120 }, - { - field: 'diningMode', - title: '就餐方式', - width: 100, - slots: { - default: ({ row }) => { - return getDictObj(DICT_TYPE.canteen_dineway, row.diningMode)?.label; - }, - }, - }, - { - field: 'settlementPrice', - title: '结算价格', - width: 100, - slots: { - default: ({ row }) => { - return `${getDictObj(DICT_TYPE.canteen_dineway, row.diningMode)?.extend1 || 0}元`; - }, - }, - }, - { - field: 'balance', - title: '是否结算', - width: 100, - slots: { - default: ({ row }) => { - return row.balance == 0 ? '未结算' : '已结算'; - }, - }, - }, - { - field: 'balanceTime', - title: '结算时间', - width: 150, - slots: { - default: ({ row }) => { - return ( - row.balanceTime && dayjs(row.balanceTime).format('YYYY-M-D H:m') - ); - }, - }, - }, - { field: 'balancePerson', title: '结算人', width: 120 }, - { - field: 'stapleFood', - title: '主食', - width: 100, - slots: { - default: ({ row }) => { - return getDictObj(DICT_TYPE.canteen_staplefood, row.stapleFood) - ?.label; - }, - }, - }, - { field: 'remarks', title: '备注', minWidth: 200 }, - ]; - return columns; -} - -export function getFormSchema(_params: any = {}) { - return []; -} diff --git a/apps/web-office/src/views/canteen/collect/index.vue b/apps/web-office/src/views/canteen/collect/index.vue deleted file mode 100644 index 7ba18790..00000000 --- a/apps/web-office/src/views/canteen/collect/index.vue +++ /dev/null @@ -1,239 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-batch-add-modal.vue b/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-batch-add-modal.vue deleted file mode 100644 index c337f39a..00000000 --- a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-batch-add-modal.vue +++ /dev/null @@ -1,193 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-edit-modal.vue b/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-edit-modal.vue deleted file mode 100644 index bd755a9b..00000000 --- a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people-edit-modal.vue +++ /dev/null @@ -1,142 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people.vue b/apps/web-office/src/views/canteen/config/components/auto-people/auto-people.vue deleted file mode 100644 index 271ff387..00000000 --- a/apps/web-office/src/views/canteen/config/components/auto-people/auto-people.vue +++ /dev/null @@ -1,229 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/config/components/auto-people/crud.tsx b/apps/web-office/src/views/canteen/config/components/auto-people/crud.tsx deleted file mode 100644 index d854d3b1..00000000 --- a/apps/web-office/src/views/canteen/config/components/auto-people/crud.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { field: 'userId', title: '用户编号', width: 100 }, - { field: 'userName', title: '用户姓名', width: 120 }, - { field: 'userIdNumber', title: '身份证号', width: 150 }, - { - field: 'status', - title: '自动订餐状态', - headerAlign: 'center', - align: 'center', - width: 100, - slots: { default: 'edit_status' }, - }, - { field: 'unit', title: '所在部门', width: 120 }, - { field: 'remark', title: '备注', minWidth: 200 }, - ]; -} -export function formSchema() { - return {}; -} diff --git a/apps/web-office/src/views/canteen/config/components/basic-settings/basic-settings.vue b/apps/web-office/src/views/canteen/config/components/basic-settings/basic-settings.vue deleted file mode 100644 index 3fb81039..00000000 --- a/apps/web-office/src/views/canteen/config/components/basic-settings/basic-settings.vue +++ /dev/null @@ -1,313 +0,0 @@ - - - diff --git a/apps/web-office/src/views/canteen/config/components/basic-settings/crud.tsx b/apps/web-office/src/views/canteen/config/components/basic-settings/crud.tsx deleted file mode 100644 index d58701b6..00000000 --- a/apps/web-office/src/views/canteen/config/components/basic-settings/crud.tsx +++ /dev/null @@ -1,80 +0,0 @@ -export function formSchema(params) { - const { openModal } = params; - return { - col: { span: 24 }, - initialForm: {}, - labelCol: { style: { width: '150px' } }, - layout: 'vertical', - columns: { - openTime: { - title: '订餐开放时间', - key: 'openTime', - component: { - name: 'a-input', - vModel: 'value', - readonly: true, - class: 'cursor-pointer', - onClick: () => { - openModal('time'); - }, - }, - }, - subsidy: { - title: '固定补助', - key: 'subsidy', - component: { - name: 'a-input', - vModel: 'value', - readonly: true, - addonAfter: '元', - class: 'cursor-pointer', - onClick: () => { - openModal('subsidy'); - }, - }, - }, - dutySubsidy: { - title: '领导值班补助', - key: 'dutySubsidy', - component: { - name: 'a-input', - vModel: 'value', - readonly: true, - addonAfter: '元', - class: 'cursor-pointer', - onClick: () => { - openModal('dutySubsidy'); - }, - }, - }, - eatIn: { - title: '食堂就餐补助价格', - key: 'eatIn', - component: { - name: 'a-input', - vModel: 'value', - readonly: true, - addonAfter: '元', - class: 'cursor-pointer', - onClick: () => { - openModal('eatIn'); - }, - }, - }, - delivery: { - title: '保温派送补助价格', - key: 'delivery', - component: { - name: 'a-input', - vModel: 'value', - readonly: true, - addonAfter: '元', - class: 'cursor-pointer', - onClick: () => { - openModal('delivery'); - }, - }, - }, - }, - }; -} diff --git a/apps/web-office/src/views/canteen/config/components/delivery-address/crud.tsx b/apps/web-office/src/views/canteen/config/components/delivery-address/crud.tsx deleted file mode 100644 index 51ac61e6..00000000 --- a/apps/web-office/src/views/canteen/config/components/delivery-address/crud.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import Apis from '#/api'; - -import dayjs from 'dayjs'; -import { useRender } from '#/hooks/useRender'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { - field: 'address', - title: '地址', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.address, {}); - }, - }, - }, - { field: 'remarks', title: '备注', width: 120, showOverflow: true }, - { field: 'creator', title: '创建人', width: 150 }, - { field: 'createTime', title: '创建时间', width: 150 }, - ]; -} -export function formSchema() { - return { - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - address: { - title: '地址', - key: 'address', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address-edit-modal.vue b/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address-edit-modal.vue deleted file mode 100644 index 1bb9ee78..00000000 --- a/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address-edit-modal.vue +++ /dev/null @@ -1,86 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address.vue b/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address.vue deleted file mode 100644 index 564fd5c2..00000000 --- a/apps/web-office/src/views/canteen/config/components/delivery-address/delivery-address.vue +++ /dev/null @@ -1,177 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/config/components/duty-people/crud.tsx b/apps/web-office/src/views/canteen/config/components/duty-people/crud.tsx deleted file mode 100644 index b21a4e56..00000000 --- a/apps/web-office/src/views/canteen/config/components/duty-people/crud.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import Apis from '#/api'; - -import dayjs from 'dayjs'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { field: 'month', title: '值班月份', width: 120 }, - { field: 'userId', title: '用户编号', width: 100 }, - { field: 'userName', title: '用户姓名', width: 120 }, - { field: 'userIdNumber', title: '身份证号', width: 150 }, - { - field: 'days', - title: '值班天数', - width: 120, - slots: { - default: ({ row }) => { - return row.days + '天'; - }, - }, - }, - { field: 'unit', title: '所在部门', width: 120 }, - { field: 'remarks', title: '备注', minWidth: 200 }, - ]; -} -export function formSchema() { - return { - initialForm: { - month: dayjs().format('YYYY-MM'), - }, - labelCol: { style: { width: '120px' } }, - layout: 'vertical', - columns: { - month: { - title: '值班月份', - key: 'month', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - picker: 'month', - format: 'YYYY-MM', - valueFormat: 'YYYY-MM', - }, - show:true - }, - }, - }; -} diff --git a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-batch-add-modal.vue b/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-batch-add-modal.vue deleted file mode 100644 index 2e0e7846..00000000 --- a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-batch-add-modal.vue +++ /dev/null @@ -1,229 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-edit-modal.vue b/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-edit-modal.vue deleted file mode 100644 index 4eef35bc..00000000 --- a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people-edit-modal.vue +++ /dev/null @@ -1,139 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people.vue b/apps/web-office/src/views/canteen/config/components/duty-people/duty-people.vue deleted file mode 100644 index ecee14bf..00000000 --- a/apps/web-office/src/views/canteen/config/components/duty-people/duty-people.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/config/index.vue b/apps/web-office/src/views/canteen/config/index.vue deleted file mode 100644 index ae980e5a..00000000 --- a/apps/web-office/src/views/canteen/config/index.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/orderfood/collect/collect.vue b/apps/web-office/src/views/canteen/orderfood/collect/collect.vue deleted file mode 100644 index 79e5d3ee..00000000 --- a/apps/web-office/src/views/canteen/orderfood/collect/collect.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/orderfood/collect/crud.tsx b/apps/web-office/src/views/canteen/orderfood/collect/crud.tsx deleted file mode 100644 index dc4af492..00000000 --- a/apps/web-office/src/views/canteen/orderfood/collect/crud.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { field: 'name', title: '订餐人姓名', width: 120 }, - { - field: 'time', title: '订餐时间', width: 160, slots: { - default: ({ row }) => { - return dayjs(row.time).format('YYYY-MM-DD') - } - } - }, - { field: 'ip', title: '订餐IP', width: 120 }, - - // { field: 'unit', title: '订餐单位', width: 120 }, - { - field: 'diningMode', title: '就餐方式', width: 100, slots: { - default: ({ row }) => { - return getDictObj(DICT_TYPE.canteen_dineway, row.diningMode)?.label; - } - } - }, - { - field: 'settlementPrice', title: '结算价格', width: 100, slots: { - default: ({ row }) => { - return (getDictObj(DICT_TYPE.canteen_dineway, row.diningMode)?.extend1 || 0) + '元'; - } - } - }, - { - field: 'balance', title: '是否结算', width: 100, slots: { - default: ({ row }) => { - return row.balance == 0 ? '未结算' : '已结算'; - } - } - }, - { - field: 'balanceTime', title: '结算时间', width: 150, slots: { - default: ({ row }) => { - return row.balanceTime && dayjs(row.balanceTime).format('YYYY-MM-DD HH:mm:ss') - } - } - }, - { field: 'balancePerson', title: '结算人', width: 120 }, - { - field: 'stapleFood', title: '主食', width: 100, slots: { - default: ({ row }) => { - return getDictObj(DICT_TYPE.canteen_staplefood, row.stapleFood)?.label; - } - } - }, - { field: 'remarks', title: '备注', minWidth: 200 }, - ] -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format("YYYY-MM-DD"), - }, - columns: { - startDate: { - title: '开始日期', - key: 'startDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - endDate: { - title: '截止日期', - key: 'endDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - diningMode: { - title: '就餐方式', - key: 'diningMode', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.canteen_dineway) - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - balance: { - title: '是否结算', - key: 'balance', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { - label: "已结算", - value: "1", - }, - { - label: "未结算", - value: "0", - }, - ] - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - } -} diff --git a/apps/web-office/src/views/canteen/orderfood/index.vue b/apps/web-office/src/views/canteen/orderfood/index.vue deleted file mode 100644 index 50feeb56..00000000 --- a/apps/web-office/src/views/canteen/orderfood/index.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/orderfood/orderfood/choose-address-modal.vue b/apps/web-office/src/views/canteen/orderfood/orderfood/choose-address-modal.vue deleted file mode 100644 index d4a8e937..00000000 --- a/apps/web-office/src/views/canteen/orderfood/orderfood/choose-address-modal.vue +++ /dev/null @@ -1,93 +0,0 @@ - - diff --git a/apps/web-office/src/views/canteen/orderfood/orderfood/orderfood.vue b/apps/web-office/src/views/canteen/orderfood/orderfood/orderfood.vue deleted file mode 100644 index d9b0bdff..00000000 --- a/apps/web-office/src/views/canteen/orderfood/orderfood/orderfood.vue +++ /dev/null @@ -1,532 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/recipe/crud.tsx b/apps/web-office/src/views/canteen/recipe/crud.tsx deleted file mode 100644 index 8584761e..00000000 --- a/apps/web-office/src/views/canteen/recipe/crud.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictObj } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - field: 'recipeDate', - title: '日期', - width: 100, - fixed: 'left', - slots: { - default: ({ row }) => { - return useRender.renderDate(row.recipeDate, 'YYYY-MM-DD'); - } - } - }, - { field: 'week', title: '星期', width: 120 }, - { - field: 'recipe1', title: '堂食', headerAlign: 'center', children: [ - { field: 'eatinRecipe', title: '菜品', headerAlign: 'center', width: 300 }, - { field: 'eatinOpen', title: '开放情况', headerAlign: 'center', width: 80, slots: { default: 'openTsSlot' } }, - ] - }, - { - field: 'recipe2', title: '保温派送', headerAlign: 'center', children: [ - { field: 'deliveryRecipe', title: '菜品', headerAlign: 'center', width: 300 }, - { field: 'deliveryOpen', title: '开放情况', headerAlign: 'center', width: 80, slots: { default: 'openDcSlot' } }, - ] - }, - { field: 'remarks', title: '备注', minWidth: 200 } - // {title: '操作', minWidth: 120, slots: {default: 'operate'}}, - ]; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/canteen/recipe/index.vue b/apps/web-office/src/views/canteen/recipe/index.vue deleted file mode 100644 index 2a1b34c6..00000000 --- a/apps/web-office/src/views/canteen/recipe/index.vue +++ /dev/null @@ -1,303 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/recipe/recipe-sync-modal.vue b/apps/web-office/src/views/canteen/recipe/recipe-sync-modal.vue deleted file mode 100644 index 3b5d7907..00000000 --- a/apps/web-office/src/views/canteen/recipe/recipe-sync-modal.vue +++ /dev/null @@ -1,315 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/statistics/crud.tsx b/apps/web-office/src/views/canteen/statistics/crud.tsx deleted file mode 100644 index b0348b80..00000000 --- a/apps/web-office/src/views/canteen/statistics/crud.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - // { - // field: 'isConfirm', - // title: '会议是否落实', - // width: 100, - // slots: { - // default: ({ row }) => { - // return useRender.renderTag( - // row.isConfirm === 1 ? '是' : '否', - // row.isConfirm === 1 ? 'success' : 'warning', - // ); - // }, - // }, - // }, - { - field: 'meetingDate', - title: '会议信息', - width: 200, - slots: { default: 'meetingInfoSlot' }, - }, - { - field: 'meetingTheme', - title: '会议主题', - minWidth: 300, - slots: { - default: 'meetingThemeSlot', - }, - }, - { field: 'meetingType', title: '会议类型', width: 120 }, - // { field: 'gznr', title: '工作内容', width: 120 }, - { field: 'compere', title: '主持人', width: 80 }, - { - field: 'isEmployeeRepresentatives', - title: '职工代表', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.isEmployeeRepresentatives ? '是' : '否'; - }, - }, - }, - { - field: 'otherEquipment', - title: '其它设备', - width: 200, - slots: { - default: ({ row }) => { - // return useRender.renderDict((row.otherEquipment || '').split(','), DICT_TYPE.meeting_facilities); - }, - }, - }, - { - field: 'meetingSpeakersCount', - title: '发言人数', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.meetingSpeakersCount || 0; - }, - }, - }, - { field: 'conferee', title: '参会人员', minWidth: 200 }, - { field: 'creator', title: '登记人', minWidth: 120 }, - { field: 'createTime', title: '登记时间', minWidth: 150 }, - ]; - - if (params.type !== 'taizhang') { - columns.unshift({ - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }); - columns.push({ - field: 'operation', - title: '操作', - width: 100, - fixed: 'right', - slots: { - default: 'operation_cell', - }, - }); - } - return columns; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/canteen/statistics/index.vue b/apps/web-office/src/views/canteen/statistics/index.vue deleted file mode 100644 index c78f6c5d..00000000 --- a/apps/web-office/src/views/canteen/statistics/index.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/statistics/subsidy-statistics.vue b/apps/web-office/src/views/canteen/statistics/subsidy-statistics.vue deleted file mode 100644 index f65b31aa..00000000 --- a/apps/web-office/src/views/canteen/statistics/subsidy-statistics.vue +++ /dev/null @@ -1,352 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/canteen/statistics/unit-statistics.vue b/apps/web-office/src/views/canteen/statistics/unit-statistics.vue deleted file mode 100644 index 0e679abc..00000000 --- a/apps/web-office/src/views/canteen/statistics/unit-statistics.vue +++ /dev/null @@ -1,664 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-office/src/views/dashboard/analytics/analytics-trends.vue deleted file mode 100644 index 35e90276..00000000 --- a/apps/web-office/src/views/dashboard/analytics/analytics-trends.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/analytics/analytics-visits-data.vue b/apps/web-office/src/views/dashboard/analytics/analytics-visits-data.vue deleted file mode 100644 index 30c4265d..00000000 --- a/apps/web-office/src/views/dashboard/analytics/analytics-visits-data.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/analytics/analytics-visits-sales.vue b/apps/web-office/src/views/dashboard/analytics/analytics-visits-sales.vue deleted file mode 100644 index 260520b8..00000000 --- a/apps/web-office/src/views/dashboard/analytics/analytics-visits-sales.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-office/src/views/dashboard/analytics/analytics-visits-source.vue deleted file mode 100644 index e0d0aab5..00000000 --- a/apps/web-office/src/views/dashboard/analytics/analytics-visits-source.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/analytics/analytics-visits.vue b/apps/web-office/src/views/dashboard/analytics/analytics-visits.vue deleted file mode 100644 index 7e1f14ee..00000000 --- a/apps/web-office/src/views/dashboard/analytics/analytics-visits.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/analytics/index.vue b/apps/web-office/src/views/dashboard/analytics/index.vue deleted file mode 100644 index 00b34df1..00000000 --- a/apps/web-office/src/views/dashboard/analytics/index.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/components/workbench-header.vue b/apps/web-office/src/views/dashboard/components/workbench-header.vue deleted file mode 100644 index 0bc6dc63..00000000 --- a/apps/web-office/src/views/dashboard/components/workbench-header.vue +++ /dev/null @@ -1,44 +0,0 @@ - - diff --git a/apps/web-office/src/views/dashboard/components/workbench-quick-nav.vue b/apps/web-office/src/views/dashboard/components/workbench-quick-nav.vue deleted file mode 100644 index 4c127cdf..00000000 --- a/apps/web-office/src/views/dashboard/components/workbench-quick-nav.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/home/index.vue b/apps/web-office/src/views/dashboard/home/index.vue deleted file mode 100644 index 2de67c36..00000000 --- a/apps/web-office/src/views/dashboard/home/index.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/apps/web-office/src/views/dashboard/workspace/index.vue b/apps/web-office/src/views/dashboard/workspace/index.vue deleted file mode 100644 index c8ae0273..00000000 --- a/apps/web-office/src/views/dashboard/workspace/index.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - diff --git a/apps/web-office/src/views/demos/antd/index.vue b/apps/web-office/src/views/demos/antd/index.vue deleted file mode 100644 index 8286bebb..00000000 --- a/apps/web-office/src/views/demos/antd/index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/apps/web-office/src/views/duty/list/crud.tsx b/apps/web-office/src/views/duty/list/crud.tsx deleted file mode 100644 index 4ffeac4d..00000000 --- a/apps/web-office/src/views/duty/list/crud.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { - field: 'dutyDate', - title: '值班日期', - width: 120, - fixed: 'left', - headerAlign: 'center', - align: 'center', - slots: { - default: ({ row }) => { - return useRender.renderDate(row.dutyDate, 'YYYY年MM月DD日'); - }, - }, - }, - { - field: 'zzb', - title: '总值班', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dutyAllPeople', - title: '姓名', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyAllPhone', - title: '办公室电话', - width: 100, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyAllTelphone', - title: '手机', - width: 100, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'ddy', - title: '机关部门领导', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dispatchPeople', - title: '姓名', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dispatchPhone', - title: '办公室电话', - width: 100, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dispatchTelphone', - title: '手机', - width: 100, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'zb', - title: '值班人员', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dutyPeople', - title: '姓名', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyPhone', - title: '办公室电话', - width: 100, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyTelphone', - title: '手机', - width: 100, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'sj', - title: '司机', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'driver', - title: '姓名', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'driverTelphone', - title: '手机', - width: 100, - headerAlign: 'center', - align: 'center', - }, - ], - }, - // { field: 'zzb', title: '总值班人员', width: 200, slots: { default: 'zzbSlot' } }, - // { field: 'ddy', title: '机关部门领导', width: 200, slots: { default: 'ddy' } }, - // { field: 'jrzb', title: '值班人员', width: 200, slots: { default: 'jrzb' } }, - // { field: 'sj', title: '司机', width: 200, slots: { default: 'sjSlot' } }, - { field: 'remark', title: '备注', headerAlign: 'center', minWidth: 200 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/duty/list/duty-edit-modal.vue b/apps/web-office/src/views/duty/list/duty-edit-modal.vue deleted file mode 100644 index a3569c31..00000000 --- a/apps/web-office/src/views/duty/list/duty-edit-modal.vue +++ /dev/null @@ -1,286 +0,0 @@ - - - - diff --git a/apps/web-office/src/views/duty/list/duty-upload-modal.vue b/apps/web-office/src/views/duty/list/duty-upload-modal.vue deleted file mode 100644 index c992acff..00000000 --- a/apps/web-office/src/views/duty/list/duty-upload-modal.vue +++ /dev/null @@ -1,132 +0,0 @@ - - diff --git a/apps/web-office/src/views/duty/list/index.vue b/apps/web-office/src/views/duty/list/index.vue deleted file mode 100644 index 8f2f9751..00000000 --- a/apps/web-office/src/views/duty/list/index.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/duty/standing-book/crud.tsx b/apps/web-office/src/views/duty/standing-book/crud.tsx deleted file mode 100644 index 5afa4be9..00000000 --- a/apps/web-office/src/views/duty/standing-book/crud.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - field: 'dutyDate', - title: '值班日期', - width: 150, - fixed: 'left', - headerAlign: 'center', - align: 'center', - slots: { - default: ({ row }) => { - return useRender.renderDate(row.dutyDate, 'YYYY年M月D日'); - }, - }, - }, - { - field: 'zzb', - title: '总值班', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dutyAllPeople', - title: '姓名', - width: 150, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyAllPhone', - title: '办公室电话', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyAllTelphone', - title: '手机', - width: 120, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'ddy', - title: '机关部门领导', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dispatchPeople', - title: '姓名', - width: 150, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dispatchPhone', - title: '办公室电话', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dispatchTelphone', - title: '手机', - width: 120, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'zb', - title: '值班人员', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'dutyPeople', - title: '姓名', - width: 150, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyPhone', - title: '办公室电话', - width: 120, - headerAlign: 'center', - align: 'center', - }, - { - field: 'dutyTelphone', - title: '手机', - width: 120, - headerAlign: 'center', - align: 'center', - }, - ], - }, - { - field: 'sj', - title: '司机', - headerAlign: 'center', - align: 'center', - children: [ - { - field: 'driver', - title: '姓名', - width: 150, - headerAlign: 'center', - align: 'center', - }, - { - field: 'driverTelphone', - title: '手机', - width: 120, - headerAlign: 'center', - align: 'center', - }, - ], - }, - // { field: 'zzb', title: '总值班人员', width: 200, slots: { default: 'zzbSlot' } }, - // { field: 'ddy', title: '机关部门领导', width: 200, slots: { default: 'ddy' } }, - // { field: 'jrzb', title: '值班人员', width: 200, slots: { default: 'jrzb' } }, - // { field: 'sj', title: '司机', width: 200, slots: { default: 'sjSlot' } }, - { field: 'remark', title: '备注', headerAlign: 'center', minWidth: 150 }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/duty/standing-book/index.vue b/apps/web-office/src/views/duty/standing-book/index.vue deleted file mode 100644 index 47af061c..00000000 --- a/apps/web-office/src/views/duty/standing-book/index.vue +++ /dev/null @@ -1,275 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-edit-modal.vue b/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-edit-modal.vue deleted file mode 100644 index 4765999c..00000000 --- a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-edit-modal.vue +++ /dev/null @@ -1,155 +0,0 @@ - - diff --git a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-setting.vue b/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-setting.vue deleted file mode 100644 index a6c232c8..00000000 --- a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/addressor-sort-setting.vue +++ /dev/null @@ -1,250 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/crud.tsx b/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/crud.tsx deleted file mode 100644 index 74824a72..00000000 --- a/apps/web-office/src/views/meeting/config/components/addressor-sort-setting/crud.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - // { width: 80, title: '', slots: { default: 'dragBtn', header: 'dragTip' } }, - { field: 'sort', title: '发言顺序', width: 80 }, - { field: 'name', title: '单位/人员名称', width: 150 }, - { field: 'id', title: '单位/人员编号', width: 150 }, - { field: 'remarks', title: '备注', minWidth: 150 }, - { field: 'updateTime', title: '更新时间', minWidth: 150 }, - { field: 'creator', title: '创建人员', width: 120 }, - { field: 'createTime', title: '创建时间', minWidth: 150 }, - ]; -} diff --git a/apps/web-office/src/views/meeting/config/index.vue b/apps/web-office/src/views/meeting/config/index.vue deleted file mode 100644 index 512e9d8c..00000000 --- a/apps/web-office/src/views/meeting/config/index.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/edit/index.vue b/apps/web-office/src/views/meeting/edit/index.vue deleted file mode 100644 index bab6bbe9..00000000 --- a/apps/web-office/src/views/meeting/edit/index.vue +++ /dev/null @@ -1,700 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/edit/spoken-person-edit-modal.vue b/apps/web-office/src/views/meeting/edit/spoken-person-edit-modal.vue deleted file mode 100644 index ef8d13ce..00000000 --- a/apps/web-office/src/views/meeting/edit/spoken-person-edit-modal.vue +++ /dev/null @@ -1,170 +0,0 @@ - - diff --git a/apps/web-office/src/views/meeting/list/crud.tsx b/apps/web-office/src/views/meeting/list/crud.tsx deleted file mode 100644 index c0f28d22..00000000 --- a/apps/web-office/src/views/meeting/list/crud.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptionsAsync } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { - field: 'meetingDate', - title: '会议时间', - width: 200, - slots: { - default: ({ row }) => { - return ( -
{dayjs(row.meetingDate).format('YYYY-M-D H:m (dddd)')}
- ); - }, - }, - }, - { - field: 'meetingTheme', - title: '会议主题', - minWidth: 300, - slots: { - default: 'meetingThemeSlot', - }, - }, - { - field: 'meetingInfo', - title: '会议信息', - width: 200, - slots: { default: 'meetingInfoSlot' }, - }, - { field: 'meetingType', title: '会议类型', width: 120 }, - // { field: 'gznr', title: '工作内容', width: 120 }, - { field: 'compere', title: '主持人', width: 80 }, - { - field: 'isEmployeeRepresentatives', - title: '职工代表', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.isEmployeeRepresentatives ? '是' : '否'; - }, - }, - }, - - { - field: 'meetingSpeakersCount', - title: '发言人数', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.meetingSpeakersCount || 0; - }, - }, - }, - { - field: 'conferee', - title: '参会人员', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.conferee, { maxLine: 3 }); - }, - }, - }, - { - field: 'otherEquipment', - title: '备注', - width: 200, - }, - { field: 'creator', title: '登记人', minWidth: 120 }, - { field: 'createTime', title: '登记时间', minWidth: 150 }, - ]; - - if (params.type !== 'taizhang') { - columns.unshift({ - field: 'radio', - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }); - columns.push( - // { - // field: 'isConfirm', - // title: '是否落实', - // width: 100, - // align: 'center', - // fixed: 'right', - // slots: { - // default: 'isconfirm_cell', - // }, - // }, - { - field: 'operation2', - title: '是否推送门户', - width: 100, - align: 'center', - fixed: 'right', - slots: { - default: 'operation2_cell', - }, - }, - ); - } - return columns; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - }, - columns: { - startDate: { - title: '开始日期', - key: 'startDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-M-D', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - endDate: { - title: '截止日期', - key: 'endDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-M-D', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - meetingTheme: { - title: '会议主题', - key: 'meetingTheme', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - meetingId: { - title: '会议室', - key: 'meetingId', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - async getData() { - return await getDictOptionsAsync(DICT_TYPE.meeting_room); - }, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - meetingType: { - title: '会议类型', - key: 'meetingType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - async getData() { - return await getDictOptionsAsync(DICT_TYPE.meeting_type); - }, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/meeting/list/index.vue b/apps/web-office/src/views/meeting/list/index.vue deleted file mode 100644 index 892f46e8..00000000 --- a/apps/web-office/src/views/meeting/list/index.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/production-edit/index.vue b/apps/web-office/src/views/meeting/production-edit/index.vue deleted file mode 100644 index dc9e6533..00000000 --- a/apps/web-office/src/views/meeting/production-edit/index.vue +++ /dev/null @@ -1,658 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/production-edit/spoken-person-edit-modal.vue b/apps/web-office/src/views/meeting/production-edit/spoken-person-edit-modal.vue deleted file mode 100644 index ef8d13ce..00000000 --- a/apps/web-office/src/views/meeting/production-edit/spoken-person-edit-modal.vue +++ /dev/null @@ -1,170 +0,0 @@ - - diff --git a/apps/web-office/src/views/meeting/production-list/crud.tsx b/apps/web-office/src/views/meeting/production-list/crud.tsx deleted file mode 100644 index 1226c4a0..00000000 --- a/apps/web-office/src/views/meeting/production-list/crud.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { - field: 'meetingDate', - title: '会议时间', - width: 150, - slots: { - default: ({ row }) => { - return ( -
{dayjs(row.meetingDate).format('YYYY-M-D H:m (dddd)')}
- ); - }, - }, - }, - { - field: 'meetingTheme', - title: '会议主题', - minWidth: 300, - slots: { - default: 'meetingThemeSlot', - }, - }, - { - field: 'meetingInfo', - title: '会议信息', - width: 200, - slots: { default: 'meetingInfoSlot' }, - }, - { field: 'meetingType', title: '会议类型', width: 120 }, - // { field: 'gznr', title: '工作内容', width: 120 }, - { field: 'compere', title: '主持人', width: 80 }, - { - field: 'isEmployeeRepresentatives', - title: '职工代表', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.isEmployeeRepresentatives ? '是' : '否'; - }, - }, - }, - - { - field: 'meetingSpeakersCount', - title: '发言人数', - width: 100, - align: 'center', - slots: { - default: ({ row }) => { - return row.meetingSpeakersCount || 0; - }, - }, - }, - { - field: 'conferee', - title: '参会人员', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.conferee, { maxLine: 3 }); - }, - }, - }, - { - field: 'otherEquipment', - title: '备注', - width: 200, - }, - { field: 'creator', title: '登记人', minWidth: 120 }, - { field: 'createTime', title: '登记时间', minWidth: 150 }, - ]; - - if (params.type !== 'taizhang') { - columns.unshift({ - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }); - } - return columns; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - }, - columns: { - startDate: { - title: '开始日期', - key: 'startDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-M-D', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - endDate: { - title: '截止日期', - key: 'endDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: true, - props: { - format: 'YYYY-M-D', - valueFormat: 'YYYY-MM-DD', - }, - }, - autoSearchTrigger: 'enter', - show: true, - }, - meetingTheme: { - title: '会议主题', - key: 'meetingTheme', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - meetingId: { - title: '会议室', - key: 'meetingId', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.meeting_room), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/meeting/production-list/index.vue b/apps/web-office/src/views/meeting/production-list/index.vue deleted file mode 100644 index cd568c4c..00000000 --- a/apps/web-office/src/views/meeting/production-list/index.vue +++ /dev/null @@ -1,254 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/standing-book/crud.tsx b/apps/web-office/src/views/meeting/standing-book/crud.tsx deleted file mode 100644 index ba22c3c5..00000000 --- a/apps/web-office/src/views/meeting/standing-book/crud.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import dayjs from 'dayjs'; - -import { useRender } from '#/hooks/useRender'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params?: any): VxeGridPropTypes.Columns { - const columns: VxeGridPropTypes.Columns = [ - { type: 'seq', width: 60, align: 'center', fixed: 'left' }, - { - field: 'meetingDate', - title: '会议时间', - width: 230, - slots: { - default: ({ row }) => { - return ( -
{dayjs(row.meetingDate).format('YYYY-M-D H:m (dddd)')}
- ); - }, - }, - }, - { - field: 'meetingTheme', - title: '会议主题', - minWidth: 300, - slots: { - default: 'meetingThemeSlot', - }, - }, - { - field: 'meeting', - title: '会议地点', - width: 150, - }, - { field: 'compere', title: '主持人', width: 80 }, - { - field: 'conferee', - title: '参会人员', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.conferee, { maxLine: 3 }); - }, - }, - }, - { field: 'meetingType', title: '会议类型', width: 120 }, - { - field: 'otherEquipment', - title: '备注', - minWidth: 150, - }, - ]; - - return columns; -} - -export function getFormSchema(_params: any = {}) { - return [ - { - field: 'duty_date', - component: 'NDatePicker', - label: '值班月份', - defaultValue: dayjs().format('YYYY-MM'), - componentProps: { - type: 'month', - placeholder: '', - valueFormat: 'yyyy-MM', - }, - }, - ]; -} diff --git a/apps/web-office/src/views/meeting/standing-book/index.vue b/apps/web-office/src/views/meeting/standing-book/index.vue deleted file mode 100644 index f368960a..00000000 --- a/apps/web-office/src/views/meeting/standing-book/index.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/meeting/start/index.vue b/apps/web-office/src/views/meeting/start/index.vue deleted file mode 100644 index d7aa19a6..00000000 --- a/apps/web-office/src/views/meeting/start/index.vue +++ /dev/null @@ -1,523 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/office-supplies/apply/crud.tsx b/apps/web-office/src/views/office-supplies/apply/crud.tsx deleted file mode 100644 index a5a94194..00000000 --- a/apps/web-office/src/views/office-supplies/apply/crud.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - { field: 'applyName', title: '申请人', width: 120 }, - { field: 'officeName', title: '申请物品', minWidth: 150 }, - { - field: 'model', - title: '物品型号', - minWidth: 150, - }, - { - field: 'count', - title: '申请数量', - minWidth: 80, - slots: { - default: ({ row }) => { - return `${row.count}个`; - }, - }, - }, - { field: 'remarks', title: '申请原因', width: 200 }, - { - field: 'status', - title: '申请状态', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.status, - DICT_TYPE.officesupplies_status, - { - labelField: 'extend1', - }, - ); - }, - }, - }, - { - field: 'companyRealCount', - title: '实际发放量', - width: 100, - showOverflow: true, - slots: { - default: ({ row }) => { - return useRender.renderText(row.companyRealCount, '个'); - }, - }, - }, - { field: 'time', title: '申请时间', width: 150 }, - ]; -} - -export function getFormSchema(params: any = {}) { - const { chooseUserModalApi } = params; - - const data = getDictOptions(DICT_TYPE.officesupplies_status); - data.forEach((item) => { - item.label = item.extend1; - }); - - return { - initialForm: {}, - columns: { - status: { - title: '申请状态', - key: 'status', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - // applyId: { - // title: '申请人员', - // key: 'applyId', - // component: { - // name: 'a-input', - // vModel: 'value', - // readOnly: true, - // onClick: () => { - // chooseUserModalApi.open(); - // }, - // }, - // autoSearchTrigger: 'enter', - // show: true, - // }, - officeName: { - title: '申请物品', - key: 'officeName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - remarks: { - title: '申请原因 ', - key: 'remarks', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/office-supplies/apply/index.vue b/apps/web-office/src/views/office-supplies/apply/index.vue deleted file mode 100644 index 27d9cdd1..00000000 --- a/apps/web-office/src/views/office-supplies/apply/index.vue +++ /dev/null @@ -1,161 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/office-supplies/apply/office-batch-apply-modal.vue b/apps/web-office/src/views/office-supplies/apply/office-batch-apply-modal.vue deleted file mode 100644 index ae9ed109..00000000 --- a/apps/web-office/src/views/office-supplies/apply/office-batch-apply-modal.vue +++ /dev/null @@ -1,212 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/audit/crud.tsx b/apps/web-office/src/views/office-supplies/audit/crud.tsx deleted file mode 100644 index af59490d..00000000 --- a/apps/web-office/src/views/office-supplies/audit/crud.tsx +++ /dev/null @@ -1,225 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { - field: 'status', - title: '申请状态', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.status, - DICT_TYPE.officesupplies_status, - { - labelField: 'extend1', - }, - ); - }, - }, - }, - { field: 'applyName', title: '申请人', width: 120 }, - { field: 'officeName', title: '申请物品', minWidth: 150 }, - { - field: 'model', - title: '物品型号', - minWidth: 150, - }, - { - field: 'count', - title: '申请数量', - minWidth: 80, - slots: { - default: ({ row }) => { - return `${row.count}个`; - }, - }, - }, - { field: 'remarks', title: '申请原因', width: 200 }, - { - field: 'status', - title: '申请状态', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.status, - DICT_TYPE.officesupplies_status, - { - labelField: 'extend1', - }, - ); - }, - }, - }, - { - field: 'companyRealCount', - title: '实际发放量', - width: 100, - showOverflow: true, - slots: { - default: ({ row }) => { - return useRender.renderText(row.companyRealCount, '个'); - }, - }, - }, - { field: 'remarks', title: '申请原因', minWidth: 150 }, - { field: 'time', title: '申请时间', width: 150 }, - { - field: 'num', - title: '审核数量', - width: 200, - fixed: 'right', - slots: { default: 'edit_num' }, - }, - { - field: 'operate', - title: '操作', - width: 110, - fixed: 'right', - slots: { default: 'operate' }, - }, - ]; -} - -export function getDoneColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50, align: 'center', fixed: 'left' }, - { - field: 'status', - title: '申请状态', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.status, - DICT_TYPE.officesupplies_status, - { - labelField: 'extend1', - }, - ); - }, - }, - }, - { field: 'applyName', title: '申请人', width: 120 }, - { field: 'officeName', title: '申请物品', minWidth: 150 }, - { - field: 'model', - title: '物品型号', - minWidth: 150, - }, - { - field: 'count', - title: '申请数量', - minWidth: 80, - slots: { - default: ({ row }) => { - return `${row.count}个`; - }, - }, - }, - { field: 'remarks', title: '申请原因', width: 200 }, - { - field: 'status', - title: '申请状态', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.status, - DICT_TYPE.officesupplies_status, - { - labelField: 'extend1', - }, - ); - }, - }, - }, - { - field: 'companyRealCount', - title: '实际发放量', - width: 100, - showOverflow: true, - slots: { - default: ({ row }) => { - return useRender.renderText(row.companyRealCount, '个'); - }, - }, - }, - { field: 'time', title: '申请时间', width: 150 }, - ]; -} - -export function getFormSchema(params: any = {}) { - const { chooseUserModalApi } = params; - - const data = getDictOptions(DICT_TYPE.officesupplies_status); - data.forEach((item) => { - item.label = item.extend1; - }); - - return { - initialForm: {}, - columns: { - status: { - title: '申请状态', - key: 'status', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - // applyId: { - // title: '申请人员', - // key: 'applyId', - // component: { - // name: 'a-input', - // vModel: 'value', - // readOnly: true, - // onClick: () => { - // chooseUserModalApi.open(); - // }, - // }, - // autoSearchTrigger: 'enter', - // show: true, - // }, - officeName: { - title: '申请物品', - key: 'officeName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - remarks: { - title: '申请原因 ', - key: 'remarks', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/office-supplies/audit/index.vue b/apps/web-office/src/views/office-supplies/audit/index.vue deleted file mode 100644 index 4d4c370a..00000000 --- a/apps/web-office/src/views/office-supplies/audit/index.vue +++ /dev/null @@ -1,261 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/office-supplies/inventory/choose-office-modal.vue b/apps/web-office/src/views/office-supplies/inventory/choose-office-modal.vue deleted file mode 100644 index 0bcd65d1..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/choose-office-modal.vue +++ /dev/null @@ -1,213 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/inventory/crud.tsx b/apps/web-office/src/views/office-supplies/inventory/crud.tsx deleted file mode 100644 index 67335a48..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/crud.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import { unitComponentProps } from '#/common/unit'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' }, - { field: 'name', title: '名称', width: 120 }, - { field: 'model', title: '型号', width: 200, }, - // { field: 'nma', title: '办公用品', minWidth: 180, editRender: sexListEditRender }, - { - field: 'price', title: '单价', width: 150, slots: { - default: ({ row }) => { - return useRender.renderText(row.price, '元'); - } - } - }, - { - field: 'count', title: '数量', width: 80, slots: { - default: ({ row }) => { - return useRender.renderText(row.count, row.units); - } - } - }, - { field: 'qualityStandard', title: '质量标准', minWidth: 300, }, - { field: 'remarks', title: '备注', width: 200 }, - ] -} - -export function getFormSchema(params: any = {}) { - - return { - initialForm: { - }, - columns: { - name: { - title: '用品名称', - key: 'name', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - model: { - title: '用品型号', - key: 'model', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - }, - } -} - diff --git a/apps/web-office/src/views/office-supplies/inventory/index.vue b/apps/web-office/src/views/office-supplies/inventory/index.vue deleted file mode 100644 index 43f81278..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/index.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/office-supplies/inventory/purchase-summary-modal.vue b/apps/web-office/src/views/office-supplies/inventory/purchase-summary-modal.vue deleted file mode 100644 index 6b2a62c5..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/purchase-summary-modal.vue +++ /dev/null @@ -1,270 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/inventory/supplies-edit-modal.vue b/apps/web-office/src/views/office-supplies/inventory/supplies-edit-modal.vue deleted file mode 100644 index 703bbbba..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/supplies-edit-modal.vue +++ /dev/null @@ -1,123 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/inventory/supplies-out-modal.vue b/apps/web-office/src/views/office-supplies/inventory/supplies-out-modal.vue deleted file mode 100644 index 5281cd90..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/supplies-out-modal.vue +++ /dev/null @@ -1,300 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/inventory/supplies-put-modal.vue b/apps/web-office/src/views/office-supplies/inventory/supplies-put-modal.vue deleted file mode 100644 index 2d1aaecc..00000000 --- a/apps/web-office/src/views/office-supplies/inventory/supplies-put-modal.vue +++ /dev/null @@ -1,219 +0,0 @@ - - diff --git a/apps/web-office/src/views/office-supplies/settle/crud.tsx b/apps/web-office/src/views/office-supplies/settle/crud.tsx deleted file mode 100644 index 3e53055f..00000000 --- a/apps/web-office/src/views/office-supplies/settle/crud.tsx +++ /dev/null @@ -1,157 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; -import { useRender } from '#/hooks/useRender'; -import dayjs from 'dayjs'; -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; -import { dict } from '@fast-crud/fast-crud'; -import { unitComponentProps } from '#/common/unit'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'checkbox', width: 60 }, - { - field: 'unit', - title: '结算单位', - width: 200, - treeNode: true, - slots: { - default: ({ row }) => { - return !row.officeName && row.unit; - }, - }, - }, - { - field: 'officeName', - title: '用品名称', - minWidth: 150, - slots: { - default: ({ row }) => { - return ( - row.officeName && (row.officeName || '' + '-' + row.model || '') - ); - }, - }, - }, - { - field: 'price', - title: '用品单价', - minWidth: 80, - slots: { - default: ({ row }) => { - return row.price && row.price + '元'; - }, - }, - }, - { - field: 'companyRealCount', - title: '结算数量', - minWidth: 80, - slots: { - default: ({ row }) => { - return row.companyRealCount && row.companyRealCount + '个'; - }, - }, - }, - { - field: 'money', - title: '结算金额', - minWidth: 80, - slots: { - default: ({ row }) => { - return row.money && row.money + '元'; - }, - }, - }, - { - field: 'balance', - title: '结算状态', - minWidth: 80, - slots: { - default: ({ row }) => { - if (row.balance) { - return row.balance == 1 - ? '已结算' - : row.balance == 0 - ? '未结算' - : row.balance; - } - return ''; - }, - }, - }, - { field: 'time', title: '申请时间', width: 150 }, - { field: 'balacnceTime', title: '结算时间', width: 150 }, - ]; -} - -export function getFormSchema(params: any = {}) { - return { - initialForm: { - startDate: dayjs().startOf('month').format('YYYY-MM-DD'), - endDate: dayjs().format('YYYY-MM-DD'), - }, - columns: { - startDate: { - title: '开始日期', - key: 'startDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - autoSearchTrigger: 'enter', - show: true, - }, - endDate: { - title: '截止日期', - key: 'endDate', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - format: 'YYYY-MM-DD', - valueFormat: 'YYYY-MM-DD', - }, - autoSearchTrigger: 'enter', - show: true, - }, - balance: { - title: '是否结算', - key: 'balance', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - async getData(form) { - return [ - { - label: '已结算', - value: '1', - }, - { - label: '未结算', - value: '0', - }, - ]; - }, - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - unitId: { - title: '单位', - key: 'unitId', - component: { - ...unitComponentProps, - }, - show: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/office-supplies/settle/index.vue b/apps/web-office/src/views/office-supplies/settle/index.vue deleted file mode 100644 index a53448da..00000000 --- a/apps/web-office/src/views/office-supplies/settle/index.vue +++ /dev/null @@ -1,423 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/supervise/edit/curd.tsx b/apps/web-office/src/views/supervise/edit/curd.tsx deleted file mode 100644 index dcf11c1a..00000000 --- a/apps/web-office/src/views/supervise/edit/curd.tsx +++ /dev/null @@ -1,275 +0,0 @@ -import type { Dayjs } from 'dayjs'; -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; -import { message } from 'ant-design-vue'; -import dayjs from 'dayjs'; - -import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { field: 'feedbackContent', title: '反馈内容', minWidth: 200 }, - { field: 'finishStatus', title: '完成情况', width: 120 }, - { field: 'principal', title: '负责人', width: 120 }, - { field: 'feedbackTime', title: '反馈时间', width: 150 }, - { field: 'lasttime', title: '修改时间', width: 150 }, - // { field: 'principalDepartment', title: '负责部门', width: 120 }, - { field: 'executeDepartmentName', title: '执行部门', width: 120 }, - // { title: '操作', width: 120, fixed: 'right', slots: { default: 'operate' } } - ]; -} - -function handleUpdateFormattedValue(formRef) { - const { starttime, endtime } = formRef.value.form; - - if (starttime && endtime && endtime <= starttime) { - message.error('截止时间不能早于开始时间'); - formRef.value.setFormData({ - starttime: '', - }); - } -} - -export function getFormSchema(params: any = {}) { - const { - formRef, - chooseUserModalApi, - selectUsers, - readOnly = false, - } = params || {}; - return { - col: { span: 24 }, - initialForm: {}, - labelCol: { style: { width: '120px' } }, - columns: { - taskName: { - title: '任务标题', - key: 'taskName', - col: { span: 24 }, - component: { - name: 'a-input', - vModel: 'value', - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.taskName}; - }, - }, - rules: [{ required: true, message: '请输入任务标题' }], - }, - taskType: { - title: '任务类别', - key: 'taskType', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.supervise_task_type), - }), - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj(DICT_TYPE.supervise_task_type, form.taskType) - ?.label || ''} - - ); - }, - }, - rules: [{ required: true, message: '请选择任务类别' }], - }, - urgentDegree: { - title: '紧急程度', - key: 'urgentDegree', - col: { span: 12 }, - component: { - name: 'fs-dict-radio', - vModel: 'value', - dict: dict({ - data: getDictOptions(DICT_TYPE.supervise_emergency_level), - }), - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return ( - - {getDictObj( - DICT_TYPE.supervise_emergency_level, - form.urgentDegree, - )?.label || ''} - - ); - }, - }, - }, - starttime: { - title: '开始时间', - key: 'starttime', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - showTime: { format: 'HH:mm' }, - // disabledDate: (current) => current && current < dayjs().endOf("day"), - format: 'YYYY-MM-DD HH:mm', - valueFormat: 'YYYY-MM-DD HH:mm', - onChange: () => { - handleUpdateFormattedValue(formRef); - }, - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.starttime}; - }, - }, - rules: [{ required: true, message: '请选择开始时间' }], - }, - endtime: { - title: '截止时间', - key: 'endtime', - col: { span: 12 }, - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - showTime: { format: 'HH:mm' }, - disabledDate: (current: Dayjs) => { - const form = formRef.value.form; - return current < dayjs(form.starttime); - }, - onChange: () => { - handleUpdateFormattedValue(formRef); - }, - format: 'YYYY-MM-DD HH:mm', - valueFormat: 'YYYY-MM-DD HH:mm', - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.endtime}; - }, - }, - rules: [{ required: true, message: '请选择截止时间' }], - }, - planFinishTime: { - title: '预计完成时间', - key: 'endtime', - component: { - name: 'a-date-picker', - vModel: 'value', - allowClear: false, - showTime: { format: 'HH:mm' }, - disabledDate: (current: Dayjs) => { - const form = formRef.value.form; - return current < dayjs(form.starttime); - }, - onChange: () => { - handleUpdateFormattedValue(formRef); - }, - format: 'YYYY-MM-DD HH:mm', - valueFormat: 'YYYY-MM-DD HH:mm', - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.planFinishTime}; - }, - }, - rules: [{ required: true, message: '请选择预计完成时间' }], - }, - taskContent: { - title: '任务内容', - key: 'taskContent', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.taskContent}; - }, - }, - rules: [{ required: true, message: '请输入任务内容' }], - }, - taskProgress: { - title: '任务进度', - key: 'taskProgress', - col: { span: 24 }, - component: { - name: 'a-textarea', - vModel: 'value', - autoSize: { minRows: 4, maxRows: 6 }, - }, - conditionalRender: { - match(_context) { - return readOnly; - }, - render({ form }) { - return {form.taskContent}; - }, - }, - rules: [{ required: true, message: '请输入任务进度' }], - }, - fileList: { - title: '相关附件', - key: 'fileList', - }, - people: { - title: '相关执行人', - key: 'people', - component: { - name: 'a-select', - vModel: 'value', - open: false, - mode: 'multiple', - onClick: () => { - if (!readOnly) { - chooseUserModalApi.setData({ - title: '选择执行人', - limitMultipleNum: 10, - userIds: selectUsers.value.map((row) => row.value) || [], - }); - chooseUserModalApi.open(); - } - }, - onChange: () => { - // 同步 selectUsers 变量的值 - selectUsers.value = formRef.value.form.people.map((item1) => { - const value = item1.split('-')[1]; - return selectUsers.value.find((item2) => item2.value === value); - }); - }, - }, - // rules: [{ required: true, message: '请选择相关执行人' }], - }, - }, - }; -} diff --git a/apps/web-office/src/views/supervise/edit/index.vue b/apps/web-office/src/views/supervise/edit/index.vue deleted file mode 100644 index 787f0f02..00000000 --- a/apps/web-office/src/views/supervise/edit/index.vue +++ /dev/null @@ -1,297 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/supervise/feedback/crud.tsx b/apps/web-office/src/views/supervise/feedback/crud.tsx deleted file mode 100644 index ae0b7106..00000000 --- a/apps/web-office/src/views/supervise/feedback/crud.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { type: 'seq', width: 50 }, - { field: 'feedbackContent', title: '反馈内容', minWidth: 200 }, - { field: 'finishStatus', title: '完成情况', width: 120 }, - { field: 'principal', title: '负责人', width: 120 }, - { field: 'feedbackTime', title: '反馈时间', width: 150 }, - { field: 'lasttime', title: '修改时间', width: 150 }, - // { field: 'principalDepartment', title: '负责部门', width: 120 }, - { field: 'executeDepartmentName', title: '执行部门', width: 120 }, - // { title: '操作', width: 120, fixed: 'right', slots: { default: 'operate' } } - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - taskName: { - title: '任务名称', - key: 'taskName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - taskStatus: { - title: '任务状态', - key: 'taskStatus', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { - value: '1', - label: '未开始', - }, - { - value: '2', - label: '进行中', - }, - { - value: '3', - label: '已完成', - }, - { - value: '4', - label: '已超时', - }, - ], - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - taskType: { - title: '任务类型', - key: 'taskType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.supervise_task_type), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - // department: { - // title: '负责部门', - // key: 'department', - // component: unitComponentProps, - // autoSearchTrigger: 'enter', - // show: true, - // }, - }, - }; -} diff --git a/apps/web-office/src/views/supervise/feedback/index.vue b/apps/web-office/src/views/supervise/feedback/index.vue deleted file mode 100644 index 3146b2a5..00000000 --- a/apps/web-office/src/views/supervise/feedback/index.vue +++ /dev/null @@ -1,159 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/supervise/list/crud.tsx b/apps/web-office/src/views/supervise/list/crud.tsx deleted file mode 100644 index e74e550f..00000000 --- a/apps/web-office/src/views/supervise/list/crud.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE, getDictOptions } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(_params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - // { type: 'expand', width: 60, slots: { content: 'expand_content' } }, - { - field: 'taskName', - title: '任务标题', - width: 200, - slots: { - default: 'task-name-slot', - }, - }, - { - field: 'status', - title: '任务状态', - width: 120, - slots: { - default: 'statusSlot', - }, - }, - { - field: 'taskType', - title: '任务类型', - width: 100, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.taskType, - DICT_TYPE.supervise_task_type, - ); - }, - }, - }, - { - field: 'taskContent', - title: '任务内容', - width: 300, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.taskContent, {}); - }, - }, - }, - { - field: 'taskProgress', - title: '任务进度', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.taskProgress, {}); - }, - }, - }, - { - field: 'urgentDegree', - title: '紧急程度', - width: 100, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.urgentDegree, - DICT_TYPE.supervise_emergency_level, - ); - }, - }, - }, - { - field: 'starttime', - title: '开始日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.starttime, 'YYYY-M-D'); - }, - }, - }, - { - field: 'endtime', - title: '截止日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.endtime, 'YYYY-M-D'); - }, - }, - }, - { - field: 'planFinishTime', - title: '预计完成日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.planFinishTime, 'YYYY-M-D'); - }, - }, - }, - { field: 'remarks', title: '备注', minWidth: 200 }, - { title: '操作', width: 80, fixed: 'right', slots: { default: 'operate' } }, - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - taskName: { - title: '任务名称', - key: 'taskName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - taskStatus: { - title: '任务状态', - key: 'taskStatus', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { - value: '1', - label: '未开始', - }, - { - value: '2', - label: '进行中', - }, - { - value: '3', - label: '已完成', - }, - { - value: '4', - label: '已超时', - }, - ], - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - taskType: { - title: '任务类型', - key: 'taskType', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: getDictOptions(DICT_TYPE.supervise_task_type), - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - // department: { - // title: '负责部门', - // key: 'department', - // component: unitComponentProps, - // autoSearchTrigger: 'enter', - // show: true, - // }, - }, - }; -} diff --git a/apps/web-office/src/views/supervise/list/detail-drawer/curd.tsx b/apps/web-office/src/views/supervise/list/detail-drawer/curd.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/web-office/src/views/supervise/list/detail-drawer/detail-drawer.vue b/apps/web-office/src/views/supervise/list/detail-drawer/detail-drawer.vue deleted file mode 100644 index 40b49922..00000000 --- a/apps/web-office/src/views/supervise/list/detail-drawer/detail-drawer.vue +++ /dev/null @@ -1,84 +0,0 @@ - - diff --git a/apps/web-office/src/views/supervise/list/index.vue b/apps/web-office/src/views/supervise/list/index.vue deleted file mode 100644 index 5f3e1bdf..00000000 --- a/apps/web-office/src/views/supervise/list/index.vue +++ /dev/null @@ -1,203 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/supervise/summary/crud.tsx b/apps/web-office/src/views/supervise/summary/crud.tsx deleted file mode 100644 index 0d146cf5..00000000 --- a/apps/web-office/src/views/supervise/summary/crud.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import type { VxeGridPropTypes } from 'vxe-table'; - -import { dict } from '@fast-crud/fast-crud'; - -import { useRender } from '#/hooks/useRender'; -import { DICT_TYPE } from '#/utils/dict'; - -export const PrimaryKey = 'guid'; - -export function getColumns(params: any = {}): VxeGridPropTypes.Columns { - return [ - { - type: 'radio', - width: 40, - slots: { radio: 'radio_cell' }, - align: 'center', - fixed: 'left', - }, - // { type: 'expand', width: 60, slots: { content: 'expand_content' } }, - { - field: 'status', - title: '任务状态', - width: 120, - slots: { - default: 'statusSlot', - }, - }, - // { - // field: 'taskType', - // title: '任务类型', - // width: 100, - // slots: { - // default: ({ row }) => { - // return useRender.renderDict( - // row.taskType, - // DICT_TYPE.supervise_task_type, - // ); - // }, - // }, - // }, - { - field: 'TASK_CONTENT', - title: '任务内容', - width: 300, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.TASK_CONTENT, {}); - }, - }, - }, - { - field: 'PROGRESS', - title: '任务进度', - minWidth: 200, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.taskProgress, {}); - }, - }, - }, - { - field: 'CONTENT', - title: '反馈内容', - width: 300, - slots: { - default: ({ row }) => { - return useRender.renderMultiLineText(row.CONTENT, {}); - }, - }, - }, - { - field: 'urgentDegree', - title: '紧急程度', - width: 100, - slots: { - default: ({ row }) => { - return useRender.renderDict( - row.urgentDegree || '', - DICT_TYPE.supervise_emergency_level, - ); - }, - }, - }, - { - field: 'starttime', - title: '开始日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.starttime, 'YYYY-MM-DD'); - }, - }, - }, - { - field: 'endtime', - title: '截止日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.endtime, 'YYYY-MM-DD'); - }, - }, - }, - { - field: 'PLAN_FINISH_TIME', - title: '计划完成日期', - width: 120, - slots: { - default: ({ row }) => { - return useRender.renderDate(row.PLAN_FINISH_TIME, 'YYYY-MM-DD'); - }, - }, - }, - { field: 'remarks', title: '备注', minWidth: 200 }, - // { title: '操作', width: 120, fixed: 'right', slots: { default: 'operate' } } - ]; -} - -export function getFormSchema(_params: any = {}) { - return { - initialForm: {}, - columns: { - taskName: { - title: '任务名称', - key: 'taskName', - component: { - name: 'a-input', - vModel: 'value', - allowClear: true, - }, - autoSearchTrigger: 'enter', - show: true, - }, - taskStatus: { - title: '任务状态', - key: 'taskStatus', - component: { - name: 'fs-dict-select', - vModel: 'value', - class: 'min-w-[180px]', - allowClear: true, - dict: dict({ - data: [ - { - value: '1', - label: '未开始', - }, - { - value: '2', - label: '进行中', - }, - { - value: '3', - label: '已完成', - }, - { - value: '4', - label: '已超时', - }, - ], - }), - }, - autoSearchTrigger: 'enter', - show: true, - }, - // taskType: { - // title: '任务类型', - // key: 'taskType', - // component: { - // name: 'fs-dict-select', - // vModel: 'value', - // class: 'min-w-[180px]', - // allowClear: true, - // dict: dict({ - // data: getDictOptions(DICT_TYPE.supervise_task_type), - // }), - // }, - // autoSearchTrigger: 'enter', - // show: true, - // }, - // department: { - // title: '负责部门', - // key: 'department', - // component: unitComponentProps, - // autoSearchTrigger: 'enter', - // show: true, - // }, - }, - }; -} diff --git a/apps/web-office/src/views/supervise/summary/index.vue b/apps/web-office/src/views/supervise/summary/index.vue deleted file mode 100644 index 88b12c09..00000000 --- a/apps/web-office/src/views/supervise/summary/index.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/system/dict/crud.tsx b/apps/web-office/src/views/system/dict/crud.tsx deleted file mode 100644 index 11a90d40..00000000 --- a/apps/web-office/src/views/system/dict/crud.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { type CreateCrudOptionsRet, dict, utils } from '@fast-crud/fast-crud'; - -export default function (): CreateCrudOptionsRet { - return { - crudOptions: { - columns: { - age: { - form: { - helper: '正则表达式', - rules: [{ message: '必须为整数', pattern: /^\d+$/ }], - }, - title: '年龄', - type: 'text', - }, - email: { - form: { - rules: [{ message: '请填写正确的邮箱', type: 'email' }], - }, - title: '邮箱', - type: 'text', - }, - name: { - editForm: { - rules: [{ max: 5, message: '姓名长度为2-5', min: 2 }], - }, - form: { - component: { - props: { - showWordLimit: true, - type: 'text', - }, - }, - helper: '添加和编辑时必填,编辑时额外需要校验长度', - rules: [{ message: '请输入姓名', required: true }], - }, - search: { - show: true, - }, - title: '姓名', - type: 'text', - }, - status: { - dict: dict({ - url: '/mock/dicts/OpenStatusEnum', - }), - form: { - rules: [{ message: '请选择一个选项', required: true }], - }, - title: '必选', - type: 'dict-select', - }, - url: { - form: { - rules: [{ message: '请填写正确的url', type: 'url' }], - }, - title: 'URL', - type: 'text', - }, - }, - form: { - afterSubmit(context) { - utils.logger.log('afterSubmit', context); - }, - beforeSubmit(context) { - utils.logger.log('beforeSubmit', context); - }, - row: { - gutter: 20, - }, - }, - request: {}, - settings: { - viewFormUseCellComponent: true, - }, - }, - }; -} diff --git a/apps/web-office/src/views/system/dict/dict-data-edit-modal.vue b/apps/web-office/src/views/system/dict/dict-data-edit-modal.vue deleted file mode 100644 index f2d74cc9..00000000 --- a/apps/web-office/src/views/system/dict/dict-data-edit-modal.vue +++ /dev/null @@ -1,194 +0,0 @@ - - diff --git a/apps/web-office/src/views/system/dict/dict-type-edit-modal.vue b/apps/web-office/src/views/system/dict/dict-type-edit-modal.vue deleted file mode 100644 index c45b1ac4..00000000 --- a/apps/web-office/src/views/system/dict/dict-type-edit-modal.vue +++ /dev/null @@ -1,156 +0,0 @@ - - diff --git a/apps/web-office/src/views/system/dict/index.vue b/apps/web-office/src/views/system/dict/index.vue deleted file mode 100644 index 99c15d29..00000000 --- a/apps/web-office/src/views/system/dict/index.vue +++ /dev/null @@ -1,354 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/system/user/choose-user-modal.vue b/apps/web-office/src/views/system/user/choose-user-modal.vue deleted file mode 100644 index 28aa2278..00000000 --- a/apps/web-office/src/views/system/user/choose-user-modal.vue +++ /dev/null @@ -1,407 +0,0 @@ - - diff --git a/apps/web-office/src/views/user-center/center/index.vue b/apps/web-office/src/views/user-center/center/index.vue deleted file mode 100644 index 324c1a74..00000000 --- a/apps/web-office/src/views/user-center/center/index.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/apps/web-office/src/views/user-center/todo/index.vue b/apps/web-office/src/views/user-center/todo/index.vue deleted file mode 100644 index 0976df2c..00000000 --- a/apps/web-office/src/views/user-center/todo/index.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - - diff --git a/apps/web-office/tailwind.config.mjs b/apps/web-office/tailwind.config.mjs deleted file mode 100644 index f17f556f..00000000 --- a/apps/web-office/tailwind.config.mjs +++ /dev/null @@ -1 +0,0 @@ -export { default } from '@vben/tailwind-config'; diff --git a/apps/web-office/tsconfig.json b/apps/web-office/tsconfig.json deleted file mode 100644 index 9e8c49af..00000000 --- a/apps/web-office/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/web-app.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "#/*": ["./src/*"] - }, - "allowImportingTsExtensions":true, - "noImplicitAny": false - }, - - "references": [{ "path": "./tsconfig.node.json" }], - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] -} diff --git a/apps/web-office/tsconfig.node.json b/apps/web-office/tsconfig.node.json deleted file mode 100644 index c2f0d86c..00000000 --- a/apps/web-office/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/tsconfig/node.json", - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "noEmit": false - }, - "include": ["vite.config.mts"] -} diff --git a/apps/web-office/vite.config.mts b/apps/web-office/vite.config.mts deleted file mode 100644 index a7279c73..00000000 --- a/apps/web-office/vite.config.mts +++ /dev/null @@ -1,90 +0,0 @@ -import { defineConfig } from '@vben/vite-config'; - -import AutoImport from 'unplugin-auto-import/vite'; - -export default defineConfig(async () => { - return { - application: {}, - vite: { - plugins: [ - AutoImport({ - // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 - imports: ['vue'], - include: [/\.[tj]sx?$/, /\.vue$/, /\.vue\?vue/], - resolvers: [ - // // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) - // ElementPlusResolver(), - // // 自动导入图标组件 - // IconsResolver({}) - ], - vueTemplate: true, // 是否在 vue 模板中自动导入 - dts: true, // (false) 配置文件生成位置,默认是根目录 /auto-imports.d.ts - }), - ], - server: { - host: '0.0.0.0', - open: false, - port: 9528, - proxy: { - '/api/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/app/, '/'), - // target: `http://10.71.220.24:8083/rl`, - target: `http://192.168.148.88:8083/rl`, - ws: true, - }, - '/api/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/uc/, '/'), - // target: `http://10.71.220.24:8082`, - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/czg/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.147.238:8083/rl`, - ws: true, - }, - '/api/czg/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/czg\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/zp/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/app/, '/'), - // mock代理目标地址 - target: `http://192.168.153.236:8083/rl`, - ws: true, - }, - '/api/zp/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/zp\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - '/api/xmh/app': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/app/, '/'), - // mock代理目标地址 - // target: `http://192.168.50.209:8083/rl`, - target: `http://192.168.147.144:8083/rl`, - ws: true, - }, - '/api/xmh/uc': { - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api\/xmh\/uc/, '/'), - // mock代理目标地址 - target: `http://192.168.148.88:8082`, - ws: true, - }, - }, - }, - }, - }; -});