From 8de5841fb5140af3e9043f467551879f381a5c1d Mon Sep 17 00:00:00 2001 From: hanchaobo Date: Wed, 12 Jun 2024 09:50:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E6=97=B6=E8=B4=B9=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cz-config.js | 46 + .editorconfig | 22 - .env.development | 15 +- .env.production | 15 +- .env.staging | 10 - .eslintignore | 10 - .eslintrc.js | 199 ---- .eslintrc.json | 12 + .lintstagedrc.json | 4 + .npmrc | 4 + .prettierrc | 15 + LICENSE | 20 + README.md | 2 - babel.config.js | 13 - bin/build.bat | 12 - bin/package.bat | 12 - bin/run-web.bat | 12 - build/index.js | 35 - commitlint.config.js | 4 + html/ie.html | 262 +++++ public/index.html => index.html | 81 +- package.json | 138 ++- postcss.config.js | 6 + public/favicon.ico | Bin 16446 -> 4286 bytes public/html/ie.html | 46 - public/robots.txt | 2 - src/App.vue | 33 +- src/api/hour.js | 41 + src/api/index.js | 3 + src/api/login.js | 78 +- src/api/menu.js | 12 +- src/api/monitor/cache.js | 57 -- src/api/monitor/job.js | 71 -- src/api/monitor/jobLog.js | 26 - src/api/monitor/logininfor.js | 34 - src/api/monitor/online.js | 18 - src/api/monitor/operlog.js | 26 - src/api/monitor/server.js | 9 - src/api/system/config.js | 60 -- src/api/system/dept.js | 52 - src/api/system/dict/data.js | 52 - src/api/system/dict/type.js | 60 -- src/api/system/menu.js | 60 -- src/api/system/notice.js | 44 - src/api/system/post.js | 44 - src/api/system/role.js | 119 --- src/api/system/user.js | 135 --- src/api/tool/gen.js | 85 -- src/api/unitPrice.js | 50 + src/assets/icons/index.js | 9 - src/assets/icons/svg/404.svg | 1 - src/assets/icons/svg/bug.svg | 1 - src/assets/icons/svg/build.svg | 1 - src/assets/icons/svg/button.svg | 1 - src/assets/icons/svg/cascader.svg | 1 - src/assets/icons/svg/chart.svg | 1 - src/assets/icons/svg/checkbox.svg | 1 - src/assets/icons/svg/clipboard.svg | 1 - src/assets/icons/svg/code.svg | 1 - src/assets/icons/svg/color.svg | 1 - src/assets/icons/svg/component.svg | 1 - src/assets/icons/svg/dashboard.svg | 1 - src/assets/icons/svg/date-range.svg | 1 - src/assets/icons/svg/date.svg | 1 - src/assets/icons/svg/dict.svg | 1 - src/assets/icons/svg/documentation.svg | 1 - src/assets/icons/svg/download.svg | 1 - src/assets/icons/svg/drag.svg | 1 - src/assets/icons/svg/druid.svg | 1 - src/assets/icons/svg/edit.svg | 1 - src/assets/icons/svg/education.svg | 1 - src/assets/icons/svg/email.svg | 1 - src/assets/icons/svg/example.svg | 1 - src/assets/icons/svg/excel.svg | 1 - src/assets/icons/svg/exit-fullscreen.svg | 1 - src/assets/icons/svg/eye-open.svg | 1 - src/assets/icons/svg/eye.svg | 1 - src/assets/icons/svg/form.svg | 1 - src/assets/icons/svg/fullscreen.svg | 1 - src/assets/icons/svg/github.svg | 1 - src/assets/icons/svg/guide.svg | 1 - src/assets/icons/svg/icon.svg | 1 - src/assets/icons/svg/input.svg | 1 - src/assets/icons/svg/international.svg | 1 - src/assets/icons/svg/job.svg | 1 - src/assets/icons/svg/language.svg | 1 - src/assets/icons/svg/link.svg | 1 - src/assets/icons/svg/list.svg | 1 - src/assets/icons/svg/lock.svg | 1 - src/assets/icons/svg/log.svg | 1 - src/assets/icons/svg/logininfor.svg | 1 - src/assets/icons/svg/message.svg | 1 - src/assets/icons/svg/money.svg | 1 - src/assets/icons/svg/monitor.svg | 2 - src/assets/icons/svg/nested.svg | 1 - src/assets/icons/svg/number.svg | 1 - src/assets/icons/svg/online.svg | 1 - src/assets/icons/svg/password.svg | 1 - src/assets/icons/svg/pdf.svg | 1 - src/assets/icons/svg/people.svg | 1 - src/assets/icons/svg/peoples.svg | 1 - src/assets/icons/svg/phone.svg | 1 - src/assets/icons/svg/post.svg | 1 - src/assets/icons/svg/qq.svg | 1 - src/assets/icons/svg/question.svg | 1 - src/assets/icons/svg/radio.svg | 1 - src/assets/icons/svg/rate.svg | 1 - src/assets/icons/svg/redis-list.svg | 2 - src/assets/icons/svg/redis.svg | 1 - src/assets/icons/svg/row.svg | 1 - src/assets/icons/svg/search.svg | 1 - src/assets/icons/svg/select.svg | 1 - src/assets/icons/svg/server.svg | 1 - src/assets/icons/svg/shopping.svg | 1 - src/assets/icons/svg/size.svg | 1 - src/assets/icons/svg/skill.svg | 1 - src/assets/icons/svg/slider.svg | 1 - src/assets/icons/svg/star.svg | 1 - src/assets/icons/svg/swagger.svg | 1 - src/assets/icons/svg/switch.svg | 1 - src/assets/icons/svg/system.svg | 2 - src/assets/icons/svg/tab.svg | 1 - src/assets/icons/svg/table.svg | 1 - src/assets/icons/svg/textarea.svg | 1 - src/assets/icons/svg/theme.svg | 1 - src/assets/icons/svg/time-range.svg | 1 - src/assets/icons/svg/time.svg | 1 - src/assets/icons/svg/tool.svg | 1 - src/assets/icons/svg/tree-table.svg | 1 - src/assets/icons/svg/tree.svg | 1 - src/assets/icons/svg/upload.svg | 1 - src/assets/icons/svg/user.svg | 1 - src/assets/icons/svg/validCode.svg | 1 - src/assets/icons/svg/wechat.svg | 1 - src/assets/icons/svg/zip.svg | 1 - src/assets/icons/svgo.yml | 22 - src/assets/images/home.png | Bin 0 -> 320 bytes src/assets/images/logo.png | Bin 0 -> 4633 bytes src/assets/images/pay.png | Bin 140720 -> 0 bytes src/assets/logo/logo.png | Bin 3423 -> 5663 bytes src/assets/styles/btn.scss | 18 +- src/assets/styles/element-ui.scss | 15 +- src/assets/styles/element-variables.scss | 31 - src/assets/styles/global.css | 3 + src/assets/styles/index.scss | 40 +- src/assets/styles/mixin.scss | 12 +- src/assets/styles/ruoyi.scss | 105 +- src/assets/styles/sidebar.scss | 81 +- src/assets/styles/tailwind.css | 3 + src/assets/styles/transition.scss | 6 +- .../{variables.scss => variables.module.scss} | 43 +- src/components/Breadcrumb/index.vue | 94 +- src/components/Crontab/day.vue | 161 --- src/components/Crontab/hour.vue | 114 --- src/components/Crontab/index.vue | 430 -------- src/components/Crontab/min.vue | 116 --- src/components/Crontab/month.vue | 114 --- src/components/Crontab/result.vue | 559 ----------- src/components/Crontab/second.vue | 117 --- src/components/Crontab/week.vue | 202 ---- src/components/Crontab/year.vue | 131 --- src/components/DictData/index.js | 49 - src/components/DictTag/index.vue | 89 -- src/components/Editor/index.vue | 274 ----- src/components/FileUpload/index.vue | 216 ---- src/components/Hamburger/index.vue | 44 - src/components/HeaderSearch/index.vue | 198 ---- src/components/IconSelect/index.vue | 104 -- src/components/IconSelect/requireIcons.js | 11 - src/components/ImagePreview/index.vue | 90 -- src/components/ImageUpload/index.vue | 226 ----- src/components/Pagination/index.vue | 114 --- src/components/PanThumb/index.vue | 142 --- src/components/ParentView/index.vue | 2 +- src/components/RightPanel/index.vue | 106 -- src/components/RightToolbar/index.vue | 129 --- src/components/RuoYi/Doc/index.vue | 21 - src/components/RuoYi/Git/index.vue | 21 - src/components/Screenfull/index.vue | 57 -- src/components/SizeSelect/index.vue | 56 -- src/components/SvgIcon/index.vue | 61 -- src/components/ThemePicker/index.vue | 173 ---- src/components/TopNav/index.vue | 195 ---- src/components/iFrame/index.vue | 46 +- src/directive/common/copyText.js | 66 ++ src/directive/dialog/drag.js | 64 -- src/directive/dialog/dragHeight.js | 34 - src/directive/dialog/dragWidth.js | 30 - src/directive/index.js | 28 +- src/directive/module/clipboard.js | 54 - src/directive/permission/hasPermi.js | 25 +- src/directive/permission/hasRole.js | 22 +- src/layout/components/AppMain.vue | 42 +- src/layout/components/IframeToggle/index.vue | 44 +- src/layout/components/InnerLink/index.vue | 45 +- src/layout/components/Navbar.vue | 188 ++-- src/layout/components/Settings/index.vue | 478 ++++----- src/layout/components/Sidebar/FixiOSBug.js | 25 - src/layout/components/Sidebar/Item.vue | 33 - src/layout/components/Sidebar/Link.vue | 65 +- src/layout/components/Sidebar/Logo.vue | 93 +- src/layout/components/Sidebar/SidebarItem.vue | 180 ++-- src/layout/components/Sidebar/index.vue | 111 +- src/layout/components/TagsView/ScrollPane.vue | 152 +-- src/layout/components/TagsView/index.vue | 465 +++++---- src/layout/components/index.js | 9 +- src/layout/index.vue | 208 ++-- src/layout/mixin/ResizeHandler.js | 45 - src/main.js | 148 ++- src/pages/Login/index.vue | 259 +++++ src/pages/Main/components/LeftMenu.vue | 47 + src/pages/Main/index.vue | 125 +++ src/pages/error/401.vue | 83 ++ src/{views => pages}/error/404.vue | 48 +- src/pages/redirect/index.vue | 14 + src/permission.js | 79 +- src/platform.ts | 42 + src/plugins/auth.js | 36 +- src/plugins/cache.js | 58 +- src/plugins/download.js | 79 -- src/plugins/index.js | 28 +- src/plugins/modal.js | 83 -- src/plugins/tab.js | 66 +- src/router/index.js | 182 ++-- src/service/request.js | 50 + src/settings.js | 15 +- src/sigin/signMd5Utils.js | 141 +++ src/store/getters.js | 19 - src/store/index.js | 28 +- src/store/modules/app.js | 105 +- src/store/modules/dict.js | 50 - src/store/modules/permission.js | 231 +++-- src/store/modules/settings.js | 90 +- src/store/modules/tagsView.js | 413 ++++---- src/store/modules/user.js | 137 +-- src/utils/auth.js | 10 +- src/utils/cache.js | 77 ++ src/utils/data.js | 218 ++++ src/utils/dict.js | 29 + src/utils/dict/Dict.js | 82 -- src/utils/dict/DictConverter.js | 17 - src/utils/dict/DictData.js | 13 - src/utils/dict/DictMeta.js | 38 - src/utils/dict/DictOptions.js | 51 - src/utils/dict/index.js | 33 - src/utils/dynamicTitle.js | 15 + src/utils/errorCode.js | 10 +- src/utils/flexible.js | 149 +++ src/utils/generator/config.js | 438 -------- src/utils/generator/css.js | 18 - src/utils/generator/drawingDefault.js | 29 - src/utils/generator/html.js | 359 ------- src/utils/generator/icon.json | 1 - src/utils/generator/js.js | 235 ----- src/utils/generator/render.js | 126 --- src/utils/index.js | 278 ++--- src/utils/jsencrypt.js | 37 +- src/utils/menu.test.js | 3 + src/utils/permission.js | 43 +- src/utils/qomo.js | 54 + src/utils/request.js | 152 --- src/utils/ruoyi.js | 242 +---- src/utils/scroll-to.js | 65 +- src/utils/theme.js | 55 + src/utils/validate.js | 49 +- src/views/dashboard/BarChart.vue | 102 -- src/views/dashboard/LineChart.vue | 135 --- src/views/dashboard/PanelGroup.vue | 181 ---- src/views/dashboard/PieChart.vue | 79 -- src/views/dashboard/RaddarChart.vue | 116 --- src/views/dashboard/mixins/resize.js | 56 -- src/views/error/401.vue | 88 -- src/views/hour/index.vue | 156 +++ src/views/index.vue | 24 +- src/views/index_v1.vue | 98 -- src/views/login.vue | 219 ---- src/views/monitor/cache/index.vue | 148 --- src/views/monitor/cache/list.vue | 241 ----- src/views/monitor/druid/index.vue | 15 - src/views/monitor/job/index.vue | 513 ---------- src/views/monitor/job/log.vue | 295 ------ src/views/monitor/logininfor/index.vue | 246 ----- src/views/monitor/online/index.vue | 122 --- src/views/monitor/operlog/index.vue | 323 ------ src/views/monitor/server/index.vue | 207 ---- src/views/redirect.vue | 12 - src/views/register.vue | 210 ---- src/views/system/config/index.vue | 343 ------- src/views/system/dept/index.vue | 340 ------- src/views/system/dict/data.vue | 402 -------- src/views/system/dict/index.vue | 347 ------- src/views/system/menu/index.vue | 452 --------- src/views/system/notice/index.vue | 312 ------ src/views/system/post/index.vue | 309 ------ src/views/system/role/authUser.vue | 199 ---- src/views/system/role/index.vue | 605 ----------- src/views/system/role/selectUser.vue | 138 --- src/views/system/user/authRole.vue | 117 --- src/views/system/user/index.vue | 676 ------------- src/views/system/user/profile/index.vue | 91 -- src/views/system/user/profile/resetPwd.vue | 69 -- src/views/system/user/profile/userAvatar.vue | 184 ---- src/views/system/user/profile/userInfo.vue | 88 -- src/views/tool/build/CodeTypeDialog.vue | 106 -- src/views/tool/build/DraggableItem.vue | 100 -- src/views/tool/build/IconsDialog.vue | 123 --- src/views/tool/build/RightPanel.vue | 946 ------------------ src/views/tool/build/TreeNodeDialog.vue | 149 --- src/views/tool/build/index.vue | 768 -------------- src/views/tool/gen/basicInfoForm.vue | 60 -- src/views/tool/gen/createTable.vue | 45 - src/views/tool/gen/editTable.vue | 234 ----- src/views/tool/gen/genInfoForm.vue | 312 ------ src/views/tool/gen/importTable.vue | 120 --- src/views/tool/gen/index.vue | 354 ------- src/views/tool/swagger/index.vue | 15 - src/views/unitPrice/index.vue | 115 +++ tailwind.config.js | 11 + vite.config.js | 98 ++ vite/plugins/auto-import.js | 8 + vite/plugins/compression.js | 28 + vite/plugins/index.js | 27 + vite/plugins/setup-extend.js | 5 + vitest.config.js | 14 + vue.config.js | 130 --- 325 files changed, 4969 insertions(+), 22249 deletions(-) create mode 100644 .cz-config.js delete mode 100644 .editorconfig delete mode 100644 .env.staging delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 .eslintrc.json create mode 100644 .lintstagedrc.json create mode 100644 .npmrc create mode 100644 .prettierrc create mode 100644 LICENSE delete mode 100644 babel.config.js delete mode 100644 bin/build.bat delete mode 100644 bin/package.bat delete mode 100644 bin/run-web.bat delete mode 100644 build/index.js create mode 100644 commitlint.config.js create mode 100644 html/ie.html rename public/index.html => index.html (80%) create mode 100644 postcss.config.js delete mode 100644 public/html/ie.html delete mode 100644 public/robots.txt create mode 100644 src/api/hour.js create mode 100644 src/api/index.js delete mode 100644 src/api/monitor/cache.js delete mode 100644 src/api/monitor/job.js delete mode 100644 src/api/monitor/jobLog.js delete mode 100644 src/api/monitor/logininfor.js delete mode 100644 src/api/monitor/online.js delete mode 100644 src/api/monitor/operlog.js delete mode 100644 src/api/monitor/server.js delete mode 100644 src/api/system/config.js delete mode 100644 src/api/system/dept.js delete mode 100644 src/api/system/dict/data.js delete mode 100644 src/api/system/dict/type.js delete mode 100644 src/api/system/menu.js delete mode 100644 src/api/system/notice.js delete mode 100644 src/api/system/post.js delete mode 100644 src/api/system/role.js delete mode 100644 src/api/system/user.js delete mode 100644 src/api/tool/gen.js create mode 100644 src/api/unitPrice.js delete mode 100644 src/assets/icons/index.js delete mode 100644 src/assets/icons/svg/404.svg delete mode 100644 src/assets/icons/svg/bug.svg delete mode 100644 src/assets/icons/svg/build.svg delete mode 100644 src/assets/icons/svg/button.svg delete mode 100644 src/assets/icons/svg/cascader.svg delete mode 100644 src/assets/icons/svg/chart.svg delete mode 100644 src/assets/icons/svg/checkbox.svg delete mode 100644 src/assets/icons/svg/clipboard.svg delete mode 100644 src/assets/icons/svg/code.svg delete mode 100644 src/assets/icons/svg/color.svg delete mode 100644 src/assets/icons/svg/component.svg delete mode 100644 src/assets/icons/svg/dashboard.svg delete mode 100644 src/assets/icons/svg/date-range.svg delete mode 100644 src/assets/icons/svg/date.svg delete mode 100644 src/assets/icons/svg/dict.svg delete mode 100644 src/assets/icons/svg/documentation.svg delete mode 100644 src/assets/icons/svg/download.svg delete mode 100644 src/assets/icons/svg/drag.svg delete mode 100644 src/assets/icons/svg/druid.svg delete mode 100644 src/assets/icons/svg/edit.svg delete mode 100644 src/assets/icons/svg/education.svg delete mode 100644 src/assets/icons/svg/email.svg delete mode 100644 src/assets/icons/svg/example.svg delete mode 100644 src/assets/icons/svg/excel.svg delete mode 100644 src/assets/icons/svg/exit-fullscreen.svg delete mode 100644 src/assets/icons/svg/eye-open.svg delete mode 100644 src/assets/icons/svg/eye.svg delete mode 100644 src/assets/icons/svg/form.svg delete mode 100644 src/assets/icons/svg/fullscreen.svg delete mode 100644 src/assets/icons/svg/github.svg delete mode 100644 src/assets/icons/svg/guide.svg delete mode 100644 src/assets/icons/svg/icon.svg delete mode 100644 src/assets/icons/svg/input.svg delete mode 100644 src/assets/icons/svg/international.svg delete mode 100644 src/assets/icons/svg/job.svg delete mode 100644 src/assets/icons/svg/language.svg delete mode 100644 src/assets/icons/svg/link.svg delete mode 100644 src/assets/icons/svg/list.svg delete mode 100644 src/assets/icons/svg/lock.svg delete mode 100644 src/assets/icons/svg/log.svg delete mode 100644 src/assets/icons/svg/logininfor.svg delete mode 100644 src/assets/icons/svg/message.svg delete mode 100644 src/assets/icons/svg/money.svg delete mode 100644 src/assets/icons/svg/monitor.svg delete mode 100644 src/assets/icons/svg/nested.svg delete mode 100644 src/assets/icons/svg/number.svg delete mode 100644 src/assets/icons/svg/online.svg delete mode 100644 src/assets/icons/svg/password.svg delete mode 100644 src/assets/icons/svg/pdf.svg delete mode 100644 src/assets/icons/svg/people.svg delete mode 100644 src/assets/icons/svg/peoples.svg delete mode 100644 src/assets/icons/svg/phone.svg delete mode 100644 src/assets/icons/svg/post.svg delete mode 100644 src/assets/icons/svg/qq.svg delete mode 100644 src/assets/icons/svg/question.svg delete mode 100644 src/assets/icons/svg/radio.svg delete mode 100644 src/assets/icons/svg/rate.svg delete mode 100644 src/assets/icons/svg/redis-list.svg delete mode 100644 src/assets/icons/svg/redis.svg delete mode 100644 src/assets/icons/svg/row.svg delete mode 100644 src/assets/icons/svg/search.svg delete mode 100644 src/assets/icons/svg/select.svg delete mode 100644 src/assets/icons/svg/server.svg delete mode 100644 src/assets/icons/svg/shopping.svg delete mode 100644 src/assets/icons/svg/size.svg delete mode 100644 src/assets/icons/svg/skill.svg delete mode 100644 src/assets/icons/svg/slider.svg delete mode 100644 src/assets/icons/svg/star.svg delete mode 100644 src/assets/icons/svg/swagger.svg delete mode 100644 src/assets/icons/svg/switch.svg delete mode 100644 src/assets/icons/svg/system.svg delete mode 100644 src/assets/icons/svg/tab.svg delete mode 100644 src/assets/icons/svg/table.svg delete mode 100644 src/assets/icons/svg/textarea.svg delete mode 100644 src/assets/icons/svg/theme.svg delete mode 100644 src/assets/icons/svg/time-range.svg delete mode 100644 src/assets/icons/svg/time.svg delete mode 100644 src/assets/icons/svg/tool.svg delete mode 100644 src/assets/icons/svg/tree-table.svg delete mode 100644 src/assets/icons/svg/tree.svg delete mode 100644 src/assets/icons/svg/upload.svg delete mode 100644 src/assets/icons/svg/user.svg delete mode 100644 src/assets/icons/svg/validCode.svg delete mode 100644 src/assets/icons/svg/wechat.svg delete mode 100644 src/assets/icons/svg/zip.svg delete mode 100644 src/assets/icons/svgo.yml create mode 100644 src/assets/images/home.png create mode 100644 src/assets/images/logo.png delete mode 100644 src/assets/images/pay.png delete mode 100644 src/assets/styles/element-variables.scss create mode 100644 src/assets/styles/global.css create mode 100644 src/assets/styles/tailwind.css rename src/assets/styles/{variables.scss => variables.module.scss} (58%) delete mode 100644 src/components/Crontab/day.vue delete mode 100644 src/components/Crontab/hour.vue delete mode 100644 src/components/Crontab/index.vue delete mode 100644 src/components/Crontab/min.vue delete mode 100644 src/components/Crontab/month.vue delete mode 100644 src/components/Crontab/result.vue delete mode 100644 src/components/Crontab/second.vue delete mode 100644 src/components/Crontab/week.vue delete mode 100644 src/components/Crontab/year.vue delete mode 100644 src/components/DictData/index.js delete mode 100644 src/components/DictTag/index.vue delete mode 100644 src/components/Editor/index.vue delete mode 100644 src/components/FileUpload/index.vue delete mode 100644 src/components/Hamburger/index.vue delete mode 100644 src/components/HeaderSearch/index.vue delete mode 100644 src/components/IconSelect/index.vue delete mode 100644 src/components/IconSelect/requireIcons.js delete mode 100644 src/components/ImagePreview/index.vue delete mode 100644 src/components/ImageUpload/index.vue delete mode 100644 src/components/Pagination/index.vue delete mode 100644 src/components/PanThumb/index.vue delete mode 100644 src/components/RightPanel/index.vue delete mode 100644 src/components/RightToolbar/index.vue delete mode 100644 src/components/RuoYi/Doc/index.vue delete mode 100644 src/components/RuoYi/Git/index.vue delete mode 100644 src/components/Screenfull/index.vue delete mode 100644 src/components/SizeSelect/index.vue delete mode 100644 src/components/SvgIcon/index.vue delete mode 100644 src/components/ThemePicker/index.vue delete mode 100644 src/components/TopNav/index.vue create mode 100644 src/directive/common/copyText.js delete mode 100644 src/directive/dialog/drag.js delete mode 100644 src/directive/dialog/dragHeight.js delete mode 100644 src/directive/dialog/dragWidth.js delete mode 100644 src/directive/module/clipboard.js delete mode 100644 src/layout/components/Sidebar/FixiOSBug.js delete mode 100644 src/layout/components/Sidebar/Item.vue delete mode 100644 src/layout/mixin/ResizeHandler.js create mode 100644 src/pages/Login/index.vue create mode 100644 src/pages/Main/components/LeftMenu.vue create mode 100644 src/pages/Main/index.vue create mode 100644 src/pages/error/401.vue rename src/{views => pages}/error/404.vue (85%) create mode 100644 src/pages/redirect/index.vue create mode 100644 src/platform.ts delete mode 100644 src/plugins/download.js delete mode 100644 src/plugins/modal.js create mode 100644 src/service/request.js create mode 100644 src/sigin/signMd5Utils.js delete mode 100644 src/store/getters.js delete mode 100644 src/store/modules/dict.js create mode 100644 src/utils/cache.js create mode 100644 src/utils/data.js create mode 100644 src/utils/dict.js delete mode 100644 src/utils/dict/Dict.js delete mode 100644 src/utils/dict/DictConverter.js delete mode 100644 src/utils/dict/DictData.js delete mode 100644 src/utils/dict/DictMeta.js delete mode 100644 src/utils/dict/DictOptions.js delete mode 100644 src/utils/dict/index.js create mode 100644 src/utils/dynamicTitle.js create mode 100644 src/utils/flexible.js delete mode 100644 src/utils/generator/config.js delete mode 100644 src/utils/generator/css.js delete mode 100644 src/utils/generator/drawingDefault.js delete mode 100644 src/utils/generator/html.js delete mode 100644 src/utils/generator/icon.json delete mode 100644 src/utils/generator/js.js delete mode 100644 src/utils/generator/render.js create mode 100644 src/utils/menu.test.js create mode 100644 src/utils/qomo.js create mode 100644 src/utils/theme.js delete mode 100644 src/views/dashboard/BarChart.vue delete mode 100644 src/views/dashboard/LineChart.vue delete mode 100644 src/views/dashboard/PanelGroup.vue delete mode 100644 src/views/dashboard/PieChart.vue delete mode 100644 src/views/dashboard/RaddarChart.vue delete mode 100644 src/views/dashboard/mixins/resize.js delete mode 100644 src/views/error/401.vue create mode 100644 src/views/hour/index.vue delete mode 100644 src/views/index_v1.vue delete mode 100644 src/views/login.vue delete mode 100644 src/views/monitor/cache/index.vue delete mode 100644 src/views/monitor/cache/list.vue delete mode 100644 src/views/monitor/druid/index.vue delete mode 100644 src/views/monitor/job/index.vue delete mode 100644 src/views/monitor/job/log.vue delete mode 100644 src/views/monitor/logininfor/index.vue delete mode 100644 src/views/monitor/online/index.vue delete mode 100644 src/views/monitor/operlog/index.vue delete mode 100644 src/views/monitor/server/index.vue delete mode 100644 src/views/redirect.vue delete mode 100644 src/views/register.vue delete mode 100644 src/views/system/config/index.vue delete mode 100644 src/views/system/dept/index.vue delete mode 100644 src/views/system/dict/data.vue delete mode 100644 src/views/system/dict/index.vue delete mode 100644 src/views/system/menu/index.vue delete mode 100644 src/views/system/notice/index.vue delete mode 100644 src/views/system/post/index.vue delete mode 100644 src/views/system/role/authUser.vue delete mode 100644 src/views/system/role/index.vue delete mode 100644 src/views/system/role/selectUser.vue delete mode 100644 src/views/system/user/authRole.vue delete mode 100644 src/views/system/user/index.vue delete mode 100644 src/views/system/user/profile/index.vue delete mode 100644 src/views/system/user/profile/resetPwd.vue delete mode 100644 src/views/system/user/profile/userAvatar.vue delete mode 100644 src/views/system/user/profile/userInfo.vue delete mode 100644 src/views/tool/build/CodeTypeDialog.vue delete mode 100644 src/views/tool/build/DraggableItem.vue delete mode 100644 src/views/tool/build/IconsDialog.vue delete mode 100644 src/views/tool/build/RightPanel.vue delete mode 100644 src/views/tool/build/TreeNodeDialog.vue delete mode 100644 src/views/tool/build/index.vue delete mode 100644 src/views/tool/gen/basicInfoForm.vue delete mode 100644 src/views/tool/gen/createTable.vue delete mode 100644 src/views/tool/gen/editTable.vue delete mode 100644 src/views/tool/gen/genInfoForm.vue delete mode 100644 src/views/tool/gen/importTable.vue delete mode 100644 src/views/tool/gen/index.vue delete mode 100644 src/views/tool/swagger/index.vue create mode 100644 src/views/unitPrice/index.vue create mode 100644 tailwind.config.js create mode 100644 vite.config.js create mode 100644 vite/plugins/auto-import.js create mode 100644 vite/plugins/compression.js create mode 100644 vite/plugins/index.js create mode 100644 vite/plugins/setup-extend.js create mode 100644 vitest.config.js delete mode 100644 vue.config.js diff --git a/.cz-config.js b/.cz-config.js new file mode 100644 index 0000000..769a2d7 --- /dev/null +++ b/.cz-config.js @@ -0,0 +1,46 @@ +"use strict"; +module.exports = { + types: [ + { value: "✨新增", name: "新增: 新的内容" }, + { value: "🐛修复", name: "修复: 修复一个Bug" }, + { value: "📝文档", name: "文档: 变更的只有文档" }, + { value: "💄格式", name: "格式: 空格, 分号等格式修复" }, + { value: "♻️重构", name: "重构: 代码重构,注意和特性、修复区分开" }, + { value: "⚡️性能", name: "性能: 提升性能" }, + { value: "✅测试", name: "测试: 添加一个测试" }, + { value: "🔧工具", name: "工具: 开发工具变动(构建、脚手架工具等)" }, + { value: "⏪回滚", name: "回滚: 代码回退" } + ], + scopes: [ + { name: "leetcode" }, + { name: "javascript" }, + { name: "typescript" }, + { name: "Vue" }, + { name: "node" } + ], + // it needs to match the value for field type. Eg.: 'fix' + /* scopeOverrides: { + fix: [ + {name: 'merge'}, + {name: 'style'}, + {name: 'e2eTest'}, + {name: 'unitTest'} + ] + }, */ + // override the messages, defaults are as follows + messages: { + type: "选择一种你的提交类型:", + scope: "选择一个scope (可选):", + // used if allowCustomScopes is true + customScope: "Denote the SCOPE of this change:", + subject: "短说明:\n", + body: '长说明,使用"|"换行(可选):\n', + breaking: "非兼容性说明 (可选):\n", + footer: "关联关闭的issue,例如:#31, #34(可选):\n", + confirmCommit: "确定提交说明?(yes/no)" + }, + allowCustomScopes: true, + allowBreakingChanges: ["特性", "修复"], + // limit subject length + subjectLimit: 100 +}; diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 7034f9b..0000000 --- a/.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -# 告诉EditorConfig插件,这是根文件,不用继续往上查找 -root = true - -# 匹配全部文件 -[*] -# 设置字符集 -charset = utf-8 -# 缩进风格,可选space、tab -indent_style = space -# 缩进的空格数 -indent_size = 2 -# 结尾换行符,可选lf、cr、crlf -end_of_line = lf -# 在文件结尾插入新行 -insert_final_newline = true -# 删除一行中的前后空格 -trim_trailing_whitespace = true - -# 匹配md结尾的文件 -[*.md] -insert_final_newline = false -trim_trailing_whitespace = false diff --git a/.env.development b/.env.development index daadcde..52b16b8 100644 --- a/.env.development +++ b/.env.development @@ -1,11 +1,14 @@ # 页面标题 -VUE_APP_TITLE = 成本管理系统 +VITE_APP_TITLE='Qomo Ai' # 开发环境配置 -ENV = 'development' +VITE_APP_ENV='development' -# 若依管理系统/开发环境 -VUE_APP_BASE_API = '/dev-api' +# 子应用路径配置 +VITE_APP_PATH='/layoutApp/testApp' -# 路由懒加载 -VUE_CLI_BABEL_TRANSPILE_MODULES = true +# 子应用名称 +VITE_APP_NAME='testApp' + +# 开发环境 +VITE_APP_BASE_API=http://172.16.1.141:8082 diff --git a/.env.production b/.env.production index 8875764..edd4434 100644 --- a/.env.production +++ b/.env.production @@ -1,8 +1,15 @@ # 页面标题 -VUE_APP_TITLE = 成本管理系统 +VITE_APP_TITLE='Qomo Ai' # 生产环境配置 -ENV = 'production' +VITE_APP_ENV='production' -# 若依管理系统/生产环境 -VUE_APP_BASE_API = '/prod-api' +# 子应用路径配置 +VITE_APP_PATH='/layoutApp/testApp' + +# 子应用名称 +VITE_APP_NAME='testApp' + + +# 是否在打包时开启压缩,支持 gzip 和 brotli +VITE_BUILD_COMPRESS=gzip diff --git a/.env.staging b/.env.staging deleted file mode 100644 index 68b570b..0000000 --- a/.env.staging +++ /dev/null @@ -1,10 +0,0 @@ -# 页面标题 -VUE_APP_TITLE = 若依管理系统 - -NODE_ENV = production - -# 测试环境配置 -ENV = 'staging' - -# 若依管理系统/测试环境 -VUE_APP_BASE_API = '/API' diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 89be6f6..0000000 --- a/.eslintignore +++ /dev/null @@ -1,10 +0,0 @@ -# 忽略build目录下类型为js的文件的语法检查 -build/*.js -# 忽略src/assets目录下文件的语法检查 -src/assets -# 忽略public目录下文件的语法检查 -public -# 忽略当前目录下为js的文件的语法检查 -*.js -# 忽略当前目录下为vue的文件的语法检查 -*.vue \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 82bbdee..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,199 +0,0 @@ -// ESlint 检查配置 -module.exports = { - root: true, - parserOptions: { - parser: 'babel-eslint', - sourceType: 'module' - }, - env: { - browser: true, - node: true, - es6: true, - }, - extends: ['plugin:vue/recommended', 'eslint:recommended'], - - // add your custom rules here - //it is base on https://github.com/vuejs/eslint-config-vue - rules: { - "vue/max-attributes-per-line": [2, { - "singleline": 10, - "multiline": { - "max": 1, - "allowFirstLine": false - } - }], - "vue/singleline-html-element-content-newline": "off", - "vue/multiline-html-element-content-newline":"off", - "vue/name-property-casing": ["error", "PascalCase"], - "vue/no-v-html": "off", - 'accessor-pairs': 2, - 'arrow-spacing': [2, { - 'before': true, - 'after': true - }], - 'block-spacing': [2, 'always'], - 'brace-style': [2, '1tbs', { - 'allowSingleLine': true - }], - 'camelcase': [0, { - 'properties': 'always' - }], - 'comma-dangle': [2, 'never'], - 'comma-spacing': [2, { - 'before': false, - 'after': true - }], - 'comma-style': [2, 'last'], - 'constructor-super': 2, - 'curly': [2, 'multi-line'], - 'dot-location': [2, 'property'], - 'eol-last': 2, - 'eqeqeq': ["error", "always", {"null": "ignore"}], - 'generator-star-spacing': [2, { - 'before': true, - 'after': true - }], - 'handle-callback-err': [2, '^(err|error)$'], - 'indent': [2, 2, { - 'SwitchCase': 1 - }], - 'jsx-quotes': [2, 'prefer-single'], - 'key-spacing': [2, { - 'beforeColon': false, - 'afterColon': true - }], - 'keyword-spacing': [2, { - 'before': true, - 'after': true - }], - 'new-cap': [2, { - 'newIsCap': true, - 'capIsNew': false - }], - 'new-parens': 2, - 'no-array-constructor': 2, - 'no-caller': 2, - 'no-console': 'off', - 'no-class-assign': 2, - 'no-cond-assign': 2, - 'no-const-assign': 2, - 'no-control-regex': 0, - 'no-delete-var': 2, - 'no-dupe-args': 2, - 'no-dupe-class-members': 2, - 'no-dupe-keys': 2, - 'no-duplicate-case': 2, - 'no-empty-character-class': 2, - 'no-empty-pattern': 2, - 'no-eval': 2, - 'no-ex-assign': 2, - 'no-extend-native': 2, - 'no-extra-bind': 2, - 'no-extra-boolean-cast': 2, - 'no-extra-parens': [2, 'functions'], - 'no-fallthrough': 2, - 'no-floating-decimal': 2, - 'no-func-assign': 2, - 'no-implied-eval': 2, - 'no-inner-declarations': [2, 'functions'], - 'no-invalid-regexp': 2, - 'no-irregular-whitespace': 2, - 'no-iterator': 2, - 'no-label-var': 2, - 'no-labels': [2, { - 'allowLoop': false, - 'allowSwitch': false - }], - 'no-lone-blocks': 2, - 'no-mixed-spaces-and-tabs': 2, - 'no-multi-spaces': 2, - 'no-multi-str': 2, - 'no-multiple-empty-lines': [2, { - 'max': 1 - }], - 'no-native-reassign': 2, - 'no-negated-in-lhs': 2, - 'no-new-object': 2, - 'no-new-require': 2, - 'no-new-symbol': 2, - 'no-new-wrappers': 2, - 'no-obj-calls': 2, - 'no-octal': 2, - 'no-octal-escape': 2, - 'no-path-concat': 2, - 'no-proto': 2, - 'no-redeclare': 2, - 'no-regex-spaces': 2, - 'no-return-assign': [2, 'except-parens'], - 'no-self-assign': 2, - 'no-self-compare': 2, - 'no-sequences': 2, - 'no-shadow-restricted-names': 2, - 'no-spaced-func': 2, - 'no-sparse-arrays': 2, - 'no-this-before-super': 2, - 'no-throw-literal': 2, - 'no-trailing-spaces': 2, - 'no-undef': 2, - 'no-undef-init': 2, - 'no-unexpected-multiline': 2, - 'no-unmodified-loop-condition': 2, - 'no-unneeded-ternary': [2, { - 'defaultAssignment': false - }], - 'no-unreachable': 2, - 'no-unsafe-finally': 2, - 'no-unused-vars': [2, { - 'vars': 'all', - 'args': 'none' - }], - 'no-useless-call': 2, - 'no-useless-computed-key': 2, - 'no-useless-constructor': 2, - 'no-useless-escape': 0, - 'no-whitespace-before-property': 2, - 'no-with': 2, - 'one-var': [2, { - 'initialized': 'never' - }], - 'operator-linebreak': [2, 'after', { - 'overrides': { - '?': 'before', - ':': 'before' - } - }], - 'padded-blocks': [2, 'never'], - 'quotes': [2, 'single', { - 'avoidEscape': true, - 'allowTemplateLiterals': true - }], - 'semi': [2, 'never'], - 'semi-spacing': [2, { - 'before': false, - 'after': true - }], - 'space-before-blocks': [2, 'always'], - 'space-before-function-paren': [2, 'never'], - 'space-in-parens': [2, 'never'], - 'space-infix-ops': 2, - 'space-unary-ops': [2, { - 'words': true, - 'nonwords': false - }], - 'spaced-comment': [2, 'always', { - 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] - }], - 'template-curly-spacing': [2, 'never'], - 'use-isnan': 2, - 'valid-typeof': 2, - 'wrap-iife': [2, 'any'], - 'yield-star-spacing': [2, 'both'], - 'yoda': [2, 'never'], - 'prefer-const': 2, - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, - 'object-curly-spacing': [2, 'always', { - objectsInObjects: false - }], - 'array-bracket-spacing': [2, 'never'] - } -} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..134c1a4 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,12 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["eslint:recommended", "plugin:vue/vue3-essential", "prettier "], + "parserOptions": { + "ecmaVersion": "latest" + }, + "plugins": ["vue"], + "rules": {} +} diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 0000000..a4fea27 --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,4 @@ +{ + "*.{js,jsx,vue}": ["prettier --write ."], + "*.md": ["prettier --write"] +} diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..35e540d --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +# pnpm 配置 +shamefully-hoist=true +auto-install-peers=true +strict-peer-dependencies=false diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6a9e3fb --- /dev/null +++ b/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": false, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "arrowParens": "avoid", + "rangeStart": 0, + "endOfLine": "crlf" +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8564f29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 RuoYi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 4265caf..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,2 +0,0 @@ -# cost-frontend - diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index c8267b2..0000000 --- a/babel.config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - presets: [ - // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app - '@vue/cli-plugin-babel/preset' - ], - 'env': { - 'development': { - // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). - // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. - 'plugins': ['dynamic-import-node'] - } - } -} \ No newline at end of file diff --git a/bin/build.bat b/bin/build.bat deleted file mode 100644 index dda590d..0000000 --- a/bin/build.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] ´ò°üWeb¹¤³̣¬Éú³ÉdistÎļþ¡£ -echo. - -%~d0 -cd %~dp0 - -cd .. -npm run build:prod - -pause \ No newline at end of file diff --git a/bin/package.bat b/bin/package.bat deleted file mode 100644 index 0e5bc0f..0000000 --- a/bin/package.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] °²װWeb¹¤³̣¬Éú³Énode_modulesÎļþ¡£ -echo. - -%~d0 -cd %~dp0 - -cd .. -npm install --registry=https://registry.npmmirror.com - -pause \ No newline at end of file diff --git a/bin/run-web.bat b/bin/run-web.bat deleted file mode 100644 index d30deae..0000000 --- a/bin/run-web.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [ÐÅϢ] ʹÓà Vue CLI ÃüÁîÔËÐÐ Web ¹¤³̡£ -echo. - -%~d0 -cd %~dp0 - -cd .. -npm run dev - -pause \ No newline at end of file diff --git a/build/index.js b/build/index.js deleted file mode 100644 index 0c57de2..0000000 --- a/build/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { run } = require('runjs') -const chalk = require('chalk') -const config = require('../vue.config.js') -const rawArgv = process.argv.slice(2) -const args = rawArgv.join(' ') - -if (process.env.npm_config_preview || rawArgv.includes('--preview')) { - const report = rawArgv.includes('--report') - - run(`vue-cli-service build ${args}`) - - const port = 9526 - const publicPath = config.publicPath - - var connect = require('connect') - var serveStatic = require('serve-static') - const app = connect() - - app.use( - publicPath, - serveStatic('./dist', { - index: ['index.html', '/'] - }) - ) - - app.listen(port, function () { - console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) - if (report) { - console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) - } - - }) -} else { - run(`vue-cli-service build ${args}`) -} diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..13dc785 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,4 @@ +module.exports = { + extends: ["cz"], + rules: {} +}; diff --git a/html/ie.html b/html/ie.html new file mode 100644 index 0000000..e15c125 --- /dev/null +++ b/html/ie.html @@ -0,0 +1,262 @@ + + + + + 请升级您的浏览器 + + + + + + +

请升级您的浏览器,以便我们更好的为您提供服务!

+

+ 您正在使用 Internet Explorer + 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。 +

+
+

+ 请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束 +

+

+ 自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 + 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 + 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 + 日结束的说明 + 。 +

+
+

您可以选择更先进的浏览器

+

+ 推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。 +

+ +
+ + diff --git a/public/index.html b/index.html similarity index 80% rename from public/index.html rename to index.html index 925455c..8c6537d 100644 --- a/public/index.html +++ b/index.html @@ -1,21 +1,33 @@ - + - - - - - - - <%= webpackConfig.name %> - - - - -
-
-
-
-
-
正在加载系统资源,请耐心等待
-
-
- - + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json index d2e5a7b..a7ba8a6 100644 --- a/package.json +++ b/package.json @@ -1,90 +1,70 @@ { - "name": "ruoyi", - "version": "3.8.7", - "description": "成本管理系统", - "author": "若依", + "name": "project", + "version": "1.0.0", + "description": "QomoAi 子应用", + "author": "lqy", "license": "MIT", + "type": "commonjs", "scripts": { - "dev": "vue-cli-service serve", - "build:prod": "vue-cli-service build", - "build:stage": "vue-cli-service build --mode staging", - "preview": "node build/index.js --preview", - "lint": "eslint --ext .js,.vue src" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "src/**/*.{js,vue}": [ - "eslint --fix", - "git add" - ] - }, - "keywords": [ - "vue", - "admin", - "dashboard", - "element-ui", - "boilerplate", - "admin-template", - "management-system" - ], - "repository": { - "type": "git", - "url": "https://gitee.com/y_project/RuoYi-Vue.git" + "dev": "vite", + "build:prod": "vite build", + "build:stage": "vite build --mode staging", + "preview": "vite preview", + "prepare": "husky install", + "pre-commit": "lint-staged", + "commit": "git-cz" }, "dependencies": { - "@riophae/vue-treeselect": "0.4.0", - "axios": "0.24.0", - "clipboard": "2.0.8", - "core-js": "3.25.3", - "echarts": "5.4.0", - "element-ui": "2.15.14", + "@element-plus/icons-vue": "2.3.1", + "@qomo-platform/core": "^1.0.65", + "@vueup/vue-quill": "1.2.0", + "@vueuse/core": "10.6.1", + "axios": "1.6.7", + "element-plus": "2.4.3", "file-saver": "2.0.5", - "fuse.js": "6.4.3", - "highlight.js": "9.18.5", - "js-beautify": "1.13.0", - "js-cookie": "3.0.1", - "jsencrypt": "3.0.0-rc.1", + "js-cookie": "3.0.5", + "jsencrypt": "3.3.2", + "less": "^4.2.0", + "md5": "^2.3.0", "nprogress": "0.2.0", - "quill": "1.3.7", - "screenfull": "5.0.2", - "sortablejs": "1.10.2", - "vue": "2.6.12", - "vue-count-to": "1.0.13", - "vue-cropper": "0.5.5", - "vue-meta": "2.4.0", - "vue-router": "3.4.9", - "vuedraggable": "2.24.3", - "vuex": "3.6.0" + "pinia": "2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "postcss-pxtorem": "^6.1.0", + "prettier": "^3.2.5", + "vite-plugin-qiankun": "^1.0.15", + "vue": "3.3.9", + "vue-router": "4.2.5" }, "devDependencies": { - "@vue/cli-plugin-babel": "4.4.6", - "@vue/cli-plugin-eslint": "4.4.6", - "@vue/cli-service": "4.4.6", - "babel-eslint": "10.1.0", - "babel-plugin-dynamic-import-node": "2.3.3", - "chalk": "4.1.0", - "compression-webpack-plugin": "6.1.2", - "connect": "3.6.6", - "eslint": "7.15.0", - "eslint-plugin-vue": "7.2.0", - "lint-staged": "10.5.3", - "runjs": "4.4.2", - "sass": "1.32.13", - "sass-loader": "10.1.1", - "script-ext-html-webpack-plugin": "2.1.5", - "svg-sprite-loader": "5.1.1", - "vue-template-compiler": "2.6.12" + "@commitlint/config-conventional": "^19.0.3", + "@vitejs/plugin-vue": "4.5.0", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vue/compiler-sfc": "3.3.9", + "autoprefixer": "^10.4.18", + "commitizen": "^4.3.0", + "commitlint": "^19.0.3", + "commitlint-config-cz": "^0.13.3", + "cz-conventional-changelog": "^3.3.0", + "cz-customizable": "^7.0.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.22.0", + "husky": "^8.0.0", + "husky-init": "^8.0.0", + "lint-staged": "^15.2.2", + "postcss": "^8.4.35", + "sass": "1.69.5", + "tailwindcss": "^3.4.1", + "unplugin-auto-import": "0.17.1", + "unplugin-vue-setup-extend-plus": "1.0.0", + "vite": "5.1.4", + "vite-plugin-compression": "0.5.1", + "vite-plugin-svg-icons": "2.0.1" }, - "engines": { - "node": ">=8.9", - "npm": ">= 3.0.0" - }, - "browserslist": [ - "> 1%", - "last 2 versions" - ] + "config": { + "commitizen": { + "path": "node_modules/cz-customizable" + } + } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..cd1a2b9 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + autoprefixer: {}, + tailwindcss: {} + } +}; diff --git a/public/favicon.ico b/public/favicon.ico index ff972ce91ca4e2f703f5158e2cc8743e2b4e6a4b..e67044007ad25512927cd1db2ac0e93afa3d1d4a 100644 GIT binary patch literal 4286 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 a{0_kQ3;^RrYIE*` zKthN#u^os&f)fXXI3qx`AaS5j5S);zQht@@M_WGMH#4@=tQ#lPNo?%s<;~8{&dm3{ zH*aR%&PGvzztPc%|F=d%@GVgk4M8NM=ON|WZ`85=|GotJ5?CmKN}5E~EHo@o#^je&FWJhG_ z7BZ-no!*6AasvMi;C}-A&w>3Q91`yqiVxA(XTWifbXnWIGpg(@MH3HeR#^P2l}+EK zcgl}Ir;x)1>gZB(eMjdP!0{wFWW&V?#zEdsGD62i**od?gdMy2hv(-Sl#uQQQlHh& zcm_NdNdF043kh2x55MF?dB%#3o1<{#mdulXzB?&C4~Fw#K#%bZRDy)Bn1^53B?B*q zWB$2$xYeQSZX+;Bcj!N!oy_7A6hXQ8!RGWYIb;d=z5crpchD2M4*H*+ME_6(<>J@a zkPJMT{uw*c|6;u}CYofc^f}r(hpf+05B}2HMfTXB^P#du?m41dJs&yip4zC_qjGlb z^PAJ54l5JtX05Rx2r^$-TVM<`UH-6KFGkh!|Y_}%Ti8$MdgEiN`Ccv z?4D$=@+KeSjWUgT)P9pJRjxrD!LRn{tCPR+v!uT#?>K$=gE_T1~kWzxUeps3UH2$Y8I#4&v~}0GD|1zKEZIcq%fV`S)k8aYu*n@XJ;X;A)Zp1scg9LQTcAIF+>Rjwj^LXZ1tqWg-^44!#uo= z{>u-{S$%2z8a#Tpyt8oMW09Mu%E`^-g?1LrQ=P$YwkCN?Z@blR(u1@$p#DJ*K*B%c z@$ZKVlgbpe&V+_|ZWjFWbm+ zJCfDvjDPRH=ug?f^U{q4d9JdH56X2mRX`HR%7K*Z%-|FF?}&ZQ%dAfj@cKw}l-g z1+V|!!Y}=|#2@$Zo3Baw`tRF+fBg5N|L^<1zW;AI|0S${Z0&68pGoEd)&T#b`9G|G zwEkVN{#k?dZ->@@Eyh3VK&>@jfotEhp_UC}1KKa3|13F!U1%@0%KIPI_?LVAdoliu z^)Gt~uxUT>9XM~C!tSTjol(uj>kjy}Kl}03+W&_A-zwqv@djrD@hSKx>=izSe`WhD zlaGs~tp5H_`=7c`YGePm#QvwH{uKvm#DHWI4y(l?LX2pY?cc^E``<kk`HA}Ch#TW-;A*k`}Of}*>_I-*ToxMY%+~^fl2%J zjnEbJNBjQ}|5*_KSTTNY-xu3wy?%bI3V-LI0c)0wM()JE$nfM#=zsCAk@lVz^4L{b-m~SrAk@1iH`!<|!b-o#WYmU;| z!0cdo`cIqUzr;v+SD^QFihnBpE8DWRnz6N$4$r|apZ{;*4|2%m?diY%9_%pXqp5Vb zIGv3YkfD6)Hpu37<88LvESL3-pZ6LbAO7M;@b7qI?;XXr(j6NnQr_)k$(zo9+8o@2 z`WJq;#sIr~=M3`r7M*SsK)H|sLey3)sFogF_59@(~?zsvjn zp}J=T{CoqZvxV{lS-hPzXIJ$dQP+L@bdbKQ-@^SMwi~@eOp)uT2DZFkb*vQd!;yjW z1NIDcxpx~~!{x&~X - - - - 请升级您的浏览器 - - - - - - -

