From a397dabe5db8b1fc3ba31e51df9b9fe45f35e7eb Mon Sep 17 00:00:00 2001 From: zxx <47968546@163.com> Date: Tue, 18 Oct 2022 21:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=AD=E5=8F=B0=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E7=9A=84=E5=90=84=E4=B8=AA=E6=9C=8D=E5=8A=A1=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 4 +- src/assets/img/logo-vue.png | Bin 0 -> 26705 bytes src/assets/img/logo.png | Bin 26705 -> 5409 bytes src/components/menu/SideMenu.vue | 4 +- src/components/menu/index.less | 7 +- src/layouts/footer/PageFooter.vue | 9 ++- src/layouts/header/HeaderAvatar.vue | 15 ++-- src/layouts/tabs/TabsView.vue | 4 +- .../Middle/Admin/AdminAgent/AgentAdd.vue | 15 ++++ .../Middle/Admin/AdminAgent/AgentDetail.vue | 15 ++++ .../Middle/Admin/AdminAgent/AgentList.vue | 15 ++++ .../Middle/Admin/AdminAgent/AgentUpdate.vue | 15 ++++ .../Middle/Admin/AdminCompany/CompanyAdd.vue | 16 ++++ .../Admin/AdminCompany/CompanyDetail.vue | 15 ++++ .../Middle/Admin/AdminCompany/CompanyList.vue | 15 ++++ .../Admin/AdminCompany/CompanyUpdate.vue | 15 ++++ .../Middle/Admin/AdminConfig/ConfigAdd.vue | 15 ++++ .../Middle/Admin/AdminConfig/ConfigDetail.vue | 15 ++++ .../Middle/Admin/AdminConfig/ConfigList.vue | 15 ++++ .../Middle/Admin/AdminConfig/ConfigUpdate.vue | 15 ++++ src/pages/Middle/Admin/AdminLog/LogDetail.vue | 15 ++++ src/pages/Middle/Admin/AdminLog/LogList.vue | 15 ++++ .../Admin/AdminPermission/PermissionAdd.vue | 15 ++++ .../AdminPermission/PermissionDetail.vue | 15 ++++ .../Admin/AdminPermission/PermissionList.vue | 15 ++++ .../AdminPermission/PermissionUpdate.vue | 15 ++++ .../Middle/Admin/AdminService/ServiceAdd.vue | 15 ++++ .../Admin/AdminService/ServiceDetail.vue | 15 ++++ .../Middle/Admin/AdminService/ServiceList.vue | 15 ++++ .../Admin/AdminService/ServiceUpdate.vue | 15 ++++ src/pages/Middle/Admin/AdminUser/UserAdd.vue | 29 +++++++ src/pages/Middle/Admin/AdminUser/UserList.vue | 34 +++++++++ .../Middle/Admin/AdminUser/UserUpdate.vue | 28 +++++++ src/pages/login/Login.vue | 15 ++-- .../Middle/Admin/AdminAgent/router.map.js | 68 +++++++++++++++++ .../Middle/Admin/AdminCompany/router.map.js | 71 ++++++++++++++++++ .../Middle/Admin/AdminConfig/router.map.js | 71 ++++++++++++++++++ .../Middle/Admin/AdminLog/router.map.js | 47 ++++++++++++ .../Admin/AdminPermission/router.map.js | 68 +++++++++++++++++ .../Middle/Admin/AdminService/router.map.js | 68 +++++++++++++++++ .../Middle/Admin/AdminStore/router.map.js | 68 +++++++++++++++++ .../Middle/Admin/AdminUser/router.map.js | 42 ++++++++++- .../Middle/Base/BaseAdmin/router.map.js | 2 +- src/router/async/base.map.js | 1 + src/router/async/router.map.js | 21 +++++- src/router/guards.js | 4 + src/store/modules/account.js | 17 +++-- src/utils/request.js | 10 ++- src/utils/routerUtil.js | 3 - 49 files changed, 998 insertions(+), 43 deletions(-) create mode 100644 src/assets/img/logo-vue.png create mode 100644 src/pages/Middle/Admin/AdminAgent/AgentAdd.vue create mode 100644 src/pages/Middle/Admin/AdminAgent/AgentDetail.vue create mode 100644 src/pages/Middle/Admin/AdminAgent/AgentList.vue create mode 100644 src/pages/Middle/Admin/AdminAgent/AgentUpdate.vue create mode 100644 src/pages/Middle/Admin/AdminCompany/CompanyAdd.vue create mode 100644 src/pages/Middle/Admin/AdminCompany/CompanyDetail.vue create mode 100644 src/pages/Middle/Admin/AdminCompany/CompanyList.vue create mode 100644 src/pages/Middle/Admin/AdminCompany/CompanyUpdate.vue create mode 100644 src/pages/Middle/Admin/AdminConfig/ConfigAdd.vue create mode 100644 src/pages/Middle/Admin/AdminConfig/ConfigDetail.vue create mode 100644 src/pages/Middle/Admin/AdminConfig/ConfigList.vue create mode 100644 src/pages/Middle/Admin/AdminConfig/ConfigUpdate.vue create mode 100644 src/pages/Middle/Admin/AdminLog/LogDetail.vue create mode 100644 src/pages/Middle/Admin/AdminLog/LogList.vue create mode 100644 src/pages/Middle/Admin/AdminPermission/PermissionAdd.vue create mode 100644 src/pages/Middle/Admin/AdminPermission/PermissionDetail.vue create mode 100644 src/pages/Middle/Admin/AdminPermission/PermissionList.vue create mode 100644 src/pages/Middle/Admin/AdminPermission/PermissionUpdate.vue create mode 100644 src/pages/Middle/Admin/AdminService/ServiceAdd.vue create mode 100644 src/pages/Middle/Admin/AdminService/ServiceDetail.vue create mode 100644 src/pages/Middle/Admin/AdminService/ServiceList.vue create mode 100644 src/pages/Middle/Admin/AdminService/ServiceUpdate.vue create mode 100644 src/pages/Middle/Admin/AdminUser/UserAdd.vue create mode 100644 src/pages/Middle/Admin/AdminUser/UserList.vue create mode 100644 src/pages/Middle/Admin/AdminUser/UserUpdate.vue create mode 100644 src/router/Middle/Admin/AdminAgent/router.map.js create mode 100644 src/router/Middle/Admin/AdminCompany/router.map.js create mode 100644 src/router/Middle/Admin/AdminConfig/router.map.js create mode 100644 src/router/Middle/Admin/AdminLog/router.map.js create mode 100644 src/router/Middle/Admin/AdminPermission/router.map.js create mode 100644 src/router/Middle/Admin/AdminService/router.map.js create mode 100644 src/router/Middle/Admin/AdminStore/router.map.js diff --git a/src/App.vue b/src/App.vue index 71659e5..bd1b8bf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -50,10 +50,10 @@ export default { }, computed: { ...mapState('setting', ['layout', 'theme', 'weekMode', 'lang']), - ...mapState('account', ['project']) , }, methods: { ...mapMutations('setting', ['setDevice']), + ...mapState('account', ['project']) , setWeekModeTheme(weekMode) { // 设置色弱模式主题 if (weekMode) { // 如果是色弱模式 document.body.classList.add('week-mode') // 添加色弱模式样式 @@ -77,7 +77,7 @@ export default { } }, setHtmlTitle() { // 设置html标题 - const project = this.project + const project = JSON.parse(localStorage.getItem(process.env.VUE_APP_PROJECT_KEY)) const route = this.$route // 获取当前路由 const key = route.path === '/' ? 'home.name' : getI18nKey(route.matched[route.matched.length - 1].path) // 获取当前路由的i18n keywords 如果是首页则设置为home.name 否则获取当前路由的i18n keywords document.title = project.project_name + ' | ' + this.$t(key) // 设置html标题 process.env.VUE_APP_NAME 为项目名称 this.$t(key) 为当前路由的i18n keywords diff --git a/src/assets/img/logo-vue.png b/src/assets/img/logo-vue.png new file mode 100644 index 0000000000000000000000000000000000000000..62bfe39aaad240dc0daa7dd5f48a80d1feedc002 GIT binary patch literal 26705 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Ú)iw@EROzI;@MB?O80_sB- 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 literal 26705 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Ú)iw@EROzI;@MB?O80_sB- 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 - +

{{project.project_name}}

- +

{{company.company_info.name}}

diff --git a/src/components/menu/index.less b/src/components/menu/index.less index c8e49ec..bf6204d 100644 --- a/src/components/menu/index.less +++ b/src/components/menu/index.less @@ -6,14 +6,15 @@ overflow-y: auto; z-index: 10; .logo{ - height: 64px; + position: relative; line-height: 64px; - padding-left: 15px; + padding-left: 10px; -webkit-transition: all .3s; transition: all .3s; overflow: hidden; background-color: @layout-trigger-background; + &.light{ background-color: #fff; h1{ @@ -30,6 +31,8 @@ img{ width: 50px; vertical-align: middle; + // 调整明度为100 + } } } diff --git a/src/layouts/footer/PageFooter.vue b/src/layouts/footer/PageFooter.vue index 9e8029e..38a3539 100644 --- a/src/layouts/footer/PageFooter.vue +++ b/src/layouts/footer/PageFooter.vue @@ -10,12 +10,15 @@ diff --git a/src/layouts/header/HeaderAvatar.vue b/src/layouts/header/HeaderAvatar.vue index 694cb9b..5bcb321 100644 --- a/src/layouts/header/HeaderAvatar.vue +++ b/src/layouts/header/HeaderAvatar.vue @@ -5,18 +5,10 @@ {{user.name}} - - + + 用户管理 - - - 权限管理 - - - - 参数管理 - @@ -36,6 +28,9 @@ export default { ...mapGetters('account', ['user']), // 获取用户信息 }, methods: { + adminUser(){ + this.$router.push('/AdminUser/AdminUserList'); + }, logout() { // 退出登录 logout() // 调用退出登录接口 this.$router.push('/login') // 跳转到登录页 diff --git a/src/layouts/tabs/TabsView.vue b/src/layouts/tabs/TabsView.vue index 08dfc3b..06e664b 100644 --- a/src/layouts/tabs/TabsView.vue +++ b/src/layouts/tabs/TabsView.vue @@ -176,9 +176,9 @@ export default { } }, closeLeft (pageKey) { // 关闭左侧页签 pageKey为页签key - const index = this.pageList.findIndex(item => item.path === pageKey) + const index = this.pageList.findIndex(item => item.path === pageKey) // 获取页签索引 // 清除缓存 - const clearPages = this.pageList.filter((item, i) => i < index && !item.unclose) + const clearPages = this.pageList.filter((item, i) => i < index && !item.unclose) // 清除页签为页签列表过滤出索引小于页签索引并且unclose为false的页签 // 清除页签为页签列表过滤出索引小于页签索引并且unclose为false的页签 this.clearCaches = clearPages.map(item => item.cachedKey) // 清除缓存为清除页签的cachedKey this.pageList = this.pageList.filter(item => !clearPages.includes(item)) // 页签列表为页签列表过滤出不包含清除页签的页签 diff --git a/src/pages/Middle/Admin/AdminAgent/AgentAdd.vue b/src/pages/Middle/Admin/AdminAgent/AgentAdd.vue new file mode 100644 index 0000000..f74b7cb --- /dev/null +++ b/src/pages/Middle/Admin/AdminAgent/AgentAdd.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminAgent/AgentDetail.vue b/src/pages/Middle/Admin/AdminAgent/AgentDetail.vue new file mode 100644 index 0000000..c847fc2 --- /dev/null +++ b/src/pages/Middle/Admin/AdminAgent/AgentDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminAgent/AgentList.vue b/src/pages/Middle/Admin/AdminAgent/AgentList.vue new file mode 100644 index 0000000..4556cbd --- /dev/null +++ b/src/pages/Middle/Admin/AdminAgent/AgentList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminAgent/AgentUpdate.vue b/src/pages/Middle/Admin/AdminAgent/AgentUpdate.vue new file mode 100644 index 0000000..d9ee9e5 --- /dev/null +++ b/src/pages/Middle/Admin/AdminAgent/AgentUpdate.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminCompany/CompanyAdd.vue b/src/pages/Middle/Admin/AdminCompany/CompanyAdd.vue new file mode 100644 index 0000000..5bf17fc --- /dev/null +++ b/src/pages/Middle/Admin/AdminCompany/CompanyAdd.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminCompany/CompanyDetail.vue b/src/pages/Middle/Admin/AdminCompany/CompanyDetail.vue new file mode 100644 index 0000000..480ada9 --- /dev/null +++ b/src/pages/Middle/Admin/AdminCompany/CompanyDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminCompany/CompanyList.vue b/src/pages/Middle/Admin/AdminCompany/CompanyList.vue new file mode 100644 index 0000000..d0ee670 --- /dev/null +++ b/src/pages/Middle/Admin/AdminCompany/CompanyList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminCompany/CompanyUpdate.vue b/src/pages/Middle/Admin/AdminCompany/CompanyUpdate.vue new file mode 100644 index 0000000..44da05a --- /dev/null +++ b/src/pages/Middle/Admin/AdminCompany/CompanyUpdate.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminConfig/ConfigAdd.vue b/src/pages/Middle/Admin/AdminConfig/ConfigAdd.vue new file mode 100644 index 0000000..25b424a --- /dev/null +++ b/src/pages/Middle/Admin/AdminConfig/ConfigAdd.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminConfig/ConfigDetail.vue b/src/pages/Middle/Admin/AdminConfig/ConfigDetail.vue new file mode 100644 index 0000000..165f7d3 --- /dev/null +++ b/src/pages/Middle/Admin/AdminConfig/ConfigDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminConfig/ConfigList.vue b/src/pages/Middle/Admin/AdminConfig/ConfigList.vue new file mode 100644 index 0000000..2525ea6 --- /dev/null +++ b/src/pages/Middle/Admin/AdminConfig/ConfigList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminConfig/ConfigUpdate.vue b/src/pages/Middle/Admin/AdminConfig/ConfigUpdate.vue new file mode 100644 index 0000000..8afae92 --- /dev/null +++ b/src/pages/Middle/Admin/AdminConfig/ConfigUpdate.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminLog/LogDetail.vue b/src/pages/Middle/Admin/AdminLog/LogDetail.vue new file mode 100644 index 0000000..280ff72 --- /dev/null +++ b/src/pages/Middle/Admin/AdminLog/LogDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminLog/LogList.vue b/src/pages/Middle/Admin/AdminLog/LogList.vue new file mode 100644 index 0000000..8893959 --- /dev/null +++ b/src/pages/Middle/Admin/AdminLog/LogList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminPermission/PermissionAdd.vue b/src/pages/Middle/Admin/AdminPermission/PermissionAdd.vue new file mode 100644 index 0000000..7f76754 --- /dev/null +++ b/src/pages/Middle/Admin/AdminPermission/PermissionAdd.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminPermission/PermissionDetail.vue b/src/pages/Middle/Admin/AdminPermission/PermissionDetail.vue new file mode 100644 index 0000000..2292b41 --- /dev/null +++ b/src/pages/Middle/Admin/AdminPermission/PermissionDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminPermission/PermissionList.vue b/src/pages/Middle/Admin/AdminPermission/PermissionList.vue new file mode 100644 index 0000000..10cc083 --- /dev/null +++ b/src/pages/Middle/Admin/AdminPermission/PermissionList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminPermission/PermissionUpdate.vue b/src/pages/Middle/Admin/AdminPermission/PermissionUpdate.vue new file mode 100644 index 0000000..3793b20 --- /dev/null +++ b/src/pages/Middle/Admin/AdminPermission/PermissionUpdate.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminService/ServiceAdd.vue b/src/pages/Middle/Admin/AdminService/ServiceAdd.vue new file mode 100644 index 0000000..239681c --- /dev/null +++ b/src/pages/Middle/Admin/AdminService/ServiceAdd.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminService/ServiceDetail.vue b/src/pages/Middle/Admin/AdminService/ServiceDetail.vue new file mode 100644 index 0000000..b031890 --- /dev/null +++ b/src/pages/Middle/Admin/AdminService/ServiceDetail.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminService/ServiceList.vue b/src/pages/Middle/Admin/AdminService/ServiceList.vue new file mode 100644 index 0000000..9f42e55 --- /dev/null +++ b/src/pages/Middle/Admin/AdminService/ServiceList.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminService/ServiceUpdate.vue b/src/pages/Middle/Admin/AdminService/ServiceUpdate.vue new file mode 100644 index 0000000..54a5368 --- /dev/null +++ b/src/pages/Middle/Admin/AdminService/ServiceUpdate.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminUser/UserAdd.vue b/src/pages/Middle/Admin/AdminUser/UserAdd.vue new file mode 100644 index 0000000..eb00109 --- /dev/null +++ b/src/pages/Middle/Admin/AdminUser/UserAdd.vue @@ -0,0 +1,29 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminUser/UserList.vue b/src/pages/Middle/Admin/AdminUser/UserList.vue new file mode 100644 index 0000000..9de0f32 --- /dev/null +++ b/src/pages/Middle/Admin/AdminUser/UserList.vue @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/src/pages/Middle/Admin/AdminUser/UserUpdate.vue b/src/pages/Middle/Admin/AdminUser/UserUpdate.vue new file mode 100644 index 0000000..f460d3f --- /dev/null +++ b/src/pages/Middle/Admin/AdminUser/UserUpdate.vue @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/src/pages/login/Login.vue b/src/pages/login/Login.vue index 4d83b01..1361a6b 100644 --- a/src/pages/login/Login.vue +++ b/src/pages/login/Login.vue @@ -3,6 +3,7 @@
+ {{Project.project_name}}
{{Project.project_sub_title}}
@@ -71,9 +72,10 @@ diff --git a/src/router/Middle/Admin/AdminAgent/router.map.js b/src/router/Middle/Admin/AdminAgent/router.map.js new file mode 100644 index 0000000..a19863b --- /dev/null +++ b/src/router/Middle/Admin/AdminAgent/router.map.js @@ -0,0 +1,68 @@ +// 中台代理商路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminAgentRouterMap = { + AdminAgent:{ + name: '代理商管理', + icon: 'idcard', + component: view.page, + authority: { + Agent:[''], + } + }, + AdminAgentList:{ + name: '代理商列表', + icon: 'idcard', + path: '/AdminAgent/AdminAgentList', + component: () => import('@/pages/Middle/Admin/AdminAgent/AgentList'), + authority: { + Agent:[''], + } + }, + AdminAgentDetail:{ + name: '代理商详情', + icon: 'idcard', + path: '/AdminAgent/AdminAgentDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminAgent/AgentDetail'), + authority: { + Agent:[''], + }, + }, + AdminAgentAdd:{ + name: '添加代理商', + icon: 'idcard', + path: '/AdminAgent/AdminAgentAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminAgent/AgentAdd'), + authority: { + Agent:[''], + }, + }, + AdminAgentUpdate:{ + name: '修改代理商', + icon: 'idcard', + path: '/AdminAgent/AdminAgentUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminAgent/AgentUpdate'), + authority: { + Agent:[''], + }, + }, +} + +export default AdminAgentRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminCompany/router.map.js b/src/router/Middle/Admin/AdminCompany/router.map.js new file mode 100644 index 0000000..c3f0525 --- /dev/null +++ b/src/router/Middle/Admin/AdminCompany/router.map.js @@ -0,0 +1,71 @@ +// 中台企业路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminCompanyRouterMap = { + AdminCompany:{ + name: '企业管理', + icon: 'idcard', + component: view.page, + meta: { + invisible:false, // 不在菜单中显示 + }, + authority: { + permission:[''], + } + }, + AdminCompanyList:{ + name: '企业列表', + icon: 'idcard', + path: '/AdminCompany/AdminCompanyList', + component: () => import('@/pages/Middle/Admin/AdminCompany/CompanyList'), + authority: { + permission:[''], + } + }, + AdminCompanyDetail:{ + name: '企业详情', + icon: 'idcard', + path: '/AdminCompany/AdminCompanyDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminCompany/CompanyDetail'), + authority: { + permission:[''], + }, + }, + AdminCompanyAdd:{ + name: '添加企业', + icon: 'idcard', + path: '/AdminCompany/AdminCompanyAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminCompany/CompanyAdd'), + authority: { + permission:[''], + }, + }, + AdminCompanyUpdate:{ + name: '修改企业', + icon: 'idcard', + path: '/AdminCompany/AdminCompanyUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminCompany/CompanyUpdate'), + authority: { + permission:[''], + }, + }, +} + +export default AdminCompanyRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminConfig/router.map.js b/src/router/Middle/Admin/AdminConfig/router.map.js new file mode 100644 index 0000000..fef20e9 --- /dev/null +++ b/src/router/Middle/Admin/AdminConfig/router.map.js @@ -0,0 +1,71 @@ +// 中台项目路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminConfigRouterMap = { + AdminConfig:{ + name: '项目管理', + icon: 'idcard', + component: view.page, + meta: { + invisible:false, // 不在菜单中显示 + }, + authority: { + permission:[''], + } + }, + AdminConfigList:{ + name: '项目列表', + icon: 'idcard', + path: '/AdminConfig/AdminConfigList', + component: () => import('@/pages/Middle/Admin/AdminConfig/ConfigList'), + authority: { + permission:[''], + } + }, + AdminConfigDetail:{ + name: '项目详情', + icon: 'idcard', + path: '/AdminConfig/AdminConfigDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminConfig/ConfigDetail'), + authority: { + permission:[''], + }, + }, + AdminConfigAdd:{ + name: '添加项目', + icon: 'idcard', + path: '/AdminConfig/AdminConfigAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminConfig/ConfigAdd'), + authority: { + permission:[''], + }, + }, + AdminConfigUpdate:{ + name: '修改项目', + icon: 'idcard', + path: '/AdminConfig/AdminConfigUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminConfig/ConfigUpdate'), + authority: { + permission:[''], + }, + }, +} + +export default AdminConfigRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminLog/router.map.js b/src/router/Middle/Admin/AdminLog/router.map.js new file mode 100644 index 0000000..48507f7 --- /dev/null +++ b/src/router/Middle/Admin/AdminLog/router.map.js @@ -0,0 +1,47 @@ +// 中台日志路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminLogRouterMap = { + AdminLog:{ + name: '日志管理', + icon: 'idcard', + component: view.page, + meta: { + invisible:false, // 不在菜单中显示 + }, + authority: { + permission:[''], + } + }, + AdminLogList:{ + name: '日志列表', + icon: 'idcard', + path: '/AdminLog/AdminLogList', + component: () => import('@/pages/Middle/Admin/AdminLog/LogList'), + authority: { + permission:[''], + } + }, + AdminLogDetail:{ + name: '日志详情', + icon: 'idcard', + path: '/AdminLog/AdminLogDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminLog/LogDetail'), + authority: { + permission:[''], + }, + }, +} + +export default AdminLogRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminPermission/router.map.js b/src/router/Middle/Admin/AdminPermission/router.map.js new file mode 100644 index 0000000..de402cd --- /dev/null +++ b/src/router/Middle/Admin/AdminPermission/router.map.js @@ -0,0 +1,68 @@ +// 中台权限路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminPermissionRouterMap = { + AdminPermission:{ + name: '权限管理', + icon: 'idcard', + component: view.page, + authority: { + permission:[''], + } + }, + AdminPermissionList:{ + name: '权限列表', + icon: 'idcard', + path: '/AdminPermission/AdminPermissionList', + component: () => import('@/pages/Middle/Admin/AdminPermission/PermissionList'), + authority: { + permission:[''], + } + }, + AdminPermissionDetail:{ + name: '权限详情', + icon: 'idcard', + path: '/AdminPermission/AdminPermissionDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminPermission/PermissionDetail'), + authority: { + permission:[''], + }, + }, + AdminPermissionAdd:{ + name: '添加权限', + icon: 'idcard', + path: '/AdminPermission/AdminPermissionAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminPermission/PermissionAdd'), + authority: { + permission:[''], + }, + }, + AdminPermissionUpdate:{ + name: '修改权限', + icon: 'idcard', + path: '/AdminPermission/AdminPermissionUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminPermission/PermissionUpdate'), + authority: { + permission:[''], + }, + }, +} + +export default AdminPermissionRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminService/router.map.js b/src/router/Middle/Admin/AdminService/router.map.js new file mode 100644 index 0000000..cd93a9c --- /dev/null +++ b/src/router/Middle/Admin/AdminService/router.map.js @@ -0,0 +1,68 @@ +// 中台服务路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminServiceRouterMap = { + AdminService:{ + name: '服务管理', + icon: 'idcard', + component: view.page, + authority: { + permission:[''], + } + }, + AdminServiceList:{ + name: '服务列表', + icon: 'idcard', + path: '/AdminService/AdminServiceList', + component: () => import('@/pages/Middle/Admin/AdminService/ServiceList'), + authority: { + permission:[''], + } + }, + AdminServiceDetail:{ + name: '服务详情', + icon: 'idcard', + path: '/AdminService/AdminServiceDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminService/ServiceDetail'), + authority: { + permission:[''], + }, + }, + AdminServiceAdd:{ + name: '添加服务', + icon: 'idcard', + path: '/AdminService/AdminServiceAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminService/ServiceAdd'), + authority: { + permission:[''], + }, + }, + AdminServiceUpdate:{ + name: '修改服务', + icon: 'idcard', + path: '/AdminService/AdminServiceUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminService/ServiceUpdate'), + authority: { + permission:[''], + }, + }, +} + +export default AdminServiceRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminStore/router.map.js b/src/router/Middle/Admin/AdminStore/router.map.js new file mode 100644 index 0000000..b43791c --- /dev/null +++ b/src/router/Middle/Admin/AdminStore/router.map.js @@ -0,0 +1,68 @@ +// 中台门店路由 + + +// 视图组件 +const view = { + tabs: () => import('@/layouts/tabs'), + blank: () => import('@/layouts/BlankView'), + page: () => import('@/layouts/PageView') + } + +// 路由组件注册 +const AdminStoreRouterMap = { + AdminStore:{ + name: '门店管理', + icon: 'idcard', + component: view.page, + authority: { + Store:[''], + } + }, + AdminStoreList:{ + name: '门店列表', + icon: 'idcard', + path: '/AdminStore/AdminStoreList', + component: () => import('@/pages/Middle/Admin/AdminStore/StoreList'), + authority: { + Store:[''], + } + }, + AdminStoreDetail:{ + name: '门店详情', + icon: 'idcard', + path: '/AdminStore/AdminStoreDetail', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminStore/StoreDetail'), + authority: { + Store:[''], + }, + }, + AdminStoreAdd:{ + name: '添加门店', + icon: 'idcard', + path: '/AdminStore/AdminStoreAdd', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminStore/StoreAdd'), + authority: { + Store:[''], + }, + }, + AdminStoreUpdate:{ + name: '修改门店', + icon: 'idcard', + path: '/AdminStore/AdminStoreUpdate', + meta: { + invisible:true, // 不在菜单中显示 + }, + component: () => import('@/pages/Middle/Admin/AdminStore/StoreUpdate'), + authority: { + Store:[''], + }, + }, +} + +export default AdminStoreRouterMap \ No newline at end of file diff --git a/src/router/Middle/Admin/AdminUser/router.map.js b/src/router/Middle/Admin/AdminUser/router.map.js index 569aad1..40ef5bc 100644 --- a/src/router/Middle/Admin/AdminUser/router.map.js +++ b/src/router/Middle/Admin/AdminUser/router.map.js @@ -9,15 +9,51 @@ const view = { } // 路由组件注册 -const BaseAdminRouterMap = { - Admin:{ +const AdminUserRouterMap = { + AdminUser:{ name: '用户管理', icon: 'idcard', component: view.page, + meta: { + invisible:true, // 不在菜单中显示 + }, authority: { permission:[''], } }, + AdminUserList:{ + name: '用户列表', + icon: 'idcard', + path: '/AdminUser/AdminUserList', + component: () => import('@/pages/Middle/Admin/AdminUser/UserList'), + authority: { + permission:[''], + } + }, + AdminUserAdd:{ + name: '添加用户', + icon: 'idcard', + path: '/AdminUser/AdminUserAdd', + component: () => import('@/pages/Middle/Admin/AdminUser/UserAdd'), + meta: { + invisible:true, // 不在菜单中显示 + }, + authority: { + permission:[''], + }, + }, + AdminUserUpdate:{ + name: '修改用户', + icon: 'idcard', + path: '/AdminUser/AdminUserUpdate', + component: () => import('@/pages/Middle/Admin/AdminUser/UserUpdate'), + meta: { + invisible:true, // 不在菜单中显示 + }, + authority: { + permission:[''], + }, + }, } -export default BaseAdminRouterMap \ No newline at end of file +export default AdminUserRouterMap \ No newline at end of file diff --git a/src/router/Middle/Base/BaseAdmin/router.map.js b/src/router/Middle/Base/BaseAdmin/router.map.js index 0208093..cea3c55 100644 --- a/src/router/Middle/Base/BaseAdmin/router.map.js +++ b/src/router/Middle/Base/BaseAdmin/router.map.js @@ -10,7 +10,7 @@ const view = { // 路由组件注册 const BaseAdminRouterMap = { - Admin:{ + BaseAdmin:{ name: '用户管理', icon: 'idcard', component: view.page, diff --git a/src/router/async/base.map.js b/src/router/async/base.map.js index 52ae69a..3ce4362 100644 --- a/src/router/async/base.map.js +++ b/src/router/async/base.map.js @@ -20,6 +20,7 @@ const view = { }, dashboard: { name: '仪表盘', + redirect: '/dashboard/workplace', component: view.blank }, workplace: { diff --git a/src/router/async/router.map.js b/src/router/async/router.map.js index 968a12b..5e80556 100644 --- a/src/router/async/router.map.js +++ b/src/router/async/router.map.js @@ -1,5 +1,15 @@ import BaseRouterMap from './base.map.js' // 以下为中台服务的路由配置 + + +import AdminUserRouterMap from '@/router/Middle/Admin/AdminUser/router.map.js' +import AdminConfigRouterMap from '@/router/Middle/Admin/AdminConfig/router.map.js' +import AdminServiceRouterMap from '@/router/Middle/Admin/AdminService/router.map.js' +import AdminPermissionRouterMap from '@/router/Middle/Admin/AdminPermission/router.map.js' +import AdminCompanyRouterMap from '@/router/Middle/Admin/AdminCompany/router.map.js' +import AdminLogRouterMap from '@/router/Middle/Admin/AdminLog/router.map.js' +import AdminAgentRouterMap from '@/router/Middle/Admin/AdminAgent/router.map.js' + import BaseConfigRouterMap from '@/router/Middle/Base/BaseConfig/router.map.js' import BaseServiceRouterMap from '@/router/Middle/Base/BaseService/router.map.js' import BaseCompanyRouterMap from '@/router/Middle/Base/BaseCompany/router.map.js' @@ -7,14 +17,21 @@ import BaseAdminRouterMap from '@/router/Middle/Base/BaseAdmin/router.map.js' - // 合并BaseRouterMap ConfigRouterMap ServiceRouterMap const routerMap = Object.assign({}, BaseRouterMap, + AdminUserRouterMap, + AdminConfigRouterMap, + AdminServiceRouterMap, + AdminPermissionRouterMap, + AdminCompanyRouterMap, + AdminLogRouterMap, + AdminAgentRouterMap, + + BaseAdminRouterMap, BaseConfigRouterMap, BaseServiceRouterMap, BaseCompanyRouterMap, - BaseAdminRouterMap, ) diff --git a/src/router/guards.js b/src/router/guards.js index 2a78484..88086de 100644 --- a/src/router/guards.js +++ b/src/router/guards.js @@ -95,7 +95,9 @@ const redirectGuard = (to, from, next, options) => { if (store.state.setting.layout === 'mix') { // 如果是混合导航模式 + console.log("==混合导航模式==") const firstMenu = store.getters['setting/firstMenu'] // 获取第一个菜单 + // console.log("store.getters['setting/firstMenu']", store.getters['setting/firstMenu']) if (firstMenu.find(item => item.fullPath === to.fullPath)) { // 如果是第一个菜单列表, store.commit('setting/setActivatedFirst', to.fullPath) // 设置激活的第一个菜单 @@ -103,6 +105,8 @@ const redirectGuard = (to, from, next, options) => { // console.log("store.getters['setting/subMenu']", store.getters['setting/subMenu']) if (subMenu.length > 0) { // 如果有子菜单 const redirect = getFirstChild(subMenu) // 获取第一个子菜单 + console.log("subMenu.length", subMenu.length) + console.log("redirect", redirect) return next({path: redirect.fullPath}) // 重定向到第一个子菜单 } } diff --git a/src/store/modules/account.js b/src/store/modules/account.js index 3e3ee5e..448c92d 100644 --- a/src/store/modules/account.js +++ b/src/store/modules/account.js @@ -3,15 +3,15 @@ export default { state: { uid: 0, routesConfig: undefined, // 路由配置 - user: [], // 用户信息 - permissions: [], // 权限 - settings: [], // 用户配置 - project: [], // 项目信息 - company: [], // 公司信息 + user: undefined, // 用户信息 + permissions: undefined, // 权限 + settings: undefined, // 用户配置 + project: undefined, // 项目信息 + company: undefined, // 公司信息 }, getters: { uid: state => { // 用户id - if (!state.uid) { // 如果没有用户uid + if (state.uid == 0) { // 如果没有用户uid try { const uid = localStorage.getItem(process.env.VUE_APP_UID_KEY) // 获取用户id state.uid = uid // 将用户信息赋值给state.user @@ -19,6 +19,7 @@ export default { console.error(e) } } + state.uid = localStorage.getItem(process.env.VUE_APP_UID_KEY) // 获取用户id return state.uid // 如果有用户信息,直接返回 }, user: state => { // 用户信息 @@ -80,6 +81,8 @@ export default { console.error(e.message) } } + console.log("gggggggggggggggggggggggggggggggggggggggggggggggggggggggg") + return state.project // 如果有项目信息,则返回项目信息 }, company: state => { // 公司信息 if (!state.company) { // 如果没有公司信息 @@ -92,6 +95,8 @@ export default { console.error(e.message) } } + state.company = JSON.parse(state.company) // 将字符串转换为json对象 + return state.company // 如果有公司信息,则返回公司信息 }, }, diff --git a/src/utils/request.js b/src/utils/request.js index ba0b6b5..709535e 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -67,6 +67,13 @@ function setAuthorization(auth, authType = AUTH_TYPE.BEARER) { // 设置认证 } } +/** + * 设置企业信息 + */ +function setCompany(company) { + Cookie.set('company', company) +} + /** * 移出认证信息 * @param authType {AUTH_TYPE} 认证类型 @@ -173,5 +180,6 @@ export { removeAuthorization, checkAuthorization, loadInterceptors, - parseUrlParams + parseUrlParams, + setCompany } diff --git a/src/utils/routerUtil.js b/src/utils/routerUtil.js index 0f45d41..ba0a350 100644 --- a/src/utils/routerUtil.js +++ b/src/utils/routerUtil.js @@ -139,15 +139,12 @@ function loadRoutes(routesConfig) { // 加载路由 const { router, store, i18n } = appOptions const Permission = store.getters['account/permissions'] // 获取权限 - console.log("======Permission:",Permission) - if (routesConfig) { // 如果routesConfig已经存在 store.commit('account/setRoutesConfig', routesConfig) // 通过store的account模块的setRoutesConfig方法更新路由配置 } else { routesConfig = store.getters['account/routesConfig'] // 通过store的account模块的routesConfig方法获取路由配置 } // 如果 routesConfig 有值,则更新到本地,否则从本地获取 - console.log("=====setRoutesConfig:", routesConfig) // 根据权限过滤路由配置 const filteredRoutesConfig = filterRoutesConfig(routesConfig, Permission) // 根据权限过滤路由配置