diff --git a/main/.env.development b/main/.env.development index 6335034..aa5286e 100644 --- a/main/.env.development +++ b/main/.env.development @@ -5,7 +5,7 @@ VITE_APP_TITLE = '数字农业产业管理平台' VITE_APP_SUB_OS = '//localhost:9526/sub-operation-service/' VITE_APP_SUB_OA = '//localhost:9527/sub-operation-admin/' VITE_APP_SUB_GAS = '//localhost:9528/sub-government-affairs-service/' -VITE_APP_SUB_GAA = '//localhost:9525/sub-government-affairs-admin/' +VITE_APP_SUB_GAA = '//localhost:9525/sub-government-admin/' VITE_APP_SUB_GSS = '//localhost:9529/sub-government-screen-service/' # 接口 VITE_APP_BASE_API = '/apis' diff --git a/main/.env.production b/main/.env.production index 7d32088..500eb93 100644 --- a/main/.env.production +++ b/main/.env.production @@ -4,7 +4,7 @@ VITE_APP_TITLE = '数字农业产业管理平台' VITE_APP_SUB_OS = '//47.109.205.240:80/sub-operation-service/' VITE_APP_SUB_OA = '//47.109.205.240:80/sub-operation-admin/' VITE_APP_SUB_GAS = '//47.109.205.240:80/sub-government-affairs-service/' -VITE_APP_SUB_GAA = '//47.109.205.240:80/sub-government-affairs-admin/' +VITE_APP_SUB_GAA = '//47.109.205.240:80/sub-government-admin/' VITE_APP_SUB_GSS = '//47.109.205.240:80/sub-government-screen-service/' # 接口 VITE_APP_BASE_API = '/apis' diff --git a/main/.env.test b/main/.env.test index 014e47a..8bdf169 100644 --- a/main/.env.test +++ b/main/.env.test @@ -4,7 +4,7 @@ VITE_APP_TITLE = '数字农业产业管理平台' VITE_APP_SUB_OS = '//192.168.18.99:88/sub-operation-service/' VITE_APP_SUB_OA = '//192.168.18.99:88/sub-operation-admin/' VITE_APP_SUB_GAS = '//192.168.18.99:88/sub-government-affairs-service/' -VITE_APP_SUB_GAA = '//192.168.18.99:88/sub-government-affairs-admin/' +VITE_APP_SUB_GAA = '//192.168.18.99:88/sub-government-admin/' VITE_APP_SUB_GSS = '//192.168.18.99:88/sub-government-screen-service/' # 接口 VITE_APP_BASE_API = '/apis' diff --git a/main/src/micro/app.js b/main/src/micro/app.js index 9eb68b3..9d1df48 100644 --- a/main/src/micro/app.js +++ b/main/src/micro/app.js @@ -1,6 +1,6 @@ import actions from './actions'; -const { VITE_APP_SUB_OS, VITE_APP_SUB_ADMIN, VITE_APP_SUB_GAS, VITE_APP_SUB_GSS } = import.meta.env; +const { VITE_APP_SUB_OS, VITE_APP_SUB_OA, VITE_APP_SUB_APP, VITE_APP_SUB_GAA, VITE_APP_SUB_GAS, VITE_APP_SUB_GSS } = import.meta.env; export const leftApps = [ { @@ -11,23 +11,23 @@ export const leftApps = [ icon: 'images/platform/icon-home.png', }, { - name: 'sub-admin', - entry: VITE_APP_SUB_ADMIN, - activeRule: '/sub-admin', + name: 'sub-operation-admin', + entry: VITE_APP_SUB_OA, + activeRule: '/sub-operation-admin', title: '管理后台', icon: 'images/platform/icon-admin.png', }, { name: 'sub-app', - entry: VITE_APP_SUB_ADMIN, + entry: VITE_APP_SUB_APP, activeRule: '/sub-app', title: 'APP', icon: 'images/platform/icon-app.png', }, { - name: 'sub-screen', - entry: VITE_APP_SUB_ADMIN, - activeRule: '/sub-screen', + name: 'sub-government-screen-service', + entry: VITE_APP_SUB_GSS, + activeRule: '/sub-government-screen-service', title: '数据大屏', icon: 'images/platform/icon-screen.png', }, @@ -43,15 +43,15 @@ export const rightApps = [ }, { name: 'sub-government-admin', - entry: VITE_APP_SUB_ADMIN, - activeRule: '/sub-government-admin', + entry: VITE_APP_SUB_GAA, + activeRule: '/sub-government-affairs-service', title: '管理后台', icon: 'images/platform/icon-admin.png', }, { - name: 'sub-government-app', - entry: VITE_APP_SUB_ADMIN, - activeRule: '/sub-government-app', + name: 'sub-app', + entry: VITE_APP_SUB_APP, + activeRule: '/sub-app', title: 'APP', icon: 'images/platform/icon-app.png', }, @@ -65,6 +65,20 @@ export const rightApps = [ ]; export const defaultApps = [ + { + name: 'sub-operation-service', + entry: VITE_APP_SUB_OS, + activeRule: '/sub-operation-service', + title: '运营服务', + icon: 'images/platform/icon-home.png', + }, + { + name: 'sub-operation-admin', + entry: VITE_APP_SUB_OA, + activeRule: '/sub-operation-admin', + title: '运营管理后台', + icon: 'images/platform/icon-admin.png', + }, { name: 'sub-government-affairs-service', entry: VITE_APP_SUB_GAS, @@ -79,16 +93,8 @@ export const defaultApps = [ title: '数据大屏', icon: 'images/platform/icon-screen.png', }, - { - name: 'sub-operation-service', - entry: VITE_APP_SUB_OS, - activeRule: '/sub-operation-service', - title: '运营服务', - icon: 'images/platform/icon-home.png', - }, ]; -// export const microApps = [...defaultApps, ...leftApps, ...rightApps]; export const microApps = [...defaultApps]; const apps = microApps.map((item) => { diff --git a/main/src/views/index.vue b/main/src/views/index.vue index c52f0eb..a3dcbdb 100644 --- a/main/src/views/index.vue +++ b/main/src/views/index.vue @@ -31,8 +31,7 @@ - diff --git a/sub-admin/src/api/login.js b/sub-admin/src/api/login.js deleted file mode 100644 index e8ad5a9..0000000 --- a/sub-admin/src/api/login.js +++ /dev/null @@ -1,62 +0,0 @@ -import request from '@/utils/request' - -// 登录方法 -export function login(username, password, code, uuid) { - return request({ - url: '/auth/login', - headers: { - isToken: false, - repeatSubmit: false, - }, - method: 'post', - data: { username, password, code, uuid }, - }) -} - -// 注册方法 -export function register(data) { - return request({ - url: '/auth/register', - headers: { - isToken: false, - }, - method: 'post', - data: data, - }) -} - -// 刷新方法 -export function refreshToken() { - return request({ - url: '/auth/refresh', - method: 'post', - }) -} - -// 获取用户详细信息 -export function getInfo() { - return request({ - url: '/system/user/getInfo', - method: 'get', - }) -} - -// 退出方法 -export function logout() { - return request({ - url: '/auth/logout', - method: 'delete', - }) -} - -// 获取验证码 -export function getCodeImg() { - return request({ - url: '/code', - headers: { - isToken: false, - }, - method: 'get', - timeout: 20000, - }) -} diff --git a/sub-admin/src/api/menu.js b/sub-admin/src/api/menu.js deleted file mode 100644 index 068f717..0000000 --- a/sub-admin/src/api/menu.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/utils/request'; - -// 获取路由 -export const getRouters = () => { - return request({ - url: '/system/menu/getRouters', - method: 'get', - }); -}; diff --git a/sub-admin/src/api/monitor/job.js b/sub-admin/src/api/monitor/job.js deleted file mode 100644 index 220341a..0000000 --- a/sub-admin/src/api/monitor/job.js +++ /dev/null @@ -1,70 +0,0 @@ -import request from '@/utils/request'; - -// 查询定时任务调度列表 -export function listJob(query) { - return request({ - url: '/schedule/job/list', - method: 'get', - params: query, - }); -} - -// 查询定时任务调度详细 -export function getJob(jobId) { - return request({ - url: '/schedule/job/' + jobId, - method: 'get', - }); -} - -// 新增定时任务调度 -export function addJob(data) { - return request({ - url: '/schedule/job', - method: 'post', - data: data, - }); -} - -// 修改定时任务调度 -export function updateJob(data) { - return request({ - url: '/schedule/job', - method: 'put', - data: data, - }); -} - -// 删除定时任务调度 -export function delJob(jobId) { - return request({ - url: '/schedule/job/' + jobId, - method: 'delete', - }); -} - -// 任务状态修改 -export function changeJobStatus(jobId, status) { - const data = { - jobId, - status, - }; - return request({ - url: '/schedule/job/changeStatus', - method: 'put', - data: data, - }); -} - -// 定时任务立即执行一次 -export function runJob(jobId, jobGroup) { - const data = { - jobId, - jobGroup, - }; - return request({ - url: '/schedule/job/run', - method: 'put', - data: data, - }); -} diff --git a/sub-admin/src/api/monitor/jobLog.js b/sub-admin/src/api/monitor/jobLog.js deleted file mode 100644 index bb4e0d3..0000000 --- a/sub-admin/src/api/monitor/jobLog.js +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request'; - -// 查询调度日志列表 -export function listJobLog(query) { - return request({ - url: '/schedule/job/log/list', - method: 'get', - params: query, - }); -} - -// 删除调度日志 -export function delJobLog(jobLogId) { - return request({ - url: '/schedule/job/log/' + jobLogId, - method: 'delete', - }); -} - -// 清空调度日志 -export function cleanJobLog() { - return request({ - url: '/schedule/job/log/clean', - method: 'delete', - }); -} diff --git a/sub-admin/src/api/monitor/online.js b/sub-admin/src/api/monitor/online.js deleted file mode 100644 index caa68d9..0000000 --- a/sub-admin/src/api/monitor/online.js +++ /dev/null @@ -1,18 +0,0 @@ -import request from '@/utils/request'; - -// 查询在线用户列表 -export function list(query) { - return request({ - url: '/system/online/list', - method: 'get', - params: query, - }); -} - -// 强退用户 -export function forceLogout(tokenId) { - return request({ - url: '/system/online/' + tokenId, - method: 'delete', - }); -} diff --git a/sub-admin/src/api/system/config.js b/sub-admin/src/api/system/config.js deleted file mode 100644 index bbcfb5a..0000000 --- a/sub-admin/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/sub-admin/src/api/system/dept.js b/sub-admin/src/api/system/dept.js deleted file mode 100644 index fb3903d..0000000 --- a/sub-admin/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', - }); -} diff --git a/sub-admin/src/api/system/dict/data.js b/sub-admin/src/api/system/dict/data.js deleted file mode 100644 index 88f6651..0000000 --- a/sub-admin/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/sub-admin/src/api/system/dict/type.js b/sub-admin/src/api/system/dict/type.js deleted file mode 100644 index 8a29398..0000000 --- a/sub-admin/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/sub-admin/src/api/system/logininfor.js b/sub-admin/src/api/system/logininfor.js deleted file mode 100644 index 868eb9a..0000000 --- a/sub-admin/src/api/system/logininfor.js +++ /dev/null @@ -1,33 +0,0 @@ -import request from '@/utils/request'; - -// 查询登录日志列表 -export function list(query) { - return request({ - url: '/system/logininfor/list', - method: 'get', - params: query, - }); -} - -// 删除登录日志 -export function delLogininfor(infoId) { - return request({ - url: '/system/logininfor/' + infoId, - method: 'delete', - }); -} - -// 解锁用户登录状态 -export function unlockLogininfor(userName) { - return request({ - url: '/system/logininfor/unlock/' + userName, - method: 'get', - }); -} -// 清空登录日志 -export function cleanLogininfor() { - return request({ - url: '/system/logininfor/clean', - method: 'delete', - }); -} diff --git a/sub-admin/src/api/system/menu.js b/sub-admin/src/api/system/menu.js deleted file mode 100644 index 3814585..0000000 --- a/sub-admin/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', - }); -} diff --git a/sub-admin/src/api/system/notice.js b/sub-admin/src/api/system/notice.js deleted file mode 100644 index 8aee810..0000000 --- a/sub-admin/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', - }); -} diff --git a/sub-admin/src/api/system/operlog.js b/sub-admin/src/api/system/operlog.js deleted file mode 100644 index 9d8395b..0000000 --- a/sub-admin/src/api/system/operlog.js +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request'; - -// 查询操作日志列表 -export function list(query) { - return request({ - url: '/system/operlog/list', - method: 'get', - params: query, - }); -} - -// 删除操作日志 -export function delOperlog(operId) { - return request({ - url: '/system/operlog/' + operId, - method: 'delete', - }); -} - -// 清空操作日志 -export function cleanOperlog() { - return request({ - url: '/system/operlog/clean', - method: 'delete', - }); -} diff --git a/sub-admin/src/api/system/post.js b/sub-admin/src/api/system/post.js deleted file mode 100644 index 4c626e2..0000000 --- a/sub-admin/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/sub-admin/src/api/system/role.js b/sub-admin/src/api/system/role.js deleted file mode 100644 index efbb114..0000000 --- a/sub-admin/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/sub-admin/src/api/system/user.js b/sub-admin/src/api/system/user.js deleted file mode 100644 index 990cd33..0000000 --- a/sub-admin/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/sub-admin/src/api/tool/gen.js b/sub-admin/src/api/tool/gen.js deleted file mode 100644 index 9ad2c4d..0000000 --- a/sub-admin/src/api/tool/gen.js +++ /dev/null @@ -1,76 +0,0 @@ -import request from '@/utils/request'; - -// 查询生成表数据 -export function listTable(query) { - return request({ - url: '/code/gen/list', - method: 'get', - params: query, - }); -} -// 查询db数据库列表 -export function listDbTable(query) { - return request({ - url: '/code/gen/db/list', - method: 'get', - params: query, - }); -} - -// 查询表详细信息 -export function getGenTable(tableId) { - return request({ - url: '/code/gen/' + tableId, - method: 'get', - }); -} - -// 修改代码生成信息 -export function updateGenTable(data) { - return request({ - url: '/code/gen', - method: 'put', - data: data, - }); -} - -// 导入表 -export function importTable(data) { - return request({ - url: '/code/gen/importTable', - method: 'post', - params: data, - }); -} - -// 预览生成代码 -export function previewTable(tableId) { - return request({ - url: '/code/gen/preview/' + tableId, - method: 'get', - }); -} - -// 删除表数据 -export function delTable(tableId) { - return request({ - url: '/code/gen/' + tableId, - method: 'delete', - }); -} - -// 生成代码(自定义路径) -export function genCode(tableName) { - return request({ - url: '/code/gen/genCode/' + tableName, - method: 'get', - }); -} - -// 同步数据库 -export function synchDb(tableName) { - return request({ - url: '/code/gen/synchDb/' + tableName, - method: 'get', - }); -} diff --git a/sub-admin/src/assets/401_images/401.gif b/sub-admin/src/assets/401_images/401.gif deleted file mode 100644 index cd6e0d9..0000000 Binary files a/sub-admin/src/assets/401_images/401.gif and /dev/null differ diff --git a/sub-admin/src/assets/404_images/404.png b/sub-admin/src/assets/404_images/404.png deleted file mode 100644 index 3d8e230..0000000 Binary files a/sub-admin/src/assets/404_images/404.png and /dev/null differ diff --git a/sub-admin/src/assets/404_images/404_cloud.png b/sub-admin/src/assets/404_images/404_cloud.png deleted file mode 100644 index c6281d0..0000000 Binary files a/sub-admin/src/assets/404_images/404_cloud.png and /dev/null differ diff --git a/sub-admin/src/assets/icons/index.js b/sub-admin/src/assets/icons/index.js deleted file mode 100644 index f69cbfb..0000000 --- a/sub-admin/src/assets/icons/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import Vue from 'vue'; -import SvgIcon from '@/components/SvgIcon'; // svg component - -// register globally -Vue.component('svg-icon', SvgIcon); - -const req = require.context('./svg', false, /\.svg$/); -const requireAll = (requireContext) => requireContext.keys().map(requireContext); -requireAll(req); diff --git a/sub-admin/src/assets/icons/svg/404.svg b/sub-admin/src/assets/icons/svg/404.svg deleted file mode 100644 index 6df5019..0000000 --- a/sub-admin/src/assets/icons/svg/404.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/bug.svg b/sub-admin/src/assets/icons/svg/bug.svg deleted file mode 100644 index 05a150d..0000000 --- a/sub-admin/src/assets/icons/svg/bug.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/build.svg b/sub-admin/src/assets/icons/svg/build.svg deleted file mode 100644 index 97c4688..0000000 --- a/sub-admin/src/assets/icons/svg/build.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/button.svg b/sub-admin/src/assets/icons/svg/button.svg deleted file mode 100644 index 904fddc..0000000 --- a/sub-admin/src/assets/icons/svg/button.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/cascader.svg b/sub-admin/src/assets/icons/svg/cascader.svg deleted file mode 100644 index e256024..0000000 --- a/sub-admin/src/assets/icons/svg/cascader.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/chart.svg b/sub-admin/src/assets/icons/svg/chart.svg deleted file mode 100644 index 27728fb..0000000 --- a/sub-admin/src/assets/icons/svg/chart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/checkbox.svg b/sub-admin/src/assets/icons/svg/checkbox.svg deleted file mode 100644 index 013fd3a..0000000 --- a/sub-admin/src/assets/icons/svg/checkbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/client.svg b/sub-admin/src/assets/icons/svg/client.svg deleted file mode 100644 index 235d634..0000000 --- a/sub-admin/src/assets/icons/svg/client.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/clipboard.svg b/sub-admin/src/assets/icons/svg/clipboard.svg deleted file mode 100644 index 90923ff..0000000 --- a/sub-admin/src/assets/icons/svg/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/code.svg b/sub-admin/src/assets/icons/svg/code.svg deleted file mode 100644 index 5f9c5ab..0000000 --- a/sub-admin/src/assets/icons/svg/code.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/color.svg b/sub-admin/src/assets/icons/svg/color.svg deleted file mode 100644 index 44a81aa..0000000 --- a/sub-admin/src/assets/icons/svg/color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/component.svg b/sub-admin/src/assets/icons/svg/component.svg deleted file mode 100644 index 29c3458..0000000 --- a/sub-admin/src/assets/icons/svg/component.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/dashboard.svg b/sub-admin/src/assets/icons/svg/dashboard.svg deleted file mode 100644 index 5317d37..0000000 --- a/sub-admin/src/assets/icons/svg/dashboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/date-range.svg b/sub-admin/src/assets/icons/svg/date-range.svg deleted file mode 100644 index fda571e..0000000 --- a/sub-admin/src/assets/icons/svg/date-range.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/date.svg b/sub-admin/src/assets/icons/svg/date.svg deleted file mode 100644 index 52dc73e..0000000 --- a/sub-admin/src/assets/icons/svg/date.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/dict.svg b/sub-admin/src/assets/icons/svg/dict.svg deleted file mode 100644 index 4849377..0000000 --- a/sub-admin/src/assets/icons/svg/dict.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/documentation.svg b/sub-admin/src/assets/icons/svg/documentation.svg deleted file mode 100644 index 7043122..0000000 --- a/sub-admin/src/assets/icons/svg/documentation.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/download.svg b/sub-admin/src/assets/icons/svg/download.svg deleted file mode 100644 index c896951..0000000 --- a/sub-admin/src/assets/icons/svg/download.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/drag.svg b/sub-admin/src/assets/icons/svg/drag.svg deleted file mode 100644 index 4185d3c..0000000 --- a/sub-admin/src/assets/icons/svg/drag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/druid.svg b/sub-admin/src/assets/icons/svg/druid.svg deleted file mode 100644 index a2b4b4e..0000000 --- a/sub-admin/src/assets/icons/svg/druid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/edit.svg b/sub-admin/src/assets/icons/svg/edit.svg deleted file mode 100644 index d26101f..0000000 --- a/sub-admin/src/assets/icons/svg/edit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/education.svg b/sub-admin/src/assets/icons/svg/education.svg deleted file mode 100644 index 7bfb01d..0000000 --- a/sub-admin/src/assets/icons/svg/education.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/email.svg b/sub-admin/src/assets/icons/svg/email.svg deleted file mode 100644 index 74d25e2..0000000 --- a/sub-admin/src/assets/icons/svg/email.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/example.svg b/sub-admin/src/assets/icons/svg/example.svg deleted file mode 100644 index 46f42b5..0000000 --- a/sub-admin/src/assets/icons/svg/example.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/excel.svg b/sub-admin/src/assets/icons/svg/excel.svg deleted file mode 100644 index 74d97b8..0000000 --- a/sub-admin/src/assets/icons/svg/excel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/exit-fullscreen.svg b/sub-admin/src/assets/icons/svg/exit-fullscreen.svg deleted file mode 100644 index 485c128..0000000 --- a/sub-admin/src/assets/icons/svg/exit-fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/eye-open.svg b/sub-admin/src/assets/icons/svg/eye-open.svg deleted file mode 100644 index 88dcc98..0000000 --- a/sub-admin/src/assets/icons/svg/eye-open.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/eye.svg b/sub-admin/src/assets/icons/svg/eye.svg deleted file mode 100644 index 16ed2d8..0000000 --- a/sub-admin/src/assets/icons/svg/eye.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/form.svg b/sub-admin/src/assets/icons/svg/form.svg deleted file mode 100644 index dcbaa18..0000000 --- a/sub-admin/src/assets/icons/svg/form.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/fullscreen.svg b/sub-admin/src/assets/icons/svg/fullscreen.svg deleted file mode 100644 index 0e86b6f..0000000 --- a/sub-admin/src/assets/icons/svg/fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/github.svg b/sub-admin/src/assets/icons/svg/github.svg deleted file mode 100644 index db0a0d4..0000000 --- a/sub-admin/src/assets/icons/svg/github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/guide.svg b/sub-admin/src/assets/icons/svg/guide.svg deleted file mode 100644 index b271001..0000000 --- a/sub-admin/src/assets/icons/svg/guide.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/icon.svg b/sub-admin/src/assets/icons/svg/icon.svg deleted file mode 100644 index 82be8ee..0000000 --- a/sub-admin/src/assets/icons/svg/icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/input.svg b/sub-admin/src/assets/icons/svg/input.svg deleted file mode 100644 index ab91381..0000000 --- a/sub-admin/src/assets/icons/svg/input.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/international.svg b/sub-admin/src/assets/icons/svg/international.svg deleted file mode 100644 index e9b56ee..0000000 --- a/sub-admin/src/assets/icons/svg/international.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/job.svg b/sub-admin/src/assets/icons/svg/job.svg deleted file mode 100644 index 2a93a25..0000000 --- a/sub-admin/src/assets/icons/svg/job.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/language.svg b/sub-admin/src/assets/icons/svg/language.svg deleted file mode 100644 index 0082b57..0000000 --- a/sub-admin/src/assets/icons/svg/language.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/link.svg b/sub-admin/src/assets/icons/svg/link.svg deleted file mode 100644 index 48197ba..0000000 --- a/sub-admin/src/assets/icons/svg/link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/list.svg b/sub-admin/src/assets/icons/svg/list.svg deleted file mode 100644 index 20259ed..0000000 --- a/sub-admin/src/assets/icons/svg/list.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/lock.svg b/sub-admin/src/assets/icons/svg/lock.svg deleted file mode 100644 index 74fee54..0000000 --- a/sub-admin/src/assets/icons/svg/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/log.svg b/sub-admin/src/assets/icons/svg/log.svg deleted file mode 100644 index d879d33..0000000 --- a/sub-admin/src/assets/icons/svg/log.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/logininfor.svg b/sub-admin/src/assets/icons/svg/logininfor.svg deleted file mode 100644 index 267f844..0000000 --- a/sub-admin/src/assets/icons/svg/logininfor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/message.svg b/sub-admin/src/assets/icons/svg/message.svg deleted file mode 100644 index 14ca817..0000000 --- a/sub-admin/src/assets/icons/svg/message.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/money.svg b/sub-admin/src/assets/icons/svg/money.svg deleted file mode 100644 index c1580de..0000000 --- a/sub-admin/src/assets/icons/svg/money.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/monitor.svg b/sub-admin/src/assets/icons/svg/monitor.svg deleted file mode 100644 index bc308cb..0000000 --- a/sub-admin/src/assets/icons/svg/monitor.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/nacos.svg b/sub-admin/src/assets/icons/svg/nacos.svg deleted file mode 100644 index bbbe3f1..0000000 --- a/sub-admin/src/assets/icons/svg/nacos.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/nested.svg b/sub-admin/src/assets/icons/svg/nested.svg deleted file mode 100644 index 06713a8..0000000 --- a/sub-admin/src/assets/icons/svg/nested.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/number.svg b/sub-admin/src/assets/icons/svg/number.svg deleted file mode 100644 index ad5ce9a..0000000 --- a/sub-admin/src/assets/icons/svg/number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/online.svg b/sub-admin/src/assets/icons/svg/online.svg deleted file mode 100644 index 330a202..0000000 --- a/sub-admin/src/assets/icons/svg/online.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/password.svg b/sub-admin/src/assets/icons/svg/password.svg deleted file mode 100644 index 6c64def..0000000 --- a/sub-admin/src/assets/icons/svg/password.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/pdf.svg b/sub-admin/src/assets/icons/svg/pdf.svg deleted file mode 100644 index 957aa0c..0000000 --- a/sub-admin/src/assets/icons/svg/pdf.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/people.svg b/sub-admin/src/assets/icons/svg/people.svg deleted file mode 100644 index 2bd54ae..0000000 --- a/sub-admin/src/assets/icons/svg/people.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/peoples.svg b/sub-admin/src/assets/icons/svg/peoples.svg deleted file mode 100644 index aab852e..0000000 --- a/sub-admin/src/assets/icons/svg/peoples.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/phone.svg b/sub-admin/src/assets/icons/svg/phone.svg deleted file mode 100644 index ab8e8c4..0000000 --- a/sub-admin/src/assets/icons/svg/phone.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/post.svg b/sub-admin/src/assets/icons/svg/post.svg deleted file mode 100644 index 2922c61..0000000 --- a/sub-admin/src/assets/icons/svg/post.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/qq.svg b/sub-admin/src/assets/icons/svg/qq.svg deleted file mode 100644 index ee13d4e..0000000 --- a/sub-admin/src/assets/icons/svg/qq.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/question.svg b/sub-admin/src/assets/icons/svg/question.svg deleted file mode 100644 index cf75bd4..0000000 --- a/sub-admin/src/assets/icons/svg/question.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/radio.svg b/sub-admin/src/assets/icons/svg/radio.svg deleted file mode 100644 index 0cde345..0000000 --- a/sub-admin/src/assets/icons/svg/radio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/rate.svg b/sub-admin/src/assets/icons/svg/rate.svg deleted file mode 100644 index aa3b14d..0000000 --- a/sub-admin/src/assets/icons/svg/rate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/row.svg b/sub-admin/src/assets/icons/svg/row.svg deleted file mode 100644 index 0780992..0000000 --- a/sub-admin/src/assets/icons/svg/row.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/search.svg b/sub-admin/src/assets/icons/svg/search.svg deleted file mode 100644 index 84233dd..0000000 --- a/sub-admin/src/assets/icons/svg/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/select.svg b/sub-admin/src/assets/icons/svg/select.svg deleted file mode 100644 index d628382..0000000 --- a/sub-admin/src/assets/icons/svg/select.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/sentinel.svg b/sub-admin/src/assets/icons/svg/sentinel.svg deleted file mode 100644 index 1f00040..0000000 --- a/sub-admin/src/assets/icons/svg/sentinel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/server.svg b/sub-admin/src/assets/icons/svg/server.svg deleted file mode 100644 index eb287e3..0000000 --- a/sub-admin/src/assets/icons/svg/server.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/shopping.svg b/sub-admin/src/assets/icons/svg/shopping.svg deleted file mode 100644 index 87513e7..0000000 --- a/sub-admin/src/assets/icons/svg/shopping.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/size.svg b/sub-admin/src/assets/icons/svg/size.svg deleted file mode 100644 index ddb25b8..0000000 --- a/sub-admin/src/assets/icons/svg/size.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/skill.svg b/sub-admin/src/assets/icons/svg/skill.svg deleted file mode 100644 index a3b7312..0000000 --- a/sub-admin/src/assets/icons/svg/skill.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/slider.svg b/sub-admin/src/assets/icons/svg/slider.svg deleted file mode 100644 index fbe4f39..0000000 --- a/sub-admin/src/assets/icons/svg/slider.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/star.svg b/sub-admin/src/assets/icons/svg/star.svg deleted file mode 100644 index 6cf86e6..0000000 --- a/sub-admin/src/assets/icons/svg/star.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/swagger.svg b/sub-admin/src/assets/icons/svg/swagger.svg deleted file mode 100644 index 05d4e7b..0000000 --- a/sub-admin/src/assets/icons/svg/swagger.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/switch.svg b/sub-admin/src/assets/icons/svg/switch.svg deleted file mode 100644 index 0ba61e3..0000000 --- a/sub-admin/src/assets/icons/svg/switch.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/system.svg b/sub-admin/src/assets/icons/svg/system.svg deleted file mode 100644 index 5992593..0000000 --- a/sub-admin/src/assets/icons/svg/system.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/tab.svg b/sub-admin/src/assets/icons/svg/tab.svg deleted file mode 100644 index b4b48e4..0000000 --- a/sub-admin/src/assets/icons/svg/tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/table.svg b/sub-admin/src/assets/icons/svg/table.svg deleted file mode 100644 index 0e3dc9d..0000000 --- a/sub-admin/src/assets/icons/svg/table.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/textarea.svg b/sub-admin/src/assets/icons/svg/textarea.svg deleted file mode 100644 index 2709f29..0000000 --- a/sub-admin/src/assets/icons/svg/textarea.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/theme.svg b/sub-admin/src/assets/icons/svg/theme.svg deleted file mode 100644 index 5982a2f..0000000 --- a/sub-admin/src/assets/icons/svg/theme.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/time-range.svg b/sub-admin/src/assets/icons/svg/time-range.svg deleted file mode 100644 index 13c1202..0000000 --- a/sub-admin/src/assets/icons/svg/time-range.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/time.svg b/sub-admin/src/assets/icons/svg/time.svg deleted file mode 100644 index b376e32..0000000 --- a/sub-admin/src/assets/icons/svg/time.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/tool.svg b/sub-admin/src/assets/icons/svg/tool.svg deleted file mode 100644 index 48e0e35..0000000 --- a/sub-admin/src/assets/icons/svg/tool.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/tree-table.svg b/sub-admin/src/assets/icons/svg/tree-table.svg deleted file mode 100644 index 8aafdb8..0000000 --- a/sub-admin/src/assets/icons/svg/tree-table.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/tree.svg b/sub-admin/src/assets/icons/svg/tree.svg deleted file mode 100644 index dd4b7dd..0000000 --- a/sub-admin/src/assets/icons/svg/tree.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/upload.svg b/sub-admin/src/assets/icons/svg/upload.svg deleted file mode 100644 index bae49c0..0000000 --- a/sub-admin/src/assets/icons/svg/upload.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/user.svg b/sub-admin/src/assets/icons/svg/user.svg deleted file mode 100644 index 0ba0716..0000000 --- a/sub-admin/src/assets/icons/svg/user.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/validCode.svg b/sub-admin/src/assets/icons/svg/validCode.svg deleted file mode 100644 index cfb1021..0000000 --- a/sub-admin/src/assets/icons/svg/validCode.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/wechat.svg b/sub-admin/src/assets/icons/svg/wechat.svg deleted file mode 100644 index c586e55..0000000 --- a/sub-admin/src/assets/icons/svg/wechat.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svg/zip.svg b/sub-admin/src/assets/icons/svg/zip.svg deleted file mode 100644 index f806fc4..0000000 --- a/sub-admin/src/assets/icons/svg/zip.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sub-admin/src/assets/icons/svgo.yml b/sub-admin/src/assets/icons/svgo.yml deleted file mode 100644 index d11906a..0000000 --- a/sub-admin/src/assets/icons/svgo.yml +++ /dev/null @@ -1,22 +0,0 @@ -# replace default config - -# multipass: true -# full: true - -plugins: - - # - name - # - # or: - # - name: false - # - name: true - # - # or: - # - name: - # param1: 1 - # param2: 2 - -- removeAttrs: - attrs: - - 'fill' - - 'fill-rule' diff --git a/sub-admin/src/assets/images/dark.svg b/sub-admin/src/assets/images/dark.svg deleted file mode 100644 index f646bd7..0000000 --- a/sub-admin/src/assets/images/dark.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sub-admin/src/assets/images/light.svg b/sub-admin/src/assets/images/light.svg deleted file mode 100644 index ab7cc08..0000000 --- a/sub-admin/src/assets/images/light.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sub-admin/src/assets/images/login-background.jpg b/sub-admin/src/assets/images/login-background.jpg deleted file mode 100644 index 8a89eb8..0000000 Binary files a/sub-admin/src/assets/images/login-background.jpg and /dev/null differ diff --git a/sub-admin/src/assets/images/pay.png b/sub-admin/src/assets/images/pay.png deleted file mode 100644 index bb8b967..0000000 Binary files a/sub-admin/src/assets/images/pay.png and /dev/null differ diff --git a/sub-admin/src/assets/images/profile.jpg b/sub-admin/src/assets/images/profile.jpg deleted file mode 100644 index b3a940b..0000000 Binary files a/sub-admin/src/assets/images/profile.jpg and /dev/null differ diff --git a/sub-admin/src/assets/logo/logo.png b/sub-admin/src/assets/logo/logo.png deleted file mode 100644 index 121ffe2..0000000 Binary files a/sub-admin/src/assets/logo/logo.png and /dev/null differ diff --git a/sub-admin/src/assets/styles/btn.scss b/sub-admin/src/assets/styles/btn.scss deleted file mode 100644 index df96fd0..0000000 --- a/sub-admin/src/assets/styles/btn.scss +++ /dev/null @@ -1,99 +0,0 @@ -@import './variables.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/sub-admin/src/assets/styles/element-ui.scss b/sub-admin/src/assets/styles/element-ui.scss deleted file mode 100644 index 7c33cdd..0000000 --- a/sub-admin/src/assets/styles/element-ui.scss +++ /dev/null @@ -1,84 +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; -} diff --git a/sub-admin/src/assets/styles/element-variables.scss b/sub-admin/src/assets/styles/element-variables.scss deleted file mode 100644 index 9012df7..0000000 --- a/sub-admin/src/assets/styles/element-variables.scss +++ /dev/null @@ -1,31 +0,0 @@ -/** -* I think element-ui's default theme color is too light for long-term use. -* So I modified the default color and you can modify it to your liking. -**/ - -/* theme color */ -$--color-primary: #1890ff; -$--color-success: #13ce66; -$--color-warning: #ffba00; -$--color-danger: #ff4949; -// $--color-info: #1E1E1E; - -$--button-font-weight: 400; - -// $--color-text-regular: #1f2d3d; - -$--border-color-light: #dfe4ed; -$--border-color-lighter: #e6ebf5; - -$--table-border: 1px solid#dfe6ec; - -/* icon font path, required */ -$--font-path: '~element-ui/lib/theme-chalk/fonts'; - -@import '~element-ui/packages/theme-chalk/src/index'; - -// the :export directive is the magic sauce for webpack -// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass -:export { - theme: $--color-primary; -} diff --git a/sub-admin/src/assets/styles/index.scss b/sub-admin/src/assets/styles/index.scss deleted file mode 100644 index e3e92e3..0000000 --- a/sub-admin/src/assets/styles/index.scss +++ /dev/null @@ -1,190 +0,0 @@ -@import './variables.scss'; -@import './mixin.scss'; -@import './transition.scss'; -@import './element-ui.scss'; -@import './sidebar.scss'; -@import './btn.scss'; - -body { - height: 100%; - -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; -} - -.pagination-container { - margin-top: 30px; -} - -.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/sub-admin/src/assets/styles/mixin.scss b/sub-admin/src/assets/styles/mixin.scss deleted file mode 100644 index 5250e71..0000000 --- a/sub-admin/src/assets/styles/mixin.scss +++ /dev/null @@ -1,60 +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/sub-admin/src/assets/styles/ruoyi.scss b/sub-admin/src/assets/styles/ruoyi.scss deleted file mode 100644 index ce18c92..0000000 --- a/sub-admin/src/assets/styles/ruoyi.scss +++ /dev/null @@ -1,310 +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-message-box__status + .el-message-box__message { - word-break: break-word; -} - -.el-dialog:not(.is-fullscreen) { - margin-top: 6vh !important; -} - -.el-dialog__wrapper.scrollbar .el-dialog .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; - color: #515a6e; - height: 40px; - 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 { - position: relative; - height: 32px; - margin-bottom: 10px; - margin-top: 15px; - padding: 10px 20px !important; -} - -/* tree border */ -.tree-border { - margin-top: 5px; - border: 1px solid #e5e6e7; - background: #ffffff none; - border-radius: 4px; -} - -.pagination-container .el-pagination { - right: 0; - position: absolute; -} - -@media (max-width: 768px) { - .pagination-container .el-pagination > .el-pagination__jump { - display: none !important; - } - .pagination-container .el-pagination > .el-pagination__sizes { - display: none !important; - } -} - -.el-table .fixed-width .el-button--mini { - padding-left: 0; - padding-right: 0; - width: inherit; -} - -/** 表格更多操作下拉样式 */ -.el-table .el-dropdown-link, -.el-table .el-dropdown-selfdefine { - cursor: pointer; - margin-left: 5px; -} - -.el-table .el-dropdown, -.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; - min-height: 40px; -} - -.el-card__body { - padding: 15px 20px 20px 20px; -} - -.card-box { - padding-right: 15px; - padding-left: 15px; - 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: relative; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 200px; - height: 200px; - border-radius: 50%; - box-shadow: 0 0 4px #ccc; - overflow: hidden; -} - -/* 拖拽列样式 */ -.sortable-ghost { - opacity: 0.8; - color: #fff !important; - background: #42b983 !important; -} - -.top-right-btn { - position: relative; - float: right; -} - -/* 分割面板样式 */ -.splitpanes.default-theme .splitpanes__pane { - background-color: #fff !important; -} diff --git a/sub-admin/src/assets/styles/sidebar.scss b/sub-admin/src/assets/styles/sidebar.scss deleted file mode 100644 index 92ed91f..0000000 --- a/sub-admin/src/assets/styles/sidebar.scss +++ /dev/null @@ -1,228 +0,0 @@ -#app { - .main-container { - height: 100%; - transition: margin-left 0.28s; - margin-left: $base-sidebar-width; - position: relative; - } - - .sidebarHide { - margin-left: 0 !important; - } - - .sidebar-container { - -webkit-transition: width 0.28s; - transition: width 0.28s; - width: $base-sidebar-width !important; - background-color: $base-menu-background; - 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, 0.35); - box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); - - // reset element-ui css - .horizontal-collapse-transition { - transition: - 0s width ease-in-out, - 0s padding-left ease-in-out, - 0s padding-right ease-in-out; - } - - .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, - .el-submenu__title { - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; - } - - // menu hover - .submenu-title-noDropdown, - .el-submenu__title { - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .theme-dark .is-active > .el-submenu__title { - color: $base-menu-color-active !important; - } - - & .nest-menu .el-submenu > .el-submenu__title, - & .el-submenu .el-menu-item { - min-width: $base-sidebar-width !important; - - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .theme-dark .nest-menu .el-submenu > .el-submenu__title, - & .theme-dark .el-submenu .el-menu-item { - background-color: $base-sub-menu-background !important; - - &:hover { - background-color: $base-sub-menu-hover !important; - } - } - } - - .hideSidebar { - .sidebar-container { - width: 54px !important; - } - - .main-container { - margin-left: 54px; - } - - .submenu-title-noDropdown { - padding: 0 !important; - position: relative; - - .el-tooltip { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - } - } - - .el-submenu { - overflow: hidden; - - & > .el-submenu__title { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - } - } - - .el-menu--collapse { - .el-submenu { - & > .el-submenu__title { - & > span { - height: 0; - width: 0; - overflow: hidden; - visibility: hidden; - display: inline-block; - } - } - } - } - } - - .el-menu--collapse .el-menu .el-submenu { - min-width: $base-sidebar-width !important; - } - - // mobile responsive - .mobile { - .main-container { - margin-left: 0px; - } - - .sidebar-container { - transition: transform 0.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-submenu > .el-submenu__title, - .el-menu-item { - &:hover { - // you can use $subMenuHover - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - // the scroll bar appears when the subMenu 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/sub-admin/src/assets/styles/transition.scss b/sub-admin/src/assets/styles/transition.scss deleted file mode 100644 index 468ad3c..0000000 --- a/sub-admin/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 0.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 0.5s; -} - -.breadcrumb-enter, -.breadcrumb-leave-active { - opacity: 0; - transform: translateX(20px); -} - -.breadcrumb-move { - transition: all 0.5s; -} - -.breadcrumb-leave-active { - position: absolute; -} diff --git a/sub-admin/src/assets/styles/variables.scss b/sub-admin/src/assets/styles/variables.scss deleted file mode 100644 index e27750d..0000000 --- a/sub-admin/src/assets/styles/variables.scss +++ /dev/null @@ -1,54 +0,0 @@ -// base color -$blue: #324157; -$light-blue: #3a71a8; -$red: #c03639; -$pink: #e65d6e; -$green: #30b08f; -$tiffany: #4ab7bd; -$yellow: #fec171; -$panGreen: #30b08f; - -// 默认菜单主题风格 -$base-menu-color: #bfcbd9; -$base-menu-color-active: #f4f4f5; -$base-menu-background: #304156; -$base-logo-title-color: #ffffff; - -$base-menu-light-color: rgba(0, 0, 0, 0.7); -$base-menu-light-background: #ffffff; -$base-logo-light-title-color: #001529; - -$base-sub-menu-background: #1f2d3d; -$base-sub-menu-hover: #001528; - -// 自定义暗色菜单风格 -/** -$base-menu-color:hsla(0,0%,100%,.65); -$base-menu-color-active:#fff; -$base-menu-background:#001529; -$base-logo-title-color: #ffffff; - -$base-menu-light-color:rgba(0,0,0,.70); -$base-menu-light-background:#ffffff; -$base-logo-light-title-color: #001529; - -$base-sub-menu-background:#000c17; -$base-sub-menu-hover:#001528; -*/ - -$base-sidebar-width: 200px; - -// the :export directive is the magic sauce for webpack -// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass -:export { - menuColor: $base-menu-color; - menuLightColor: $base-menu-light-color; - menuColorActive: $base-menu-color-active; - menuBackground: $base-menu-background; - menuLightBackground: $base-menu-light-background; - subMenuBackground: $base-sub-menu-background; - subMenuHover: $base-sub-menu-hover; - sideBarWidth: $base-sidebar-width; - logoTitleColor: $base-logo-title-color; - logoLightTitleColor: $base-logo-light-title-color; -} diff --git a/sub-admin/src/components/Breadcrumb/index.vue b/sub-admin/src/components/Breadcrumb/index.vue deleted file mode 100644 index 9fb4ffb..0000000 --- a/sub-admin/src/components/Breadcrumb/index.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/Crontab/day.vue b/sub-admin/src/components/Crontab/day.vue deleted file mode 100644 index 8dfe3df..0000000 --- a/sub-admin/src/components/Crontab/day.vue +++ /dev/null @@ -1,154 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/hour.vue b/sub-admin/src/components/Crontab/hour.vue deleted file mode 100644 index af365e8..0000000 --- a/sub-admin/src/components/Crontab/hour.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/index.vue b/sub-admin/src/components/Crontab/index.vue deleted file mode 100644 index 60505d5..0000000 --- a/sub-admin/src/components/Crontab/index.vue +++ /dev/null @@ -1,368 +0,0 @@ - - - - diff --git a/sub-admin/src/components/Crontab/min.vue b/sub-admin/src/components/Crontab/min.vue deleted file mode 100644 index 6c88e1e..0000000 --- a/sub-admin/src/components/Crontab/min.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/month.vue b/sub-admin/src/components/Crontab/month.vue deleted file mode 100644 index bd9a26d..0000000 --- a/sub-admin/src/components/Crontab/month.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/result.vue b/sub-admin/src/components/Crontab/result.vue deleted file mode 100644 index cf81da6..0000000 --- a/sub-admin/src/components/Crontab/result.vue +++ /dev/null @@ -1,572 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/second.vue b/sub-admin/src/components/Crontab/second.vue deleted file mode 100644 index 6f984c3..0000000 --- a/sub-admin/src/components/Crontab/second.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/week.vue b/sub-admin/src/components/Crontab/week.vue deleted file mode 100644 index f143339..0000000 --- a/sub-admin/src/components/Crontab/week.vue +++ /dev/null @@ -1,194 +0,0 @@ - - - diff --git a/sub-admin/src/components/Crontab/year.vue b/sub-admin/src/components/Crontab/year.vue deleted file mode 100644 index 6178f9c..0000000 --- a/sub-admin/src/components/Crontab/year.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - diff --git a/sub-admin/src/components/DictData/index.js b/sub-admin/src/components/DictData/index.js deleted file mode 100644 index b802cd5..0000000 --- a/sub-admin/src/components/DictData/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import Vue from 'vue'; -import store from '@/store'; -import DataDict from '@/utils/dict'; -import { getDicts as getDicts } from '@/api/system/dict/data'; - -function searchDictByKey(dict, key) { - if (key == null && key == '') { - return null; - } - try { - for (let i = 0; i < dict.length; i++) { - if (dict[i].key == key) { - return dict[i].value; - } - } - } catch (e) { - return null; - } -} - -function install() { - Vue.use(DataDict, { - metas: { - '*': { - labelField: 'dictLabel', - valueField: 'dictValue', - request(dictMeta) { - const storeDict = searchDictByKey(store.getters.dict, dictMeta.type); - if (storeDict) { - return new Promise((resolve) => { - resolve(storeDict); - }); - } else { - return new Promise((resolve, reject) => { - getDicts(dictMeta.type) - .then((res) => { - store.dispatch('dict/setDict', { key: dictMeta.type, value: res.data }); - resolve(res.data); - }) - .catch((error) => { - reject(error); - }); - }); - } - }, - }, - }, - }); -} - -export default { - install, -}; diff --git a/sub-admin/src/components/DictTag/index.vue b/sub-admin/src/components/DictTag/index.vue deleted file mode 100644 index 665c9f0..0000000 --- a/sub-admin/src/components/DictTag/index.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - diff --git a/sub-admin/src/components/Editor/index.vue b/sub-admin/src/components/Editor/index.vue deleted file mode 100644 index c8eb277..0000000 --- a/sub-admin/src/components/Editor/index.vue +++ /dev/null @@ -1,275 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/FileUpload/index.vue b/sub-admin/src/components/FileUpload/index.vue deleted file mode 100644 index dd1969f..0000000 --- a/sub-admin/src/components/FileUpload/index.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/Hamburger/index.vue b/sub-admin/src/components/Hamburger/index.vue deleted file mode 100644 index 9a882e2..0000000 --- a/sub-admin/src/components/Hamburger/index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/HeaderSearch/index.vue b/sub-admin/src/components/HeaderSearch/index.vue deleted file mode 100644 index ac52801..0000000 --- a/sub-admin/src/components/HeaderSearch/index.vue +++ /dev/null @@ -1,201 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/IconSelect/index.vue b/sub-admin/src/components/IconSelect/index.vue deleted file mode 100644 index 95444b7..0000000 --- a/sub-admin/src/components/IconSelect/index.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - diff --git a/sub-admin/src/components/IconSelect/requireIcons.js b/sub-admin/src/components/IconSelect/requireIcons.js deleted file mode 100644 index 7630b0f..0000000 --- a/sub-admin/src/components/IconSelect/requireIcons.js +++ /dev/null @@ -1,10 +0,0 @@ -const req = require.context('../../assets/icons/svg', false, /\.svg$/); -const requireAll = (requireContext) => requireContext.keys(); - -const re = /\.\/(.*)\.svg/; - -const icons = requireAll(req).map((i) => { - return i.match(re)[1]; -}); - -export default icons; diff --git a/sub-admin/src/components/ImagePreview/index.vue b/sub-admin/src/components/ImagePreview/index.vue deleted file mode 100644 index dbbd8e4..0000000 --- a/sub-admin/src/components/ImagePreview/index.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/ImageUpload/index.vue b/sub-admin/src/components/ImageUpload/index.vue deleted file mode 100644 index 82a2518..0000000 --- a/sub-admin/src/components/ImageUpload/index.vue +++ /dev/null @@ -1,221 +0,0 @@ - - - - diff --git a/sub-admin/src/components/Pagination/index.vue b/sub-admin/src/components/Pagination/index.vue deleted file mode 100644 index 34e6ca6..0000000 --- a/sub-admin/src/components/Pagination/index.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/PanThumb/index.vue b/sub-admin/src/components/PanThumb/index.vue deleted file mode 100644 index 0beb2ad..0000000 --- a/sub-admin/src/components/PanThumb/index.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/ParentView/index.vue b/sub-admin/src/components/ParentView/index.vue deleted file mode 100644 index 98240ae..0000000 --- a/sub-admin/src/components/ParentView/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/sub-admin/src/components/RightPanel/index.vue b/sub-admin/src/components/RightPanel/index.vue deleted file mode 100644 index 0d3c088..0000000 --- a/sub-admin/src/components/RightPanel/index.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/RightToolbar/index.vue b/sub-admin/src/components/RightToolbar/index.vue deleted file mode 100644 index e12ff86..0000000 --- a/sub-admin/src/components/RightToolbar/index.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - diff --git a/sub-admin/src/components/RuoYi/Doc/index.vue b/sub-admin/src/components/RuoYi/Doc/index.vue deleted file mode 100644 index 0f779bd..0000000 --- a/sub-admin/src/components/RuoYi/Doc/index.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/sub-admin/src/components/RuoYi/Git/index.vue b/sub-admin/src/components/RuoYi/Git/index.vue deleted file mode 100644 index 5f3fe44..0000000 --- a/sub-admin/src/components/RuoYi/Git/index.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/sub-admin/src/components/Screenfull/index.vue b/sub-admin/src/components/Screenfull/index.vue deleted file mode 100644 index a4848b2..0000000 --- a/sub-admin/src/components/Screenfull/index.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/SizeSelect/index.vue b/sub-admin/src/components/SizeSelect/index.vue deleted file mode 100644 index 3acf9e4..0000000 --- a/sub-admin/src/components/SizeSelect/index.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/sub-admin/src/components/SvgIcon/index.vue b/sub-admin/src/components/SvgIcon/index.vue deleted file mode 100644 index 0f8e114..0000000 --- a/sub-admin/src/components/SvgIcon/index.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/ThemePicker/index.vue b/sub-admin/src/components/ThemePicker/index.vue deleted file mode 100644 index e782443..0000000 --- a/sub-admin/src/components/ThemePicker/index.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/TopNav/index.vue b/sub-admin/src/components/TopNav/index.vue deleted file mode 100644 index 837a997..0000000 --- a/sub-admin/src/components/TopNav/index.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - - - diff --git a/sub-admin/src/components/iFrame/index.vue b/sub-admin/src/components/iFrame/index.vue deleted file mode 100644 index 5e3fcef..0000000 --- a/sub-admin/src/components/iFrame/index.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/sub-admin/src/layout/components/Navbar.vue b/sub-admin/src/layout/components/Navbar.vue deleted file mode 100644 index bbf94b2..0000000 --- a/sub-admin/src/layout/components/Navbar.vue +++ /dev/null @@ -1,197 +0,0 @@ - - - - - diff --git a/sub-admin/src/layout/components/Settings/index.vue b/sub-admin/src/layout/components/Settings/index.vue deleted file mode 100644 index 7339654..0000000 --- a/sub-admin/src/layout/components/Settings/index.vue +++ /dev/null @@ -1,264 +0,0 @@ - - - - - diff --git a/sub-admin/src/layout/components/Sidebar/FixiOSBug.js b/sub-admin/src/layout/components/Sidebar/FixiOSBug.js deleted file mode 100644 index abd0332..0000000 --- a/sub-admin/src/layout/components/Sidebar/FixiOSBug.js +++ /dev/null @@ -1,25 +0,0 @@ -export default { - computed: { - device() { - return this.$store.state.app.device; - }, - }, - mounted() { - // In order to fix the click on menu on the ios device will trigger the mouseleave bug - this.fixBugIniOS(); - }, - methods: { - fixBugIniOS() { - const $subMenu = this.$refs.subMenu; - if ($subMenu) { - const handleMouseleave = $subMenu.handleMouseleave; - $subMenu.handleMouseleave = (e) => { - if (this.device === 'mobile') { - return; - } - handleMouseleave(e); - }; - } - }, - }, -}; diff --git a/sub-admin/src/layout/components/Sidebar/Item.vue b/sub-admin/src/layout/components/Sidebar/Item.vue deleted file mode 100644 index f915f56..0000000 --- a/sub-admin/src/layout/components/Sidebar/Item.vue +++ /dev/null @@ -1,37 +0,0 @@ - diff --git a/sub-admin/src/layout/components/Sidebar/Link.vue b/sub-admin/src/layout/components/Sidebar/Link.vue deleted file mode 100644 index c0f4f08..0000000 --- a/sub-admin/src/layout/components/Sidebar/Link.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - diff --git a/sub-admin/src/layout/components/Sidebar/Logo.vue b/sub-admin/src/layout/components/Sidebar/Logo.vue deleted file mode 100644 index 065120e..0000000 --- a/sub-admin/src/layout/components/Sidebar/Logo.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/sub-admin/src/layout/components/Sidebar/SidebarItem.vue b/sub-admin/src/layout/components/Sidebar/SidebarItem.vue deleted file mode 100644 index 8aa3b9f..0000000 --- a/sub-admin/src/layout/components/Sidebar/SidebarItem.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - diff --git a/sub-admin/src/layout/components/Sidebar/index.vue b/sub-admin/src/layout/components/Sidebar/index.vue deleted file mode 100644 index 2d7142e..0000000 --- a/sub-admin/src/layout/components/Sidebar/index.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/sub-admin/src/layout/components/TagsView/ScrollPane.vue b/sub-admin/src/layout/components/TagsView/ScrollPane.vue deleted file mode 100644 index 317cfcd..0000000 --- a/sub-admin/src/layout/components/TagsView/ScrollPane.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - diff --git a/sub-admin/src/layout/components/TagsView/index.vue b/sub-admin/src/layout/components/TagsView/index.vue deleted file mode 100644 index a7f67b6..0000000 --- a/sub-admin/src/layout/components/TagsView/index.vue +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - diff --git a/sub-admin/src/layout/components/index.js b/sub-admin/src/layout/components/index.js deleted file mode 100644 index ea1ae55..0000000 --- a/sub-admin/src/layout/components/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as AppMain } from './AppMain'; -export { default as Navbar } from './Navbar'; -export { default as Settings } from './Settings'; -export { default as Sidebar } from './Sidebar/index.vue'; -export { default as TagsView } from './TagsView/index.vue'; diff --git a/sub-admin/src/layout/index.vue b/sub-admin/src/layout/index.vue deleted file mode 100644 index 19463ed..0000000 --- a/sub-admin/src/layout/index.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/sub-admin/src/layout/mixin/ResizeHandler.js b/sub-admin/src/layout/mixin/ResizeHandler.js deleted file mode 100644 index 705eb78..0000000 --- a/sub-admin/src/layout/mixin/ResizeHandler.js +++ /dev/null @@ -1,45 +0,0 @@ -import store from '@/store'; - -const { body } = document; -const WIDTH = 992; // refer to Bootstrap's responsive design - -export default { - watch: { - $route(route) { - if (this.device === 'mobile' && this.sidebar.opened) { - store.dispatch('app/closeSideBar', { withoutAnimation: false }); - } - }, - }, - beforeMount() { - window.addEventListener('resize', this.$_resizeHandler); - }, - beforeDestroy() { - window.removeEventListener('resize', this.$_resizeHandler); - }, - mounted() { - const isMobile = this.$_isMobile(); - if (isMobile) { - store.dispatch('app/toggleDevice', 'mobile'); - store.dispatch('app/closeSideBar', { withoutAnimation: true }); - } - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_isMobile() { - const rect = body.getBoundingClientRect(); - return rect.width - 1 < WIDTH; - }, - $_resizeHandler() { - if (!document.hidden) { - const isMobile = this.$_isMobile(); - store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop'); - - if (isMobile) { - store.dispatch('app/closeSideBar', { withoutAnimation: true }); - } - } - }, - }, -}; diff --git a/sub-admin/src/main.js b/sub-admin/src/main.js deleted file mode 100644 index ede6eab..0000000 --- a/sub-admin/src/main.js +++ /dev/null @@ -1,110 +0,0 @@ -import Vue from 'vue' -import Cookies from 'js-cookie' -import Element from 'element-ui' - -import App from './App' -import store from './store' -import router from './router' -import './assets/styles/element-variables.scss' -import '@/assets/styles/index.scss' // global css -import '@/assets/styles/ruoyi.scss' // ruoyi css -import 'element-ui/lib/theme-chalk/index.css' -import directive from './directive' // directive -import plugins from './plugins' // plugins -import { download } from '@/utils/request' - -import './assets/icons' // icon -import './permission' // permission control -import { getDicts } from '@/api/system/dict/data' -import { getConfigKey } from '@/api/system/config' -import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } 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' -// 头部标签组件 -import VueMeta from 'vue-meta' -// 字典数据组件 -import DictData from '@/components/DictData' -// import render from './plugins/micro'; -// export * from './plugins/micro'; - -// 全局方法挂载 -Vue.prototype.getDicts = getDicts -Vue.prototype.getConfigKey = getConfigKey -Vue.prototype.parseTime = parseTime -Vue.prototype.resetForm = resetForm -Vue.prototype.addDateRange = addDateRange -Vue.prototype.selectDictLabel = selectDictLabel -Vue.prototype.selectDictLabels = selectDictLabels -Vue.prototype.download = download -Vue.prototype.handleTree = handleTree - -// 全局组件挂载 -Vue.component('DictTag', DictTag) -Vue.component('Pagination', Pagination) -Vue.component('RightToolbar', RightToolbar) -Vue.component('Editor', Editor) -Vue.component('FileUpload', FileUpload) -Vue.component('ImageUpload', ImageUpload) -Vue.component('ImagePreview', ImagePreview) - -Vue.use(directive) -Vue.use(plugins) -Vue.use(VueMeta) -DictData.install() - -/** - * If you don't want to use mock-server - * you want to use MockJs for mock api - * you can execute: mockXHR() - * - * Currently MockJs will be used in the production environment, - * please remove it before going online! ! ! - */ - -Vue.use(Element, { - size: Cookies.get('size') || 'medium', // set element-ui default size -}) - -Vue.config.productionTip = false - -let instance = null - -export function render(props = {}) { - const { container } = props - instance = new Vue({ - router, - store, - render: (h) => h(App), - }).$mount(container ? container.querySelector('#app') : '#app') -} - -export async function bootstrap() {} - -export async function mount(props) { - render(props) -} - -export async function unmount() { - instance.$destroy() - instance.$el.innerHTML = '' - instance = null -} - -if (window.__POWERED_BY_QIANKUN__) { - // eslint-disable-next-line no-undef - __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ -} else { - render() -} diff --git a/sub-admin/src/permission.js b/sub-admin/src/permission.js deleted file mode 100644 index 387d644..0000000 --- a/sub-admin/src/permission.js +++ /dev/null @@ -1,66 +0,0 @@ -import router from './router' -import store from './store' -import { Message } from 'element-ui' -import NProgress from 'nprogress' -import 'nprogress/nprogress.css' -import { getToken } from '@/utils/auth' -import { isPathMatch } from '@/utils/validate' -import { isRelogin } from '@/utils/request' - -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 && store.dispatch('settings/setTitle', to.meta.title) - /* has token*/ - if (to.path === '/login') { - next({ path: '/' }) - NProgress.done() - } else if (isWhiteList(to.path)) { - next() - } else { - if (store.getters.roles.length === 0) { - isRelogin.show = true - // 判断当前用户是否已拉取完user_info信息 - store - .dispatch('GetInfo') - .then(() => { - isRelogin.show = false - store.dispatch('GenerateRoutes').then((accessRoutes) => { - // 根据roles权限生成可访问的路由表 - router.addRoutes(accessRoutes) // 动态添加可访问路由表 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 - }) - }) - .catch((err) => { - store.dispatch('LogOut').then(() => { - Message.error(err) - next({ path: '/' }) - }) - }) - } else { - next() - } - } - } else { - // 没有token - if (isWhiteList(to.path)) { - // 在免登录白名单,直接进入 - next() - } else { - next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页 - NProgress.done() - } - } -}) - -router.afterEach(() => { - NProgress.done() -}) diff --git a/sub-admin/src/plugins/auth.js b/sub-admin/src/plugins/auth.js deleted file mode 100644 index 4236659..0000000 --- a/sub-admin/src/plugins/auth.js +++ /dev/null @@ -1,60 +0,0 @@ -import store from '@/store'; - -function authPermission(permission) { - const all_permission = '*:*:*'; - const permissions = store.getters && store.getters.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 = store.getters && store.getters.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/sub-admin/src/plugins/cache.js b/sub-admin/src/plugins/cache.js deleted file mode 100644 index f594d08..0000000 --- a/sub-admin/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/sub-admin/src/plugins/download.js b/sub-admin/src/plugins/download.js deleted file mode 100644 index 6304f5a..0000000 --- a/sub-admin/src/plugins/download.js +++ /dev/null @@ -1,46 +0,0 @@ -import axios from 'axios'; -import { Loading, Message } from 'element-ui'; -import { saveAs } from 'file-saver'; -import { getToken } from '@/utils/auth'; -import errorCode from '@/utils/errorCode'; -import { blobValidate } from '@/utils/ruoyi'; - -const baseURL = process.env.VUE_APP_BASE_API; -let downloadLoadingInstance; - -export default { - zip(url, name) { - var url = baseURL + url; - downloadLoadingInstance = Loading.service({ text: '正在下载数据,请稍候', spinner: 'el-icon-loading', 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); - Message.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']; - Message.error(errMsg); - }, -}; diff --git a/sub-admin/src/plugins/index.js b/sub-admin/src/plugins/index.js deleted file mode 100644 index c5ebfb8..0000000 --- a/sub-admin/src/plugins/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import tab from './tab'; -import auth from './auth'; -import cache from './cache'; -import modal from './modal'; -import download from './download'; - -export default { - install(Vue) { - // 页签操作 - Vue.prototype.$tab = tab; - // 认证对象 - Vue.prototype.$auth = auth; - // 缓存对象 - Vue.prototype.$cache = cache; - // 模态框对象 - Vue.prototype.$modal = modal; - // 下载文件 - Vue.prototype.$download = download; - }, -}; diff --git a/sub-admin/src/plugins/modal.js b/sub-admin/src/plugins/modal.js deleted file mode 100644 index d670a13..0000000 --- a/sub-admin/src/plugins/modal.js +++ /dev/null @@ -1,83 +0,0 @@ -import { Message, MessageBox, Notification, Loading } from 'element-ui'; - -let loadingInstance; - -export default { - // 消息提示 - msg(content) { - Message.info(content); - }, - // 错误消息 - msgError(content) { - Message.error(content); - }, - // 成功消息 - msgSuccess(content) { - Message.success(content); - }, - // 警告消息 - msgWarning(content) { - Message.warning(content); - }, - // 弹出提示 - alert(content) { - MessageBox.alert(content, '系统提示'); - }, - // 错误提示 - alertError(content) { - MessageBox.alert(content, '系统提示', { type: 'error' }); - }, - // 成功提示 - alertSuccess(content) { - MessageBox.alert(content, '系统提示', { type: 'success' }); - }, - // 警告提示 - alertWarning(content) { - MessageBox.alert(content, '系统提示', { type: 'warning' }); - }, - // 通知提示 - notify(content) { - Notification.info(content); - }, - // 错误通知 - notifyError(content) { - Notification.error(content); - }, - // 成功通知 - notifySuccess(content) { - Notification.success(content); - }, - // 警告通知 - notifyWarning(content) { - Notification.warning(content); - }, - // 确认窗体 - confirm(content) { - return MessageBox.confirm(content, '系统提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }); - }, - // 提交内容 - prompt(content) { - return MessageBox.prompt(content, '系统提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }); - }, - // 打开遮罩层 - loading(content) { - loadingInstance = Loading.service({ - lock: true, - text: content, - spinner: 'el-icon-loading', - background: 'rgba(0, 0, 0, 0.7)', - }); - }, - // 关闭遮罩层 - closeLoading() { - loadingInstance.close(); - }, -}; diff --git a/sub-admin/src/plugins/tab.js b/sub-admin/src/plugins/tab.js deleted file mode 100644 index 7548405..0000000 --- a/sub-admin/src/plugins/tab.js +++ /dev/null @@ -1,71 +0,0 @@ -import store from '@/store'; -import router from '@/router'; - -export default { - // 刷新当前tab页签 - refreshPage(obj) { - const { path, query, matched } = router.currentRoute; - 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 store.dispatch('tagsView/delCachedView', obj).then(() => { - const { path, query } = obj; - router.replace({ - path: '/redirect' + path, - query: query, - }); - }); - }, - // 关闭当前tab页签,打开新页签 - closeOpenPage(obj) { - store.dispatch('tagsView/delView', router.currentRoute); - if (obj !== undefined) { - return router.push(obj); - } - }, - // 关闭指定tab页签 - closePage(obj) { - if (obj === undefined) { - return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => { - const latestView = visitedViews.slice(-1)[0]; - if (latestView) { - return router.push(latestView.fullPath); - } - return router.push('/'); - }); - } - return store.dispatch('tagsView/delView', obj); - }, - // 关闭所有tab页签 - closeAllPage() { - return store.dispatch('tagsView/delAllViews'); - }, - // 关闭左侧tab页签 - closeLeftPage(obj) { - return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute); - }, - // 关闭右侧tab页签 - closeRightPage(obj) { - return store.dispatch('tagsView/delRightTags', obj || router.currentRoute); - }, - // 关闭其他tab页签 - closeOtherPage(obj) { - return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute); - }, - // 添加tab页签 - openPage(title, url, params) { - const obj = { path: url, meta: { title: title } }; - store.dispatch('tagsView/addView', obj); - return router.push({ path: url, query: params }); - }, - // 修改tab页签 - updatePage(obj) { - return store.dispatch('tagsView/updateVisitedView', obj); - }, -}; diff --git a/sub-admin/src/router/index.js b/sub-admin/src/router/index.js deleted file mode 100644 index 3a3ebaa..0000000 --- a/sub-admin/src/router/index.js +++ /dev/null @@ -1,185 +0,0 @@ -import Vue from 'vue'; -import Router from 'vue-router'; - -Vue.use(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'), - }, - ], - }, - { - path: '/login', - component: () => import('@/views/login'), - hidden: true, - }, - { - path: '/register', - component: () => import('@/views/register'), - hidden: true, - }, - { - path: '/404', - 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' }, - }, - ], - }, -]; - -// 防止连续点击多次路由报错 -let routerPush = Router.prototype.push; -let routerReplace = Router.prototype.replace; -// push -Router.prototype.push = function push(location) { - return routerPush.call(this, location).catch((err) => err); -}; -// replace -Router.prototype.replace = function push(location) { - return routerReplace.call(this, location).catch((err) => err); -}; - -console.log(179, window.__POWERED_BY_QIANKUN__); -export default new Router({ - base: window.__POWERED_BY_QIANKUN__ ? '/sub-admin/' : '/', - mode: 'history', - scrollBehavior: () => ({ y: 0 }), - routes: constantRoutes, -}); diff --git a/sub-admin/src/settings.js b/sub-admin/src/settings.js deleted file mode 100644 index 7117de3..0000000 --- a/sub-admin/src/settings.js +++ /dev/null @@ -1,44 +0,0 @@ -module.exports = { - /** - * 侧边栏主题 深色主题theme-dark,浅色主题theme-light - */ - sideTheme: 'theme-dark', - - /** - * 是否系统布局配置 - */ - showSettings: false, - - /** - * 是否显示顶部导航 - */ - 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/sub-admin/src/store/getters.js b/sub-admin/src/store/getters.js deleted file mode 100644 index 22e1826..0000000 --- a/sub-admin/src/store/getters.js +++ /dev/null @@ -1,19 +0,0 @@ -const getters = { - sidebar: (state) => state.app.sidebar, - size: (state) => state.app.size, - device: (state) => state.app.device, - dict: (state) => state.dict.dict, - visitedViews: (state) => state.tagsView.visitedViews, - cachedViews: (state) => state.tagsView.cachedViews, - token: (state) => state.user.token, - avatar: (state) => state.user.avatar, - name: (state) => state.user.name, - introduction: (state) => state.user.introduction, - roles: (state) => state.user.roles, - permissions: (state) => state.user.permissions, - permission_routes: (state) => state.permission.routes, - topbarRouters: (state) => state.permission.topbarRouters, - defaultRoutes: (state) => state.permission.defaultRoutes, - sidebarRouters: (state) => state.permission.sidebarRouters, -}; -export default getters; diff --git a/sub-admin/src/store/index.js b/sub-admin/src/store/index.js deleted file mode 100644 index 93ab0fe..0000000 --- a/sub-admin/src/store/index.js +++ /dev/null @@ -1,25 +0,0 @@ -import Vue from 'vue'; -import Vuex from 'vuex'; -import app from './modules/app'; -import dict from './modules/dict'; -import user from './modules/user'; -import tagsView from './modules/tagsView'; -import permission from './modules/permission'; -import settings from './modules/settings'; -import getters from './getters'; - -Vue.use(Vuex); - -const store = new Vuex.Store({ - modules: { - app, - dict, - user, - tagsView, - permission, - settings, - }, - getters, -}); - -export default store; diff --git a/sub-admin/src/store/modules/app.js b/sub-admin/src/store/modules/app.js deleted file mode 100644 index 719b0a7..0000000 --- a/sub-admin/src/store/modules/app.js +++ /dev/null @@ -1,66 +0,0 @@ -import Cookies from 'js-cookie'; - -const state = { - sidebar: { - opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, - withoutAnimation: false, - hide: false, - }, - device: 'desktop', - size: Cookies.get('size') || 'medium', -}; - -const mutations = { - TOGGLE_SIDEBAR: (state) => { - if (state.sidebar.hide) { - return false; - } - state.sidebar.opened = !state.sidebar.opened; - state.sidebar.withoutAnimation = false; - if (state.sidebar.opened) { - Cookies.set('sidebarStatus', 1); - } else { - Cookies.set('sidebarStatus', 0); - } - }, - CLOSE_SIDEBAR: (state, withoutAnimation) => { - Cookies.set('sidebarStatus', 0); - state.sidebar.opened = false; - state.sidebar.withoutAnimation = withoutAnimation; - }, - TOGGLE_DEVICE: (state, device) => { - state.device = device; - }, - SET_SIZE: (state, size) => { - state.size = size; - Cookies.set('size', size); - }, - SET_SIDEBAR_HIDE: (state, status) => { - state.sidebar.hide = status; - }, -}; - -const actions = { - toggleSideBar({ commit }) { - commit('TOGGLE_SIDEBAR'); - }, - closeSideBar({ commit }, { withoutAnimation }) { - commit('CLOSE_SIDEBAR', withoutAnimation); - }, - toggleDevice({ commit }, device) { - commit('TOGGLE_DEVICE', device); - }, - setSize({ commit }, size) { - commit('SET_SIZE', size); - }, - toggleSideBarHide({ commit }, status) { - commit('SET_SIDEBAR_HIDE', status); - }, -}; - -export default { - namespaced: true, - state, - mutations, - actions, -}; diff --git a/sub-admin/src/store/modules/dict.js b/sub-admin/src/store/modules/dict.js deleted file mode 100644 index 9ec8151..0000000 --- a/sub-admin/src/store/modules/dict.js +++ /dev/null @@ -1,48 +0,0 @@ -const state = { - dict: new Array(), -}; -const mutations = { - SET_DICT: (state, { key, value }) => { - if (key !== null && key !== '') { - state.dict.push({ - key: key, - value: value, - }); - } - }, - REMOVE_DICT: (state, key) => { - try { - for (let i = 0; i < state.dict.length; i++) { - if (state.dict[i].key == key) { - state.dict.splice(i, 1); - return true; - } - } - } catch (e) {} - }, - CLEAN_DICT: (state) => { - state.dict = new Array(); - }, -}; - -const actions = { - // 设置字典 - setDict({ commit }, data) { - commit('SET_DICT', data); - }, - // 删除字典 - removeDict({ commit }, key) { - commit('REMOVE_DICT', key); - }, - // 清空字典 - cleanDict({ commit }) { - commit('CLEAN_DICT'); - }, -}; - -export default { - namespaced: true, - state, - mutations, - actions, -}; diff --git a/sub-admin/src/store/modules/permission.js b/sub-admin/src/store/modules/permission.js deleted file mode 100644 index 6e9547f..0000000 --- a/sub-admin/src/store/modules/permission.js +++ /dev/null @@ -1,137 +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'; - -const permission = { - state: { - routes: [], - addRoutes: [], - defaultRoutes: [], - topbarRouters: [], - sidebarRouters: [], - }, - mutations: { - SET_ROUTES: (state, routes) => { - state.addRoutes = routes; - state.routes = constantRoutes.concat(routes); - }, - SET_DEFAULT_ROUTES: (state, routes) => { - state.defaultRoutes = constantRoutes.concat(routes); - }, - SET_TOPBAR_ROUTES: (state, routes) => { - state.topbarRouters = routes; - }, - SET_SIDEBAR_ROUTERS: (state, routes) => { - state.sidebarRouters = routes; - }, - }, - actions: { - // 生成路由 - GenerateRoutes({ commit }) { - return new Promise((resolve) => { - // 向后端请求路由数据 - getRouters().then((res) => { - const sdata = JSON.parse(JSON.stringify(res.data)); - const rdata = JSON.parse(JSON.stringify(res.data)); - const sidebarRoutes = filterAsyncRouter(sdata); - const rewriteRoutes = filterAsyncRouter(rdata, false, true); - const asyncRoutes = filterDynamicRoutes(dynamicRoutes); - rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true }); - router.addRoutes(asyncRoutes); - commit('SET_ROUTES', rewriteRoutes); - commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes)); - commit('SET_DEFAULT_ROUTES', sidebarRoutes); - commit('SET_TOPBAR_ROUTES', sidebarRoutes); - 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, index) => { - if (el.children && el.children.length) { - if (el.component === 'ParentView' && !lastRouter) { - el.children.forEach((c) => { - c.path = el.path + '/' + c.path; - if (c.children && c.children.length) { - children = children.concat(filterChildren(c.children, c)); - return; - } - children.push(c); - }); - return; - } - } - if (lastRouter) { - el.path = lastRouter.path + '/' + el.path; - if (el.children && el.children.length) { - children = children.concat(filterChildren(el.children, el)); - return; - } - } - children = children.concat(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) => { - if (process.env.NODE_ENV === 'development') { - return (resolve) => require([`@/views/${view}`], resolve); - } else { - // 使用 import 实现生产环境的路由懒加载 - return () => import(`@/views/${view}`); - } -}; - -export default permission; diff --git a/sub-admin/src/store/modules/settings.js b/sub-admin/src/store/modules/settings.js deleted file mode 100644 index 885bdbc..0000000 --- a/sub-admin/src/store/modules/settings.js +++ /dev/null @@ -1,41 +0,0 @@ -import defaultSettings from '@/settings'; - -const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings; - -const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''; -const 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, -}; -const mutations = { - CHANGE_SETTING: (state, { key, value }) => { - if (state.hasOwnProperty(key)) { - state[key] = value; - } - }, -}; - -const actions = { - // 修改布局设置 - changeSetting({ commit }, data) { - commit('CHANGE_SETTING', data); - }, - // 设置网页标题 - setTitle({ commit }, title) { - state.title = title; - }, -}; - -export default { - namespaced: true, - state, - mutations, - actions, -}; diff --git a/sub-admin/src/store/modules/tagsView.js b/sub-admin/src/store/modules/tagsView.js deleted file mode 100644 index 8925156..0000000 --- a/sub-admin/src/store/modules/tagsView.js +++ /dev/null @@ -1,228 +0,0 @@ -const state = { - visitedViews: [], - cachedViews: [], - iframeViews: [], -}; - -const mutations = { - ADD_IFRAME_VIEW: (state, view) => { - if (state.iframeViews.some((v) => v.path === view.path)) return; - state.iframeViews.push( - Object.assign({}, view, { - title: view.meta.title || 'no-name', - }) - ); - }, - ADD_VISITED_VIEW: (state, view) => { - if (state.visitedViews.some((v) => v.path === view.path)) return; - state.visitedViews.push( - Object.assign({}, view, { - title: view.meta.title || 'no-name', - }) - ); - }, - ADD_CACHED_VIEW: (state, view) => { - if (state.cachedViews.includes(view.name)) return; - if (view.meta && !view.meta.noCache) { - state.cachedViews.push(view.name); - } - }, - DEL_VISITED_VIEW: (state, view) => { - for (const [i, v] of state.visitedViews.entries()) { - if (v.path === view.path) { - state.visitedViews.splice(i, 1); - break; - } - } - state.iframeViews = state.iframeViews.filter((item) => item.path !== view.path); - }, - DEL_IFRAME_VIEW: (state, view) => { - state.iframeViews = state.iframeViews.filter((item) => item.path !== view.path); - }, - DEL_CACHED_VIEW: (state, view) => { - const index = state.cachedViews.indexOf(view.name); - index > -1 && state.cachedViews.splice(index, 1); - }, - - DEL_OTHERS_VISITED_VIEWS: (state, view) => { - state.visitedViews = state.visitedViews.filter((v) => { - return v.meta.affix || v.path === view.path; - }); - state.iframeViews = state.iframeViews.filter((item) => item.path === view.path); - }, - DEL_OTHERS_CACHED_VIEWS: (state, view) => { - const index = state.cachedViews.indexOf(view.name); - if (index > -1) { - state.cachedViews = state.cachedViews.slice(index, index + 1); - } else { - state.cachedViews = []; - } - }, - DEL_ALL_VISITED_VIEWS: (state) => { - // keep affix tags - const affixTags = state.visitedViews.filter((tag) => tag.meta.affix); - state.visitedViews = affixTags; - state.iframeViews = []; - }, - DEL_ALL_CACHED_VIEWS: (state) => { - state.cachedViews = []; - }, - UPDATE_VISITED_VIEW: (state, view) => { - for (let v of state.visitedViews) { - if (v.path === view.path) { - v = Object.assign(v, view); - break; - } - } - }, - DEL_RIGHT_VIEWS: (state, view) => { - const index = state.visitedViews.findIndex((v) => v.path === view.path); - if (index === -1) { - return; - } - state.visitedViews = state.visitedViews.filter((item, idx) => { - if (idx <= index || (item.meta && item.meta.affix)) { - return true; - } - const i = state.cachedViews.indexOf(item.name); - if (i > -1) { - state.cachedViews.splice(i, 1); - } - if (item.meta.link) { - const fi = state.iframeViews.findIndex((v) => v.path === item.path); - state.iframeViews.splice(fi, 1); - } - return false; - }); - }, - DEL_LEFT_VIEWS: (state, view) => { - const index = state.visitedViews.findIndex((v) => v.path === view.path); - if (index === -1) { - return; - } - state.visitedViews = state.visitedViews.filter((item, idx) => { - if (idx >= index || (item.meta && item.meta.affix)) { - return true; - } - const i = state.cachedViews.indexOf(item.name); - if (i > -1) { - state.cachedViews.splice(i, 1); - } - if (item.meta.link) { - const fi = state.iframeViews.findIndex((v) => v.path === item.path); - state.iframeViews.splice(fi, 1); - } - return false; - }); - }, -}; - -const actions = { - addView({ dispatch }, view) { - dispatch('addVisitedView', view); - dispatch('addCachedView', view); - }, - addIframeView({ commit }, view) { - commit('ADD_IFRAME_VIEW', view); - }, - addVisitedView({ commit }, view) { - commit('ADD_VISITED_VIEW', view); - }, - addCachedView({ commit }, view) { - commit('ADD_CACHED_VIEW', view); - }, - delView({ dispatch, state }, view) { - return new Promise((resolve) => { - dispatch('delVisitedView', view); - dispatch('delCachedView', view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews], - }); - }); - }, - delVisitedView({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_VISITED_VIEW', view); - resolve([...state.visitedViews]); - }); - }, - delIframeView({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_IFRAME_VIEW', view); - resolve([...state.iframeViews]); - }); - }, - delCachedView({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_CACHED_VIEW', view); - resolve([...state.cachedViews]); - }); - }, - delOthersViews({ dispatch, state }, view) { - return new Promise((resolve) => { - dispatch('delOthersVisitedViews', view); - dispatch('delOthersCachedViews', view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews], - }); - }); - }, - delOthersVisitedViews({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_OTHERS_VISITED_VIEWS', view); - resolve([...state.visitedViews]); - }); - }, - delOthersCachedViews({ commit, state }, view) { - return new Promise((resolve) => { - commit('DEL_OTHERS_CACHED_VIEWS', view); - resolve([...state.cachedViews]); - }); - }, - delAllViews({ dispatch, state }, view) { - return new Promise((resolve) => { - dispatch('delAllVisitedViews', view); - dispatch('delAllCachedViews', view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews], - }); - }); - }, - delAllVisitedViews({ commit, state }) { - return new Promise((resolve) => { - commit('DEL_ALL_VISITED_VIEWS'); - resolve([...state.visitedViews]); - }); - }, - delAllCachedViews({ commit, state }) { - return new Promise((resolve) => { - commit('DEL_ALL_CACHED_VIEWS'); - resolve([...state.cachedViews]); - }); - }, - updateVisitedView({ commit }, view) { - commit('UPDATE_VISITED_VIEW', view); - }, - delRightTags({ commit }, view) { - return new Promise((resolve) => { - commit('DEL_RIGHT_VIEWS', view); - resolve([...state.visitedViews]); - }); - }, - delLeftTags({ commit }, view) { - return new Promise((resolve) => { - commit('DEL_LEFT_VIEWS', view); - resolve([...state.visitedViews]); - }); - }, -}; - -export default { - namespaced: true, - state, - mutations, - actions, -}; diff --git a/sub-admin/src/store/modules/user.js b/sub-admin/src/store/modules/user.js deleted file mode 100644 index 98912b3..0000000 --- a/sub-admin/src/store/modules/user.js +++ /dev/null @@ -1,134 +0,0 @@ -import { login, logout, getInfo, refreshToken } from '@/api/login'; -import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'; -import { isEmpty } from '@/utils/validate'; -import defAva from '@/assets/images/profile.jpg'; - -const user = { - state: { - token: getToken(), - id: '', - name: '', - avatar: '', - roles: [], - permissions: [], - }, - - mutations: { - SET_TOKEN: (state, token) => { - state.token = token; - }, - SET_EXPIRES_IN: (state, time) => { - state.expires_in = time; - }, - SET_ID: (state, id) => { - state.id = id; - }, - SET_NAME: (state, name) => { - state.name = name; - }, - SET_AVATAR: (state, avatar) => { - state.avatar = avatar; - }, - SET_ROLES: (state, roles) => { - state.roles = roles; - }, - SET_PERMISSIONS: (state, permissions) => { - state.permissions = permissions; - }, - }, - - actions: { - // 登录 - Login({ commit }, 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) => { - let data = res.data; - setToken(data.access_token); - commit('SET_TOKEN', data.access_token); - setExpiresIn(data.expires_in); - commit('SET_EXPIRES_IN', data.expires_in); - resolve(); - }) - .catch((error) => { - reject(error); - }); - }); - }, - - // 获取用户信息 - GetInfo({ commit, state }) { - return new Promise((resolve, reject) => { - getInfo() - .then((res) => { - const user = res.user; - const avatar = isEmpty(user.avatar) ? defAva : user.avatar; - if (res.roles && res.roles.length > 0) { - // 验证返回的roles是否是一个非空数组 - commit('SET_ROLES', res.roles); - commit('SET_PERMISSIONS', res.permissions); - } else { - commit('SET_ROLES', ['ROLE_DEFAULT']); - } - commit('SET_ID', user.userId); - commit('SET_NAME', user.userName); - commit('SET_AVATAR', avatar); - resolve(res); - }) - .catch((error) => { - reject(error); - }); - }); - }, - - // 刷新token - RefreshToken({ commit, state }) { - return new Promise((resolve, reject) => { - refreshToken(state.token) - .then((res) => { - setExpiresIn(res.data); - commit('SET_EXPIRES_IN', res.data); - resolve(); - }) - .catch((error) => { - reject(error); - }); - }); - }, - - // 退出系统 - LogOut({ commit, state }) { - return new Promise((resolve, reject) => { - // console.log("logout:"+state.token) - if (null != state.token) { - logout(state.token) - .then(() => { - commit('SET_TOKEN', ''); - commit('SET_ROLES', []); - commit('SET_PERMISSIONS', []); - removeToken(); - resolve(); - }) - .catch((error) => { - reject(error); - }); - } - }); - }, - - // 前端 登出 - FedLogOut({ commit }) { - return new Promise((resolve) => { - commit('SET_TOKEN', ''); - removeToken(); - resolve(); - }); - }, - }, -}; - -export default user; diff --git a/sub-admin/src/utils/auth.js b/sub-admin/src/utils/auth.js deleted file mode 100644 index 3d87deb..0000000 --- a/sub-admin/src/utils/auth.js +++ /dev/null @@ -1,44 +0,0 @@ -import router from '../router'; - -import Cookies from 'js-cookie'; - -const TokenKey = 'Admin-Token'; - -const ExpiresInKey = 'Admin-Expires-In'; - -export function getToken() { - let token = Cookies.get(TokenKey); - if (undefined === token || null == token || 'null' === token) { - token = getQueryString('Authorization'); - if (null != token || 'null' !== token) Cookies.set(TokenKey, token); - } - if (undefined === token || null == token || 'null' === token) token = false; - return token; -} - -export function setToken(token) { - return Cookies.set(TokenKey, token); -} - -export function removeToken() { - return Cookies.remove(TokenKey); -} - -export function getExpiresIn() { - return Cookies.get(ExpiresInKey) || -1; -} - -export function setExpiresIn(time) { - return Cookies.set(ExpiresInKey, time); -} - -export function removeExpiresIn() { - return Cookies.remove(ExpiresInKey); -} - -export function getQueryString(name) { - var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); - var r = window.location.search.substr(1).match(reg); - if (r != null) return unescape(r[2]); - return null; -} diff --git a/sub-admin/src/utils/dict/Dict.js b/sub-admin/src/utils/dict/Dict.js deleted file mode 100644 index 990c471..0000000 --- a/sub-admin/src/utils/dict/Dict.js +++ /dev/null @@ -1,81 +0,0 @@ -import Vue from 'vue'; -import { mergeRecursive } from '@/utils/ruoyi'; -import DictMeta from './DictMeta'; -import DictData from './DictData'; - -const DEFAULT_DICT_OPTIONS = { - types: [], -}; - -/** - * @classdesc 字典 - * @property {Object} label 标签对象,内部属性名为字典类型名称 - * @property {Object} dict 字段数组,内部属性名为字典类型名称 - * @property {Array.} _dictMetas 字典元数据数组 - */ -export default class Dict { - constructor() { - this.owner = null; - this.label = {}; - this.type = {}; - } - - init(options) { - if (options instanceof Array) { - options = { types: options }; - } - const opts = mergeRecursive(DEFAULT_DICT_OPTIONS, options); - if (opts.types === undefined) { - throw new Error('need dict types'); - } - const ps = []; - this._dictMetas = opts.types.map((t) => DictMeta.parse(t)); - this._dictMetas.forEach((dictMeta) => { - const type = dictMeta.type; - Vue.set(this.label, type, {}); - Vue.set(this.type, type, []); - if (dictMeta.lazy) { - return; - } - ps.push(loadDict(this, dictMeta)); - }); - return Promise.all(ps); - } - - /** - * 重新加载字典 - * @param {String} type 字典类型 - */ - reloadDict(type) { - const dictMeta = this._dictMetas.find((e) => e.type === type); - if (dictMeta === undefined) { - return Promise.reject(`the dict meta of ${type} was not found`); - } - return loadDict(this, dictMeta); - } -} - -/** - * 加载字典 - * @param {Dict} dict 字典 - * @param {DictMeta} dictMeta 字典元数据 - * @returns {Promise} - */ -function loadDict(dict, dictMeta) { - return dictMeta.request(dictMeta).then((response) => { - const type = dictMeta.type; - let dicts = dictMeta.responseConverter(response, dictMeta); - if (!(dicts instanceof Array)) { - console.error('the return of responseConverter must be Array.'); - dicts = []; - } else if (dicts.filter((d) => d instanceof DictData).length !== dicts.length) { - console.error('the type of elements in dicts must be DictData'); - dicts = []; - } - dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts); - dicts.forEach((d) => { - Vue.set(dict.label[type], d.value, d.label); - }); - return dicts; - }); -} diff --git a/sub-admin/src/utils/dict/DictConverter.js b/sub-admin/src/utils/dict/DictConverter.js deleted file mode 100644 index ea1f235..0000000 --- a/sub-admin/src/utils/dict/DictConverter.js +++ /dev/null @@ -1,17 +0,0 @@ -import DictOptions from './DictOptions'; -import DictData from './DictData'; - -export default function (dict, dictMeta) { - const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS); - const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS); - return new DictData(dict[label], dict[value], dict); -} - -/** - * 确定字典字段 - * @param {DictData} dict - * @param {...String} fields - */ -function determineDictField(dict, ...fields) { - return fields.find((f) => Object.prototype.hasOwnProperty.call(dict, f)); -} diff --git a/sub-admin/src/utils/dict/DictData.js b/sub-admin/src/utils/dict/DictData.js deleted file mode 100644 index 81ee6f0..0000000 --- a/sub-admin/src/utils/dict/DictData.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @classdesc 字典数据 - * @property {String} label 标签 - * @property {*} value 标签 - * @property {Object} raw 原始数据 - */ -export default class DictData { - constructor(label, value, raw) { - this.label = label; - this.value = value; - this.raw = raw; - } -} diff --git a/sub-admin/src/utils/dict/DictMeta.js b/sub-admin/src/utils/dict/DictMeta.js deleted file mode 100644 index 30dd8b6..0000000 --- a/sub-admin/src/utils/dict/DictMeta.js +++ /dev/null @@ -1,37 +0,0 @@ -import { mergeRecursive } from '@/utils/ruoyi'; -import DictOptions from './DictOptions'; - -/** - * @classdesc 字典元数据 - * @property {String} type 类型 - * @property {Function} request 请求 - * @property {String} label 标签字段 - * @property {String} value 值字段 - */ -export default class DictMeta { - constructor(options) { - this.type = options.type; - this.request = options.request; - this.responseConverter = options.responseConverter; - this.labelField = options.labelField; - this.valueField = options.valueField; - this.lazy = options.lazy === true; - } -} - -/** - * 解析字典元数据 - * @param {Object} options - * @returns {DictMeta} - */ -DictMeta.parse = function (options) { - let opts = null; - if (typeof options === 'string') { - opts = DictOptions.metas[options] || {}; - opts.type = options; - } else if (typeof options === 'object') { - opts = options; - } - opts = mergeRecursive(DictOptions.metas['*'], opts); - return new DictMeta(opts); -}; diff --git a/sub-admin/src/utils/dict/DictOptions.js b/sub-admin/src/utils/dict/DictOptions.js deleted file mode 100644 index f8d9675..0000000 --- a/sub-admin/src/utils/dict/DictOptions.js +++ /dev/null @@ -1,51 +0,0 @@ -import { mergeRecursive } from '@/utils/ruoyi'; -import dictConverter from './DictConverter'; - -export const options = { - metas: { - '*': { - /** - * 字典请求,方法签名为function(dictMeta: DictMeta): Promise - */ - request: (dictMeta) => { - console.log(`load dict ${dictMeta.type}`); - return Promise.resolve([]); - }, - /** - * 字典响应数据转换器,方法签名为function(response: Object, dictMeta: DictMeta): DictData - */ - responseConverter, - labelField: 'label', - valueField: 'value', - }, - }, - /** - * 默认标签字段 - */ - DEFAULT_LABEL_FIELDS: ['label', 'name', 'title'], - /** - * 默认值字段 - */ - DEFAULT_VALUE_FIELDS: ['value', 'id', 'uid', 'key'], -}; - -/** - * 映射字典 - * @param {Object} response 字典数据 - * @param {DictMeta} dictMeta 字典元数据 - * @returns {DictData} - */ -function responseConverter(response, dictMeta) { - const dicts = response.content instanceof Array ? response.content : response; - if (dicts === undefined) { - console.warn(`no dict data of "${dictMeta.type}" found in the response`); - return []; - } - return dicts.map((d) => dictConverter(d, dictMeta)); -} - -export function mergeOptions(src) { - mergeRecursive(options, src); -} - -export default options; diff --git a/sub-admin/src/utils/dict/index.js b/sub-admin/src/utils/dict/index.js deleted file mode 100644 index 85cae59..0000000 --- a/sub-admin/src/utils/dict/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import Dict from './Dict'; -import { mergeOptions } from './DictOptions'; - -export default function (Vue, options) { - mergeOptions(options); - Vue.mixin({ - data() { - if (this.$options === undefined || this.$options.dicts === undefined || this.$options.dicts === null) { - return {}; - } - const dict = new Dict(); - dict.owner = this; - return { - dict, - }; - }, - created() { - if (!(this.dict instanceof Dict)) { - return; - } - options.onCreated && options.onCreated(this.dict); - this.dict.init(this.$options.dicts).then(() => { - options.onReady && options.onReady(this.dict); - this.$nextTick(() => { - this.$emit('dictReady', this.dict); - if (this.$options.methods && this.$options.methods.onDictReady instanceof Function) { - this.$options.methods.onDictReady.call(this, this.dict); - } - }); - }); - }, - }); -} diff --git a/sub-admin/src/utils/errorCode.js b/sub-admin/src/utils/errorCode.js deleted file mode 100644 index 5b962a0..0000000 --- a/sub-admin/src/utils/errorCode.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 401: '认证失败,无法访问系统资源', - 403: '当前操作没有权限', - 404: '访问资源不存在', - default: '系统未知错误,请反馈给管理员', -}; diff --git a/sub-admin/src/utils/generator/config.js b/sub-admin/src/utils/generator/config.js deleted file mode 100644 index 9126260..0000000 --- a/sub-admin/src/utils/generator/config.js +++ /dev/null @@ -1,451 +0,0 @@ -export const formConf = { - formRef: 'elForm', - formModel: 'formData', - size: 'medium', - labelPosition: 'right', - labelWidth: 100, - formRules: 'rules', - gutter: 15, - disabled: false, - span: 24, - formBtns: true, -}; - -export const inputComponents = [ - { - label: '单行文本', - tag: 'el-input', - tagIcon: 'input', - 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.eleme.cn/#/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.eleme.cn/#/zh-CN/component/input', - }, - { - label: '密码', - tag: 'el-input', - tagIcon: '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.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/zh-CN/component/cascader', - }, - { - label: '单选框组', - tag: 'el-radio-group', - tagIcon: 'radio', - defaultValue: undefined, - span: 24, - labelWidth: null, - style: {}, - optionType: 'default', - border: false, - size: 'medium', - disabled: false, - required: true, - options: [ - { - label: '选项一', - value: 1, - }, - { - label: '选项二', - value: 2, - }, - ], - regList: [], - changeTag: true, - document: 'https://element.eleme.cn/#/zh-CN/component/radio', - }, - { - label: '多选框组', - tag: 'el-checkbox-group', - tagIcon: 'checkbox', - defaultValue: [], - span: 24, - labelWidth: null, - style: {}, - optionType: 'default', - border: false, - size: 'medium', - disabled: false, - required: true, - options: [ - { - label: '选项一', - value: 1, - }, - { - label: '选项二', - value: 2, - }, - ], - regList: [], - changeTag: true, - document: 'https://element.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/zh-CN/component/slider', - }, - { - label: '时间选择', - tag: 'el-time-picker', - tagIcon: 'time', - placeholder: '请选择', - defaultValue: null, - span: 24, - labelWidth: null, - style: { width: '100%' }, - disabled: false, - clearable: true, - required: true, - 'picker-options': { - selectableRange: '00:00:00-23:59:59', - }, - format: 'HH:mm:ss', - 'value-format': 'HH:mm:ss', - regList: [], - changeTag: true, - document: 'https://element.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/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.eleme.cn/#/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: 'medium', - regList: [], - changeTag: true, - document: 'https://element.eleme.cn/#/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.eleme.cn/#/zh-CN/component/upload', - }, -]; - -export const layoutComponents = [ - { - layout: 'rowFormItem', - tagIcon: 'row', - type: 'default', - justify: 'start', - align: 'top', - label: '行容器', - layoutTree: true, - children: [], - document: 'https://element.eleme.cn/#/zh-CN/component/layout', - }, - { - layout: 'colFormItem', - label: '按钮', - changeTag: true, - labelWidth: null, - tag: 'el-button', - tagIcon: 'button', - span: 24, - default: '主要按钮', - type: 'primary', - icon: 'el-icon-search', - size: 'medium', - disabled: false, - document: 'https://element.eleme.cn/#/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/sub-admin/src/utils/generator/css.js b/sub-admin/src/utils/generator/css.js deleted file mode 100644 index cdf26bf..0000000 --- a/sub-admin/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/sub-admin/src/utils/generator/drawingDefault.js b/sub-admin/src/utils/generator/drawingDefault.js deleted file mode 100644 index 65a2669..0000000 --- a/sub-admin/src/utils/generator/drawingDefault.js +++ /dev/null @@ -1,31 +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': 'el-icon-mobile', - '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/sub-admin/src/utils/generator/html.js b/sub-admin/src/utils/generator/html.js deleted file mode 100644 index e288d06..0000000 --- a/sub-admin/src/utils/generator/html.js +++ /dev/null @@ -1,351 +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" :label="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" :disabled="item.disabled" ${border}>{{item.label}}` - ); - } - 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/sub-admin/src/utils/generator/icon.json b/sub-admin/src/utils/generator/icon.json deleted file mode 100644 index 2de7b07..0000000 --- a/sub-admin/src/utils/generator/icon.json +++ /dev/null @@ -1,282 +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" -] diff --git a/sub-admin/src/utils/generator/js.js b/sub-admin/src/utils/generator/js.js deleted file mode 100644 index 12ccfa8..0000000 --- a/sub-admin/src/utils/generator/js.js +++ /dev/null @@ -1,240 +0,0 @@ -import { exportDefault, titleCase } from '@/utils/index'; -import { trigger } from './config'; - -const units = { - KB: '1024', - MB: '1024 / 1024', - GB: '1024 / 1024 / 1024', -}; -let confGlobal; -const inheritAttrs = { - file: '', - dialog: 'inheritAttrs: false,', -}; - -export function makeUpJs(conf, type) { - confGlobal = conf = JSON.parse(JSON.stringify(conf)); - const dataList = []; - const ruleList = []; - const optionsList = []; - const propsList = []; - const methodList = mixinMethod(type); - 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') - ); - confGlobal = null; - return script; -} - -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( - `${el.vModel}Action: '${el.action}', - ${el.vModel}fileList: [],` - ); - 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); - }); - } -} - -function mixinMethod(type) { - const list = []; - const minxins = { - file: confGlobal.formBtns - ? { - submitForm: `submitForm() { - this.$refs['${confGlobal.formRef}'].validate(valid => { - if(!valid) return - // TODO 提交表单 - }) - },`, - resetForm: `resetForm() { - this.$refs['${confGlobal.formRef}'].resetFields() - },`, - } - : null, - dialog: { - onOpen: 'onOpen() {},', - onClose: `onClose() { - this.$refs['${confGlobal.formRef}'].resetFields() - },`, - close: `close() { - this.$emit('update:visible', false) - },`, - handleConfirm: `handleConfirm() { - this.$refs['${confGlobal.formRef}'].validate(valid => { - if(!valid) return - this.close() - }) - },`, - }, - }; - - const methods = minxins[type]; - if (methods) { - Object.keys(methods).forEach((key) => { - list.push(methods[key]); - }); - } - - return list; -} - -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},`); -} - -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: ${eval(item.pattern)}, message: '${item.message}', trigger: '${trigger[conf.tag]}' }`); - } - }); - } - ruleList.push(`${conf.vModel}: [${rules.join(',')}],`); - } -} - -function buildOptions(conf, optionsList) { - if (conf.vModel === undefined) return; - if (conf.dataType === 'dynamic') { - conf.options = []; - } - const str = `${conf.vModel}Options: ${JSON.stringify(conf.options)},`; - optionsList.push(str); -} - -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 = `${conf.vModel}Props: ${JSON.stringify(conf.props.props)},`; - propsList.push(str); -} - -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){ - this.$message.error('文件大小超过 ${conf.fileSize}${conf.sizeUnit}') - }`; - returnList.push('isRightSize'); - } - if (conf.accept) { - acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type) - if(!isAccept){ - this.$message.error('应该选择${conf.accept}类型的文件') - }`; - returnList.push('isAccept'); - } - const str = `${conf.vModel}BeforeUpload(file) { - ${rightSizeCode} - ${acceptCode} - return ${returnList.join('&&')} - },`; - return returnList.length ? str : ''; -} - -function buildSubmitUpload(conf) { - const str = `submitUpload() { - this.$refs['${conf.vModel}'].submit() - },`; - return str; -} - -function buildOptionMethod(methodName, model, methodList) { - const str = `${methodName}() { - // TODO 发起请求获取数据 - this.${model} - },`; - methodList.push(str); -} - -function buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods) { - const str = `${exportDefault}{ - ${inheritAttrs[type]} - components: {}, - props: [], - data () { - return { - ${conf.formModel}: { - ${data} - }, - ${conf.formRules}: { - ${rules} - }, - ${uploadVar} - ${selectOptions} - ${props} - } - }, - computed: {}, - watch: {}, - created () {}, - mounted () {}, - methods: { - ${methods} - } -}`; - return str; -} diff --git a/sub-admin/src/utils/generator/render.js b/sub-admin/src/utils/generator/render.js deleted file mode 100644 index 3f2c0e3..0000000 --- a/sub-admin/src/utils/generator/render.js +++ /dev/null @@ -1,144 +0,0 @@ -import { makeMap } from '@/utils/index'; - -// 参考https://github.com/vuejs/vue/blob/v2.6.10/src/platforms/web/server/util.js -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' -); - -function vModel(self, dataObject, defaultValue) { - dataObject.props.value = defaultValue; - - dataObject.on.input = (val) => { - self.$emit('input', val); - }; -} - -const componentChild = { - 'el-button': { - default(h, conf, key) { - return conf[key]; - }, - }, - 'el-input': { - prepend(h, conf, key) { - return ; - }, - append(h, conf, key) { - return ; - }, - }, - 'el-select': { - options(h, conf, key) { - const list = []; - conf.options.forEach((item) => { - list.push(); - }); - return list; - }, - }, - 'el-radio-group': { - options(h, conf, key) { - const list = []; - conf.options.forEach((item) => { - if (conf.optionType === 'button') list.push({item.label}); - else - list.push( - - {item.label} - - ); - }); - return list; - }, - }, - 'el-checkbox-group': { - options(h, conf, key) { - const list = []; - conf.options.forEach((item) => { - if (conf.optionType === 'button') { - list.push({item.label}); - } else { - list.push( - - {item.label} - - ); - } - }); - return list; - }, - }, - 'el-upload': { - 'list-type': (h, conf, key) => { - 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; - }, - }, -}; - -export default { - render(h) { - const dataObject = { - attrs: {}, - props: {}, - on: {}, - style: {}, - }; - const confClone = JSON.parse(JSON.stringify(this.conf)); - const children = []; - - 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)); - } - }); - } - - Object.keys(confClone).forEach((key) => { - const val = confClone[key]; - if (key === 'vModel') { - vModel(this, dataObject, confClone.defaultValue); - } else if (dataObject[key]) { - dataObject[key] = val; - } else if (!isAttr(key)) { - dataObject.props[key] = val; - } else { - dataObject.attrs[key] = val; - } - }); - return h(this.conf.tag, dataObject, children); - }, - props: ['conf'], -}; diff --git a/sub-admin/src/utils/index.js b/sub-admin/src/utils/index.js deleted file mode 100644 index b38086d..0000000 --- a/sub-admin/src/utils/index.js +++ /dev/null @@ -1,375 +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/sub-admin/src/utils/jsencrypt.js b/sub-admin/src/utils/jsencrypt.js deleted file mode 100644 index 1c0574b..0000000 --- a/sub-admin/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/sub-admin/src/utils/permission.js b/sub-admin/src/utils/permission.js deleted file mode 100644 index 49c3536..0000000 --- a/sub-admin/src/utils/permission.js +++ /dev/null @@ -1,45 +0,0 @@ -import store from '@/store'; - -/** - * 字符权限校验 - * @param {Array} value 校验值 - * @returns {Boolean} - */ -export function checkPermi(value) { - if (value && value instanceof Array && value.length > 0) { - const permissions = store.getters && store.getters.permissions; - const permissionDatas = value; - const all_permission = '*:*:*'; - - const hasPermission = permissions.some((permission) => { - return all_permission === permission || permissionDatas.includes(permission); - }); - - return hasPermission; - } 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 = store.getters && store.getters.roles; - const permissionRoles = value; - const super_admin = 'admin'; - - const hasRole = roles.some((role) => { - return super_admin === role || permissionRoles.includes(role); - }); - - return hasRole; - } else { - console.error(`need roles! Like checkRole="['admin','editor']"`); - return false; - } -} diff --git a/sub-admin/src/utils/request.js b/sub-admin/src/utils/request.js deleted file mode 100644 index f77343b..0000000 --- a/sub-admin/src/utils/request.js +++ /dev/null @@ -1,177 +0,0 @@ -import axios from 'axios'; -import { Notification, MessageBox, Message, Loading } from 'element-ui'; -import store from '@/store'; -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'; - -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: process.env.VUE_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'] = 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; - MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { - confirmButtonText: '重新登录', - cancelButtonText: '取消', - type: 'warning', - }) - .then(() => { - isRelogin.show = false; - store.dispatch('LogOut').then(() => { - location.href = '/index'; - }); - }) - .catch(() => { - isRelogin.show = false; - }); - } - return Promise.reject('无效的会话,或者会话已过期,请重新登录。'); - } else if (code === 500) { - Message({ message: msg, type: 'error' }); - return Promise.reject(new Error(msg)); - } else if (code === 601) { - Message({ message: msg, type: 'warning' }); - return Promise.reject('error'); - } else if (code !== 200) { - Notification.error({ title: msg }); - return Promise.reject('error'); - } else { - if (res.data.data?.records) { - res.data = { - code: res.data.code, - msg: res.data.msg, - rows: res.data.data.records, - total: res.data.data.total ?? 0, - }; - } - return 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) + '异常'; - } - Message({ message: message, type: 'error', duration: 5 * 1000 }); - return Promise.reject(error); - } -); - -// 通用下载方法 -export function download(url, params, filename, config) { - downloadLoadingInstance = Loading.service({ text: '正在下载数据,请稍候', spinner: 'el-icon-loading', 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']; - Message.error(errMsg); - } - downloadLoadingInstance.close(); - }) - .catch((r) => { - console.error(r); - Message.error('下载文件出现错误,请联系管理员!'); - downloadLoadingInstance.close(); - }); -} - -export default service; diff --git a/sub-admin/src/utils/ruoyi.js b/sub-admin/src/utils/ruoyi.js deleted file mode 100644 index 9228fe7..0000000 --- a/sub-admin/src/utils/ruoyi.js +++ /dev/null @@ -1,238 +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 nodeIds = {}; - var tree = []; - - for (let d of data) { - let parentId = d[config.parentId]; - if (childrenListMap[parentId] == null) { - childrenListMap[parentId] = []; - } - nodeIds[d[config.id]] = d; - childrenListMap[parentId].push(d); - } - - for (let d of data) { - let parentId = d[config.parentId]; - if (nodeIds[parentId] == null) { - tree.push(d); - } - } - - for (let t of tree) { - adaptToChildrenList(t); - } - - function adaptToChildrenList(o) { - if (childrenListMap[o[config.id]] !== null) { - o[config.childrenList] = childrenListMap[o[config.id]]; - } - if (o[config.childrenList]) { - for (let c of o[config.childrenList]) { - adaptToChildrenList(c); - } - } - } - 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; -} - -// 验证是否为blob格式 -export function blobValidate(data) { - return data.type !== 'application/json'; -} diff --git a/sub-admin/src/utils/scroll-to.js b/sub-admin/src/utils/scroll-to.js deleted file mode 100644 index a908ce1..0000000 --- a/sub-admin/src/utils/scroll-to.js +++ /dev/null @@ -1,65 +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/sub-admin/src/utils/validate.js b/sub-admin/src/utils/validate.js deleted file mode 100644 index a437688..0000000 --- a/sub-admin/src/utils/validate.js +++ /dev/null @@ -1,116 +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/sub-admin/src/views/dashboard/BarChart.vue b/sub-admin/src/views/dashboard/BarChart.vue deleted file mode 100644 index 54e2705..0000000 --- a/sub-admin/src/views/dashboard/BarChart.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/sub-admin/src/views/dashboard/LineChart.vue b/sub-admin/src/views/dashboard/LineChart.vue deleted file mode 100644 index 3adf806..0000000 --- a/sub-admin/src/views/dashboard/LineChart.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - diff --git a/sub-admin/src/views/dashboard/PanelGroup.vue b/sub-admin/src/views/dashboard/PanelGroup.vue deleted file mode 100644 index 640b9fc..0000000 --- a/sub-admin/src/views/dashboard/PanelGroup.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/dashboard/PieChart.vue b/sub-admin/src/views/dashboard/PieChart.vue deleted file mode 100644 index a148319..0000000 --- a/sub-admin/src/views/dashboard/PieChart.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/sub-admin/src/views/dashboard/RaddarChart.vue b/sub-admin/src/views/dashboard/RaddarChart.vue deleted file mode 100644 index b123447..0000000 --- a/sub-admin/src/views/dashboard/RaddarChart.vue +++ /dev/null @@ -1,119 +0,0 @@ - - - diff --git a/sub-admin/src/views/dashboard/mixins/resize.js b/sub-admin/src/views/dashboard/mixins/resize.js deleted file mode 100644 index 5e12fc0..0000000 --- a/sub-admin/src/views/dashboard/mixins/resize.js +++ /dev/null @@ -1,56 +0,0 @@ -import { debounce } from '@/utils'; - -export default { - data() { - return { - $_sidebarElm: null, - $_resizeHandler: null, - }; - }, - mounted() { - this.initListener(); - }, - activated() { - if (!this.$_resizeHandler) { - // avoid duplication init - this.initListener(); - } - - // when keep-alive chart activated, auto resize - this.resize(); - }, - beforeDestroy() { - this.destroyListener(); - }, - deactivated() { - this.destroyListener(); - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_sidebarResizeHandler(e) { - if (e.propertyName === 'width') { - this.$_resizeHandler(); - } - }, - initListener() { - this.$_resizeHandler = debounce(() => { - this.resize(); - }, 100); - window.addEventListener('resize', this.$_resizeHandler); - - this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]; - this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler); - }, - destroyListener() { - window.removeEventListener('resize', this.$_resizeHandler); - this.$_resizeHandler = null; - - this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler); - }, - resize() { - const { chart } = this; - chart && chart.resize(); - }, - }, -}; diff --git a/sub-admin/src/views/error/401.vue b/sub-admin/src/views/error/401.vue deleted file mode 100644 index f449b9e..0000000 --- a/sub-admin/src/views/error/401.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/error/404.vue b/sub-admin/src/views/error/404.vue deleted file mode 100644 index f6c57b8..0000000 --- a/sub-admin/src/views/error/404.vue +++ /dev/null @@ -1,228 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/index.vue b/sub-admin/src/views/index.vue deleted file mode 100644 index 848187b..0000000 --- a/sub-admin/src/views/index.vue +++ /dev/null @@ -1,681 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/index_v1.vue b/sub-admin/src/views/index_v1.vue deleted file mode 100644 index 9cefe34..0000000 --- a/sub-admin/src/views/index_v1.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/login.vue b/sub-admin/src/views/login.vue deleted file mode 100644 index 80dfaf1..0000000 --- a/sub-admin/src/views/login.vue +++ /dev/null @@ -1,195 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/monitor/job/index.vue b/sub-admin/src/views/monitor/job/index.vue deleted file mode 100644 index 6347168..0000000 --- a/sub-admin/src/views/monitor/job/index.vue +++ /dev/null @@ -1,452 +0,0 @@ - - - diff --git a/sub-admin/src/views/monitor/job/log.vue b/sub-admin/src/views/monitor/job/log.vue deleted file mode 100644 index d65a3fb..0000000 --- a/sub-admin/src/views/monitor/job/log.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - diff --git a/sub-admin/src/views/monitor/online/index.vue b/sub-admin/src/views/monitor/online/index.vue deleted file mode 100644 index e145ec7..0000000 --- a/sub-admin/src/views/monitor/online/index.vue +++ /dev/null @@ -1,102 +0,0 @@ - - - diff --git a/sub-admin/src/views/redirect.vue b/sub-admin/src/views/redirect.vue deleted file mode 100644 index 5138c0a..0000000 --- a/sub-admin/src/views/redirect.vue +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/sub-admin/src/views/register.vue b/sub-admin/src/views/register.vue deleted file mode 100644 index cd1179a..0000000 --- a/sub-admin/src/views/register.vue +++ /dev/null @@ -1,196 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/system/config/index.vue b/sub-admin/src/views/system/config/index.vue deleted file mode 100644 index 5eb5177..0000000 --- a/sub-admin/src/views/system/config/index.vue +++ /dev/null @@ -1,285 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/dept/index.vue b/sub-admin/src/views/system/dept/index.vue deleted file mode 100644 index b52a557..0000000 --- a/sub-admin/src/views/system/dept/index.vue +++ /dev/null @@ -1,296 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/dict/data.vue b/sub-admin/src/views/system/dict/data.vue deleted file mode 100644 index d0c79ce..0000000 --- a/sub-admin/src/views/system/dict/data.vue +++ /dev/null @@ -1,348 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/dict/index.vue b/sub-admin/src/views/system/dict/index.vue deleted file mode 100644 index 4f06dac..0000000 --- a/sub-admin/src/views/system/dict/index.vue +++ /dev/null @@ -1,284 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/logininfor/index.vue b/sub-admin/src/views/system/logininfor/index.vue deleted file mode 100644 index ec53a5b..0000000 --- a/sub-admin/src/views/system/logininfor/index.vue +++ /dev/null @@ -1,235 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/menu/index.vue b/sub-admin/src/views/system/menu/index.vue deleted file mode 100644 index fd9a9f7..0000000 --- a/sub-admin/src/views/system/menu/index.vue +++ /dev/null @@ -1,401 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/notice/index.vue b/sub-admin/src/views/system/notice/index.vue deleted file mode 100644 index fe1ed40..0000000 --- a/sub-admin/src/views/system/notice/index.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/operlog/index.vue b/sub-admin/src/views/system/operlog/index.vue deleted file mode 100644 index 00f3b10..0000000 --- a/sub-admin/src/views/system/operlog/index.vue +++ /dev/null @@ -1,295 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/post/index.vue b/sub-admin/src/views/system/post/index.vue deleted file mode 100644 index 2f001fa..0000000 --- a/sub-admin/src/views/system/post/index.vue +++ /dev/null @@ -1,257 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/role/authUser.vue b/sub-admin/src/views/system/role/authUser.vue deleted file mode 100644 index e5c8fc8..0000000 --- a/sub-admin/src/views/system/role/authUser.vue +++ /dev/null @@ -1,172 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/role/index.vue b/sub-admin/src/views/system/role/index.vue deleted file mode 100644 index 2b9bb0e..0000000 --- a/sub-admin/src/views/system/role/index.vue +++ /dev/null @@ -1,537 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/role/selectUser.vue b/sub-admin/src/views/system/role/selectUser.vue deleted file mode 100644 index 154c3a4..0000000 --- a/sub-admin/src/views/system/role/selectUser.vue +++ /dev/null @@ -1,120 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/user/authRole.vue b/sub-admin/src/views/system/user/authRole.vue deleted file mode 100644 index cd69cb6..0000000 --- a/sub-admin/src/views/system/user/authRole.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/user/index.vue b/sub-admin/src/views/system/user/index.vue deleted file mode 100644 index f86c37f..0000000 --- a/sub-admin/src/views/system/user/index.vue +++ /dev/null @@ -1,676 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/user/profile/index.vue b/sub-admin/src/views/system/user/profile/index.vue deleted file mode 100644 index 6219fe8..0000000 --- a/sub-admin/src/views/system/user/profile/index.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/user/profile/resetPwd.vue b/sub-admin/src/views/system/user/profile/resetPwd.vue deleted file mode 100644 index 94af5d0..0000000 --- a/sub-admin/src/views/system/user/profile/resetPwd.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/sub-admin/src/views/system/user/profile/userAvatar.vue b/sub-admin/src/views/system/user/profile/userAvatar.vue deleted file mode 100644 index cb0325a..0000000 --- a/sub-admin/src/views/system/user/profile/userAvatar.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - - diff --git a/sub-admin/src/views/system/user/profile/userInfo.vue b/sub-admin/src/views/system/user/profile/userInfo.vue deleted file mode 100644 index 1c743f5..0000000 --- a/sub-admin/src/views/system/user/profile/userInfo.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/build/CodeTypeDialog.vue b/sub-admin/src/views/tool/build/CodeTypeDialog.vue deleted file mode 100644 index 0976a3f..0000000 --- a/sub-admin/src/views/tool/build/CodeTypeDialog.vue +++ /dev/null @@ -1,96 +0,0 @@ - - diff --git a/sub-admin/src/views/tool/build/DraggableItem.vue b/sub-admin/src/views/tool/build/DraggableItem.vue deleted file mode 100644 index 9a68208..0000000 --- a/sub-admin/src/views/tool/build/DraggableItem.vue +++ /dev/null @@ -1,121 +0,0 @@ - diff --git a/sub-admin/src/views/tool/build/IconsDialog.vue b/sub-admin/src/views/tool/build/IconsDialog.vue deleted file mode 100644 index bf04e9e..0000000 --- a/sub-admin/src/views/tool/build/IconsDialog.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/build/RightPanel.vue b/sub-admin/src/views/tool/build/RightPanel.vue deleted file mode 100644 index 3520e03..0000000 --- a/sub-admin/src/views/tool/build/RightPanel.vue +++ /dev/null @@ -1,770 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/tool/build/TreeNodeDialog.vue b/sub-admin/src/views/tool/build/TreeNodeDialog.vue deleted file mode 100644 index af9a98e..0000000 --- a/sub-admin/src/views/tool/build/TreeNodeDialog.vue +++ /dev/null @@ -1,111 +0,0 @@ - - diff --git a/sub-admin/src/views/tool/build/index.vue b/sub-admin/src/views/tool/build/index.vue deleted file mode 100644 index 1ba5a10..0000000 --- a/sub-admin/src/views/tool/build/index.vue +++ /dev/null @@ -1,732 +0,0 @@ - - - - - diff --git a/sub-admin/src/views/tool/gen/basicInfoForm.vue b/sub-admin/src/views/tool/gen/basicInfoForm.vue deleted file mode 100644 index 194060d..0000000 --- a/sub-admin/src/views/tool/gen/basicInfoForm.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/gen/editTable.vue b/sub-admin/src/views/tool/gen/editTable.vue deleted file mode 100644 index 57ff4f3..0000000 --- a/sub-admin/src/views/tool/gen/editTable.vue +++ /dev/null @@ -1,220 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/gen/genInfoForm.vue b/sub-admin/src/views/tool/gen/genInfoForm.vue deleted file mode 100644 index d70b276..0000000 --- a/sub-admin/src/views/tool/gen/genInfoForm.vue +++ /dev/null @@ -1,302 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/gen/importTable.vue b/sub-admin/src/views/tool/gen/importTable.vue deleted file mode 100644 index 9ef4b22..0000000 --- a/sub-admin/src/views/tool/gen/importTable.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/sub-admin/src/views/tool/gen/index.vue b/sub-admin/src/views/tool/gen/index.vue deleted file mode 100644 index d30d75c..0000000 --- a/sub-admin/src/views/tool/gen/index.vue +++ /dev/null @@ -1,263 +0,0 @@ - - - diff --git a/sub-admin/vue.config.js b/sub-admin/vue.config.js deleted file mode 100644 index 164df24..0000000 --- a/sub-admin/vue.config.js +++ /dev/null @@ -1,155 +0,0 @@ -'use strict'; -const path = require('path'); - -function resolve(dir) { - return path.join(__dirname, dir); -} - -const CompressionPlugin = require('compression-webpack-plugin'); - -const name = process.env.VUE_APP_TITLE || '若依管理系统'; // 网页标题 - -const port = process.env.VUE_APP_PORT; // 端口 - -// vue.config.js 配置说明 -// 官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions -// 这里只列一部分,具体配置参考文档 -module.exports = { - // 部署生产环境和开发环境下的URL。 - // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - publicPath: './', - // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) - outputDir: 'dist', - // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) - assetsDir: 'static', - // 是否开启eslint保存检测,有效值:ture | false | 'error' - lintOnSave: process.env.NODE_ENV === 'development', - // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 - productionSourceMap: false, - transpileDependencies: ['quill'], - // webpack-dev-server 相关配置 - devServer: { - host: '0.0.0.0', - port: port, - open: true, - https: false, - headers: { - 'Access-Control-Allow-Origin': '*', - }, - proxy: { - // detail: https://cli.vuejs.org/config/#devserver-proxy - [process.env.VUE_APP_BASE_API]: { - target: process.env.VUE_APP_BASE_URL, - changeOrigin: true, - pathRewrite: { - ['^' + process.env.VUE_APP_BASE_API]: '', - }, - }, - }, - disableHostCheck: true, - }, - css: { - loaderOptions: { - sass: { - sassOptions: { outputStyle: 'expanded' }, - }, - }, - }, - configureWebpack: { - name: name, - resolve: { - alias: { - '@': resolve('src'), - }, - }, - output: { - library: `${name}-[name]`, - libraryTarget: 'umd', // 把微应用打包成 umd 库格式 - jsonpFunction: `${name}`, - filename: `[name].[hash].js`, - chunkFilename: `[name].[hash].js`, - }, - plugins: [ - new CompressionPlugin({ - cache: false, // 不启用文件缓存 - test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i, // 压缩文件格式 - filename: '[path][base].gz[query]', // 压缩后的文件名 - algorithm: 'gzip', // 使用gzip压缩 - minRatio: 0.8, // 压缩比例,小于 80% 的文件不会被压缩 - deleteOriginalAssets: false, // 压缩后删除原文件 - }), - ], - }, - chainWebpack(config) { - config.plugins.delete('preload'); // TODO: need test - config.plugins.delete('prefetch'); // TODO: need test - - // set svg-sprite-loader - config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end(); - config.module - .rule('icons') - .test(/\.svg$/) - .include.add(resolve('src/assets/icons')) - .end() - .use('svg-sprite-loader') - .loader('svg-sprite-loader') - .options({ - symbolId: 'icon-[name]', - }) - .end(); - - config.module - .rule('fonts') - .test(/\.(ttf|woff)(\?.*)?$/) - .use('url-loader') - .loader('url-loader') - .tap((options) => { - options = { - ...options, - limit: 99999999, - name: '[name].[hash:7].[ext]', - }; - return options; - }) - .end(); - - config.when(process.env.NODE_ENV !== 'development', (config) => { - config - .plugin('ScriptExtHtmlWebpackPlugin') - .after('html') - .use('script-ext-html-webpack-plugin', [ - { - // `runtime` must same as runtimeChunk name. default is `runtime` - inline: /runtime\..*\.js$/, - }, - ]) - .end(); - - config.optimization.splitChunks({ - chunks: 'all', - cacheGroups: { - libs: { - name: 'chunk-libs', - test: /[\\/]node_modules[\\/]/, - priority: 10, - chunks: 'initial', // only package third parties that are initially dependent - }, - elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package - test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm - priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app - }, - commons: { - name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules - minChunks: 3, // minimum common number - priority: 5, - reuseExistingChunk: true, - }, - }, - }); - config.optimization.runtimeChunk('single'); - }); - }, -}; diff --git a/sub-government-affairs-service/.env.test b/sub-government-affairs-service/.env.test new file mode 100644 index 0000000..aae59b7 --- /dev/null +++ b/sub-government-affairs-service/.env.test @@ -0,0 +1,9 @@ +# 测试环境 +VITE_APP_MIAN = 'daimp-front-main' +VITE_APP_MIAN_URL = 'http://192.168.18.99:88' +VITE_APP_NAME = 'sub-government-affairs-service' +# 接口 +VITE_APP_BASE_API = '/apis' +VITE_APP_BASE_URL = '' +VITE_APP_UPLOAD_API = '/uploadApis' +VITE_APP_UPLOAD_URL = '' diff --git a/sub-government-affairs-service/.gitignore b/sub-government-affairs-service/.gitignore index 1f22b9c..bdeba94 100644 --- a/sub-government-affairs-service/.gitignore +++ b/sub-government-affairs-service/.gitignore @@ -70,7 +70,6 @@ web_modules/ # dotenv environment variables file .env -.env.test # parcel-bundler cache (https://parceljs.org/) .cache diff --git a/sub-government-affairs-service/src/apis/inputSuppliesApi/enterpriseDealerCheck.js b/sub-government-affairs-service/src/apis/inputSuppliesApi/enterpriseDealerCheck.js index 4d6ea63..2ec9905 100644 --- a/sub-government-affairs-service/src/apis/inputSuppliesApi/enterpriseDealerCheck.js +++ b/sub-government-affairs-service/src/apis/inputSuppliesApi/enterpriseDealerCheck.js @@ -6,17 +6,23 @@ export function getEnterpriseDealerCheck(params) { }); } export function addEnterpriseDealerCheck(data) { - return request('/inputGoods/distributorCheck/page', { + return request('/inputGoods/distributorCheck/save', { method: 'POST', data, }); } export function delEnterpriseDealerCheck(ids) { - return request(`/inputGoods/distributorCheck/page/${ids}`); + return request(`/inputGoods/distributorCheck/delete/${ids}`); } export function editEnterpriseDealerCheck(data) { - return request('/inputGoods/distributorCheck/page', { - method: 'POST', + return request('/inputGoods/distributorCheck/edit', { + method: 'PUT', + data, + }); +} +export function enterpriseDealerCheckRegister(data) { + return request('/inputGoods/distributorCheck/register', { + method: 'PUT', data, }); } diff --git a/sub-government-affairs-service/src/assets/images/logo.png b/sub-government-affairs-service/src/assets/images/logo.png new file mode 100644 index 0000000..def1819 Binary files /dev/null and b/sub-government-affairs-service/src/assets/images/logo.png differ diff --git a/sub-government-affairs-service/src/layouts/component/Avatar/index.vue b/sub-government-affairs-service/src/layouts/component/Avatar/index.vue index 5dab309..a249430 100644 --- a/sub-government-affairs-service/src/layouts/component/Avatar/index.vue +++ b/sub-government-affairs-service/src/layouts/component/Avatar/index.vue @@ -3,7 +3,7 @@ * @Author: zenghua.wang * @Date: 2023-06-20 14:29:45 * @LastEditors: zenghua.wang - * @LastEditTime: 2025-02-18 09:48:18 + * @LastEditTime: 2025-04-10 11:15:23 -->