diff --git a/.env.development b/.env.development deleted file mode 100644 index f1b4028..0000000 --- a/.env.development +++ /dev/null @@ -1,8 +0,0 @@ -# 页面标题 -VITE_APP_TITLE = 智慧羊场管理系统 - -# 开发环境配置 -VITE_APP_ENV = 'development' - -# 若依管理系统/开发环境 -VITE_APP_BASE_API = '/dev-api' diff --git a/.env.production b/.env.production deleted file mode 100644 index c7e3297..0000000 --- a/.env.production +++ /dev/null @@ -1,11 +0,0 @@ -# 页面标题 -VITE_APP_TITLE = 智慧羊场管理系统 - -# 生产环境配置 -VITE_APP_ENV = 'production' - -# 若依管理系统/生产环境 -VITE_APP_BASE_API = '/prod-api' - -# 是否在打包时开启压缩,支持 gzip 和 brotli -VITE_BUILD_COMPRESS = gzip \ No newline at end of file diff --git a/.env.staging b/.env.staging deleted file mode 100644 index bbe3595..0000000 --- a/.env.staging +++ /dev/null @@ -1,11 +0,0 @@ -# 页面标题 -VITE_APP_TITLE = 智慧羊场管理系统 - -# 生产环境配置 -VITE_APP_ENV = 'staging' - -# 若依管理系统/生产环境 -VITE_APP_BASE_API = '/stage-api' - -# 是否在打包时开启压缩,支持 gzip 和 brotli -VITE_BUILD_COMPRESS = gzip \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 3836138..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: http://doc.ruoyi.vip/zhyc-vue/other/donate.html diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 78a752d..0000000 --- a/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -.DS_Store -node_modules/ -dist/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* -**/*.log - -tests/**/coverage/ -tests/e2e/reports -selenium-debug.log - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.local - -package-lock.json -yarn.lock diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 8564f29..0000000 --- a/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 100644 index e4df2ab..0000000 --- a/README.md +++ /dev/null @@ -1,108 +0,0 @@ -

- logo -

-

RuoYi v3.8.9

-

基于SpringBoot+Vue3前后端分离的Java快速开发框架

-

- - - -

- -## 平台简介 - -* 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。 -* 配套后端代码仓库地址[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 或 [RuoYi-Vue-fast](https://gitcode.com/yangzongzhuan/RuoYi-Vue-fast) 版本。 -* 前端技术栈([Vue2](https://cn.vuejs.org) + [Element](https://github.com/ElemeFE/element) + [Vue CLI](https://cli.vuejs.org/zh)),请移步[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue/tree/master/ruoyi-ui)。 -* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)   - -## 前端运行 - -```bash -# 克隆项目 -git clone https://github.com/yangzongzhuan/RuoYi-Vue3.git - -# 进入项目目录 -cd RuoYi-Vue3 - -# 安装依赖 -yarn --registry=https://registry.npmmirror.com - -# 启动服务 -yarn dev - -# 构建测试环境 yarn build:stage -# 构建生产环境 yarn build:prod -# 前端访问地址 http://localhost:80 -``` - -## 内置功能 - -1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 -2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 -3. 岗位管理:配置系统用户所属担任职务。 -4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 -5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 -6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 -7. 参数管理:对系统动态配置常用参数。 -8. 通知公告:系统通知公告信息发布维护。 -9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 -10. 登录日志:系统登录日志记录查询包含登录异常。 -11. 在线用户:当前系统中活跃用户状态监控。 -12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 -13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 -14. 系统接口:根据业务代码自动生成相关的api接口文档。 -15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 -16. 缓存监控:对系统的缓存信息查询,命令统计等。 -17. 在线构建器:拖动表单元素生成相应的HTML代码。 -18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 - -## 在线体验 - -- admin/admin123 -- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 - -演示地址:http://vue.ruoyi.vip -文档地址:http://doc.ruoyi.vip - -## 演示图 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -## 若依前后端分离交流群 - -QQ群: [![加入QQ群](https://img.shields.io/badge/已满-937441-blue.svg)](https://jq.qq.com/?_wv=1027&k=5bVB1og) [![加入QQ群](https://img.shields.io/badge/已满-887144332-blue.svg)](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [![加入QQ群](https://img.shields.io/badge/已满-180251782-blue.svg)](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [![加入QQ群](https://img.shields.io/badge/已满-104180207-blue.svg)](https://jq.qq.com/?_wv=1027&k=51G72yr) [![加入QQ群](https://img.shields.io/badge/已满-186866453-blue.svg)](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [![加入QQ群](https://img.shields.io/badge/已满-201396349-blue.svg)](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [![加入QQ群](https://img.shields.io/badge/已满-101456076-blue.svg)](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [![加入QQ群](https://img.shields.io/badge/已满-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [![加入QQ群](https://img.shields.io/badge/已满-264312783-blue.svg)](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [![加入QQ群](https://img.shields.io/badge/已满-167385320-blue.svg)](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [![加入QQ群](https://img.shields.io/badge/已满-104748341-blue.svg)](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [![加入QQ群](https://img.shields.io/badge/已满-160110482-blue.svg)](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [![加入QQ群](https://img.shields.io/badge/已满-170801498-blue.svg)](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [![加入QQ群](https://img.shields.io/badge/已满-108482800-blue.svg)](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [![加入QQ群](https://img.shields.io/badge/已满-101046199-blue.svg)](https://jq.qq.com/?_wv=1027&k=SpyH2875) [![加入QQ群](https://img.shields.io/badge/已满-136919097-blue.svg)](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [![加入QQ群](https://img.shields.io/badge/已满-143961921-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [![加入QQ群](https://img.shields.io/badge/已满-174951577-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [![加入QQ群](https://img.shields.io/badge/已满-161281055-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [![加入QQ群](https://img.shields.io/badge/已满-138988063-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [![加入QQ群](https://img.shields.io/badge/已满-151450850-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) [![加入QQ群](https://img.shields.io/badge/已满-224622315-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=F58bgRa-Dp-rsQJThiJqIYv8t4-lWfXh&authKey=UmUs4CVG5OPA1whvsa4uSespOvyd8%2FAr9olEGaWAfdLmfKQk%2FVBp2YU3u2xXXt76&noverify=0&group_code=224622315) [![加入QQ群](https://img.shields.io/badge/已满-287842588-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Nxb2EQ5qozWa218Wbs7zgBnjLSNk_tVT&authKey=obBKXj6SBKgrFTJZx0AqQnIYbNOvBB2kmgwWvGhzxR67RoRr84%2Bus5OadzMcdJl5&noverify=0&group_code=287842588) [![加入QQ群](https://img.shields.io/badge/已满-187944233-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=numtK1M_I4eVd2Gvg8qtbuL8JgX42qNh&authKey=giV9XWMaFZTY%2FqPlmWbkB9g3fi0Ev5CwEtT9Tgei0oUlFFCQLDp4ozWRiVIzubIm&noverify=0&group_code=187944233) [![加入QQ群](https://img.shields.io/badge/228578329-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G6r5KGCaa3pqdbUSXNIgYloyb8e0_L0D&authKey=4w8tF1eGW7%2FedWn%2FHAypQksdrML%2BDHolQSx7094Agm7Luakj9EbfPnSTxSi2T1LQ&noverify=0&group_code=228578329) 点击按钮入群。 \ No newline at end of file diff --git a/bin/build.bat b/bin/build.bat deleted file mode 100644 index ecbb454..0000000 --- a/bin/build.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [Ϣ] Weḅdistļ -echo. - -%~d0 -cd %~dp0 - -cd .. -yarn build:prod - -pause \ No newline at end of file diff --git a/bin/package.bat b/bin/package.bat deleted file mode 100644 index f5b24e0..0000000 --- a/bin/package.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [Ϣ] װWeḅnode_modulesļ -echo. - -%~d0 -cd %~dp0 - -cd .. -yarn --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 d2fe397..0000000 --- a/bin/run-web.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -echo. -echo [Ϣ] ʹ Vite Web ̡ -echo. - -%~d0 -cd %~dp0 - -cd .. -yarn dev - -pause \ No newline at end of file diff --git a/html/ie.html b/html/ie.html deleted file mode 100644 index 052ffcd..0000000 --- a/html/ie.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - 请升级您的浏览器 - - - - - - -

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

-