请升级您的浏览器,以便我们更好的为您提供服务!

-

您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。

-
-

请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束

-

自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明 。

-
-

您可以选择更先进的浏览器

-

推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。

- -
- - \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 77470cb..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: / \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index b92ea37..bf23c9f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,28 +1,15 @@ - - diff --git a/src/api/hour.js b/src/api/hour.js new file mode 100644 index 0000000..605e96f --- /dev/null +++ b/src/api/hour.js @@ -0,0 +1,41 @@ +import request from "@/service/request"; +/*获取小时费率表格内容*/ +export function hourRateList(params) { + return request.get(`/hourRate/list`, params); +} +/*新增小时费率*/ +export function addHourRate(data) { + return request.post("/hourRate/add", {}, data, { + message: { + success: "新增成功", + error: true + } + }); +} +/*编辑小时费率*/ +export function editHourRate(data) { + return request.post("/hourRate/edit", {}, data, { + message: { + success: "编辑成功", + error: true + } + }); +} +/*删除小时费率*/ +export function deleteHourRate(data) { + return request.delete("/hourRate/delete", data,{ + message: { + success: "删除成功", + error: true + } + }); +} +/*批量删除小时费率*/ +export function deleteBatchHourRate(data) { + return request.delete("/hourRate/deleteBatch", data, { + message: { + success: "删除成功", + error: true + } + }); +} diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..7a0dc7f --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,3 @@ +export function getDictCode(params) { + return request.get(`/sys/dictItem/type`,params); +} \ No newline at end of file diff --git a/src/api/login.js b/src/api/login.js index 7b7388f..d8d16a6 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -1,60 +1,40 @@ -import request from '@/utils/request' +import request from "@/service/request"; -// 登录方法 -export function login(username, password, code, uuid) { - const data = { - username, - password, - code, - uuid - } - return request({ - url: '/login', +/** + * @description 登录方法 + */ +export function login(data) { + return request.post("/sys/login", {}, data, { headers: { isToken: false, repeatSubmit: false }, - method: 'post', - data: data - }) + message: { + error: true + } + }); } -// 注册方法 -export function register(data) { - return request({ - url: '/register', - headers: { - isToken: false - }, - method: 'post', - data: data - }) -} - -// 获取用户详细信息 +/** + * @description 获取用户详细信息 + */ export function getInfo() { - return request({ - url: '/getInfo', - method: 'get' - }) + return request.get("/sys/user/getUserInfo"); } -// 退出方法 -export function logout() { - return request({ - url: '/logout', - method: 'post' - }) +/** + * @description 获取验证码 + */ +export function getCodeImg(data) { + return request.get( + `/sys/randomImage/${data}`, + {}, + { + headers: { + isToken: false + }, + method: "get", + timeout: 20000 + } + ); } - -// 获取验证码 -export function getCodeImg() { - return request({ - url: '/captchaImage', - headers: { - isToken: false - }, - method: 'get', - timeout: 20000 - }) -} \ No newline at end of file diff --git a/src/api/menu.js b/src/api/menu.js index faef101..c319090 100644 --- a/src/api/menu.js +++ b/src/api/menu.js @@ -1,9 +1,5 @@ -import request from '@/utils/request' +import request from "@/service/request"; -// 获取路由 -export const getRouters = () => { - return request({ - url: '/getRouters', - method: 'get' - }) -} \ No newline at end of file +export const listByApp = params => { + return request.get('/sys/permission/listByApp',params) +} diff --git a/src/api/monitor/cache.js b/src/api/monitor/cache.js deleted file mode 100644 index 72c5f6a..0000000 --- a/src/api/monitor/cache.js +++ /dev/null @@ -1,57 +0,0 @@ -import request from '@/utils/request' - -// 查询缓存详细 -export function getCache() { - return request({ - url: '/monitor/cache', - method: 'get' - }) -} - -// 查询缓存名称列表 -export function listCacheName() { - return request({ - url: '/monitor/cache/getNames', - method: 'get' - }) -} - -// 查询缓存键名列表 -export function listCacheKey(cacheName) { - return request({ - url: '/monitor/cache/getKeys/' + cacheName, - method: 'get' - }) -} - -// 查询缓存内容 -export function getCacheValue(cacheName, cacheKey) { - return request({ - url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, - method: 'get' - }) -} - -// 清理指定名称缓存 -export function clearCacheName(cacheName) { - return request({ - url: '/monitor/cache/clearCacheName/' + cacheName, - method: 'delete' - }) -} - -// 清理指定键名缓存 -export function clearCacheKey(cacheKey) { - return request({ - url: '/monitor/cache/clearCacheKey/' + cacheKey, - method: 'delete' - }) -} - -// 清理全部缓存 -export function clearCacheAll() { - return request({ - url: '/monitor/cache/clearCacheAll', - method: 'delete' - }) -} diff --git a/src/api/monitor/job.js b/src/api/monitor/job.js deleted file mode 100644 index 3815569..0000000 --- a/src/api/monitor/job.js +++ /dev/null @@ -1,71 +0,0 @@ -import request from '@/utils/request' - -// 查询定时任务调度列表 -export function listJob(query) { - return request({ - url: '/monitor/job/list', - method: 'get', - params: query - }) -} - -// 查询定时任务调度详细 -export function getJob(jobId) { - return request({ - url: '/monitor/job/' + jobId, - method: 'get' - }) -} - -// 新增定时任务调度 -export function addJob(data) { - return request({ - url: '/monitor/job', - method: 'post', - data: data - }) -} - -// 修改定时任务调度 -export function updateJob(data) { - return request({ - url: '/monitor/job', - method: 'put', - data: data - }) -} - -// 删除定时任务调度 -export function delJob(jobId) { - return request({ - url: '/monitor/job/' + jobId, - method: 'delete' - }) -} - -// 任务状态修改 -export function changeJobStatus(jobId, status) { - const data = { - jobId, - status - } - return request({ - url: '/monitor/job/changeStatus', - method: 'put', - data: data - }) -} - - -// 定时任务立即执行一次 -export function runJob(jobId, jobGroup) { - const data = { - jobId, - jobGroup - } - return request({ - url: '/monitor/job/run', - method: 'put', - data: data - }) -} \ No newline at end of file diff --git a/src/api/monitor/jobLog.js b/src/api/monitor/jobLog.js deleted file mode 100644 index 6e0be61..0000000 --- a/src/api/monitor/jobLog.js +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request' - -// 查询调度日志列表 -export function listJobLog(query) { - return request({ - url: '/monitor/jobLog/list', - method: 'get', - params: query - }) -} - -// 删除调度日志 -export function delJobLog(jobLogId) { - return request({ - url: '/monitor/jobLog/' + jobLogId, - method: 'delete' - }) -} - -// 清空调度日志 -export function cleanJobLog() { - return request({ - url: '/monitor/jobLog/clean', - method: 'delete' - }) -} diff --git a/src/api/monitor/logininfor.js b/src/api/monitor/logininfor.js deleted file mode 100644 index 4d112b7..0000000 --- a/src/api/monitor/logininfor.js +++ /dev/null @@ -1,34 +0,0 @@ -import request from '@/utils/request' - -// 查询登录日志列表 -export function list(query) { - return request({ - url: '/monitor/logininfor/list', - method: 'get', - params: query - }) -} - -// 删除登录日志 -export function delLogininfor(infoId) { - return request({ - url: '/monitor/logininfor/' + infoId, - method: 'delete' - }) -} - -// 解锁用户登录状态 -export function unlockLogininfor(userName) { - return request({ - url: '/monitor/logininfor/unlock/' + userName, - method: 'get' - }) -} - -// 清空登录日志 -export function cleanLogininfor() { - return request({ - url: '/monitor/logininfor/clean', - method: 'delete' - }) -} diff --git a/src/api/monitor/online.js b/src/api/monitor/online.js deleted file mode 100644 index bd22137..0000000 --- a/src/api/monitor/online.js +++ /dev/null @@ -1,18 +0,0 @@ -import request from '@/utils/request' - -// 查询在线用户列表 -export function list(query) { - return request({ - url: '/monitor/online/list', - method: 'get', - params: query - }) -} - -// 强退用户 -export function forceLogout(tokenId) { - return request({ - url: '/monitor/online/' + tokenId, - method: 'delete' - }) -} diff --git a/src/api/monitor/operlog.js b/src/api/monitor/operlog.js deleted file mode 100644 index a04bca8..0000000 --- a/src/api/monitor/operlog.js +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request' - -// 查询操作日志列表 -export function list(query) { - return request({ - url: '/monitor/operlog/list', - method: 'get', - params: query - }) -} - -// 删除操作日志 -export function delOperlog(operId) { - return request({ - url: '/monitor/operlog/' + operId, - method: 'delete' - }) -} - -// 清空操作日志 -export function cleanOperlog() { - return request({ - url: '/monitor/operlog/clean', - method: 'delete' - }) -} diff --git a/src/api/monitor/server.js b/src/api/monitor/server.js deleted file mode 100644 index e1f9ca2..0000000 --- a/src/api/monitor/server.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/utils/request' - -// 获取服务信息 -export function getServer() { - return request({ - url: '/monitor/server', - method: 'get' - }) -} \ No newline at end of file diff --git a/src/api/system/config.js b/src/api/system/config.js deleted file mode 100644 index a404d82..0000000 --- a/src/api/system/config.js +++ /dev/null @@ -1,60 +0,0 @@ -import request from '@/utils/request' - -// 查询参数列表 -export function listConfig(query) { - return request({ - url: '/system/config/list', - method: 'get', - params: query - }) -} - -// 查询参数详细 -export function getConfig(configId) { - return request({ - url: '/system/config/' + configId, - method: 'get' - }) -} - -// 根据参数键名查询参数值 -export function getConfigKey(configKey) { - return request({ - url: '/system/config/configKey/' + configKey, - method: 'get' - }) -} - -// 新增参数配置 -export function addConfig(data) { - return request({ - url: '/system/config', - method: 'post', - data: data - }) -} - -// 修改参数配置 -export function updateConfig(data) { - return request({ - url: '/system/config', - method: 'put', - data: data - }) -} - -// 删除参数配置 -export function delConfig(configId) { - return request({ - url: '/system/config/' + configId, - method: 'delete' - }) -} - -// 刷新参数缓存 -export function refreshCache() { - return request({ - url: '/system/config/refreshCache', - method: 'delete' - }) -} diff --git a/src/api/system/dept.js b/src/api/system/dept.js deleted file mode 100644 index fc943cd..0000000 --- a/src/api/system/dept.js +++ /dev/null @@ -1,52 +0,0 @@ -import request from '@/utils/request' - -// 查询部门列表 -export function listDept(query) { - return request({ - url: '/system/dept/list', - method: 'get', - params: query - }) -} - -// 查询部门列表(排除节点) -export function listDeptExcludeChild(deptId) { - return request({ - url: '/system/dept/list/exclude/' + deptId, - method: 'get' - }) -} - -// 查询部门详细 -export function getDept(deptId) { - return request({ - url: '/system/dept/' + deptId, - method: 'get' - }) -} - -// 新增部门 -export function addDept(data) { - return request({ - url: '/system/dept', - method: 'post', - data: data - }) -} - -// 修改部门 -export function updateDept(data) { - return request({ - url: '/system/dept', - method: 'put', - data: data - }) -} - -// 删除部门 -export function delDept(deptId) { - return request({ - url: '/system/dept/' + deptId, - method: 'delete' - }) -} \ No newline at end of file diff --git a/src/api/system/dict/data.js b/src/api/system/dict/data.js deleted file mode 100644 index 6c9eb79..0000000 --- a/src/api/system/dict/data.js +++ /dev/null @@ -1,52 +0,0 @@ -import request from '@/utils/request' - -// 查询字典数据列表 -export function listData(query) { - return request({ - url: '/system/dict/data/list', - method: 'get', - params: query - }) -} - -// 查询字典数据详细 -export function getData(dictCode) { - return request({ - url: '/system/dict/data/' + dictCode, - method: 'get' - }) -} - -// 根据字典类型查询字典数据信息 -export function getDicts(dictType) { - return request({ - url: '/system/dict/data/type/' + dictType, - method: 'get' - }) -} - -// 新增字典数据 -export function addData(data) { - return request({ - url: '/system/dict/data', - method: 'post', - data: data - }) -} - -// 修改字典数据 -export function updateData(data) { - return request({ - url: '/system/dict/data', - method: 'put', - data: data - }) -} - -// 删除字典数据 -export function delData(dictCode) { - return request({ - url: '/system/dict/data/' + dictCode, - method: 'delete' - }) -} diff --git a/src/api/system/dict/type.js b/src/api/system/dict/type.js deleted file mode 100644 index a7a6e01..0000000 --- a/src/api/system/dict/type.js +++ /dev/null @@ -1,60 +0,0 @@ -import request from '@/utils/request' - -// 查询字典类型列表 -export function listType(query) { - return request({ - url: '/system/dict/type/list', - method: 'get', - params: query - }) -} - -// 查询字典类型详细 -export function getType(dictId) { - return request({ - url: '/system/dict/type/' + dictId, - method: 'get' - }) -} - -// 新增字典类型 -export function addType(data) { - return request({ - url: '/system/dict/type', - method: 'post', - data: data - }) -} - -// 修改字典类型 -export function updateType(data) { - return request({ - url: '/system/dict/type', - method: 'put', - data: data - }) -} - -// 删除字典类型 -export function delType(dictId) { - return request({ - url: '/system/dict/type/' + dictId, - method: 'delete' - }) -} - -// 刷新字典缓存 -export function refreshCache() { - return request({ - url: '/system/dict/type/refreshCache', - method: 'delete' - }) -} - -// 获取字典选择框列表 -export function optionselect() { - return request({ - url: '/system/dict/type/optionselect', - method: 'get' - }) -} \ No newline at end of file diff --git a/src/api/system/menu.js b/src/api/system/menu.js deleted file mode 100644 index f6415c6..0000000 --- a/src/api/system/menu.js +++ /dev/null @@ -1,60 +0,0 @@ -import request from '@/utils/request' - -// 查询菜单列表 -export function listMenu(query) { - return request({ - url: '/system/menu/list', - method: 'get', - params: query - }) -} - -// 查询菜单详细 -export function getMenu(menuId) { - return request({ - url: '/system/menu/' + menuId, - method: 'get' - }) -} - -// 查询菜单下拉树结构 -export function treeselect() { - return request({ - url: '/system/menu/treeselect', - method: 'get' - }) -} - -// 根据角色ID查询菜单下拉树结构 -export function roleMenuTreeselect(roleId) { - return request({ - url: '/system/menu/roleMenuTreeselect/' + roleId, - method: 'get' - }) -} - -// 新增菜单 -export function addMenu(data) { - return request({ - url: '/system/menu', - method: 'post', - data: data - }) -} - -// 修改菜单 -export function updateMenu(data) { - return request({ - url: '/system/menu', - method: 'put', - data: data - }) -} - -// 删除菜单 -export function delMenu(menuId) { - return request({ - url: '/system/menu/' + menuId, - method: 'delete' - }) -} \ No newline at end of file diff --git a/src/api/system/notice.js b/src/api/system/notice.js deleted file mode 100644 index c274ea5..0000000 --- a/src/api/system/notice.js +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' - -// 查询公告列表 -export function listNotice(query) { - return request({ - url: '/system/notice/list', - method: 'get', - params: query - }) -} - -// 查询公告详细 -export function getNotice(noticeId) { - return request({ - url: '/system/notice/' + noticeId, - method: 'get' - }) -} - -// 新增公告 -export function addNotice(data) { - return request({ - url: '/system/notice', - method: 'post', - data: data - }) -} - -// 修改公告 -export function updateNotice(data) { - return request({ - url: '/system/notice', - method: 'put', - data: data - }) -} - -// 删除公告 -export function delNotice(noticeId) { - return request({ - url: '/system/notice/' + noticeId, - method: 'delete' - }) -} \ No newline at end of file diff --git a/src/api/system/post.js b/src/api/system/post.js deleted file mode 100644 index 1a8e9ca..0000000 --- a/src/api/system/post.js +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' - -// 查询岗位列表 -export function listPost(query) { - return request({ - url: '/system/post/list', - method: 'get', - params: query - }) -} - -// 查询岗位详细 -export function getPost(postId) { - return request({ - url: '/system/post/' + postId, - method: 'get' - }) -} - -// 新增岗位 -export function addPost(data) { - return request({ - url: '/system/post', - method: 'post', - data: data - }) -} - -// 修改岗位 -export function updatePost(data) { - return request({ - url: '/system/post', - method: 'put', - data: data - }) -} - -// 删除岗位 -export function delPost(postId) { - return request({ - url: '/system/post/' + postId, - method: 'delete' - }) -} diff --git a/src/api/system/role.js b/src/api/system/role.js deleted file mode 100644 index f13e6f4..0000000 --- a/src/api/system/role.js +++ /dev/null @@ -1,119 +0,0 @@ -import request from '@/utils/request' - -// 查询角色列表 -export function listRole(query) { - return request({ - url: '/system/role/list', - method: 'get', - params: query - }) -} - -// 查询角色详细 -export function getRole(roleId) { - return request({ - url: '/system/role/' + roleId, - method: 'get' - }) -} - -// 新增角色 -export function addRole(data) { - return request({ - url: '/system/role', - method: 'post', - data: data - }) -} - -// 修改角色 -export function updateRole(data) { - return request({ - url: '/system/role', - method: 'put', - data: data - }) -} - -// 角色数据权限 -export function dataScope(data) { - return request({ - url: '/system/role/dataScope', - method: 'put', - data: data - }) -} - -// 角色状态修改 -export function changeRoleStatus(roleId, status) { - const data = { - roleId, - status - } - return request({ - url: '/system/role/changeStatus', - method: 'put', - data: data - }) -} - -// 删除角色 -export function delRole(roleId) { - return request({ - url: '/system/role/' + roleId, - method: 'delete' - }) -} - -// 查询角色已授权用户列表 -export function allocatedUserList(query) { - return request({ - url: '/system/role/authUser/allocatedList', - method: 'get', - params: query - }) -} - -// 查询角色未授权用户列表 -export function unallocatedUserList(query) { - return request({ - url: '/system/role/authUser/unallocatedList', - method: 'get', - params: query - }) -} - -// 取消用户授权角色 -export function authUserCancel(data) { - return request({ - url: '/system/role/authUser/cancel', - method: 'put', - data: data - }) -} - -// 批量取消用户授权角色 -export function authUserCancelAll(data) { - return request({ - url: '/system/role/authUser/cancelAll', - method: 'put', - params: data - }) -} - -// 授权用户选择 -export function authUserSelectAll(data) { - return request({ - url: '/system/role/authUser/selectAll', - method: 'put', - params: data - }) -} - -// 根据角色ID查询部门树结构 -export function deptTreeSelect(roleId) { - return request({ - url: '/system/role/deptTree/' + roleId, - method: 'get' - }) -} diff --git a/src/api/system/user.js b/src/api/system/user.js deleted file mode 100644 index f2f76ef..0000000 --- a/src/api/system/user.js +++ /dev/null @@ -1,135 +0,0 @@ -import request from '@/utils/request' -import { parseStrEmpty } from "@/utils/ruoyi"; - -// 查询用户列表 -export function listUser(query) { - return request({ - url: '/system/user/list', - method: 'get', - params: query - }) -} - -// 查询用户详细 -export function getUser(userId) { - return request({ - url: '/system/user/' + parseStrEmpty(userId), - method: 'get' - }) -} - -// 新增用户 -export function addUser(data) { - return request({ - url: '/system/user', - method: 'post', - data: data - }) -} - -// 修改用户 -export function updateUser(data) { - return request({ - url: '/system/user', - method: 'put', - data: data - }) -} - -// 删除用户 -export function delUser(userId) { - return request({ - url: '/system/user/' + userId, - method: 'delete' - }) -} - -// 用户密码重置 -export function resetUserPwd(userId, password) { - const data = { - userId, - password - } - return request({ - url: '/system/user/resetPwd', - method: 'put', - data: data - }) -} - -// 用户状态修改 -export function changeUserStatus(userId, status) { - const data = { - userId, - status - } - return request({ - url: '/system/user/changeStatus', - method: 'put', - data: data - }) -} - -// 查询用户个人信息 -export function getUserProfile() { - return request({ - url: '/system/user/profile', - method: 'get' - }) -} - -// 修改用户个人信息 -export function updateUserProfile(data) { - return request({ - url: '/system/user/profile', - method: 'put', - data: data - }) -} - -// 用户密码重置 -export function updateUserPwd(oldPassword, newPassword) { - const data = { - oldPassword, - newPassword - } - return request({ - url: '/system/user/profile/updatePwd', - method: 'put', - params: data - }) -} - -// 用户头像上传 -export function uploadAvatar(data) { - return request({ - url: '/system/user/profile/avatar', - method: 'post', - data: data - }) -} - -// 查询授权角色 -export function getAuthRole(userId) { - return request({ - url: '/system/user/authRole/' + userId, - method: 'get' - }) -} - -// 保存授权角色 -export function updateAuthRole(data) { - return request({ - url: '/system/user/authRole', - method: 'put', - params: data - }) -} - -// 查询部门下拉树结构 -export function deptTreeSelect() { - return request({ - url: '/system/user/deptTree', - method: 'get' - }) -} diff --git a/src/api/tool/gen.js b/src/api/tool/gen.js deleted file mode 100644 index 2075677..0000000 --- a/src/api/tool/gen.js +++ /dev/null @@ -1,85 +0,0 @@ -import request from '@/utils/request' - -// 查询生成表数据 -export function listTable(query) { - return request({ - url: '/tool/gen/list', - method: 'get', - params: query - }) -} -// 查询db数据库列表 -export function listDbTable(query) { - return request({ - url: '/tool/gen/db/list', - method: 'get', - params: query - }) -} - -// 查询表详细信息 -export function getGenTable(tableId) { - return request({ - url: '/tool/gen/' + tableId, - method: 'get' - }) -} - -// 修改代码生成信息 -export function updateGenTable(data) { - return request({ - url: '/tool/gen', - method: 'put', - data: data - }) -} - -// 导入表 -export function importTable(data) { - return request({ - url: '/tool/gen/importTable', - method: 'post', - params: data - }) -} - -// 创建表 -export function createTable(data) { - return request({ - url: '/tool/gen/createTable', - method: 'post', - params: data - }) -} - -// 预览生成代码 -export function previewTable(tableId) { - return request({ - url: '/tool/gen/preview/' + tableId, - method: 'get' - }) -} - -// 删除表数据 -export function delTable(tableId) { - return request({ - url: '/tool/gen/' + tableId, - method: 'delete' - }) -} - -// 生成代码(自定义路径) -export function genCode(tableName) { - return request({ - url: '/tool/gen/genCode/' + tableName, - method: 'get' - }) -} - -// 同步数据库 -export function synchDb(tableName) { - return request({ - url: '/tool/gen/synchDb/' + tableName, - method: 'get' - }) -} diff --git a/src/api/unitPrice.js b/src/api/unitPrice.js new file mode 100644 index 0000000..9d50c00 --- /dev/null +++ b/src/api/unitPrice.js @@ -0,0 +1,50 @@ +import request from "@/service/request"; +/*获取小时费率表格内容*/ +export function c7525Costist(params) { + return request.get(`/c7525cost/list`, params); +} +/*新增小时费率*/ +export function addC7525cost(data) { + return request.post("/c7525cost/add", {}, data, { + message: { + success: "新增成功", + error: true + } + }); +} +/*编辑小时费率*/ +export function editC7525cost(data) { + return request.post("/c7525cost/edit", {}, data, { + message: { + success: "编辑成功", + error: true + } + }); +} +/*删除小时费率*/ +export function deleteC7525cost(data) { + return request.delete("/c7525cost/delete", data,{ + message: { + success: "删除成功", + error: true + } + }); +} +/*批量删除小时费率*/ +export function deleteBatchC7525cost(data) { + return request.delete("/c7525cost/deleteBatch", data,{ + message: { + success: "删除成功", + error: true + } + }); +} +/*导出excel*/ +export function exportExcelC7525cost(data) { + return request.get("c7525cost/exportXls", data, { + message: { + success: "导出成功", + error: true + } + }); +} \ No newline at end of file diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js deleted file mode 100644 index 2c6b309..0000000 --- a/src/assets/icons/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import Vue from 'vue' -import SvgIcon from '@/components/SvgIcon'// svg component - -// register globally -Vue.component('svg-icon', SvgIcon) - -const req = require.context('./svg', false, /\.svg$/) -const requireAll = requireContext => requireContext.keys().map(requireContext) -requireAll(req) diff --git a/src/assets/icons/svg/404.svg b/src/assets/icons/svg/404.svg deleted file mode 100644 index 6df5019..0000000 --- a/src/assets/icons/svg/404.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/bug.svg b/src/assets/icons/svg/bug.svg deleted file mode 100644 index 05a150d..0000000 --- a/src/assets/icons/svg/bug.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/build.svg b/src/assets/icons/svg/build.svg deleted file mode 100644 index 97c4688..0000000 --- a/src/assets/icons/svg/build.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/button.svg b/src/assets/icons/svg/button.svg deleted file mode 100644 index 904fddc..0000000 --- a/src/assets/icons/svg/button.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/cascader.svg b/src/assets/icons/svg/cascader.svg deleted file mode 100644 index e256024..0000000 --- a/src/assets/icons/svg/cascader.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/chart.svg b/src/assets/icons/svg/chart.svg deleted file mode 100644 index 27728fb..0000000 --- a/src/assets/icons/svg/chart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/checkbox.svg b/src/assets/icons/svg/checkbox.svg deleted file mode 100644 index 013fd3a..0000000 --- a/src/assets/icons/svg/checkbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/clipboard.svg b/src/assets/icons/svg/clipboard.svg deleted file mode 100644 index 90923ff..0000000 --- a/src/assets/icons/svg/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/code.svg b/src/assets/icons/svg/code.svg deleted file mode 100644 index 5f9c5ab..0000000 --- a/src/assets/icons/svg/code.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/color.svg b/src/assets/icons/svg/color.svg deleted file mode 100644 index 44a81aa..0000000 --- a/src/assets/icons/svg/color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/component.svg b/src/assets/icons/svg/component.svg deleted file mode 100644 index 29c3458..0000000 --- a/src/assets/icons/svg/component.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/dashboard.svg b/src/assets/icons/svg/dashboard.svg deleted file mode 100644 index 5317d37..0000000 --- a/src/assets/icons/svg/dashboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/date-range.svg b/src/assets/icons/svg/date-range.svg deleted file mode 100644 index fda571e..0000000 --- a/src/assets/icons/svg/date-range.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/date.svg b/src/assets/icons/svg/date.svg deleted file mode 100644 index 52dc73e..0000000 --- a/src/assets/icons/svg/date.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/dict.svg b/src/assets/icons/svg/dict.svg deleted file mode 100644 index 4849377..0000000 --- a/src/assets/icons/svg/dict.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/documentation.svg b/src/assets/icons/svg/documentation.svg deleted file mode 100644 index 7043122..0000000 --- a/src/assets/icons/svg/documentation.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/download.svg b/src/assets/icons/svg/download.svg deleted file mode 100644 index c896951..0000000 --- a/src/assets/icons/svg/download.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/drag.svg b/src/assets/icons/svg/drag.svg deleted file mode 100644 index 4185d3c..0000000 --- a/src/assets/icons/svg/drag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/druid.svg b/src/assets/icons/svg/druid.svg deleted file mode 100644 index a2b4b4e..0000000 --- a/src/assets/icons/svg/druid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/edit.svg b/src/assets/icons/svg/edit.svg deleted file mode 100644 index d26101f..0000000 --- a/src/assets/icons/svg/edit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/education.svg b/src/assets/icons/svg/education.svg deleted file mode 100644 index 7bfb01d..0000000 --- a/src/assets/icons/svg/education.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/email.svg b/src/assets/icons/svg/email.svg deleted file mode 100644 index 74d25e2..0000000 --- a/src/assets/icons/svg/email.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/example.svg b/src/assets/icons/svg/example.svg deleted file mode 100644 index 46f42b5..0000000 --- a/src/assets/icons/svg/example.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/excel.svg b/src/assets/icons/svg/excel.svg deleted file mode 100644 index 74d97b8..0000000 --- a/src/assets/icons/svg/excel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/exit-fullscreen.svg b/src/assets/icons/svg/exit-fullscreen.svg deleted file mode 100644 index 485c128..0000000 --- a/src/assets/icons/svg/exit-fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/eye-open.svg b/src/assets/icons/svg/eye-open.svg deleted file mode 100644 index 88dcc98..0000000 --- a/src/assets/icons/svg/eye-open.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/eye.svg b/src/assets/icons/svg/eye.svg deleted file mode 100644 index 16ed2d8..0000000 --- a/src/assets/icons/svg/eye.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/form.svg b/src/assets/icons/svg/form.svg deleted file mode 100644 index dcbaa18..0000000 --- a/src/assets/icons/svg/form.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/fullscreen.svg b/src/assets/icons/svg/fullscreen.svg deleted file mode 100644 index 0e86b6f..0000000 --- a/src/assets/icons/svg/fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/github.svg b/src/assets/icons/svg/github.svg deleted file mode 100644 index db0a0d4..0000000 --- a/src/assets/icons/svg/github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/guide.svg b/src/assets/icons/svg/guide.svg deleted file mode 100644 index b271001..0000000 --- a/src/assets/icons/svg/guide.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/icon.svg b/src/assets/icons/svg/icon.svg deleted file mode 100644 index 82be8ee..0000000 --- a/src/assets/icons/svg/icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/input.svg b/src/assets/icons/svg/input.svg deleted file mode 100644 index ab91381..0000000 --- a/src/assets/icons/svg/input.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/international.svg b/src/assets/icons/svg/international.svg deleted file mode 100644 index e9b56ee..0000000 --- a/src/assets/icons/svg/international.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/job.svg b/src/assets/icons/svg/job.svg deleted file mode 100644 index 2a93a25..0000000 --- a/src/assets/icons/svg/job.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/language.svg b/src/assets/icons/svg/language.svg deleted file mode 100644 index 0082b57..0000000 --- a/src/assets/icons/svg/language.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/link.svg b/src/assets/icons/svg/link.svg deleted file mode 100644 index 48197ba..0000000 --- a/src/assets/icons/svg/link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/list.svg b/src/assets/icons/svg/list.svg deleted file mode 100644 index 20259ed..0000000 --- a/src/assets/icons/svg/list.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/lock.svg b/src/assets/icons/svg/lock.svg deleted file mode 100644 index 74fee54..0000000 --- a/src/assets/icons/svg/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/log.svg b/src/assets/icons/svg/log.svg deleted file mode 100644 index d879d33..0000000 --- a/src/assets/icons/svg/log.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/logininfor.svg b/src/assets/icons/svg/logininfor.svg deleted file mode 100644 index 267f844..0000000 --- a/src/assets/icons/svg/logininfor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/message.svg b/src/assets/icons/svg/message.svg deleted file mode 100644 index 14ca817..0000000 --- a/src/assets/icons/svg/message.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/money.svg b/src/assets/icons/svg/money.svg deleted file mode 100644 index c1580de..0000000 --- a/src/assets/icons/svg/money.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/monitor.svg b/src/assets/icons/svg/monitor.svg deleted file mode 100644 index bc308cb..0000000 --- a/src/assets/icons/svg/monitor.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/nested.svg b/src/assets/icons/svg/nested.svg deleted file mode 100644 index 06713a8..0000000 --- a/src/assets/icons/svg/nested.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/number.svg b/src/assets/icons/svg/number.svg deleted file mode 100644 index ad5ce9a..0000000 --- a/src/assets/icons/svg/number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/online.svg b/src/assets/icons/svg/online.svg deleted file mode 100644 index 330a202..0000000 --- a/src/assets/icons/svg/online.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/password.svg b/src/assets/icons/svg/password.svg deleted file mode 100644 index 6c64def..0000000 --- a/src/assets/icons/svg/password.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/pdf.svg b/src/assets/icons/svg/pdf.svg deleted file mode 100644 index 957aa0c..0000000 --- a/src/assets/icons/svg/pdf.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/people.svg b/src/assets/icons/svg/people.svg deleted file mode 100644 index 2bd54ae..0000000 --- a/src/assets/icons/svg/people.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/peoples.svg b/src/assets/icons/svg/peoples.svg deleted file mode 100644 index aab852e..0000000 --- a/src/assets/icons/svg/peoples.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/phone.svg b/src/assets/icons/svg/phone.svg deleted file mode 100644 index ab8e8c4..0000000 --- a/src/assets/icons/svg/phone.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/post.svg b/src/assets/icons/svg/post.svg deleted file mode 100644 index 2922c61..0000000 --- a/src/assets/icons/svg/post.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/qq.svg b/src/assets/icons/svg/qq.svg deleted file mode 100644 index ee13d4e..0000000 --- a/src/assets/icons/svg/qq.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/question.svg b/src/assets/icons/svg/question.svg deleted file mode 100644 index cf75bd4..0000000 --- a/src/assets/icons/svg/question.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/radio.svg b/src/assets/icons/svg/radio.svg deleted file mode 100644 index 0cde345..0000000 --- a/src/assets/icons/svg/radio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/rate.svg b/src/assets/icons/svg/rate.svg deleted file mode 100644 index aa3b14d..0000000 --- a/src/assets/icons/svg/rate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/redis-list.svg b/src/assets/icons/svg/redis-list.svg deleted file mode 100644 index 98a15b2..0000000 --- a/src/assets/icons/svg/redis-list.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/redis.svg b/src/assets/icons/svg/redis.svg deleted file mode 100644 index 2f1d62d..0000000 --- a/src/assets/icons/svg/redis.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/row.svg b/src/assets/icons/svg/row.svg deleted file mode 100644 index 0780992..0000000 --- a/src/assets/icons/svg/row.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg deleted file mode 100644 index 84233dd..0000000 --- a/src/assets/icons/svg/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/select.svg b/src/assets/icons/svg/select.svg deleted file mode 100644 index d628382..0000000 --- a/src/assets/icons/svg/select.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/server.svg b/src/assets/icons/svg/server.svg deleted file mode 100644 index eb287e3..0000000 --- a/src/assets/icons/svg/server.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/shopping.svg b/src/assets/icons/svg/shopping.svg deleted file mode 100644 index 87513e7..0000000 --- a/src/assets/icons/svg/shopping.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/size.svg b/src/assets/icons/svg/size.svg deleted file mode 100644 index ddb25b8..0000000 --- a/src/assets/icons/svg/size.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/skill.svg b/src/assets/icons/svg/skill.svg deleted file mode 100644 index a3b7312..0000000 --- a/src/assets/icons/svg/skill.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/slider.svg b/src/assets/icons/svg/slider.svg deleted file mode 100644 index fbe4f39..0000000 --- a/src/assets/icons/svg/slider.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/star.svg b/src/assets/icons/svg/star.svg deleted file mode 100644 index 6cf86e6..0000000 --- a/src/assets/icons/svg/star.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/swagger.svg b/src/assets/icons/svg/swagger.svg deleted file mode 100644 index 05d4e7b..0000000 --- a/src/assets/icons/svg/swagger.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/switch.svg b/src/assets/icons/svg/switch.svg deleted file mode 100644 index 0ba61e3..0000000 --- a/src/assets/icons/svg/switch.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/system.svg b/src/assets/icons/svg/system.svg deleted file mode 100644 index 5992593..0000000 --- a/src/assets/icons/svg/system.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/tab.svg b/src/assets/icons/svg/tab.svg deleted file mode 100644 index b4b48e4..0000000 --- a/src/assets/icons/svg/tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/table.svg b/src/assets/icons/svg/table.svg deleted file mode 100644 index 0e3dc9d..0000000 --- a/src/assets/icons/svg/table.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/textarea.svg b/src/assets/icons/svg/textarea.svg deleted file mode 100644 index 2709f29..0000000 --- a/src/assets/icons/svg/textarea.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/theme.svg b/src/assets/icons/svg/theme.svg deleted file mode 100644 index 5982a2f..0000000 --- a/src/assets/icons/svg/theme.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/time-range.svg b/src/assets/icons/svg/time-range.svg deleted file mode 100644 index 13c1202..0000000 --- a/src/assets/icons/svg/time-range.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/time.svg b/src/assets/icons/svg/time.svg deleted file mode 100644 index b376e32..0000000 --- a/src/assets/icons/svg/time.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/tool.svg b/src/assets/icons/svg/tool.svg deleted file mode 100644 index 48e0e35..0000000 --- a/src/assets/icons/svg/tool.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/tree-table.svg b/src/assets/icons/svg/tree-table.svg deleted file mode 100644 index 8aafdb8..0000000 --- a/src/assets/icons/svg/tree-table.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/tree.svg b/src/assets/icons/svg/tree.svg deleted file mode 100644 index dd4b7dd..0000000 --- a/src/assets/icons/svg/tree.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/upload.svg b/src/assets/icons/svg/upload.svg deleted file mode 100644 index bae49c0..0000000 --- a/src/assets/icons/svg/upload.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/user.svg b/src/assets/icons/svg/user.svg deleted file mode 100644 index 0ba0716..0000000 --- a/src/assets/icons/svg/user.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/validCode.svg b/src/assets/icons/svg/validCode.svg deleted file mode 100644 index cfb1021..0000000 --- a/src/assets/icons/svg/validCode.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/wechat.svg b/src/assets/icons/svg/wechat.svg deleted file mode 100644 index c586e55..0000000 --- a/src/assets/icons/svg/wechat.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/zip.svg b/src/assets/icons/svg/zip.svg deleted file mode 100644 index f806fc4..0000000 --- a/src/assets/icons/svg/zip.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svgo.yml b/src/assets/icons/svgo.yml deleted file mode 100644 index d11906a..0000000 --- a/src/assets/icons/svgo.yml +++ /dev/null @@ -1,22 +0,0 @@ -# replace default config - -# multipass: true -# full: true - -plugins: - - # - name - # - # or: - # - name: false - # - name: true - # - # or: - # - name: - # param1: 1 - # param2: 2 - -- removeAttrs: - attrs: - - 'fill' - - 'fill-rule' diff --git a/src/assets/images/home.png b/src/assets/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..d80d7feb7416820261436005160a690cb1b3b67b GIT binary patch literal 320 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 P00000NkvXXu0mjfmlEdR literal 0 HcmV?d00001 diff --git a/src/assets/images/pay.png b/src/assets/images/pay.png deleted file mode 100644 index bb8b9672381a3e4119fcd33e6ddc21973672e273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140720 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 vPok;F)*{# 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 DPqhcR diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png index 43530568487527f4b43e8a0d60a7f6e04ab92c19..e26376026420542212ed58d90d0ed34f554fa4ae 100644 GIT binary patch literal 5663 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 diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss index e6ba1a8..c13df57 100644 --- a/src/assets/styles/btn.scss +++ b/src/assets/styles/btn.scss @@ -1,4 +1,4 @@ -@import './variables.scss'; +@import "./variables.module.scss"; @mixin colorBtn($color) { background: $color; @@ -14,31 +14,31 @@ } .blue-btn { - @include colorBtn($blue) + @include colorBtn($blue); } .light-blue-btn { - @include colorBtn($light-blue) + @include colorBtn($light-blue); } .red-btn { - @include colorBtn($red) + @include colorBtn($red); } .pink-btn { - @include colorBtn($pink) + @include colorBtn($pink); } .green-btn { - @include colorBtn($green) + @include colorBtn($green); } .tiffany-btn { - @include colorBtn($tiffany) + @include colorBtn($tiffany); } .yellow-btn { - @include colorBtn($yellow) + @include colorBtn($yellow); } .pan-btn { @@ -64,7 +64,7 @@ &:before, &:after { - content: ''; + content: ""; position: absolute; top: 0; right: 0; diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss index 363092a..85cbc54 100644 --- a/src/assets/styles/element-ui.scss +++ b/src/assets/styles/element-ui.scss @@ -69,7 +69,7 @@ // dropdown .el-dropdown-menu { a { - display: block + display: block; } } @@ -89,4 +89,15 @@ > .el-submenu__title .el-submenu__icon-arrow { display: none; -} \ No newline at end of file +} + +.el-dropdown .el-dropdown-link { + color: var(--el-color-primary) !important; +} +.el-form-item { + .el-select, + .el-cascader, + .el-input-number { + width: 100%; + } +} diff --git a/src/assets/styles/element-variables.scss b/src/assets/styles/element-variables.scss deleted file mode 100644 index 1615ff2..0000000 --- a/src/assets/styles/element-variables.scss +++ /dev/null @@ -1,31 +0,0 @@ -/** -* I think element-ui's default theme color is too light for long-term use. -* So I modified the default color and you can modify it to your liking. -**/ - -/* theme color */ -$--color-primary: #1890ff; -$--color-success: #13ce66; -$--color-warning: #ffba00; -$--color-danger: #ff4949; -// $--color-info: #1E1E1E; - -$--button-font-weight: 400; - -// $--color-text-regular: #1f2d3d; - -$--border-color-light: #dfe4ed; -$--border-color-lighter: #e6ebf5; - -$--table-border: 1px solid #dfe6ec; - -/* icon font path, required */ -$--font-path: '~element-ui/lib/theme-chalk/fonts'; - -@import "~element-ui/packages/theme-chalk/src/index"; - -// the :export directive is the magic sauce for webpack -// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass -:export { - theme: $--color-primary; -} diff --git a/src/assets/styles/global.css b/src/assets/styles/global.css new file mode 100644 index 0000000..9ebf51d --- /dev/null +++ b/src/assets/styles/global.css @@ -0,0 +1,3 @@ +:root { + --el-color-primary: #2474ff; +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 2f3b9ef..aeffb53 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -1,16 +1,27 @@ -@import './variables.scss'; -@import './mixin.scss'; -@import './transition.scss'; -@import './element-ui.scss'; -@import './sidebar.scss'; -@import './btn.scss'; +@import "./variables.module.scss"; +@import "./mixin.scss"; +@import "./transition.scss"; +@import "./element-ui.scss"; +@import "./sidebar.scss"; +@import "./btn.scss"; +@import "./ruoyi.scss"; +@import "element-plus/theme-chalk/src/index"; +@import "@qomo-platform/core/src/index.scss"; body { height: 100%; + margin: 0; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; - font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; + font-family: + Helvetica Neue, + Helvetica, + PingFang SC, + Hiragino Sans GB, + Microsoft YaHei, + Arial, + sans-serif; } label { @@ -22,7 +33,7 @@ html { box-sizing: border-box; } -#app { +#subApp { height: 100%; } @@ -104,7 +115,8 @@ aside { display: block; line-height: 32px; font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, + Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; color: #2c3e50; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -134,7 +146,7 @@ aside { } .text-center { - text-align: center + text-align: center; } .sub-navbar { @@ -145,7 +157,13 @@ aside { text-align: right; padding-right: 20px; transition: 600ms ease position; - background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + background: linear-gradient( + 90deg, + rgba(32, 182, 249, 1) 0%, + rgba(32, 182, 249, 1) 0%, + rgba(33, 120, 241, 1) 100%, + rgba(33, 120, 241, 1) 100% + ); .subtitle { font-size: 20px; diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss index 06fa061..9172448 100644 --- a/src/assets/styles/mixin.scss +++ b/src/assets/styles/mixin.scss @@ -44,21 +44,15 @@ border-bottom: $color-border-style; border-left: $transparent-border-style; border-right: $transparent-border-style; - } - - @else if $direction==right { + } @else if $direction==right { border-left: $color-border-style; border-top: $transparent-border-style; border-bottom: $transparent-border-style; - } - - @else if $direction==down { + } @else if $direction==down { border-top: $color-border-style; border-left: $transparent-border-style; border-right: $transparent-border-style; - } - - @else if $direction==left { + } @else if $direction==left { border-right: $color-border-style; border-top: $transparent-border-style; border-bottom: $transparent-border-style; diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index 4e29874..24cae91 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -1,87 +1,84 @@ /** -* 通用css样式布局处理 -* Copyright (c) 2019 ruoyi -*/ + * 通用css样式布局处理 + * Copyright (c) 2019 ruoyi + */ /** 基础通用 **/ .pt5 { padding-top: 5px; } - .pr5 { padding-right: 5px; } - .pb5 { padding-bottom: 5px; } - .mt5 { margin-top: 5px; } - .mr5 { margin-right: 5px; } - .mb5 { margin-bottom: 5px; } - .mb8 { margin-bottom: 8px; } - .ml5 { margin-left: 5px; } - .mt10 { margin-top: 10px; } - .mr10 { margin-right: 10px; } - .mb10 { margin-bottom: 10px; } .ml10 { - margin-left: 10px; + margin-left: 10px; } - .mt20 { margin-top: 20px; } - .mr20 { margin-right: 20px; } - .mb20 { margin-bottom: 20px; } .ml20 { - margin-left: 20px; + margin-left: 20px; } -.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } -.el-message-box__status + .el-message-box__message{ - word-break: break-word; +.el-form .el-form-item__label { + font-weight: 700; } - .el-dialog:not(.is-fullscreen) { margin-top: 6vh !important; } -.el-dialog__wrapper.scrollbar .el-dialog .el-dialog__body { +.el-dialog.scrollbar .el-dialog__body { overflow: auto; overflow-x: hidden; max-height: 70vh; @@ -89,16 +86,16 @@ } .el-table { - .el-table__header-wrapper, .el-table__fixed-header-wrapper { + .el-table__header-wrapper, + .el-table__fixed-header-wrapper { th { word-break: break-word; - background-color: #f8f8f9; + background-color: #f8f8f9 !important; color: #515a6e; - height: 40px; + height: 40px !important; font-size: 13px; } } - .el-table__body-wrapper { .el-button [class*="el-icon-"] + span { margin-left: 1px; @@ -112,7 +109,7 @@ color: #6379bb; border-bottom: 1px solid #ddd; margin: 8px 10px 25px 10px; - padding-bottom: 5px + padding-bottom: 5px; } /** 表格布局 **/ @@ -124,12 +121,17 @@ padding: 10px 20px !important; } +.el-dialog .pagination-container { + position: static !important; +} + /* tree border */ .tree-border { margin-top: 5px; border: 1px solid #e5e6e7; - background: #FFFFFF none; + background: #ffffff none; border-radius: 4px; + width: 100%; } .pagination-container .el-pagination { @@ -146,19 +148,21 @@ } } -.el-table .fixed-width .el-button--mini { +.el-table .fixed-width .el-button--small { padding-left: 0; padding-right: 0; width: inherit; } /** 表格更多操作下拉样式 */ -.el-table .el-dropdown-link,.el-table .el-dropdown-selfdefine { - cursor: pointer; - margin-left: 5px; +.el-table .el-dropdown-link { + cursor: pointer; + color: #2474ff; + margin-left: 10px; } -.el-table .el-dropdown, .el-icon-arrow-down { +.el-table .el-dropdown, +.el-icon-arrow-down { font-size: 12px; } @@ -192,12 +196,12 @@ } .el-card__header { - padding: 14px 15px 7px; + padding: 14px 15px 7px !important; min-height: 40px; } .el-card__body { - padding: 15px 20px 20px 20px; + padding: 15px 20px 20px 20px !important; } .card-box { @@ -209,22 +213,22 @@ /* button color */ .el-button--cyan.is-active, .el-button--cyan:active { - background: #20B2AA; - border-color: #20B2AA; - color: #FFFFFF; + background: #20b2aa; + border-color: #20b2aa; + color: #ffffff; } .el-button--cyan:focus, .el-button--cyan:hover { - background: #48D1CC; - border-color: #48D1CC; - color: #FFFFFF; + background: #48d1cc; + border-color: #48d1cc; + color: #ffffff; } .el-button--cyan { - background-color: #20B2AA; - border-color: #20B2AA; - color: #FFFFFF; + background-color: #20b2aa; + border-color: #20b2aa; + color: #ffffff; } /* text color */ @@ -267,10 +271,9 @@ } .avatar-upload-preview { - position: relative; + position: absolute; top: 50%; - left: 50%; - transform: translate(-50%, -50%); + transform: translate(50%, -50%); width: 200px; height: 200px; border-radius: 50%; @@ -280,12 +283,12 @@ /* 拖拽列样式 */ .sortable-ghost { - opacity: .8; + opacity: 0.8; color: #fff !important; background: #42b983 !important; } +/* 表格右侧工具栏样式 */ .top-right-btn { - position: relative; - float: right; + margin-left: auto; } diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss index abe5b63..7177695 100644 --- a/src/assets/styles/sidebar.scss +++ b/src/assets/styles/sidebar.scss @@ -1,35 +1,36 @@ -#app { - +#subApp { .main-container { - height: 100%; - transition: margin-left .28s; + height: calc(100% - 94px); + transition: margin-left 0.28s; margin-left: $base-sidebar-width; position: relative; } .sidebarHide { - margin-left: 0!important; + margin-left: 0 !important; } .sidebar-container { - -webkit-transition: width .28s; + -webkit-transition: width 0.28s; transition: width 0.28s; width: $base-sidebar-width !important; background-color: $base-menu-background; - height: 100%; + height: calc(100% - 60px) !important; position: fixed; font-size: 0px; - top: 0; - bottom: 0; + top: 60px; left: 0; z-index: 1001; overflow: hidden; - -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); - box-shadow: 2px 0 6px rgba(0,21,41,.35); + -webkit-box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); + box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); // reset element-ui css .horizontal-collapse-transition { - transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + transition: + 0s width ease-in-out, + 0s padding-left ease-in-out, + 0s padding-right ease-in-out; } .scrollbar-wrapper { @@ -70,26 +71,31 @@ width: 100% !important; } - .el-menu-item, .el-submenu__title { + .el-menu-item, + .menu-title { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; } + .el-menu-item .el-menu-tooltip__trigger { + display: inline-block !important; + } + // menu hover - .submenu-title-noDropdown, - .el-submenu__title { + .sub-menu-title-noDropdown, + .el-sub-menu__title { &:hover { background-color: rgba(0, 0, 0, 0.06) !important; } } - & .theme-dark .is-active > .el-submenu__title { + & .theme-dark .is-active > .el-sub-menu__title { color: $base-menu-color-active !important; } - & .nest-menu .el-submenu>.el-submenu__title, - & .el-submenu .el-menu-item { + & .nest-menu .el-sub-menu > .el-sub-menu__title, + & .el-sub-menu .el-menu-item { min-width: $base-sidebar-width !important; &:hover { @@ -97,8 +103,8 @@ } } - & .theme-dark .nest-menu .el-submenu>.el-submenu__title, - & .theme-dark .el-submenu .el-menu-item { + & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, + & .theme-dark .el-sub-menu .el-menu-item { background-color: $base-sub-menu-background !important; &:hover { @@ -116,7 +122,7 @@ margin-left: 54px; } - .submenu-title-noDropdown { + .sub-menu-title-noDropdown { padding: 0 !important; position: relative; @@ -129,23 +135,29 @@ } } - .el-submenu { + .el-sub-menu { overflow: hidden; - &>.el-submenu__title { + & > .el-sub-menu__title { padding: 0 !important; .svg-icon { margin-left: 20px; } - } } .el-menu--collapse { - .el-submenu { - &>.el-submenu__title { - &>span { + .el-sub-menu { + & > .el-sub-menu__title { + & > span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + & > i { height: 0; width: 0; overflow: hidden; @@ -157,7 +169,7 @@ } } - .el-menu--collapse .el-menu .el-submenu { + .el-menu--collapse .el-menu .el-sub-menu { min-width: $base-sidebar-width !important; } @@ -168,7 +180,7 @@ } .sidebar-container { - transition: transform .28s; + transition: transform 0.28s; width: $base-sidebar-width !important; } @@ -182,7 +194,6 @@ } .withoutAnimation { - .main-container, .sidebar-container { transition: none; @@ -192,22 +203,22 @@ // when menu collapsed .el-menu--vertical { - &>.el-menu { + & > .el-menu { .svg-icon { margin-right: 16px; } } - .nest-menu .el-submenu>.el-submenu__title, + .nest-menu .el-sub-menu > .el-sub-menu__title, .el-menu-item { &:hover { - // you can use $subMenuHover + // you can use $sub-menuHover background-color: rgba(0, 0, 0, 0.06) !important; } } - // the scroll bar appears when the subMenu is too long - >.el-menu--popup { + // the scroll bar appears when the sub-menu is too long + > .el-menu--popup { max-height: 100vh; overflow-y: auto; diff --git a/src/assets/styles/tailwind.css b/src/assets/styles/tailwind.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/src/assets/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/assets/styles/transition.scss b/src/assets/styles/transition.scss index 073f8c6..468ad3c 100644 --- a/src/assets/styles/transition.scss +++ b/src/assets/styles/transition.scss @@ -15,7 +15,7 @@ .fade-transform--move, .fade-transform-leave-active, .fade-transform-enter-active { - transition: all .5s; + transition: all 0.5s; } .fade-transform-enter { @@ -31,7 +31,7 @@ /* breadcrumb transition */ .breadcrumb-enter-active, .breadcrumb-leave-active { - transition: all .5s; + transition: all 0.5s; } .breadcrumb-enter, @@ -41,7 +41,7 @@ } .breadcrumb-move { - transition: all .5s; + transition: all 0.5s; } .breadcrumb-leave-active { diff --git a/src/assets/styles/variables.scss b/src/assets/styles/variables.module.scss similarity index 58% rename from src/assets/styles/variables.scss rename to src/assets/styles/variables.module.scss index 34484d4..f4a8c95 100644 --- a/src/assets/styles/variables.scss +++ b/src/assets/styles/variables.module.scss @@ -1,25 +1,25 @@ // base color -$blue:#324157; -$light-blue:#3A71A8; -$red:#C03639; -$pink: #E65D6E; -$green: #30B08F; -$tiffany: #4AB7BD; -$yellow:#FEC171; -$panGreen: #30B08F; +$blue: #324157; +$light-blue: #3a71a8; +$red: #c03639; +$pink: #e65d6e; +$green: #30b08f; +$tiffany: #4ab7bd; +$yellow: #fec171; +$panGreen: #30b08f; // 默认菜单主题风格 -$base-menu-color:#bfcbd9; -$base-menu-color-active:#f4f4f5; -$base-menu-background:#304156; +$base-menu-color: #bfcbd9; +$base-menu-color-active: #f4f4f5; +$base-menu-background: #304156; $base-logo-title-color: #ffffff; -$base-menu-light-color:rgba(0,0,0,.70); -$base-menu-light-background:#ffffff; +$base-menu-light-color: rgba(0, 0, 0, 0.7); +$base-menu-light-background: #ffffff; $base-logo-light-title-color: #001529; -$base-sub-menu-background:#1f2d3d; -$base-sub-menu-hover:#001528; +$base-sub-menu-background: #1f2d3d; +$base-sub-menu-hover: #001528; // 自定义暗色菜单风格 /** @@ -36,6 +36,12 @@ $base-sub-menu-background:#000c17; $base-sub-menu-hover:#001528; */ +$--color-primary: #2474ff; +$--color-success: #67c23a; +$--color-warning: #e6a23c; +$--color-danger: #f56c6c; +$--color-info: #909399; + $base-sidebar-width: 200px; // the :export directive is the magic sauce for webpack @@ -50,5 +56,10 @@ $base-sidebar-width: 200px; subMenuHover: $base-sub-menu-hover; sideBarWidth: $base-sidebar-width; logoTitleColor: $base-logo-title-color; - logoLightTitleColor: $base-logo-light-title-color + logoLightTitleColor: $base-logo-light-title-color; + primaryColor: $--color-primary; + successColor: $--color-success; + dangerColor: $--color-danger; + infoColor: $--color-info; + warningColor: $--color-warning; } diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue index 1696f54..3062392 100644 --- a/src/components/Breadcrumb/index.vue +++ b/src/components/Breadcrumb/index.vue @@ -1,62 +1,64 @@ - diff --git a/src/components/Crontab/min.vue b/src/components/Crontab/min.vue deleted file mode 100644 index 43cab90..0000000 --- a/src/components/Crontab/min.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/Crontab/month.vue b/src/components/Crontab/month.vue deleted file mode 100644 index fd0ac38..0000000 --- a/src/components/Crontab/month.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - diff --git a/src/components/Crontab/result.vue b/src/components/Crontab/result.vue deleted file mode 100644 index aea6e0e..0000000 --- a/src/components/Crontab/result.vue +++ /dev/null @@ -1,559 +0,0 @@ - - - diff --git a/src/components/Crontab/second.vue b/src/components/Crontab/second.vue deleted file mode 100644 index e7b7761..0000000 --- a/src/components/Crontab/second.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - diff --git a/src/components/Crontab/week.vue b/src/components/Crontab/week.vue deleted file mode 100644 index 1cec700..0000000 --- a/src/components/Crontab/week.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - diff --git a/src/components/Crontab/year.vue b/src/components/Crontab/year.vue deleted file mode 100644 index 5487a6c..0000000 --- a/src/components/Crontab/year.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - diff --git a/src/components/DictData/index.js b/src/components/DictData/index.js deleted file mode 100644 index 7b85d4a..0000000 --- a/src/components/DictData/index.js +++ /dev/null @@ -1,49 +0,0 @@ -import Vue from 'vue' -import store from '@/store' -import DataDict from '@/utils/dict' -import { getDicts as getDicts } from '@/api/system/dict/data' - -function searchDictByKey(dict, key) { - if (key == null && key == "") { - return null - } - try { - for (let i = 0; i < dict.length; i++) { - if (dict[i].key == key) { - return dict[i].value - } - } - } catch (e) { - return null - } -} - -function install() { - Vue.use(DataDict, { - metas: { - '*': { - labelField: 'dictLabel', - valueField: 'dictValue', - request(dictMeta) { - const storeDict = searchDictByKey(store.getters.dict, dictMeta.type) - if (storeDict) { - return new Promise(resolve => { resolve(storeDict) }) - } else { - return new Promise((resolve, reject) => { - getDicts(dictMeta.type).then(res => { - store.dispatch('dict/setDict', { key: dictMeta.type, value: res.data }) - resolve(res.data) - }).catch(error => { - reject(error) - }) - }) - } - }, - }, - }, - }) -} - -export default { - install, -} \ No newline at end of file diff --git a/src/components/DictTag/index.vue b/src/components/DictTag/index.vue deleted file mode 100644 index 6b5b230..0000000 --- a/src/components/DictTag/index.vue +++ /dev/null @@ -1,89 +0,0 @@ - - - - diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue deleted file mode 100644 index 8981d76..0000000 --- a/src/components/Editor/index.vue +++ /dev/null @@ -1,274 +0,0 @@ - - - - - diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue deleted file mode 100644 index c7f6b0a..0000000 --- a/src/components/FileUpload/index.vue +++ /dev/null @@ -1,216 +0,0 @@ - - - - - diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue deleted file mode 100644 index 368b002..0000000 --- a/src/components/Hamburger/index.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue deleted file mode 100644 index 7d6780b..0000000 --- a/src/components/HeaderSearch/index.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - - diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue deleted file mode 100644 index 8dadc02..0000000 --- a/src/components/IconSelect/index.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - diff --git a/src/components/IconSelect/requireIcons.js b/src/components/IconSelect/requireIcons.js deleted file mode 100644 index 99e5c54..0000000 --- a/src/components/IconSelect/requireIcons.js +++ /dev/null @@ -1,11 +0,0 @@ - -const req = require.context('../../assets/icons/svg', false, /\.svg$/) -const requireAll = requireContext => requireContext.keys() - -const re = /\.\/(.*)\.svg/ - -const icons = requireAll(req).map(i => { - return i.match(re)[1] -}) - -export default icons diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue deleted file mode 100644 index 3c770c7..0000000 --- a/src/components/ImagePreview/index.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - - - diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue deleted file mode 100644 index 2e64c9b..0000000 --- a/src/components/ImageUpload/index.vue +++ /dev/null @@ -1,226 +0,0 @@ - - - - - diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue deleted file mode 100644 index 56f5a6b..0000000 --- a/src/components/Pagination/index.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - diff --git a/src/components/PanThumb/index.vue b/src/components/PanThumb/index.vue deleted file mode 100644 index 1bcf417..0000000 --- a/src/components/PanThumb/index.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - - - diff --git a/src/components/ParentView/index.vue b/src/components/ParentView/index.vue index 7bf6148..98240ae 100644 --- a/src/components/ParentView/index.vue +++ b/src/components/ParentView/index.vue @@ -1,3 +1,3 @@ -