From 4cdb8351d44bd78a3d864578fa7b1cf4c6eb8b8d Mon Sep 17 00:00:00 2001 From: liqi Date: Fri, 7 Mar 2025 08:18:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=80=E4=BA=9B=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/extensions.json | 30 - .vscode/global.code-snippets | 37 - .vscode/launch.json | 42 - .vscode/settings.json | 227 --- README.ja-JP.md | 153 -- README.md | 155 +- README.zh-CN.md | 152 -- apps/backend-mock/README.md | 15 - apps/backend-mock/api/auth/codes.ts | 14 - apps/backend-mock/api/auth/login.post.ts | 36 - apps/backend-mock/api/auth/logout.post.ts | 15 - apps/backend-mock/api/auth/refresh.post.ts | 33 - apps/backend-mock/api/status.ts | 5 - apps/backend-mock/api/table/list.ts | 73 - apps/backend-mock/api/test.get.ts | 1 - apps/backend-mock/api/test.post.ts | 1 - apps/backend-mock/api/user/info.ts | 10 - apps/backend-mock/error.ts | 7 - apps/backend-mock/nitro.config.ts | 19 - apps/backend-mock/package.json | 21 - apps/backend-mock/tsconfig.build.json | 4 - apps/backend-mock/tsconfig.json | 3 - apps/backend-mock/utils/cookie-utils.ts | 26 - apps/backend-mock/utils/jwt-utils.ts | 59 - apps/backend-mock/utils/mock-data.ts | 189 -- apps/backend-mock/utils/response.ts | 68 - apps/web-antd/package.json | 1 + apps/web-antd/public/favicon.ico | Bin 5430 -> 491 bytes apps/web-antd/public/img/logo.png | Bin 0 -> 95883 bytes .../public/img/user-default-avatar.png | Bin 0 -> 189548 bytes apps/web-antd/src/adapter/component/index.ts | 4 + apps/web-antd/src/api/core/menu.ts | 2 +- apps/web-antd/src/api/core/upload.ts | 17 + apps/web-antd/src/api/core/user.ts | 2 +- apps/web-antd/src/api/request.ts | 167 +- .../components/description/description.vue | 77 + .../src/components/description/index.ts | 2 + .../src/components/description/types.d.ts | 54 + .../dynamic-schema-form.vue | 104 + .../components/dynamic-schema-form/index.ts | 1 + .../form-description/form-description.vue | 75 + .../src/components/form-description/index.ts | 1 + .../src/components/form/component-map.ts | 32 + .../src/components/form/components/avatar.vue | 62 + .../src/components/form/components/upload.vue | 162 ++ apps/web-antd/src/components/form/index.ts | 7 + .../src/components/form/types/index.d.ts | 7 + apps/web-antd/src/components/icon/icon.vue | 51 + apps/web-antd/src/components/icon/index.ts | 1 + .../src/components/table-action/index.ts | 2 + .../components/table-action/table-action.vue | 225 +++ .../src/components/table-action/types.d.ts | 26 + .../src/components/view/component-map.ts | 22 + .../view/components/api-cascader.vue | 98 + .../view/components/api-checkbox-group.vue | 6 + .../components/view/components/api-dict.vue | 67 + .../view/components/api-radio-group.vue | 6 + .../components/view/components/api-select.vue | 153 ++ .../view/components/api-tree-select.vue | 102 + .../src/components/view/components/avatar.vue | 14 + .../view/components/icon-picker.vue | 22 + .../view/components/radio-group.vue | 7 + .../src/components/view/components/select.vue | 35 + .../src/components/view/components/switch.vue | 25 + .../src/components/view/components/upload.vue | 25 + apps/web-antd/src/layouts/basic.vue | 131 +- apps/web-antd/src/preferences.ts | 38 + apps/web-antd/src/router/guard.ts | 2 +- .../src/router/routes/modules/demos.ts | 60 +- .../web-antd/src/router/routes/modules/sys.ts | 45 + apps/web-antd/src/util/tool.ts | 350 ++++ .../views/_core/authentication/code-login.vue | 8 +- .../src/views/_core/authentication/login.vue | 79 +- .../express/express-company/api/index.ts | 49 + .../express-company/components/modal.vue | 65 + .../express/express-company/config/form.ts | 69 + .../express/express-company/config/search.ts | 37 + .../express/express-company/config/table.ts | 67 + .../express/express-company/index.vue | 155 ++ .../business/order/product-order/api/index.ts | 65 + .../order/product-order/components/detail.vue | 275 +++ .../order/product-order/components/modal.vue | 64 + .../order/product-order/config/form.ts | 71 + .../order/product-order/config/search.ts | 108 ++ .../order/product-order/config/table.ts | 103 + .../business/order/product-order/index.vue | 315 ++++ .../product/service-pack/api/index.ts | 49 + .../product/service-pack/components/modal.vue | 75 + .../product/service-pack/config/form.ts | 243 +++ .../product/service-pack/config/search.ts | 37 + .../product/service-pack/config/table.ts | 84 + .../business/product/service-pack/index.vue | 163 ++ .../src/views/dashboard/workspace/index.vue | 273 +-- apps/web-antd/src/views/demos/antd/index.vue | 66 - .../doctor/doctor-reception/api/index.ts | 47 + .../components/PrescrtionDetail.vue | 292 +++ .../components/WesternModal.vue | 549 ++++++ .../views/doctor/doctor-reception/index.vue | 840 +++++++++ .../src/views/finance/withdrawal/api/index.ts | 61 + .../finance/withdrawal/api/settlement.ts | 51 + .../withdrawal/components/card-modal.vue | 63 + .../withdrawal/components/statistics.vue | 176 ++ .../components/withdrawal-modal.vue | 79 + .../views/finance/withdrawal/config/form.ts | 172 ++ .../views/finance/withdrawal/config/search.ts | 67 + .../withdrawal/config/settlement-search.ts | 75 + .../withdrawal/config/settlement-table.ts | 75 + .../views/finance/withdrawal/config/table.ts | 84 + .../src/views/finance/withdrawal/index.vue | 113 ++ .../src/views/log/api-log/api/index.ts | 11 + .../views/log/api-log/components/modal.vue | 107 ++ .../src/views/log/api-log/config/search.ts | 28 + .../src/views/log/api-log/config/table.ts | 85 + apps/web-antd/src/views/log/api-log/index.vue | 75 + .../src/views/log/ledger-log/api/index.ts | 10 + .../views/log/ledger-log/components/modal.vue | 70 + .../src/views/log/ledger-log/config/search.ts | 28 + .../src/views/log/ledger-log/config/table.ts | 64 + .../src/views/log/ledger-log/index.vue | 66 + .../src/views/log/old-api-log/api/index.ts | 11 + .../log/old-api-log/components/modal.vue | 86 + .../views/log/old-api-log/config/search.ts | 28 + .../src/views/log/old-api-log/config/table.ts | 73 + .../src/views/log/old-api-log/index.vue | 68 + .../src/views/log/op-log/api/index.ts | 10 + .../src/views/log/op-log/components/modal.vue | 71 + .../src/views/log/op-log/config/search.ts | 28 + .../src/views/log/op-log/config/table.ts | 73 + apps/web-antd/src/views/log/op-log/index.vue | 84 + .../src/views/log/order-log/api/index.ts | 10 + .../views/log/order-log/components/modal.vue | 70 + .../src/views/log/order-log/config/search.ts | 28 + .../src/views/log/order-log/config/table.ts | 65 + .../src/views/log/order-log/index.vue | 64 + .../views/log/prescription-log/api/index.ts | 10 + .../log/prescription-log/components/modal.vue | 62 + .../log/prescription-log/config/search.ts | 28 + .../log/prescription-log/config/table.ts | 66 + .../src/views/log/prescription-log/index.vue | 61 + .../src/views/system/admin/api/index.ts | 74 + .../views/system/admin/components/modal.vue | 65 + .../src/views/system/admin/config/form.ts | 172 ++ .../src/views/system/admin/config/search.ts | 56 + .../src/views/system/admin/config/table.ts | 86 + .../web-antd/src/views/system/admin/index.vue | 153 ++ .../src/views/system/menu/api/index.ts | 75 + .../views/system/menu/components/modal.vue | 65 + .../src/views/system/menu/config/form.ts | 180 ++ .../src/views/system/menu/config/search.ts | 47 + .../src/views/system/menu/config/table.ts | 97 + apps/web-antd/src/views/system/menu/index.vue | 169 ++ .../src/views/system/platform/api/index.ts | 41 + .../system/platform/components/modal.vue | 62 + .../src/views/system/platform/config/form.ts | 51 + .../views/system/platform/config/search.ts | 28 + .../src/views/system/platform/config/table.ts | 73 + .../src/views/system/platform/index.vue | 155 ++ .../src/views/system/role/api/index.ts | 69 + .../system/role/components/auth-menu.vue | 141 ++ .../views/system/role/components/modal.vue | 62 + .../src/views/system/role/config/form.ts | 53 + .../src/views/system/role/config/search.ts | 35 + .../src/views/system/role/config/table.ts | 73 + apps/web-antd/src/views/system/role/index.vue | 159 ++ .../src/views/system/supplier/api/index.ts | 49 + .../system/supplier/components/modal.vue | 62 + .../src/views/system/supplier/config/form.ts | 87 + .../views/system/supplier/config/search.ts | 37 + .../src/views/system/supplier/config/table.ts | 94 + .../src/views/system/supplier/index.vue | 168 ++ apps/web-antd/vite.config.mts | 4 +- apps/web-ele/index.html | 35 - apps/web-ele/package.json | 53 - apps/web-ele/postcss.config.mjs | 1 - apps/web-ele/public/favicon.ico | Bin 5430 -> 0 bytes apps/web-ele/src/adapter/component/index.ts | 234 --- apps/web-ele/src/adapter/form.ts | 39 - apps/web-ele/src/adapter/vxe-table.ts | 68 - apps/web-ele/src/api/core/index.ts | 3 - apps/web-ele/src/api/core/menu.ts | 10 - apps/web-ele/src/api/core/user.ts | 10 - apps/web-ele/src/api/index.ts | 1 - apps/web-ele/src/api/request.ts | 113 -- apps/web-ele/src/bootstrap.ts | 51 - apps/web-ele/src/layouts/basic.vue | 157 -- apps/web-ele/src/layouts/index.ts | 6 - apps/web-ele/src/locales/README.md | 3 - apps/web-ele/src/locales/index.ts | 100 - .../src/locales/langs/en-US/demos.json | 13 - .../web-ele/src/locales/langs/en-US/page.json | 14 - .../src/locales/langs/zh-CN/demos.json | 13 - .../web-ele/src/locales/langs/zh-CN/page.json | 14 - apps/web-ele/src/main.ts | 31 - apps/web-ele/src/preferences.ts | 13 - apps/web-ele/src/router/guard.ts | 133 -- apps/web-ele/src/router/index.ts | 37 - apps/web-ele/src/router/routes/core.ts | 88 - apps/web-ele/src/router/routes/index.ts | 37 - .../src/router/routes/modules/dashboard.ts | 40 - .../src/router/routes/modules/demos.ts | 38 - .../web-ele/src/router/routes/modules/vben.ts | 82 - apps/web-ele/src/store/index.ts | 1 - apps/web-ele/src/views/_core/README.md | 3 - apps/web-ele/src/views/_core/about/index.vue | 9 - .../views/_core/authentication/code-login.vue | 69 - .../_core/authentication/forget-password.vue | 43 - .../src/views/_core/authentication/login.vue | 98 - .../_core/authentication/qrcode-login.vue | 10 - .../views/_core/authentication/register.vue | 96 - .../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/dashboard/analytics/index.vue | 90 - .../src/views/dashboard/workspace/index.vue | 266 --- .../web-ele/src/views/demos/element/index.vue | 117 -- apps/web-ele/src/views/demos/form/basic.vue | 181 -- apps/web-ele/tailwind.config.mjs | 1 - apps/web-ele/tsconfig.json | 12 - apps/web-ele/tsconfig.node.json | 10 - apps/web-ele/vite.config.mts | 27 - apps/web-naive/index.html | 35 - apps/web-naive/package.json | 49 - apps/web-naive/postcss.config.mjs | 1 - apps/web-naive/public/favicon.ico | Bin 5430 -> 0 bytes apps/web-naive/src/adapter/component/index.ts | 182 -- apps/web-naive/src/adapter/form.ts | 43 - apps/web-naive/src/adapter/naive.ts | 25 - apps/web-naive/src/adapter/vxe-table.ts | 67 - apps/web-naive/src/api/core/index.ts | 3 - apps/web-naive/src/api/core/menu.ts | 10 - apps/web-naive/src/api/core/user.ts | 10 - apps/web-naive/src/api/index.ts | 1 - apps/web-naive/src/api/request.ts | 112 -- apps/web-naive/src/bootstrap.ts | 46 - apps/web-naive/src/layouts/basic.vue | 158 -- apps/web-naive/src/layouts/index.ts | 6 - apps/web-naive/src/locales/README.md | 3 - apps/web-naive/src/locales/index.ts | 38 - .../src/locales/langs/en-US/demos.json | 14 - .../src/locales/langs/en-US/page.json | 14 - .../src/locales/langs/zh-CN/demos.json | 14 - .../src/locales/langs/zh-CN/page.json | 14 - apps/web-naive/src/main.ts | 31 - apps/web-naive/src/preferences.ts | 13 - apps/web-naive/src/router/guard.ts | 132 -- apps/web-naive/src/router/index.ts | 37 - apps/web-naive/src/router/routes/core.ts | 88 - apps/web-naive/src/router/routes/index.ts | 37 - .../src/router/routes/modules/dashboard.ts | 40 - .../src/router/routes/modules/demos.ts | 46 - .../src/router/routes/modules/vben.ts | 82 - apps/web-naive/src/store/index.ts | 1 - apps/web-naive/src/views/_core/README.md | 3 - .../web-naive/src/views/_core/about/index.vue | 9 - .../views/_core/authentication/code-login.vue | 69 - .../_core/authentication/forget-password.vue | 43 - .../src/views/_core/authentication/login.vue | 98 - .../_core/authentication/qrcode-login.vue | 10 - .../views/_core/authentication/register.vue | 96 - .../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/dashboard/analytics/index.vue | 90 - .../src/views/dashboard/workspace/index.vue | 266 --- apps/web-naive/src/views/demos/form/basic.vue | 143 -- .../web-naive/src/views/demos/naive/index.vue | 68 - .../web-naive/src/views/demos/table/index.vue | 38 - apps/web-naive/tailwind.config.mjs | 1 - apps/web-naive/tsconfig.json | 12 - apps/web-naive/tsconfig.node.json | 10 - apps/web-naive/vite.config.mts | 20 - docs/.vitepress/components/demo-preview.vue | 45 - docs/.vitepress/components/index.ts | 1 - docs/.vitepress/components/preview-group.vue | 108 -- docs/.vitepress/config/en.mts | 229 --- docs/.vitepress/config/index.mts | 25 - .../.vitepress/config/plugins/demo-preview.ts | 143 -- docs/.vitepress/config/shared.mts | 172 -- docs/.vitepress/config/zh.mts | 352 ---- .../theme/components/site-layout.vue | 97 - .../theme/components/vben-contributors.vue | 29 - docs/.vitepress/theme/index.ts | 29 - docs/.vitepress/theme/plugins/hm.ts | 28 - docs/.vitepress/theme/styles/base.css | 22 - docs/.vitepress/theme/styles/index.ts | 4 - docs/.vitepress/theme/styles/variables.css | 127 -- docs/package.json | 35 - docs/src/_env/adapter/component.ts | 127 -- docs/src/_env/adapter/form.ts | 47 - docs/src/_env/adapter/vxe-table.ts | 70 - docs/src/_env/node/adapter/form.ts | 4 - docs/src/_env/node/adapter/vxe-table.ts | 3 - docs/src/commercial/community.md | 30 - docs/src/commercial/customized.md | 12 - docs/src/commercial/technical-support.md | 8 - .../common-ui/vben-count-to-animator.md | 52 - docs/src/components/common-ui/vben-drawer.md | 137 -- docs/src/components/common-ui/vben-form.md | 542 ------ docs/src/components/common-ui/vben-modal.md | 150 -- .../components/common-ui/vben-vxe-table.md | 242 --- docs/src/components/introduction.md | 15 - docs/src/components/layout-ui/page.md | 44 - .../vben-count-to-animator/basic/index.vue | 6 - .../vben-count-to-animator/custom/index.vue | 12 - .../demos/vben-drawer/auto-height/drawer.vue | 45 - .../demos/vben-drawer/auto-height/index.vue | 21 - docs/src/demos/vben-drawer/basic/index.vue | 11 - docs/src/demos/vben-drawer/dynamic/drawer.vue | 26 - docs/src/demos/vben-drawer/dynamic/index.vue | 30 - docs/src/demos/vben-drawer/extra/drawer.vue | 8 - docs/src/demos/vben-drawer/extra/index.vue | 21 - .../demos/vben-drawer/shared-data/drawer.vue | 26 - .../demos/vben-drawer/shared-data/index.vue | 26 - docs/src/demos/vben-form/api/index.vue | 236 --- docs/src/demos/vben-form/basic/index.vue | 231 --- docs/src/demos/vben-form/custom/index.vue | 68 - docs/src/demos/vben-form/dynamic/index.vue | 168 -- docs/src/demos/vben-form/query/index.vue | 94 - docs/src/demos/vben-form/rules/index.vue | 189 -- .../demos/vben-modal/auto-height/index.vue | 21 - .../demos/vben-modal/auto-height/modal.vue | 45 - docs/src/demos/vben-modal/basic/index.vue | 11 - docs/src/demos/vben-modal/draggable/index.vue | 21 - docs/src/demos/vben-modal/draggable/modal.vue | 10 - docs/src/demos/vben-modal/dynamic/index.vue | 30 - docs/src/demos/vben-modal/dynamic/modal.vue | 38 - docs/src/demos/vben-modal/extra/index.vue | 21 - docs/src/demos/vben-modal/extra/modal.vue | 8 - .../demos/vben-modal/shared-data/index.vue | 26 - .../demos/vben-modal/shared-data/modal.vue | 26 - docs/src/demos/vben-vxe-table/basic/index.vue | 85 - .../vben-vxe-table/custom-cell/index.vue | 105 -- .../demos/vben-vxe-table/edit-cell/index.vue | 55 - .../demos/vben-vxe-table/edit-row/index.vue | 92 - docs/src/demos/vben-vxe-table/fixed/index.vue | 67 - docs/src/demos/vben-vxe-table/form/index.vue | 127 -- docs/src/demos/vben-vxe-table/mock-api.ts | 36 - .../src/demos/vben-vxe-table/remote/index.vue | 112 -- docs/src/demos/vben-vxe-table/table-data.ts | 384 ---- docs/src/demos/vben-vxe-table/tree/index.vue | 80 - .../demos/vben-vxe-table/virtual/index.vue | 64 - docs/src/en/guide/essentials/build.md | 243 --- docs/src/en/guide/essentials/concept.md | 70 - docs/src/en/guide/essentials/development.md | 188 -- .../en/guide/essentials/external-module.md | 58 - docs/src/en/guide/essentials/icons.md | 78 - docs/src/en/guide/essentials/route.md | 606 ------ docs/src/en/guide/essentials/server.md | 356 ---- docs/src/en/guide/essentials/settings.md | 515 ----- docs/src/en/guide/essentials/styles.md | 106 -- docs/src/en/guide/in-depth/check-updates.md | 48 - docs/src/en/guide/in-depth/features.md | 84 - docs/src/en/guide/in-depth/layout.md | 1 - docs/src/en/guide/in-depth/loading.md | 44 - docs/src/en/guide/in-depth/locale.md | 227 --- docs/src/en/guide/in-depth/login.md | 119 -- docs/src/en/guide/in-depth/theme.md | 1293 ------------- docs/src/en/guide/in-depth/ui-framework.md | 17 - docs/src/en/guide/introduction/changelog.md | 3 - docs/src/en/guide/introduction/quick-start.md | 95 - docs/src/en/guide/introduction/roadmap.md | 3 - docs/src/en/guide/introduction/thin.md | 67 - docs/src/en/guide/introduction/vben.md | 49 - docs/src/en/guide/introduction/why.md | 9 - docs/src/en/guide/other/faq.md | 159 -- docs/src/en/guide/other/project-update.md | 54 - docs/src/en/guide/other/remove-code.md | 18 - docs/src/en/guide/project/changeset.md | 21 - docs/src/en/guide/project/cli.md | 106 -- docs/src/en/guide/project/dir.md | 68 - docs/src/en/guide/project/standard.md | 165 -- docs/src/en/guide/project/tailwindcss.md | 13 - docs/src/en/guide/project/test.md | 33 - docs/src/en/guide/project/vite.md | 33 - docs/src/en/index.md | 76 - docs/src/friend-links/index.md | 27 - docs/src/guide/essentials/build.md | 243 --- docs/src/guide/essentials/concept.md | 70 - docs/src/guide/essentials/development.md | 188 -- docs/src/guide/essentials/external-module.md | 58 - docs/src/guide/essentials/icons.md | 78 - docs/src/guide/essentials/route.md | 600 ------ docs/src/guide/essentials/server.md | 359 ---- docs/src/guide/essentials/settings.md | 541 ------ docs/src/guide/essentials/styles.md | 106 -- docs/src/guide/in-depth/check-updates.md | 48 - docs/src/guide/in-depth/features.md | 84 - docs/src/guide/in-depth/layout.md | 1 - docs/src/guide/in-depth/loading.md | 46 - docs/src/guide/in-depth/locale.md | 227 --- docs/src/guide/in-depth/login.md | 220 --- docs/src/guide/in-depth/theme.md | 1293 ------------- docs/src/guide/in-depth/ui-framework.md | 17 - docs/src/guide/introduction/changelog.md | 3 - docs/src/guide/introduction/quick-start.md | 111 -- docs/src/guide/introduction/roadmap.md | 3 - docs/src/guide/introduction/thin.md | 94 - docs/src/guide/introduction/vben.md | 49 - docs/src/guide/introduction/why.md | 23 - docs/src/guide/other/faq.md | 159 -- docs/src/guide/other/project-update.md | 55 - docs/src/guide/other/remove-code.md | 18 - docs/src/guide/project/changeset.md | 21 - docs/src/guide/project/cli.md | 113 -- docs/src/guide/project/dir.md | 68 - docs/src/guide/project/standard.md | 165 -- docs/src/guide/project/tailwindcss.md | 13 - docs/src/guide/project/test.md | 33 - docs/src/guide/project/vite.md | 33 - docs/src/index.md | 108 -- docs/src/public/favicon.ico | Bin 5430 -> 0 bytes docs/src/public/guide/devtools.png | Bin 402172 -> 0 bytes docs/src/public/guide/loading.png | Bin 89250 -> 0 bytes docs/src/public/guide/locale.png | Bin 482275 -> 0 bytes docs/src/public/guide/login-expired.png | Bin 569303 -> 0 bytes docs/src/public/guide/login.png | Bin 480224 -> 0 bytes docs/src/public/guide/preferences.png | Bin 126147 -> 0 bytes docs/src/public/guide/qq.png | Bin 457417 -> 0 bytes docs/src/public/guide/qq_channel.png | Bin 458478 -> 0 bytes docs/src/public/guide/report.png | Bin 1024246 -> 0 bytes docs/src/public/guide/test.png | Bin 254971 -> 0 bytes docs/src/public/guide/update-notice.png | Bin 410070 -> 0 bytes docs/src/public/logos/nitro.svg | 42 - docs/src/public/logos/shadcn-ui.svg | 1 - docs/src/public/logos/turborepo.svg | 32 - docs/src/public/logos/vite.svg | 15 - docs/src/sponsor/personal.md | 12 - docs/tailwind.config.mjs | 11 - docs/tsconfig.json | 19 - package.json | 11 +- packages/@core/base/typings/src/basic.d.ts | 2 +- packages/@core/preferences/src/types.ts | 2 + .../shadcn-ui/src/components/logo/logo.vue | 25 +- packages/constants/src/core.ts | 8 +- .../dashboard/workbench/workbench-project.vue | 2 +- .../common-ui/src/ui/fallback/fallback.ts | 2 +- .../common-ui/src/ui/fallback/fallback.vue | 4 +- .../src/authentication/authentication.vue | 17 +- packages/effects/layouts/src/basic/layout.vue | 1 + .../request/src/request-client/types.ts | 2 +- packages/icons/src/svg/icons/logo.svg | 1678 +++++++++++++++++ packages/icons/src/svg/index.ts | 2 + .../src/langs/zh-CN/authentication.json | 4 +- packages/stores/src/modules/user.ts | 2 +- packages/types/src/user.ts | 14 +- playground/src/layouts/basic.vue | 2 +- .../src/views/_core/authentication/login.vue | 2 +- .../src/views/dashboard/workspace/index.vue | 2 +- pnpm-lock.yaml | 1593 +--------------- 453 files changed, 13336 insertions(+), 24197 deletions(-) delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/global.code-snippets delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 README.ja-JP.md delete mode 100644 README.zh-CN.md delete mode 100644 apps/backend-mock/README.md delete mode 100644 apps/backend-mock/api/auth/codes.ts delete mode 100644 apps/backend-mock/api/auth/login.post.ts delete mode 100644 apps/backend-mock/api/auth/logout.post.ts delete mode 100644 apps/backend-mock/api/auth/refresh.post.ts delete mode 100644 apps/backend-mock/api/status.ts delete mode 100644 apps/backend-mock/api/table/list.ts delete mode 100644 apps/backend-mock/api/test.get.ts delete mode 100644 apps/backend-mock/api/test.post.ts delete mode 100644 apps/backend-mock/api/user/info.ts delete mode 100644 apps/backend-mock/error.ts delete mode 100644 apps/backend-mock/nitro.config.ts delete mode 100644 apps/backend-mock/package.json delete mode 100644 apps/backend-mock/tsconfig.build.json delete mode 100644 apps/backend-mock/tsconfig.json delete mode 100644 apps/backend-mock/utils/cookie-utils.ts delete mode 100644 apps/backend-mock/utils/jwt-utils.ts delete mode 100644 apps/backend-mock/utils/mock-data.ts delete mode 100644 apps/backend-mock/utils/response.ts create mode 100644 apps/web-antd/public/img/logo.png create mode 100644 apps/web-antd/public/img/user-default-avatar.png create mode 100644 apps/web-antd/src/api/core/upload.ts create mode 100644 apps/web-antd/src/components/description/description.vue create mode 100644 apps/web-antd/src/components/description/index.ts create mode 100644 apps/web-antd/src/components/description/types.d.ts create mode 100644 apps/web-antd/src/components/dynamic-schema-form/dynamic-schema-form.vue create mode 100644 apps/web-antd/src/components/dynamic-schema-form/index.ts create mode 100644 apps/web-antd/src/components/form-description/form-description.vue create mode 100644 apps/web-antd/src/components/form-description/index.ts create mode 100644 apps/web-antd/src/components/form/component-map.ts create mode 100644 apps/web-antd/src/components/form/components/avatar.vue create mode 100644 apps/web-antd/src/components/form/components/upload.vue create mode 100644 apps/web-antd/src/components/form/index.ts create mode 100644 apps/web-antd/src/components/form/types/index.d.ts create mode 100644 apps/web-antd/src/components/icon/icon.vue create mode 100644 apps/web-antd/src/components/icon/index.ts create mode 100644 apps/web-antd/src/components/table-action/index.ts create mode 100644 apps/web-antd/src/components/table-action/table-action.vue create mode 100644 apps/web-antd/src/components/table-action/types.d.ts create mode 100644 apps/web-antd/src/components/view/component-map.ts create mode 100644 apps/web-antd/src/components/view/components/api-cascader.vue create mode 100644 apps/web-antd/src/components/view/components/api-checkbox-group.vue create mode 100644 apps/web-antd/src/components/view/components/api-dict.vue create mode 100644 apps/web-antd/src/components/view/components/api-radio-group.vue create mode 100644 apps/web-antd/src/components/view/components/api-select.vue create mode 100644 apps/web-antd/src/components/view/components/api-tree-select.vue create mode 100644 apps/web-antd/src/components/view/components/avatar.vue create mode 100644 apps/web-antd/src/components/view/components/icon-picker.vue create mode 100644 apps/web-antd/src/components/view/components/radio-group.vue create mode 100644 apps/web-antd/src/components/view/components/select.vue create mode 100644 apps/web-antd/src/components/view/components/switch.vue create mode 100644 apps/web-antd/src/components/view/components/upload.vue create mode 100644 apps/web-antd/src/router/routes/modules/sys.ts create mode 100644 apps/web-antd/src/util/tool.ts create mode 100644 apps/web-antd/src/views/business/express/express-company/api/index.ts create mode 100644 apps/web-antd/src/views/business/express/express-company/components/modal.vue create mode 100644 apps/web-antd/src/views/business/express/express-company/config/form.ts create mode 100644 apps/web-antd/src/views/business/express/express-company/config/search.ts create mode 100644 apps/web-antd/src/views/business/express/express-company/config/table.ts create mode 100644 apps/web-antd/src/views/business/express/express-company/index.vue create mode 100644 apps/web-antd/src/views/business/order/product-order/api/index.ts create mode 100644 apps/web-antd/src/views/business/order/product-order/components/detail.vue create mode 100644 apps/web-antd/src/views/business/order/product-order/components/modal.vue create mode 100644 apps/web-antd/src/views/business/order/product-order/config/form.ts create mode 100644 apps/web-antd/src/views/business/order/product-order/config/search.ts create mode 100644 apps/web-antd/src/views/business/order/product-order/config/table.ts create mode 100644 apps/web-antd/src/views/business/order/product-order/index.vue create mode 100644 apps/web-antd/src/views/business/product/service-pack/api/index.ts create mode 100644 apps/web-antd/src/views/business/product/service-pack/components/modal.vue create mode 100644 apps/web-antd/src/views/business/product/service-pack/config/form.ts create mode 100644 apps/web-antd/src/views/business/product/service-pack/config/search.ts create mode 100644 apps/web-antd/src/views/business/product/service-pack/config/table.ts create mode 100644 apps/web-antd/src/views/business/product/service-pack/index.vue delete mode 100644 apps/web-antd/src/views/demos/antd/index.vue create mode 100644 apps/web-antd/src/views/doctor/doctor-reception/api/index.ts create mode 100644 apps/web-antd/src/views/doctor/doctor-reception/components/PrescrtionDetail.vue create mode 100644 apps/web-antd/src/views/doctor/doctor-reception/components/WesternModal.vue create mode 100644 apps/web-antd/src/views/doctor/doctor-reception/index.vue create mode 100644 apps/web-antd/src/views/finance/withdrawal/api/index.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/api/settlement.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/components/card-modal.vue create mode 100644 apps/web-antd/src/views/finance/withdrawal/components/statistics.vue create mode 100644 apps/web-antd/src/views/finance/withdrawal/components/withdrawal-modal.vue create mode 100644 apps/web-antd/src/views/finance/withdrawal/config/form.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/config/search.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/config/settlement-search.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/config/settlement-table.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/config/table.ts create mode 100644 apps/web-antd/src/views/finance/withdrawal/index.vue create mode 100644 apps/web-antd/src/views/log/api-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/api-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/api-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/api-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/api-log/index.vue create mode 100644 apps/web-antd/src/views/log/ledger-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/ledger-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/ledger-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/ledger-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/ledger-log/index.vue create mode 100644 apps/web-antd/src/views/log/old-api-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/old-api-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/old-api-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/old-api-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/old-api-log/index.vue create mode 100644 apps/web-antd/src/views/log/op-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/op-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/op-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/op-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/op-log/index.vue create mode 100644 apps/web-antd/src/views/log/order-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/order-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/order-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/order-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/order-log/index.vue create mode 100644 apps/web-antd/src/views/log/prescription-log/api/index.ts create mode 100644 apps/web-antd/src/views/log/prescription-log/components/modal.vue create mode 100644 apps/web-antd/src/views/log/prescription-log/config/search.ts create mode 100644 apps/web-antd/src/views/log/prescription-log/config/table.ts create mode 100644 apps/web-antd/src/views/log/prescription-log/index.vue create mode 100644 apps/web-antd/src/views/system/admin/api/index.ts create mode 100644 apps/web-antd/src/views/system/admin/components/modal.vue create mode 100644 apps/web-antd/src/views/system/admin/config/form.ts create mode 100644 apps/web-antd/src/views/system/admin/config/search.ts create mode 100644 apps/web-antd/src/views/system/admin/config/table.ts create mode 100644 apps/web-antd/src/views/system/admin/index.vue create mode 100644 apps/web-antd/src/views/system/menu/api/index.ts create mode 100644 apps/web-antd/src/views/system/menu/components/modal.vue create mode 100644 apps/web-antd/src/views/system/menu/config/form.ts create mode 100644 apps/web-antd/src/views/system/menu/config/search.ts create mode 100644 apps/web-antd/src/views/system/menu/config/table.ts create mode 100644 apps/web-antd/src/views/system/menu/index.vue create mode 100644 apps/web-antd/src/views/system/platform/api/index.ts create mode 100644 apps/web-antd/src/views/system/platform/components/modal.vue create mode 100644 apps/web-antd/src/views/system/platform/config/form.ts create mode 100644 apps/web-antd/src/views/system/platform/config/search.ts create mode 100644 apps/web-antd/src/views/system/platform/config/table.ts create mode 100644 apps/web-antd/src/views/system/platform/index.vue create mode 100644 apps/web-antd/src/views/system/role/api/index.ts create mode 100644 apps/web-antd/src/views/system/role/components/auth-menu.vue create mode 100644 apps/web-antd/src/views/system/role/components/modal.vue create mode 100644 apps/web-antd/src/views/system/role/config/form.ts create mode 100644 apps/web-antd/src/views/system/role/config/search.ts create mode 100644 apps/web-antd/src/views/system/role/config/table.ts create mode 100644 apps/web-antd/src/views/system/role/index.vue create mode 100644 apps/web-antd/src/views/system/supplier/api/index.ts create mode 100644 apps/web-antd/src/views/system/supplier/components/modal.vue create mode 100644 apps/web-antd/src/views/system/supplier/config/form.ts create mode 100644 apps/web-antd/src/views/system/supplier/config/search.ts create mode 100644 apps/web-antd/src/views/system/supplier/config/table.ts create mode 100644 apps/web-antd/src/views/system/supplier/index.vue delete mode 100644 apps/web-ele/index.html delete mode 100644 apps/web-ele/package.json delete mode 100644 apps/web-ele/postcss.config.mjs delete mode 100644 apps/web-ele/public/favicon.ico delete mode 100644 apps/web-ele/src/adapter/component/index.ts delete mode 100644 apps/web-ele/src/adapter/form.ts delete mode 100644 apps/web-ele/src/adapter/vxe-table.ts delete mode 100644 apps/web-ele/src/api/core/index.ts delete mode 100644 apps/web-ele/src/api/core/menu.ts delete mode 100644 apps/web-ele/src/api/core/user.ts delete mode 100644 apps/web-ele/src/api/index.ts delete mode 100644 apps/web-ele/src/api/request.ts delete mode 100644 apps/web-ele/src/bootstrap.ts delete mode 100644 apps/web-ele/src/layouts/basic.vue delete mode 100644 apps/web-ele/src/layouts/index.ts delete mode 100644 apps/web-ele/src/locales/README.md delete mode 100644 apps/web-ele/src/locales/index.ts delete mode 100644 apps/web-ele/src/locales/langs/en-US/demos.json delete mode 100644 apps/web-ele/src/locales/langs/en-US/page.json delete mode 100644 apps/web-ele/src/locales/langs/zh-CN/demos.json delete mode 100644 apps/web-ele/src/locales/langs/zh-CN/page.json delete mode 100644 apps/web-ele/src/main.ts delete mode 100644 apps/web-ele/src/preferences.ts delete mode 100644 apps/web-ele/src/router/guard.ts delete mode 100644 apps/web-ele/src/router/index.ts delete mode 100644 apps/web-ele/src/router/routes/core.ts delete mode 100644 apps/web-ele/src/router/routes/index.ts delete mode 100644 apps/web-ele/src/router/routes/modules/dashboard.ts delete mode 100644 apps/web-ele/src/router/routes/modules/demos.ts delete mode 100644 apps/web-ele/src/router/routes/modules/vben.ts delete mode 100644 apps/web-ele/src/store/index.ts delete mode 100644 apps/web-ele/src/views/_core/README.md delete mode 100644 apps/web-ele/src/views/_core/about/index.vue delete mode 100644 apps/web-ele/src/views/_core/authentication/code-login.vue delete mode 100644 apps/web-ele/src/views/_core/authentication/forget-password.vue delete mode 100644 apps/web-ele/src/views/_core/authentication/login.vue delete mode 100644 apps/web-ele/src/views/_core/authentication/qrcode-login.vue delete mode 100644 apps/web-ele/src/views/_core/authentication/register.vue delete mode 100644 apps/web-ele/src/views/_core/fallback/coming-soon.vue delete mode 100644 apps/web-ele/src/views/_core/fallback/forbidden.vue delete mode 100644 apps/web-ele/src/views/_core/fallback/internal-error.vue delete mode 100644 apps/web-ele/src/views/_core/fallback/not-found.vue delete mode 100644 apps/web-ele/src/views/_core/fallback/offline.vue delete mode 100644 apps/web-ele/src/views/dashboard/analytics/index.vue delete mode 100644 apps/web-ele/src/views/dashboard/workspace/index.vue delete mode 100644 apps/web-ele/src/views/demos/element/index.vue delete mode 100644 apps/web-ele/src/views/demos/form/basic.vue delete mode 100644 apps/web-ele/tailwind.config.mjs delete mode 100644 apps/web-ele/tsconfig.json delete mode 100644 apps/web-ele/tsconfig.node.json delete mode 100644 apps/web-ele/vite.config.mts delete mode 100644 apps/web-naive/index.html delete mode 100644 apps/web-naive/package.json delete mode 100644 apps/web-naive/postcss.config.mjs delete mode 100644 apps/web-naive/public/favicon.ico delete mode 100644 apps/web-naive/src/adapter/component/index.ts delete mode 100644 apps/web-naive/src/adapter/form.ts delete mode 100644 apps/web-naive/src/adapter/naive.ts delete mode 100644 apps/web-naive/src/adapter/vxe-table.ts delete mode 100644 apps/web-naive/src/api/core/index.ts delete mode 100644 apps/web-naive/src/api/core/menu.ts delete mode 100644 apps/web-naive/src/api/core/user.ts delete mode 100644 apps/web-naive/src/api/index.ts delete mode 100644 apps/web-naive/src/api/request.ts delete mode 100644 apps/web-naive/src/bootstrap.ts delete mode 100644 apps/web-naive/src/layouts/basic.vue delete mode 100644 apps/web-naive/src/layouts/index.ts delete mode 100644 apps/web-naive/src/locales/README.md delete mode 100644 apps/web-naive/src/locales/index.ts delete mode 100644 apps/web-naive/src/locales/langs/en-US/demos.json delete mode 100644 apps/web-naive/src/locales/langs/en-US/page.json delete mode 100644 apps/web-naive/src/locales/langs/zh-CN/demos.json delete mode 100644 apps/web-naive/src/locales/langs/zh-CN/page.json delete mode 100644 apps/web-naive/src/main.ts delete mode 100644 apps/web-naive/src/preferences.ts delete mode 100644 apps/web-naive/src/router/guard.ts delete mode 100644 apps/web-naive/src/router/index.ts delete mode 100644 apps/web-naive/src/router/routes/core.ts delete mode 100644 apps/web-naive/src/router/routes/index.ts delete mode 100644 apps/web-naive/src/router/routes/modules/dashboard.ts delete mode 100644 apps/web-naive/src/router/routes/modules/demos.ts delete mode 100644 apps/web-naive/src/router/routes/modules/vben.ts delete mode 100644 apps/web-naive/src/store/index.ts delete mode 100644 apps/web-naive/src/views/_core/README.md delete mode 100644 apps/web-naive/src/views/_core/about/index.vue delete mode 100644 apps/web-naive/src/views/_core/authentication/code-login.vue delete mode 100644 apps/web-naive/src/views/_core/authentication/forget-password.vue delete mode 100644 apps/web-naive/src/views/_core/authentication/login.vue delete mode 100644 apps/web-naive/src/views/_core/authentication/qrcode-login.vue delete mode 100644 apps/web-naive/src/views/_core/authentication/register.vue delete mode 100644 apps/web-naive/src/views/_core/fallback/coming-soon.vue delete mode 100644 apps/web-naive/src/views/_core/fallback/forbidden.vue delete mode 100644 apps/web-naive/src/views/_core/fallback/internal-error.vue delete mode 100644 apps/web-naive/src/views/_core/fallback/not-found.vue delete mode 100644 apps/web-naive/src/views/_core/fallback/offline.vue delete mode 100644 apps/web-naive/src/views/dashboard/analytics/index.vue delete mode 100644 apps/web-naive/src/views/dashboard/workspace/index.vue delete mode 100644 apps/web-naive/src/views/demos/form/basic.vue delete mode 100644 apps/web-naive/src/views/demos/naive/index.vue delete mode 100644 apps/web-naive/src/views/demos/table/index.vue delete mode 100644 apps/web-naive/tailwind.config.mjs delete mode 100644 apps/web-naive/tsconfig.json delete mode 100644 apps/web-naive/tsconfig.node.json delete mode 100644 apps/web-naive/vite.config.mts delete mode 100644 docs/.vitepress/components/demo-preview.vue delete mode 100644 docs/.vitepress/components/index.ts delete mode 100644 docs/.vitepress/components/preview-group.vue delete mode 100644 docs/.vitepress/config/en.mts delete mode 100644 docs/.vitepress/config/index.mts delete mode 100644 docs/.vitepress/config/plugins/demo-preview.ts delete mode 100644 docs/.vitepress/config/shared.mts delete mode 100644 docs/.vitepress/config/zh.mts delete mode 100644 docs/.vitepress/theme/components/site-layout.vue delete mode 100644 docs/.vitepress/theme/components/vben-contributors.vue delete mode 100644 docs/.vitepress/theme/index.ts delete mode 100644 docs/.vitepress/theme/plugins/hm.ts delete mode 100644 docs/.vitepress/theme/styles/base.css delete mode 100644 docs/.vitepress/theme/styles/index.ts delete mode 100644 docs/.vitepress/theme/styles/variables.css delete mode 100644 docs/package.json delete mode 100644 docs/src/_env/adapter/component.ts delete mode 100644 docs/src/_env/adapter/form.ts delete mode 100644 docs/src/_env/adapter/vxe-table.ts delete mode 100644 docs/src/_env/node/adapter/form.ts delete mode 100644 docs/src/_env/node/adapter/vxe-table.ts delete mode 100644 docs/src/commercial/community.md delete mode 100644 docs/src/commercial/customized.md delete mode 100644 docs/src/commercial/technical-support.md delete mode 100644 docs/src/components/common-ui/vben-count-to-animator.md delete mode 100644 docs/src/components/common-ui/vben-drawer.md delete mode 100644 docs/src/components/common-ui/vben-form.md delete mode 100644 docs/src/components/common-ui/vben-modal.md delete mode 100644 docs/src/components/common-ui/vben-vxe-table.md delete mode 100644 docs/src/components/introduction.md delete mode 100644 docs/src/components/layout-ui/page.md delete mode 100644 docs/src/demos/vben-count-to-animator/basic/index.vue delete mode 100644 docs/src/demos/vben-count-to-animator/custom/index.vue delete mode 100644 docs/src/demos/vben-drawer/auto-height/drawer.vue delete mode 100644 docs/src/demos/vben-drawer/auto-height/index.vue delete mode 100644 docs/src/demos/vben-drawer/basic/index.vue delete mode 100644 docs/src/demos/vben-drawer/dynamic/drawer.vue delete mode 100644 docs/src/demos/vben-drawer/dynamic/index.vue delete mode 100644 docs/src/demos/vben-drawer/extra/drawer.vue delete mode 100644 docs/src/demos/vben-drawer/extra/index.vue delete mode 100644 docs/src/demos/vben-drawer/shared-data/drawer.vue delete mode 100644 docs/src/demos/vben-drawer/shared-data/index.vue delete mode 100644 docs/src/demos/vben-form/api/index.vue delete mode 100644 docs/src/demos/vben-form/basic/index.vue delete mode 100644 docs/src/demos/vben-form/custom/index.vue delete mode 100644 docs/src/demos/vben-form/dynamic/index.vue delete mode 100644 docs/src/demos/vben-form/query/index.vue delete mode 100644 docs/src/demos/vben-form/rules/index.vue delete mode 100644 docs/src/demos/vben-modal/auto-height/index.vue delete mode 100644 docs/src/demos/vben-modal/auto-height/modal.vue delete mode 100644 docs/src/demos/vben-modal/basic/index.vue delete mode 100644 docs/src/demos/vben-modal/draggable/index.vue delete mode 100644 docs/src/demos/vben-modal/draggable/modal.vue delete mode 100644 docs/src/demos/vben-modal/dynamic/index.vue delete mode 100644 docs/src/demos/vben-modal/dynamic/modal.vue delete mode 100644 docs/src/demos/vben-modal/extra/index.vue delete mode 100644 docs/src/demos/vben-modal/extra/modal.vue delete mode 100644 docs/src/demos/vben-modal/shared-data/index.vue delete mode 100644 docs/src/demos/vben-modal/shared-data/modal.vue delete mode 100644 docs/src/demos/vben-vxe-table/basic/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/custom-cell/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/edit-cell/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/edit-row/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/fixed/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/form/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/mock-api.ts delete mode 100644 docs/src/demos/vben-vxe-table/remote/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/table-data.ts delete mode 100644 docs/src/demos/vben-vxe-table/tree/index.vue delete mode 100644 docs/src/demos/vben-vxe-table/virtual/index.vue delete mode 100644 docs/src/en/guide/essentials/build.md delete mode 100644 docs/src/en/guide/essentials/concept.md delete mode 100644 docs/src/en/guide/essentials/development.md delete mode 100644 docs/src/en/guide/essentials/external-module.md delete mode 100644 docs/src/en/guide/essentials/icons.md delete mode 100644 docs/src/en/guide/essentials/route.md delete mode 100644 docs/src/en/guide/essentials/server.md delete mode 100644 docs/src/en/guide/essentials/settings.md delete mode 100644 docs/src/en/guide/essentials/styles.md delete mode 100644 docs/src/en/guide/in-depth/check-updates.md delete mode 100644 docs/src/en/guide/in-depth/features.md delete mode 100644 docs/src/en/guide/in-depth/layout.md delete mode 100644 docs/src/en/guide/in-depth/loading.md delete mode 100644 docs/src/en/guide/in-depth/locale.md delete mode 100644 docs/src/en/guide/in-depth/login.md delete mode 100644 docs/src/en/guide/in-depth/theme.md delete mode 100644 docs/src/en/guide/in-depth/ui-framework.md delete mode 100644 docs/src/en/guide/introduction/changelog.md delete mode 100644 docs/src/en/guide/introduction/quick-start.md delete mode 100644 docs/src/en/guide/introduction/roadmap.md delete mode 100644 docs/src/en/guide/introduction/thin.md delete mode 100644 docs/src/en/guide/introduction/vben.md delete mode 100644 docs/src/en/guide/introduction/why.md delete mode 100644 docs/src/en/guide/other/faq.md delete mode 100644 docs/src/en/guide/other/project-update.md delete mode 100644 docs/src/en/guide/other/remove-code.md delete mode 100644 docs/src/en/guide/project/changeset.md delete mode 100644 docs/src/en/guide/project/cli.md delete mode 100644 docs/src/en/guide/project/dir.md delete mode 100644 docs/src/en/guide/project/standard.md delete mode 100644 docs/src/en/guide/project/tailwindcss.md delete mode 100644 docs/src/en/guide/project/test.md delete mode 100644 docs/src/en/guide/project/vite.md delete mode 100644 docs/src/en/index.md delete mode 100644 docs/src/friend-links/index.md delete mode 100644 docs/src/guide/essentials/build.md delete mode 100644 docs/src/guide/essentials/concept.md delete mode 100644 docs/src/guide/essentials/development.md delete mode 100644 docs/src/guide/essentials/external-module.md delete mode 100644 docs/src/guide/essentials/icons.md delete mode 100644 docs/src/guide/essentials/route.md delete mode 100644 docs/src/guide/essentials/server.md delete mode 100644 docs/src/guide/essentials/settings.md delete mode 100644 docs/src/guide/essentials/styles.md delete mode 100644 docs/src/guide/in-depth/check-updates.md delete mode 100644 docs/src/guide/in-depth/features.md delete mode 100644 docs/src/guide/in-depth/layout.md delete mode 100644 docs/src/guide/in-depth/loading.md delete mode 100644 docs/src/guide/in-depth/locale.md delete mode 100644 docs/src/guide/in-depth/login.md delete mode 100644 docs/src/guide/in-depth/theme.md delete mode 100644 docs/src/guide/in-depth/ui-framework.md delete mode 100644 docs/src/guide/introduction/changelog.md delete mode 100644 docs/src/guide/introduction/quick-start.md delete mode 100644 docs/src/guide/introduction/roadmap.md delete mode 100644 docs/src/guide/introduction/thin.md delete mode 100644 docs/src/guide/introduction/vben.md delete mode 100644 docs/src/guide/introduction/why.md delete mode 100644 docs/src/guide/other/faq.md delete mode 100644 docs/src/guide/other/project-update.md delete mode 100644 docs/src/guide/other/remove-code.md delete mode 100644 docs/src/guide/project/changeset.md delete mode 100644 docs/src/guide/project/cli.md delete mode 100644 docs/src/guide/project/dir.md delete mode 100644 docs/src/guide/project/standard.md delete mode 100644 docs/src/guide/project/tailwindcss.md delete mode 100644 docs/src/guide/project/test.md delete mode 100644 docs/src/guide/project/vite.md delete mode 100644 docs/src/index.md delete mode 100644 docs/src/public/favicon.ico delete mode 100644 docs/src/public/guide/devtools.png delete mode 100644 docs/src/public/guide/loading.png delete mode 100644 docs/src/public/guide/locale.png delete mode 100644 docs/src/public/guide/login-expired.png delete mode 100644 docs/src/public/guide/login.png delete mode 100644 docs/src/public/guide/preferences.png delete mode 100644 docs/src/public/guide/qq.png delete mode 100644 docs/src/public/guide/qq_channel.png delete mode 100644 docs/src/public/guide/report.png delete mode 100644 docs/src/public/guide/test.png delete mode 100644 docs/src/public/guide/update-notice.png delete mode 100644 docs/src/public/logos/nitro.svg delete mode 100644 docs/src/public/logos/shadcn-ui.svg delete mode 100644 docs/src/public/logos/turborepo.svg delete mode 100644 docs/src/public/logos/vite.svg delete mode 100644 docs/src/sponsor/personal.md delete mode 100644 docs/tailwind.config.mjs delete mode 100644 docs/tsconfig.json create mode 100644 packages/icons/src/svg/icons/logo.svg diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index e8dc9ed9..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "recommendations": [ - // Vue 3 的语言支持 - "Vue.volar", - // 将 ESLint JavaScript 集成到 VS Code 中。 - "dbaeumer.vscode-eslint", - // Visual Studio Code 的官方 Stylelint 扩展 - "stylelint.vscode-stylelint", - // 使用 Prettier 的代码格式化程序 - "esbenp.prettier-vscode", - // 支持 dotenv 文件语法 - "mikestead.dotenv", - // 源代码的拼写检查器 - "streetsidesoftware.code-spell-checker", - // Tailwind CSS 的官方 VS Code 插件 - "bradlc.vscode-tailwindcss", - // iconify 图标插件 - "antfu.iconify", - // i18n 插件 - "Lokalise.i18n-ally", - // CSS 变量提示 - "vunguyentuan.vscode-css-variables", - // 在 package.json 中显示 PNPM catalog 的版本 - "antfu.pnpm-catalog-lens" - ], - "unwantedRecommendations": [ - // 和 volar 冲突 - "octref.vetur" - ] -} diff --git a/.vscode/global.code-snippets b/.vscode/global.code-snippets deleted file mode 100644 index 7604b014..00000000 --- a/.vscode/global.code-snippets +++ /dev/null @@ -1,37 +0,0 @@ -{ - "import": { - "scope": "javascript,typescript", - "prefix": "im", - "body": ["import { $2 } from '$1';"], - "description": "Import a module", - }, - "export-all": { - "scope": "javascript,typescript", - "prefix": "ex", - "body": ["export * from '$1';"], - "description": "Export a module", - }, - "vue-script-setup": { - "scope": "vue", - "prefix": "", - "const props = defineProps<{", - " modelValue?: boolean,", - "}>()", - "$1", - "", - "", - "", - ], - }, - "vue-computed": { - "scope": "javascript,typescript,vue", - "prefix": "com", - "body": ["computed(() => { $1 })"], - }, -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index e9673304..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "version": "0.2.0", - "configurations": [ - { - "type": "chrome", - "name": "vben admin playground dev", - "request": "launch", - "url": "http://localhost:5555", - "env": { "NODE_ENV": "development" }, - "sourceMaps": true, - "webRoot": "${workspaceFolder}/playground" - }, - { - "type": "chrome", - "name": "vben admin antd dev", - "request": "launch", - "url": "http://localhost:5666", - "env": { "NODE_ENV": "development" }, - "sourceMaps": true, - "webRoot": "${workspaceFolder}/apps/web-antd" - }, - { - "type": "chrome", - "name": "vben admin ele dev", - "request": "launch", - "url": "http://localhost:5777", - "env": { "NODE_ENV": "development" }, - "sourceMaps": true, - "webRoot": "${workspaceFolder}/apps/web-ele" - }, - { - "type": "chrome", - "name": "vben admin naive dev", - "request": "launch", - "url": "http://localhost:5888", - "env": { "NODE_ENV": "development" }, - "sourceMaps": true, - "webRoot": "${workspaceFolder}/apps/web-naive" - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 8b76b276..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,227 +0,0 @@ -{ - "tailwindCSS.experimental.configFile": "internal/tailwind-config/src/index.ts", - // workbench - "workbench.list.smoothScrolling": true, - "workbench.startupEditor": "newUntitledFile", - "workbench.tree.indent": 10, - "workbench.editor.highlightModifiedTabs": true, - "workbench.editor.closeOnFileDelete": true, - "workbench.editor.limit.enabled": true, - "workbench.editor.limit.perEditorGroup": true, - "workbench.editor.limit.value": 5, - - // editor - "editor.tabSize": 2, - "editor.detectIndentation": false, - "editor.cursorBlinking": "expand", - "editor.largeFileOptimizations": false, - "editor.accessibilitySupport": "off", - "editor.cursorSmoothCaretAnimation": "on", - "editor.guides.bracketPairs": "active", - "editor.inlineSuggest.enabled": true, - "editor.suggestSelection": "recentlyUsedByPrefix", - "editor.acceptSuggestionOnEnter": "smart", - "editor.suggest.snippetsPreventQuickSuggestions": false, - "editor.stickyScroll.enabled": true, - "editor.hover.sticky": true, - "editor.suggest.insertMode": "replace", - "editor.bracketPairColorization.enabled": true, - "editor.autoClosingBrackets": "beforeWhitespace", - "editor.autoClosingDelete": "always", - "editor.autoClosingOvertype": "always", - "editor.autoClosingQuotes": "beforeWhitespace", - "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.fixAll.stylelint": "explicit", - "source.organizeImports": "never" - }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[html]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[css]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[scss]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[vue]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - // extensions - "extensions.ignoreRecommendations": true, - - // terminal - "terminal.integrated.cursorBlinking": true, - "terminal.integrated.persistentSessionReviveProcess": "never", - "terminal.integrated.tabs.enabled": true, - "terminal.integrated.scrollback": 10000, - "terminal.integrated.stickyScroll.enabled": true, - - // files - "files.eol": "\n", - "files.insertFinalNewline": true, - "files.simpleDialog.enable": true, - "files.associations": { - "*.ejs": "html", - "*.art": "html", - "**/tsconfig.json": "jsonc", - "*.json": "jsonc", - "package.json": "json" - }, - - "files.exclude": { - "**/.eslintcache": true, - "**/bower_components": true, - "**/.turbo": true, - "**/.idea": true, - "**/tmp": true, - "**/.git": true, - "**/.svn": true, - "**/.hg": true, - "**/CVS": true, - "**/.stylelintcache": true, - "**/.DS_Store": true, - "**/vite.config.mts.*": true, - "**/tea.yaml": true - }, - "files.watcherExclude": { - "**/.git/objects/**": true, - "**/.git/subtree-cache/**": true, - "**/.vscode/**": true, - "**/node_modules/**": true, - "**/tmp/**": true, - "**/bower_components/**": true, - "**/dist/**": true, - "**/yarn.lock": true - }, - - // search - "search.searchEditor.singleClickBehaviour": "peekDefinition", - "search.followSymlinks": false, - // 在使用搜索功能时,将这些文件夹/文件排除在外 - "search.exclude": { - "**/node_modules": true, - "**/*.log": true, - "**/*.log*": true, - "**/bower_components": true, - "**/dist": true, - "**/elehukouben": true, - "**/.git": true, - "**/.github": true, - "**/.gitignore": true, - "**/.svn": true, - "**/.DS_Store": true, - "**/.vitepress/cache": true, - "**/.idea": true, - "**/.vscode": false, - "**/.yarn": true, - "**/tmp": true, - "*.xml": true, - "out": true, - "dist": true, - "node_modules": true, - "CHANGELOG.md": true, - "**/pnpm-lock.yaml": true, - "**/yarn.lock": true - }, - - "debug.onTaskErrors": "debugAnyway", - "diffEditor.ignoreTrimWhitespace": false, - "npm.packageManager": "pnpm", - - "css.validate": false, - "less.validate": false, - "scss.validate": false, - - // extension - "emmet.showSuggestionsAsSnippets": true, - "emmet.triggerExpansionOnTab": false, - - "errorLens.enabledDiagnosticLevels": ["warning", "error"], - "errorLens.excludeBySource": ["cSpell", "Grammarly", "eslint"], - - "stylelint.enable": true, - "stylelint.packageManager": "pnpm", - "stylelint.validate": ["css", "less", "postcss", "scss", "vue"], - "stylelint.customSyntax": "postcss-html", - "stylelint.snippet": ["css", "less", "postcss", "scss", "vue"], - - "typescript.inlayHints.enumMemberValues.enabled": true, - "typescript.preferences.preferTypeOnlyAutoImports": true, - "typescript.preferences.includePackageJsonAutoImports": "on", - - "eslint.validate": [ - "javascript", - "typescript", - "javascriptreact", - "typescriptreact", - "vue", - "html", - "markdown", - "json", - "jsonc", - "json5" - ], - - "tailwindCSS.experimental.classRegex": [ - ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] - ], - - "github.copilot.enable": { - "*": true, - "markdown": true, - "plaintext": false, - "yaml": false - }, - - "cssVariables.lookupFiles": ["packages/core/base/design/src/**/*.css"], - - "i18n-ally.localesPaths": [ - "packages/locales/src/langs", - "playground/src/locales/langs", - "apps/*/src/locales/langs" - ], - "i18n-ally.pathMatcher": "{locale}/{namespace}.{ext}", - "i18n-ally.enabledParsers": ["json"], - "i18n-ally.sourceLanguage": "en", - "i18n-ally.displayLanguage": "zh-CN", - "i18n-ally.enabledFrameworks": ["vue", "react"], - "i18n-ally.keystyle": "nested", - "i18n-ally.sortKeys": true, - "i18n-ally.namespace": true, - - // 控制相关文件嵌套展示 - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - "*.ts": "$(capture).test.ts, $(capture).test.tsx, $(capture).spec.ts, $(capture).spec.tsx, $(capture).d.ts", - "*.tsx": "$(capture).test.ts, $(capture).test.tsx, $(capture).spec.ts, $(capture).spec.tsx,$(capture).d.ts", - "*.env": "$(capture).env.*", - "README.md": "README*,CHANGELOG*,LICENSE,CNAME", - "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,.gitattributes,.gitignore,.gitpod.yml,.npmrc,.browserslistrc,.node-version,.git*,.tazerc.json", - "eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,cspell.json", - "tailwind.config.mjs": "postcss.*" - }, - "commentTranslate.hover.enabled": false, - "commentTranslate.multiLineMerge": true, - "vue.server.hybridMode": true, - "typescript.tsdk": "node_modules/typescript/lib", - "oxc.enable": false -} diff --git a/README.ja-JP.md b/README.ja-JP.md deleted file mode 100644 index baa4cc44..00000000 --- a/README.ja-JP.md +++ /dev/null @@ -1,153 +0,0 @@ -
VbenAdmin Logo

- -[![license](https://img.shields.io/github/license/anncwb/vue-vben-admin.svg)](LICENSE) - -

Vue Vben Admin

-
- -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vbenjs_vue-vben-admin&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vbenjs_vue-vben-admin) ![codeql](https://github.com/vbenjs/vue-vben-admin/actions/workflows/codeql.yml/badge.svg) ![build](https://github.com/vbenjs/vue-vben-admin/actions/workflows/build.yml/badge.svg) ![ci](https://github.com/vbenjs/vue-vben-admin/actions/workflows/ci.yml/badge.svg) ![deploy](https://github.com/vbenjs/vue-vben-admin/actions/workflows/deploy.yml/badge.svg) - -**日本語** | [English](./README.md) | [中文](./README.zh-CN.md) - -## 紹介 - -Vue Vben Adminは、最新の`vue3`、`vite`、`TypeScript`などの主流技術を使用して開発された、無料でオープンソースの中・後端テンプレートです。すぐに使える中・後端のフロントエンドソリューションとして、学習の参考にもなります。 - -## アップグレード通知 - -これは最新バージョン5.0であり、以前のバージョンとは互換性がありません。新しいプロジェクトを開始する場合は、最新バージョンを使用することをお勧めします。古いバージョンを表示したい場合は、[v2ブランチ](https://github.com/vbenjs/vue-vben-admin/tree/v2)を使用してください。 - -## 特徴 - -- **最新技術スタック**: Vue 3やViteなどの最先端フロントエンド技術で開発 -- **TypeScript**: アプリケーション規模のJavaScriptのための言語 -- **テーマ**: 複数のテーマカラーが利用可能で、カスタマイズオプションも豊富 -- **国際化**: 完全な内蔵国際化サポート -- **権限管理**: 動的ルートベースの権限生成ソリューションを内蔵 - -## プレビュー - -- [Vben Admin](https://vben.pro/) - フルバージョンの中国語サイト - -テストアカウント: vben/123456 - -

- VbenAdmin Logo - VbenAdmin Logo - VbenAdmin Logo -

- -### Gitpodを使用 - -Gitpod(GitHub用の無料オンライン開発環境)でプロジェクトを開き、すぐにコーディングを開始します。 - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/vbenjs/vue-vben-admin) - -## ドキュメント - -[ドキュメント](https://doc.vben.pro/) - -## インストールと使用 - -- プロジェクトコードを取得 - -```bash -git clone https://github.com/vbenjs/vue-vben-admin.git -``` - -- 依存関係のインストール - -```bash -cd vue-vben-admin - -corepack enable - -pnpm install - -``` - -- 実行 - -```bash -pnpm dev -``` - -- ビルド - -```bash -pnpm build -``` - -## 変更ログ - -[CHANGELOG](https://github.com/vbenjs/vue-vben-admin/releases) - -## 貢献方法 - -ご参加をお待ちしております![Issueを提出](https://github.com/anncwb/vue-vben-admin/issues/new/choose)するか、Pull Requestを送信してください。 - -**Pull Request:** - -1. コードをフォーク! -2. 自分のブランチを作成: `git checkout -b feat/xxxx` -3. 変更をコミット: `git commit -am 'feat(function): add xxxxx'` -4. ブランチをプッシュ: `git push origin feat/xxxx` -5. `pull request`を送信 - -## Git貢献提出規則 - -- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 規則 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)) - - - `feat` 新機能の追加 - - `fix` 問題/バグの修正 - - `style` コードスタイルに関連し、実行結果に影響しない - - `perf` 最適化/パフォーマンス向上 - - `refactor` リファクタリング - - `revert` 変更の取り消し - - `test` テスト関連 - - `docs` ドキュメント/注釈 - - `chore` 依存関係の更新/スキャフォールディング設定の変更など - - `ci` 継続的インテグレーション - - `types` 型定義ファイルの変更 - - `wip` 開発中 - -## ブラウザサポート - -ローカル開発には`Chrome 80+`ブラウザを推奨します - -モダンブラウザをサポートし、IEはサポートしません - -| [ Edge](http://godban.github.io/browsers-support-badges/)
IE | [ Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | -| :-: | :-: | :-: | :-: | :-: | -| サポートしない | 最新2バージョン | 最新2バージョン | 最新2バージョン | 最新2バージョン | - -## メンテナー - -[@Vben](https://github.com/anncwb) - -## スター歴史 - -[![Star History Chart](https://api.star-history.com/svg?repos=vbenjs/vue-vben-admin&type=Date)](https://star-history.com/#vbenjs/vue-vben-admin&Date) - -## 寄付 - -このプロジェクトが役に立つと思われた場合、作者にコーヒーを一杯おごってサポートを示すことができます! - -![donate](https://unpkg.com/@vbenjs/static-source@0.1.7/source/sponsor.png) - -Paypal Me - -## 貢献者 - - - Contributors - - -## Discord - -- [Github Discussions](https://github.com/anncwb/vue-vben-admin/discussions) - -## ライセンス - -[MIT © Vben-2020](./LICENSE) diff --git a/README.md b/README.md index e84c8392..cc951b47 100644 --- a/README.md +++ b/README.md @@ -1,152 +1,7 @@ -
VbenAdmin Logo

+# 新萧康后台 -[![license](https://img.shields.io/github/license/anncwb/vue-vben-admin.svg)](LICENSE) - -

Vue Vben Admin

-
- -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vbenjs_vue-vben-admin&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vbenjs_vue-vben-admin) ![codeql](https://github.com/vbenjs/vue-vben-admin/actions/workflows/codeql.yml/badge.svg) ![build](https://github.com/vbenjs/vue-vben-admin/actions/workflows/build.yml/badge.svg) ![ci](https://github.com/vbenjs/vue-vben-admin/actions/workflows/ci.yml/badge.svg) ![deploy](https://github.com/vbenjs/vue-vben-admin/actions/workflows/deploy.yml/badge.svg) - -**English** | [中文](./README.zh-CN.md) | [日本語](./README.ja-JP.md) - -## Introduction - -Vue Vben Admin is a free and open source middle and back-end template. Using the latest `vue3`, `vite`, `TypeScript` and other mainstream technology development, the out-of-the-box middle and back-end front-end solutions can also be used for learning reference. - -## Upgrade Notice - -This is the latest version, 5.0, and it is not compatible with previous versions. If you are starting a new project, it is recommended to use the latest version. If you wish to view the old version, please use the [v2 branch](https://github.com/vbenjs/vue-vben-admin/tree/v2). - -## Feature - -- **Latest Technology Stack**: Developed with cutting-edge front-end technologies like Vue 3 and Vite -- **TypeScript**: A language for application-scale JavaScript -- **Themes**: Multiple theme colors available with customizable options -- **Internationalization**: Comprehensive built-in internationalization support -- **Permissions**: Built-in solution for dynamic route-based permission generation - -## Preview - -- [Vben Admin](https://vben.pro/) - Full version Chinese site - -Test Account: vben/123456 - -

- VbenAdmin Logo - VbenAdmin Logo - VbenAdmin Logo -

- -### Use Gitpod - -Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/vbenjs/vue-vben-admin) - -## Documentation - -[Document](https://doc.vben.pro/) - -## Install and use - -- Get the project code - -```bash -git clone https://github.com/vbenjs/vue-vben-admin.git +## 按钮权限 +使用这种方式来授权 +```vue +v-access:code="['Admin'] ``` - -- Installation dependencies - -```bash -cd vue-vben-admin - -corepack enable - -pnpm install -``` - -- run - -```bash -pnpm dev -``` - -- build - -```bash -pnpm build -``` - -## Change Log - -[CHANGELOG](https://github.com/vbenjs/vue-vben-admin/releases) - -## How to contribute - -You are very welcome to join![Raise an issue](https://github.com/anncwb/vue-vben-admin/issues/new/choose) Or submit a Pull Request。 - -**Pull Request:** - -1. Fork code! -2. Create your own branch: `git checkout -b feat/xxxx` -3. Submit your changes: `git commit -am 'feat(function): add xxxxx'` -4. Push your branch: `git push origin feat/xxxx` -5. submit`pull request` - -## Git Contribution submission specification - -- reference [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) specification ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)) - - - `feat` Add new features - - `fix` Fix the problem/BUG - - `style` The code style is related and does not affect the running result - - `perf` Optimization/performance improvement - - `refactor` Refactor - - `revert` Undo edit - - `test` Test related - - `docs` Documentation/notes - - `chore` Dependency update/scaffolding configuration modification etc. - - `ci` Continuous integration - - `types` Type definition file changes - - `wip` In development - -## Browser support - -The `Chrome 80+` browser is recommended for local development - -Support modern browsers, not IE - -| [ Edge](http://godban.github.io/browsers-support-badges/)
IE | [ Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | -| :-: | :-: | :-: | :-: | :-: | -| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions | - -## Maintainer - -[@Vben](https://github.com/anncwb) - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=vbenjs/vue-vben-admin&type=Date)](https://star-history.com/#vbenjs/vue-vben-admin&Date) - -## Donate - -If you think this project is helpful to you, you can help the author buy a cup of coffee to show your support! - -![donate](https://unpkg.com/@vbenjs/static-source@0.1.7/source/sponsor.png) - -Paypal Me - -## Contributor - - - Contributors - - -## Discord - -- [Github Discussions](https://github.com/anncwb/vue-vben-admin/discussions) - -## License - -[MIT © Vben-2020](./LICENSE) diff --git a/README.zh-CN.md b/README.zh-CN.md deleted file mode 100644 index e2f05bb9..00000000 --- a/README.zh-CN.md +++ /dev/null @@ -1,152 +0,0 @@ -
VbenAdmin Logo

- -[![license](https://img.shields.io/github/license/anncwb/vue-vben-admin.svg)](LICENSE) - -

Vue Vben Admin

-
- -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vbenjs_vue-vben-admin&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vbenjs_vue-vben-admin) ![codeql](https://github.com/vbenjs/vue-vben-admin/actions/workflows/codeql.yml/badge.svg) ![build](https://github.com/vbenjs/vue-vben-admin/actions/workflows/build.yml/badge.svg) ![ci](https://github.com/vbenjs/vue-vben-admin/actions/workflows/ci.yml/badge.svg) ![deploy](https://github.com/vbenjs/vue-vben-admin/actions/workflows/deploy.yml/badge.svg) - -**中文** | [English](./README.md) | [日本語](./README.ja-JP.md) - -## 简介 - -Vue Vben Admin 是 Vue Vben Admin 的升级版本。作为一个免费开源的中后台模板,它采用了最新的 Vue 3、Vite、TypeScript 等主流技术开发,开箱即用,可用于中后台前端开发,也适合学习参考。 - -## 升级提示 - -该版本为最新版本`5.0`, 与其他版本不兼容,如果你是新项目,建议使用最新版本。如果你想查看旧版本,请使用 [v2 分支](https://github.com/vbenjs/vue-vben-admin/tree/v2) - -## 特性 - -- **最新技术栈**:使用 Vue3/vite 等前端前沿技术开发 -- **TypeScript**: 应用程序级 JavaScript 的语言 -- **主题**:提供多套主题色彩,可配置自定义主题 -- **国际化**:内置完善的国际化方案 -- **权限** 内置完善的动态路由权限生成方案 - -## 预览 - -- [Vben Admin](https://vben.pro/) - 完整版中文站点 - -测试账号: vben/123456 - -

- VbenAdmin Logo - VbenAdmin Logo - VbenAdmin Logo -

- -### 使用 Gitpod - -在 Gitpod(适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/vbenjs/vue-vben-admin) - -## 文档 - -[文档地址](https://doc.vben.pro/) - -## 安装使用 - -- 获取项目代码 - -```bash -git clone https://github.com/vbenjs/vue-vben-admin.git -``` - -- 安装依赖 - -```bash -cd vue-vben-admin - -corepack enable - -pnpm install -``` - -- 运行 - -```bash -pnpm dev -``` - -- 打包 - -```bash -pnpm build -``` - -## 更新日志 - -[CHANGELOG](https://github.com/vbenjs/vue-vben-admin/releases) - -## 如何贡献 - -非常欢迎你的加入![提一个 Issue](https://github.com/anncwb/vue-vben-admin/issues/new/choose) 或者提交一个 Pull Request。 - -**Pull Request:** - -1. Fork 代码! -2. 创建自己的分支: `git checkout -b feature/xxxx` -3. 提交你的修改: `git commit -am 'feat(function): add xxxxx'` -4. 推送您的分支: `git push origin feature/xxxx` -5. 提交`pull request` - -## Git 贡献提交规范 - -- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)) - - - `feat` 增加新功能 - - `fix` 修复问题/BUG - - `style` 代码风格相关无影响运行结果的 - - `perf` 优化/性能提升 - - `refactor` 重构 - - `revert` 撤销修改 - - `test` 测试相关 - - `docs` 文档/注释 - - `chore` 依赖更新/脚手架配置修改等 - - `ci` 持续集成 - - `types` 类型定义文件更改 - - `wip` 开发中 - -## 浏览器支持 - -本地开发推荐使用`Chrome 80+` 浏览器 - -支持现代浏览器, 不支持 IE - -| [ Edge](http://godban.github.io/browsers-support-badges/)
IE | [ Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | -| :-: | :-: | :-: | :-: | :-: | -| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions | - -## 维护者 - -[@Vben](https://github.com/anncwb) - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=vbenjs/vue-vben-admin&type=Date)](https://star-history.com/#vbenjs/vue-vben-admin&Date) - -## 捐赠 - -如果你觉得这个项目对你有帮助,你可以帮作者买一杯咖啡表示支持! - -![donate](https://unpkg.com/@vbenjs/static-source@0.1.7/source/sponsor.png) - -Paypal Me - -## Contributor - - - Contributors - - -## Discord - -- [Github Discussions](https://github.com/anncwb/vue-vben-admin/discussions) - -## License - -[MIT © Vben-2020](./LICENSE) diff --git a/apps/backend-mock/README.md b/apps/backend-mock/README.md deleted file mode 100644 index 401bda76..00000000 --- a/apps/backend-mock/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# @vben/backend-mock - -## Description - -Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都是模拟的,用于前端开发时提供数据支持。线上环境不再提供 mock 集成,可自行部署服务或者对接真实数据,由于 `mock.js` 等工具有一些限制,比如上传文件不行、无法模拟复杂的逻辑等,所以这里使用了真实的后端服务来实现。唯一麻烦的是本地需要同时启动后端服务和前端服务,但是这样可以更好的模拟真实环境。该服务不需要手动启动,已经集成在 vite 插件内,随应用一起启用。 - -## Running the app - -```bash -# development -$ pnpm run start - -# production mode -$ pnpm run build -``` diff --git a/apps/backend-mock/api/auth/codes.ts b/apps/backend-mock/api/auth/codes.ts deleted file mode 100644 index 7ba01270..00000000 --- a/apps/backend-mock/api/auth/codes.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -export default eventHandler((event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - - const codes = - MOCK_CODES.find((item) => item.username === userinfo.username)?.codes ?? []; - - return useResponseSuccess(codes); -}); diff --git a/apps/backend-mock/api/auth/login.post.ts b/apps/backend-mock/api/auth/login.post.ts deleted file mode 100644 index df5737a2..00000000 --- a/apps/backend-mock/api/auth/login.post.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - clearRefreshTokenCookie, - setRefreshTokenCookie, -} from '~/utils/cookie-utils'; -import { generateAccessToken, generateRefreshToken } from '~/utils/jwt-utils'; -import { forbiddenResponse } from '~/utils/response'; - -export default defineEventHandler(async (event) => { - const { password, username } = await readBody(event); - if (!password || !username) { - setResponseStatus(event, 400); - return useResponseError( - 'BadRequestException', - 'Username and password are required', - ); - } - - const findUser = MOCK_USERS.find( - (item) => item.username === username && item.password === password, - ); - - if (!findUser) { - clearRefreshTokenCookie(event); - return forbiddenResponse(event, 'Username or password is incorrect.'); - } - - const accessToken = generateAccessToken(findUser); - const refreshToken = generateRefreshToken(findUser); - - setRefreshTokenCookie(event, refreshToken); - - return useResponseSuccess({ - ...findUser, - accessToken, - }); -}); diff --git a/apps/backend-mock/api/auth/logout.post.ts b/apps/backend-mock/api/auth/logout.post.ts deleted file mode 100644 index ac6afe94..00000000 --- a/apps/backend-mock/api/auth/logout.post.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - clearRefreshTokenCookie, - getRefreshTokenFromCookie, -} from '~/utils/cookie-utils'; - -export default defineEventHandler(async (event) => { - const refreshToken = getRefreshTokenFromCookie(event); - if (!refreshToken) { - return useResponseSuccess(''); - } - - clearRefreshTokenCookie(event); - - return useResponseSuccess(''); -}); diff --git a/apps/backend-mock/api/auth/refresh.post.ts b/apps/backend-mock/api/auth/refresh.post.ts deleted file mode 100644 index 7df4d34f..00000000 --- a/apps/backend-mock/api/auth/refresh.post.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { - clearRefreshTokenCookie, - getRefreshTokenFromCookie, - setRefreshTokenCookie, -} from '~/utils/cookie-utils'; -import { verifyRefreshToken } from '~/utils/jwt-utils'; -import { forbiddenResponse } from '~/utils/response'; - -export default defineEventHandler(async (event) => { - const refreshToken = getRefreshTokenFromCookie(event); - if (!refreshToken) { - return forbiddenResponse(event); - } - - clearRefreshTokenCookie(event); - - const userinfo = verifyRefreshToken(refreshToken); - if (!userinfo) { - return forbiddenResponse(event); - } - - const findUser = MOCK_USERS.find( - (item) => item.username === userinfo.username, - ); - if (!findUser) { - return forbiddenResponse(event); - } - const accessToken = generateAccessToken(findUser); - - setRefreshTokenCookie(event, refreshToken); - - return accessToken; -}); diff --git a/apps/backend-mock/api/status.ts b/apps/backend-mock/api/status.ts deleted file mode 100644 index 41773e1d..00000000 --- a/apps/backend-mock/api/status.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default eventHandler((event) => { - const { status } = getQuery(event); - setResponseStatus(event, Number(status)); - return useResponseError(`${status}`); -}); diff --git a/apps/backend-mock/api/table/list.ts b/apps/backend-mock/api/table/list.ts deleted file mode 100644 index 55b88eaa..00000000 --- a/apps/backend-mock/api/table/list.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { faker } from '@faker-js/faker'; -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -function generateMockDataList(count: number) { - const dataList = []; - - for (let i = 0; i < count; i++) { - const dataItem = { - id: faker.string.uuid(), - imageUrl: faker.image.avatar(), - imageUrl2: faker.image.avatar(), - open: faker.datatype.boolean(), - status: faker.helpers.arrayElement(['success', 'error', 'warning']), - productName: faker.commerce.productName(), - price: faker.commerce.price(), - currency: faker.finance.currencyCode(), - quantity: faker.number.int({ min: 1, max: 100 }), - available: faker.datatype.boolean(), - category: faker.commerce.department(), - releaseDate: faker.date.past(), - rating: faker.number.float({ min: 1, max: 5 }), - description: faker.commerce.productDescription(), - weight: faker.number.float({ min: 0.1, max: 10 }), - color: faker.color.human(), - inProduction: faker.datatype.boolean(), - tags: Array.from({ length: 3 }, () => faker.commerce.productAdjective()), - }; - - dataList.push(dataItem); - } - - return dataList; -} - -const mockData = generateMockDataList(100); - -export default eventHandler(async (event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - - await sleep(600); - - const { page, pageSize, sortBy, sortOrder } = getQuery(event); - const listData = structuredClone(mockData); - if (sortBy && Reflect.has(listData[0], sortBy as string)) { - listData.sort((a, b) => { - if (sortOrder === 'asc') { - if (sortBy === 'price') { - return ( - Number.parseFloat(a[sortBy as string]) - - Number.parseFloat(b[sortBy as string]) - ); - } else { - return a[sortBy as string] > b[sortBy as string] ? 1 : -1; - } - } else { - if (sortBy === 'price') { - return ( - Number.parseFloat(b[sortBy as string]) - - Number.parseFloat(a[sortBy as string]) - ); - } else { - return a[sortBy as string] < b[sortBy as string] ? 1 : -1; - } - } - }); - } - - return usePageResponseSuccess(page as string, pageSize as string, listData); -}); diff --git a/apps/backend-mock/api/test.get.ts b/apps/backend-mock/api/test.get.ts deleted file mode 100644 index ca4a500b..00000000 --- a/apps/backend-mock/api/test.get.ts +++ /dev/null @@ -1 +0,0 @@ -export default defineEventHandler(() => 'Test get handler'); diff --git a/apps/backend-mock/api/test.post.ts b/apps/backend-mock/api/test.post.ts deleted file mode 100644 index 698cf211..00000000 --- a/apps/backend-mock/api/test.post.ts +++ /dev/null @@ -1 +0,0 @@ -export default defineEventHandler(() => 'Test post handler'); diff --git a/apps/backend-mock/api/user/info.ts b/apps/backend-mock/api/user/info.ts deleted file mode 100644 index cfa2346c..00000000 --- a/apps/backend-mock/api/user/info.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -export default eventHandler((event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - return useResponseSuccess(userinfo); -}); diff --git a/apps/backend-mock/error.ts b/apps/backend-mock/error.ts deleted file mode 100644 index e20beac4..00000000 --- a/apps/backend-mock/error.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NitroErrorHandler } from 'nitropack'; - -const errorHandler: NitroErrorHandler = function (error, event) { - event.node.res.end(`[Error Handler] ${error.stack}`); -}; - -export default errorHandler; diff --git a/apps/backend-mock/nitro.config.ts b/apps/backend-mock/nitro.config.ts deleted file mode 100644 index c2d7297f..00000000 --- a/apps/backend-mock/nitro.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import errorHandler from './error'; - -process.env.COMPATIBILITY_DATE = new Date().toISOString(); -export default defineNitroConfig({ - devErrorHandler: errorHandler, - errorHandler: '~/error', - routeRules: { - '/api/**': { - cors: true, - headers: { - 'Access-Control-Allow-Credentials': 'true', - 'Access-Control-Allow-Headers': '*', - 'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE', - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Expose-Headers': '*', - }, - }, - }, -}); diff --git a/apps/backend-mock/package.json b/apps/backend-mock/package.json deleted file mode 100644 index cc0b8d53..00000000 --- a/apps/backend-mock/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@vben/backend-mock", - "version": "0.0.1", - "description": "", - "private": true, - "license": "MIT", - "author": "", - "scripts": { - "build": "nitro build", - "start": "nitro dev" - }, - "dependencies": { - "@faker-js/faker": "catalog:", - "jsonwebtoken": "catalog:", - "nitropack": "catalog:" - }, - "devDependencies": { - "@types/jsonwebtoken": "catalog:", - "h3": "catalog:" - } -} diff --git a/apps/backend-mock/tsconfig.build.json b/apps/backend-mock/tsconfig.build.json deleted file mode 100644 index 64f86c6b..00000000 --- a/apps/backend-mock/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] -} diff --git a/apps/backend-mock/tsconfig.json b/apps/backend-mock/tsconfig.json deleted file mode 100644 index 43008af1..00000000 --- a/apps/backend-mock/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.nitro/types/tsconfig.json" -} diff --git a/apps/backend-mock/utils/cookie-utils.ts b/apps/backend-mock/utils/cookie-utils.ts deleted file mode 100644 index 0d92f577..00000000 --- a/apps/backend-mock/utils/cookie-utils.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -export function clearRefreshTokenCookie(event: H3Event) { - deleteCookie(event, 'jwt', { - httpOnly: true, - sameSite: 'none', - secure: true, - }); -} - -export function setRefreshTokenCookie( - event: H3Event, - refreshToken: string, -) { - setCookie(event, 'jwt', refreshToken, { - httpOnly: true, - maxAge: 24 * 60 * 60 * 1000, - sameSite: 'none', - secure: true, - }); -} - -export function getRefreshTokenFromCookie(event: H3Event) { - const refreshToken = getCookie(event, 'jwt'); - return refreshToken; -} diff --git a/apps/backend-mock/utils/jwt-utils.ts b/apps/backend-mock/utils/jwt-utils.ts deleted file mode 100644 index 8cfc6843..00000000 --- a/apps/backend-mock/utils/jwt-utils.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -import jwt from 'jsonwebtoken'; - -import { UserInfo } from './mock-data'; - -// TODO: Replace with your own secret key -const ACCESS_TOKEN_SECRET = 'access_token_secret'; -const REFRESH_TOKEN_SECRET = 'refresh_token_secret'; - -export interface UserPayload extends UserInfo { - iat: number; - exp: number; -} - -export function generateAccessToken(user: UserInfo) { - return jwt.sign(user, ACCESS_TOKEN_SECRET, { expiresIn: '7d' }); -} - -export function generateRefreshToken(user: UserInfo) { - return jwt.sign(user, REFRESH_TOKEN_SECRET, { - expiresIn: '30d', - }); -} - -export function verifyAccessToken( - event: H3Event, -): null | Omit { - const authHeader = getHeader(event, 'Authorization'); - if (!authHeader?.startsWith('Bearer')) { - return null; - } - - const token = authHeader.split(' ')[1]; - try { - const decoded = jwt.verify(token, ACCESS_TOKEN_SECRET) as UserPayload; - - const username = decoded.username; - const user = MOCK_USERS.find((item) => item.username === username); - const { password: _pwd, ...userinfo } = user; - return userinfo; - } catch { - return null; - } -} - -export function verifyRefreshToken( - token: string, -): null | Omit { - try { - const decoded = jwt.verify(token, REFRESH_TOKEN_SECRET) as UserPayload; - const username = decoded.username; - const user = MOCK_USERS.find((item) => item.username === username); - const { password: _pwd, ...userinfo } = user; - return userinfo; - } catch { - return null; - } -} diff --git a/apps/backend-mock/utils/mock-data.ts b/apps/backend-mock/utils/mock-data.ts deleted file mode 100644 index 057588e3..00000000 --- a/apps/backend-mock/utils/mock-data.ts +++ /dev/null @@ -1,189 +0,0 @@ -export interface UserInfo { - id: number; - password: string; - realName: string; - roles: string[]; - username: string; - homePath?: string; -} - -export const MOCK_USERS: UserInfo[] = [ - { - id: 0, - password: '123456', - realName: 'Vben', - roles: ['super'], - username: 'vben', - }, - { - id: 1, - password: '123456', - realName: 'Admin', - roles: ['admin'], - username: 'admin', - homePath: '/workspace', - }, - { - id: 2, - password: '123456', - realName: 'Jack', - roles: ['user'], - username: 'jack', - homePath: '/analytics', - }, -]; - -export const MOCK_CODES = [ - // super - { - codes: ['AC_100100', 'AC_100110', 'AC_100120', 'AC_100010'], - username: 'vben', - }, - { - // admin - codes: ['AC_100010', 'AC_100020', 'AC_100030'], - username: 'admin', - }, - { - // user - codes: ['AC_1000001', 'AC_1000002'], - username: 'jack', - }, -]; - -const dashboardMenus = [ - { - component: 'BasicLayout', - meta: { - order: -1, - title: 'page.dashboard.title', - }, - name: 'Dashboard', - path: '/', - redirect: '/analytics', - children: [ - { - name: 'Analytics', - path: '/analytics', - component: '/dashboard/analytics/index', - meta: { - affixTab: true, - title: 'page.dashboard.analytics', - }, - }, - { - name: 'Workspace', - path: '/workspace', - component: '/dashboard/workspace/index', - meta: { - title: 'page.dashboard.workspace', - }, - }, - ], - }, -]; - -const createDemosMenus = (role: 'admin' | 'super' | 'user') => { - const roleWithMenus = { - admin: { - component: '/demos/access/admin-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.adminVisible', - }, - name: 'AccessAdminVisibleDemo', - path: '/demos/access/admin-visible', - }, - super: { - component: '/demos/access/super-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.superVisible', - }, - name: 'AccessSuperVisibleDemo', - path: '/demos/access/super-visible', - }, - user: { - component: '/demos/access/user-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.userVisible', - }, - name: 'AccessUserVisibleDemo', - path: '/demos/access/user-visible', - }, - }; - - return [ - { - component: 'BasicLayout', - meta: { - icon: 'ic:baseline-view-in-ar', - keepAlive: true, - order: 1000, - title: 'demos.title', - }, - name: 'Demos', - path: '/demos', - redirect: '/demos/access', - children: [ - { - name: 'AccessDemos', - path: '/demosaccess', - meta: { - icon: 'mdi:cloud-key-outline', - title: 'demos.access.backendPermissions', - }, - redirect: '/demos/access/page-control', - children: [ - { - name: 'AccessPageControlDemo', - path: '/demos/access/page-control', - component: '/demos/access/index', - meta: { - icon: 'mdi:page-previous-outline', - title: 'demos.access.pageAccess', - }, - }, - { - name: 'AccessButtonControlDemo', - path: '/demos/access/button-control', - component: '/demos/access/button-control', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.buttonControl', - }, - }, - { - name: 'AccessMenuVisible403Demo', - path: '/demos/access/menu-visible-403', - component: '/demos/access/menu-visible-403', - meta: { - authority: ['no-body'], - icon: 'mdi:button-cursor', - menuVisibleWithForbidden: true, - title: 'demos.access.menuVisible403', - }, - }, - roleWithMenus[role], - ], - }, - ], - }, - ]; -}; - -export const MOCK_MENUS = [ - { - menus: [...dashboardMenus, ...createDemosMenus('super')], - username: 'vben', - }, - { - menus: [...dashboardMenus, ...createDemosMenus('admin')], - username: 'admin', - }, - { - menus: [...dashboardMenus, ...createDemosMenus('user')], - username: 'jack', - }, -]; diff --git a/apps/backend-mock/utils/response.ts b/apps/backend-mock/utils/response.ts deleted file mode 100644 index 2a5a908f..00000000 --- a/apps/backend-mock/utils/response.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -export function useResponseSuccess(data: T) { - return { - code: 0, - data, - error: null, - message: 'ok', - }; -} - -export function usePageResponseSuccess( - page: number | string, - pageSize: number | string, - list: T[], - { message = 'ok' } = {}, -) { - const pageData = pagination( - Number.parseInt(`${page}`), - Number.parseInt(`${pageSize}`), - list, - ); - - return { - ...useResponseSuccess({ - items: pageData, - total: list.length, - }), - message, - }; -} - -export function useResponseError(message: string, error: any = null) { - return { - code: -1, - data: null, - error, - message, - }; -} - -export function forbiddenResponse( - event: H3Event, - message = 'Forbidden Exception', -) { - setResponseStatus(event, 403); - return useResponseError(message, message); -} - -export function unAuthorizedResponse(event: H3Event) { - setResponseStatus(event, 401); - return useResponseError('Unauthorized Exception', 'Unauthorized Exception'); -} - -export function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export function pagination( - pageNo: number, - pageSize: number, - array: T[], -): T[] { - const offset = (pageNo - 1) * Number(pageSize); - return offset + Number(pageSize) >= array.length - ? array.slice(offset) - : array.slice(offset, offset + Number(pageSize)); -} diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index bbc5593f..981d0038 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -26,6 +26,7 @@ "#/*": "./src/*" }, "dependencies": { + "@ant-design/icons-vue": "^7.0.1", "@vben/access": "workspace:*", "@vben/common-ui": "workspace:*", "@vben/constants": "workspace:*", diff --git a/apps/web-antd/public/favicon.ico b/apps/web-antd/public/favicon.ico index fcf9818e2cf855039b272bdbfbb202d3ff3fa159..7709a74d46b7ac64d467fccbb70b71b2850e2bdf 100644 GIT binary patch literal 491 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 z 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

N9Qh=9bE(9GN-fXfs%@) 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 K_(k3_^8WyFqlq{G literal 0 HcmV?d00001 diff --git a/apps/web-antd/public/img/user-default-avatar.png b/apps/web-antd/public/img/user-default-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9ebc58f06fde74a8c809d5943ff64d4ed2cc8a GIT binary patch literal 189548 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ີ&b)Q$ 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 iV>ZDt-gy3Qar}S1e&f)R_Ojdn0000( component: T, type: 'input' | 'select', @@ -149,6 +151,8 @@ async function initComponentAdapter() { Upload, }; + // 自动注册自定义组件 + registerComponent(components); // 将组件注册到全局共享状态中 globalShareState.setComponents(components); diff --git a/apps/web-antd/src/api/core/menu.ts b/apps/web-antd/src/api/core/menu.ts index 9ef60b11..391dac5c 100644 --- a/apps/web-antd/src/api/core/menu.ts +++ b/apps/web-antd/src/api/core/menu.ts @@ -6,5 +6,5 @@ import { requestClient } from '#/api/request'; * 获取用户所有菜单 */ export async function getAllMenusApi() { - return requestClient.get('/menu/all'); + return requestClient.get('auth/menu'); } diff --git a/apps/web-antd/src/api/core/upload.ts b/apps/web-antd/src/api/core/upload.ts new file mode 100644 index 00000000..c57aae95 --- /dev/null +++ b/apps/web-antd/src/api/core/upload.ts @@ -0,0 +1,17 @@ +import { requestClient } from '#/api/request'; + +/** + * 文件上传 + * @param data + */ +export async function uploadFile(data: any) { + return requestClient.upload('upload/image', data); +} + +/** + * 通过文件id集合获取文件信息 + * @param data + */ +export async function getFileInfoByIds(data: any) { + return requestClient.post('/sys/fileInfo/getFileInfoByIds', data); +} diff --git a/apps/web-antd/src/api/core/user.ts b/apps/web-antd/src/api/core/user.ts index 7e28ea84..53d56027 100644 --- a/apps/web-antd/src/api/core/user.ts +++ b/apps/web-antd/src/api/core/user.ts @@ -6,5 +6,5 @@ import { requestClient } from '#/api/request'; * 获取用户信息 */ export async function getUserInfoApi() { - return requestClient.get('/user/info'); + return requestClient.get('auth/my-info'); } diff --git a/apps/web-antd/src/api/request.ts b/apps/web-antd/src/api/request.ts index 67ef35e4..f8ae816a 100644 --- a/apps/web-antd/src/api/request.ts +++ b/apps/web-antd/src/api/request.ts @@ -17,9 +17,25 @@ import { message } from 'ant-design-vue'; import { useAuthStore } from '#/store'; import { refreshTokenApi } from './core'; +import {Base64} from "js-base64"; const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD); +const arr = new Set([ + 'accept_tel', + 'doctor', + 'express_mobile', + 'id_card', + 'idcard', + 'mobile', + 'password', + 'patient_mobile', + 'phone', +]); + +// 敏感数据 +const sensitiveData = new Set(['id_card', 'idcard']); + function createRequestClient(baseURL: string) { const client = new RequestClient({ baseURL, @@ -65,6 +81,15 @@ function createRequestClient(baseURL: string) { config.headers.Authorization = formatToken(accessStore.accessToken); config.headers['Accept-Language'] = preferences.app.locale; + // 加密 + // eslint-disable-next-line eqeqeq + if (config.data != null) { + config.data = getRes(config.data, false); + } + // eslint-disable-next-line eqeqeq + if (config.params != null) { + config.params = getRes(config.params, false); + } return config; }, }); @@ -74,9 +99,29 @@ function createRequestClient(baseURL: string) { fulfilled: (response) => { const { data: responseData, status } = response; - const { code, data } = responseData; - if (status >= 200 && status < 400 && code === 0) { - return data; + // 这里吧 data 换成了 result + const { code, result } = responseData; + // 判断返回状态码 + if (status >= 200 && status < 400) { + switch (code) { + case 0: { + // 解密 + // eslint-disable-next-line eqeqeq + if (result != null) { + return getRes(result); + } + return result; + } + case 401: { + // 401 错误,需要重新登录 + return doReAuthenticate(); + } + case 403: + case 404: + case 500: { + throw Object.assign({}, response, { response }); + } + } } throw Object.assign({}, response, { response }); @@ -112,3 +157,119 @@ function createRequestClient(baseURL: string) { export const requestClient = createRequestClient(apiURL); export const baseRequestClient = new RequestClient({ baseURL: apiURL }); + +/** + * 加解密方法 + * @param obj + * @param isDecode + */ +function getRes(obj: any, isDecode = true) { + try { + for (const key in obj) { + if (Array.isArray(obj[key])) { + obj[key] = getRes(obj[key]); + } else if (typeof obj[key] === 'object') { + obj[key] = getRes(obj[key]); + } else { + // 判断obj[key]是否在arr中 + if (arr.has(key)) { + let aseFile = ''; + aseFile = isDecode + ? customBase64Decode(obj[key]) + : customBase64Encode(obj[key]); + const isGarbled = + // eslint-disable-next-line no-control-regex + /[\u0000-\u0008\v\f\u000E-\u001F\u007F-\u00FF\u{E000}-\u{F8FF}]/u.test( + aseFile, + ); + if (isGarbled) { + aseFile = obj[key]; + } + if (isDecode && sensitiveData.has(key)) { + // 数据脱敏,自动匹配姓名、手机号、身份证 + switch (key) { + // case 'accept_name': + // case 'express_name': + // case 'express_region': + // case 'patient': { + // // 保留前两个字符,其余用星号代替 + // aseFile = aseFile.slice(0, 1).padEnd(aseFile.length, '*'); + // break; + // } + // case 'express_mobile': + // case 'mobile': { + // // 保留前三位和后四位,中间用星号代替 + // aseFile = + // aseFile.slice(0, 3).padEnd(aseFile.length - 4, '*') + + // aseFile.slice(-4); + // break; + // } + case 'id_card': + case 'idcard': { + // 保留前六位和后四位,中间用星号代替 + aseFile = + aseFile.slice(0, 6).padEnd(aseFile.length - 4, '*') + + aseFile.slice(-4); + break; + } + default: { + // 默认情况下,全部用星号代替 + break; + } + } + } + obj[key] = aseFile; + } + } + } + return obj; + } catch (error) { + console.error('错误', error); + return obj; + } +} + +/** + * 解密 + * @param data + */ +function customBase64Decode(data: string) { + // return data + try { + // 第一次Base64解码 + const decodedFirst = Base64.decode(data); + // 截取从第30个字符开始往后的内容 + const subStr = decodedFirst.slice(30); + // 第二次Base64解码 + const base64 = Base64.decode(subStr); + return base64.length > 0 ? base64 : data; + } catch (error) { + console.error(`解码Base64字符串【${data}】时发生错误`, error); + return data; + } +} + +/** + * 加密 + * @param data + */ +function customBase64Encode(data: string) { + // eslint-disable-next-line eqeqeq + if (data == null || data === '') return data; + // return data + try { + // 和加密方法差不多但是是要生成30个随机字符 + let randomString = ''; + for (let i = 0; i < 30; i++) { + const randomChar = String.fromCodePoint( + Math.floor(Math.random() * (126 - 32 + 1)) + 32, + ); + randomString += randomChar; + } + const encoded = Base64.encode(data); + return Base64.encode(randomString + encoded); + } catch (error) { + console.error(`加密字符串【${data}】时发生错误`, error); + return data; + } +} diff --git a/apps/web-antd/src/components/description/description.vue b/apps/web-antd/src/components/description/description.vue new file mode 100644 index 00000000..ec5e220e --- /dev/null +++ b/apps/web-antd/src/components/description/description.vue @@ -0,0 +1,77 @@ + + diff --git a/apps/web-antd/src/components/description/index.ts b/apps/web-antd/src/components/description/index.ts new file mode 100644 index 00000000..745e7550 --- /dev/null +++ b/apps/web-antd/src/components/description/index.ts @@ -0,0 +1,2 @@ +export { default as Description } from './description.vue'; +export type * from './types'; diff --git a/apps/web-antd/src/components/description/types.d.ts b/apps/web-antd/src/components/description/types.d.ts new file mode 100644 index 00000000..c5120b8e --- /dev/null +++ b/apps/web-antd/src/components/description/types.d.ts @@ -0,0 +1,54 @@ +import type { CollapseContainerOptions } from '@/components/Container'; +import type { DescriptionsProps } from 'ant-design-vue/es/descriptions'; + +import type { CSSProperties, VNode } from 'vue'; + +export interface DescItem { + labelMinWidth?: number; + contentMinWidth?: number; + labelStyle?: CSSProperties; + field: string; + label: JSX.Element | string | VNode; + // Merge column + span?: number; + show?: (...arg: any) => boolean; + // render + render?: ( + val: any, + data: Recordable, + ) => Element | JSX.Element | number | string | undefined | VNode; + component: string; + componentProps?: any; + children?: DescItem[]; +} + +export interface DescriptionProps extends DescriptionsProps { + // Whether to include the collapse component + useCollapse?: boolean; + /** + * item configuration + * @type DescItem + */ + schema: DescItem[]; + /** + * 数据 + * @type object + */ + data: Recordable; + /** + * Built-in CollapseContainer component configuration + * @type CollapseContainerOptions + */ + collapseOptions?: CollapseContainerOptions; +} + +export interface DescInstance { + setDescProps(descProps: Partial): void; +} + +export type Register = (descInstance: DescInstance) => void; + +/** + * @description: + */ +export type UseDescReturnType = [Register, DescInstance]; diff --git a/apps/web-antd/src/components/dynamic-schema-form/dynamic-schema-form.vue b/apps/web-antd/src/components/dynamic-schema-form/dynamic-schema-form.vue new file mode 100644 index 00000000..df32effe --- /dev/null +++ b/apps/web-antd/src/components/dynamic-schema-form/dynamic-schema-form.vue @@ -0,0 +1,104 @@ + + + diff --git a/apps/web-antd/src/components/dynamic-schema-form/index.ts b/apps/web-antd/src/components/dynamic-schema-form/index.ts new file mode 100644 index 00000000..7965c2c8 --- /dev/null +++ b/apps/web-antd/src/components/dynamic-schema-form/index.ts @@ -0,0 +1 @@ +export { default as DynamicSchemaForm } from './dynamic-schema-form.vue'; diff --git a/apps/web-antd/src/components/form-description/form-description.vue b/apps/web-antd/src/components/form-description/form-description.vue new file mode 100644 index 00000000..c96678e8 --- /dev/null +++ b/apps/web-antd/src/components/form-description/form-description.vue @@ -0,0 +1,75 @@ + + + diff --git a/apps/web-antd/src/components/form-description/index.ts b/apps/web-antd/src/components/form-description/index.ts new file mode 100644 index 00000000..0fbe8296 --- /dev/null +++ b/apps/web-antd/src/components/form-description/index.ts @@ -0,0 +1 @@ +export { default as FormDescription } from './form-description.vue'; diff --git a/apps/web-antd/src/components/form/component-map.ts b/apps/web-antd/src/components/form/component-map.ts new file mode 100644 index 00000000..8f7353c6 --- /dev/null +++ b/apps/web-antd/src/components/form/component-map.ts @@ -0,0 +1,32 @@ +import type { CustomComponentType } from './types'; + +import type { Component } from 'vue'; + +import { getFileNameWithoutExtension, toPascalCase } from '#/util/tool'; + +const componentMap = new Map(); +// import.meta.glob() 直接引入所有的模块 Vite 独有的功能 +const modules = import.meta.glob( + ['./components/**/*.vue', '../../views/**/components/form/*.vue'], + { eager: true }, +); +// 加入到路由集合中 +Object.keys(modules).forEach((key) => { + if (!key.includes('-ignore')) { + const mod = (modules as any)[key].default || {}; + // ./components/ApiDict.vue + // 获取ApiDict + const compName = getFileNameWithoutExtension(key); + componentMap.set(toPascalCase(compName), mod); + } +}); +/** + * 注册组件 + * @param components + */ +export const registerComponent = (components: any) => { + componentMap.forEach((value, key) => { + components[key] = value as Component; + }); +}; +export { componentMap }; diff --git a/apps/web-antd/src/components/form/components/avatar.vue b/apps/web-antd/src/components/form/components/avatar.vue new file mode 100644 index 00000000..7be437cf --- /dev/null +++ b/apps/web-antd/src/components/form/components/avatar.vue @@ -0,0 +1,62 @@ + + + diff --git a/apps/web-antd/src/components/form/components/upload.vue b/apps/web-antd/src/components/form/components/upload.vue new file mode 100644 index 00000000..02bd133d --- /dev/null +++ b/apps/web-antd/src/components/form/components/upload.vue @@ -0,0 +1,162 @@ + + diff --git a/apps/web-antd/src/components/form/index.ts b/apps/web-antd/src/components/form/index.ts new file mode 100644 index 00000000..645f73a0 --- /dev/null +++ b/apps/web-antd/src/components/form/index.ts @@ -0,0 +1,7 @@ +// export { default as ApiCheckboxGroup } from './components/api-checkbox-group.vue'; +// export { default as ApiDict } from './components/api-dict.vue'; +// export { default as ApiRadioGroup } from './components/api-radio-group.vue'; +// export { default as ApiSelect } from './components/api-select.vue'; +// export { default as ApiTreeSelect } from './components/api-tree-select.vue'; +// export { default as IconPicker } from './components/icon-picker.vue'; +export { default as Upload } from './components/upload.vue'; diff --git a/apps/web-antd/src/components/form/types/index.d.ts b/apps/web-antd/src/components/form/types/index.d.ts new file mode 100644 index 00000000..c67d6ac9 --- /dev/null +++ b/apps/web-antd/src/components/form/types/index.d.ts @@ -0,0 +1,7 @@ +export type CustomComponentType = + | 'ApiCheckboxGroup' + | 'ApiDict' + | 'ApiRadioGroup' + | 'ApiSelect' + | 'ApiTreeSelect' + | 'IconPicker'; diff --git a/apps/web-antd/src/components/icon/icon.vue b/apps/web-antd/src/components/icon/icon.vue new file mode 100644 index 00000000..e5c0c310 --- /dev/null +++ b/apps/web-antd/src/components/icon/icon.vue @@ -0,0 +1,51 @@ + + + + diff --git a/apps/web-antd/src/components/icon/index.ts b/apps/web-antd/src/components/icon/index.ts new file mode 100644 index 00000000..fc989720 --- /dev/null +++ b/apps/web-antd/src/components/icon/index.ts @@ -0,0 +1 @@ +export { default as Icon } from './icon.vue'; diff --git a/apps/web-antd/src/components/table-action/index.ts b/apps/web-antd/src/components/table-action/index.ts new file mode 100644 index 00000000..00b7e6b6 --- /dev/null +++ b/apps/web-antd/src/components/table-action/index.ts @@ -0,0 +1,2 @@ +export { default as TableAction } from './table-action.vue'; +export type * from './types.d.ts'; diff --git a/apps/web-antd/src/components/table-action/table-action.vue b/apps/web-antd/src/components/table-action/table-action.vue new file mode 100644 index 00000000..2ce2af69 --- /dev/null +++ b/apps/web-antd/src/components/table-action/table-action.vue @@ -0,0 +1,225 @@ + + + + diff --git a/apps/web-antd/src/components/table-action/types.d.ts b/apps/web-antd/src/components/table-action/types.d.ts new file mode 100644 index 00000000..29e7d4d0 --- /dev/null +++ b/apps/web-antd/src/components/table-action/types.d.ts @@ -0,0 +1,26 @@ +import { ButtonProps } from 'ant-design-vue/es/button/buttonTypes'; +import { TooltipProps } from 'ant-design-vue/es/tooltip/Tooltip'; + +export interface PopConfirm { + title: string; + okText?: string; + cancelText?: string; + confirm: Fn; + cancel?: Fn; + icon?: string; + disabled?: boolean; +} +export interface ActionItem extends ButtonProps { + onClick?: Fn; + label?: string; + color?: 'error' | 'success' | 'warning'; + icon?: string; + popConfirm?: PopConfirm; + disabled?: boolean; + divider?: boolean; + // 权限编码控制是否显示 + auth?: string[]; + // 业务控制是否显示 + ifShow?: ((action: ActionItem) => boolean) | boolean; + tooltip?: string | TooltipProps; +} diff --git a/apps/web-antd/src/components/view/component-map.ts b/apps/web-antd/src/components/view/component-map.ts new file mode 100644 index 00000000..1bc0dedd --- /dev/null +++ b/apps/web-antd/src/components/view/component-map.ts @@ -0,0 +1,22 @@ +import type { Component } from 'vue'; + +import { getFileNameWithoutExtension, toPascalCase } from '#/util/tool'; + +const componentMap = new Map(); +// import.meta.glob() 直接引入所有的模块 Vite 独有的功能 +const modules = import.meta.glob( + ['./components/**/*.vue', '../../views/**/components/view/*.vue'], + { eager: true }, +); +// 加入到路由集合中 +Object.keys(modules).forEach((key) => { + if (!key.includes('-ignore')) { + const mod = (modules as any)[key].default || {}; + // ./components/ApiDict.vue + // 获取ApiDict + const compName = getFileNameWithoutExtension(key); + componentMap.set(toPascalCase(compName), mod); + } +}); + +export { componentMap }; diff --git a/apps/web-antd/src/components/view/components/api-cascader.vue b/apps/web-antd/src/components/view/components/api-cascader.vue new file mode 100644 index 00000000..3a0e26ea --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-cascader.vue @@ -0,0 +1,98 @@ + + + diff --git a/apps/web-antd/src/components/view/components/api-checkbox-group.vue b/apps/web-antd/src/components/view/components/api-checkbox-group.vue new file mode 100644 index 00000000..dbca93f9 --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-checkbox-group.vue @@ -0,0 +1,6 @@ + + diff --git a/apps/web-antd/src/components/view/components/api-dict.vue b/apps/web-antd/src/components/view/components/api-dict.vue new file mode 100644 index 00000000..b994408e --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-dict.vue @@ -0,0 +1,67 @@ + + + diff --git a/apps/web-antd/src/components/view/components/api-radio-group.vue b/apps/web-antd/src/components/view/components/api-radio-group.vue new file mode 100644 index 00000000..dbca93f9 --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-radio-group.vue @@ -0,0 +1,6 @@ + + diff --git a/apps/web-antd/src/components/view/components/api-select.vue b/apps/web-antd/src/components/view/components/api-select.vue new file mode 100644 index 00000000..7976c2e1 --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-select.vue @@ -0,0 +1,153 @@ + + + diff --git a/apps/web-antd/src/components/view/components/api-tree-select.vue b/apps/web-antd/src/components/view/components/api-tree-select.vue new file mode 100644 index 00000000..4ac0ebac --- /dev/null +++ b/apps/web-antd/src/components/view/components/api-tree-select.vue @@ -0,0 +1,102 @@ + + + diff --git a/apps/web-antd/src/components/view/components/avatar.vue b/apps/web-antd/src/components/view/components/avatar.vue new file mode 100644 index 00000000..721a8cdf --- /dev/null +++ b/apps/web-antd/src/components/view/components/avatar.vue @@ -0,0 +1,14 @@ + + + diff --git a/apps/web-antd/src/components/view/components/icon-picker.vue b/apps/web-antd/src/components/view/components/icon-picker.vue new file mode 100644 index 00000000..dbeb70e8 --- /dev/null +++ b/apps/web-antd/src/components/view/components/icon-picker.vue @@ -0,0 +1,22 @@ + + + diff --git a/apps/web-antd/src/components/view/components/radio-group.vue b/apps/web-antd/src/components/view/components/radio-group.vue new file mode 100644 index 00000000..28d369f9 --- /dev/null +++ b/apps/web-antd/src/components/view/components/radio-group.vue @@ -0,0 +1,7 @@ + + + diff --git a/apps/web-antd/src/components/view/components/select.vue b/apps/web-antd/src/components/view/components/select.vue new file mode 100644 index 00000000..8724e4e7 --- /dev/null +++ b/apps/web-antd/src/components/view/components/select.vue @@ -0,0 +1,35 @@ + + + diff --git a/apps/web-antd/src/components/view/components/switch.vue b/apps/web-antd/src/components/view/components/switch.vue new file mode 100644 index 00000000..0f1eef04 --- /dev/null +++ b/apps/web-antd/src/components/view/components/switch.vue @@ -0,0 +1,25 @@ + + diff --git a/apps/web-antd/src/components/view/components/upload.vue b/apps/web-antd/src/components/view/components/upload.vue new file mode 100644 index 00000000..cc2c6ae0 --- /dev/null +++ b/apps/web-antd/src/components/view/components/upload.vue @@ -0,0 +1,25 @@ + + + diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index 51412956..6437bc09 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -4,9 +4,9 @@ import type { NotificationItem } from '@vben/layouts'; import { computed, ref, watch } from 'vue'; import { AuthenticationLoginExpiredModal } from '@vben/common-ui'; -import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants'; +// import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants'; import { useWatermark } from '@vben/hooks'; -import { BookOpenText, CircleHelp, MdiGithub } from '@vben/icons'; +// import { BookOpenText, CircleHelp, MdiGithub } from '@vben/icons'; import { BasicLayout, LockScreen, @@ -15,41 +15,42 @@ import { } from '@vben/layouts'; import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; -import { openWindow } from '@vben/utils'; +// import { openWindow } from '@vben/utils'; -import { $t } from '#/locales'; +// import { $t } from '#/locales'; import { useAuthStore } from '#/store'; import LoginForm from '#/views/_core/authentication/login.vue'; const notifications = ref([ - { - avatar: 'https://avatar.vercel.sh/vercel.svg?text=VB', - date: '3小时前', - isRead: true, - message: '描述信息描述信息描述信息', - title: '收到了 14 份新周报', - }, - { - avatar: 'https://avatar.vercel.sh/1', - date: '刚刚', - isRead: false, - message: '描述信息描述信息描述信息', - title: '朱偏右 回复了你', - }, - { - avatar: 'https://avatar.vercel.sh/1', - date: '2024-01-01', - isRead: false, - message: '描述信息描述信息描述信息', - title: '曲丽丽 评论了你', - }, - { - avatar: 'https://avatar.vercel.sh/satori', - date: '1天前', - isRead: false, - message: '描述信息描述信息描述信息', - title: '代办提醒', - }, + // TODO 通知列表 + // { + // avatar: 'https://avatar.vercel.sh/vercel.svg?text=VB', + // date: '3小时前', + // isRead: true, + // message: '描述信息描述信息描述信息', + // title: '收到了 14 份新周报', + // }, + // { + // avatar: 'https://avatar.vercel.sh/1', + // date: '刚刚', + // isRead: false, + // message: '描述信息描述信息描述信息', + // title: '朱偏右 回复了你', + // }, + // { + // avatar: 'https://avatar.vercel.sh/1', + // date: '2024-01-01', + // isRead: false, + // message: '描述信息描述信息描述信息', + // title: '曲丽丽 评论了你', + // }, + // { + // avatar: 'https://avatar.vercel.sh/satori', + // date: '1天前', + // isRead: false, + // message: '描述信息描述信息描述信息', + // title: '代办提醒', + // }, ]); const userStore = useUserStore(); @@ -61,33 +62,34 @@ const showDot = computed(() => ); const menus = computed(() => [ - { - handler: () => { - openWindow(VBEN_DOC_URL, { - target: '_blank', - }); - }, - icon: BookOpenText, - text: $t('ui.widgets.document'), - }, - { - handler: () => { - openWindow(VBEN_GITHUB_URL, { - target: '_blank', - }); - }, - icon: MdiGithub, - text: 'GitHub', - }, - { - handler: () => { - openWindow(`${VBEN_GITHUB_URL}/issues`, { - target: '_blank', - }); - }, - icon: CircleHelp, - text: $t('ui.widgets.qa'), - }, + // TODO 后续放个人中心 + // { + // handler: () => { + // openWindow(VBEN_DOC_URL, { + // target: '_blank', + // }); + // }, + // icon: BookOpenText, + // text: $t('ui.widgets.document'), + // }, + // { + // handler: () => { + // openWindow(VBEN_GITHUB_URL, { + // target: '_blank', + // }); + // }, + // icon: MdiGithub, + // text: 'GitHub', + // }, + // { + // handler: () => { + // openWindow(`${VBEN_GITHUB_URL}/issues`, { + // target: '_blank', + // }); + // }, + // icon: CircleHelp, + // text: $t('ui.widgets.qa'), + // }, ]); const avatar = computed(() => { @@ -96,6 +98,7 @@ const avatar = computed(() => { async function handleLogout() { await authStore.logout(false); + destroyWatermark(); } function handleNoticeClear() { @@ -110,7 +113,9 @@ watch( async (enable) => { if (enable) { await updateWatermark({ - content: `${userStore.userInfo?.username}`, + // 这里更改水印内容 + // content: `${userStore.userInfo?.nick_name || import.meta.env.VITE_APP_TITLE}`, + content: `${userStore.userInfo?.nick_name}\r\n${userStore.userInfo?.phone || import.meta.env.VITE_APP_TITLE}`, }); } else { destroyWatermark(); @@ -127,10 +132,10 @@ watch( diff --git a/apps/web-antd/src/preferences.ts b/apps/web-antd/src/preferences.ts index b2e9ace4..ae514845 100644 --- a/apps/web-antd/src/preferences.ts +++ b/apps/web-antd/src/preferences.ts @@ -9,5 +9,43 @@ export const overridesPreferences = defineOverridesPreferences({ // overrides app: { name: import.meta.env.VITE_APP_TITLE, + layout: 'sidebar-mixed-nav', + // 登录过期模式 + loginExpiredMode: 'modal', + // 权限模式 frontend 默认前端控制 backend 后端控制 + accessMode: 'backend', + enableRefreshToken: true, + defaultAvatar: + 'https://yanydy.oss-cn-hangzhou.aliyuncs.com/uploads/20241219/2b38e38414a2b9383b8643983e3f69d7.png', + watermark: true, + // 是否开启检查更新 + enableCheckUpdates: true, + // 检查更新的时间间隔,单位为分钟 + checkUpdatesInterval: 1, + version: '1.0.0', + }, + sidebar: { + extraCollapse: false, + }, + footer: { + // enable: true, + // fixed: true, + }, + logo: { + enable: true, + source: + // 'https://yanydy.oss-cn-hangzhou.aliyuncs.com/uploads/20241219/2b38e38414a2b9383b8643983e3f69d7.png', + '/img/logo.png', + }, + theme: { + mode: 'auto', + builtinType: 'sky-blue', + colorPrimary: 'hsl(231 98% 65%)', + }, + copyright: { + companyName: '萧康云医', + companySiteLink: 'https://admin.xiaokang88.com', + icp: '浙ICP备19041368号-2', + icpLink: 'https://beian.miit.gov.cn/#/Integrated/recordQuery', }, }); diff --git a/apps/web-antd/src/router/guard.ts b/apps/web-antd/src/router/guard.ts index cbb5235e..6ebbbc2a 100644 --- a/apps/web-antd/src/router/guard.ts +++ b/apps/web-antd/src/router/guard.ts @@ -93,7 +93,7 @@ function setupAccessGuard(router: Router) { // 生成路由表 // 当前登录用户拥有的角色标识列表 const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); - const userRoles = userInfo.roles ?? []; + const userRoles = userInfo?.roles ?? []; // 生成菜单和路由 const { accessibleMenus, accessibleRoutes } = await generateAccess({ diff --git a/apps/web-antd/src/router/routes/modules/demos.ts b/apps/web-antd/src/router/routes/modules/demos.ts index 32bb338e..07b03f7b 100644 --- a/apps/web-antd/src/router/routes/modules/demos.ts +++ b/apps/web-antd/src/router/routes/modules/demos.ts @@ -1,30 +1,30 @@ -import type { RouteRecordRaw } from 'vue-router'; - -import { BasicLayout } from '#/layouts'; -import { $t } from '#/locales'; - -const routes: RouteRecordRaw[] = [ - { - component: BasicLayout, - meta: { - icon: 'ic:baseline-view-in-ar', - keepAlive: true, - order: 1000, - title: $t('demos.title'), - }, - name: 'Demos', - path: '/demos', - children: [ - { - meta: { - title: $t('demos.antd'), - }, - name: 'AntDesignDemos', - path: '/demos/ant-design', - component: () => import('#/views/demos/antd/index.vue'), - }, - ], - }, -]; - -export default routes; +// import type { RouteRecordRaw } from 'vue-router'; +// +// import { BasicLayout } from '#/layouts'; +// import { $t } from '#/locales'; +// +// const routes: RouteRecordRaw[] = [ +// { +// component: BasicLayout, +// meta: { +// icon: 'ic:baseline-view-in-ar', +// keepAlive: true, +// order: 1000, +// title: $t('demos.title'), +// }, +// name: 'Demos', +// path: '/demos', +// children: [ +// { +// meta: { +// title: $t('demos.antd'), +// }, +// name: 'AntDesignDemos', +// path: '/demos/ant-design', +// component: () => import('#/views/demos/antd/index.vue'), +// }, +// ], +// }, +// ]; +// +// export default routes; diff --git a/apps/web-antd/src/router/routes/modules/sys.ts b/apps/web-antd/src/router/routes/modules/sys.ts new file mode 100644 index 00000000..6223a982 --- /dev/null +++ b/apps/web-antd/src/router/routes/modules/sys.ts @@ -0,0 +1,45 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { BasicLayout } from '#/layouts'; + +const routes: RouteRecordRaw[] = [ + { + component: BasicLayout, + meta: { + icon: 'carbon:cics-system-group', + keepAlive: true, + order: 1000, + title: '基础管理', + }, + name: 'System', + path: '/system', + children: [ + { + meta: { + title: '管理员管理', + }, + name: 'SystemUser', + path: '/system/user', + component: () => import('#/views/system/admin/index.vue'), + }, + { + meta: { + title: '角色管理', + }, + name: 'SystemRole', + path: '/system/role', + component: () => import('#/views/system/role/index.vue'), + }, + { + meta: { + title: '菜单管理', + }, + name: 'SystemMenu', + path: '/system/menu', + component: () => import('#/views/system/menu/index.vue'), + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-antd/src/util/tool.ts b/apps/web-antd/src/util/tool.ts new file mode 100644 index 00000000..8babca8a --- /dev/null +++ b/apps/web-antd/src/util/tool.ts @@ -0,0 +1,350 @@ +import type { VbenFormProps } from '#/adapter/form'; +import type { DescItem } from '#/components/description'; + +import { isFunction } from '@vben/utils'; + +export const omit = (obj: any, keysToOmit: string[]) => { + // 如果 obj 不是对象或者 keysToOmit 不是数组,则直接返回 obj + if (typeof obj !== 'object' || !Array.isArray(keysToOmit)) { + return obj; + } + + // 创建一个新的对象,避免修改原始对象 + const result = {} as any; + + // 遍历 obj 的所有键值对 + for (const key in obj) { + // 如果当前键不在要忽略的键列表中,则复制到新对象 + if (!keysToOmit.includes(key)) { + result[key] = obj[key]; + } + } + + return result; +}; +export const get = (object: any, path: string) => { + // 如果 object 不是对象或者 path 不是字符串,则直接返回 defaultValue + if ( + typeof object !== 'object' || + object === null || + typeof path !== 'string' + ) { + return object; + } + + // 将路径字符串转换为数组 + const pathArray = path.split('.').filter(Boolean); // 过滤掉空字符串 + let current = object; + + // 遍历路径数组 + for (const element of pathArray) { + // 如果当前层级不是对象或没有对应的键,则返回 defaultValue + if ( + typeof current !== 'object' || + current === null || + !(element in current) + ) { + return object; + } + // 更新 current 到下一层级 + current = current[element]; + } + + // 返回最终找到的值 + return current; +}; +export const ifDetail = (renderCallbackParams: any): boolean => { + const schema = renderCallbackParams.schema; + if (isFunction(schema.ifDetail)) { + return schema.ifDetail(renderCallbackParams); + } + return schema.ifDetail !== false; +}; + +/** + * 将表单元数据转换为详情表单 + * @param formOptions + * @param values + */ +export const schemaToDetailForm = ( + formOptions: VbenFormProps, + values: any, +): DescItem[] => { + const group: Array = []; + const formSchemas = formOptions.schema; + if (!Array.isArray(formSchemas)) return group; + for (let i = 0; i < formSchemas.length; i++) { + const item = formSchemas[i]; + // 找到分割线 + if (item?.component === 'Divider') { + group.push({ + field: item.fieldName, + label: item.label, + children: [], + } as unknown as DescItem); + // 将分割线后面的数据添加到group中 + for (let j = i + 1; j < formSchemas.length; j++) { + const nextItem = formSchemas[j]; + // 找到下面的分割线 + if (nextItem?.component === 'Divider') { + // 中断 + i = j - 1; + break; + } else { + if ( + ifDetail({ + schema: nextItem, + values, + model: values, + field: item.fieldName, + }) + ) { + group[group.length - 1]?.children?.push({ + field: nextItem?.fieldName, + label: nextItem?.label, + span: nextItem?.detailSpan || 12, + component: nextItem?.component, + componentProps: nextItem?.componentProps, + } as DescItem); + } + } + } + } + } + if (group.length > 0) { + return group; + } + return [ + { + field: 'baseinfo', + label: '基本信息', + children: formSchemas + .filter((item) => { + return ifDetail({ + schema: item, + values, + model: values, + field: item.fieldName, + }); + }) + .map((item) => { + return { + field: item.fieldName, + label: item.label, + span: item.detailSpan || 12, + component: item.component, + componentProps: item.componentProps, + } as DescItem; + }), + } as DescItem, + ]; +}; + +// 获取子节点id +export const getChildIds = (record: any) => { + const ids = [record.id]; + record.children?.forEach((item: any) => { + ids.push(...getChildIds(item)); + }); + return ids; +}; + +/** + * 获取所有叶子节点 + * @param treeData + */ +export const getLeafNodeIds = (treeData: any) => { + const leafNodeIds: any = []; + + function traverse(node: any) { + // 如果当前节点没有 children 或 children 是空数组,则它是叶子节点 + if (!node.children || node.children.length === 0) { + leafNodeIds.push(node.id); + } else { + // 否则,递归遍历每个子节点 + for (const child of node.children) { + traverse(child); + } + } + } + + // 遍历树的根节点 + for (const root of treeData) { + traverse(root); + } + return leafNodeIds; +}; + +/** + * 获取所有节点id + * @param treeData + */ +export const getAllNodeIds = (treeData: any) => { + const allNodeIds: any = []; + + function traverse(node: any) { + // 收集当前节点的 id + allNodeIds.push(node.id); + + // 如果当前节点有 children,则递归遍历每个子节点 + if (node.children && node.children.length > 0) { + for (const child of node.children) { + traverse(child); + } + } + } + + // 遍历树的根节点 + for (const root of treeData) { + traverse(root); + } + + return allNodeIds; +}; + +/** + * -转大驼峰 + * @param str + */ +export const toPascalCase = (str: any) => { + // 将连字符或下划线替换为空格,以便后续处理 + const words = str.replaceAll(/[-_]/g, ' ').split(' '); + + // 将每个单词的首字母大写,并将其余部分保持原样 + const pascalCaseWords = words.map((word: any) => { + if (word) { + return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); + } + return word; + }); + + // 将处理后的单词拼接成一个新的字符串 + return pascalCaseWords.join(''); +}; + +/** + * 转-kebab + */ +export const toKebabCase = (str: string) => { + // 将每个单词的首字母小写,并在单词之间插入连字符 + return str + .replaceAll(/([A-Z])/g, (match, _p1, offset) => { + // 如果是第一个字符,直接转为小写 + if (offset === 0) { + return match.toLowerCase(); + } + // 否则,在大写字母前加上连字符,并将大写字母转为小写 + return `-${match.toLowerCase()}`; + }) + .toLowerCase(); // 确保整个字符串都是小写 +}; + +export function getFileNameWithoutExtension(path: string) { + // 使用正则表达式匹配最后一个 / 后面的所有字符,但不包括最后一个点(.)之后的内容 + const match = path.match(/[^/]+(?=\.[^./]+$|$)/); + return match ? match[0].replace(/\.[^/.]+$/, '') : null; +} + +/** + * 数据脱敏 + * @param data + * @param type + */ +export function desensitize(data: string, type: 'bankCard' | 'idCard'): string { + if (!data) return ''; + + switch (type) { + case 'bankCard': { + // 银行卡号脱敏规则:显示前6位和后4位,中间用*代替 + if (data.length < 12) { + throw new Error('Invalid bank card number length'); + } + return data.slice(0, 6) + '*'.repeat(data.length - 10) + data.slice(-4); + } + + case 'idCard': { + // 身份证号脱敏规则:显示前6位和后4位,中间用*代替 + if (data.length !== 18) { + throw new Error('Invalid ID card number length'); + } + return data.slice(0, 6) + '*'.repeat(10) + data.slice(-4); + } + + default: { + throw new Error('Unsupported desensitization type'); + } + } +} + +/** + * 获取操作系统的Icon + * @param str + */ +export function getIcon(str: string) { + switch (str) { + case 'Api Post': { + return 'logos:async-api-icon'; + } + case 'Chrome': { + return 'devicon:chrome'; + } + case 'Edge': + case 'Microsoft Edge': { + return 'logos:microsoft-edge'; + } + case 'Firefox': { + return 'devicon:firefox'; + } + case 'Linux': { + return 'logos:linux-tux'; + } + case 'Mac': { + return 'wpf:mac-os'; + } + case 'Safari': { + return 'devicon:safari'; + } + case 'Windows': { + return 'logos:microsoft-windows-icon'; + } + default: { + return 'logos:microsoft-windows-icon'; + } + } +} + +/** + * 获取接诊状态 + * @param status + */ +export function getRegisterStatus(status: number) { + switch (status) { + case 0: { + return '待支付'; + } + case 1: { + return '待接诊'; + } + case 2: { + return '接诊中'; + } + case 3: { + return '已结束'; + } + case 4: { + return '已取消'; + } + case 5: { + return '待评价'; + } + case 6: { + return '已评价'; + } + case 7: { + return '已拒诊'; + } + default: { + return '未知状态'; + } + } +} diff --git a/apps/web-antd/src/views/_core/authentication/code-login.vue b/apps/web-antd/src/views/_core/authentication/code-login.vue index acfd1fd7..19898538 100644 --- a/apps/web-antd/src/views/_core/authentication/code-login.vue +++ b/apps/web-antd/src/views/_core/authentication/code-login.vue @@ -33,11 +33,9 @@ const formSchema = computed((): VbenFormSchema[] => { componentProps: { codeLength: CODE_LENGTH, createText: (countdown: number) => { - const text = - countdown > 0 - ? $t('authentication.sendText', [countdown]) - : $t('authentication.sendCode'); - return text; + return countdown > 0 + ? $t('authentication.sendText', [countdown]) + : $t('authentication.sendCode'); }, placeholder: $t('authentication.code'), }, diff --git a/apps/web-antd/src/views/_core/authentication/login.vue b/apps/web-antd/src/views/_core/authentication/login.vue index 099e4c8c..63711140 100644 --- a/apps/web-antd/src/views/_core/authentication/login.vue +++ b/apps/web-antd/src/views/_core/authentication/login.vue @@ -1,18 +1,24 @@ + diff --git a/apps/web-antd/src/views/business/express/express-company/config/form.ts b/apps/web-antd/src/views/business/express/express-company/config/form.ts new file mode 100644 index 00000000..e3112078 --- /dev/null +++ b/apps/web-antd/src/views/business/express/express-company/config/form.ts @@ -0,0 +1,69 @@ +import type { VbenFormProps } from '#/adapter/form'; + +export const modalFormProps: VbenFormProps = { + wrapperClass: 'grid-cols-12', // 24栅格, + commonConfig: { + formItemClass: 'col-span-12', + // 所有表单项 + componentProps: { + class: 'w-full', + }, + }, + // handleSubmit: onSubmit, + layout: 'horizontal', + schema: [ + { + component: 'VbenInput', + fieldName: 'id', + label: 'ID', + formItemClass: 'col-span-6', + dependencies: { + show: false, + triggerFields: ['id'], + }, + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入快递公司昵称', + }, + fieldName: 'name', + label: '快递公司名称', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入快递公司编码', + }, + fieldName: 'code', + label: '快递公司编码', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入快递公司类型', + }, + fieldName: 'type', + label: '快递公司类型', + rules: 'required', + }, + // { + // component: 'Avatar', + // fieldName: 'logo', + // label: 'LOGO', + // rules: 'required', + // }, + { + component: 'Textarea', + componentProps: { + placeholder: '请输入快递公司介绍', + }, + fieldName: 'introduce', + label: '快递公司介绍', + rules: 'required', + }, + ], + showDefaultActions: false, +}; diff --git a/apps/web-antd/src/views/business/express/express-company/config/search.ts b/apps/web-antd/src/views/business/express/express-company/config/search.ts new file mode 100644 index 00000000..d653cfc1 --- /dev/null +++ b/apps/web-antd/src/views/business/express/express-company/config/search.ts @@ -0,0 +1,37 @@ +import type { VbenFormProps } from '#/adapter/form'; + +// import dayjs from 'dayjs'; + +export const formOptions: VbenFormProps = { + // 默认展开 + collapsed: false, + schema: [ + { + component: 'VbenInput', + componentProps: { + placeholder: '输入名称', + }, + defaultValue: '', + fieldName: 'name', + label: '快递公司名称', + }, + // { + // component: 'RangePicker', + // componentProps: { + // format: 'YYYY-MM-DD', // 确保格式与你需要的一致 + // }, + // // defaultValue: [dayjs().startOf('month'), dayjs()], + // fieldName: 'search_time', + // label: '时间范围', + // }, + ], + // 控制表单是否显示折叠按钮 + showCollapseButton: true, + submitButtonOptions: { + content: '查询', + }, + // 是否在字段值改变时提交表单 + submitOnChange: true, + // 按下回车时是否提交表单 + submitOnEnter: false, +}; diff --git a/apps/web-antd/src/views/business/express/express-company/config/table.ts b/apps/web-antd/src/views/business/express/express-company/config/table.ts new file mode 100644 index 00000000..fdcd2dae --- /dev/null +++ b/apps/web-antd/src/views/business/express/express-company/config/table.ts @@ -0,0 +1,67 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getExpressCompaniesList } from '../api'; + +interface RowType { + id: string; + name: string; + logo: string; + introduce: string; + created_at: string; +} + +export const gridOptions: VxeGridProps = { + checkboxConfig: { + highlight: true, + labelField: '', + }, + columnConfig: { + useKey: true, + }, + rowConfig: { + useKey: true, + }, + columns: [ + { type: 'checkbox', width: 60 }, + { field: 'id', align: 'left', title: 'ID', width: 100 }, + { field: 'name', align: 'left', title: '快递公司每次' }, + { field: 'code', title: '快递公司编码' }, + { field: 'type', title: '快递公司类型' }, + { field: 'created_at', title: '上传时间' }, + { type: 'html', title: '操作', slots: { default: 'action' } }, + ], + keepSource: true, + pagerConfig: {}, + proxyConfig: { + ajax: { + // 请求后端接口方法 + query: async ({ page }, formValues) => { + return await getExpressCompaniesList({ + page: page.currentPage, + pageSize: page.pageSize, + ...formValues, + }); + }, + }, + }, + height: 'auto', + border: false, + toolbarConfig: { + // 是否显示搜索表单控制按钮 + // @ts-ignore 正式环境时有完整的类型声明 + search: true, + refresh: true, // 刷新 + print: false, // 打印 + export: false, // 导出 + // custom: true, // 自定义列 + zoom: true, // 最大化最小化 + slots: { + buttons: 'toolbar-buttons', + }, + custom: { + // 自定义列-图标 + icon: 'vxe-icon-menu', + }, + }, + showOverflow: false, +}; diff --git a/apps/web-antd/src/views/business/express/express-company/index.vue b/apps/web-antd/src/views/business/express/express-company/index.vue new file mode 100644 index 00000000..6d879242 --- /dev/null +++ b/apps/web-antd/src/views/business/express/express-company/index.vue @@ -0,0 +1,155 @@ + + + diff --git a/apps/web-antd/src/views/business/order/product-order/api/index.ts b/apps/web-antd/src/views/business/order/product-order/api/index.ts new file mode 100644 index 00000000..863e0bcb --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/api/index.ts @@ -0,0 +1,65 @@ +import { requestClient } from '#/api/request'; + +const prefix = 'order/'; +/** + * 分页查询用户列表 + * @param data + */ +export async function getOrderList(data: any) { + return requestClient.get(`${prefix}list`, { params: data }); +} +/** + * 分页查询用户列表 + * @param data + */ +export async function getOrderStatusOption(data: any) { + return requestClient.get(`${prefix}status-option`, { params: data }); +} + +/** + * 获取订单详情 + * @param id + */ +export async function getOrderInfo(id: number) { + return requestClient.get(`${prefix}detail`, { params: { id } }); +} + +/** + * 新增订单 + * @param data + */ +export async function createOrder(data: Record) { + return requestClient.post(`${prefix}create`, data); +} + +/** + * 编辑订单 + * @param data + */ +export async function updateOrder(data: Record) { + return requestClient.post(`${prefix}update`, data); +} + +/** + * 删除订单 + * @param data + */ +export async function deleteOrder(data: Record) { + return requestClient.post(`${prefix}delete`, data); +} + +/** + * 订单发货 + * @param data + */ +export async function sendOrder(data: Record) { + return requestClient.post(`${prefix}ware-send`, data); +} + +/** + * 订单物流追踪 + * @param data + */ +export async function expressDetailByOrderId(data: Record) { + return requestClient.post(`express-detail/detail-by-order`, data); +} diff --git a/apps/web-antd/src/views/business/order/product-order/components/detail.vue b/apps/web-antd/src/views/business/order/product-order/components/detail.vue new file mode 100644 index 00000000..0b3e0b65 --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/components/detail.vue @@ -0,0 +1,275 @@ + + + + diff --git a/apps/web-antd/src/views/business/order/product-order/components/modal.vue b/apps/web-antd/src/views/business/order/product-order/components/modal.vue new file mode 100644 index 00000000..1400479e --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/components/modal.vue @@ -0,0 +1,64 @@ + + diff --git a/apps/web-antd/src/views/business/order/product-order/config/form.ts b/apps/web-antd/src/views/business/order/product-order/config/form.ts new file mode 100644 index 00000000..f3f5552e --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/config/form.ts @@ -0,0 +1,71 @@ +import type { VbenFormProps } from '#/adapter/form'; + +import { getExpressCompaniesOption } from '#/views/business/express/express-company/api'; + +export const modalFormProps: VbenFormProps = { + wrapperClass: 'grid-cols-12', // 24栅格, + commonConfig: { + formItemClass: 'col-span-12', + // 所有表单项 + componentProps: { + class: 'w-full', + }, + }, + // handleSubmit: onSubmit, + layout: 'horizontal', + schema: [ + { + component: 'VbenInput', + fieldName: 'order_id', + label: 'ID', + formItemClass: 'col-span-6', + dependencies: { + show: false, + triggerFields: ['oreder_id'], + }, + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入快递单号', + }, + fieldName: 'express_no', + label: '快递单号', + rules: 'required', + }, + { + component: 'ApiSelect', + componentProps: { + allowClear: true, + // filterOption: true, + showSearch: true, + filterOption: (input: string, option: any) => { + // 自定义过滤逻辑,确保可以根据 name 进行搜索 + return option?.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; + }, + // 菜单接口转options格式 + afterFetch: (data: { id: number; name: string }[]) => { + return data.map((item: any) => ({ + label: item.name, + value: item.code, + })); + }, + api: getExpressCompaniesOption, + placeholder: '请选择', + }, + fieldName: 'express_company_code', + formItemClass: 'col-span-6', + label: '快递公司', + rules: 'required', + }, + { + component: 'Textarea', + componentProps: { + placeholder: '请输入订单备注', + }, + fieldName: 'introduce', + label: '发货备注', + }, + ], + showDefaultActions: false, +}; diff --git a/apps/web-antd/src/views/business/order/product-order/config/search.ts b/apps/web-antd/src/views/business/order/product-order/config/search.ts new file mode 100644 index 00000000..a3ba96fc --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/config/search.ts @@ -0,0 +1,108 @@ +import type { VbenFormProps } from '#/adapter/form'; + +import dayjs from 'dayjs'; +import {getOrderStatusOption} from "#/views/business/order/product-order/api"; + +export const formOptions: VbenFormProps = { + // 默认展开 + collapsed: false, + schema: [ + { + component: 'VbenInput', + componentProps: { + placeholder: '输入订单号', + }, + defaultValue: '', + fieldName: 'order_no', + label: '订单号', + }, + { + component: 'ApiSelect', + componentProps: { + allowClear: true, + filterOption: true, + // showSearch: true, + // 菜单接口转options格式 + afterFetch: (data: { id: number; name: string }[]) => { + return data.map((item: any) => ({ + label: item.name, + value: item.id, + })); + }, + api: getOrderStatusOption, + placeholder: '请选择', + }, + fieldName: 'status', + label: '订单状态', + }, + { + component: 'VbenSelect', + componentProps: { + allowClear: true, + filterOption: true, + showSearch: true, + options: [ + { + label: '快递到家', + value: 0, + }, + { + label: '诊所自提', + value: 1, + }, + ], + placeholder: '请选择', + }, + fieldName: 'delivery_method', + label: '发货方式', + }, + { + component: 'VbenSelect', + componentProps: { + allowClear: true, + filterOption: true, + showSearch: true, + options: [ + { + label: '中药', + value: 1, + }, + { + label: '西药', + value: 2, + }, + { + label: '中成药', + value: 3, + }, + { + label: '产品服务包', + value: 5, + }, + ], + placeholder: '请选择', + }, + fieldName: 'prescription_type', + label: '订单类型', + }, + { + component: 'RangePicker', + componentProps: { + format: 'YYYY-MM-DD', // 确保格式与你需要的一致 + }, + defaultValue: [dayjs().startOf('month'), dayjs()], + fieldName: 'search_time', + label: '时间范围', + }, + ], + // 控制表单是否显示折叠按钮 + showCollapseButton: true, + submitButtonOptions: { + content: '查询', + }, + // 是否在字段值改变时提交表单 + // submitOnChange: true, + // submitOnChange: true, + // 按下回车时是否提交表单 + submitOnEnter: false, +}; diff --git a/apps/web-antd/src/views/business/order/product-order/config/table.ts b/apps/web-antd/src/views/business/order/product-order/config/table.ts new file mode 100644 index 00000000..b6f0ac7c --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/config/table.ts @@ -0,0 +1,103 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getOrderList } from '#/views/business/order/product-order/api'; + +interface RowType { + id: string; + name: string; + logo: string; + introduce: string; + created_at: string; +} + +export const gridOptions: VxeGridProps = { + checkboxConfig: { + highlight: true, + labelField: '', + }, + columns: [ + // { type: 'checkbox', width: 60 }, + { type: 'expand', width: 80, slots: { content: 'expand-content' } }, + { field: 'id', align: 'left', title: 'ID', width: 100 }, + { field: 'order_no', align: 'left', title: '订单号' }, + { + field: 'user.avatarUrl', + title: '下单用户信息', + slots: { default: 'avatar' }, + width: 100, + }, + { field: 'store.name', title: '诊所名称' }, + { + field: 'address.name', + title: '收货人姓名', + slots: { default: 'address-name' }, + }, + { + field: 'address.mobile', + title: '收货人联系方式', + slots: { default: 'address-mobile' }, + }, + { + field: 'delivery_method', + title: '订单类型&邮寄方式&订单状态', + slots: { default: 'delivery-method' }, + }, + { field: 'items_price', title: '总价' }, + { field: 'pay_time', title: '支付时间', slots: { default: 'pay-time' } }, + { field: 'created_at', title: '下单时间' }, + { + type: 'html', + title: '操作', + align: 'right', + slots: { default: 'action' }, + width: 200, + }, + ], + keepSource: true, + pagerConfig: {}, + columnConfig: { + useKey: true, + }, + rowConfig: { + useKey: true, + }, + // scrollY: { + // enabled: true, + // gt: 0, + // }, + proxyConfig: { + ajax: { + // 请求后端接口方法 + query: async ({ page }, formValues) => { + return await getOrderList({ + page: page.currentPage, + pageSize: page.pageSize, + ...formValues, + }); + }, + }, + }, + height: 'auto', + border: false, + toolbarConfig: { + // 是否显示搜索表单控制按钮 + // @ts-ignore 正式环境时有完整的类型声明 + search: true, + refresh: true, // 刷新 + print: false, // 打印 + export: false, // 导出 + // custom: true, // 自定义列 + zoom: true, // 最大化最小化 + slots: { + buttons: 'toolbar-buttons', + }, + custom: { + // 自定义列-图标 + icon: 'vxe-icon-menu', + }, + }, + expandConfig: { + // expandAll: true, + }, + showOverflow: false, +}; diff --git a/apps/web-antd/src/views/business/order/product-order/index.vue b/apps/web-antd/src/views/business/order/product-order/index.vue new file mode 100644 index 00000000..f7aa3897 --- /dev/null +++ b/apps/web-antd/src/views/business/order/product-order/index.vue @@ -0,0 +1,315 @@ + + + + diff --git a/apps/web-antd/src/views/business/product/service-pack/api/index.ts b/apps/web-antd/src/views/business/product/service-pack/api/index.ts new file mode 100644 index 00000000..65e6f535 --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/api/index.ts @@ -0,0 +1,49 @@ +import { requestClient } from '#/api/request'; + +const prefix = 'service-pack/'; +/** + * 分页查询用户列表 + * @param data + */ +export async function getServicePackList(data: any) { + return requestClient.get(`${prefix}list`, { params: data }); +} +/** + * 分页查询用户列表 + * @param data + */ +export async function getServicePackOption(data: any) { + return requestClient.get(`${prefix}option`, { params: data }); +} + +/** + * 获取产品服务包详情 + * @param id + */ +export async function getServicePackInfo(id: number) { + return requestClient.get(`${prefix}detail`, { params: { id } }); +} + +/** + * 新增产品服务包 + * @param data + */ +export async function createServicePack(data: Record) { + return requestClient.post(`${prefix}create`, data); +} + +/** + * 编辑产品服务包 + * @param data + */ +export async function updateServicePack(data: Record) { + return requestClient.post(`${prefix}update`, data); +} + +/** + * 删除产品服务包 + * @param data + */ +export async function deleteServicePack(data: Record) { + return requestClient.post(`${prefix}delete`, data); +} diff --git a/apps/web-antd/src/views/business/product/service-pack/components/modal.vue b/apps/web-antd/src/views/business/product/service-pack/components/modal.vue new file mode 100644 index 00000000..d1f64f8e --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/components/modal.vue @@ -0,0 +1,75 @@ + + diff --git a/apps/web-antd/src/views/business/product/service-pack/config/form.ts b/apps/web-antd/src/views/business/product/service-pack/config/form.ts new file mode 100644 index 00000000..b052affb --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/config/form.ts @@ -0,0 +1,243 @@ +import type { VbenFormProps } from '#/adapter/form'; + +import { useUserStore } from '@vben/stores'; + +import { getSupplierOption } from '#/views/system/supplier/api'; + +const userStore = useUserStore(); + +export const modalFormProps: VbenFormProps = { + wrapperClass: 'grid-cols-12', // 24栅格, + commonConfig: { + formItemClass: 'col-span-12', + // 所有表单项 + componentProps: { + class: 'w-full', + }, + }, + // handleSubmit: onSubmit, + layout: 'horizontal', + schema: [ + { + component: 'VbenInput', + fieldName: 'id', + label: 'ID', + formItemClass: 'col-span-6', + dependencies: { + show: false, + triggerFields: ['id'], + }, + }, + { + component: 'VbenInput', + fieldName: 'showSelect', + label: 'ID', + formItemClass: 'col-span-6', + dependencies: { + show: false, + triggerFields: ['id'], + }, + }, + { + component: 'Avatar', + fieldName: 'image', + label: '产品图片', + rules: 'required', + formItemClass: 'col-span-6', + }, + { + component: 'ApiSelect', + componentProps: { + allowClear: true, + showSearch: true, + filterOption: (input: string, option: any) => { + // 自定义过滤逻辑,确保可以根据 name 进行搜索 + return option?.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; + }, + // 菜单接口转options格式 + afterFetch: (data: { id: number; name: string }[]) => { + return data.map((item: any) => ({ + label: item.name, + value: item.id, + })); + }, + api: getSupplierOption, + placeholder: '请选择', + }, + dependencies: { + disabled() { + return userStore?.userInfo?.roles?.user_type === 3; + }, + triggerFields: ['supplier_id'], + }, + fieldName: 'supplier_id', + formItemClass: 'col-span-6', + label: '所属供应商', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入服务包昵称', + }, + fieldName: 'drug_name', + formItemClass: 'col-span-6', + label: '服务包昵称', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入服务包别名', + }, + fieldName: 'drug_alias', + formItemClass: 'col-span-6', + label: '服务包别名', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入服务包编号', + }, + fieldName: 'drug_number', + formItemClass: 'col-span-6', + label: '服务包编号', + rules: 'required', + }, + { + component: 'VbenInput', + componentProps: { + placeholder: '请输入功能', + }, + fieldName: 'function', + formItemClass: 'col-span-6', + label: '功能', + rules: 'required', + }, + // { + // component: 'VbenInput', + // componentProps: { + // placeholder: '请输入规格', + // }, + // fieldName: 'specification', + // formItemClass: 'col-span-6', + // label: '规格', + // rules: 'required', + // }, + { + component: 'VbenSelect', + componentProps: { + placeholder: '请选择规格', + options: [ + { + label: '7天', + value: '7天', + }, + { + label: '14天', + value: '14天', + }, + { + label: '30天', + value: '30天', + }, + { + label: '60天', + value: '60天', + }, + { + label: '90天', + value: '90天', + }, + { + label: '180天', + value: '180天', + }, + ], + }, + fieldName: 'specification', + formItemClass: 'col-span-6', + label: '规格', + rules: 'required', + }, + { + component: 'RadioGroup', + componentProps: { + placeholder: '请选择', + options: [ + { + label: '草稿', + value: 1, + }, + { + label: '下架', + value: 2, + }, + { + label: '上架', + value: 3, + }, + ], + }, + defaultValue: 1, + formItemClass: 'col-span-6', + fieldName: 'status', + label: '商品状态', + rules: 'required', + }, + { + component: 'InputNumber', + componentProps: { + placeholder: '请输入平台分成', + }, + suffix: () => '%', + defaultValue: 15, + fieldName: 'platform_ledger', + formItemClass: 'col-span-4', + label: '平台分成', + rules: 'required', + }, + { + component: 'InputNumber', + componentProps: { + placeholder: '请输入诊所分成', + }, + suffix: () => '%', + defaultValue: 35, + fieldName: 'store_ledger', + formItemClass: 'col-span-4', + label: '诊所分成', + rules: 'required', + }, + { + component: 'InputNumber', + componentProps: { + placeholder: '请输入供应商分成', + }, + suffix: () => '%', + defaultValue: 50, + fieldName: 'supplier_ledger', + formItemClass: 'col-span-4', + label: '供应商分成', + rules: 'required', + }, + { + component: 'Textarea', + componentProps: { + placeholder: '请输入服务包介绍', + }, + fieldName: 'small_info', + label: '服务包介绍', + rules: 'required', + }, + { + component: 'Avatar', + fieldName: 'instruction', + label: '产品说明书', + rules: 'required', + formItemClass: 'col-span-6', + }, + ], + showDefaultActions: false, +}; diff --git a/apps/web-antd/src/views/business/product/service-pack/config/search.ts b/apps/web-antd/src/views/business/product/service-pack/config/search.ts new file mode 100644 index 00000000..834bb63c --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/config/search.ts @@ -0,0 +1,37 @@ +import type { VbenFormProps } from '#/adapter/form'; + +// import dayjs from 'dayjs'; + +export const formOptions: VbenFormProps = { + // 默认展开 + collapsed: false, + schema: [ + { + component: 'VbenInput', + componentProps: { + placeholder: '输入名称', + }, + defaultValue: '', + fieldName: 'name', + label: '产品服务包名称', + }, + // { + // component: 'RangePicker', + // componentProps: { + // format: 'YYYY-MM-DD', // 确保格式与你需要的一致 + // }, + // // defaultValue: [dayjs().startOf('month'), dayjs()], + // fieldName: 'search_time', + // label: '时间范围', + // }, + ], + // 控制表单是否显示折叠按钮 + showCollapseButton: true, + submitButtonOptions: { + content: '查询', + }, + // 是否在字段值改变时提交表单 + submitOnChange: true, + // 按下回车时是否提交表单 + submitOnEnter: false, +}; diff --git a/apps/web-antd/src/views/business/product/service-pack/config/table.ts b/apps/web-antd/src/views/business/product/service-pack/config/table.ts new file mode 100644 index 00000000..5d1085f8 --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/config/table.ts @@ -0,0 +1,84 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getServicePackList } from '../api'; + +interface RowType { + id: string; + name: string; + logo: string; + introduce: string; + created_at: string; +} + +export const gridOptions: VxeGridProps = { + checkboxConfig: { + highlight: true, + labelField: '', + }, + columnConfig: { + useKey: true, + }, + rowConfig: { + useKey: true, + }, + columns: [ + { type: 'checkbox', width: 60 }, + { field: 'id', align: 'left', title: 'ID', width: 100 }, + { field: 'drug_name', align: 'left', title: '服务包名称' }, + { field: 'pinyin_simple', title: '拼音' }, + { field: 'supplier.name', title: '供应商' }, + { + field: 'image', + align: 'left', + title: '产品图片', + slots: { default: 'image' }, + width: 130, + }, + { + field: 'instruction', + align: 'left', + title: '说明书', + slots: { default: 'instruction' }, + width: 130, + }, + { field: 'function', title: '主要功能' }, + { field: 'specification', title: '规格' }, + { field: 'status', title: '状态', slots: { default: 'status' } }, + { field: 'created_at', title: '发布时间' }, + { type: 'html', title: '操作', slots: { default: 'action' } }, + ], + keepSource: true, + pagerConfig: {}, + proxyConfig: { + ajax: { + // 请求后端接口方法 + query: async ({ page }, formValues) => { + return await getServicePackList({ + page: page.currentPage, + pageSize: page.pageSize, + ...formValues, + }); + }, + }, + }, + height: 'auto', + border: false, + toolbarConfig: { + // 是否显示搜索表单控制按钮 + // @ts-ignore 正式环境时有完整的类型声明 + search: true, + refresh: true, // 刷新 + print: false, // 打印 + export: false, // 导出 + // custom: true, // 自定义列 + zoom: true, // 最大化最小化 + slots: { + buttons: 'toolbar-buttons', + }, + custom: { + // 自定义列-图标 + icon: 'vxe-icon-menu', + }, + }, + showOverflow: false, +}; diff --git a/apps/web-antd/src/views/business/product/service-pack/index.vue b/apps/web-antd/src/views/business/product/service-pack/index.vue new file mode 100644 index 00000000..b67a04d5 --- /dev/null +++ b/apps/web-antd/src/views/business/product/service-pack/index.vue @@ -0,0 +1,163 @@ + + + diff --git a/apps/web-antd/src/views/dashboard/workspace/index.vue b/apps/web-antd/src/views/dashboard/workspace/index.vue index b95d6138..2c532c02 100644 --- a/apps/web-antd/src/views/dashboard/workspace/index.vue +++ b/apps/web-antd/src/views/dashboard/workspace/index.vue @@ -17,6 +17,7 @@ import { WorkbenchTodo, WorkbenchTrends, } from '@vben/common-ui'; +import { LogoSvgICON } from '@vben/icons'; import { preferences } from '@vben/preferences'; import { useUserStore } from '@vben/stores'; import { openWindow } from '@vben/utils'; @@ -30,59 +31,77 @@ const userStore = useUserStore(); // 例如:url: /dashboard/workspace const projectItems: WorkbenchProjectItem[] = [ { - color: '', + color: 'blue', content: '不要等待机会,而要创造机会。', date: '2021-04-01', - group: '开源组', - icon: 'carbon:logo-github', - title: 'Github', - url: 'https://github.com', + group: '萧康云医科技', + icon: LogoSvgICON, + title: '萧康后台管理系统-旧版本', + url: 'https://admin.xiaokang88.com', }, { - color: '#3fb27f', - content: '现在的你决定将来的你。', + color: 'blue', + content: '数据可视化平台。', date: '2021-04-01', - group: '算法组', - icon: 'ion:logo-vue', - title: 'Vue', - url: 'https://vuejs.org', - }, - { - color: '#e18525', - content: '没有什么才能比努力更重要。', - date: '2021-04-01', - group: '上班摸鱼', - icon: 'ion:logo-html5', - title: 'Html5', - url: 'https://developer.mozilla.org/zh-CN/docs/Web/HTML', - }, - { - color: '#bf0c2c', - content: '热情和欲望可以突破一切难关。', - date: '2021-04-01', - group: 'UI', - icon: 'ion:logo-angular', - title: 'Angular', - url: 'https://angular.io', - }, - { - color: '#00d8ff', - content: '健康的身体是实现目标的基石。', - date: '2021-04-01', - group: '技术牛', - icon: 'bx:bxl-react', - title: 'React', - url: 'https://reactjs.org', - }, - { - color: '#EBD94E', - content: '路是走出来的,而不是空想出来的。', - date: '2021-04-01', - group: '架构组', - icon: 'ion:logo-javascript', - title: 'Js', - url: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript', + group: '萧康云医科技', + icon: 'fluent-color:data-bar-vertical-ascending-20', + title: '数据大屏', + url: 'http://dls.xiaokang88.com', }, + // { + // color: '', + // content: '不要等待机会,而要创造机会。', + // date: '2021-04-01', + // group: '开源组', + // icon: 'carbon:logo-github', + // title: 'Github', + // url: 'https://github.com', + // }, + // { + // color: '#3fb27f', + // content: '现在的你决定将来的你。', + // date: '2021-04-01', + // group: '算法组', + // icon: 'ion:logo-vue', + // title: 'Vue', + // url: 'https://vuejs.org', + // }, + // { + // color: '#e18525', + // content: '没有什么才能比努力更重要。', + // date: '2021-04-01', + // group: '上班摸鱼', + // icon: 'ion:logo-html5', + // title: 'Html5', + // url: 'https://developer.mozilla.org/zh-CN/docs/Web/HTML', + // }, + // { + // color: '#bf0c2c', + // content: '热情和欲望可以突破一切难关。', + // date: '2021-04-01', + // group: 'UI', + // icon: 'ion:logo-angular', + // title: 'Angular', + // url: 'https://angular.io', + // }, + // { + // color: '#00d8ff', + // content: '健康的身体是实现目标的基石。', + // date: '2021-04-01', + // group: '技术牛', + // icon: 'bx:bxl-react', + // title: 'React', + // url: 'https://reactjs.org', + // }, + // { + // color: '#EBD94E', + // content: '路是走出来的,而不是空想出来的。', + // date: '2021-04-01', + // group: '架构组', + // icon: 'ion:logo-javascript', + // title: 'Js', + // url: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript', + // }, ]; // 同样,这里的 url 也可以使用以 http 开头的外部链接 @@ -102,26 +121,26 @@ const quickNavItems: WorkbenchQuickNavItem[] = [ { color: '#e18525', icon: 'ion:layers-outline', - title: '组件', - url: '/demos/features/icons', - }, - { - color: '#3fb27f', - icon: 'ion:settings-outline', - title: '系统管理', - url: '/demos/features/login-expired', // 这里的 URL 是示例,实际项目中需要根据实际情况进行调整 + title: '管理员管理', + url: '/system/user', }, + // { + // color: '#3fb27f', + // icon: 'ion:settings-outline', + // title: '系统管理', + // url: '/demos/features/login-expired', // 这里的 URL 是示例,实际项目中需要根据实际情况进行调整 + // }, { color: '#4daf1bc9', icon: 'ion:key-outline', - title: '权限管理', - url: '/demos/access/page-control', + title: '平台管理', + url: '/platform', }, { color: '#00d8ff', icon: 'ion:bar-chart-outline', - title: '图表', - url: '/analytics', + title: '供应商管理', + url: '/supplier', }, ]; @@ -159,59 +178,59 @@ const todoItems = ref([ ]); const trendItems: WorkbenchTrendItem[] = [ { - avatar: 'svg:avatar-1', - content: `在 开源组 创建了项目 Vue`, - date: '刚刚', - title: '威廉', - }, - { - avatar: 'svg:avatar-2', - content: `关注了 威廉 `, - date: '1个小时前', - title: '艾文', - }, - { - avatar: 'svg:avatar-3', - content: `发布了 个人动态 `, - date: '1天前', - title: '克里斯', - }, - { - avatar: 'svg:avatar-4', - content: `发表文章 如何编写一个Vite插件 `, - date: '2天前', - title: 'Vben', - }, - { - avatar: 'svg:avatar-1', - content: `回复了 杰克 的问题 如何进行项目优化?`, - date: '3天前', - title: '皮特', - }, - { - avatar: 'svg:avatar-2', - content: `关闭了问题 如何运行项目 `, - date: '1周前', - title: '杰克', - }, - { - avatar: 'svg:avatar-3', - content: `发布了 个人动态 `, - date: '1周前', - title: '威廉', - }, - { - avatar: 'svg:avatar-4', - content: `推送了代码到 Github`, - date: '2021-04-01 20:00', - title: '威廉', - }, - { - avatar: 'svg:avatar-4', - content: `发表文章 如何编写使用 Admin Vben `, - date: '2021-03-01 20:00', - title: 'Vben', + avatar: 'svg:logo', + content: `萧康云医上线啦!`, + date: '2025-1-7', + title: '萧康云医', }, + // { + // avatar: 'svg:avatar-2', + // content: `关注了 威廉 `, + // date: '1个小时前', + // title: '艾文', + // }, + // { + // avatar: 'svg:avatar-3', + // content: `发布了 个人动态 `, + // date: '1天前', + // title: '克里斯', + // }, + // { + // avatar: 'svg:avatar-4', + // content: `发表文章 如何编写一个Vite插件 `, + // date: '2天前', + // title: 'Vben', + // }, + // { + // avatar: 'svg:avatar-1', + // content: `回复了 杰克 的问题 如何进行项目优化?`, + // date: '3天前', + // title: '皮特', + // }, + // { + // avatar: 'svg:avatar-2', + // content: `关闭了问题 如何运行项目 `, + // date: '1周前', + // title: '杰克', + // }, + // { + // avatar: 'svg:avatar-3', + // content: `发布了 个人动态 `, + // date: '1周前', + // title: '威廉', + // }, + // { + // avatar: 'svg:avatar-4', + // content: `推送了代码到 Github`, + // date: '2021-04-01 20:00', + // title: '威廉', + // }, + // { + // avatar: 'svg:avatar-4', + // content: `发表文章 如何编写使用 Admin Vben `, + // date: '2021-03-01 20:00', + // title: 'Vben', + // }, ]; const router = useRouter(); @@ -231,6 +250,20 @@ function navTo(nav: WorkbenchProjectItem | WorkbenchQuickNavItem) { console.warn(`Unknown URL for navigation item: ${nav.title} -> ${nav.url}`); } } + +// 获取当天的日期和天气 +function getTodayDate() { + const today = new Date(); + const options: Intl.DateTimeFormatOptions = { + weekday: 'long', + year: 'numeric', + month: 'long', + day: 'numeric', + }; + return today.toLocaleDateString('zh-CN', options); +} +const todayDate = getTodayDate(); +