From c6f69304168fdca7f57a13de8302594cbf027eed Mon Sep 17 00:00:00 2001
From: Eg <1711788888@qq.com>
Date: Tue, 7 Apr 2026 09:07:48 +0800
Subject: [PATCH] Remove legacy web frontend
---
.gitignore | 3 +
server/initialize/plugin.go | 2 +-
server/plugin/announcement/gen/gen.go | 10 +-
web-admin/docs/system-inventory.md | 5 -
web/.docker-compose/nginx/conf.d/my.conf | 26 -
web/.docker-compose/nginx/conf.d/nginx.conf | 32 -
web/.dockerignore | 1 -
web/.env.development | 11 -
web/.env.production | 7 -
web/.gitignore | 5 -
web/.prettierrc | 12 -
web/Dockerfile | 25 -
web/README.md | 106 -
web/babel.config.js | 4 -
web/eslint.config.mjs | 29 -
web/index.html | 115 -
web/jsconfig.json | 10 -
web/limit.js | 37 -
web/openDocument.js | 20 -
web/package.json | 87 -
web/public/favicon.ico | Bin 4286 -> 0 bytes
web/public/logo.png | Bin 76683 -> 0 bytes
web/src/App.vue | 46 -
web/src/api/api.js | 206 --
web/src/api/attachmentCategory.js | 26 -
web/src/api/authority.js | 113 -
web/src/api/authorityBtn.js | 25 -
web/src/api/autoCode.js | 582 ----
web/src/api/breakpoint.js | 43 -
web/src/api/casbin.js | 32 -
web/src/api/customer.js | 80 -
web/src/api/email.js | 14 -
web/src/api/exportTemplate.js | 145 -
web/src/api/fileUploadAndDownload.js | 67 -
web/src/api/github.js | 19 -
web/src/api/initdb.js | 27 -
web/src/api/jwt.js | 14 -
web/src/api/menu.js | 141 -
web/src/api/plugin/api.js | 10 -
web/src/api/skills.js | 169 --
web/src/api/sysApiToken.js | 25 -
web/src/api/sysDictionary.js | 112 -
web/src/api/sysDictionaryDetail.js | 145 -
web/src/api/sysLoginLog.js | 33 -
web/src/api/sysOperationRecord.js | 48 -
web/src/api/sysParams.js | 111 -
web/src/api/system.js | 55 -
web/src/api/system/sysError.js | 126 -
web/src/api/user.js | 181 --
web/src/api/version.js | 114 -
web/src/assets/404.png | Bin 43988 -> 0 bytes
web/src/assets/background.svg | 1 -
web/src/assets/banner.jpg | Bin 40498 -> 0 bytes
web/src/assets/banner2.jpg | Bin 45773 -> 0 bytes
web/src/assets/dashboard.png | Bin 72153 -> 0 bytes
web/src/assets/docs.png | Bin 4701 -> 0 bytes
web/src/assets/flipped-aurora.png | Bin 72652 -> 0 bytes
web/src/assets/github.png | Bin 7793 -> 0 bytes
web/src/assets/icons/ai-gva.svg | 1 -
web/src/assets/icons/close.svg | 1 -
web/src/assets/icons/customer-gva.svg | 1 -
web/src/assets/icons/idea.svg | 1 -
web/src/assets/icons/lock.svg | 1 -
web/src/assets/icons/server.svg | 1 -
web/src/assets/icons/warn.svg | 1 -
web/src/assets/kefu.png | Bin 6770 -> 0 bytes
web/src/assets/login_background.jpg | Bin 41154 -> 0 bytes
web/src/assets/login_background.svg | 33 -
web/src/assets/login_left.svg | 123 -
web/src/assets/login_right_banner.jpg | Bin 719028 -> 0 bytes
web/src/assets/logo.jpg | Bin 27616 -> 0 bytes
web/src/assets/logo.png | Bin 8060 -> 0 bytes
web/src/assets/logo_login.png | Bin 25312 -> 0 bytes
web/src/assets/nav_logo.png | Bin 76683 -> 0 bytes
web/src/assets/noBody.png | Bin 4097 -> 0 bytes
web/src/assets/notFound.png | Bin 19669 -> 0 bytes
web/src/assets/qm.png | Bin 4821 -> 0 bytes
web/src/assets/video.png | Bin 5160 -> 0 bytes
web/src/components/application/index.vue | 39 -
web/src/components/arrayCtrl/arrayCtrl.vue | 67 -
web/src/components/bottomInfo/bottomInfo.vue | 44 -
web/src/components/charts/index.vue | 47 -
web/src/components/commandMenu/index.vue | 195 --
web/src/components/customPic/index.vue | 90 -
web/src/components/errorPreview/index.vue | 126 -
.../components/exportExcel/exportExcel.vue | 84 -
.../components/exportExcel/exportTemplate.vue | 40 -
.../components/exportExcel/importExcel.vue | 45 -
web/src/components/logo/index.vue | 82 -
web/src/components/office/docx.vue | 31 -
web/src/components/office/excel.vue | 36 -
web/src/components/office/index.vue | 49 -
web/src/components/office/pdf.vue | 39 -
web/src/components/richtext/rich-edit.vue | 164 --
web/src/components/richtext/rich-view.vue | 131 -
web/src/components/selectFile/selectFile.vue | 87 -
.../selectImage/selectComponent.vue | 86 -
.../components/selectImage/selectImage.vue | 503 ----
web/src/components/svgIcon/svgIcon.vue | 44 -
web/src/components/warningBar/warningBar.vue | 33 -
web/src/core/config.js | 55 -
web/src/core/error-handel.js | 24 -
web/src/core/gin-vue-admin.js | 29 -
web/src/core/global.js | 63 -
web/src/directive/auth.js | 25 -
web/src/directive/clickOutSide.js | 43 -
web/src/hooks/charts.js | 18 -
web/src/hooks/responsive.js | 35 -
web/src/hooks/use-windows-resize.js | 23 -
web/src/main.js | 37 -
web/src/pathInfo.json | 86 -
web/src/permission.js | 224 --
web/src/pinia/index.js | 8 -
web/src/pinia/modules/app.js | 162 --
web/src/pinia/modules/dictionary.js | 252 --
web/src/pinia/modules/params.js | 31 -
web/src/pinia/modules/router.js | 207 --
web/src/pinia/modules/user.js | 150 -
web/src/plugin/announcement/api/info.js | 110 -
web/src/plugin/announcement/form/info.vue | 137 -
web/src/plugin/announcement/view/info.vue | 510 ----
web/src/plugin/email/api/email.js | 29 -
web/src/plugin/email/view/index.vue | 60 -
web/src/router/index.js | 41 -
web/src/style/element/index.scss | 24 -
web/src/style/element_visiable.scss | 138 -
web/src/style/iconfont.css | 47 -
web/src/style/main.scss | 59 -
web/src/style/reset.scss | 381 ---
web/src/style/transition.scss | 68 -
web/src/utils/asyncRouter.js | 29 -
web/src/utils/btnAuth.js | 6 -
web/src/utils/bus.js | 4 -
web/src/utils/closeThisPage.js | 5 -
web/src/utils/date.js | 44 -
web/src/utils/dictionary.js | 93 -
web/src/utils/doc.js | 3 -
web/src/utils/downloadImg.js | 20 -
web/src/utils/env.js | 3 -
web/src/utils/event.js | 17 -
web/src/utils/fmtRouterTitle.js | 13 -
web/src/utils/format.js | 175 --
web/src/utils/image.js | 126 -
web/src/utils/page.js | 9 -
web/src/utils/params.js | 14 -
web/src/utils/request.js | 231 --
web/src/utils/stringFun.js | 29 -
web/src/view/about/index.vue | 166 --
web/src/view/dashboard/components/banner.vue | 38 -
web/src/view/dashboard/components/card.vue | 45 -
.../components/charts-content-numbers.vue | 185 --
.../components/charts-people-numbers.vue | 130 -
web/src/view/dashboard/components/charts.vue | 49 -
web/src/view/dashboard/components/index.js | 19 -
web/src/view/dashboard/components/notice.vue | 67 -
.../view/dashboard/components/pluginTable.vue | 65 -
.../view/dashboard/components/quickLinks.vue | 83 -
web/src/view/dashboard/components/table.vue | 47 -
web/src/view/dashboard/components/wiki.vue | 40 -
web/src/view/dashboard/index.vue | 128 -
web/src/view/error/index.vue | 49 -
web/src/view/error/reload.vue | 14 -
.../view/example/breakpoint/breakpoint.vue | 340 ---
web/src/view/example/customer/customer.vue | 215 --
web/src/view/example/index.vue | 19 -
web/src/view/init/index.vue | 386 ---
.../aside/asideComponent/asyncSubmenu.vue | 66 -
.../layout/aside/asideComponent/index.vue | 47 -
.../layout/aside/asideComponent/menuItem.vue | 49 -
web/src/view/layout/aside/combinationMode.vue | 146 -
web/src/view/layout/aside/headMode.vue | 139 -
web/src/view/layout/aside/index.vue | 39 -
web/src/view/layout/aside/normalMode.vue | 110 -
web/src/view/layout/aside/sidebarMode.vue | 290 --
web/src/view/layout/header/index.vue | 133 -
web/src/view/layout/header/tools.vue | 194 --
web/src/view/layout/iframe.vue | 73 -
web/src/view/layout/index.vue | 118 -
web/src/view/layout/screenfull/index.vue | 62 -
web/src/view/layout/search/search.vue | 98 -
.../setting/components/layoutModeCard.vue | 205 --
.../layout/setting/components/settingItem.vue | 111 -
.../setting/components/themeColorPicker.vue | 150 -
.../setting/components/themeModeSelector.vue | 70 -
web/src/view/layout/setting/index.vue | 228 --
.../setting/modules/appearance/index.vue | 106 -
.../layout/setting/modules/general/index.vue | 247 --
.../layout/setting/modules/layout/index.vue | 145 -
web/src/view/layout/tabs/index.vue | 421 ---
web/src/view/login/index.vue | 251 --
web/src/view/person/person.vue | 631 -----
web/src/view/routerHolder.vue | 22 -
web/src/view/superAdmin/api/api.vue | 918 -------
.../view/superAdmin/authority/authority.vue | 595 ----
.../superAdmin/authority/components/apis.vue | 174 --
.../superAdmin/authority/components/datas.vue | 145 -
.../superAdmin/authority/components/menus.vue | 309 ---
.../superAdmin/dictionary/sysDictionary.vue | 924 -------
.../dictionary/sysDictionaryDetail.vue | 430 ---
web/src/view/superAdmin/index.vue | 20 -
.../menu/components/components-cascader.vue | 131 -
web/src/view/superAdmin/menu/icon.vue | 1179 --------
web/src/view/superAdmin/menu/menu.vue | 932 -------
.../operation/sysOperationRecord.vue | 277 --
web/src/view/superAdmin/params/sysParams.vue | 604 ----
web/src/view/superAdmin/user/user.vue | 622 -----
web/src/view/system/state.vue | 192 --
web/src/view/systemTools/aiWrokflow/index.vue | 2423 -----------------
web/src/view/systemTools/apiToken/index.vue | 299 --
.../autoCode/component/fieldDialog.vue | 502 ----
.../autoCode/component/previewCodeDialog.vue | 119 -
web/src/view/systemTools/autoCode/index.vue | 1681 ------------
web/src/view/systemTools/autoCode/mcp.vue | 151 -
web/src/view/systemTools/autoCode/mcpTest.vue | 615 -----
web/src/view/systemTools/autoCode/picture.vue | 426 ---
.../view/systemTools/autoCodeAdmin/index.vue | 620 -----
web/src/view/systemTools/autoPkg/autoPkg.vue | 207 --
.../view/systemTools/exportTemplate/code.js | 32 -
.../exportTemplate/exportTemplate.vue | 1166 --------
web/src/view/systemTools/formCreate/index.vue | 208 --
web/src/view/systemTools/index.vue | 20 -
.../view/systemTools/installPlugin/index.vue | 126 -
web/src/view/systemTools/loginLog/index.vue | 180 --
web/src/view/systemTools/pubPlug/pubPlug.vue | 305 ---
web/src/view/systemTools/skills/index.vue | 1460 ----------
.../view/systemTools/sysError/sysError.vue | 457 ----
web/src/view/systemTools/system/system.vue | 1135 --------
web/src/view/systemTools/version/version.vue | 998 -------
web/uno.config.js | 26 -
web/vite.config.js | 118 -
web/vitePlugin/componentName/index.js | 88 -
web/vitePlugin/secret/index.js | 7 -
232 files changed, 10 insertions(+), 36426 deletions(-)
delete mode 100644 web/.docker-compose/nginx/conf.d/my.conf
delete mode 100644 web/.docker-compose/nginx/conf.d/nginx.conf
delete mode 100644 web/.dockerignore
delete mode 100644 web/.env.development
delete mode 100644 web/.env.production
delete mode 100644 web/.gitignore
delete mode 100644 web/.prettierrc
delete mode 100644 web/Dockerfile
delete mode 100644 web/README.md
delete mode 100644 web/babel.config.js
delete mode 100644 web/eslint.config.mjs
delete mode 100644 web/index.html
delete mode 100644 web/jsconfig.json
delete mode 100644 web/limit.js
delete mode 100644 web/openDocument.js
delete mode 100644 web/package.json
delete mode 100644 web/public/favicon.ico
delete mode 100644 web/public/logo.png
delete mode 100644 web/src/App.vue
delete mode 100644 web/src/api/api.js
delete mode 100644 web/src/api/attachmentCategory.js
delete mode 100644 web/src/api/authority.js
delete mode 100644 web/src/api/authorityBtn.js
delete mode 100644 web/src/api/autoCode.js
delete mode 100644 web/src/api/breakpoint.js
delete mode 100644 web/src/api/casbin.js
delete mode 100644 web/src/api/customer.js
delete mode 100644 web/src/api/email.js
delete mode 100644 web/src/api/exportTemplate.js
delete mode 100644 web/src/api/fileUploadAndDownload.js
delete mode 100644 web/src/api/github.js
delete mode 100644 web/src/api/initdb.js
delete mode 100644 web/src/api/jwt.js
delete mode 100644 web/src/api/menu.js
delete mode 100644 web/src/api/plugin/api.js
delete mode 100644 web/src/api/skills.js
delete mode 100644 web/src/api/sysApiToken.js
delete mode 100644 web/src/api/sysDictionary.js
delete mode 100644 web/src/api/sysDictionaryDetail.js
delete mode 100644 web/src/api/sysLoginLog.js
delete mode 100644 web/src/api/sysOperationRecord.js
delete mode 100644 web/src/api/sysParams.js
delete mode 100644 web/src/api/system.js
delete mode 100644 web/src/api/system/sysError.js
delete mode 100644 web/src/api/user.js
delete mode 100644 web/src/api/version.js
delete mode 100644 web/src/assets/404.png
delete mode 100644 web/src/assets/background.svg
delete mode 100644 web/src/assets/banner.jpg
delete mode 100644 web/src/assets/banner2.jpg
delete mode 100644 web/src/assets/dashboard.png
delete mode 100644 web/src/assets/docs.png
delete mode 100644 web/src/assets/flipped-aurora.png
delete mode 100644 web/src/assets/github.png
delete mode 100644 web/src/assets/icons/ai-gva.svg
delete mode 100644 web/src/assets/icons/close.svg
delete mode 100644 web/src/assets/icons/customer-gva.svg
delete mode 100644 web/src/assets/icons/idea.svg
delete mode 100644 web/src/assets/icons/lock.svg
delete mode 100644 web/src/assets/icons/server.svg
delete mode 100644 web/src/assets/icons/warn.svg
delete mode 100644 web/src/assets/kefu.png
delete mode 100644 web/src/assets/login_background.jpg
delete mode 100644 web/src/assets/login_background.svg
delete mode 100644 web/src/assets/login_left.svg
delete mode 100644 web/src/assets/login_right_banner.jpg
delete mode 100644 web/src/assets/logo.jpg
delete mode 100644 web/src/assets/logo.png
delete mode 100644 web/src/assets/logo_login.png
delete mode 100644 web/src/assets/nav_logo.png
delete mode 100644 web/src/assets/noBody.png
delete mode 100644 web/src/assets/notFound.png
delete mode 100644 web/src/assets/qm.png
delete mode 100644 web/src/assets/video.png
delete mode 100644 web/src/components/application/index.vue
delete mode 100644 web/src/components/arrayCtrl/arrayCtrl.vue
delete mode 100644 web/src/components/bottomInfo/bottomInfo.vue
delete mode 100644 web/src/components/charts/index.vue
delete mode 100644 web/src/components/commandMenu/index.vue
delete mode 100644 web/src/components/customPic/index.vue
delete mode 100644 web/src/components/errorPreview/index.vue
delete mode 100644 web/src/components/exportExcel/exportExcel.vue
delete mode 100644 web/src/components/exportExcel/exportTemplate.vue
delete mode 100644 web/src/components/exportExcel/importExcel.vue
delete mode 100644 web/src/components/logo/index.vue
delete mode 100644 web/src/components/office/docx.vue
delete mode 100644 web/src/components/office/excel.vue
delete mode 100644 web/src/components/office/index.vue
delete mode 100644 web/src/components/office/pdf.vue
delete mode 100644 web/src/components/richtext/rich-edit.vue
delete mode 100644 web/src/components/richtext/rich-view.vue
delete mode 100644 web/src/components/selectFile/selectFile.vue
delete mode 100644 web/src/components/selectImage/selectComponent.vue
delete mode 100644 web/src/components/selectImage/selectImage.vue
delete mode 100644 web/src/components/svgIcon/svgIcon.vue
delete mode 100644 web/src/components/warningBar/warningBar.vue
delete mode 100644 web/src/core/config.js
delete mode 100644 web/src/core/error-handel.js
delete mode 100644 web/src/core/gin-vue-admin.js
delete mode 100644 web/src/core/global.js
delete mode 100644 web/src/directive/auth.js
delete mode 100644 web/src/directive/clickOutSide.js
delete mode 100644 web/src/hooks/charts.js
delete mode 100644 web/src/hooks/responsive.js
delete mode 100644 web/src/hooks/use-windows-resize.js
delete mode 100644 web/src/main.js
delete mode 100644 web/src/pathInfo.json
delete mode 100644 web/src/permission.js
delete mode 100644 web/src/pinia/index.js
delete mode 100644 web/src/pinia/modules/app.js
delete mode 100644 web/src/pinia/modules/dictionary.js
delete mode 100644 web/src/pinia/modules/params.js
delete mode 100644 web/src/pinia/modules/router.js
delete mode 100644 web/src/pinia/modules/user.js
delete mode 100644 web/src/plugin/announcement/api/info.js
delete mode 100644 web/src/plugin/announcement/form/info.vue
delete mode 100644 web/src/plugin/announcement/view/info.vue
delete mode 100644 web/src/plugin/email/api/email.js
delete mode 100644 web/src/plugin/email/view/index.vue
delete mode 100644 web/src/router/index.js
delete mode 100644 web/src/style/element/index.scss
delete mode 100644 web/src/style/element_visiable.scss
delete mode 100644 web/src/style/iconfont.css
delete mode 100644 web/src/style/main.scss
delete mode 100644 web/src/style/reset.scss
delete mode 100644 web/src/style/transition.scss
delete mode 100644 web/src/utils/asyncRouter.js
delete mode 100644 web/src/utils/btnAuth.js
delete mode 100644 web/src/utils/bus.js
delete mode 100644 web/src/utils/closeThisPage.js
delete mode 100644 web/src/utils/date.js
delete mode 100644 web/src/utils/dictionary.js
delete mode 100644 web/src/utils/doc.js
delete mode 100644 web/src/utils/downloadImg.js
delete mode 100644 web/src/utils/env.js
delete mode 100644 web/src/utils/event.js
delete mode 100644 web/src/utils/fmtRouterTitle.js
delete mode 100644 web/src/utils/format.js
delete mode 100644 web/src/utils/image.js
delete mode 100644 web/src/utils/page.js
delete mode 100644 web/src/utils/params.js
delete mode 100644 web/src/utils/request.js
delete mode 100644 web/src/utils/stringFun.js
delete mode 100644 web/src/view/about/index.vue
delete mode 100644 web/src/view/dashboard/components/banner.vue
delete mode 100644 web/src/view/dashboard/components/card.vue
delete mode 100644 web/src/view/dashboard/components/charts-content-numbers.vue
delete mode 100644 web/src/view/dashboard/components/charts-people-numbers.vue
delete mode 100644 web/src/view/dashboard/components/charts.vue
delete mode 100644 web/src/view/dashboard/components/index.js
delete mode 100644 web/src/view/dashboard/components/notice.vue
delete mode 100644 web/src/view/dashboard/components/pluginTable.vue
delete mode 100644 web/src/view/dashboard/components/quickLinks.vue
delete mode 100644 web/src/view/dashboard/components/table.vue
delete mode 100644 web/src/view/dashboard/components/wiki.vue
delete mode 100644 web/src/view/dashboard/index.vue
delete mode 100644 web/src/view/error/index.vue
delete mode 100644 web/src/view/error/reload.vue
delete mode 100644 web/src/view/example/breakpoint/breakpoint.vue
delete mode 100644 web/src/view/example/customer/customer.vue
delete mode 100644 web/src/view/example/index.vue
delete mode 100644 web/src/view/init/index.vue
delete mode 100644 web/src/view/layout/aside/asideComponent/asyncSubmenu.vue
delete mode 100644 web/src/view/layout/aside/asideComponent/index.vue
delete mode 100644 web/src/view/layout/aside/asideComponent/menuItem.vue
delete mode 100644 web/src/view/layout/aside/combinationMode.vue
delete mode 100644 web/src/view/layout/aside/headMode.vue
delete mode 100644 web/src/view/layout/aside/index.vue
delete mode 100644 web/src/view/layout/aside/normalMode.vue
delete mode 100644 web/src/view/layout/aside/sidebarMode.vue
delete mode 100644 web/src/view/layout/header/index.vue
delete mode 100644 web/src/view/layout/header/tools.vue
delete mode 100644 web/src/view/layout/iframe.vue
delete mode 100644 web/src/view/layout/index.vue
delete mode 100644 web/src/view/layout/screenfull/index.vue
delete mode 100644 web/src/view/layout/search/search.vue
delete mode 100644 web/src/view/layout/setting/components/layoutModeCard.vue
delete mode 100644 web/src/view/layout/setting/components/settingItem.vue
delete mode 100644 web/src/view/layout/setting/components/themeColorPicker.vue
delete mode 100644 web/src/view/layout/setting/components/themeModeSelector.vue
delete mode 100644 web/src/view/layout/setting/index.vue
delete mode 100644 web/src/view/layout/setting/modules/appearance/index.vue
delete mode 100644 web/src/view/layout/setting/modules/general/index.vue
delete mode 100644 web/src/view/layout/setting/modules/layout/index.vue
delete mode 100644 web/src/view/layout/tabs/index.vue
delete mode 100644 web/src/view/login/index.vue
delete mode 100644 web/src/view/person/person.vue
delete mode 100644 web/src/view/routerHolder.vue
delete mode 100644 web/src/view/superAdmin/api/api.vue
delete mode 100644 web/src/view/superAdmin/authority/authority.vue
delete mode 100644 web/src/view/superAdmin/authority/components/apis.vue
delete mode 100644 web/src/view/superAdmin/authority/components/datas.vue
delete mode 100644 web/src/view/superAdmin/authority/components/menus.vue
delete mode 100644 web/src/view/superAdmin/dictionary/sysDictionary.vue
delete mode 100644 web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue
delete mode 100644 web/src/view/superAdmin/index.vue
delete mode 100644 web/src/view/superAdmin/menu/components/components-cascader.vue
delete mode 100644 web/src/view/superAdmin/menu/icon.vue
delete mode 100644 web/src/view/superAdmin/menu/menu.vue
delete mode 100644 web/src/view/superAdmin/operation/sysOperationRecord.vue
delete mode 100644 web/src/view/superAdmin/params/sysParams.vue
delete mode 100644 web/src/view/superAdmin/user/user.vue
delete mode 100644 web/src/view/system/state.vue
delete mode 100644 web/src/view/systemTools/aiWrokflow/index.vue
delete mode 100644 web/src/view/systemTools/apiToken/index.vue
delete mode 100644 web/src/view/systemTools/autoCode/component/fieldDialog.vue
delete mode 100644 web/src/view/systemTools/autoCode/component/previewCodeDialog.vue
delete mode 100644 web/src/view/systemTools/autoCode/index.vue
delete mode 100644 web/src/view/systemTools/autoCode/mcp.vue
delete mode 100644 web/src/view/systemTools/autoCode/mcpTest.vue
delete mode 100644 web/src/view/systemTools/autoCode/picture.vue
delete mode 100644 web/src/view/systemTools/autoCodeAdmin/index.vue
delete mode 100644 web/src/view/systemTools/autoPkg/autoPkg.vue
delete mode 100644 web/src/view/systemTools/exportTemplate/code.js
delete mode 100644 web/src/view/systemTools/exportTemplate/exportTemplate.vue
delete mode 100644 web/src/view/systemTools/formCreate/index.vue
delete mode 100644 web/src/view/systemTools/index.vue
delete mode 100644 web/src/view/systemTools/installPlugin/index.vue
delete mode 100644 web/src/view/systemTools/loginLog/index.vue
delete mode 100644 web/src/view/systemTools/pubPlug/pubPlug.vue
delete mode 100644 web/src/view/systemTools/skills/index.vue
delete mode 100644 web/src/view/systemTools/sysError/sysError.vue
delete mode 100644 web/src/view/systemTools/system/system.vue
delete mode 100644 web/src/view/systemTools/version/version.vue
delete mode 100644 web/uno.config.js
delete mode 100644 web/vite.config.js
delete mode 100644 web/vitePlugin/componentName/index.js
delete mode 100644 web/vitePlugin/secret/index.js
diff --git a/.gitignore b/.gitignore
index 613bcd4..8bed08f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -78,3 +78,6 @@ server/config.yaml
.codex
.cursor
.gpt
+
+
+web
\ No newline at end of file
diff --git a/server/initialize/plugin.go b/server/initialize/plugin.go
index 7ee33c2..87ac748 100644
--- a/server/initialize/plugin.go
+++ b/server/initialize/plugin.go
@@ -7,7 +7,7 @@ import (
func InstallPlugin(PrivateGroup *gin.RouterGroup, PublicRouter *gin.RouterGroup, engine *gin.Engine) {
if global.GVA_DB == nil {
- global.GVA_LOG.Info("项目暂未初始化,无法安装插件,初始化后重启项目即可完成插件安装")
+ global.GVA_LOG.Info("项目暂未初始化,跳过可选扩展安装")
return
}
bizPluginV1(PrivateGroup, PublicRouter)
diff --git a/server/plugin/announcement/gen/gen.go b/server/plugin/announcement/gen/gen.go
index 240749f..d09800c 100644
--- a/server/plugin/announcement/gen/gen.go
+++ b/server/plugin/announcement/gen/gen.go
@@ -1,11 +1,13 @@
package main
+//go:generate go mod tidy
+//go:generate go mod download
+//go:generate go run gen.go
+
import (
- "gorm.io/gen"
- "path/filepath" //go:generate go mod tidy
- //go:generate go mod download
- //go:generate go run gen.go
"github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model"
+ "gorm.io/gen"
+ "path/filepath"
)
func main() {
diff --git a/web-admin/docs/system-inventory.md b/web-admin/docs/system-inventory.md
index 6ac1a7a..d9bc780 100644
--- a/web-admin/docs/system-inventory.md
+++ b/web-admin/docs/system-inventory.md
@@ -179,11 +179,6 @@
- Mcp Tools 模板
- Skills 管理
- AI 页面绘制
-- 插件系统
-- 插件安装
-- 打包插件
-- 邮件插件
-- 公告管理
## 说明
diff --git a/web/.docker-compose/nginx/conf.d/my.conf b/web/.docker-compose/nginx/conf.d/my.conf
deleted file mode 100644
index 9a1685d..0000000
--- a/web/.docker-compose/nginx/conf.d/my.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-server {
- listen 8080;
- server_name localhost;
-
- #charset koi8-r;
- #access_log logs/host.access.log main;
-
- location / {
- root /usr/share/nginx/html;
- add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
- try_files $uri $uri/ /index.html;
- }
-
- location /api {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- rewrite ^/api/(.*)$ /$1 break; #重写
- proxy_pass http://177.7.0.12:8888; # 设置代理服务器的协议和地址
- }
-
- location /api/swagger/index.html {
- proxy_pass http://127.0.0.1:8888/swagger/index.html;
- }
- }
\ No newline at end of file
diff --git a/web/.docker-compose/nginx/conf.d/nginx.conf b/web/.docker-compose/nginx/conf.d/nginx.conf
deleted file mode 100644
index 29f68b8..0000000
--- a/web/.docker-compose/nginx/conf.d/nginx.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-server {
- listen 80;
- server_name localhost;
-
- #charset koi8-r;
- #access_log logs/host.access.log main;
-
- location / {
- root /usr/share/nginx/html/dist;
- add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
- try_files $uri $uri/ /index.html;
- }
-
- location /api {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- rewrite ^/api/(.*)$ /$1 break; #重写
- proxy_pass http://127.0.0.1:8888; # 设置代理服务器的协议和地址
- }
- location /form-generator {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_pass http://127.0.0.1:8888;
- }
- location /api/swagger/index.html {
- proxy_pass http://127.0.0.1:8888/swagger/index.html;
- }
- }
\ No newline at end of file
diff --git a/web/.dockerignore b/web/.dockerignore
deleted file mode 100644
index 40b878d..0000000
--- a/web/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
\ No newline at end of file
diff --git a/web/.env.development b/web/.env.development
deleted file mode 100644
index 25ffe1f..0000000
--- a/web/.env.development
+++ /dev/null
@@ -1,11 +0,0 @@
-ENV = 'development'
-VITE_CLI_PORT = 8080
-VITE_SERVER_PORT = 8888
-VITE_BASE_API = /api
-VITE_FILE_API = /api
-VITE_BASE_PATH = http://127.0.0.1
-VITE_POSITION = open
-VITE_EDITOR = code
-// VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm
-// 如果使用docker-compose开发模式,设置为下面的地址或本机主机IP
-//VITE_BASE_PATH = http://177.7.0.12
diff --git a/web/.env.production b/web/.env.production
deleted file mode 100644
index 9345df2..0000000
--- a/web/.env.production
+++ /dev/null
@@ -1,7 +0,0 @@
-ENV = 'production'
-
-#下方为上线需要用到的程序代理前缀,一般用于nginx代理转发
-VITE_BASE_API = /api
-VITE_FILE_API = /api
-#下方修改为你的线上ip(如果需要在线使用表单构建工具时使用,其余情况无需使用以下环境变量)
-VITE_BASE_PATH = https://demo.gin-vue-admin.com
diff --git a/web/.gitignore b/web/.gitignore
deleted file mode 100644
index 1a4abd9..0000000
--- a/web/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-node_modules/*
-package-lock.json
-yarn.lock
-bun.lockb
-config.yaml
\ No newline at end of file
diff --git a/web/.prettierrc b/web/.prettierrc
deleted file mode 100644
index bc61a53..0000000
--- a/web/.prettierrc
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "printWidth": 80,
- "tabWidth": 2,
- "useTabs": false,
- "semi": false,
- "singleQuote": true,
- "trailingComma": "none",
- "bracketSpacing": true,
- "arrowParens": "always",
- "vueIndentScriptAndStyle": true,
- "endOfLine": "lf"
-}
diff --git a/web/Dockerfile b/web/Dockerfile
deleted file mode 100644
index af4464e..0000000
--- a/web/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# 如果需要用 cicd ,请设置环境变量:
-# variables:
-# DOCKER_BUILDKIT: 1
-
-FROM node:20-slim AS base
-ENV PNPM_HOME="/pnpm"
-ENV PATH="$PNPM_HOME:$PATH"
-RUN corepack enable
-COPY . /app
-WORKDIR /app
-
-
-FROM base AS prod-deps
-RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod
-
-FROM base AS build
-COPY --from=prod-deps /app/node_modules /app/node_modules
-RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install && pnpm run build
-
-
-FROM nginx:alpine
-LABEL MAINTAINER="bypanghu@163.com"
-COPY --from=base /app/.docker-compose/nginx/conf.d/my.conf /etc/nginx/conf.d/my.conf
-COPY --from=build /app/dist /usr/share/nginx/html
-RUN ls -al /usr/share/nginx/html
diff --git a/web/README.md b/web/README.md
deleted file mode 100644
index 06f1a8c..0000000
--- a/web/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# gin-vue-admin web
-
-## Project setup
-
-```
-npm install
-```
-
-### Compiles and hot-reloads for development
-
-```
-npm run serve
-```
-
-### Compiles and minifies for production
-
-```
-npm run build
-```
-
-### Run your tests
-
-```
-npm run test
-```
-
-### Lints and fixes files
-
-```
-npm run lint
-```
-
-整理代码结构
-
-```lua
-web
- ├── babel.config.js
- ├── Dockerfile
- ├── favicon.ico
- ├── index.html -- 主页面
- ├── limit.js -- 助手代码
- ├── package.json -- 包管理器代码
- ├── src -- 源代码
- │ ├── api -- api 组
- │ ├── App.vue -- 主页面
- │ ├── assets -- 静态资源
- │ ├── components -- 全局组件
- │ ├── core -- gva 组件包
- │ │ ├── config.js -- gva网站配置文件
- │ │ ├── gin-vue-admin.js -- 注册欢迎文件
- │ │ └── global.js -- 统一导入文件
- │ ├── directive -- v-auth 注册文件
- │ ├── main.js -- 主文件
- │ ├── permission.js -- 路由中间件
- │ ├── pinia -- pinia 状态管理器,取代vuex
- │ │ ├── index.js -- 入口文件
- │ │ └── modules -- modules
- │ │ ├── dictionary.js
- │ │ ├── router.js
- │ │ └── user.js
- │ ├── router -- 路由声明文件
- │ │ └── index.js
- │ ├── style -- 全局样式
- │ │ ├── base.scss
- │ │ ├── basics.scss
- │ │ ├── element_visiable.scss -- 此处可以全局覆盖 element-plus 样式
- │ │ ├── iconfont.css -- 顶部几个icon的样式文件
- │ │ ├── main.scss
- │ │ ├── mobile.scss
- │ │ └── newLogin.scss
- │ ├── utils -- 方法包库
- │ │ ├── asyncRouter.js -- 动态路由相关
- │ │ ├── bus.js -- 全局mitt声明文件
- │ │ ├── date.js -- 日期相关
- │ │ ├── dictionary.js -- 获取字典方法
- │ │ ├── downloadImg.js -- 下载图片方法
- │ │ ├── format.js -- 格式整理相关
- │ │ ├── image.js -- 图片相关方法
- │ │ ├── page.js -- 设置页面标题
- │ │ ├── request.js -- 请求
- │ │ └── stringFun.js -- 字符串文件
- | ├── view -- 主要view代码
- | | ├── about -- 关于我们
- | | ├── dashboard -- 面板
- | | ├── error -- 错误
- | | ├── example --上传案例
- | | ├── iconList -- icon列表
- | | ├── init -- 初始化数据
- | | | ├── index -- 新版本
- | | | ├── init -- 旧版本
- | | ├── layout -- layout约束页面
- | | | ├── aside
- | | | ├── bottomInfo -- bottomInfo
- | | | ├── screenfull -- 全屏设置
- | | | ├── setting -- 系统设置
- | | | └── index.vue -- base 约束
- | | ├── login --登录
- | | ├── person --个人中心
- | | ├── superAdmin -- 超级管理员操作
- | | ├── system -- 系统检测页面
- | | ├── systemTools -- 系统配置相关页面
- | | └── routerHolder.vue -- page 入口页面
- ├── vite.config.js -- vite 配置文件
- └── yarn.lock
-
-```
diff --git a/web/babel.config.js b/web/babel.config.js
deleted file mode 100644
index b1becff..0000000
--- a/web/babel.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- presets: [],
- plugins: []
-}
diff --git a/web/eslint.config.mjs b/web/eslint.config.mjs
deleted file mode 100644
index 3b443c5..0000000
--- a/web/eslint.config.mjs
+++ /dev/null
@@ -1,29 +0,0 @@
-import js from '@eslint/js'
-import pluginVue from 'eslint-plugin-vue'
-import globals from 'globals'
-
-export default [
- js.configs.recommended,
- ...pluginVue.configs['flat/essential'],
- {
- name: 'app/files-to-lint',
- files: ['**/*.{js,mjs,jsx,vue}'],
- languageOptions: {
- ecmaVersion: 'latest',
- sourceType: 'module',
- globals: globals.node
- },
- rules: {
- 'vue/max-attributes-per-line': 0,
- 'vue/no-v-model-argument': 0,
- 'vue/multi-word-component-names': 'off',
- 'no-lone-blocks': 'off',
- 'no-extend-native': 'off',
- 'no-unused-vars': ['error', { argsIgnorePattern: '^_' }]
- }
- },
- {
- name: 'app/files-to-ignore',
- ignores: ['**/dist/**', '**/build/*.js', '**/src/assets/**', '**/public/**']
- }
-]
diff --git a/web/index.html b/web/index.html
deleted file mode 100644
index eeb87a2..0000000
--- a/web/index.html
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/web/jsconfig.json b/web/jsconfig.json
deleted file mode 100644
index ca45014..0000000
--- a/web/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": "./",
- "paths": {
- "@/*": ["src/*"]
- }
- },
- "exclude": ["node_modules", "dist"],
- "include": ["src/**/*"]
-}
diff --git a/web/limit.js b/web/limit.js
deleted file mode 100644
index f23fa51..0000000
--- a/web/limit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// 运行项目前通过node执行此脚本 (此脚本与 node_modules 目录同级)
-import fs from 'fs'
-import path from 'path'
-const wfPath = path.resolve(__dirname, './node_modules/.bin')
-
-fs.readdir(wfPath, (err, files) => {
- if (err) {
- console.log(err)
- } else {
- if (files.length !== 0) {
- files.forEach((item) => {
- if (item.split('.')[1] === 'cmd') {
- replaceStr(`${wfPath}/${item}`, /"%_prog%"/, '%_prog%')
- }
- })
- }
- }
-})
-
-// 参数:[文件路径、 需要修改的字符串、修改后的字符串] (替换对应文件内字符串的公共函数)
-function replaceStr(filePath, sourceRegx, targetSrt) {
- fs.readFile(filePath, (err, data) => {
- if (err) {
- console.log(err)
- } else {
- let str = data.toString()
- str = str.replace(sourceRegx, targetSrt)
- fs.writeFile(filePath, str, (err) => {
- if (err) {
- console.log(err)
- } else {
- console.log('\x1B[42m%s\x1B[0m', '文件修改成功')
- }
- })
- }
- })
-}
diff --git a/web/openDocument.js b/web/openDocument.js
deleted file mode 100644
index 03a886b..0000000
--- a/web/openDocument.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-此文件受版权保护,未经授权禁止修改!如果您尚未获得授权,请通过微信(shouzi_1994)联系我们以购买授权。在未授权状态下,只需保留此代码,不会影响任何正常使用。
- 未经授权的商用使用可能会被我们的资产搜索引擎爬取,并可能导致后续索赔。索赔金额将不低于高级授权费的十倍。请您遵守版权法律法规,尊重知识产权。
-*/
-
-import child_process from 'child_process'
-
-var url = 'https://www.gin-vue-admin.com'
-var cmd = ''
-switch (process.platform) {
- case 'win32':
- cmd = 'start'
- child_process.exec(cmd + ' ' + url)
- break
-
- case 'darwin':
- cmd = 'open'
- child_process.exec(cmd + ' ' + url)
- break
-}
diff --git a/web/package.json b/web/package.json
deleted file mode 100644
index 40365ab..0000000
--- a/web/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "name": "gin-vue-admin",
- "version": "2.9.1",
- "private": true,
- "scripts": {
- "dev": "vite --host --mode development",
- "serve": "vite --host --mode development",
- "build": "vite build --mode production",
- "limit-build": "npm install increase-memory-limit-fixbug cross-env -g && npm run fix-memory-limit && node ./limit && npm run build",
- "preview": "vite preview",
- "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"
- },
- "type": "module",
- "dependencies": {
- "@element-plus/icons-vue": "^2.3.1",
- "@form-create/designer": "^3.2.6",
- "@form-create/element-ui": "^3.2.10",
- "@iconify/vue": "^5.0.0",
- "@unocss/transformer-directives": "^66.4.2",
- "@vue-office/docx": "^1.6.2",
- "@vue-office/excel": "^1.7.11",
- "@vue-office/pdf": "^2.0.2",
- "@vueuse/core": "^11.0.3",
- "@vueuse/integrations": "^12.0.0",
- "@wangeditor/editor": "^5.1.23",
- "@wangeditor/editor-for-vue": "^5.1.12",
- "ace-builds": "^1.36.4",
- "axios": "1.8.2",
- "chokidar": "^4.0.0",
- "core-js": "^3.38.1",
- "echarts": "5.5.1",
- "element-plus": "^2.13.6",
- "highlight.js": "^11.10.0",
- "install": "^0.13.0",
- "marked": "14.1.1",
- "marked-highlight": "^2.1.4",
- "mitt": "^3.0.1",
- "npm": "^11.3.0",
- "nprogress": "^0.2.0",
- "path": "^0.12.7",
- "pinia": "^2.2.2",
- "qs": "^6.13.0",
- "screenfull": "^6.0.2",
- "sortablejs": "^1.15.3",
- "spark-md5": "^3.0.2",
- "universal-cookie": "^7",
- "vform3-builds": "^3.0.10",
- "vite-auto-import-svg": "^2.5.0",
- "vue": "^3.5.31",
- "vue-cropper": "^1.1.4",
- "vue-echarts": "^7.0.3",
- "vue-qr": "^4.0.9",
- "vue-router": "^4.4.3",
- "vue3-ace-editor": "^2.2.4",
- "vue3-sfc-loader": "^0.9.5",
- "vuedraggable": "^4.1.0"
- },
- "devDependencies": {
- "@babel/eslint-parser": "^7.25.1",
- "@eslint/js": "^8.56.0",
- "@unocss/extractor-svelte": "^66.4.2",
- "@unocss/preset-wind3": "^66.4.2",
- "@unocss/vite": "^66.5.0",
- "@vitejs/plugin-legacy": "^6.0.0",
- "@vitejs/plugin-vue": "^5.0.3",
- "@vue/cli-plugin-babel": "~5.0.8",
- "@vue/cli-plugin-eslint": "~5.0.8",
- "@vue/cli-plugin-router": "~5.0.8",
- "@vue/cli-plugin-vuex": "~5.0.8",
- "@vue/cli-service": "~5.0.8",
- "@vue/compiler-sfc": "^3.5.1",
- "autoprefixer": "^10.4.20",
- "babel-plugin-import": "^1.13.8",
- "chalk": "^5.3.0",
- "dotenv": "^16.4.5",
- "eslint": "^8.57.0",
- "eslint-plugin-vue": "^9.19.2",
- "globals": "^16.3.0",
- "sass": "^1.78.0",
- "terser": "^5.31.6",
- "vite": "^6.2.3",
- "vite-check-multiple-dom": "0.2.1",
- "vite-plugin-banner": "^0.8.0",
- "vite-plugin-importer": "^0.2.5",
- "vite-plugin-vue-devtools": "^7.0.16"
- }
-}
diff --git a/web/public/favicon.ico b/web/public/favicon.ico
deleted file mode 100644
index ee520ce4b34e962134995910c368ccd4870a774e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4286
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