您正在使用 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/index.html b/index.html deleted file mode 100644 index d20d02e..0000000 --- a/index.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - 若依管理系统 - - - - - -
-
-
-
-
-
正在加载系统资源,请耐心等待
-
-
- - - - \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 9e749e3..0000000 --- a/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "ruoyi", - "version": "3.8.9", - "description": "若依管理系统", - "author": "若依", - "license": "MIT", - "type": "module", - "scripts": { - "dev": "vite", - "build:prod": "vite build", - "build:stage": "vite build --mode staging", - "preview": "vite preview" - }, - "repository": { - "type": "git", - "url": "https://gitee.com/y_project/RuoYi-Vue.git" - }, - "dependencies": { - "@element-plus/icons-vue": "2.3.1", - "@vueup/vue-quill": "1.2.0", - "@vueuse/core": "10.11.0", - "axios": "0.28.1", - "clipboard": "2.0.11", - "echarts": "5.5.1", - "element-plus": "2.7.6", - "file-saver": "2.0.5", - "fuse.js": "6.6.2", - "js-beautify": "1.14.11", - "js-cookie": "3.0.5", - "jsencrypt": "3.3.2", - "nprogress": "0.2.0", - "pinia": "2.1.7", - "splitpanes": "3.1.5", - "vue": "3.4.31", - "vue-cropper": "1.1.1", - "vue-router": "4.4.0", - "vuedraggable": "4.1.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "5.0.5", - "sass": "1.77.5", - "unplugin-auto-import": "0.17.6", - "unplugin-vue-setup-extend-plus": "1.0.1", - "vite": "5.3.2", - "vite-plugin-compression": "0.5.1", - "vite-plugin-svg-icons": "2.0.1" - }, - "overrides": { - "quill": "2.0.2" - } -} diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index e263760..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index 31839f2..0000000 --- a/src/App.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/api/login.js b/src/api/login.js deleted file mode 100644 index 7b7388f..0000000 --- a/src/api/login.js +++ /dev/null @@ -1,60 +0,0 @@ -import request from '@/utils/request' - -// 登录方法 -export function login(username, password, code, uuid) { - const data = { - username, - password, - code, - uuid - } - return request({ - url: '/login', - headers: { - isToken: false, - repeatSubmit: false - }, - method: 'post', - data: data - }) -} - -// 注册方法 -export function register(data) { - return request({ - url: '/register', - headers: { - isToken: false - }, - method: 'post', - data: data - }) -} - -// 获取用户详细信息 -export function getInfo() { - return request({ - url: '/getInfo', - method: 'get' - }) -} - -// 退出方法 -export function logout() { - return request({ - url: '/logout', - method: 'post' - }) -} - -// 获取验证码 -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 deleted file mode 100644 index faef101..0000000 --- a/src/api/menu.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/utils/request' - -// 获取路由 -export const getRouters = () => { - return request({ - url: '/getRouters', - method: 'get' - }) -} \ No newline at end of file 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 a0254ba..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' - }) -} 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 b5e3edd..0000000 --- a/src/api/system/user.js +++ /dev/null @@ -1,136 +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', - data: data - }) -} - -// 用户头像上传 -export function uploadAvatar(data) { - return request({ - url: '/system/user/profile/avatar', - method: 'post', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - 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/assets/401_images/401.gif b/src/assets/401_images/401.gif deleted file mode 100644 index cd6e0d9..0000000 Binary files a/src/assets/401_images/401.gif and /dev/null differ diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png deleted file mode 100644 index 3d8e230..0000000 Binary files a/src/assets/404_images/404.png and /dev/null differ diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png deleted file mode 100644 index c6281d0..0000000 Binary files a/src/assets/404_images/404_cloud.png and /dev/null differ 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/enter.svg b/src/assets/icons/svg/enter.svg deleted file mode 100644 index f7cabf2..0000000 --- a/src/assets/icons/svg/enter.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/moon.svg b/src/assets/icons/svg/moon.svg deleted file mode 100644 index ec72d77..0000000 --- a/src/assets/icons/svg/moon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/icons/svg/more-up.svg b/src/assets/icons/svg/more-up.svg deleted file mode 100644 index d30ac11..0000000 --- a/src/assets/icons/svg/more-up.svg +++ /dev/null @@ -1 +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/sunny.svg b/src/assets/icons/svg/sunny.svg deleted file mode 100644 index cc628bf..0000000 --- a/src/assets/icons/svg/sunny.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/images/dark.svg b/src/assets/images/dark.svg deleted file mode 100644 index f646bd7..0000000 --- a/src/assets/images/dark.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/images/light.svg b/src/assets/images/light.svg deleted file mode 100644 index ab7cc08..0000000 --- a/src/assets/images/light.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/images/login-background.jpg b/src/assets/images/login-background.jpg deleted file mode 100644 index 8a89eb8..0000000 Binary files a/src/assets/images/login-background.jpg and /dev/null differ diff --git a/src/assets/images/pay.png b/src/assets/images/pay.png deleted file mode 100644 index bb8b967..0000000 Binary files a/src/assets/images/pay.png and /dev/null differ diff --git a/src/assets/images/profile.jpg b/src/assets/images/profile.jpg deleted file mode 100644 index b3a940b..0000000 Binary files a/src/assets/images/profile.jpg and /dev/null differ diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png deleted file mode 100644 index e263760..0000000 Binary files a/src/assets/logo/logo.png and /dev/null differ diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss deleted file mode 100644 index 3590d8d..0000000 --- a/src/assets/styles/btn.scss +++ /dev/null @@ -1,99 +0,0 @@ -@import './variables.module.scss'; - -@mixin colorBtn($color) { - background: $color; - - &:hover { - color: $color; - - &:before, - &:after { - background: $color; - } - } -} - -.blue-btn { - @include colorBtn($blue) -} - -.light-blue-btn { - @include colorBtn($light-blue) -} - -.red-btn { - @include colorBtn($red) -} - -.pink-btn { - @include colorBtn($pink) -} - -.green-btn { - @include colorBtn($green) -} - -.tiffany-btn { - @include colorBtn($tiffany) -} - -.yellow-btn { - @include colorBtn($yellow) -} - -.pan-btn { - font-size: 14px; - color: #fff; - padding: 14px 36px; - border-radius: 8px; - border: none; - outline: none; - transition: 600ms ease all; - position: relative; - display: inline-block; - - &:hover { - background: #fff; - - &:before, - &:after { - width: 100%; - transition: 600ms ease all; - } - } - - &:before, - &:after { - content: ''; - position: absolute; - top: 0; - right: 0; - height: 2px; - width: 0; - transition: 400ms ease all; - } - - &::after { - right: inherit; - top: inherit; - left: 0; - bottom: 0; - } -} - -.custom-button { - display: inline-block; - line-height: 1; - white-space: nowrap; - cursor: pointer; - background: #fff; - color: #fff; - -webkit-appearance: none; - text-align: center; - box-sizing: border-box; - outline: 0; - margin: 0; - padding: 10px 15px; - font-size: 14px; - border-radius: 4px; -} diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss deleted file mode 100644 index 0f175f2..0000000 --- a/src/assets/styles/element-ui.scss +++ /dev/null @@ -1,96 +0,0 @@ -// cover some element-ui styles - -.el-breadcrumb__inner, -.el-breadcrumb__inner a { - font-weight: 400 !important; -} - -.el-upload { - input[type="file"] { - display: none !important; - } -} - -.el-upload__input { - display: none; -} - -.cell { - .el-tag { - margin-right: 0px; - } -} - -.small-padding { - .cell { - padding-left: 5px; - padding-right: 5px; - } -} - -.fixed-width { - .el-button--mini { - padding: 7px 10px; - width: 60px; - } -} - -.status-col { - .cell { - padding: 0 10px; - text-align: center; - - .el-tag { - margin-right: 0px; - } - } -} - -// to fixed https://github.com/ElemeFE/element/issues/2461 -.el-dialog { - transform: none; - left: 0; - position: relative; - margin: 0 auto; -} - -// refine element ui upload -.upload-container { - .el-upload { - width: 100%; - - .el-upload-dragger { - width: 100%; - height: 200px; - } - } -} - -// dropdown -.el-dropdown-menu { - a { - display: block - } -} - -// fix date-picker ui bug in filter-item -.el-range-editor.el-input__inner { - display: inline-flex !important; -} - -// to fix el-date-picker css style -.el-range-separator { - box-sizing: content-box; -} - -.el-menu--collapse - > div - > .el-submenu - > .el-submenu__title - .el-submenu__icon-arrow { - display: none; -} - -.el-dropdown .el-dropdown-link{ - color: var(--el-color-primary) !important; -} \ No newline at end of file diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss deleted file mode 100644 index efc1ddd..0000000 --- a/src/assets/styles/index.scss +++ /dev/null @@ -1,180 +0,0 @@ -@import './variables.module.scss'; -@import './mixin.scss'; -@import './transition.scss'; -@import './element-ui.scss'; -@import './sidebar.scss'; -@import './btn.scss'; -@import './ruoyi.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; -} - -label { - font-weight: 700; -} - -html { - height: 100%; - box-sizing: border-box; -} - -#app { - height: 100%; -} - -*, -*:before, -*:after { - box-sizing: inherit; -} - -.no-padding { - padding: 0px !important; -} - -.padding-content { - padding: 4px 0; -} - -a:focus, -a:active { - outline: none; -} - -a, -a:focus, -a:hover { - cursor: pointer; - color: inherit; - text-decoration: none; -} - -div:focus { - outline: none; -} - -.fr { - float: right; -} - -.fl { - float: left; -} - -.pr-5 { - padding-right: 5px; -} - -.pl-5 { - padding-left: 5px; -} - -.block { - display: block; -} - -.pointer { - cursor: pointer; -} - -.inlineBlock { - display: block; -} - -.clearfix { - &:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; - } -} - -aside { - background: #eef1f6; - padding: 8px 24px; - margin-bottom: 20px; - border-radius: 2px; - 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; - color: #2c3e50; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - a { - color: #337ab7; - cursor: pointer; - - &:hover { - color: rgb(32, 160, 255); - } - } -} - -//main-container全局样式 -.app-container { - padding: 20px; -} - -.components-container { - margin: 30px 50px; - position: relative; -} - -.text-center { - text-align: center -} - -.sub-navbar { - height: 50px; - line-height: 50px; - position: relative; - width: 100%; - 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%); - - .subtitle { - font-size: 20px; - color: #fff; - } - - &.draft { - background: #d0d0d0; - } - - &.deleted { - background: #d0d0d0; - } -} - -.link-type, -.link-type:focus { - color: #337ab7; - cursor: pointer; - - &:hover { - color: rgb(32, 160, 255); - } -} - -.filter-container { - padding-bottom: 10px; - - .filter-item { - display: inline-block; - vertical-align: middle; - margin-bottom: 10px; - } -} diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss deleted file mode 100644 index 06fa061..0000000 --- a/src/assets/styles/mixin.scss +++ /dev/null @@ -1,66 +0,0 @@ -@mixin clearfix { - &:after { - content: ""; - display: table; - clear: both; - } -} - -@mixin scrollBar { - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } -} - -@mixin relative { - position: relative; - width: 100%; - height: 100%; -} - -@mixin pct($pct) { - width: #{$pct}; - position: relative; - margin: 0 auto; -} - -@mixin triangle($width, $height, $color, $direction) { - $width: $width/2; - $color-border-style: $height solid $color; - $transparent-border-style: $width solid transparent; - height: 0; - width: 0; - - @if $direction==up { - border-bottom: $color-border-style; - border-left: $transparent-border-style; - border-right: $transparent-border-style; - } - - @else if $direction==right { - border-left: $color-border-style; - border-top: $transparent-border-style; - border-bottom: $transparent-border-style; - } - - @else if $direction==down { - border-top: $color-border-style; - border-left: $transparent-border-style; - border-right: $transparent-border-style; - } - - @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 deleted file mode 100644 index b3240c3..0000000 --- a/src/assets/styles/ruoyi.scss +++ /dev/null @@ -1,290 +0,0 @@ -/** - * 通用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; -} -.mt20 { - margin-top: 20px; -} -.mr20 { - margin-right: 20px; -} -.mb20 { - margin-bottom: 20px; -} -.ml20 { - margin-left: 20px; -} - -.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-form .el-form-item__label { - font-weight: 700; -} -.el-dialog:not(.is-fullscreen) { - margin-top: 6vh !important; -} - -.el-dialog.scrollbar .el-dialog__body { - overflow: auto; - overflow-x: hidden; - max-height: 70vh; - padding: 10px 20px 0; -} - -.el-table { - .el-table__header-wrapper, .el-table__fixed-header-wrapper { - th { - word-break: break-word; - background-color: #f8f8f9 !important; - color: #515a6e; - height: 40px !important; - font-size: 13px; - } - } - .el-table__body-wrapper { - .el-button [class*="el-icon-"] + span { - margin-left: 1px; - } - } -} - -/** 表单布局 **/ -.form-header { - font-size:15px; - color:#6379bb; - border-bottom:1px solid #ddd; - margin:8px 10px 25px 10px; - padding-bottom:5px -} - -/** 表格布局 **/ -.pagination-container { - display: flex; - justify-content: flex-end; - margin-top: 20px; - background-color: transparent !important; -} - -/* 弹窗中的分页器 */ -.el-dialog .pagination-container { - position: static !important; - margin: 10px 0 0 0; - padding: 0 !important; - - .el-pagination { - position: static; - } -} - -/* 移动端适配 */ -@media (max-width: 768px) { - .pagination-container { - .el-pagination { - > .el-pagination__jump { - display: none !important; - } - > .el-pagination__sizes { - display: none !important; - } - } - } -} - -/* tree border */ -.tree-border { - margin-top: 5px; - border: 1px solid var(--el-border-color-light, #e5e6e7); - background: var(--el-bg-color, #FFFFFF) none; - border-radius:4px; - width: 100%; -} - -.el-table .fixed-width .el-button--small { - padding-left: 0; - padding-right: 0; - width: inherit; -} - -/** 表格更多操作下拉样式 */ -.el-table .el-dropdown-link { - cursor: pointer; - color: #409EFF; - margin-left: 10px; -} - -.el-table .el-dropdown, .el-icon-arrow-down { - font-size: 12px; -} - -.el-tree-node__content > .el-checkbox { - margin-right: 8px; -} - -.list-group-striped > .list-group-item { - border-left: 0; - border-right: 0; - border-radius: 0; - padding-left: 0; - padding-right: 0; -} - -.list-group { - padding-left: 0px; - list-style: none; -} - -.list-group-item { - border-bottom: 1px solid #e7eaec; - border-top: 1px solid #e7eaec; - margin-bottom: -1px; - padding: 11px 0px; - font-size: 13px; -} - -.pull-right { - float: right !important; -} - -.el-card__header { - padding: 14px 15px 7px !important; - min-height: 40px; -} - -.el-card__body { - padding: 15px 20px 20px 20px !important; -} - -.card-box { - margin-bottom: 10px; -} - -/* button color */ -.el-button--cyan.is-active, -.el-button--cyan:active { - background: #20B2AA; - border-color: #20B2AA; - color: #FFFFFF; -} - -.el-button--cyan:focus, -.el-button--cyan:hover { - background: #48D1CC; - border-color: #48D1CC; - color: #FFFFFF; -} - -.el-button--cyan { - background-color: #20B2AA; - border-color: #20B2AA; - color: #FFFFFF; -} - -/* text color */ -.text-navy { - color: #1ab394; -} - -.text-primary { - color: inherit; -} - -.text-success { - color: #1c84c6; -} - -.text-info { - color: #23c6c8; -} - -.text-warning { - color: #f8ac59; -} - -.text-danger { - color: #ed5565; -} - -.text-muted { - color: #888888; -} - -/* image */ -.img-circle { - border-radius: 50%; -} - -.img-lg { - width: 120px; - height: 120px; -} - -.avatar-upload-preview { - position: absolute; - top: 50%; - transform: translate(50%, -50%); - width: 200px; - height: 200px; - border-radius: 50%; - box-shadow: 0 0 4px #ccc; - overflow: hidden; -} - -/* 拖拽列样式 */ -.sortable-ghost{ - opacity: .8; - color: #fff!important; - background: #42b983!important; -} - -/* 表格右侧工具栏样式 */ -.top-right-btn { - margin-left: auto; -} - -/* 分割面板样式 */ -.splitpanes.default-theme .splitpanes__pane { - background-color: var(--splitpanes-default-bg) !important; -} diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss deleted file mode 100644 index 9a4c487..0000000 --- a/src/assets/styles/sidebar.scss +++ /dev/null @@ -1,236 +0,0 @@ -#app { - - .main-container { - min-height: 100%; - transition: margin-left .28s; - margin-left: $base-sidebar-width; - position: relative; - } - - .sidebarHide { - margin-left: 0!important; - } - - .sidebar-container { - transition: width 0.28s; - width: $base-sidebar-width !important; - height: 100%; - position: fixed; - font-size: 0px; - top: 0; - bottom: 0; - left: 0; - z-index: 1001; - overflow: hidden; - -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); - box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1); - - // 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; - } - - .scrollbar-wrapper { - overflow-x: hidden !important; - } - - .el-scrollbar__bar.is-vertical { - right: 0px; - } - - .el-scrollbar { - height: 100%; - } - - &.has-logo { - .el-scrollbar { - height: calc(100% - 50px); - } - } - - .is-horizontal { - display: none; - } - - a { - display: inline-block; - width: 100%; - overflow: hidden; - } - - .svg-icon { - margin-right: 16px; - } - - .el-menu { - border: none; - height: 100%; - width: 100% !important; - } - - .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 - .sub-menu-title-noDropdown, - .el-sub-menu__title { - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .theme-dark .is-active > .el-sub-menu__title { - color: $base-menu-color-active !important; - } - - & .nest-menu .el-sub-menu>.el-sub-menu__title, - & .el-sub-menu .el-menu-item { - min-width: $base-sidebar-width !important; - - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .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; - - &:hover { - background-color: $base-sub-menu-hover !important; - } - } - } - - .hideSidebar { - .sidebar-container { - width: 54px !important; - } - - .main-container { - margin-left: 54px; - } - - .sub-menu-title-noDropdown { - padding: 0 !important; - position: relative; - - .el-tooltip { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - } - } - - .el-sub-menu { - overflow: hidden; - - &>.el-sub-menu__title { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - - } - } - - .el-menu--collapse { - .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; - visibility: hidden; - display: inline-block; - } - } - } - } - } - - .el-menu--collapse .el-menu .el-sub-menu { - min-width: $base-sidebar-width !important; - } - - // mobile responsive - .mobile { - .main-container { - margin-left: 0px; - } - - .sidebar-container { - transition: transform .28s; - width: $base-sidebar-width !important; - } - - &.hideSidebar { - .sidebar-container { - pointer-events: none; - transition-duration: 0.3s; - transform: translate3d(-$base-sidebar-width, 0, 0); - } - } - } - - .withoutAnimation { - - .main-container, - .sidebar-container { - transition: none; - } - } -} - -// when menu collapsed -.el-menu--vertical { - &>.el-menu { - .svg-icon { - margin-right: 16px; - } - } - - .nest-menu .el-sub-menu>.el-sub-menu__title, - .el-menu-item { - &:hover { - // you can use $sub-menuHover - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - // the scroll bar appears when the sub-menu is too long - >.el-menu--popup { - max-height: 100vh; - overflow-y: auto; - - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } - } -} diff --git a/src/assets/styles/transition.scss b/src/assets/styles/transition.scss deleted file mode 100644 index 073f8c6..0000000 --- a/src/assets/styles/transition.scss +++ /dev/null @@ -1,49 +0,0 @@ -// global transition css - -/* fade */ -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.28s; -} - -.fade-enter, -.fade-leave-active { - opacity: 0; -} - -/* fade-transform */ -.fade-transform--move, -.fade-transform-leave-active, -.fade-transform-enter-active { - transition: all .5s; -} - -.fade-transform-enter { - opacity: 0; - transform: translateX(-30px); -} - -.fade-transform-leave-to { - opacity: 0; - transform: translateX(30px); -} - -/* breadcrumb transition */ -.breadcrumb-enter-active, -.breadcrumb-leave-active { - transition: all .5s; -} - -.breadcrumb-enter, -.breadcrumb-leave-active { - opacity: 0; - transform: translateX(20px); -} - -.breadcrumb-move { - transition: all .5s; -} - -.breadcrumb-leave-active { - position: absolute; -} diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss deleted file mode 100644 index 8764e13..0000000 --- a/src/assets/styles/variables.module.scss +++ /dev/null @@ -1,221 +0,0 @@ -// base color -$blue: #324157; -$light-blue: #333c46; -$red: #C03639; -$pink: #E65D6E; -$green: #30B08F; -$tiffany: #4AB7BD; -$yellow: #FEC171; -$panGreen: #30B08F; - -// 默认主题变量 -$menuText: #bfcbd9; -$menuActiveText: #409eff; -$menuBg: #304156; -$menuHover: #263445; - -// 浅色主题theme-light -$menuLightBg: #ffffff; -$menuLightHover: #f0f1f5; -$menuLightText: #303133; -$menuLightActiveText: #409EFF; - -// 基础变量 -$base-sidebar-width: 200px; -$sideBarWidth: 200px; - -// 菜单暗色变量 -$base-menu-color: #bfcbd9; -$base-menu-color-active: #f4f4f5; -$base-menu-background: #304156; -$base-sub-menu-background: #1f2d3d; -$base-sub-menu-hover: #001528; - -// 组件变量 -$--color-primary: #409EFF; -$--color-success: #67C23A; -$--color-warning: #E6A23C; -$--color-danger: #F56C6C; -$--color-info: #909399; - -:export { - menuText: $menuText; - menuActiveText: $menuActiveText; - menuBg: $menuBg; - menuHover: $menuHover; - menuLightBg: $menuLightBg; - menuLightHover: $menuLightHover; - menuLightText: $menuLightText; - menuLightActiveText: $menuLightActiveText; - sideBarWidth: $sideBarWidth; - // 导出基础颜色 - blue: $blue; - lightBlue: $light-blue; - red: $red; - pink: $pink; - green: $green; - tiffany: $tiffany; - yellow: $yellow; - panGreen: $panGreen; - // 导出组件颜色 - colorPrimary: $--color-primary; - colorSuccess: $--color-success; - colorWarning: $--color-warning; - colorDanger: $--color-danger; - colorInfo: $--color-info; -} - -// CSS变量定义 -:root { - /* 亮色模式变量 */ - --sidebar-bg: #{$menuBg}; - --sidebar-text: #{$menuText}; - --menu-hover: #{$menuHover}; - - --navbar-bg: #ffffff; - --navbar-text: #303133; - - /* splitpanes default-theme 变量 */ - --splitpanes-default-bg: #ffffff; - -} - -// 暗黑模式变量 -html.dark { - /* 默认通用 */ - --el-bg-color: #141414; - --el-bg-color-overlay: #1d1e1f; - --el-text-color-primary: #ffffff; - --el-text-color-regular: #d0d0d0; - --el-border-color: #434343; - --el-border-color-light: #434343; - - /* 侧边栏 */ - --sidebar-bg: #141414; - --sidebar-text: #ffffff; - --menu-hover: #2d2d2d; - --menu-active-text: #{$menuActiveText}; - - /* 顶部导航栏 */ - --navbar-bg: #141414; - --navbar-text: #ffffff; - --navbar-hover: #141414; - - /* 标签栏 */ - --tags-bg: #141414; - --tags-item-bg: #1d1e1f; - --tags-item-border: #303030; - --tags-item-text: #d0d0d0; - --tags-item-hover: #2d2d2d; - --tags-close-hover: #64666a; - - /* splitpanes 组件暗黑模式变量 */ - --splitpanes-bg: #141414; - --splitpanes-border: #303030; - --splitpanes-splitter-bg: #1d1e1f; - --splitpanes-splitter-hover-bg: #2d2d2d; - - /* blockquote 暗黑模式变量 */ - --blockquote-bg: #1d1e1f; - --blockquote-border: #303030; - --blockquote-text: #d0d0d0; - - /* Cron 时间表达式 模式变量 */ - --cron-border: #303030; - - /* splitpanes default-theme 暗黑模式变量 */ - --splitpanes-default-bg: #141414; - - /* 侧边栏菜单覆盖 */ - .sidebar-container { - .el-menu-item, .menu-title { - color: var(--el-text-color-regular); - } - & .theme-dark .nest-menu .el-sub-menu>.el-sub-menu__title, - & .theme-dark .el-sub-menu .el-menu-item { - background-color: var(--el-bg-color) !important; - } - } - - /* 顶部栏栏菜单覆盖 */ - .el-menu--horizontal { - .el-menu-item { - &:not(.is-disabled) { - &:hover, - &:focus { - background-color: var(--navbar-hover) !important; - } - } - } - } - - /* 分割窗格覆盖 */ - .splitpanes { - background-color: var(--splitpanes-bg); - - .splitpanes__pane { - background-color: var(--splitpanes-bg); - border-color: var(--splitpanes-border); - } - - .splitpanes__splitter { - background-color: var(--splitpanes-splitter-bg); - border-color: var(--splitpanes-border); - - &:hover { - background-color: var(--splitpanes-splitter-hover-bg); - } - - &:before, - &:after { - background-color: var(--splitpanes-border); - } - } - } - - /* 表格样式覆盖 */ - .el-table { - --el-table-header-bg-color: var(--el-bg-color-overlay) !important; - --el-table-header-text-color: var(--el-text-color-regular) !important; - --el-table-border-color: var(--el-border-color-light) !important; - --el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important; - - .el-table__header-wrapper, .el-table__fixed-header-wrapper { - th { - background-color: var(--el-bg-color-overlay, #f8f8f9) !important; - color: var(--el-text-color-regular, #515a6e); - } - } - } - - /* 树组件高亮样式覆盖 */ - .el-tree { - .el-tree-node.is-current > .el-tree-node__content { - background-color: var(--el-bg-color-overlay) !important; - color: var(--el-color-primary); - } - - .el-tree-node__content:hover { - background-color: var(--el-bg-color-overlay); - } - } - - /* 下拉菜单样式覆盖 */ - .el-dropdown-menu__item:not(.is-disabled):focus, .el-dropdown-menu__item:not(.is-disabled):hover{ - background-color: var(--navbar-hover) !important; - } - - /* blockquote样式覆盖 */ - blockquote { - background-color: var(--blockquote-bg) !important; - border-left-color: var(--blockquote-border) !important; - color: var(--blockquote-text) !important; - } - - /* 时间表达式标题样式覆盖 */ - .popup-result .title { - background: var(--cron-border); - } - -} - diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue deleted file mode 100644 index c13e5e9..0000000 --- a/src/components/Breadcrumb/index.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/day.vue b/src/components/Crontab/day.vue deleted file mode 100644 index 39263f5..0000000 --- a/src/components/Crontab/day.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/components/Crontab/hour.vue b/src/components/Crontab/hour.vue deleted file mode 100644 index db77835..0000000 --- a/src/components/Crontab/hour.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/index.vue b/src/components/Crontab/index.vue deleted file mode 100644 index 103cf4c..0000000 --- a/src/components/Crontab/index.vue +++ /dev/null @@ -1,309 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/min.vue b/src/components/Crontab/min.vue deleted file mode 100644 index 65f0946..0000000 --- a/src/components/Crontab/min.vue +++ /dev/null @@ -1,126 +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 e561ba4..0000000 --- a/src/components/Crontab/month.vue +++ /dev/null @@ -1,141 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/result.vue b/src/components/Crontab/result.vue deleted file mode 100644 index cbb49ba..0000000 --- a/src/components/Crontab/result.vue +++ /dev/null @@ -1,540 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/Crontab/second.vue b/src/components/Crontab/second.vue deleted file mode 100644 index 15e47a0..0000000 --- a/src/components/Crontab/second.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/week.vue b/src/components/Crontab/week.vue deleted file mode 100644 index e59da22..0000000 --- a/src/components/Crontab/week.vue +++ /dev/null @@ -1,197 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Crontab/year.vue b/src/components/Crontab/year.vue deleted file mode 100644 index 14758ba..0000000 --- a/src/components/Crontab/year.vue +++ /dev/null @@ -1,143 +0,0 @@ - - - - - \ 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 a966437..0000000 --- a/src/components/DictTag/index.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue deleted file mode 100644 index efd0edc..0000000 --- a/src/components/Editor/index.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue deleted file mode 100644 index b77d2a1..0000000 --- a/src/components/FileUpload/index.vue +++ /dev/null @@ -1,256 +0,0 @@ - - - - diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue deleted file mode 100644 index a2b4980..0000000 --- a/src/components/Hamburger/index.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue deleted file mode 100644 index 8fae162..0000000 --- a/src/components/HeaderSearch/index.vue +++ /dev/null @@ -1,252 +0,0 @@ - - - - - diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue deleted file mode 100644 index b527b7d..0000000 --- a/src/components/IconSelect/index.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/IconSelect/requireIcons.js b/src/components/IconSelect/requireIcons.js deleted file mode 100644 index 36b7539..0000000 --- a/src/components/IconSelect/requireIcons.js +++ /dev/null @@ -1,8 +0,0 @@ -let icons = [] -const modules = import.meta.glob('./../../assets/icons/svg/*.svg') -for (const path in modules) { - const p = path.split('assets/icons/svg/')[1].split('.svg')[0] - icons.push(p) -} - -export default icons \ No newline at end of file diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue deleted file mode 100644 index acd05c5..0000000 --- a/src/components/ImagePreview/index.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue deleted file mode 100644 index de87665..0000000 --- a/src/components/ImageUpload/index.vue +++ /dev/null @@ -1,258 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue deleted file mode 100644 index 56569f7..0000000 --- a/src/components/Pagination/index.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/ParentView/index.vue b/src/components/ParentView/index.vue deleted file mode 100644 index 7bf6148..0000000 --- a/src/components/ParentView/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue deleted file mode 100644 index 349363c..0000000 --- a/src/components/RightToolbar/index.vue +++ /dev/null @@ -1,157 +0,0 @@ - - - - - diff --git a/src/components/RuoYi/Doc/index.vue b/src/components/RuoYi/Doc/index.vue deleted file mode 100644 index 8355592..0000000 --- a/src/components/RuoYi/Doc/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/RuoYi/Git/index.vue b/src/components/RuoYi/Git/index.vue deleted file mode 100644 index 648dde1..0000000 --- a/src/components/RuoYi/Git/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue deleted file mode 100644 index 464d976..0000000 --- a/src/components/Screenfull/index.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/SizeSelect/index.vue b/src/components/SizeSelect/index.vue deleted file mode 100644 index 463738c..0000000 --- a/src/components/SizeSelect/index.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue deleted file mode 100644 index 8c101f6..0000000 --- a/src/components/SvgIcon/index.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/src/components/SvgIcon/svgicon.js b/src/components/SvgIcon/svgicon.js deleted file mode 100644 index 89e39b5..0000000 --- a/src/components/SvgIcon/svgicon.js +++ /dev/null @@ -1,10 +0,0 @@ -import * as components from '@element-plus/icons-vue' - -export default { - install: (app) => { - for (const key in components) { - const componentConfig = components[key] - app.component(componentConfig.name, componentConfig) - } - } -} diff --git a/src/components/TopNav/index.vue b/src/components/TopNav/index.vue deleted file mode 100644 index 62028af..0000000 --- a/src/components/TopNav/index.vue +++ /dev/null @@ -1,217 +0,0 @@ - - - - - diff --git a/src/components/iFrame/index.vue b/src/components/iFrame/index.vue deleted file mode 100644 index 0eabaa4..0000000 --- a/src/components/iFrame/index.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue deleted file mode 100644 index 37d17dd..0000000 --- a/src/layout/components/Navbar.vue +++ /dev/null @@ -1,220 +0,0 @@ - - - - - diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue deleted file mode 100644 index 8232e76..0000000 --- a/src/layout/components/Settings/index.vue +++ /dev/null @@ -1,205 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue deleted file mode 100644 index 8011431..0000000 --- a/src/layout/components/Sidebar/Link.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue deleted file mode 100644 index b2f1595..0000000 --- a/src/layout/components/Sidebar/Logo.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue deleted file mode 100644 index 2fa82bb..0000000 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue deleted file mode 100644 index 9acc406..0000000 --- a/src/layout/components/Sidebar/index.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue deleted file mode 100644 index 03be598..0000000 --- a/src/layout/components/TagsView/ScrollPane.vue +++ /dev/null @@ -1,107 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue deleted file mode 100644 index 91e8cfb..0000000 --- a/src/layout/components/TagsView/index.vue +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/layout/components/index.js b/src/layout/components/index.js deleted file mode 100644 index fd57731..0000000 --- a/src/layout/components/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export { default as AppMain } from './AppMain' -export { default as Navbar } from './Navbar' -export { default as Settings } from './Settings' -export { default as TagsView } from './TagsView/index.vue' diff --git a/src/layout/index.vue b/src/layout/index.vue deleted file mode 100644 index fcdc475..0000000 --- a/src/layout/index.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 0994583..0000000 --- a/src/main.js +++ /dev/null @@ -1,82 +0,0 @@ -import { createApp } from 'vue' - -import Cookies from 'js-cookie' - -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import 'element-plus/theme-chalk/dark/css-vars.css' -import locale from 'element-plus/es/locale/lang/zh-cn' - -import '@/assets/styles/index.scss' // global css - -import App from './App' -import store from './store' -import router from './router' -import directive from './directive' // directive - -// 注册指令 -import plugins from './plugins' // plugins -import { download } from '@/utils/request' - -// svg图标 -import 'virtual:svg-icons-register' -import SvgIcon from '@/components/SvgIcon' -import elementIcons from '@/components/SvgIcon/svgicon' - -import './permission' // permission control - -import { useDict } from '@/utils/dict' -import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi' - -// 分页组件 -import Pagination from '@/components/Pagination' -// 自定义表格工具组件 -import RightToolbar from '@/components/RightToolbar' -// 富文本组件 -import Editor from "@/components/Editor" -// 文件上传组件 -import FileUpload from "@/components/FileUpload" -// 图片上传组件 -import ImageUpload from "@/components/ImageUpload" -// 图片预览组件 -import ImagePreview from "@/components/ImagePreview" -// 字典标签组件 -import DictTag from '@/components/DictTag' - -const app = createApp(App) - -// 全局方法挂载 -app.config.globalProperties.useDict = useDict -app.config.globalProperties.download = download -app.config.globalProperties.parseTime = parseTime -app.config.globalProperties.resetForm = resetForm -app.config.globalProperties.handleTree = handleTree -app.config.globalProperties.addDateRange = addDateRange -app.config.globalProperties.selectDictLabel = selectDictLabel -app.config.globalProperties.selectDictLabels = selectDictLabels - -// 全局组件挂载 -app.component('DictTag', DictTag) -app.component('Pagination', Pagination) -app.component('FileUpload', FileUpload) -app.component('ImageUpload', ImageUpload) -app.component('ImagePreview', ImagePreview) -app.component('RightToolbar', RightToolbar) -app.component('Editor', Editor) - -app.use(router) -app.use(store) -app.use(plugins) -app.use(elementIcons) -app.component('svg-icon', SvgIcon) - -directive(app) - -// 使用element-plus 并且设置全局的大小 -app.use(ElementPlus, { - locale: locale, - // 支持 large、default、small - size: Cookies.get('size') || 'default' -}) - -app.mount('#app') diff --git a/src/permission.js b/src/permission.js deleted file mode 100644 index 7e3b5bf..0000000 --- a/src/permission.js +++ /dev/null @@ -1,69 +0,0 @@ -import router from './router' -import { ElMessage } from 'element-plus' -import NProgress from 'nprogress' -import 'nprogress/nprogress.css' -import { getToken } from '@/utils/auth' -import { isHttp, isPathMatch } from '@/utils/validate' -import { isRelogin } from '@/utils/request' -import useUserStore from '@/store/modules/user' -import useSettingsStore from '@/store/modules/settings' -import usePermissionStore from '@/store/modules/permission' - -NProgress.configure({ showSpinner: false }) - -const whiteList = ['/login', '/register'] - -const isWhiteList = (path) => { - return whiteList.some(pattern => isPathMatch(pattern, path)) -} - -router.beforeEach((to, from, next) => { - NProgress.start() - if (getToken()) { - to.meta.title && useSettingsStore().setTitle(to.meta.title) - /* has token*/ - if (to.path === '/login') { - next({ path: '/' }) - NProgress.done() - } else if (isWhiteList(to.path)) { - next() - } else { - if (useUserStore().roles.length === 0) { - isRelogin.show = true - // 判断当前用户是否已拉取完user_info信息 - useUserStore().getInfo().then(() => { - isRelogin.show = false - usePermissionStore().generateRoutes().then(accessRoutes => { - // 根据roles权限生成可访问的路由表 - accessRoutes.forEach(route => { - if (!isHttp(route.path)) { - router.addRoute(route) // 动态添加可访问路由表 - } - }) - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 - }) - }).catch(err => { - useUserStore().logOut().then(() => { - ElMessage.error(err) - next({ path: '/' }) - }) - }) - } else { - next() - } - } - } else { - // 没有token - if (isWhiteList(to.path)) { - // 在免登录白名单,直接进入 - next() - } else { - next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 - NProgress.done() - } - } -}) - -router.afterEach(() => { - NProgress.done() -}) diff --git a/src/plugins/auth.js b/src/plugins/auth.js deleted file mode 100644 index 1354e87..0000000 --- a/src/plugins/auth.js +++ /dev/null @@ -1,60 +0,0 @@ -import useUserStore from '@/store/modules/user' - -function authPermission(permission) { - const all_permission = "*:*:*" - const permissions = useUserStore().permissions - if (permission && permission.length > 0) { - return permissions.some(v => { - return all_permission === v || v === permission - }) - } else { - return false - } -} - -function authRole(role) { - const super_admin = "admin" - const roles = useUserStore().roles - if (role && role.length > 0) { - return roles.some(v => { - return super_admin === v || v === role - }) - } else { - return false - } -} - -export default { - // 验证用户是否具备某权限 - hasPermi(permission) { - return authPermission(permission) - }, - // 验证用户是否含有指定权限,只需包含其中一个 - hasPermiOr(permissions) { - return permissions.some(item => { - return authPermission(item) - }) - }, - // 验证用户是否含有指定权限,必须全部拥有 - hasPermiAnd(permissions) { - return permissions.every(item => { - return authPermission(item) - }) - }, - // 验证用户是否具备某角色 - hasRole(role) { - return authRole(role) - }, - // 验证用户是否含有指定角色,只需包含其中一个 - hasRoleOr(roles) { - return roles.some(item => { - return authRole(item) - }) - }, - // 验证用户是否含有指定角色,必须全部拥有 - hasRoleAnd(roles) { - return roles.every(item => { - return authRole(item) - }) - } -} diff --git a/src/plugins/cache.js b/src/plugins/cache.js deleted file mode 100644 index ea8a53f..0000000 --- a/src/plugins/cache.js +++ /dev/null @@ -1,79 +0,0 @@ -const sessionCache = { - set (key, value) { - if (!sessionStorage) { - return - } - if (key != null && value != null) { - sessionStorage.setItem(key, value) - } - }, - get (key) { - if (!sessionStorage) { - return null - } - if (key == null) { - return null - } - return sessionStorage.getItem(key) - }, - setJSON (key, jsonValue) { - if (jsonValue != null) { - this.set(key, JSON.stringify(jsonValue)) - } - }, - getJSON (key) { - const value = this.get(key) - if (value != null) { - return JSON.parse(value) - } - return null - }, - remove (key) { - sessionStorage.removeItem(key) - } -} -const localCache = { - set (key, value) { - if (!localStorage) { - return - } - if (key != null && value != null) { - localStorage.setItem(key, value) - } - }, - get (key) { - if (!localStorage) { - return null - } - if (key == null) { - return null - } - return localStorage.getItem(key) - }, - setJSON (key, jsonValue) { - if (jsonValue != null) { - this.set(key, JSON.stringify(jsonValue)) - } - }, - getJSON (key) { - const value = this.get(key) - if (value != null) { - return JSON.parse(value) - } - return null - }, - remove (key) { - localStorage.removeItem(key) - } -} - -export default { - /** - * 会话级缓存 - */ - session: sessionCache, - /** - * 本地缓存 - */ - local: localCache -} diff --git a/src/plugins/download.js b/src/plugins/download.js deleted file mode 100644 index e83e43c..0000000 --- a/src/plugins/download.js +++ /dev/null @@ -1,79 +0,0 @@ -import axios from 'axios' -import { ElLoading, ElMessage } from 'element-plus' -import { saveAs } from 'file-saver' -import { getToken } from '@/utils/auth' -import errorCode from '@/utils/errorCode' -import { blobValidate } from '@/utils/ruoyi' - -const baseURL = import.meta.env.VITE_APP_BASE_API -let downloadLoadingInstance - -export default { - name(name, isDelete = true) { - var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete - axios({ - method: 'get', - url: url, - responseType: 'blob', - headers: { 'Authorization': 'Bearer ' + getToken() } - }).then((res) => { - const isBlob = blobValidate(res.data) - if (isBlob) { - const blob = new Blob([res.data]) - this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) - } else { - this.printErrMsg(res.data) - } - }) - }, - resource(resource) { - var url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource) - axios({ - method: 'get', - url: url, - responseType: 'blob', - headers: { 'Authorization': 'Bearer ' + getToken() } - }).then((res) => { - const isBlob = blobValidate(res.data) - if (isBlob) { - const blob = new Blob([res.data]) - this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) - } else { - this.printErrMsg(res.data) - } - }) - }, - zip(url, name) { - var url = baseURL + url - downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", }) - axios({ - method: 'get', - url: url, - responseType: 'blob', - headers: { 'Authorization': 'Bearer ' + getToken() } - }).then((res) => { - const isBlob = blobValidate(res.data) - if (isBlob) { - const blob = new Blob([res.data], { type: 'application/zip' }) - this.saveAs(blob, name) - } else { - this.printErrMsg(res.data) - } - downloadLoadingInstance.close() - }).catch((r) => { - console.error(r) - ElMessage.error('下载文件出现错误,请联系管理员!') - downloadLoadingInstance.close() - }) - }, - saveAs(text, name, opts) { - saveAs(text, name, opts) - }, - async printErrMsg(data) { - const resText = await data.text() - const rspObj = JSON.parse(resText) - const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] - ElMessage.error(errMsg) - } -} - diff --git a/src/plugins/index.js b/src/plugins/index.js deleted file mode 100644 index 47d1b41..0000000 --- a/src/plugins/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import tab from './tab' -import auth from './auth' -import cache from './cache' -import modal from './modal' -import download from './download' - -export default function installPlugins(app){ - // 页签操作 - app.config.globalProperties.$tab = tab - // 认证对象 - app.config.globalProperties.$auth = auth - // 缓存对象 - app.config.globalProperties.$cache = cache - // 模态框对象 - app.config.globalProperties.$modal = modal - // 下载文件 - app.config.globalProperties.$download = download -} diff --git a/src/plugins/modal.js b/src/plugins/modal.js deleted file mode 100644 index 01d6149..0000000 --- a/src/plugins/modal.js +++ /dev/null @@ -1,82 +0,0 @@ -import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus' - -let loadingInstance - -export default { - // 消息提示 - msg(content) { - ElMessage.info(content) - }, - // 错误消息 - msgError(content) { - ElMessage.error(content) - }, - // 成功消息 - msgSuccess(content) { - ElMessage.success(content) - }, - // 警告消息 - msgWarning(content) { - ElMessage.warning(content) - }, - // 弹出提示 - alert(content) { - ElMessageBox.alert(content, "系统提示") - }, - // 错误提示 - alertError(content) { - ElMessageBox.alert(content, "系统提示", { type: 'error' }) - }, - // 成功提示 - alertSuccess(content) { - ElMessageBox.alert(content, "系统提示", { type: 'success' }) - }, - // 警告提示 - alertWarning(content) { - ElMessageBox.alert(content, "系统提示", { type: 'warning' }) - }, - // 通知提示 - notify(content) { - ElNotification.info(content) - }, - // 错误通知 - notifyError(content) { - ElNotification.error(content) - }, - // 成功通知 - notifySuccess(content) { - ElNotification.success(content) - }, - // 警告通知 - notifyWarning(content) { - ElNotification.warning(content) - }, - // 确认窗体 - confirm(content) { - return ElMessageBox.confirm(content, "系统提示", { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: "warning", - }) - }, - // 提交内容 - prompt(content) { - return ElMessageBox.prompt(content, "系统提示", { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: "warning", - }) - }, - // 打开遮罩层 - loading(content) { - loadingInstance = ElLoading.service({ - lock: true, - text: content, - background: "rgba(0, 0, 0, 0.7)", - }) - }, - // 关闭遮罩层 - closeLoading() { - loadingInstance.close() - } -} diff --git a/src/plugins/tab.js b/src/plugins/tab.js deleted file mode 100644 index 578607c..0000000 --- a/src/plugins/tab.js +++ /dev/null @@ -1,71 +0,0 @@ -import useTagsViewStore from '@/store/modules/tagsView' -import router from '@/router' - -export default { - // 刷新当前tab页签 - refreshPage(obj) { - const { path, query, matched } = router.currentRoute.value - if (obj === undefined) { - matched.forEach((m) => { - if (m.components && m.components.default && m.components.default.name) { - if (!['Layout', 'ParentView'].includes(m.components.default.name)) { - obj = { name: m.components.default.name, path: path, query: query } - } - } - }) - } - return useTagsViewStore().delCachedView(obj).then(() => { - const { path, query } = obj - router.replace({ - path: '/redirect' + path, - query: query - }) - }) - }, - // 关闭当前tab页签,打开新页签 - closeOpenPage(obj) { - useTagsViewStore().delView(router.currentRoute.value) - if (obj !== undefined) { - return router.push(obj) - } - }, - // 关闭指定tab页签 - closePage(obj) { - if (obj === undefined) { - return useTagsViewStore().delView(router.currentRoute.value).then(({ visitedViews }) => { - const latestView = visitedViews.slice(-1)[0] - if (latestView) { - return router.push(latestView.fullPath) - } - return router.push('/') - }) - } - return useTagsViewStore().delView(obj) - }, - // 关闭所有tab页签 - closeAllPage() { - return useTagsViewStore().delAllViews() - }, - // 关闭左侧tab页签 - closeLeftPage(obj) { - return useTagsViewStore().delLeftTags(obj || router.currentRoute.value) - }, - // 关闭右侧tab页签 - closeRightPage(obj) { - return useTagsViewStore().delRightTags(obj || router.currentRoute.value) - }, - // 关闭其他tab页签 - closeOtherPage(obj) { - return useTagsViewStore().delOthersViews(obj || router.currentRoute.value) - }, - // 打开tab页签 - openPage(title, url, params) { - const obj = { path: url, meta: { title: title } } - useTagsViewStore().addView(obj) - return router.push({ path: url, query: params }) - }, - // 修改tab页签 - updatePage(obj) { - return useTagsViewStore().updateVisitedView(obj) - } -} diff --git a/src/router/index.js b/src/router/index.js deleted file mode 100644 index 627cc33..0000000 --- a/src/router/index.js +++ /dev/null @@ -1,174 +0,0 @@ -import { createWebHistory, createRouter } from 'vue-router' -/* Layout */ -import Layout from '@/layout' - -/** - * Note: 路由配置项 - * - * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1 - * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 - * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面 - * // 若你想不管路由下面的 children 声明的个数都显示你的根路由 - * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由 - * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 - * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题 - * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数 - * roles: ['admin', 'common'] // 访问路由的角色权限 - * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限 - * meta : { - noCache: true // 如果设置为true,则不会被 缓存(默认 false) - title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字 - icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg - breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示 - activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。 - } - */ - -// 公共路由 -export const constantRoutes = [ - { - path: '/redirect', - component: Layout, - hidden: true, - children: [ - { - path: '/redirect/:path(.*)', - component: () => import('@/views/redirect/index.vue') - } - ] - }, - { - path: '/login', - component: () => import('@/views/login'), - hidden: true - }, - { - path: '/register', - component: () => import('@/views/register'), - hidden: true - }, - { - path: "/:pathMatch(.*)*", - component: () => import('@/views/error/404'), - hidden: true - }, - { - path: '/401', - component: () => import('@/views/error/401'), - hidden: true - }, - { - path: '', - component: Layout, - redirect: '/index', - children: [ - { - path: '/index', - component: () => import('@/views/index'), - name: 'Index', - meta: { title: '首页', icon: 'dashboard', affix: true } - } - ] - }, - { - path: '/user', - component: Layout, - hidden: true, - redirect: 'noredirect', - children: [ - { - path: 'profile', - component: () => import('@/views/system/user/profile/index'), - name: 'Profile', - meta: { title: '个人中心', icon: 'user' } - } - ] - } -] - -// 动态路由,基于用户权限动态去加载 -export const dynamicRoutes = [ - { - path: '/system/user-auth', - component: Layout, - hidden: true, - permissions: ['system:user:edit'], - children: [ - { - path: 'role/:userId(\\d+)', - component: () => import('@/views/system/user/authRole'), - name: 'AuthRole', - meta: { title: '分配角色', activeMenu: '/system/user' } - } - ] - }, - { - path: '/system/role-auth', - component: Layout, - hidden: true, - permissions: ['system:role:edit'], - children: [ - { - path: 'user/:roleId(\\d+)', - component: () => import('@/views/system/role/authUser'), - name: 'AuthUser', - meta: { title: '分配用户', activeMenu: '/system/role' } - } - ] - }, - { - path: '/system/dict-data', - component: Layout, - hidden: true, - permissions: ['system:dict:list'], - children: [ - { - path: 'index/:dictId(\\d+)', - component: () => import('@/views/system/dict/data'), - name: 'Data', - meta: { title: '字典数据', activeMenu: '/system/dict' } - } - ] - }, - { - path: '/monitor/job-log', - component: Layout, - hidden: true, - permissions: ['monitor:job:list'], - children: [ - { - path: 'index/:jobId(\\d+)', - component: () => import('@/views/monitor/job/log'), - name: 'JobLog', - meta: { title: '调度日志', activeMenu: '/monitor/job' } - } - ] - }, - { - path: '/tool/gen-edit', - component: Layout, - hidden: true, - permissions: ['tool:gen:edit'], - children: [ - { - path: 'index/:tableId(\\d+)', - component: () => import('@/views/tool/gen/editTable'), - name: 'GenEdit', - meta: { title: '修改生成配置', activeMenu: '/tool/gen' } - } - ] - } -] - -const router = createRouter({ - history: createWebHistory(), - routes: constantRoutes, - scrollBehavior(to, from, savedPosition) { - if (savedPosition) { - return savedPosition - } - return { top: 0 } - }, -}) - -export default router diff --git a/src/settings.js b/src/settings.js deleted file mode 100644 index d67ff12..0000000 --- a/src/settings.js +++ /dev/null @@ -1,49 +0,0 @@ -export default { - /** - * 网页标题 - */ - title: import.meta.env.VITE_APP_TITLE, - - /** - * 侧边栏主题 深色主题theme-dark,浅色主题theme-light - */ - sideTheme: 'theme-dark', - - /** - * 是否系统布局配置 - */ - showSettings: true, - - /** - * 是否显示顶部导航 - */ - topNav: false, - - /** - * 是否显示 tagsView - */ - tagsView: true, - - /** - * 是否固定头部 - */ - fixedHeader: false, - - /** - * 是否显示logo - */ - sidebarLogo: true, - - /** - * 是否显示动态标题 - */ - dynamicTitle: false, - - /** - * @type {string | array} 'production' | ['production', 'development'] - * @description Need show err logs component. - * The default is only used in the production env - * If you want to also use it in dev, you can pass ['production', 'development'] - */ - errorLog: 'production' -} diff --git a/src/store/index.js b/src/store/index.js deleted file mode 100644 index f10f389..0000000 --- a/src/store/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const store = createPinia() - -export default store \ No newline at end of file diff --git a/src/store/modules/app.js b/src/store/modules/app.js deleted file mode 100644 index 9a92dd1..0000000 --- a/src/store/modules/app.js +++ /dev/null @@ -1,46 +0,0 @@ -import Cookies from 'js-cookie' - -const useAppStore = defineStore( - 'app', - { - state: () => ({ - sidebar: { - opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, - withoutAnimation: false, - hide: false - }, - device: 'desktop', - size: Cookies.get('size') || 'default' - }), - actions: { - toggleSideBar(withoutAnimation) { - if (this.sidebar.hide) { - return false - } - this.sidebar.opened = !this.sidebar.opened - this.sidebar.withoutAnimation = withoutAnimation - if (this.sidebar.opened) { - Cookies.set('sidebarStatus', 1) - } else { - Cookies.set('sidebarStatus', 0) - } - }, - closeSideBar({ withoutAnimation }) { - Cookies.set('sidebarStatus', 0) - this.sidebar.opened = false - this.sidebar.withoutAnimation = withoutAnimation - }, - toggleDevice(device) { - this.device = device - }, - setSize(size) { - this.size = size - Cookies.set('size', size) - }, - toggleSideBarHide(status) { - this.sidebar.hide = status - } - } - }) - -export default useAppStore diff --git a/src/store/modules/dict.js b/src/store/modules/dict.js deleted file mode 100644 index e58e4ec..0000000 --- a/src/store/modules/dict.js +++ /dev/null @@ -1,57 +0,0 @@ -const useDictStore = defineStore( - 'dict', - { - state: () => ({ - dict: new Array() - }), - actions: { - // 获取字典 - getDict(_key) { - if (_key == null && _key == "") { - return null - } - try { - for (let i = 0; i < this.dict.length; i++) { - if (this.dict[i].key == _key) { - return this.dict[i].value - } - } - } catch (e) { - return null - } - }, - // 设置字典 - setDict(_key, value) { - if (_key !== null && _key !== "") { - this.dict.push({ - key: _key, - value: value - }) - } - }, - // 删除字典 - removeDict(_key) { - var bln = false - try { - for (let i = 0; i < this.dict.length; i++) { - if (this.dict[i].key == _key) { - this.dict.splice(i, 1) - return true - } - } - } catch (e) { - bln = false - } - return bln - }, - // 清空字典 - cleanDict() { - this.dict = new Array() - }, - // 初始字典 - initDict() { - } - } - }) - -export default useDictStore diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js deleted file mode 100644 index 36da015..0000000 --- a/src/store/modules/permission.js +++ /dev/null @@ -1,127 +0,0 @@ -import auth from '@/plugins/auth' -import router, { constantRoutes, dynamicRoutes } from '@/router' -import { getRouters } from '@/api/menu' -import Layout from '@/layout/index' -import ParentView from '@/components/ParentView' -import InnerLink from '@/layout/components/InnerLink' - -// 匹配views里面所有的.vue文件 -const modules = import.meta.glob('./../../views/**/*.vue') - -const usePermissionStore = defineStore( - 'permission', - { - state: () => ({ - routes: [], - addRoutes: [], - defaultRoutes: [], - topbarRouters: [], - sidebarRouters: [] - }), - actions: { - setRoutes(routes) { - this.addRoutes = routes - this.routes = constantRoutes.concat(routes) - }, - setDefaultRoutes(routes) { - this.defaultRoutes = constantRoutes.concat(routes) - }, - setTopbarRoutes(routes) { - this.topbarRouters = routes - }, - setSidebarRouters(routes) { - this.sidebarRouters = routes - }, - generateRoutes(roles) { - return new Promise(resolve => { - // 向后端请求路由数据 - getRouters().then(res => { - const sdata = JSON.parse(JSON.stringify(res.data)) - const rdata = JSON.parse(JSON.stringify(res.data)) - const defaultData = JSON.parse(JSON.stringify(res.data)) - const sidebarRoutes = filterAsyncRouter(sdata) - const rewriteRoutes = filterAsyncRouter(rdata, false, true) - const defaultRoutes = filterAsyncRouter(defaultData) - const asyncRoutes = filterDynamicRoutes(dynamicRoutes) - asyncRoutes.forEach(route => { router.addRoute(route) }) - this.setRoutes(rewriteRoutes) - this.setSidebarRouters(constantRoutes.concat(sidebarRoutes)) - this.setDefaultRoutes(sidebarRoutes) - this.setTopbarRoutes(defaultRoutes) - resolve(rewriteRoutes) - }) - }) - } - } - }) - -// 遍历后台传来的路由字符串,转换为组件对象 -function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { - return asyncRouterMap.filter(route => { - if (type && route.children) { - route.children = filterChildren(route.children) - } - if (route.component) { - // Layout ParentView 组件特殊处理 - if (route.component === 'Layout') { - route.component = Layout - } else if (route.component === 'ParentView') { - route.component = ParentView - } else if (route.component === 'InnerLink') { - route.component = InnerLink - } else { - route.component = loadView(route.component) - } - } - if (route.children != null && route.children && route.children.length) { - route.children = filterAsyncRouter(route.children, route, type) - } else { - delete route['children'] - delete route['redirect'] - } - return true - }) -} - -function filterChildren(childrenMap, lastRouter = false) { - var children = [] - childrenMap.forEach(el => { - el.path = lastRouter ? lastRouter.path + '/' + el.path : el.path - if (el.children && el.children.length && el.component === 'ParentView') { - children = children.concat(filterChildren(el.children, el)) - } else { - children.push(el) - } - }) - return children -} - -// 动态路由遍历,验证是否具备权限 -export function filterDynamicRoutes(routes) { - const res = [] - routes.forEach(route => { - if (route.permissions) { - if (auth.hasPermiOr(route.permissions)) { - res.push(route) - } - } else if (route.roles) { - if (auth.hasRoleOr(route.roles)) { - res.push(route) - } - } - }) - return res -} - -export const loadView = (view) => { - let res - for (const path in modules) { - const dir = path.split('views/')[1].split('.vue')[0] - if (dir === view) { - res = () => modules[path]() - } - } - return res -} - -export default usePermissionStore diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js deleted file mode 100644 index 194d678..0000000 --- a/src/store/modules/settings.js +++ /dev/null @@ -1,48 +0,0 @@ -import defaultSettings from '@/settings' -import { useDark, useToggle } from '@vueuse/core' -import { useDynamicTitle } from '@/utils/dynamicTitle' - -const isDark = useDark() -const toggleDark = useToggle(isDark) - -const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings - -const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' - -const useSettingsStore = defineStore( - 'settings', - { - state: () => ({ - title: '', - theme: storageSetting.theme || '#409EFF', - sideTheme: storageSetting.sideTheme || sideTheme, - showSettings: showSettings, - topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav, - tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView, - fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader, - sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo, - dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle, - isDark: isDark.value - }), - actions: { - // 修改布局设置 - changeSetting(data) { - const { key, value } = data - if (this.hasOwnProperty(key)) { - this[key] = value - } - }, - // 设置网页标题 - setTitle(title) { - this.title = title - useDynamicTitle() - }, - // 切换暗黑模式 - toggleTheme() { - this.isDark = !this.isDark - toggleDark() - } - } - }) - -export default useSettingsStore diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js deleted file mode 100644 index 9d07f33..0000000 --- a/src/store/modules/tagsView.js +++ /dev/null @@ -1,182 +0,0 @@ -const useTagsViewStore = defineStore( - 'tags-view', - { - state: () => ({ - visitedViews: [], - cachedViews: [], - iframeViews: [] - }), - actions: { - addView(view) { - this.addVisitedView(view) - this.addCachedView(view) - }, - addIframeView(view) { - if (this.iframeViews.some(v => v.path === view.path)) return - this.iframeViews.push( - Object.assign({}, view, { - title: view.meta.title || 'no-name' - }) - ) - }, - addVisitedView(view) { - if (this.visitedViews.some(v => v.path === view.path)) return - this.visitedViews.push( - Object.assign({}, view, { - title: view.meta.title || 'no-name' - }) - ) - }, - addCachedView(view) { - if (this.cachedViews.includes(view.name)) return - if (!view.meta.noCache) { - this.cachedViews.push(view.name) - } - }, - delView(view) { - return new Promise(resolve => { - this.delVisitedView(view) - this.delCachedView(view) - resolve({ - visitedViews: [...this.visitedViews], - cachedViews: [...this.cachedViews] - }) - }) - }, - delVisitedView(view) { - return new Promise(resolve => { - for (const [i, v] of this.visitedViews.entries()) { - if (v.path === view.path) { - this.visitedViews.splice(i, 1) - break - } - } - this.iframeViews = this.iframeViews.filter(item => item.path !== view.path) - resolve([...this.visitedViews]) - }) - }, - delIframeView(view) { - return new Promise(resolve => { - this.iframeViews = this.iframeViews.filter(item => item.path !== view.path) - resolve([...this.iframeViews]) - }) - }, - delCachedView(view) { - return new Promise(resolve => { - const index = this.cachedViews.indexOf(view.name) - index > -1 && this.cachedViews.splice(index, 1) - resolve([...this.cachedViews]) - }) - }, - delOthersViews(view) { - return new Promise(resolve => { - this.delOthersVisitedViews(view) - this.delOthersCachedViews(view) - resolve({ - visitedViews: [...this.visitedViews], - cachedViews: [...this.cachedViews] - }) - }) - }, - delOthersVisitedViews(view) { - return new Promise(resolve => { - this.visitedViews = this.visitedViews.filter(v => { - return v.meta.affix || v.path === view.path - }) - this.iframeViews = this.iframeViews.filter(item => item.path === view.path) - resolve([...this.visitedViews]) - }) - }, - delOthersCachedViews(view) { - return new Promise(resolve => { - const index = this.cachedViews.indexOf(view.name) - if (index > -1) { - this.cachedViews = this.cachedViews.slice(index, index + 1) - } else { - this.cachedViews = [] - } - resolve([...this.cachedViews]) - }) - }, - delAllViews(view) { - return new Promise(resolve => { - this.delAllVisitedViews(view) - this.delAllCachedViews(view) - resolve({ - visitedViews: [...this.visitedViews], - cachedViews: [...this.cachedViews] - }) - }) - }, - delAllVisitedViews(view) { - return new Promise(resolve => { - const affixTags = this.visitedViews.filter(tag => tag.meta.affix) - this.visitedViews = affixTags - this.iframeViews = [] - resolve([...this.visitedViews]) - }) - }, - delAllCachedViews(view) { - return new Promise(resolve => { - this.cachedViews = [] - resolve([...this.cachedViews]) - }) - }, - updateVisitedView(view) { - for (let v of this.visitedViews) { - if (v.path === view.path) { - v = Object.assign(v, view) - break - } - } - }, - delRightTags(view) { - return new Promise(resolve => { - const index = this.visitedViews.findIndex(v => v.path === view.path) - if (index === -1) { - return - } - this.visitedViews = this.visitedViews.filter((item, idx) => { - if (idx <= index || (item.meta && item.meta.affix)) { - return true - } - const i = this.cachedViews.indexOf(item.name) - if (i > -1) { - this.cachedViews.splice(i, 1) - } - if(item.meta.link) { - const fi = this.iframeViews.findIndex(v => v.path === item.path) - this.iframeViews.splice(fi, 1) - } - return false - }) - resolve([...this.visitedViews]) - }) - }, - delLeftTags(view) { - return new Promise(resolve => { - const index = this.visitedViews.findIndex(v => v.path === view.path) - if (index === -1) { - return - } - this.visitedViews = this.visitedViews.filter((item, idx) => { - if (idx >= index || (item.meta && item.meta.affix)) { - return true - } - const i = this.cachedViews.indexOf(item.name) - if (i > -1) { - this.cachedViews.splice(i, 1) - } - if(item.meta.link) { - const fi = this.iframeViews.findIndex(v => v.path === item.path) - this.iframeViews.splice(fi, 1) - } - return false - }) - resolve([...this.visitedViews]) - }) - } - } - }) - -export default useTagsViewStore diff --git a/src/store/modules/user.js b/src/store/modules/user.js deleted file mode 100644 index 2c6398f..0000000 --- a/src/store/modules/user.js +++ /dev/null @@ -1,77 +0,0 @@ -import { login, logout, getInfo } from '@/api/login' -import { getToken, setToken, removeToken } from '@/utils/auth' -import { isHttp, isEmpty } from "@/utils/validate" -import defAva from '@/assets/images/profile.jpg' - -const useUserStore = defineStore( - 'user', - { - state: () => ({ - token: getToken(), - id: '', - name: '', - nickName: '', - avatar: '', - roles: [], - permissions: [] - }), - actions: { - // 登录 - login(userInfo) { - const username = userInfo.username.trim() - const password = userInfo.password - const code = userInfo.code - const uuid = userInfo.uuid - return new Promise((resolve, reject) => { - login(username, password, code, uuid).then(res => { - setToken(res.token) - this.token = res.token - resolve() - }).catch(error => { - reject(error) - }) - }) - }, - // 获取用户信息 - getInfo() { - return new Promise((resolve, reject) => { - getInfo().then(res => { - const user = res.user - let avatar = user.avatar || "" - if (!isHttp(avatar)) { - avatar = (isEmpty(avatar)) ? defAva : import.meta.env.VITE_APP_BASE_API + avatar - } - if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 - this.roles = res.roles - this.permissions = res.permissions - } else { - this.roles = ['ROLE_DEFAULT'] - } - this.id = user.userId - this.name = user.userName - this.nickName = user.nickName - this.avatar = avatar - resolve(res) - }).catch(error => { - reject(error) - }) - }) - }, - // 退出系统 - logOut() { - return new Promise((resolve, reject) => { - logout(this.token).then(() => { - this.token = '' - this.roles = [] - this.permissions = [] - removeToken() - resolve() - }).catch(error => { - reject(error) - }) - }) - } - } - }) - -export default useUserStore diff --git a/src/utils/auth.js b/src/utils/auth.js deleted file mode 100644 index 08a43d6..0000000 --- a/src/utils/auth.js +++ /dev/null @@ -1,15 +0,0 @@ -import Cookies from 'js-cookie' - -const TokenKey = 'Admin-Token' - -export function getToken() { - return Cookies.get(TokenKey) -} - -export function setToken(token) { - return Cookies.set(TokenKey, token) -} - -export function removeToken() { - return Cookies.remove(TokenKey) -} diff --git a/src/utils/dict.js b/src/utils/dict.js deleted file mode 100644 index b154f72..0000000 --- a/src/utils/dict.js +++ /dev/null @@ -1,24 +0,0 @@ -import useDictStore from '@/store/modules/dict' -import { getDicts } from '@/api/system/dict/data' - -/** - * 获取字典数据 - */ -export function useDict(...args) { - const res = ref({}) - return (() => { - args.forEach((dictType, index) => { - res.value[dictType] = [] - const dicts = useDictStore().getDict(dictType) - if (dicts) { - res.value[dictType] = dicts - } else { - getDicts(dictType).then(resp => { - res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) - useDictStore().setDict(dictType, res.value[dictType]) - }) - } - }) - return toRefs(res.value) - })() -} \ No newline at end of file diff --git a/src/utils/dynamicTitle.js b/src/utils/dynamicTitle.js deleted file mode 100644 index ca4aa5d..0000000 --- a/src/utils/dynamicTitle.js +++ /dev/null @@ -1,14 +0,0 @@ -import defaultSettings from '@/settings' -import useSettingsStore from '@/store/modules/settings' - -/** - * 动态修改标题 - */ -export function useDynamicTitle() { - const settingsStore = useSettingsStore() - if (settingsStore.dynamicTitle) { - document.title = settingsStore.title + ' - ' + defaultSettings.title - } else { - document.title = defaultSettings.title - } -} \ No newline at end of file diff --git a/src/utils/errorCode.js b/src/utils/errorCode.js deleted file mode 100644 index d2111ee..0000000 --- a/src/utils/errorCode.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - '401': '认证失败,无法访问系统资源', - '403': '当前操作没有权限', - '404': '访问资源不存在', - 'default': '系统未知错误,请反馈给管理员' -} diff --git a/src/utils/generator/config.js b/src/utils/generator/config.js deleted file mode 100644 index 449715f..0000000 --- a/src/utils/generator/config.js +++ /dev/null @@ -1,452 +0,0 @@ -export const formConf = { - formRef: 'formRef', - formModel: 'formData', - size: 'default', - labelPosition: 'right', - labelWidth: 100, - formRules: 'rules', - gutter: 15, - disabled: false, - span: 24, - formBtns: true, -} - -export const inputComponents = [ - { - label: '单行文本', - tag: 'el-input', - tagIcon: 'input', - type: 'text', - placeholder: '请输入', - defaultValue: undefined, - span: 24, - labelWidth: null, - style: { width: '100%' }, - clearable: true, - prepend: '', - append: '', - 'prefix-icon': '', - 'suffix-icon': '', - maxlength: null, - 'show-word-limit': false, - readonly: false, - disabled: false, - required: true, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/input', - }, - { - label: '多行文本', - tag: 'el-input', - tagIcon: 'textarea', - type: 'textarea', - placeholder: '请输入', - defaultValue: undefined, - span: 24, - labelWidth: null, - autosize: { - minRows: 4, - maxRows: 4, - }, - style: { width: '100%' }, - maxlength: null, - 'show-word-limit': false, - readonly: false, - disabled: false, - required: true, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/input', - }, - { - label: '密码', - tag: 'el-input', - tagIcon: 'password', - type: 'password', - placeholder: '请输入', - defaultValue: undefined, - span: 24, - 'show-password': true, - labelWidth: null, - style: { width: '100%' }, - clearable: true, - prepend: '', - append: '', - 'prefix-icon': '', - 'suffix-icon': '', - maxlength: null, - 'show-word-limit': false, - readonly: false, - disabled: false, - required: true, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/input', - }, - { - label: '计数器', - tag: 'el-input-number', - tagIcon: 'number', - placeholder: '', - defaultValue: undefined, - span: 24, - labelWidth: null, - min: undefined, - max: undefined, - step: undefined, - 'step-strictly': false, - precision: undefined, - 'controls-position': '', - disabled: false, - required: true, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/input-number', - }, -] - -export const selectComponents = [ - { - label: '下拉选择', - tag: 'el-select', - tagIcon: 'select', - placeholder: '请选择', - defaultValue: undefined, - span: 24, - labelWidth: null, - style: { width: '100%' }, - clearable: true, - disabled: false, - required: true, - filterable: false, - multiple: false, - options: [ - { - label: '选项一', - value: 1, - }, - { - label: '选项二', - value: 2, - }, - ], - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/select', - }, - { - label: '级联选择', - tag: 'el-cascader', - tagIcon: 'cascader', - placeholder: '请选择', - defaultValue: [], - span: 24, - labelWidth: null, - style: { width: '100%' }, - props: { - props: { - multiple: false, - }, - }, - 'show-all-levels': true, - disabled: false, - clearable: true, - filterable: false, - required: true, - options: [ - { - id: 1, - value: 1, - label: '选项1', - children: [ - { - id: 2, - value: 2, - label: '选项1-1', - }, - ], - }, - ], - dataType: 'dynamic', - labelKey: 'label', - valueKey: 'value', - childrenKey: 'children', - separator: '/', - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/cascader', - }, - { - label: '单选框组', - tag: 'el-radio-group', - tagIcon: 'radio', - defaultValue: 0, - span: 24, - labelWidth: null, - style: {}, - optionType: 'default', - border: false, - size: 'default', - disabled: false, - required: true, - options: [ - { - label: '选项一', - value: 1, - }, - { - label: '选项二', - value: 2, - }, - ], - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/radio', - }, - { - label: '多选框组', - tag: 'el-checkbox-group', - tagIcon: 'checkbox', - defaultValue: [], - span: 24, - labelWidth: null, - style: {}, - optionType: 'default', - border: false, - size: 'default', - disabled: false, - required: true, - options: [ - { - label: '选项一', - value: 1, - }, - { - label: '选项二', - value: 2, - }, - ], - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/checkbox', - }, - { - label: '开关', - tag: 'el-switch', - tagIcon: 'switch', - defaultValue: false, - span: 24, - labelWidth: null, - style: {}, - disabled: false, - required: true, - 'active-text': '', - 'inactive-text': '', - 'active-color': null, - 'inactive-color': null, - 'active-value': true, - 'inactive-value': false, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/switch', - }, - { - label: '滑块', - tag: 'el-slider', - tagIcon: 'slider', - defaultValue: null, - span: 24, - labelWidth: null, - disabled: false, - required: true, - min: 0, - max: 100, - step: 1, - 'show-stops': false, - range: false, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/slider', - }, - { - label: '时间选择', - tag: 'el-time-picker', - tagIcon: 'time', - placeholder: '请选择', - defaultValue: '', - span: 24, - labelWidth: null, - style: { width: '100%' }, - disabled: false, - clearable: true, - required: true, - format: 'HH:mm:ss', - 'value-format': 'HH:mm:ss', - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/time-picker', - }, - { - label: '时间范围', - tag: 'el-time-picker', - tagIcon: 'time-range', - defaultValue: null, - span: 24, - labelWidth: null, - style: { width: '100%' }, - disabled: false, - clearable: true, - required: true, - 'is-range': true, - 'range-separator': '至', - 'start-placeholder': '开始时间', - 'end-placeholder': '结束时间', - format: 'HH:mm:ss', - 'value-format': 'HH:mm:ss', - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/time-picker', - }, - { - label: '日期选择', - tag: 'el-date-picker', - tagIcon: 'date', - placeholder: '请选择', - defaultValue: null, - type: 'date', - span: 24, - labelWidth: null, - style: { width: '100%' }, - disabled: false, - clearable: true, - required: true, - format: 'YYYY-MM-DD', - 'value-format': 'YYYY-MM-DD', - readonly: false, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/date-picker', - }, - { - label: '日期范围', - tag: 'el-date-picker', - tagIcon: 'date-range', - defaultValue: null, - span: 24, - labelWidth: null, - style: { width: '100%' }, - type: 'daterange', - 'range-separator': '至', - 'start-placeholder': '开始日期', - 'end-placeholder': '结束日期', - disabled: false, - clearable: true, - required: true, - format: 'YYYY-MM-DD', - 'value-format': 'YYYY-MM-DD', - readonly: false, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/date-picker', - }, - { - label: '评分', - tag: 'el-rate', - tagIcon: 'rate', - defaultValue: 0, - span: 24, - labelWidth: null, - style: {}, - max: 5, - 'allow-half': false, - 'show-text': false, - 'show-score': false, - disabled: false, - required: true, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/rate', - }, - { - label: '颜色选择', - tag: 'el-color-picker', - tagIcon: 'color', - defaultValue: null, - labelWidth: null, - 'show-alpha': false, - 'color-format': '', - disabled: false, - required: true, - size: 'default', - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/color-picker', - }, - { - label: '上传', - tag: 'el-upload', - tagIcon: 'upload', - action: 'https://jsonplaceholder.typicode.com/posts/', - defaultValue: null, - labelWidth: null, - disabled: false, - required: true, - accept: '', - name: 'file', - 'auto-upload': true, - showTip: false, - buttonText: '点击上传', - fileSize: 2, - sizeUnit: 'MB', - 'list-type': 'text', - multiple: false, - regList: [], - changeTag: true, - document: 'https://element-plus.org/zh-CN/component/upload', - tip: '只能上传不超过 2MB 的文件', - style: { width: '100%' }, - }, -] - -export const layoutComponents = [ - { - layout: 'rowFormItem', - tagIcon: 'row', - type: 'default', - justify: 'start', - align: 'top', - label: '行容器', - layoutTree: true, - children: [], - document: 'https://element-plus.org/zh-CN/component/layout', - }, - { - layout: 'colFormItem', - label: '按钮', - changeTag: true, - labelWidth: null, - tag: 'el-button', - tagIcon: 'button', - span: 24, - default: '主要按钮', - type: 'primary', - icon: 'Search', - size: 'default', - disabled: false, - document: 'https://element-plus.org/zh-CN/component/button', - }, -] - -// 组件rule的触发方式,无触发方式的组件不生成rule -export const trigger = { - 'el-input': 'blur', - 'el-input-number': 'blur', - 'el-select': 'change', - 'el-radio-group': 'change', - 'el-checkbox-group': 'change', - 'el-cascader': 'change', - 'el-time-picker': 'change', - 'el-date-picker': 'change', - 'el-rate': 'change', -} diff --git a/src/utils/generator/css.js b/src/utils/generator/css.js deleted file mode 100644 index c1c62e6..0000000 --- a/src/utils/generator/css.js +++ /dev/null @@ -1,18 +0,0 @@ -const styles = { - 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}', - 'el-upload': '.el-upload__tip{line-height: 1.2;}' -} - -function addCss(cssList, el) { - const css = styles[el.tag] - css && cssList.indexOf(css) === -1 && cssList.push(css) - if (el.children) { - el.children.forEach(el2 => addCss(cssList, el2)) - } -} - -export function makeUpCss(conf) { - const cssList = [] - conf.fields.forEach(el => addCss(cssList, el)) - return cssList.join('\n') -} diff --git a/src/utils/generator/drawingDefalut.js b/src/utils/generator/drawingDefalut.js deleted file mode 100644 index 1105c28..0000000 --- a/src/utils/generator/drawingDefalut.js +++ /dev/null @@ -1,29 +0,0 @@ -export default [ - { - layout: 'colFormItem', - tagIcon: 'input', - label: '手机号', - vModel: 'mobile', - formId: 6, - tag: 'el-input', - placeholder: '请输入手机号', - defaultValue: '', - span: 24, - style: { width: '100%' }, - clearable: true, - prepend: '', - append: '', - 'prefix-icon': 'Cellphone', - 'suffix-icon': '', - maxlength: 11, - 'show-word-limit': true, - readonly: false, - disabled: false, - required: true, - changeTag: true, - regList: [{ - pattern: '/^1(3|4|5|7|8|9)\\d{9}$/', - message: '手机号格式错误' - }] - } -] diff --git a/src/utils/generator/html.js b/src/utils/generator/html.js deleted file mode 100644 index 4b29841..0000000 --- a/src/utils/generator/html.js +++ /dev/null @@ -1,359 +0,0 @@ -/* eslint-disable max-len */ -import { trigger } from './config' - -let confGlobal -let someSpanIsNot24 - -export function dialogWrapper(str) { - return ` - ${str} - - ` -} - -export function vueTemplate(str) { - return `` -} - -export function vueScript(str) { - return `` -} - -export function cssStyle(cssStr) { - return `` -} - -function buildFormTemplate(conf, child, type) { - let labelPosition = '' - if (conf.labelPosition !== 'right') { - labelPosition = `label-position="${conf.labelPosition}"` - } - const disabled = conf.disabled ? `:disabled="${conf.disabled}"` : '' - let str = ` - ${child} - ${buildFromBtns(conf, type)} - ` - if (someSpanIsNot24) { - str = ` - ${str} - ` - } - return str -} - -function buildFromBtns(conf, type) { - let str = '' - if (conf.formBtns && type === 'file') { - str = ` - 提交 - 重置 - ` - if (someSpanIsNot24) { - str = ` - ${str} - ` - } - } - return str -} - -// span不为24的用el-col包裹 -function colWrapper(element, str) { - if (someSpanIsNot24 || element.span !== 24) { - return ` - ${str} - ` - } - return str -} - -const layouts = { - colFormItem(element) { - let labelWidth = '' - if (element.labelWidth && element.labelWidth !== confGlobal.labelWidth) { - labelWidth = `label-width="${element.labelWidth}px"` - } - const required = !trigger[element.tag] && element.required ? 'required' : '' - const tagDom = tags[element.tag] ? tags[element.tag](element) : null - let str = ` - ${tagDom} - ` - str = colWrapper(element, str) - return str - }, - rowFormItem(element) { - const type = element.type === 'default' ? '' : `type="${element.type}"` - const justify = element.type === 'default' ? '' : `justify="${element.justify}"` - const align = element.type === 'default' ? '' : `align="${element.align}"` - const gutter = element.gutter ? `gutter="${element.gutter}"` : '' - const children = element.children.map(el => layouts[el.layout](el)) - let str = ` - ${children.join('\n')} - ` - str = colWrapper(element, str) - return str - } -} - -const tags = { - 'el-button': el => { - const { - tag, disabled - } = attrBuilder(el) - const type = el.type ? `type="${el.type}"` : '' - const icon = el.icon ? `icon="${el.icon}"` : '' - const size = el.size ? `size="${el.size}"` : '' - let child = buildElButtonChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${type} ${icon} ${size} ${disabled}>${child}` - }, - 'el-input': el => { - const { - disabled, vModel, clearable, placeholder, width - } = attrBuilder(el) - const maxlength = el.maxlength ? `:maxlength="${el.maxlength}"` : '' - const showWordLimit = el['show-word-limit'] ? 'show-word-limit' : '' - const readonly = el.readonly ? 'readonly' : '' - const prefixIcon = el['prefix-icon'] ? `prefix-icon='${el['prefix-icon']}'` : '' - const suffixIcon = el['suffix-icon'] ? `suffix-icon='${el['suffix-icon']}'` : '' - const showPassword = el['show-password'] ? 'show-password' : '' - const type = el.type ? `type="${el.type}"` : '' - const autosize = el.autosize && el.autosize.minRows - ? `:autosize="{minRows: ${el.autosize.minRows}, maxRows: ${el.autosize.maxRows}}"` - : '' - let child = buildElInputChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${vModel} ${type} ${placeholder} ${maxlength} ${showWordLimit} ${readonly} ${disabled} ${clearable} ${prefixIcon} ${suffixIcon} ${showPassword} ${autosize} ${width}>${child}` - }, - 'el-input-number': el => { - const { disabled, vModel, placeholder } = attrBuilder(el) - const controlsPosition = el['controls-position'] ? `controls-position=${el['controls-position']}` : '' - const min = el.min ? `:min='${el.min}'` : '' - const max = el.max ? `:max='${el.max}'` : '' - const step = el.step ? `:step='${el.step}'` : '' - const stepStrictly = el['step-strictly'] ? 'step-strictly' : '' - const precision = el.precision ? `:precision='${el.precision}'` : '' - - return `<${el.tag} ${vModel} ${placeholder} ${step} ${stepStrictly} ${precision} ${controlsPosition} ${min} ${max} ${disabled}>` - }, - 'el-select': el => { - const { - disabled, vModel, clearable, placeholder, width - } = attrBuilder(el) - const filterable = el.filterable ? 'filterable' : '' - const multiple = el.multiple ? 'multiple' : '' - let child = buildElSelectChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${vModel} ${placeholder} ${disabled} ${multiple} ${filterable} ${clearable} ${width}>${child}` - }, - 'el-radio-group': el => { - const { disabled, vModel } = attrBuilder(el) - const size = `size="${el.size}"` - let child = buildElRadioGroupChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${vModel} ${size} ${disabled}>${child}` - }, - 'el-checkbox-group': el => { - const { disabled, vModel } = attrBuilder(el) - const size = `size="${el.size}"` - const min = el.min ? `:min="${el.min}"` : '' - const max = el.max ? `:max="${el.max}"` : '' - let child = buildElCheckboxGroupChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${vModel} ${min} ${max} ${size} ${disabled}>${child}` - }, - 'el-switch': el => { - const { disabled, vModel } = attrBuilder(el) - const activeText = el['active-text'] ? `active-text="${el['active-text']}"` : '' - const inactiveText = el['inactive-text'] ? `inactive-text="${el['inactive-text']}"` : '' - const activeColor = el['active-color'] ? `active-color="${el['active-color']}"` : '' - const inactiveColor = el['inactive-color'] ? `inactive-color="${el['inactive-color']}"` : '' - const activeValue = el['active-value'] !== true ? `:active-value='${JSON.stringify(el['active-value'])}'` : '' - const inactiveValue = el['inactive-value'] !== false ? `:inactive-value='${JSON.stringify(el['inactive-value'])}'` : '' - - return `<${el.tag} ${vModel} ${activeText} ${inactiveText} ${activeColor} ${inactiveColor} ${activeValue} ${inactiveValue} ${disabled}>` - }, - 'el-cascader': el => { - const { - disabled, vModel, clearable, placeholder, width - } = attrBuilder(el) - const options = el.options ? `:options="${el.vModel}Options"` : '' - const props = el.props ? `:props="${el.vModel}Props"` : '' - const showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels="false"' - const filterable = el.filterable ? 'filterable' : '' - const separator = el.separator === '/' ? '' : `separator="${el.separator}"` - - return `<${el.tag} ${vModel} ${options} ${props} ${width} ${showAllLevels} ${placeholder} ${separator} ${filterable} ${clearable} ${disabled}>` - }, - 'el-slider': el => { - const { disabled, vModel } = attrBuilder(el) - const min = el.min ? `:min='${el.min}'` : '' - const max = el.max ? `:max='${el.max}'` : '' - const step = el.step ? `:step='${el.step}'` : '' - const range = el.range ? 'range' : '' - const showStops = el['show-stops'] ? `:show-stops="${el['show-stops']}"` : '' - - return `<${el.tag} ${min} ${max} ${step} ${vModel} ${range} ${showStops} ${disabled}>` - }, - 'el-time-picker': el => { - const { - disabled, vModel, clearable, placeholder, width - } = attrBuilder(el) - const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : '' - const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : '' - const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : '' - const isRange = el['is-range'] ? 'is-range' : '' - const format = el.format ? `format="${el.format}"` : '' - const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : '' - const pickerOptions = el['picker-options'] ? `:picker-options='${JSON.stringify(el['picker-options'])}'` : '' - - return `<${el.tag} ${vModel} ${isRange} ${format} ${valueFormat} ${pickerOptions} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${disabled}>` - }, - 'el-date-picker': el => { - const { - disabled, vModel, clearable, placeholder, width - } = attrBuilder(el) - const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : '' - const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : '' - const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : '' - const format = el.format ? `format="${el.format}"` : '' - const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : '' - const type = el.type === 'date' ? '' : `type="${el.type}"` - const readonly = el.readonly ? 'readonly' : '' - - return `<${el.tag} ${type} ${vModel} ${format} ${valueFormat} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${readonly} ${disabled}>` - }, - 'el-rate': el => { - const { disabled, vModel } = attrBuilder(el) - const max = el.max ? `:max='${el.max}'` : '' - const allowHalf = el['allow-half'] ? 'allow-half' : '' - const showText = el['show-text'] ? 'show-text' : '' - const showScore = el['show-score'] ? 'show-score' : '' - - return `<${el.tag} ${vModel} ${allowHalf} ${showText} ${showScore} ${disabled}>` - }, - 'el-color-picker': el => { - const { disabled, vModel } = attrBuilder(el) - const size = `size="${el.size}"` - const showAlpha = el['show-alpha'] ? 'show-alpha' : '' - const colorFormat = el['color-format'] ? `color-format="${el['color-format']}"` : '' - - return `<${el.tag} ${vModel} ${size} ${showAlpha} ${colorFormat} ${disabled}>` - }, - 'el-upload': el => { - const disabled = el.disabled ? ':disabled=\'true\'' : '' - const action = el.action ? `:action="${el.vModel}Action"` : '' - const multiple = el.multiple ? 'multiple' : '' - const listType = el['list-type'] !== 'text' ? `list-type="${el['list-type']}"` : '' - const accept = el.accept ? `accept="${el.accept}"` : '' - const name = el.name !== 'file' ? `name="${el.name}"` : '' - const autoUpload = el['auto-upload'] === false ? ':auto-upload="false"' : '' - const beforeUpload = `:before-upload="${el.vModel}BeforeUpload"` - const fileList = `:file-list="${el.vModel}fileList"` - const ref = `ref="${el.vModel}"` - let child = buildElUploadChild(el) - - if (child) child = `\n${child}\n` // 换行 - return `<${el.tag} ${ref} ${fileList} ${action} ${autoUpload} ${multiple} ${beforeUpload} ${listType} ${accept} ${name} ${disabled}>${child}` - } -} - -function attrBuilder(el) { - return { - vModel: `v-model="${confGlobal.formModel}.${el.vModel}"`, - clearable: el.clearable ? 'clearable' : '', - placeholder: el.placeholder ? `placeholder="${el.placeholder}"` : '', - width: el.style && el.style.width ? ':style="{width: \'100%\'}"' : '', - disabled: el.disabled ? ':disabled=\'true\'' : '' - } -} - -// el-buttin 子级 -function buildElButtonChild(conf) { - const children = [] - if (conf.default) { - children.push(conf.default) - } - return children.join('\n') -} - -// el-input innerHTML -function buildElInputChild(conf) { - const children = [] - if (conf.prepend) { - children.push(``) - } - if (conf.append) { - children.push(``) - } - return children.join('\n') -} - -function buildElSelectChild(conf) { - const children = [] - if (conf.options && conf.options.length) { - children.push(``) - } - return children.join('\n') -} - -function buildElRadioGroupChild(conf) { - const children = [] - if (conf.options && conf.options.length) { - const tag = conf.optionType === 'button' ? 'el-radio-button' : 'el-radio' - const border = conf.border ? 'border' : '' - children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :value="item.value" :disabled="item.disabled" ${border}>{{item.label}}`) - } - return children.join('\n') -} - -function buildElCheckboxGroupChild(conf) { - const children = [] - if (conf.options && conf.options.length) { - const tag = conf.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox' - const border = conf.border ? 'border' : '' - children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :value="item.label" :disabled="item.disabled" ${border} />`) - } - return children.join('\n') -} - -function buildElUploadChild(conf) { - const list = [] - if (conf['list-type'] === 'picture-card') list.push('') - else list.push(`${conf.buttonText}`) - if (conf.showTip) list.push(`
只能上传不超过 ${conf.fileSize}${conf.sizeUnit} 的${conf.accept}文件
`) - return list.join('\n') -} - -export function makeUpHtml(conf, type) { - const htmlList = [] - confGlobal = conf - someSpanIsNot24 = conf.fields.some(item => item.span !== 24) - conf.fields.forEach(el => { - htmlList.push(layouts[el.layout](el)) - }) - const htmlStr = htmlList.join('\n') - - let temp = buildFormTemplate(conf, htmlStr, type) - if (type === 'dialog') { - temp = dialogWrapper(temp) - } - confGlobal = null - return temp -} diff --git a/src/utils/generator/icon.json b/src/utils/generator/icon.json deleted file mode 100644 index 2d9999a..0000000 --- a/src/utils/generator/icon.json +++ /dev/null @@ -1 +0,0 @@ -["platform-eleme","eleme","delete-solid","delete","s-tools","setting","user-solid","user","phone","phone-outline","more","more-outline","star-on","star-off","s-goods","goods","warning","warning-outline","question","info","remove","circle-plus","success","error","zoom-in","zoom-out","remove-outline","circle-plus-outline","circle-check","circle-close","s-help","help","minus","plus","check","close","picture","picture-outline","picture-outline-round","upload","upload2","download","camera-solid","camera","video-camera-solid","video-camera","message-solid","bell","s-cooperation","s-order","s-platform","s-fold","s-unfold","s-operation","s-promotion","s-home","s-release","s-ticket","s-management","s-open","s-shop","s-marketing","s-flag","s-comment","s-finance","s-claim","s-custom","s-opportunity","s-data","s-check","s-grid","menu","share","d-caret","caret-left","caret-right","caret-bottom","caret-top","bottom-left","bottom-right","back","right","bottom","top","top-left","top-right","arrow-left","arrow-right","arrow-down","arrow-up","d-arrow-left","d-arrow-right","video-pause","video-play","refresh","refresh-right","refresh-left","finished","sort","sort-up","sort-down","rank","loading","view","c-scale-to-original","date","edit","edit-outline","folder","folder-opened","folder-add","folder-remove","folder-delete","folder-checked","tickets","document-remove","document-delete","document-copy","document-checked","document","document-add","printer","paperclip","takeaway-box","search","monitor","attract","mobile","scissors","umbrella","headset","brush","mouse","coordinate","magic-stick","reading","data-line","data-board","pie-chart","data-analysis","collection-tag","film","suitcase","suitcase-1","receiving","collection","files","notebook-1","notebook-2","toilet-paper","office-building","school","table-lamp","house","no-smoking","smoking","shopping-cart-full","shopping-cart-1","shopping-cart-2","shopping-bag-1","shopping-bag-2","sold-out","sell","present","box","bank-card","money","coin","wallet","discount","price-tag","news","guide","male","female","thumb","cpu","link","connection","open","turn-off","set-up","chat-round","chat-line-round","chat-square","chat-dot-round","chat-dot-square","chat-line-square","message","postcard","position","turn-off-microphone","microphone","close-notification","bangzhu","time","odometer","crop","aim","switch-button","full-screen","copy-document","mic","stopwatch","medal-1","medal","trophy","trophy-1","first-aid-kit","discover","place","location","location-outline","location-information","add-location","delete-location","map-location","alarm-clock","timer","watch-1","watch","lock","unlock","key","service","mobile-phone","bicycle","truck","ship","basketball","football","soccer","baseball","wind-power","light-rain","lightning","heavy-rain","sunrise","sunrise-1","sunset","sunny","cloudy","partly-cloudy","cloudy-and-sunny","moon","moon-night","dish","dish-1","food","chicken","fork-spoon","knife-fork","burger","tableware","sugar","dessert","ice-cream","hot-water","water-cup","coffee-cup","cold-drink","goblet","goblet-full","goblet-square","goblet-square-full","refrigerator","grape","watermelon","cherry","apple","pear","orange","coffee","ice-tea","ice-drink","milk-tea","potato-strips","lollipop","ice-cream-square","ice-cream-round"] \ No newline at end of file diff --git a/src/utils/generator/js.js b/src/utils/generator/js.js deleted file mode 100644 index dc38bfe..0000000 --- a/src/utils/generator/js.js +++ /dev/null @@ -1,370 +0,0 @@ -import { titleCase } from '@/utils/index' -import { trigger } from './config' -// 文件大小设置 -const units = { - KB: '1024', - MB: '1024 / 1024', - GB: '1024 / 1024 / 1024', -} -/** - * @name: 生成js需要的数据 - * @description: 生成js需要的数据 - * @param {*} conf - * @param {*} type 弹窗或表单 - * @return {*} - */ -export function makeUpJs(conf, type) { - conf = JSON.parse(JSON.stringify(conf)) - const dataList = [] - const ruleList = [] - const optionsList = [] - const propsList = [] - const methodList = [] - const uploadVarList = [] - - conf.fields.forEach((el) => { - buildAttributes( - el, - dataList, - ruleList, - optionsList, - methodList, - propsList, - uploadVarList - ) - }) - - const script = buildexport( - conf, - type, - dataList.join('\n'), - ruleList.join('\n'), - optionsList.join('\n'), - uploadVarList.join('\n'), - propsList.join('\n'), - methodList.join('\n') - ) - - return script -} -/** - * @name: 生成参数 - * @description: 生成参数,包括表单数据表单验证数据,多选选项数据,上传数据等 - * @return {*} - */ -function buildAttributes( - el, - dataList, - ruleList, - optionsList, - methodList, - propsList, - uploadVarList -){ - buildData(el, dataList) - buildRules(el, ruleList) - - if (el.options && el.options.length) { - buildOptions(el, optionsList) - if (el.dataType === 'dynamic') { - const model = `${el.vModel}Options` - const options = titleCase(model) - buildOptionMethod(`get${options}`, model, methodList) - } - } - - if (el.props && el.props.props) { - buildProps(el, propsList) - } - - if (el.action && el.tag === 'el-upload') { - uploadVarList.push( - ` - // 上传请求路径 - const ${el.vModel}Action = ref('${el.action}') - // 上传文件列表 - const ${el.vModel}fileList = ref([])` - ) - methodList.push(buildBeforeUpload(el)) - if (!el['auto-upload']) { - methodList.push(buildSubmitUpload(el)) - } - } - - if (el.children) { - el.children.forEach((el2) => { - buildAttributes( - el2, - dataList, - ruleList, - optionsList, - methodList, - propsList, - uploadVarList - ) - }) - } -} -/** - * @name: 生成表单数据formData - * @description: 生成表单数据formData - * @param {*} conf - * @param {*} dataList 数据列表 - * @return {*} - */ -function buildData(conf, dataList) { - if (conf.vModel === undefined) return - let defaultValue - if (typeof conf.defaultValue === 'string' && !conf.multiple) { - defaultValue = `'${conf.defaultValue}'` - } else { - defaultValue = `${JSON.stringify(conf.defaultValue)}` - } - dataList.push(`${conf.vModel}: ${defaultValue},`) -} -/** - * @name: 生成表单验证数据rule - * @description: 生成表单验证数据rule - * @param {*} conf - * @param {*} ruleList 验证数据列表 - * @return {*} - */ -function buildRules(conf, ruleList) { - if (conf.vModel === undefined) return - const rules = [] - if (trigger[conf.tag]) { - if (conf.required) { - const type = Array.isArray(conf.defaultValue) ? "type: 'array'," : '' - let message = Array.isArray(conf.defaultValue) - ? `请至少选择一个${conf.vModel}` - : conf.placeholder - if (message === undefined) message = `${conf.label}不能为空` - rules.push( - `{ required: true, ${type} message: '${message}', trigger: '${ - trigger[conf.tag] - }' }` - ) - } - if (conf.regList && Array.isArray(conf.regList)) { - conf.regList.forEach((item) => { - if (item.pattern) { - rules.push( - `{ pattern: new RegExp(${item.pattern}), message: '${ - item.message - }', trigger: '${trigger[conf.tag]}' }` - ) - } - }) - } - ruleList.push(`${conf.vModel}: [${rules.join(',')}],`) - } -} -/** - * @name: 生成选项数据 - * @description: 生成选项数据,单选多选下拉等 - * @param {*} conf - * @param {*} optionsList 选项数据列表 - * @return {*} - */ -function buildOptions(conf, optionsList) { - if (conf.vModel === undefined) return - if (conf.dataType === 'dynamic') { - conf.options = [] - } - const str = `const ${conf.vModel}Options = ref(${JSON.stringify(conf.options)})` - optionsList.push(str) -} -/** - * @name: 生成方法 - * @description: 生成方法 - * @param {*} methodName 方法名 - * @param {*} model - * @param {*} methodList 方法列表 - * @return {*} - */ -function buildOptionMethod(methodName, model, methodList) { - const str = `function ${methodName}() { - // TODO 发起请求获取数据 - ${model}.value - }` - methodList.push(str) -} -/** - * @name: 生成表单组件需要的props设置 - * @description: 生成表单组件需要的props设置,如;级联组件 - * @param {*} conf - * @param {*} propsList - * @return {*} - */ -function buildProps(conf, propsList) { - if (conf.dataType === 'dynamic') { - conf.valueKey !== 'value' && (conf.props.props.value = conf.valueKey) - conf.labelKey !== 'label' && (conf.props.props.label = conf.labelKey) - conf.childrenKey !== 'children' && - (conf.props.props.children = conf.childrenKey) - } - const str = ` - // props设置 - const ${conf.vModel}Props = ref(${JSON.stringify(conf.props.props)})` - propsList.push(str) -} -/** - * @name: 生成上传组件的相关内容 - * @description: 生成上传组件的相关内容 - * @param {*} conf - * @return {*} - */ -function buildBeforeUpload(conf) { - const unitNum = units[conf.sizeUnit] - let rightSizeCode = '' - let acceptCode = '' - const returnList = [] - if (conf.fileSize) { - rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${conf.fileSize} - if(!isRightSize){ - proxy.$modal.msgError('文件大小超过 ${conf.fileSize}${conf.sizeUnit}') - }` - returnList.push('isRightSize') - } - if (conf.accept) { - acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type) - if(!isAccept){ - proxy.$modal.msgError('应该选择${conf.accept}类型的文件') - }` - returnList.push('isAccept') - } - const str = ` - /** - * @name: 上传之前的文件判断 - * @description: 上传之前的文件判断,判断文件大小文件类型等 - * @param {*} file - * @return {*} - */ - function ${conf.vModel}BeforeUpload(file) { - ${rightSizeCode} - ${acceptCode} - return ${returnList.join('&&')} - }` - return returnList.length ? str : '' -} -/** - * @name: 生成提交表单方法 - * @description: 生成提交表单方法 - * @param {Object} conf vModel 表单ref - * @return {*} - */ -function buildSubmitUpload(conf) { - const str = `function submitUpload() { - this.$refs['${conf.vModel}'].submit() - }` - return str -} -/** - * @name: 组装js代码 - * @description: 组装js代码方法 - * @return {*} - */ -function buildexport( - conf, - type, - data, - rules, - selectOptions, - uploadVar, - props, - methods -) { - let str = ` - const { proxy } = getCurrentInstance() - const ${conf.formRef} = ref() - const data = reactive({ - ${conf.formModel}: { - ${data} - }, - ${conf.formRules}: { - ${rules} - } - }) - - const {${conf.formModel}, ${conf.formRules}} = toRefs(data) - - ${selectOptions} - - ${uploadVar} - - ${props} - - ${methods} - ` - - if(type === 'dialog') { - str += ` - // 弹窗设置 - const dialogVisible = defineModel() - // 弹窗确认回调 - const emit = defineEmits(['confirm']) - /** - * @name: 弹窗打开后执行 - * @description: 弹窗打开后执行方法 - * @return {*} - */ - function onOpen(){ - - } - /** - * @name: 弹窗关闭时执行 - * @description: 弹窗关闭方法,重置表单 - * @return {*} - */ - function onClose(){ - ${conf.formRef}.value.resetFields() - } - /** - * @name: 弹窗取消 - * @description: 弹窗取消方法 - * @return {*} - */ - function close(){ - dialogVisible.value = false - } - /** - * @name: 弹窗表单提交 - * @description: 弹窗表单提交方法 - * @return {*} - */ - function handelConfirm(){ - ${conf.formRef}.value.validate((valid) => { - if (!valid) return - // TODO 提交表单 - - close() - // 回调父级组件 - emit('confirm') - }) - } - ` - } else { - str += ` - /** - * @name: 表单提交 - * @description: 表单提交方法 - * @return {*} - */ - function submitForm() { - ${conf.formRef}.value.validate((valid) => { - if (!valid) return - // TODO 提交表单 - }) - } - /** - * @name: 表单重置 - * @description: 表单重置方法 - * @return {*} - */ - function resetForm() { - ${conf.formRef}.value.resetFields() - } - ` - } - return str -} diff --git a/src/utils/generator/render.js b/src/utils/generator/render.js deleted file mode 100644 index d6d4414..0000000 --- a/src/utils/generator/render.js +++ /dev/null @@ -1,156 +0,0 @@ -import { defineComponent, h } from 'vue' -import { makeMap } from '@/utils/index' - -const isAttr = makeMap( - 'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' + - 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' + - 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,' + - 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,' + - 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,' + - 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' + - 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' + - 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' + - 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' + - 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' + - 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' + - 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' + - 'target,title,type,usemap,value,width,wrap' + 'prefix-icon' -) -const isNotProps = makeMap( - 'layout,prepend,regList,tag,document,changeTag,defaultValue' -) - -function useVModel(props, emit) { - return { - modelValue: props.defaultValue, - 'onUpdate:modelValue': (val) => emit('update:modelValue', val), - } -} -const componentChild = { - 'el-button': { - default(h, conf, key) { - return conf[key] - }, - }, - 'el-select': { - options(h, conf, key) { - return conf.options.map(item => h(resolveComponent('el-option'), { - label: item.label, - value: item.value, - })) - } - }, - 'el-radio-group': { - options(h, conf, key) { - return conf.optionType === 'button' ? conf.options.map(item => h(resolveComponent('el-checkbox-button'), { - label: item.value, - }, () => item.label)) : conf.options.map(item => h(resolveComponent('el-radio'), { - label: item.value, - border: conf.border, - }, () => item.label)) - } - }, - 'el-checkbox-group': { - options(h, conf, key) { - return conf.optionType === 'button' ? conf.options.map(item => h(resolveComponent('el-checkbox-button'), { - label: item.value, - }, () => item.label)) : conf.options.map(item => h(resolveComponent('el-checkbox'), { - label: item.value, - border: conf.border, - }, () => item.label)) - } - }, - 'el-upload': { - 'list-type': (h, conf, key) => { - const option = {} - // if (conf.showTip) { - // tip = h('div', { - // class: "el-upload__tip" - // }, () => '只能上传不超过' + conf.fileSize + conf.sizeUnit + '的' + conf.accept + '文件') - // } - if (conf['list-type'] === 'picture-card') { - return h(resolveComponent('el-icon'), option, () => h(resolveComponent('Plus'))) - } else { - // option.size = "small" - option.type = "primary" - option.icon = "Upload" - return h(resolveComponent('el-button'), option, () => conf.buttonText) - } - }, - - } -} -const componentSlot = { - 'el-upload': { - 'tip': (h, conf, key) => { - if (conf.showTip) { - return () => h('div', { - class: "el-upload__tip" - }, '只能上传不超过' + conf.fileSize + conf.sizeUnit + '的' + conf.accept + '文件') - } - }, - } -} -export default defineComponent({ - - // 使用 render 函数 - render() { - const dataObject = { - attrs: {}, - props: {}, - on: {}, - style: {} - } - const confClone = JSON.parse(JSON.stringify(this.conf)) - const children = [] - const slot = {} - const childObjs = componentChild[confClone.tag] - if (childObjs) { - Object.keys(childObjs).forEach(key => { - const childFunc = childObjs[key] - if (confClone[key]) { - children.push(childFunc(h, confClone, key)) - } - }) - } - const slotObjs = componentSlot[confClone.tag] - if (slotObjs) { - Object.keys(slotObjs).forEach(key => { - const childFunc = slotObjs[key] - if (confClone[key]) { - slot[key] = childFunc(h, confClone, key) - } - }) - } - Object.keys(confClone).forEach(key => { - const val = confClone[key] - if (dataObject[key]) { - dataObject[key] = val - } else if (isAttr(key)) { - dataObject.attrs[key] = val - } else if (!isNotProps(key)) { - dataObject.props[key] = val - } - }) - if(children.length > 0){ - slot.default = () => children - } - - return h(resolveComponent(this.conf.tag), - { - modelValue: this.$attrs.modelValue, - ...dataObject.props, - ...dataObject.attrs, - style: { - ...dataObject.style - }, - } - , slot ?? null) - }, - props: { - conf: { - type: Object, - required: true, - }, - } -}) \ No newline at end of file diff --git a/src/utils/index.js b/src/utils/index.js deleted file mode 100644 index 9329fe2..0000000 --- a/src/utils/index.js +++ /dev/null @@ -1,390 +0,0 @@ -import { parseTime } from './ruoyi' - -/** - * 表格时间格式化 - */ -export function formatDate(cellValue) { - if (cellValue == null || cellValue == "") return "" - var date = new Date(cellValue) - var year = date.getFullYear() - var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() - var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() - var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() - var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() - return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds -} - -/** - * @param {number} time - * @param {string} option - * @returns {string} - */ -export function formatTime(time, option) { - if (('' + time).length === 10) { - time = parseInt(time) * 1000 - } else { - time = +time - } - const d = new Date(time) - const now = Date.now() - - const diff = (now - d) / 1000 - - if (diff < 30) { - return '刚刚' - } else if (diff < 3600) { - // less 1 hour - return Math.ceil(diff / 60) + '分钟前' - } else if (diff < 3600 * 24) { - return Math.ceil(diff / 3600) + '小时前' - } else if (diff < 3600 * 24 * 2) { - return '1天前' - } - if (option) { - return parseTime(time, option) - } else { - return ( - d.getMonth() + - 1 + - '月' + - d.getDate() + - '日' + - d.getHours() + - '时' + - d.getMinutes() + - '分' - ) - } -} - -/** - * @param {string} url - * @returns {Object} - */ -export function getQueryObject(url) { - url = url == null ? window.location.href : url - const search = url.substring(url.lastIndexOf('?') + 1) - const obj = {} - const reg = /([^?&=]+)=([^?&=]*)/g - search.replace(reg, (rs, $1, $2) => { - const name = decodeURIComponent($1) - let val = decodeURIComponent($2) - val = String(val) - obj[name] = val - return rs - }) - return obj -} - -/** - * @param {string} input value - * @returns {number} output value - */ -export function byteLength(str) { - // returns the byte length of an utf8 string - let s = str.length - for (var i = str.length - 1; i >= 0; i--) { - const code = str.charCodeAt(i) - if (code > 0x7f && code <= 0x7ff) s++ - else if (code > 0x7ff && code <= 0xffff) s += 2 - if (code >= 0xDC00 && code <= 0xDFFF) i-- - } - return s -} - -/** - * @param {Array} actual - * @returns {Array} - */ -export function cleanArray(actual) { - const newArray = [] - for (let i = 0; i < actual.length; i++) { - if (actual[i]) { - newArray.push(actual[i]) - } - } - return newArray -} - -/** - * @param {Object} json - * @returns {Array} - */ -export function param(json) { - if (!json) return '' - return cleanArray( - Object.keys(json).map(key => { - if (json[key] === undefined) return '' - return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]) - }) - ).join('&') -} - -/** - * @param {string} url - * @returns {Object} - */ -export function param2Obj(url) { - const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') - if (!search) { - return {} - } - const obj = {} - const searchArr = search.split('&') - searchArr.forEach(v => { - const index = v.indexOf('=') - if (index !== -1) { - const name = v.substring(0, index) - const val = v.substring(index + 1, v.length) - obj[name] = val - } - }) - return obj -} - -/** - * @param {string} val - * @returns {string} - */ -export function html2Text(val) { - const div = document.createElement('div') - div.innerHTML = val - return div.textContent || div.innerText -} - -/** - * Merges two objects, giving the last one precedence - * @param {Object} target - * @param {(Object|Array)} source - * @returns {Object} - */ -export function objectMerge(target, source) { - if (typeof target !== 'object') { - target = {} - } - if (Array.isArray(source)) { - return source.slice() - } - Object.keys(source).forEach(property => { - const sourceProperty = source[property] - if (typeof sourceProperty === 'object') { - target[property] = objectMerge(target[property], sourceProperty) - } else { - target[property] = sourceProperty - } - }) - return target -} - -/** - * @param {HTMLElement} element - * @param {string} className - */ -export function toggleClass(element, className) { - if (!element || !className) { - return - } - let classString = element.className - const nameIndex = classString.indexOf(className) - if (nameIndex === -1) { - classString += '' + className - } else { - classString = - classString.substr(0, nameIndex) + - classString.substr(nameIndex + className.length) - } - element.className = classString -} - -/** - * @param {string} type - * @returns {Date} - */ -export function getTime(type) { - if (type === 'start') { - return new Date().getTime() - 3600 * 1000 * 24 * 90 - } else { - return new Date(new Date().toDateString()) - } -} - -/** - * @param {Function} func - * @param {number} wait - * @param {boolean} immediate - * @return {*} - */ -export function debounce(func, wait, immediate) { - let timeout, args, context, timestamp, result - - const later = function() { - // 据上一次触发时间间隔 - const last = +new Date() - timestamp - - // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait - if (last < wait && last > 0) { - timeout = setTimeout(later, wait - last) - } else { - timeout = null - // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 - if (!immediate) { - result = func.apply(context, args) - if (!timeout) context = args = null - } - } - } - - return function(...args) { - context = this - timestamp = +new Date() - const callNow = immediate && !timeout - // 如果延时不存在,重新设定延时 - if (!timeout) timeout = setTimeout(later, wait) - if (callNow) { - result = func.apply(context, args) - context = args = null - } - - return result - } -} - -/** - * This is just a simple version of deep copy - * Has a lot of edge cases bug - * If you want to use a perfect deep copy, use lodash's _.cloneDeep - * @param {Object} source - * @returns {Object} - */ -export function deepClone(source) { - if (!source && typeof source !== 'object') { - throw new Error('error arguments', 'deepClone') - } - const targetObj = source.constructor === Array ? [] : {} - Object.keys(source).forEach(keys => { - if (source[keys] && typeof source[keys] === 'object') { - targetObj[keys] = deepClone(source[keys]) - } else { - targetObj[keys] = source[keys] - } - }) - return targetObj -} - -/** - * @param {Array} arr - * @returns {Array} - */ -export function uniqueArr(arr) { - return Array.from(new Set(arr)) -} - -/** - * @returns {string} - */ -export function createUniqueString() { - const timestamp = +new Date() + '' - const randomNum = parseInt((1 + Math.random()) * 65536) + '' - return (+(randomNum + timestamp)).toString(32) -} - -/** - * Check if an element has a class - * @param {HTMLElement} elm - * @param {string} cls - * @returns {boolean} - */ -export function hasClass(ele, cls) { - return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')) -} - -/** - * Add class to element - * @param {HTMLElement} elm - * @param {string} cls - */ -export function addClass(ele, cls) { - if (!hasClass(ele, cls)) ele.className += ' ' + cls -} - -/** - * Remove class from element - * @param {HTMLElement} elm - * @param {string} cls - */ -export function removeClass(ele, cls) { - if (hasClass(ele, cls)) { - const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)') - ele.className = ele.className.replace(reg, ' ') - } -} - -export function makeMap(str, expectsLowerCase) { - const map = Object.create(null) - const list = str.split(',') - for (let i = 0; i < list.length; i++) { - map[list[i]] = true - } - return expectsLowerCase - ? val => map[val.toLowerCase()] - : val => map[val] -} - -export const exportDefault = 'export default ' - -export const beautifierConf = { - html: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', - preserve_newlines: false, - keep_array_indentation: false, - break_chained_methods: false, - indent_scripts: 'separate', - brace_style: 'end-expand', - space_before_conditional: true, - unescape_strings: false, - jslint_happy: false, - end_with_newline: true, - wrap_line_length: '110', - indent_inner_html: true, - comma_first: false, - e4x: true, - indent_empty_lines: true - }, - js: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', - preserve_newlines: false, - keep_array_indentation: false, - break_chained_methods: false, - indent_scripts: 'normal', - brace_style: 'end-expand', - space_before_conditional: true, - unescape_strings: false, - jslint_happy: true, - end_with_newline: true, - wrap_line_length: '110', - indent_inner_html: true, - comma_first: false, - e4x: true, - indent_empty_lines: true - } -} - -// 首字母大小 -export function titleCase(str) { - return str.replace(/( |^)[a-z]/g, L => L.toUpperCase()) -} - -// 下划转驼峰 -export function camelCase(str) { - return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase()) -} - -export function isNumberStr(str) { - return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str) -} - diff --git a/src/utils/jsencrypt.js b/src/utils/jsencrypt.js deleted file mode 100644 index 78d9523..0000000 --- a/src/utils/jsencrypt.js +++ /dev/null @@ -1,30 +0,0 @@ -import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' - -// 密钥对生成 http://web.chacuo.net/netrsakeypair - -const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + - 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' - -const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + - '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + - 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + - 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + - 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + - 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + - 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + - 'UP8iWi1Qw0Y=' - -// 加密 -export function encrypt(txt) { - const encryptor = new JSEncrypt() - encryptor.setPublicKey(publicKey) // 设置公钥 - return encryptor.encrypt(txt) // 对数据进行加密 -} - -// 解密 -export function decrypt(txt) { - const encryptor = new JSEncrypt() - encryptor.setPrivateKey(privateKey) // 设置私钥 - return encryptor.decrypt(txt) // 对数据进行解密 -} - diff --git a/src/utils/permission.js b/src/utils/permission.js deleted file mode 100644 index d354852..0000000 --- a/src/utils/permission.js +++ /dev/null @@ -1,51 +0,0 @@ -import useUserStore from '@/store/modules/user' - -/** - * 字符权限校验 - * @param {Array} value 校验值 - * @returns {Boolean} - */ -export function checkPermi(value) { - if (value && value instanceof Array && value.length > 0) { - const permissions = useUserStore().permissions - const permissionDatas = value - const all_permission = "*:*:*" - - const hasPermission = permissions.some(permission => { - return all_permission === permission || permissionDatas.includes(permission) - }) - - if (!hasPermission) { - return false - } - return true - } else { - console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) - return false - } -} - -/** - * 角色权限校验 - * @param {Array} value 校验值 - * @returns {Boolean} - */ -export function checkRole(value) { - if (value && value instanceof Array && value.length > 0) { - const roles = useUserStore().roles - const permissionRoles = value - const super_admin = "admin" - - const hasRole = roles.some(role => { - return super_admin === role || permissionRoles.includes(role) - }) - - if (!hasRole) { - return false - } - return true - } else { - console.error(`need roles! Like checkRole="['admin','editor']"`) - return false - } -} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js deleted file mode 100644 index e2e7e49..0000000 --- a/src/utils/request.js +++ /dev/null @@ -1,152 +0,0 @@ -import axios from 'axios' -import { ElNotification , ElMessageBox, ElMessage, ElLoading } from 'element-plus' -import { getToken } from '@/utils/auth' -import errorCode from '@/utils/errorCode' -import { tansParams, blobValidate } from '@/utils/ruoyi' -import cache from '@/plugins/cache' -import { saveAs } from 'file-saver' -import useUserStore from '@/store/modules/user' - -let downloadLoadingInstance -// 是否显示重新登录 -export let isRelogin = { show: false } - -axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' -// 创建axios实例 -const service = axios.create({ - // axios中请求配置有baseURL选项,表示请求URL公共部分 - baseURL: import.meta.env.VITE_APP_BASE_API, - // 超时 - timeout: 10000 -}) - -// request拦截器 -service.interceptors.request.use(config => { - // 是否需要设置 token - const isToken = (config.headers || {}).isToken === false - // 是否需要防止数据重复提交 - const isRepeatSubmit = (config.headers || {}).repeatSubmit === false - if (getToken() && !isToken) { - config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 - } - // get请求映射params参数 - if (config.method === 'get' && config.params) { - let url = config.url + '?' + tansParams(config.params) - url = url.slice(0, -1) - config.params = {} - config.url = url - } - if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { - const requestObj = { - url: config.url, - data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, - time: new Date().getTime() - } - const requestSize = Object.keys(JSON.stringify(requestObj)).length // 请求数据大小 - const limitSize = 5 * 1024 * 1024 // 限制存放数据5M - if (requestSize >= limitSize) { - console.warn(`[${config.url}]: ` + '请求数据大小超出允许的5M限制,无法进行防重复提交验证。') - return config - } - const sessionObj = cache.session.getJSON('sessionObj') - if (sessionObj === undefined || sessionObj === null || sessionObj === '') { - cache.session.setJSON('sessionObj', requestObj) - } else { - const s_url = sessionObj.url // 请求地址 - const s_data = sessionObj.data // 请求数据 - const s_time = sessionObj.time // 请求时间 - const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交 - if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { - const message = '数据正在处理,请勿重复提交' - console.warn(`[${s_url}]: ` + message) - return Promise.reject(new Error(message)) - } else { - cache.session.setJSON('sessionObj', requestObj) - } - } - } - return config -}, error => { - console.log(error) - Promise.reject(error) -}) - -// 响应拦截器 -service.interceptors.response.use(res => { - // 未设置状态码则默认成功状态 - const code = res.data.code || 200 - // 获取错误信息 - const msg = errorCode[code] || res.data.msg || errorCode['default'] - // 二进制数据则直接返回 - if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { - return res.data - } - if (code === 401) { - if (!isRelogin.show) { - isRelogin.show = true - ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { - isRelogin.show = false - useUserStore().logOut().then(() => { - location.href = '/index' - }) - }).catch(() => { - isRelogin.show = false - }) - } - return Promise.reject('无效的会话,或者会话已过期,请重新登录。') - } else if (code === 500) { - ElMessage({ message: msg, type: 'error' }) - return Promise.reject(new Error(msg)) - } else if (code === 601) { - ElMessage({ message: msg, type: 'warning' }) - return Promise.reject(new Error(msg)) - } else if (code !== 200) { - ElNotification.error({ title: msg }) - return Promise.reject('error') - } else { - return Promise.resolve(res.data) - } - }, - error => { - console.log('err' + error) - let { message } = error - if (message == "Network Error") { - message = "后端接口连接异常" - } else if (message.includes("timeout")) { - message = "系统接口请求超时" - } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常" - } - ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) - return Promise.reject(error) - } -) - -// 通用下载方法 -export function download(url, params, filename, config) { - downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", }) - return service.post(url, params, { - transformRequest: [(params) => { return tansParams(params) }], - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - responseType: 'blob', - ...config - }).then(async (data) => { - const isBlob = blobValidate(data) - if (isBlob) { - const blob = new Blob([data]) - saveAs(blob, filename) - } else { - const resText = await data.text() - const rspObj = JSON.parse(resText) - const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] - ElMessage.error(errMsg) - } - downloadLoadingInstance.close() - }).catch((r) => { - console.error(r) - ElMessage.error('下载文件出现错误,请联系管理员!') - downloadLoadingInstance.close() - }) -} - -export default service diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js deleted file mode 100644 index 3de2d98..0000000 --- a/src/utils/ruoyi.js +++ /dev/null @@ -1,228 +0,0 @@ -/** - * 通用js方法封装处理 - * Copyright (c) 2019 ruoyi - */ - -// 日期格式化 -export function parseTime(time, pattern) { - if (arguments.length === 0 || !time) { - return null - } - const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' - let date - if (typeof time === 'object') { - date = time - } else { - if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { - time = parseInt(time) - } else if (typeof time === 'string') { - time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '') - } - if ((typeof time === 'number') && (time.toString().length === 10)) { - time = time * 1000 - } - date = new Date(time) - } - const formatObj = { - y: date.getFullYear(), - m: date.getMonth() + 1, - d: date.getDate(), - h: date.getHours(), - i: date.getMinutes(), - s: date.getSeconds(), - a: date.getDay() - } - const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { - let value = formatObj[key] - // Note: getDay() returns 0 on Sunday - if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } - if (result.length > 0 && value < 10) { - value = '0' + value - } - return value || 0 - }) - return time_str -} - -// 表单重置 -export function resetForm(refName) { - if (this.$refs[refName]) { - this.$refs[refName].resetFields() - } -} - -// 添加日期范围 -export function addDateRange(params, dateRange, propName) { - let search = params - search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {} - dateRange = Array.isArray(dateRange) ? dateRange : [] - if (typeof (propName) === 'undefined') { - search.params['beginTime'] = dateRange[0] - search.params['endTime'] = dateRange[1] - } else { - search.params['begin' + propName] = dateRange[0] - search.params['end' + propName] = dateRange[1] - } - return search -} - -// 回显数据字典 -export function selectDictLabel(datas, value) { - if (value === undefined) { - return "" - } - var actions = [] - Object.keys(datas).some((key) => { - if (datas[key].value == ('' + value)) { - actions.push(datas[key].label) - return true - } - }) - if (actions.length === 0) { - actions.push(value) - } - return actions.join('') -} - -// 回显数据字典(字符串、数组) -export function selectDictLabels(datas, value, separator) { - if (value === undefined || value.length ===0) { - return "" - } - if (Array.isArray(value)) { - value = value.join(",") - } - var actions = [] - var currentSeparator = undefined === separator ? "," : separator - var temp = value.split(currentSeparator) - Object.keys(value.split(currentSeparator)).some((val) => { - var match = false - Object.keys(datas).some((key) => { - if (datas[key].value == ('' + temp[val])) { - actions.push(datas[key].label + currentSeparator) - match = true - } - }) - if (!match) { - actions.push(temp[val] + currentSeparator) - } - }) - return actions.join('').substring(0, actions.join('').length - 1) -} - -// 字符串格式化(%s ) -export function sprintf(str) { - var args = arguments, flag = true, i = 1 - str = str.replace(/%s/g, function () { - var arg = args[i++] - if (typeof arg === 'undefined') { - flag = false - return '' - } - return arg - }) - return flag ? str : '' -} - -// 转换字符串,undefined,null等转化为"" -export function parseStrEmpty(str) { - if (!str || str == "undefined" || str == "null") { - return "" - } - return str -} - -// 数据合并 -export function mergeRecursive(source, target) { - for (var p in target) { - try { - if (target[p].constructor == Object) { - source[p] = mergeRecursive(source[p], target[p]) - } else { - source[p] = target[p] - } - } catch (e) { - source[p] = target[p] - } - } - return source -} - -/** - * 构造树型结构数据 - * @param {*} data 数据源 - * @param {*} id id字段 默认 'id' - * @param {*} parentId 父节点字段 默认 'parentId' - * @param {*} children 孩子节点字段 默认 'children' - */ -export function handleTree(data, id, parentId, children) { - let config = { - id: id || 'id', - parentId: parentId || 'parentId', - childrenList: children || 'children' - } - - var childrenListMap = {} - var tree = [] - for (let d of data) { - let id = d[config.id] - childrenListMap[id] = d - if (!d[config.childrenList]) { - d[config.childrenList] = [] - } - } - - for (let d of data) { - let parentId = d[config.parentId] - let parentObj = childrenListMap[parentId] - if (!parentObj) { - tree.push(d) - } else { - parentObj[config.childrenList].push(d) - } - } - return tree -} - -/** -* 参数处理 -* @param {*} params 参数 -*/ -export function tansParams(params) { - let result = '' - for (const propName of Object.keys(params)) { - const value = params[propName] - var part = encodeURIComponent(propName) + "=" - if (value !== null && value !== "" && typeof (value) !== "undefined") { - if (typeof value === 'object') { - for (const key of Object.keys(value)) { - if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { - let params = propName + '[' + key + ']' - var subPart = encodeURIComponent(params) + "=" - result += subPart + encodeURIComponent(value[key]) + "&" - } - } - } else { - result += part + encodeURIComponent(value) + "&" - } - } - } - return result -} - -// 返回项目路径 -export function getNormalPath(p) { - if (p.length === 0 || !p || p == 'undefined') { - return p - } - let res = p.replace('//', '/') - if (res[res.length - 1] === '/') { - return res.slice(0, res.length - 1) - } - return res -} - -// 验证是否为blob格式 -export function blobValidate(data) { - return data.type !== 'application/json' -} diff --git a/src/utils/scroll-to.js b/src/utils/scroll-to.js deleted file mode 100644 index c5d8e04..0000000 --- a/src/utils/scroll-to.js +++ /dev/null @@ -1,58 +0,0 @@ -Math.easeInOutQuad = function(t, b, c, d) { - t /= d / 2 - if (t < 1) { - return c / 2 * t * t + b - } - t-- - return -c / 2 * (t * (t - 2) - 1) + b -} - -// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts -var requestAnimFrame = (function() { - return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) } -})() - -/** - * Because it's so fucking difficult to detect the scrolling element, just move them all - * @param {number} amount - */ -function move(amount) { - document.documentElement.scrollTop = amount - document.body.parentNode.scrollTop = amount - document.body.scrollTop = amount -} - -function position() { - return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop -} - -/** - * @param {number} to - * @param {number} duration - * @param {Function} callback - */ -export function scrollTo(to, duration, callback) { - const start = position() - const change = to - start - const increment = 20 - let currentTime = 0 - duration = (typeof (duration) === 'undefined') ? 500 : duration - var animateScroll = function() { - // increment the time - currentTime += increment - // find the value with the quadratic in-out easing function - var val = Math.easeInOutQuad(currentTime, start, change, duration) - // move the document.body - move(val) - // do the animation unless its over - if (currentTime < duration) { - requestAnimFrame(animateScroll) - } else { - if (callback && typeof (callback) === 'function') { - // the animation is done so lets callback - callback() - } - } - } - animateScroll() -} diff --git a/src/utils/theme.js b/src/utils/theme.js deleted file mode 100644 index f4badc6..0000000 --- a/src/utils/theme.js +++ /dev/null @@ -1,49 +0,0 @@ -// 处理主题样式 -export function handleThemeStyle(theme) { - document.documentElement.style.setProperty('--el-color-primary', theme) - for (let i = 1; i <= 9; i++) { - document.documentElement.style.setProperty(`--el-color-primary-light-${i}`, `${getLightColor(theme, i / 10)}`) - } - for (let i = 1; i <= 9; i++) { - document.documentElement.style.setProperty(`--el-color-primary-dark-${i}`, `${getDarkColor(theme, i / 10)}`) - } -} - -// hex颜色转rgb颜色 -export function hexToRgb(str) { - str = str.replace('#', '') - let hexs = str.match(/../g) - for (let i = 0; i < 3; i++) { - hexs[i] = parseInt(hexs[i], 16) - } - return hexs -} - -// rgb颜色转Hex颜色 -export function rgbToHex(r, g, b) { - let hexs = [r.toString(16), g.toString(16), b.toString(16)] - for (let i = 0; i < 3; i++) { - if (hexs[i].length == 1) { - hexs[i] = `0${hexs[i]}` - } - } - return `#${hexs.join('')}` -} - -// 变浅颜色值 -export function getLightColor(color, level) { - let rgb = hexToRgb(color) - for (let i = 0; i < 3; i++) { - rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]) - } - return rgbToHex(rgb[0], rgb[1], rgb[2]) -} - -// 变深颜色值 -export function getDarkColor(color, level) { - let rgb = hexToRgb(color) - for (let i = 0; i < 3; i++) { - rgb[i] = Math.floor(rgb[i] * (1 - level)) - } - return rgbToHex(rgb[0], rgb[1], rgb[2]) -} diff --git a/src/utils/validate.js b/src/utils/validate.js deleted file mode 100644 index 6a4c0c5..0000000 --- a/src/utils/validate.js +++ /dev/null @@ -1,114 +0,0 @@ -/** - * 路径匹配器 - * @param {string} pattern - * @param {string} path - * @returns {Boolean} - */ -export function isPathMatch(pattern, path) { - const regexPattern = pattern.replace(/\//g, '\\/').replace(/\*\*/g, '.*').replace(/\*/g, '[^\\/]*') - const regex = new RegExp(`^${regexPattern}$`) - return regex.test(path) -} - -/** - * 判断value字符串是否为空 - * @param {string} value - * @returns {Boolean} - */ -export function isEmpty(value) { - if (value == null || value == "" || value == undefined || value == "undefined") { - return true - } - return false -} - -/** - * 判断url是否是http或https - * @param {string} url - * @returns {Boolean} - */ -export function isHttp(url) { - return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1 -} - -/** - * 判断path是否为外链 - * @param {string} path - * @returns {Boolean} - */ -export function isExternal(path) { - return /^(https?:|mailto:|tel:)/.test(path) -} - -/** - * @param {string} str - * @returns {Boolean} - */ -export function validUsername(str) { - const valid_map = ['admin', 'editor'] - return valid_map.indexOf(str.trim()) >= 0 -} - -/** - * @param {string} url - * @returns {Boolean} - */ -export function validURL(url) { - const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ - return reg.test(url) -} - -/** - * @param {string} str - * @returns {Boolean} - */ -export function validLowerCase(str) { - const reg = /^[a-z]+$/ - return reg.test(str) -} - -/** - * @param {string} str - * @returns {Boolean} - */ -export function validUpperCase(str) { - const reg = /^[A-Z]+$/ - return reg.test(str) -} - -/** - * @param {string} str - * @returns {Boolean} - */ -export function validAlphabets(str) { - const reg = /^[A-Za-z]+$/ - return reg.test(str) -} - -/** - * @param {string} email - * @returns {Boolean} - */ -export function validEmail(email) { - const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - return reg.test(email) -} - -/** - * @param {string} str - * @returns {Boolean} - */ -export function isString(str) { - return typeof str === 'string' || str instanceof String -} - -/** - * @param {Array} arg - * @returns {Boolean} - */ -export function isArray(arg) { - if (typeof Array.isArray === 'undefined') { - return Object.prototype.toString.call(arg) === '[object Array]' - } - return Array.isArray(arg) -} diff --git a/src/views/error/401.vue b/src/views/error/401.vue deleted file mode 100644 index b361368..0000000 --- a/src/views/error/401.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/src/views/error/404.vue b/src/views/error/404.vue deleted file mode 100644 index f205303..0000000 --- a/src/views/error/404.vue +++ /dev/null @@ -1,227 +0,0 @@ - - - - - diff --git a/src/views/index.vue b/src/views/index.vue deleted file mode 100644 index 5124a7a..0000000 --- a/src/views/index.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - diff --git a/src/views/login.vue b/src/views/login.vue deleted file mode 100644 index 8b64e6b..0000000 --- a/src/views/login.vue +++ /dev/null @@ -1,229 +0,0 @@ - - - - - diff --git a/src/views/monitor/cache/index.vue b/src/views/monitor/cache/index.vue deleted file mode 100644 index 271cc8e..0000000 --- a/src/views/monitor/cache/index.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - diff --git a/src/views/monitor/cache/list.vue b/src/views/monitor/cache/list.vue deleted file mode 100644 index 6515fcd..0000000 --- a/src/views/monitor/cache/list.vue +++ /dev/null @@ -1,246 +0,0 @@ - - - diff --git a/src/views/monitor/druid/index.vue b/src/views/monitor/druid/index.vue deleted file mode 100644 index 29c1aa7..0000000 --- a/src/views/monitor/druid/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue deleted file mode 100644 index 3af06c1..0000000 --- a/src/views/monitor/job/index.vue +++ /dev/null @@ -1,502 +0,0 @@ - - - diff --git a/src/views/monitor/job/log.vue b/src/views/monitor/job/log.vue deleted file mode 100644 index ef581fd..0000000 --- a/src/views/monitor/job/log.vue +++ /dev/null @@ -1,283 +0,0 @@ - - - diff --git a/src/views/monitor/logininfor/index.vue b/src/views/monitor/logininfor/index.vue deleted file mode 100644 index 6f38e35..0000000 --- a/src/views/monitor/logininfor/index.vue +++ /dev/null @@ -1,233 +0,0 @@ - - - diff --git a/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue deleted file mode 100644 index d6ec869..0000000 --- a/src/views/monitor/online/index.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - diff --git a/src/views/monitor/operlog/index.vue b/src/views/monitor/operlog/index.vue deleted file mode 100644 index 675a56c..0000000 --- a/src/views/monitor/operlog/index.vue +++ /dev/null @@ -1,310 +0,0 @@ - - - diff --git a/src/views/monitor/server/index.vue b/src/views/monitor/server/index.vue deleted file mode 100644 index 60ff80c..0000000 --- a/src/views/monitor/server/index.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue deleted file mode 100644 index 99dd4f5..0000000 --- a/src/views/redirect/index.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/register.vue b/src/views/register.vue deleted file mode 100644 index badd966..0000000 --- a/src/views/register.vue +++ /dev/null @@ -1,220 +0,0 @@ - - - - - diff --git a/src/views/system/config/index.vue b/src/views/system/config/index.vue deleted file mode 100644 index a358b0d..0000000 --- a/src/views/system/config/index.vue +++ /dev/null @@ -1,316 +0,0 @@ - - - diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue deleted file mode 100644 index c82e24d..0000000 --- a/src/views/system/dept/index.vue +++ /dev/null @@ -1,283 +0,0 @@ - - - diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue deleted file mode 100644 index 4869f94..0000000 --- a/src/views/system/dict/data.vue +++ /dev/null @@ -1,362 +0,0 @@ - - - diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue deleted file mode 100644 index 3671b74..0000000 --- a/src/views/system/dict/index.vue +++ /dev/null @@ -1,323 +0,0 @@ - - - diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue deleted file mode 100644 index ed41531..0000000 --- a/src/views/system/menu/index.vue +++ /dev/null @@ -1,452 +0,0 @@ - - - diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue deleted file mode 100644 index 7bb7c11..0000000 --- a/src/views/system/notice/index.vue +++ /dev/null @@ -1,292 +0,0 @@ - - - diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue deleted file mode 100644 index 9e760d1..0000000 --- a/src/views/system/post/index.vue +++ /dev/null @@ -1,287 +0,0 @@ - - - diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue deleted file mode 100644 index c607f63..0000000 --- a/src/views/system/role/authUser.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - - diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue deleted file mode 100644 index 793cba6..0000000 --- a/src/views/system/role/index.vue +++ /dev/null @@ -1,584 +0,0 @@ - - - diff --git a/src/views/system/role/selectUser.vue b/src/views/system/role/selectUser.vue deleted file mode 100644 index 0796618..0000000 --- a/src/views/system/role/selectUser.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue deleted file mode 100644 index a7546aa..0000000 --- a/src/views/system/user/authRole.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue deleted file mode 100644 index 2cfb05e..0000000 --- a/src/views/system/user/index.vue +++ /dev/null @@ -1,538 +0,0 @@ - - - diff --git a/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue deleted file mode 100644 index 719a028..0000000 --- a/src/views/system/user/profile/index.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue deleted file mode 100644 index 73c6b18..0000000 --- a/src/views/system/user/profile/resetPwd.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - diff --git a/src/views/system/user/profile/userAvatar.vue b/src/views/system/user/profile/userAvatar.vue deleted file mode 100644 index 64d2c94..0000000 --- a/src/views/system/user/profile/userAvatar.vue +++ /dev/null @@ -1,180 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue deleted file mode 100644 index 5099ffa..0000000 --- a/src/views/system/user/profile/userInfo.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/src/views/tool/build/CodeTypeDialog.vue b/src/views/tool/build/CodeTypeDialog.vue deleted file mode 100644 index de0beb7..0000000 --- a/src/views/tool/build/CodeTypeDialog.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/tool/build/DraggableItem.vue b/src/views/tool/build/DraggableItem.vue deleted file mode 100644 index 9ae2354..0000000 --- a/src/views/tool/build/DraggableItem.vue +++ /dev/null @@ -1,68 +0,0 @@ - - \ No newline at end of file diff --git a/src/views/tool/build/IconsDialog.vue b/src/views/tool/build/IconsDialog.vue deleted file mode 100644 index 98d9c13..0000000 --- a/src/views/tool/build/IconsDialog.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - diff --git a/src/views/tool/build/RightPanel.vue b/src/views/tool/build/RightPanel.vue deleted file mode 100644 index 5fe80fb..0000000 --- a/src/views/tool/build/RightPanel.vue +++ /dev/null @@ -1,906 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/tool/build/TreeNodeDialog.vue b/src/views/tool/build/TreeNodeDialog.vue deleted file mode 100644 index 372d3af..0000000 --- a/src/views/tool/build/TreeNodeDialog.vue +++ /dev/null @@ -1,93 +0,0 @@ - - diff --git a/src/views/tool/build/index.vue b/src/views/tool/build/index.vue deleted file mode 100644 index e630740..0000000 --- a/src/views/tool/build/index.vue +++ /dev/null @@ -1,653 +0,0 @@ - - - - - diff --git a/src/views/tool/gen/basicInfoForm.vue b/src/views/tool/gen/basicInfoForm.vue deleted file mode 100644 index 92c3ca9..0000000 --- a/src/views/tool/gen/basicInfoForm.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/src/views/tool/gen/createTable.vue b/src/views/tool/gen/createTable.vue deleted file mode 100644 index ef6f8f3..0000000 --- a/src/views/tool/gen/createTable.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - diff --git a/src/views/tool/gen/editTable.vue b/src/views/tool/gen/editTable.vue deleted file mode 100644 index 7cfaebb..0000000 --- a/src/views/tool/gen/editTable.vue +++ /dev/null @@ -1,211 +0,0 @@ - - - diff --git a/src/views/tool/gen/genInfoForm.vue b/src/views/tool/gen/genInfoForm.vue deleted file mode 100644 index 75046e8..0000000 --- a/src/views/tool/gen/genInfoForm.vue +++ /dev/null @@ -1,305 +0,0 @@ - - - diff --git a/src/views/tool/gen/importTable.vue b/src/views/tool/gen/importTable.vue deleted file mode 100644 index b28eacb..0000000 --- a/src/views/tool/gen/importTable.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - diff --git a/src/views/tool/gen/index.vue b/src/views/tool/gen/index.vue deleted file mode 100644 index c2a0877..0000000 --- a/src/views/tool/gen/index.vue +++ /dev/null @@ -1,308 +0,0 @@ - - - diff --git a/src/views/tool/swagger/index.vue b/src/views/tool/swagger/index.vue deleted file mode 100644 index a44fa71..0000000 --- a/src/views/tool/swagger/index.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index d3d9b6d..0000000 --- a/vite.config.js +++ /dev/null @@ -1,79 +0,0 @@ -import { defineConfig, loadEnv } from 'vite' -import path from 'path' -import createVitePlugins from './vite/plugins' - -const baseUrl = 'http://localhost:8080' // 后端接口 - -// https://vitejs.dev/config/ -export default defineConfig(({ mode, command }) => { - const env = loadEnv(mode, process.cwd()) - const { VITE_APP_ENV } = env - return { - // 部署生产环境和开发环境下的URL。 - // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上 - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - base: VITE_APP_ENV === 'production' ? '/' : '/', - plugins: createVitePlugins(env, command === 'build'), - resolve: { - // https://cn.vitejs.dev/config/#resolve-alias - alias: { - // 设置路径 - '~': path.resolve(__dirname, './'), - // 设置别名 - '@': path.resolve(__dirname, './src') - }, - // https://cn.vitejs.dev/config/#resolve-extensions - extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] - }, - // 打包配置 - build: { - // https://vite.dev/config/build-options.html - sourcemap: command === 'build' ? false : 'inline', - outDir: 'dist', - assetsDir: 'assets', - chunkSizeWarningLimit: 2000, - rollupOptions: { - output: { - chunkFileNames: 'static/js/[name]-[hash].js', - entryFileNames: 'static/js/[name]-[hash].js', - assetFileNames: 'static/[ext]/[name]-[hash].[ext]' - } - } - }, - // vite 相关配置 - server: { - port: 80, - host: true, - open: true, - proxy: { - // https://cn.vitejs.dev/config/#server-proxy - '/dev-api': { - target: baseUrl, - changeOrigin: true, - rewrite: (p) => p.replace(/^\/dev-api/, '') - }, - // springdoc proxy - '^/v3/api-docs/(.*)': { - target: baseUrl, - changeOrigin: true, - } - } - }, - css: { - postcss: { - plugins: [ - { - postcssPlugin: 'internal:charset-removal', - AtRule: { - charset: (atRule) => { - if (atRule.name === 'charset') { - atRule.remove() - } - } - } - } - ] - } - } - } -}) diff --git a/vite/plugins/auto-import.js b/vite/plugins/auto-import.js deleted file mode 100644 index a5d3576..0000000 --- a/vite/plugins/auto-import.js +++ /dev/null @@ -1,12 +0,0 @@ -import autoImport from 'unplugin-auto-import/vite' - -export default function createAutoImport() { - return autoImport({ - imports: [ - 'vue', - 'vue-router', - 'pinia' - ], - dts: false - }) -} diff --git a/vite/plugins/compression.js b/vite/plugins/compression.js deleted file mode 100644 index e90aaec..0000000 --- a/vite/plugins/compression.js +++ /dev/null @@ -1,28 +0,0 @@ -import compression from 'vite-plugin-compression' - -export default function createCompression(env) { - const { VITE_BUILD_COMPRESS } = env - const plugin = [] - if (VITE_BUILD_COMPRESS) { - const compressList = VITE_BUILD_COMPRESS.split(',') - if (compressList.includes('gzip')) { - // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 - plugin.push( - compression({ - ext: '.gz', - deleteOriginFile: false - }) - ) - } - if (compressList.includes('brotli')) { - plugin.push( - compression({ - ext: '.br', - algorithm: 'brotliCompress', - deleteOriginFile: false - }) - ) - } - } - return plugin -} diff --git a/vite/plugins/index.js b/vite/plugins/index.js deleted file mode 100644 index 10e17c3..0000000 --- a/vite/plugins/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import vue from '@vitejs/plugin-vue' - -import createAutoImport from './auto-import' -import createSvgIcon from './svg-icon' -import createCompression from './compression' -import createSetupExtend from './setup-extend' - -export default function createVitePlugins(viteEnv, isBuild = false) { - const vitePlugins = [vue()] - vitePlugins.push(createAutoImport()) - vitePlugins.push(createSetupExtend()) - vitePlugins.push(createSvgIcon(isBuild)) - isBuild && vitePlugins.push(...createCompression(viteEnv)) - return vitePlugins -} diff --git a/vite/plugins/setup-extend.js b/vite/plugins/setup-extend.js deleted file mode 100644 index ed8342e..0000000 --- a/vite/plugins/setup-extend.js +++ /dev/null @@ -1,5 +0,0 @@ -import setupExtend from 'unplugin-vue-setup-extend-plus/vite' - -export default function createSetupExtend() { - return setupExtend({}) -} diff --git a/vite/plugins/svg-icon.js b/vite/plugins/svg-icon.js deleted file mode 100644 index 30a4140..0000000 --- a/vite/plugins/svg-icon.js +++ /dev/null @@ -1,10 +0,0 @@ -import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' -import path from 'path' - -export default function createSvgIcon(isBuild) { - return createSvgIconsPlugin({ - iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')], - symbolId: 'icon-[dir]-[name]', - svgoOptions: isBuild - }) -}