diff --git a/src/api/common.js b/src/api/common.js new file mode 100644 index 0000000..d4ab267 --- /dev/null +++ b/src/api/common.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + + + + + +export function listCommondepartment(params) { + return request({ + url: '/api/admin/other/admin-department-list', + method: 'get', + params:params + }) +} + + +export function listCommonuser(params) { + return request({ + url: '/api/admin/other/admin-user-list', + method: 'get', + params:params + }) +} + + +export function remoteStatistic(params) { + return request({ + url: '/api/admin/other/remot-statistic', + method: 'get', + params:params + }) +} diff --git a/src/api/system/role.js b/src/api/system/role.js index bfa6f41..06da4c9 100644 --- a/src/api/system/role.js +++ b/src/api/system/role.js @@ -13,7 +13,8 @@ export function list() { url: '/api/admin/role', method: 'get' }) -} +} + export function del(data) { return request({ url: '/api/admin/role/delete', @@ -21,3 +22,12 @@ export function del(data) { data }) } + + +export function set(data) { + return request({ + url: '/api/admin/admin/set-roles-many', + method: 'post', + data + }) +} diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index e9ea249..93b3ccd 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -1,133 +1,140 @@ - - - - - diff --git a/src/router/index.js b/src/router/index.js index 7c5491a..3bf369d 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,92 +1,106 @@ -import Vue from 'vue' -import Router from 'vue-router' - -Vue.use(Router) - -/* Layout */ -import Layout from '@/layout' - -/** - * Note: sub-menu only appear when route children.length >= 1 - * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html - * - * hidden: true if set true, item will not show in the sidebar(default is false) - * alwaysShow: true if set true, will always show the root menu - * if not set alwaysShow, when item has more than one children route, - * it will becomes nested mode, otherwise not show the root menu - * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb - * name:'router-name' the name is used by (must set!!!) - * meta : { - roles: ['admin','editor'] control the page roles (you can set multiple roles) - title: 'title' the name show in sidebar and breadcrumb (recommend set) - icon: 'svg-name'/'el-icon-x' the icon show in the sidebar - breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) - activeMenu: '/example/list' if set path, the sidebar will highlight the path you set - } - */ - -/** - * constantRoutes - * a base page that does not have permission requirements - * all roles can be accessed - */ -export const constantRoutes = [{ - path: '/login', - component: () => import('@/views/login/index'), - hidden: true -}, - - { - path: '/404', - component: () => import('@/views/404'), - hidden: true - }, - { - path: '/', - component: Layout, - redirect: '/dashboard', - children: [{ - path: 'dashboard', - name: '系统首页', - component: () => import('@/views/dashboard/index'), - meta: { - title: '系统首页', - icon: 'dashboard' - } - }, - ] - } -] - -/** - * asyncRoutes - * the routes that need to be dynamically loaded based on user roles - */ -export const asyncRoutes = [ - - - // 404 page must be placed at the end !!! - { - path: '*', - redirect: '/404', - hidden: true - } -] - -const createRouter = () => new Router({ - // mode: 'history', // require service support - scrollBehavior: () => ({ - y: 0 - }), - routes: constantRoutes -}) - -const router = createRouter() - -// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 -export function resetRouter() { - const newRouter = createRouter() - router.matcher = newRouter.matcher // reset router -} - +import Vue from 'vue' +import Router from 'vue-router' + +Vue.use(Router) + +/* Layout */ +import Layout from '@/layout' + +/** + * Note: sub-menu only appear when route children.length >= 1 + * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html + * + * hidden: true if set true, item will not show in the sidebar(default is false) + * alwaysShow: true if set true, will always show the root menu + * if not set alwaysShow, when item has more than one children route, + * it will becomes nested mode, otherwise not show the root menu + * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb + * name:'router-name' the name is used by (must set!!!) + * meta : { + roles: ['admin','editor'] control the page roles (you can set multiple roles) + title: 'title' the name show in sidebar and breadcrumb (recommend set) + icon: 'svg-name'/'el-icon-x' the icon show in the sidebar + breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) + activeMenu: '/example/list' if set path, the sidebar will highlight the path you set + } + */ + +/** + * constantRoutes + * a base page that does not have permission requirements + * all roles can be accessed + */ +export const constantRoutes = [{ + path: '/login', + component: () => import('@/views/login/index'), + hidden: true + }, + + { + path: '/404', + component: () => import('@/views/404'), + hidden: true + }, + + { + path: '/info', + component: Layout, + children: [{ + path: 'password', + component: () => import('@/views/system/password'), + name: '密码修改', + meta: { + title: '密码修改' + } + }], + hidden: true + }, + + { + path: '/', + component: Layout, + redirect: '/dashboard', + children: [{ + path: 'dashboard', + name: '系统首页', + component: () => import('@/views/dashboard/index'), + meta: { + title: '系统首页', + icon: 'dashboard' + } + }, ] + } +] + +/** + * asyncRoutes + * the routes that need to be dynamically loaded based on user roles + */ +export const asyncRoutes = [ + + + // 404 page must be placed at the end !!! + { + path: '*', + redirect: '/404', + hidden: true + } +] + +const createRouter = () => new Router({ + // mode: 'history', // require service support + scrollBehavior: () => ({ + y: 0 + }), + routes: constantRoutes +}) + +const router = createRouter() + +// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 +export function resetRouter() { + const newRouter = createRouter() + router.matcher = newRouter.matcher // reset router +} + export default router diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index 36db0b6..06fd367 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -76,40 +76,70 @@ const componentHandler = (path) => { } return loadView(path) } - -export function generaMenu(routes, data) { - data.forEach(item => { - if (item.url === "/") { - - } else { - const menu = { - path: pathHandler(item.url,item.id), - //(item.path === '#'||item.path == '' ? item.id + '_key' : item.path), - component: componentHandler(item.url), - //(item.path === '#'||item.path == '' ? Layout : loadView(item.path)), - // hidden: true, - // hidden: true, - children: [], - name: 'menu_' + item.id, - meta: { - title: item.name, - id: item.id, - roles: ['admin'], - - icon: item.icon - } - } - if (item.children) { - generaMenu(menu.children, item.children) - } - routes.push(menu) - } - }) - routes.push({ - path: '*', - redirect: '/404', - hidden: true - }) + +/** + * 后台查询的菜单数据拼装成路由格式的数据 + * @param routes + */ +export function generaMenu(routes, data) { + data.forEach(item => { + if (item.url === "/") { + routes.push({ + path: '/', + component: Layout, + redirect: '/dashboard', + children: [{ + path: 'dashboard', + name: '系统首页', + component: () => import('@/views/dashboard/index'), + meta: { + title: '系统首页', + icon: 'dashboard' + } + }] + }) + } else if (item.url === "##") { + routes.push({ + path: item.path, + component: Layout, + children: [{ + path: item.path, + name: item.name, + component: item.url === '#' ? Layout : loadView(item.path), + meta: { + title: item.name, + id: item.id, + roles: ['admin'], + icon: item.icon + } + }] + }) + } else { + var path = item.url; + if (item.path != "null" && item.path != null && item.path != "") { + path = item.path + } + const menu = { + path: (path === '#' ? item.id + '_key' : path), + redirect: (item.children.length > 0 ? "noRedirect" : ""), + component: item.url === '#' ? Layout : loadView(item.url), + // hidden: true, + children: [], + name: 'menu_' + item.id, + meta: { + title: item.name, + id: item.id, + roles: ['admin'], + + icon: item.icon + } + } + if (item.children) { + generaMenu(menu.children, item.children) + } + routes.push(menu) + } + }) } const mutations = { diff --git a/src/views/system/components/Account.vue b/src/views/system/components/Account.vue new file mode 100644 index 0000000..cb0d2f6 --- /dev/null +++ b/src/views/system/components/Account.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/views/system/components/Timeline.vue b/src/views/system/components/Timeline.vue new file mode 100644 index 0000000..aad2ba2 --- /dev/null +++ b/src/views/system/components/Timeline.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/views/system/components/UserCard.vue b/src/views/system/components/UserCard.vue new file mode 100644 index 0000000..3a38589 --- /dev/null +++ b/src/views/system/components/UserCard.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/views/system/menu.vue b/src/views/system/menu.vue index d708866..a9b68f1 100644 --- a/src/views/system/menu.vue +++ b/src/views/system/menu.vue @@ -23,6 +23,8 @@ + + @@ -65,6 +67,13 @@ + + + + + + + @@ -178,7 +187,8 @@ pname: "根菜单", api_prefix: "", auth_node_tagsArr: [], - auth_node_tags: "" + auth_node_tags: "", + path: "" }, actionRules: { tag: [{ diff --git a/src/views/system/password.vue b/src/views/system/password.vue new file mode 100644 index 0000000..3b1e7b6 --- /dev/null +++ b/src/views/system/password.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/views/system/role.vue b/src/views/system/role.vue index 0032094..cc44457 100644 --- a/src/views/system/role.vue +++ b/src/views/system/role.vue @@ -1,159 +1,237 @@ - - - - -