浏览代码

添加权限

zhaoke 3 年之前
父节点
当前提交
1f4dbc1cfc
共有 38 个文件被更改,包括 684 次插入720 次删除
  1. 12 2
      src/api/Account.js
  2. 9 17
      src/layout/components/Sidebar/index.vue
  3. 5 4
      src/permission.js
  4. 6 3
      src/router/index.js
  5. 12 10
      src/router/routes/routes-file-five.js
  6. 7 5
      src/router/routes/routes-file-four.js
  7. 12 10
      src/router/routes/routes-file-one.js
  8. 5 6
      src/router/routes/routes-file-three.js
  9. 9 11
      src/router/routes/routes-file-two.js
  10. 3 2
      src/store/getters.js
  11. 3 2
      src/store/index.js
  12. 19 5
      src/store/modules/user.js
  13. 69 0
      src/store/permission.js
  14. 2 2
      src/utils/auth.js
  15. 26 72
      src/views/accountGroupManagement/components/accountGroupAdd.vue
  16. 28 89
      src/views/accountGroupManagement/components/accountGroupEdit.vue
  17. 52 124
      src/views/accountGroupManagement/components/accountGroupHome.vue
  18. 57 179
      src/views/accountManagement/components/accountEdit.vue
  19. 32 95
      src/views/accountManagement/components/accountHome.vue
  20. 21 14
      src/views/authorityManagement/components/authorityHome.vue
  21. 3 3
      src/views/authorityManagement/components/authorityPowerAdd.vue
  22. 4 4
      src/views/authorityManagement/components/authorityPowerEdit.vue
  23. 7 3
      src/views/authorityManagement/components/authorityRoleAdd.vue
  24. 8 4
      src/views/authorityManagement/components/authorityRoleEdit.vue
  25. 5 5
      src/views/authorityManagement/components/authorityRoleHome.vue
  26. 2 2
      src/views/jobsManagement/add.vue
  27. 1 1
      src/views/jobsManagement/edit.vue
  28. 3 3
      src/views/jobsManagement/list.vue
  29. 45 8
      src/views/login/index.vue
  30. 176 0
      src/views/noPower/index.vue
  31. 2 2
      src/views/organizationManagement/components/organizationAdd.vue
  32. 2 2
      src/views/organizationManagement/components/organizationEdit.vue
  33. 20 16
      src/views/organizationManagement/components/organizationHome.vue
  34. 3 3
      src/views/staffManagement/compontents/staffAdd.vue
  35. 3 3
      src/views/staffManagement/compontents/staffEdit.vue
  36. 5 5
      src/views/staffManagement/compontents/staffHome.vue
  37. 3 3
      src/views/systemManagement/LoginPolicy/index.vue
  38. 3 1
      src/views/systemManagement/index.vue

+ 12 - 2
src/api/Account.js

@@ -1,8 +1,8 @@
 /*
  * @Author: Badguy
  * @Date: 2022-02-14 09:37:11
- * @LastEditTime: 2022-02-17 15:17:19
- * @LastEditors: your name
+ * @LastEditTime: 2022-02-28 15:36:37
+ * @LastEditors: Please set LastEditors
  * @Description: 账户管理api
  * have a nice day!
  */
@@ -67,3 +67,13 @@ export function editAccount (params) {
     proxy: true
   })
 }
+
+// 根据登录后ID及USERTYPE查询拥有权限
+export function getAuthListByUser (params) {
+  return request({
+    url: '/api/fs4a/GetAuthListByUser/v1',
+    method: 'post',
+    data: params,
+    proxy: true
+  })
+}

+ 9 - 17
src/layout/components/Sidebar/index.vue

@@ -2,17 +2,8 @@
   <div :class="{'has-logo':showLogo}">
     <logo v-if="showLogo" :collapse="isCollapse" />
     <el-scrollbar wrap-class="scrollbar-wrapper">
-      <el-menu
-        :default-active="activeMenu"
-        :collapse="isCollapse"
-        :background-color="variables.menuBg"
-        :text-color="variables.menuText"
-        :unique-opened="false"
-        :active-text-color="variables.menuActiveText"
-        :collapse-transition="false"
-        mode="vertical"
-      >
-        <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />
+      <el-menu :default-active="activeMenu" :collapse="isCollapse" :background-color="variables.menuBg" :text-color="variables.menuText" :unique-opened="false" :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="vertical">
+        <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" />
       </el-menu>
     </el-scrollbar>
   </div>
@@ -28,12 +19,13 @@ export default {
   components: { SidebarItem, Logo },
   computed: {
     ...mapGetters([
-      'sidebar'
+      'sidebar',
+      'permission_routes'
     ]),
-    routes() {
+    routes () {
       return this.$router.options.routes
     },
-    activeMenu() {
+    activeMenu () {
       const route = this.$route
       const { meta, path } = route
       // if set path, the sidebar will highlight the path you set
@@ -42,13 +34,13 @@ export default {
       }
       return path
     },
-    showLogo() {
+    showLogo () {
       return this.$store.state.settings.sidebarLogo
     },
-    variables() {
+    variables () {
       return variables
     },
-    isCollapse() {
+    isCollapse () {
       return !this.sidebar.opened
     }
   }

+ 5 - 4
src/permission.js

@@ -10,7 +10,7 @@ NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
 const whiteList = ['/login'] // no redirect whitelist
 
-router.beforeEach(async(to, from, next) => {
+router.beforeEach(async (to, from, next) => {
   // start progress bar
   NProgress.start()
 
@@ -32,9 +32,10 @@ router.beforeEach(async(to, from, next) => {
       } else {
         try {
           // get user info
-          await store.dispatch('user/getInfo')
-
-          next()
+          const { roles } = await store.dispatch('user/getInfo')
+          const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
+          router.addRoutes(accessRoutes)
+          next({ ...to, replace: true })
         } catch (error) {
           // remove token and go to login page to re-login
           await store.dispatch('user/resetToken')

+ 6 - 3
src/router/index.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-10-14 17:17:53
- * @LastEditTime: 2022-01-06 13:50:30
+ * @LastEditTime: 2022-02-28 15:31:42
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \Foshan4A\src\router\index.js
@@ -60,10 +60,13 @@ export const constantRoutes = [
     hidden: true
   },
   // 404 page must be placed at the end !!!
-  { path: '*', redirect: '/404', hidden: true }
+  // { path: '*', redirect: '/404', hidden: true }
 ]
 // 插入路由
-routesPush([...routesOne, ...routesTwo, ...routesThree, ...routesFour, ...routesFive], constantRoutes)
+const asyncRoutes = []
+routesPush([...routesOne, ...routesTwo, ...routesThree, ...routesFour, ...routesFive], asyncRoutes)
+asyncRoutes.push({ path: '/', component: () => import('@/views/noPower'), hidden: true })
+asyncRoutes.push({ path: '*', component: () => import('@/views/404'), hidden: true })
 const createRouter = () => new Router({
   // mode: 'history', // require service support
   scrollBehavior: () => ({ y: 0 }),

+ 12 - 10
src/router/routes/routes-file-five.js

@@ -1,17 +1,17 @@
 /*
  * @Author: your name
  * @Date: 2022-01-06 10:05:44
- * @LastEditTime: 2022-02-21 06:02:05
- * @LastEditors: your name
+ * @LastEditTime: 2022-02-28 15:55:02
+ * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: \src\router\routes\routes-file-five.js
  */
 import Layout from '@/layout'
 
 const accountGroupRoutes = {
-  path: '/',
+  path: 'accountGroup',
   component: Layout,
-  redirect: '/dashboard',
+  meta: { roles: ['group_menu'] },
   children: [
     {
       path: 'accountGroup',
@@ -21,11 +21,12 @@ const accountGroupRoutes = {
       },
       children: [
         {
-          path: '/',
+          path: 'accountGroup',
           name: 'accountGroupHome',
           component: () => import('@/views/accountGroupManagement/components/accountGroupHome'),
           meta: {
-            title: '账号组管理'
+            title: '账号组管理',
+            roles: ['group_page']
           }
         },
         {
@@ -51,9 +52,9 @@ const accountGroupRoutes = {
 }
 
 const accountRoutes = {
-  path: '/',
+  path: 'account',
   component: Layout,
-  redirect: '/dashboard',
+  meta: { roles: ['account_menu'] },
   children: [
     {
       path: 'account',
@@ -64,11 +65,12 @@ const accountRoutes = {
       },
       children: [
         {
-          path: '/',
+          path: 'account',
           name: 'accountHome',
           component: () => import('@/views/accountManagement/components/accountHome'),
           meta: {
-            title: '账号管理'
+            title: '账号管理',
+            roles: ['account_page']
           }
         },
         {

+ 7 - 5
src/router/routes/routes-file-four.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-06 10:05:44
- * @LastEditTime: 2022-01-06 11:02:00
+ * @LastEditTime: 2022-02-28 16:01:19
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: \vue-admin-template\src\router\routes\routes-file-four.js
@@ -24,9 +24,9 @@ const auditRoutes = {
 }
 
 const systemManagementRoutes = {
-  path: '/',
+  path: 'systemManagement',
   component: Layout,
-  redirect: '/dashboard',
+  meta: { roles: ['system_menu'] },
   children: [{
     path: 'systemManagement',
     name: 'systemManagement',
@@ -35,7 +35,8 @@ const systemManagementRoutes = {
       title: '系统管理',
       icon: 'systemManagement',
       imgstyle: 'ic_home_nav_defaul.png',
-      imgstyleup: 'ic_home_nav_check.png'
+      imgstyleup: 'ic_home_nav_check.png',
+      roles: ['system_basic_page']
     },
   },
   {
@@ -46,7 +47,8 @@ const systemManagementRoutes = {
       title: '登录策略',
       icon: 'LoginPolicy',
       imgstyle: 'ic_home_nav_defaul.png',
-      imgstyleup: 'ic_home_nav_check.png'
+      imgstyleup: 'ic_home_nav_check.png',
+      roles: ['system_logintac_page']
     },
   },
   {

+ 12 - 10
src/router/routes/routes-file-one.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-10-21 09:31:21
- * @LastEditTime: 2022-01-09 10:14:26
+ * @LastEditTime: 2022-02-28 15:50:41
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \Foshan4A\src\router\routes\routes-file-one.js
@@ -13,6 +13,7 @@ const dashboardRoutes = {
   path: '/',
   component: Layout,
   redirect: '/dashboard',
+  meta: { roles: ['dashboard'] },
   children: [{
     path: 'dashboard',
     name: 'Dashboard',
@@ -23,19 +24,19 @@ const dashboardRoutes = {
 
 //权限管理
 const authorityRoutes = {
-  path: '/',
+  path: 'authority',
   component: Layout,
-  redirect: '/dashboard',
+  meta: { roles: ['authority_menu'] },
   children: [{
     path: 'authority',
     component: () => import('@/views/authorityManagement/index'),
     meta: { title: '权限管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' },
     children: [
       {
-        path: '/',
+        path: 'authority',
         name: 'AuthorityHome',
         component: () => import('@/views/authorityManagement/components/authorityHome'),
-        meta: { title: '权限项管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
+        meta: { title: '权限项管理', roles: ['authority_page'], icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
       },
       {
         path: 'appAdd',
@@ -65,20 +66,21 @@ const authorityRoutes = {
   }]
 }
 
-//权限管理
+//角色管理
 const roleRoutes = {
-  path: '/',
+  path: 'role',
   component: Layout,
+  meta: { roles: ['role_menu'] },
   children: [{
     path: 'role',
     component: () => import('@/views/authorityManagement/components/authorityRole'),
-    meta: { title: '权限管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' },
+    meta: { title: '角色管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' },
     children: [
       {
-        path: '/',
+        path: 'role',
         name: 'AuthorityRoleHome',
         component: () => import('@/views/authorityManagement/components/authorityRoleHome'),
-        meta: { title: '角色管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
+        meta: { title: '角色管理', roles: ['role_page'], icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
       },
       {
         path: 'addRole',

+ 5 - 6
src/router/routes/routes-file-three.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-01-06 13:45:09
- * @LastEditTime: 2022-01-10 11:48:53
+ * @LastEditTime: 2022-02-28 16:03:09
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: \Foshan4A3.0\src\router\routes\routes-file-two.js
@@ -17,16 +17,15 @@
 import Layout from '@/layout'
 
 const organizationRoutes = {
-  path: '/jobs',
+  path: 'jobs',
   component: Layout,
-  redirect: '/dashboard',
-  hidden: true,
+  meta: { roles: ['job_menu'] },
   children: [
     {
-      path: '',
+      path: 'jobs',
       name: 'Jobs',
       component: () => import('@/views/jobsManagement/list.vue'),
-      meta: { title: '岗位管理' }
+      meta: { title: '岗位管理', roles: ['job_page'] }
     },
     {
       path: 'add',

+ 9 - 11
src/router/routes/routes-file-two.js

@@ -1,7 +1,7 @@
 /*
  * @Author: zk
  * @Date: 2022-01-06 13:45:09
- * @LastEditTime: 2022-01-08 10:32:03
+ * @LastEditTime: 2022-02-28 16:04:59
  * @LastEditors: Please set LastEditors
  * @Description: 组织管理路由
  * @FilePath: \Foshan4A3.0\src\router\routes\routes-file-two.js
@@ -9,10 +9,9 @@
 import Layout from '@/layout'
 
 const organizationRoutes = {
-  path: '/',
+  path: 'organization',
   component: Layout,
-  redirect: '/dashboard',
-  hidden: true,
+  meta: { roles: ['organ_menu'] },
   children: [
     {
       path: 'organization',
@@ -21,10 +20,10 @@ const organizationRoutes = {
       meta: { title: '组织管理' },
       children: [
         {
-          path: '/',
+          path: 'organization',
           name: 'OrganizationHome',
           component: () => import('@/views/organizationManagement/components/organizationHome'),
-          meta: { title: '组织管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
+          meta: { title: '组织管理', roles: ['organ_page'], icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
         },
         {
           path: 'organizationAdd',
@@ -44,10 +43,9 @@ const organizationRoutes = {
 }
 
 const staffRoutes = {
-  path: '/',
+  path: 'staff',
   component: Layout,
-  redirect: '/dashboard',
-  hidden: true,
+  meta: { roles: ['officer_menu'] },
   children: [
     {
       path: 'staff',
@@ -56,10 +54,10 @@ const staffRoutes = {
       meta: { title: '职员管理' },
       children: [
         {
-          path: '/',
+          path: 'staff',
           name: 'StaffHome',
           component: () => import('@/views/staffManagement/compontents/staffHome'),
-          meta: { title: '职员管理', icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
+          meta: { title: '职员管理', roles: ['officer_page'], icon: 'authority', imgstyle: 'ic_home_nav_defaul.png', imgstyleup: 'ic_home_nav_check.png' }
         },
         {
           path: 'staffAdd',

+ 3 - 2
src/store/getters.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-10-14 17:17:53
- * @LastEditTime: 2021-12-25 17:55:26
+ * @LastEditTime: 2022-02-28 15:25:48
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \Foshan4A\src\store\getters.js
@@ -26,6 +26,7 @@ const getters = {
   authList: state => state.auth.authList,
   authId: state => state.auth.authId,
   authMsg: state => state.auth.authMsg,
-  userRole: state => state.app.OpenRole
+  userRole: state => state.app.OpenRole,
+  permission_routes: state => state.permission.routes
 }
 export default getters

+ 3 - 2
src/store/index.js

@@ -6,7 +6,7 @@ import settings from './modules/settings'
 import user from './modules/user'
 import auth from './modules/auths'
 import tagsView from './modules/tagsView'
-
+import permission from './permission'
 Vue.use(Vuex)
 
 const store = new Vuex.Store({
@@ -15,7 +15,8 @@ const store = new Vuex.Store({
     settings,
     user,
     tagsView,
-    auth
+    auth,
+    permission
   },
   getters
 })

+ 19 - 5
src/store/modules/user.js

@@ -6,8 +6,10 @@ const getDefaultState = () => {
     token: getToken(),
     name: '',
     avatar: '',
+    roles: [],
     UserType: sessionStorage.getItem('UserType') ? sessionStorage.getItem('UserType') : '',
-    UserId: sessionStorage.getItem('User_Id') ? sessionStorage.getItem('User_Id') : ''
+    UserId: sessionStorage.getItem('User_Id') ? sessionStorage.getItem('User_Id') : '',
+    userPoewrList: getToken('userAuthList') ? JSON.parse(getToken('userAuthList')) : []
   }
 }
 
@@ -35,6 +37,9 @@ const mutations = {
   },
   SET_AVATAR: (state, avatar) => {
     state.avatar = avatar
+  },
+  SET_UserPoewrList: (state, arr) => {
+    state.userPoewrList = arr
   }
 }
 
@@ -90,10 +95,15 @@ const actions = {
     return new Promise((resolve, reject) => {
       loginUp({ "UserId": state.UserId, "UserType": state.UserType }).then(result => {
         sessionStorage.removeItem("userName");
-        removeToken() // must remove  token  first
-        resetRouter()
-        commit('RESET_STATE')
-        resolve()
+        sessionStorage.removeItem("UserType");
+        sessionStorage.removeItem("User_Id");
+        removeToken(); // must remove  token  first
+        removeToken('codeToken');
+        removeToken('systemSet');
+        resetRouter();
+        commit('RESET_STATE');
+        commit('SET_ROLES', [])
+        resolve();
       })
 
       // logout(state.token).then(() => {
@@ -112,8 +122,12 @@ const actions = {
     return new Promise(resolve => {
       removeToken() // must remove  token  first
       commit('RESET_STATE')
+      commit('SET_ROLES', [])
       resolve()
     })
+  },
+  setPowerList ({ commit }, arr) {
+    commit('SET_UserPoewrList', arr);
   }
 }
 

+ 69 - 0
src/store/permission.js

@@ -0,0 +1,69 @@
+import { asyncRoutes, constantRoutes } from '@/router'
+
+/**
+ * Use meta.role to determine if the current user has permission
+ * @param roles
+ * @param route
+ */
+function hasPermission (roles, route) {
+  if (route.meta && route.meta.roles) {
+    return roles.some(role => route.meta.roles.includes(role))
+  } else {
+    return true
+  }
+}
+
+/**
+ * Filter asynchronous routing tables by recursion
+ * @param routes asyncRoutes
+ * @param roles
+ */
+export function filterAsyncRoutes (routes, roles) {
+  const res = []
+
+  routes.forEach(route => {
+    const tmp = { ...route }
+    if (hasPermission(roles, tmp)) {
+      if (tmp.children) {
+        tmp.children = filterAsyncRoutes(tmp.children, roles)
+      }
+      res.push(tmp)
+    }
+  })
+
+  return res
+}
+
+const state = {
+  routes: [],
+  addRoutes: []
+}
+
+const mutations = {
+  SET_ROUTES: (state, routes) => {
+    state.addRoutes = routes
+    state.routes = constantRoutes.concat(routes)
+  }
+}
+
+const actions = {
+  generateRoutes ({ commit }, roles) {
+    return new Promise(resolve => {
+      let accessedRoutes
+      if (roles.includes('admin')) {
+        accessedRoutes = asyncRoutes || []
+      } else {
+        accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
+      }
+      commit('SET_ROUTES', accessedRoutes)
+      resolve(accessedRoutes)
+    })
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+}

+ 2 - 2
src/utils/auth.js

@@ -18,8 +18,8 @@ export function getUserId () {
   return sessionStorage.getItem("User_Id")
 }
 
-export function removeToken () {
-  return Cookies.remove(TokenKey)
+export function removeToken (name = TokenKey) {
+  return Cookies.remove(name)
 }
 
 export function setCodeToken (token) {

+ 26 - 72
src/views/accountGroupManagement/components/accountGroupAdd.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: Badguy
  * @Date: 2022-02-21 04:13:18
- * @LastEditTime: 2022-02-21 04:13:19
- * @LastEditors: your name
+ * @LastEditTime: 2022-02-28 17:04:19
+ * @LastEditors: Please set LastEditors
  * @Description: 
  * have a nice day!
 -->
@@ -11,87 +11,41 @@
     <div class="addApp-form">
       <div class="addApp-form-title flex">
         <div class="title">新增账号组</div>
-        <div class="btn">
-          <el-button
-            @click="saveBtn('form')"
-            type="primary"
-          >保存</el-button>
+        <div v-is="['group_btn_save']" class="btn">
+          <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
       </div>
       <div class="addApp-form-content dialog-public-background">
-        <el-form
-          :inline="true"
-          ref="form"
-          :rules="rules"
-          class="form"
-          :model="form"
-        >
-          <el-form-item
-            prop="name"
-            label="账号组名称"
-          >
-            <el-input
-              placeholder="请输入账号组名称"
-              maxlength="32"
-              v-model="form.name"
-            ></el-input>
+        <el-form :inline="true" ref="form" :rules="rules" class="form" :model="form">
+          <el-form-item prop="name" label="账号组名称">
+            <el-input placeholder="请输入账号组名称" maxlength="32" v-model="form.name"></el-input>
           </el-form-item>
           <el-form-item label="描述">
-            <el-input
-              style="width: 640px"
-              maxlength="200"
-              placeholder="请输入描述"
-              v-model="form.app"
-            ></el-input>
+            <el-input style="width: 640px" maxlength="200" placeholder="请输入描述" v-model="form.app"></el-input>
           </el-form-item>
         </el-form>
       </div>
     </div>
     <div class="power-content flex-wrap">
       <div class="r24 flex1 part">
-        <Organization
-          :defaultProps="defaultProps"
-          :data="data"
-          nodekey="GroupId"
-          :checkedKeys="checkedKeys"
-          title="上级账号组"
-        />
+        <Organization :defaultProps="defaultProps" :data="data" nodekey="GroupId" :checkedKeys="checkedKeys" title="上级账号组" />
       </div>
       <!--有角色-->
       <template v-if="OpenRole">
         <div class="r24 flex1 part">
-          <Rolelist
-            title="角色"
-            @checkClick="checkClick"
-            @checkChange="checkChange"
-            :GroupIds="GroupIds"
-          />
+          <Rolelist title="角色" @checkClick="checkClick" @checkChange="checkChange" :GroupIds="GroupIds" />
         </div>
         <div class="flex1 part">
-          <Permissionlist
-            :RoleList="RoleList"
-            :check="true"
-            class="hucPower"
-            title="权限列表"
-          />
+          <Permissionlist :RoleList="RoleList" :check="true" class="hucPower" title="权限列表" />
         </div>
       </template>
       <!--无角色-->
       <template v-else>
         <div class="r24 flex1 part">
-          <Permissiontree
-            :queryType="queryType"
-            :queryId="queryId"
-            @nodeClick="nodeClick"
-            @getTreeData="getTreeData"
-            title="权限树"
-          />
+          <Permissiontree :queryType="queryType" :queryId="queryId" @nodeClick="nodeClick" @getTreeData="getTreeData" title="权限树" />
         </div>
         <div class="flex1 part">
-          <Rulesofcompetency
-            class="hucPower"
-            title="权限规则"
-          />
+          <Rulesofcompetency class="hucPower" title="权限规则" />
         </div>
       </template>
     </div>
@@ -118,7 +72,7 @@ export default {
     Permissionlist
   },
   mixins: [treeData],
-  data() {
+  data () {
     return {
       form: {
         //账号组表单
@@ -153,7 +107,7 @@ export default {
   watch: {
     //监听上级组织数据
     dataList: {
-      handler(val) {
+      handler (val) {
         const arr = [val]
         this.decompose(arr, this.AppId)
         this.data = [this.dataObj]
@@ -162,7 +116,7 @@ export default {
       deep: true
     }
   },
-  created() {
+  created () {
     const { GroupId } = this.$route.query
     const { OpenRole } = typeof this.systemSet === 'string' ? JSON.parse(this.systemSet) : this.systemSet //1是请求角色 0是请求用户
     this.OpenRole = OpenRole
@@ -176,14 +130,14 @@ export default {
       this.queryType = 'all'
     }
   },
-  mounted() {
+  mounted () {
     if (this.OpenRole) {
       this.GroupIds = [this.AppId]
     }
   },
   methods: {
     //保存
-    saveBtn(formName) {
+    saveBtn (formName) {
       this.$refs[formName].validate(valid => {
         if (valid) {
           this.saveAuth()
@@ -194,7 +148,7 @@ export default {
       })
     },
     //获取指定数据
-    decompose(data, id) {
+    decompose (data, id) {
       for (let i = 0; i < data.length; i++) {
         if (data[i].GroupId == id) {
           if (data[i].children && data[i].children.length) {
@@ -207,7 +161,7 @@ export default {
       }
     },
     //根据角色查看权限列表
-    async roleAuths(id) {
+    async roleAuths (id) {
       try {
         let params = {
           RoleId: id
@@ -223,11 +177,11 @@ export default {
       }
     },
     //角色点击回调
-    checkClick(item) {
+    checkClick (item) {
       this.roleAuths(item.RoleId)
     },
     //角色选取
-    checkChange(arr) {
+    checkChange (arr) {
       const arrs = []
       arr.forEach(item => {
         const RoleC = {
@@ -240,21 +194,21 @@ export default {
       this.checkRoles = arrs
     },
     //权限树点击
-    nodeClick(obj) {
+    nodeClick (obj) {
       const arr = this.$store.getters.authArrs
       arr.push(obj)
       this.$store.dispatch('auth/changeAuthArrs', arr)
     },
     //获取选中的树数据
-    getTreeData(arr) {
+    getTreeData (arr) {
       this.checkTrees = arr
     },
     //获取权限规则
-    getData(obj) {
+    getData (obj) {
       this.rulesObj = obj
     },
     //新增保存
-    async saveAuth() {
+    async saveAuth () {
       const datas = []
       if (this.checkTrees.length) {
         this.checkTrees.forEach(item => {

+ 28 - 89
src/views/accountGroupManagement/components/accountGroupEdit.vue

@@ -3,44 +3,17 @@
     <div class="postmanagementadd_header">
       <div class="postmanagementadd_top">
         <div class="tltleLeft">{{ pageTitle }}</div>
-        <div
-          class="btn"
-          style="margin-top: 20px"
-        >
-          <el-button
-            type="primary"
-            @click="handleClickSave('editForm')"
-          >保存</el-button>
+        <div v-is="['group_btn_edit']" class="btn" style="margin-top: 20px">
+          <el-button type="primary" @click="handleClickSave('editForm')">保存</el-button>
         </div>
       </div>
       <div class="addApp-form-content dialog-public-background">
-        <el-form
-          ref="editForm"
-          :inline="true"
-          :rules="rules"
-          class="form"
-          :model="editForm"
-        >
-          <el-form-item
-            prop="name"
-            label="账号组名称"
-          >
-            <el-input
-              v-model="editForm.name"
-              maxlength="32"
-              placeholder="账号组名称"
-            />
+        <el-form ref="editForm" :inline="true" :rules="rules" class="form" :model="editForm">
+          <el-form-item prop="name" label="账号组名称">
+            <el-input v-model="editForm.name" maxlength="32" placeholder="账号组名称" />
           </el-form-item>
-          <el-form-item
-            label="描述"
-            style="margin-left: 40px"
-          >
-            <el-input
-              v-model="editForm.desc"
-              style="width: 640px"
-              placeholder="请输入描述"
-              maxlength="200"
-            />
+          <el-form-item label="描述" style="margin-left: 40px">
+            <el-input v-model="editForm.desc" style="width: 640px" placeholder="请输入描述" maxlength="200" />
           </el-form-item>
         </el-form>
       </div>
@@ -49,43 +22,19 @@
       <el-row :gutter="24">
         <el-col :span="8">
           <div class="part">
-            <AccountGroupTree
-              title="上级账号组"
-              nodekey="GroupId"
-              :check-disabled="doesGroupExist"
-              :type="true"
-              :defaultProps="defaultProps"
-              :checkedKeys="accountGroupTreeCheckedList"
-              @getTreeData="getAccountGroupChecked"
-            />
+            <AccountGroupTree title="上级账号组" nodekey="GroupId" :check-disabled="doesGroupExist" :type="true" :defaultProps="defaultProps" :checkedKeys="accountGroupTreeCheckedList" @getTreeData="getAccountGroupChecked" />
           </div>
         </el-col>
         <!-- 开启角色 -->
         <template v-if="openRole">
           <el-col :span="8">
             <div class="part">
-              <RoleList
-                title="角色列表"
-                :roleType="roleType"
-                :GroupIds="groupIds"
-                :checkBoxList="roleListCheckedList"
-                :number="8"
-                :active="true"
-                @checkChange="getRoleListChecked"
-                @checkClick="selectRole"
-                @roleListChange="roleListCheckedChange"
-              />
+              <RoleList title="角色列表" :roleType="roleType" :GroupIds="groupIds" :checkBoxList="roleListCheckedList" :number="8" :active="true" @checkChange="getRoleListChecked" @checkClick="selectRole" @roleListChange="roleListCheckedChange" />
             </div>
           </el-col>
           <el-col :span="8">
             <div class="part">
-              <PermissionList
-                title="权限列表"
-                class="hucPower"
-                :RoleList="checkedRoles"
-                :check="true"
-                @Competen="Competen"
-              />
+              <PermissionList title="权限列表" class="hucPower" :RoleList="checkedRoles" :check="true" @Competen="Competen" />
             </div>
           </el-col>
         </template>
@@ -93,22 +42,12 @@
         <template v-else>
           <el-col :span="8">
             <div class="part">
-              <PermissionTree
-                title="权限树"
-                :checkedKeys="permissionTreeChckedKeys"
-                :queryType="queryType"
-                :queryIds="queryIds"
-                @getTreeData="getPermissionTreeChecked"
-              />
+              <PermissionTree title="权限树" :checkedKeys="permissionTreeChckedKeys" :queryType="queryType" :queryIds="queryIds" @getTreeData="getPermissionTreeChecked" />
             </div>
           </el-col>
           <el-col :span="8">
             <div class="part">
-              <RulesOfCompetency
-                title="权限规则"
-                margin-b="20px"
-                @getData="getRulesOfCompetency"
-              />
+              <RulesOfCompetency title="权限规则" margin-b="20px" @getData="getRulesOfCompetency" />
             </div>
           </el-col>
         </template>
@@ -155,7 +94,7 @@ export default {
     // Dialog
   },
   // mixins: [treeData],
-  data() {
+  data () {
     return {
       doesGroupExist: this.$route.meta.doesGroupExist, // 控制账号组新增/编辑
       GroupId: 0,
@@ -192,11 +131,11 @@ export default {
   },
   computed: {
     ...mapGetters(['systemSet']),
-    pageTitle() {
+    pageTitle () {
       return this.doesGroupExist ? '编辑账号组' : '新增账号组'
     }
   },
-  created() {
+  created () {
     let obj
     if (typeof this.systemSet === 'string') {
       obj = JSON.parse(this.systemSet)
@@ -210,7 +149,7 @@ export default {
     this.groupIds.push(this.GroupUpId)
     this.queryIds.push(this.GroupUpId)
   },
-  mounted() {
+  mounted () {
     if (this.doesGroupExist) {
       this.GroupId = this.$route.query.GroupId
       this.getGroupDetails()
@@ -221,7 +160,7 @@ export default {
   },
   methods: {
     // 账号组详情
-    async getGroupDetails() {
+    async getGroupDetails () {
       try {
         const res = await GetGroupDetails({
           GroupId: this.GroupId
@@ -255,7 +194,7 @@ export default {
       }
     },
     // 保存
-    handleClickSave(formName) {
+    handleClickSave (formName) {
       this.$refs[formName].validate(valid => {
         if (valid) {
           this.handleSaveEdit()
@@ -266,12 +205,12 @@ export default {
       })
     },
     // 获取当前权限树勾选项
-    getPermissionTreeChecked(arr) {
+    getPermissionTreeChecked (arr) {
       // console.log(arr)
       this.permissionTreeChckedTemp = arr.map(auth => auth.AuthList)
     },
     // 获取当前勾选的账号组
-    getAccountGroupChecked(arr) {
+    getAccountGroupChecked (arr) {
       if (arr && arr.length && arr[0] !== -1) {
         const GroupIds = arr.map(item => item.GroupId)
         this.accountGroupTreeCheckedTemp = GroupIds
@@ -286,10 +225,10 @@ export default {
       }
     },
     // 角色选取
-    getRoleListChecked(arr) {
+    getRoleListChecked (arr) {
       this.roleListCheckedTemp = arr
     },
-    roleListCheckedChange(arr) {
+    roleListCheckedChange (arr) {
       console.log(arr)
       if (arr && arr.length) {
         this.roleListCheckedTemp = this.roleListCheckedTemp.filter(role =>
@@ -301,11 +240,11 @@ export default {
       this.roleListCheckedList = this.roleListCheckedTemp.map(role => role.RoleId)
     },
     // 获取当前编辑的权限规则
-    getRulesOfCompetency(obj) {
+    getRulesOfCompetency (obj) {
       this.rulesOfCompetency = obj
     },
     // 点击角色后显示对应权限列表
-    async selectRole(data) {
+    async selectRole (data) {
       if (this.currentSelectedRoleId === data.RoleId) return
       try {
         const params = {
@@ -344,11 +283,11 @@ export default {
     //   }
     // },
     // 修改权限规则
-    Competen(data) {
+    Competen (data) {
       console.log(data)
     },
     // 账号组编辑保存
-    async handleSaveEdit() {
+    async handleSaveEdit () {
       const params = {
         AuthList: this.permissionTreeChckedTemp,
         GroupName: this.editForm.name,
@@ -367,7 +306,7 @@ export default {
         this.saveAddGroup(params)
       }
     },
-    async saveEditGroup(params) {
+    async saveEditGroup (params) {
       try {
         const res = await EditGroup(params)
         if (res.code === 0) {
@@ -383,7 +322,7 @@ export default {
         console.log('出错了', error)
       }
     },
-    async saveAddGroup(params) {
+    async saveAddGroup (params) {
       try {
         const res = await SaveGroup(params)
         if (res.code === 0) {

+ 52 - 124
src/views/accountGroupManagement/components/accountGroupHome.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: your name
  * @Date: 2022-01-08 09:27:43
- * @LastEditTime: 2022-02-23 11:57:32
- * @LastEditors: your name
+ * @LastEditTime: 2022-02-28 17:03:27
+ * @LastEditors: Please set LastEditors
  * @Description: 用户组管理
  * @FilePath: \Foshan4A2.0\src\views\accountGroupManagement\components\home.vue
 -->
@@ -11,29 +11,17 @@
     <!--状态和搜索-->
     <div class="accountGroup-head flex">
       <div class="status flex-wrap"></div>
-      <Search
-        @getSearchData="getSearchData"
-        @clearSearchData="clearSearchData"
-      />
+      <Search @getSearchData="getSearchData" @clearSearchData="clearSearchData" />
     </div>
     <!--账号树-->
     <div class="accountGroup-content">
       <!-- <OrgTree :dataList="dataList" :renderContent="renderContent" /> -->
       <el-row :gutter="24" class="bodyContent">
-        <el-col :span="6" class="bodyPart"
-          ><div class="grid-content">
+        <el-col :span="6" class="bodyPart">
+          <div class="grid-content">
             <div class="title">账号组树</div>
             <div class="contentTree">
-              <el-tree
-                ref="tree"
-                :data="dataListTree"
-                :props="defaultProps"
-                node-key="GroupId"
-                :filter-node-method="filterNode"
-                highlight-current
-                :default-expanded-keys="[currentKey]"
-                @node-click="handleNodeClick"
-              >
+              <el-tree ref="tree" :data="dataListTree" :props="defaultProps" node-key="GroupId" :filter-node-method="filterNode" highlight-current :default-expanded-keys="[currentKey]" @node-click="handleNodeClick">
               </el-tree>
             </div>
           </div>
@@ -42,17 +30,9 @@
           <div class="grid-contentTop">
             <div class="title" style="margin-bottom: 15px">当前账号组</div>
             <div class="content">
-              <el-empty
-                :image-size="100"
-                style="padding: 0"
-                v-if="currDataArr.length < 1"
-              ></el-empty>
+              <el-empty :image-size="100" style="padding: 0" v-if="currDataArr.length < 1"></el-empty>
               <el-row>
-                <el-col
-                  :span="8"
-                  v-for="data in currDataArr"
-                  :key="data.GroupId"
-                >
+                <el-col :span="8" v-for="data in currDataArr" :key="data.GroupId">
                   <div class="itemBox">
                     <el-row :gutter="24">
                       <el-col :span="12">
@@ -61,30 +41,13 @@
                       <el-col :span="12">
                         <div class="flex info">
                           <div class="icon">
-                            <el-tooltip
-                              effect="dark"
-                              content="编辑账号组"
-                              placement="bottom"
-                            >
-                              <span
-                                title="编辑账号组"
-                                class="cap cap-edit"
-                                @click="renderEdit(data)"
-                                v-if="data.GroupId != -1"
-                              ></span
-                            ></el-tooltip>
+                            <el-tooltip v-is="['grouptree_btn_update_group']" effect="dark" content="编辑账号组" placement="bottom">
+                              <span title="编辑账号组" class="cap cap-edit" @click="renderEdit(data)" v-if="data.GroupId != -1"></span>
+                            </el-tooltip>
 
-                            <el-tooltip
-                              effect="dark"
-                              content="新增账号组"
-                              placement="bottom"
-                            >
-                              <span
-                                title="新增账号组"
-                                class="cap cap-sub"
-                                @click="renderAdd(data)"
-                              ></span
-                            ></el-tooltip>
+                            <el-tooltip v-is="['grouptree_btn_add_group']" effect="dark" content="新增账号组" placement="bottom">
+                              <span title="新增账号组" class="cap cap-sub" @click="renderAdd(data)"></span>
+                            </el-tooltip>
                           </div>
                         </div>
                       </el-col>
@@ -107,17 +70,13 @@
                       <el-col :span="12" v-if="data.GroupId != -1">
                         <span class="msg">状态:</span>
                         <span class="use" v-if="data.Status == '1'">启用</span>
-                        <span class="unUse" v-if="data.Status != '1'"
-                          >禁用</span
-                        >
-                      </el-col>
-                      <el-col :span="12" v-if="data.GroupId != -1">
-                        <el-switch
-                          active-color="#6F81BC"
-                          v-model="data.flag"
-                          @change="renderChange(data)"
-                        ></el-switch>
+                        <span class="unUse" v-if="data.Status != '1'">禁用</span>
                       </el-col>
+                      <template v-is="['grouptree_btn_state_swatch']">
+                        <el-col :span="12" v-if="data.GroupId != -1">
+                          <el-switch active-color="#6F81BC" v-model="data.flag" @change="renderChange(data)"></el-switch>
+                        </el-col>
+                      </template>
                     </el-row>
                   </div>
                 </el-col>
@@ -127,17 +86,10 @@
           <div class="grid-contentBottom">
             <div class="title">下级账号组</div>
             <div class="content">
-              <el-empty
-                :image-size="150"
-                v-if="childrenData.length < 1"
-              ></el-empty>
+              <el-empty :image-size="150" v-if="childrenData.length < 1"></el-empty>
               <el-row :gutter="24">
-                <el-col
-                  :span="6"
-                  v-for="(data, index) in childrenData"
-                  :key="data.GroupId"
-                >
-                  <div class="info-close" @click="onNodeClick(data, index)">
+                <el-col :span="6" v-for="(data, index) in childrenData" :key="data.GroupId">
+                  <div v-is="['grouptree_btn_del_group']" class="info-close" @click="onNodeClick(data, index)">
                     <i class="el-icon-close"></i>
                   </div>
                   <div class="itemBox" @click.stop="childrenClick(data)">
@@ -176,30 +128,13 @@
                               ></span
                             ></el-tooltip> -->
 
-                            <el-tooltip
-                              effect="dark"
-                              content="编辑账号组"
-                              placement="bottom"
-                            >
-                              <span
-                                title="编辑账号组"
-                                class="cap cap-edit"
-                                @click.stop="renderEdit(data)"
-                                v-if="data.GroupId != -1"
-                              ></span
-                            ></el-tooltip>
+                            <el-tooltip v-is="['grouptree_btn_update_group']" effect="dark" content="编辑账号组" placement="bottom">
+                              <span title="编辑账号组" class="cap cap-edit" @click.stop="renderEdit(data)" v-if="data.GroupId != -1"></span>
+                            </el-tooltip>
 
-                            <el-tooltip
-                              effect="dark"
-                              content="新增账号组"
-                              placement="bottom"
-                            >
-                              <span
-                                title="新增账号组"
-                                class="cap cap-sub"
-                                @click.stop="renderAdd(data)"
-                              ></span
-                            ></el-tooltip>
+                            <el-tooltip v-is="['grouptree_btn_add_group']" effect="dark" content="新增账号组" placement="bottom">
+                              <span title="新增账号组" class="cap cap-sub" @click.stop="renderAdd(data)"></span>
+                            </el-tooltip>
                           </div>
                         </div>
                       </el-col>
@@ -214,18 +149,13 @@
                       <el-col :span="12" v-if="data.GroupId != -1">
                         <span class="msg">状态:</span>
                         <span class="use" v-if="data.Status == '1'">启用</span>
-                        <span class="unUse" v-if="data.Status != '1'"
-                          >禁用</span
-                        >
-                      </el-col>
-                      <el-col :span="12" v-if="data.GroupId != -1">
-                        <el-switch
-                          active-color="#6F81BC"
-                          v-model="data.flag"
-                          @click.stop.native
-                          @change="childrenRenderChange(data, index)"
-                        ></el-switch>
+                        <span class="unUse" v-if="data.Status != '1'">禁用</span>
                       </el-col>
+                      <template v-is="['grouptree_btn_state_swatch']">
+                        <el-col :span="12" v-if="data.GroupId != -1">
+                          <el-switch active-color="#6F81BC" v-model="data.flag" @click.stop.native @change="childrenRenderChange(data, index)"></el-switch>
+                        </el-col>
+                      </template>
                     </el-row>
                   </div>
                 </el-col>
@@ -241,9 +171,7 @@
         <div class="title">删除{{ title }}</div>
         <div class="content">是否确认删除{{ title }}?</div>
         <div class="foot right t30">
-          <el-button size="medium" class="r24" @click="remove" type="danger"
-            >删除</el-button
-          >
+          <el-button size="medium" class="r24" @click="remove" type="danger">删除</el-button>
           <el-button size="medium" @click="flag = false">取消</el-button>
         </div>
       </div>
@@ -261,7 +189,7 @@ export default {
   name: "accountGroup",
   components: { Search, Dialog },
   mixins: [treeData],
-  data() {
+  data () {
     return {
       dataIndex: 1,
       dataNum: 0,
@@ -299,36 +227,36 @@ export default {
     },
   },
   methods: {
-    filterNode(value, data) {
+    filterNode (value, data) {
       if (!value) return true;
       return data.GroupName.indexOf(value) !== -1;
     },
     // 添加组织
-    renderAdd(data) {
+    renderAdd (data) {
       this.$router.push({
         path: "/accountGroup/Add",
         query: { GroupUpId: data.GroupId },
       });
     },
     // 修改组织
-    renderEdit(data) {
+    renderEdit (data) {
       this.$router.push({
         path: "/accountGroup/Edit",
         query: { GroupUpId: data.GroupUpid, GroupId: data.GroupId },
       });
     },
     // 新增职员
-    renderMember(data) {
+    renderMember (data) {
       this.$message.warning("功能开发中");
     },
     // 关闭开启
-    renderChange(data) {
+    renderChange (data) {
       const { GroupId, flag } = data;
       const Status = flag ? 1 : 0;
       this.handleChange(GroupId, Status);
     },
     //下级关闭
-    childrenRenderChange(data, index) {
+    childrenRenderChange (data, index) {
       try {
         const { GroupId, flag } = data;
         const Status = flag ? 1 : 0;
@@ -351,26 +279,26 @@ export default {
       }
     },
     //删除组织
-    remove() {
+    remove () {
       this.deleteOrg(this.dataId);
     },
     //查询
-    getSearchData(val) {
+    getSearchData (val) {
       this.$refs.tree.filter(val);
     },
     //清除查询
-    clearSearchData() {
+    clearSearchData () {
       this.getGroupTree();
     },
     //节点关闭按钮点击
-    onNodeClick(data, index) {
+    onNodeClick (data, index) {
       this.delIndex = index;
       this.flag = true;
       this.dataId = data.GroupId;
       this.title = data.GroupName;
     },
     //获取指定数据
-    decompose(value, key, id) {
+    decompose (value, key, id) {
       let data = _.cloneDeep(value);
       let arr = [];
       for (let i = 0; i < data.length; i++) {
@@ -382,7 +310,7 @@ export default {
     },
     //-----------获取数据------------
     //状态变更
-    async handleChange(id, val) {
+    async handleChange (id, val) {
       try {
         const res = await ChangeGroupStatus({
           GroupId: id,
@@ -400,7 +328,7 @@ export default {
       }
     },
     //删除
-    async deleteOrg(id) {
+    async deleteOrg (id) {
       try {
         const res = await DeleteGroup({
           GroupId: id,
@@ -423,7 +351,7 @@ export default {
       }
     },
     //树点击
-    handleNodeClick(data) {
+    handleNodeClick (data) {
       const dataNew = _.cloneDeep(data);
       this.currDataArrId = dataNew.GroupId;
       this.currDataArr = [];
@@ -440,7 +368,7 @@ export default {
       );
     },
     //下级卡片点击
-    childrenClick(data) {
+    childrenClick (data) {
       const dataNew = _.cloneDeep(data);
       this.currDataArrId = dataNew.GroupId;
       this.currDataArr = [];

+ 57 - 179
src/views/accountManagement/components/accountEdit.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: Badguy
  * @Date: 2022-02-15 11:37:42
- * @LastEditTime: 2022-02-23 19:24:51
- * @LastEditors: your name
+ * @LastEditTime: 2022-02-28 16:52:09
+ * @LastEditors: Please set LastEditors
  * @Description: 编辑账号
  * have a nice day!
 -->
@@ -25,67 +25,30 @@
           >
           <el-radio v-model="accountForm.status" :label="3">否</el-radio>
         </div> -->
-        <div>
+        <div v-is="['userupdate_btn_save']">
           <!-- <button type="submmit" class="btn-delete" @click="delate">删除</button> -->
-          <button
-            type="submmit"
-            class="btn-save"
-            @click="handleClickSave('accountForm')"
-          >保存</button>
+          <button type="submmit" class="btn-save" @click="handleClickSave('accountForm')">保存</button>
         </div>
       </div>
       <div class="title-content">
-        <el-form
-          ref="accountForm"
-          label-width="80px"
-          :inline="true"
-          :model="accountForm"
-          :rules="formRules"
-        >
+        <el-form ref="accountForm" label-width="80px" :inline="true" :model="accountForm" :rules="formRules">
           <el-row :gutter="40">
             <el-col :span="5">
-              <el-form-item
-                label="账号名称"
-                prop="name"
-              >
-                <el-input
-                  v-model="accountForm.name"
-                  maxlength="32"
-                  placeholder="请输入名称"
-                  size="small"
-                />
+              <el-form-item label="账号名称" prop="name">
+                <el-input v-model="accountForm.name" maxlength="32" placeholder="请输入名称" size="small" />
               </el-form-item>
             </el-col>
             <el-col :span="5">
-              <el-form-item
-                label="登录密码"
-                prop="pwd"
-              >
-                <el-input
-                  v-model="accountForm.pwd"
-                  placeholder="*******"
-                  size="small"
-                  disabled
-                />
+              <el-form-item label="登录密码" prop="pwd">
+                <el-input v-model="accountForm.pwd" placeholder="*******" size="small" disabled />
               </el-form-item>
             </el-col>
-            <el-col :span="2">
-              <button
-                class="btn-reset-pwd"
-                @click="resetPwd"
-              >重置密码</button>
+            <el-col v-is="['userupdate_btn_re_pwd']" :span="2">
+              <button class="btn-reset-pwd" @click="resetPwd">重置密码</button>
             </el-col>
             <el-col :span="8">
-              <el-form-item
-                label="描述"
-                prop="desc"
-              >
-                <el-input
-                  v-model="accountForm.desc"
-                  maxlength="128"
-                  placeholder="描述内容···"
-                  size="small"
-                />
+              <el-form-item label="描述" prop="desc">
+                <el-input v-model="accountForm.desc" maxlength="128" placeholder="描述内容···" size="small" />
               </el-form-item>
             </el-col>
           </el-row>
@@ -95,165 +58,80 @@
 
     <div class="content">
       <!-- 用户组和角色未开启 -->
-      <el-row
-        v-if="!openGroup && !openRole"
-        :gutter="24"
-      >
+      <el-row v-if="!openGroup && !openRole" :gutter="24">
         <el-col :span="8">
           <div class="content-card content-card-lg">
-            <PermissionTree
-              title="权限树"
-              :query-type="queryType"
-              :checked-keys="permissionTreeChckedKeys"
-              @getTreeData="getPermissionTreeChecked"
-            />
+            <PermissionTree title="权限树" :query-type="queryType" :checked-keys="permissionTreeChckedKeys" @getTreeData="getPermissionTreeChecked" />
           </div>
         </el-col>
         <el-col :span="8">
           <div class="content-card content-card-lg">
-            <RulesOfCompetency
-              title="权限规则"
-              margin-b="20px"
-              @getData="getRulesOfCompetency"
-            />
+            <RulesOfCompetency title="权限规则" margin-b="20px" @getData="getRulesOfCompetency" />
           </div>
         </el-col>
-        <el-col :span="8">
+        <el-col v-is="['account_edit_login_setting']" :span="8">
           <div class="content-card content-card-lg">
-            <LoginPolicy
-              :checked-list="loginPolicyCheckedList"
-              @getCheckedList="getLoginPolicyChecked"
-            />
+            <LoginPolicy :checked-list="loginPolicyCheckedList" @getCheckedList="getLoginPolicyChecked" />
           </div>
         </el-col>
       </el-row>
       <!-- 角色和用户组都开启 -->
-      <el-row
-        v-if="openGroup && openRole"
-        :gutter="24"
-      >
+      <el-row v-if="openGroup && openRole" :gutter="24">
         <el-col :span="8">
           <div class="content-card content-card-xl">
-            <AccountGroupTree
-              title="所属账号组"
-              nodekey="GroupId"
-              :default-props="accountGroupTreeProps"
-              :checked-keys="accountGroupTreeCheckedList"
-              @getTreeData="getAccountGroupChecked"
-            />
+            <AccountGroupTree title="所属账号组" nodekey="GroupId" :default-props="accountGroupTreeProps" :checked-keys="accountGroupTreeCheckedList" @getTreeData="getAccountGroupChecked" />
           </div>
         </el-col>
-        <el-col :span="8">
+        <el-col v-is="['account_edit_role_list']" :span="8">
           <div class="content-card content-card-xl">
-            <RoleList
-              title="角色列表"
-              :role-type="roleType"
-              :group-ids="groupIds"
-              :check-box-list="roleListCheckedList"
-              :number="8"
-              :active="true"
-              @checkChange="getRoleListChecked"
-              @checkClick="selectRole"
-              @roleListChange="roleListCheckedChange"
-            />
+            <RoleList title="角色列表" :role-type="roleType" :group-ids="groupIds" :check-box-list="roleListCheckedList" :number="8" :active="true" @checkChange="getRoleListChecked" @checkClick="selectRole" @roleListChange="roleListCheckedChange" />
           </div>
         </el-col>
-        <el-col :span="8">
+        <el-col v-is="['account_edit_auth_list']" :span="8">
           <div class="content-card content-card-sm">
-            <PermissionList
-              title="权限列表"
-              class="permission-list"
-              :role-list="checkedRoles"
-              :check="true"
-              @Competen="Competen"
-            />
+            <PermissionList title="权限列表" class="permission-list" :role-list="checkedRoles" :check="true" @Competen="Competen" />
           </div>
-          <div class="content-card content-card-xs">
-            <LoginPolicy
-              :checked-list="loginPolicyCheckedList"
-              @getCheckedList="getLoginPolicyChecked"
-            />
+          <div v-is="['account_edit_login_setting']" class="content-card content-card-xs">
+            <LoginPolicy :checked-list="loginPolicyCheckedList" @getCheckedList="getLoginPolicyChecked" />
           </div>
         </el-col>
       </el-row>
       <!-- 只开启用户组 -->
-      <el-row
-        v-if="openGroup && !openRole"
-        :gutter="24"
-      >
+      <el-row v-if="openGroup && !openRole" :gutter="24">
         <el-col :span="8">
           <div class="content-card content-card-xxl">
-            <AccountGroupTree
-              title="所属账号组"
-              nodekey="GroupId"
-              :default-props="accountGroupTreeProps"
-              :checked-keys="accountGroupTreeCheckedList"
-              @getTreeData="getAccountGroupChecked"
-            />
+            <AccountGroupTree title="所属账号组" nodekey="GroupId" :default-props="accountGroupTreeProps" :checked-keys="accountGroupTreeCheckedList" @getTreeData="getAccountGroupChecked" />
           </div>
         </el-col>
         <el-col :span="8">
           <div class="content-card content-card-xxl">
-            <PermissionTree
-              title="权限树"
-              :query-type="queryType"
-              :query-ids="queryIds"
-              :checked-keys="permissionTreeChckedKeys"
-              @getTreeData="getPermissionTreeChecked"
-            />
+            <PermissionTree title="权限树" :query-type="queryType" :query-ids="queryIds" :checked-keys="permissionTreeChckedKeys" @getTreeData="getPermissionTreeChecked" />
           </div>
         </el-col>
         <el-col :span="8">
           <div class="content-card content-card-md">
-            <RulesOfCompetency
-              title="权限规则"
-              margin-b="20px"
-              @getData="getRulesOfCompetency"
-            />
+            <RulesOfCompetency title="权限规则" margin-b="20px" @getData="getRulesOfCompetency" />
           </div>
-          <div class="content-card content-card-xs">
-            <LoginPolicy
-              :checked-list="loginPolicyCheckedList"
-              @getCheckedList="getLoginPolicyChecked"
-            />
+          <div v-is="['account_edit_login_setting']" class="content-card content-card-xs">
+            <LoginPolicy :checked-list="loginPolicyCheckedList" @getCheckedList="getLoginPolicyChecked" />
           </div>
         </el-col>
       </el-row>
       <!-- 只开启角色 -->
-      <el-row
-        v-if="!openGroup && openRole"
-        :gutter="24"
-      >
-        <el-col :span="8">
+      <el-row v-if="!openGroup && openRole" :gutter="24">
+        <el-col v-is="['account_edit_role_list']" :span="8">
           <div class="content-card content-card-lg">
-            <RoleList
-              title="角色列表"
-              :role-type="roleType"
-              :check-box-list="roleListCheckedList"
-              :number="8"
-              :active="true"
-              @checkChange="getRoleListChecked"
-              @checkClick="selectRole"
-            />
+            <RoleList title="角色列表" :role-type="roleType" :check-box-list="roleListCheckedList" :number="8" :active="true" @checkChange="getRoleListChecked" @checkClick="selectRole" />
           </div>
         </el-col>
-        <el-col :span="8">
+        <el-col v-is="['account_edit_auth_list']" :span="8">
           <div class="content-card content-card-lg">
-            <PermissionList
-              title="权限列表"
-              :role-list="checkedRoles"
-              :check="true"
-              class="permission-list"
-              @Competen="Competen"
-            />
+            <PermissionList title="权限列表" :role-list="checkedRoles" :check="true" class="permission-list" @Competen="Competen" />
           </div>
         </el-col>
-        <el-col :span="8">
+        <el-col v-is="['account_edit_login_setting']" :span="8">
           <div class="content-card content-card-lg">
-            <LoginPolicy
-              :checked-list="loginPolicyCheckedList"
-              @getCheckedList="getLoginPolicyChecked"
-            />
+            <LoginPolicy :checked-list="loginPolicyCheckedList" @getCheckedList="getLoginPolicyChecked" />
           </div>
         </el-col>
       </el-row>
@@ -299,7 +177,7 @@ export default {
     PermissionList
     // Dialog
   },
-  data() {
+  data () {
     return {
       doesAccountExist: this.$route.meta.doesAccountExist, // 控制账号新增/编辑
       userId: '',
@@ -345,11 +223,11 @@ export default {
   },
   computed: {
     ...mapGetters(['systemSet']),
-    pageTitle() {
+    pageTitle () {
       return this.doesAccountExist ? '编辑账号' : '新增账号'
     }
   },
-  created() {
+  created () {
     // 获取系统配置
     let obj
     if (typeof this.systemSet === 'string') {
@@ -365,7 +243,7 @@ export default {
     this.pwdLengthBegin = PwdLengthBegin
     this.pwdLengthEnd = PwdLengthEnd
   },
-  mounted() {
+  mounted () {
     if (this.doesAccountExist) {
       this.userId = this.$route.query.userId
       this.getAccountInfo()
@@ -377,7 +255,7 @@ export default {
   },
   methods: {
     // 获取当前账号信息
-    async getAccountInfo() {
+    async getAccountInfo () {
       try {
         const res = await getAccountDetails({
           UserId: this.userId
@@ -428,23 +306,23 @@ export default {
       }
     },
     // 随机生成密码
-    resetPwd() {
+    resetPwd () {
       this.accountForm.pwd = pwdProduce(this.pwdLengthBegin, this.pwdLengthEnd, this.pwdStruc)
     },
     // 获取当前权限树勾选项
-    getPermissionTreeChecked(arr) {
+    getPermissionTreeChecked (arr) {
       this.permissionTreeChckedTemp = arr.map(auth => auth.AuthList)
     },
     // 获取当前编辑的权限规则
-    getRulesOfCompetency(obj) {
+    getRulesOfCompetency (obj) {
       this.rulesOfCompetency = obj
     },
     // 获取当前勾选的登录策略
-    getLoginPolicyChecked(arr) {
+    getLoginPolicyChecked (arr) {
       this.loginPolicyCheckedTemp = arr
     },
     // 获取当前勾选的账号组
-    getAccountGroupChecked(arr) {
+    getAccountGroupChecked (arr) {
       if (arr && arr.length && arr[0] !== -1) {
         const GroupIds = arr.map(item => item.GroupId)
         this.accountGroupTreeCheckedTemp = GroupIds
@@ -459,10 +337,10 @@ export default {
       }
     },
     // 获取当前勾选的角色列表
-    getRoleListChecked(arr) {
+    getRoleListChecked (arr) {
       this.roleListCheckedTemp = arr
     },
-    roleListCheckedChange(arr) {
+    roleListCheckedChange (arr) {
       if (arr && arr.length) {
         this.roleListCheckedTemp = this.roleListCheckedTemp.filter(role =>
           arr.some(data => data.RoleId === role.RoleId)
@@ -473,7 +351,7 @@ export default {
       this.roleListCheckedList = this.roleListCheckedTemp.map(role => role.RoleId)
     },
     // 点击角色后显示对应权限列表
-    async selectRole(data) {
+    async selectRole (data) {
       if (this.currentSelectedRoleId === data.RoleId) return
       try {
         const params = {
@@ -491,11 +369,11 @@ export default {
       }
     },
     // 修改权限规则
-    Competen(data) {
+    Competen (data) {
       console.log(data)
     },
     // 账号编辑保存
-    handleClickSave(formName) {
+    handleClickSave (formName) {
       this.$refs[formName].validate(valid => {
         if (valid) {
           this.handleSaveEdit()
@@ -505,7 +383,7 @@ export default {
         }
       })
     },
-    handleSaveEdit() {
+    handleSaveEdit () {
       const params = {
         AuthList: this.permissionTreeChckedTemp,
         GroupList: this.accountGroupTreeCheckedTemp.map(groupId => ({ GroupId: groupId })),
@@ -526,7 +404,7 @@ export default {
       }
     },
     // 编辑账号
-    async saveEditAccount(params) {
+    async saveEditAccount (params) {
       try {
         const res = await editAccount(params)
         if (res.code === 0) {
@@ -543,7 +421,7 @@ export default {
       }
     },
     // 新增账号
-    async saveAddAccount(params) {
+    async saveAddAccount (params) {
       try {
         const res = await addAccount(params)
         if (res.code === 0) {

+ 32 - 95
src/views/accountManagement/components/accountHome.vue

@@ -6,54 +6,24 @@
         <div class="status2"><span class="icon" />离线</div>
         <div class="status3"><span class="icon" />禁用</div>
       </div>
-      <Search
-        :is-slot="true"
-        @getSearchData="getSearchData"
-        @clearSearchData="clearSearchData"
-      >
-        <el-button
-          class="btn-add"
-          @click="addAccount"
-        >新增账号</el-button>
+      <Search :is-slot="true" @getSearchData="getSearchData" @clearSearchData="clearSearchData">
+        <el-button v-is="['userlist_btn_add']" class="btn-add" @click="addAccount">新增账号</el-button>
       </Search>
     </div>
     <div class="content-box scrollbar">
       <template v-if="accountArr.length">
-        <el-row
-          v-infinite-scroll="load"
-          :infinite-scroll-disabled="disabled"
-          :infinite-scroll-distance="20"
-          :gutter="24"
-        >
-          <el-col
-            v-for="account in accountArr"
-            :key="account.UserId"
-            :xs="24"
-            :sm="12"
-            :md="8"
-            :lg="6"
-            :xl="{ span: '4-8' }"
-            class="account-box"
-          >
+        <el-row v-infinite-scroll="load" :infinite-scroll-disabled="disabled" :infinite-scroll-distance="20" :gutter="24">
+          <el-col v-for="account in accountArr" :key="account.UserId" :xs="24" :sm="12" :md="8" :lg="6" :xl="{ span: '4-8' }" class="account-box">
             <div class="account-box-wrap">
               <div :class="account.Status === 1 ? 'headOnline' : account.Status === 2 ? 'headOffline' : 'headDisabled'" />
-              <div
-                class="del"
-                @click="deleteUser(account)"
-              >
+              <div v-is="['userlist_btn_del']" class="del" @click="deleteUser(account)">
                 <i class="el-icon-close" />
               </div>
               <div>
                 <el-row>
-                  <el-col
-                    :span="24"
-                    class="nameBox"
-                  >
+                  <el-col :span="24" class="nameBox">
                     <div class="name">{{ account.UserName }}</div>
-                    <div
-                      class="loger"
-                      @click="toEdit(account.UserId)"
-                    />
+                    <div class="loger" v-is="['userlist_btn_update']" @click="toEdit(account.UserId)" />
                   </el-col>
                 </el-row>
 
@@ -63,51 +33,26 @@
 
                 <el-row class="content">
                   <el-col :span="12">登录次数:<span>{{ account.LoginCount }}</span></el-col>
-                  <el-col
-                    :span="12"
-                    class="flexLeft"
-                  >异常登录:<span>{{ account.ExceptionCount }}</span></el-col>
+                  <el-col :span="12" class="flexLeft">异常登录:<span>{{ account.ExceptionCount }}</span></el-col>
                 </el-row>
                 <el-row class="content">
                   <el-col :span="24">权限项数:<span>{{ account.AuthCount }}</span></el-col>
                 </el-row>
                 <el-row class="content">
                   <el-col :span="12">
-                    状态:<span
-                      v-if="account.Status == 1 || account.Status == 2"
-                      class="used"
-                    >启用</span>
-                    <span
-                      v-else-if="account.Status == 3"
-                      class="unUsed"
-                    >停用</span>
+                    状态:<span v-if="account.Status == 1 || account.Status == 2" class="used">启用</span>
+                    <span v-else-if="account.Status == 3" class="unUsed">停用</span>
                   </el-col>
-                  <el-col
-                    :span="12"
-                    class="flexLeft"
-                  >
-                    <el-switch
-                      v-model="account.Flag"
-                      :active-value="true"
-                      :inactive-value="false"
-                      active-color="#6F81BC"
-                      inactive-color="#CFD6E2"
-                      @change="userActiveToggle(account)"
-                    />
+                  <el-col v-is="['userlist_btn_status_change']" :span="12" class="flexLeft">
+                    <el-switch v-model="account.Flag" :active-value="true" :inactive-value="false" active-color="#6F81BC" inactive-color="#CFD6E2" @change="userActiveToggle(account)" />
                   </el-col>
                 </el-row>
               </div>
             </div>
           </el-col>
         </el-row>
-        <p
-          v-if="loading"
-          class="center"
-        >加载中...</p>
-        <p
-          v-if="noMore"
-          class="center"
-        >没有更多数据了~</p>
+        <p v-if="loading" class="center">加载中...</p>
+        <p v-if="noMore" class="center">没有更多数据了~</p>
       </template>
     </div>
     <Dialog :flag="dialogVisible">
@@ -115,17 +60,9 @@
         <div class="title">删除账号</div>
         <div class="content">是否确定要删除{{ deleteUserName }}?</div>
         <div class="foot right t30">
-          <el-button
-            size="medium"
-            type="danger"
-            class="r24"
-            @click="del()"
-          >删除</el-button>
+          <el-button size="medium" type="danger" class="r24" @click="del()">删除</el-button>
 
-          <el-button
-            size="medium"
-            @click="dialogVisible = false"
-          >取消</el-button>
+          <el-button size="medium" @click="dialogVisible = false">取消</el-button>
         </div>
       </div>
     </Dialog>
@@ -138,7 +75,7 @@ import Dialog from '@/layout/components/Dialog'
 import { GetAccountList, ChangeUserStatus, delAccount } from '@/api/Account'
 export default {
   components: { Search, Dialog },
-  data() {
+  data () {
     return {
       dialogVisible: false,
       accountArr: [],
@@ -155,14 +92,14 @@ export default {
     }
   },
   computed: {
-    noMore() {
+    noMore () {
       return this.PageIndex >= this.pages
     },
-    disabled() {
+    disabled () {
       return this.loading || this.noMore
     }
   },
-  created() {
+  created () {
     if (!this.searchInfo) {
       this.accountList()
     } else {
@@ -172,29 +109,29 @@ export default {
   },
   methods: {
     // 滚动加载
-    load() {
+    load () {
       this.PageIndex += 1
       this.accountList()
     },
     // 回到第一页
-    pageInit() {
+    pageInit () {
       this.PageIndex = 1
       this.accountArr = []
       this.accountList()
     },
     // 查询
-    getSearchData(val) {
+    getSearchData (val) {
       this.searchInfo = val
       this.pageInit()
     },
 
     // 清除查询
-    clearSearchData() {
+    clearSearchData () {
       this.searchInfo = ''
       this.pageInit()
     },
     // 修改状态
-    async userActiveToggle({ Flag, Status, UserId }) {
+    async userActiveToggle ({ Flag, Status, UserId }) {
       Status = Flag ? 2 : 3
       try {
         const result = await ChangeUserStatus({
@@ -216,25 +153,25 @@ export default {
         console.log('出错了', error)
       }
     },
-    deleteUser(user) {
+    deleteUser (user) {
       this.dialogVisible = true
       this.deleteUserId = user.UserId
       this.deleteUserName = user.UserName
     },
-    toEdit(userId) {
+    toEdit (userId) {
       this.userId = userId
       this.$router.push({
         path: '/account/accountEdit',
         query: { userId: this.userId }
       })
     },
-    addAccount() {
+    addAccount () {
       this.$router.push({
         path: '/account/accountAdd'
       })
     },
     // 获取列表
-    async accountList() {
+    async accountList () {
       try {
         this.loading = true
         const result = await GetAccountList({
@@ -259,7 +196,7 @@ export default {
     },
 
     // 删除接口
-    async del() {
+    async del () {
       const result = await delAccount({
         UserId: this.deleteUserId
       })
@@ -410,7 +347,7 @@ export default {
         .loger {
           width: 24px;
           height: 24px;
-          background: url('../../../assets/status/ic_edit.png') no-repeat;
+          background: url("../../../assets/status/ic_edit.png") no-repeat;
           background-size: 100% 100%;
           border: 1px solid #e4e7ec;
           border-radius: 50%;
@@ -419,7 +356,7 @@ export default {
           cursor: pointer;
         }
         .loger:hover {
-          background: url('../../../assets/status/ic_edit_hovar.png') no-repeat;
+          background: url("../../../assets/status/ic_edit_hovar.png") no-repeat;
           background-size: 100% 100%;
         }
       }

+ 21 - 14
src/views/authorityManagement/components/authorityHome.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 09:27:43
- * @LastEditTime: 2022-01-12 17:14:39
+ * @LastEditTime: 2022-02-28 16:27:52
  * @LastEditors: Please set LastEditors
  * @Description: 权限管理
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\home.vue
@@ -52,29 +52,31 @@
                               <el-tooltip effect="dark" content="修改应用" placement="bottom">
                                 <span v-if="data.Type === 1" title="修改应用" @click="renderEdit(data)" class="cap cap-edit"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="新增权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_add_auth']" effect="dark" content="新增权限项" placement="bottom">
                                 <span v-if="data.Type === 2" title="新增权限项" @click="renderSub(data)" class="cap cap-sub"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="编辑权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_update_auth']" effect="dark" content="编辑权限项" placement="bottom">
                                 <span v-if="data.Type > 2" title="编辑权限项" @click="renderEdit(data)" class="cap cap-edit"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="新增权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_add_auth']" effect="dark" content="新增权限项" placement="bottom">
                                 <span v-if="data.Type > 2" title="新增权限项" @click="renderSub(data)" class="cap cap-sub"></span>
                               </el-tooltip>
                             </div>
                           </div>
                           <div v-if="data.Type > 0" class="flex details">
                             <div class="details-msg">状态:<span :class="data.Status === 1 ? 'success' : 'error'">{{data.Status === 1 ? '启用' : '禁用'}}</span></div>
-                            <div class="details-info">
+                            <div v-is="['authtree_btn_state_swatch']" class="details-info">
                               <el-switch v-model="data.flag" @change="renderChange(data,index)" active-color="#6F81BC">
                               </el-switch>
                             </div>
                           </div>
                         </div>
                       </div>
-                      <div v-if="data.Type !== 0 && data.Type !== 2" @click="onNodeClick(data)" class="info-close">
-                        <i class="icon el-icon-close" :class="data.Type === 1 ? 'close1' : data.Type > 2 ? 'close2' : ''"></i>
-                      </div>
+                      <template v-is="['authtree_btn_del_auth']">
+                        <div v-if="data.Type !== 0 && data.Type !== 2" @click="onNodeClick(data)" class="info-close">
+                          <i class="icon el-icon-close" :class="data.Type === 1 ? 'close1' : data.Type > 2 ? 'close2' : ''"></i>
+                        </div>
+                      </template>
                     </div>
                   </el-col>
                 </el-row>
@@ -103,29 +105,34 @@
                               <el-tooltip effect="dark" content="修改应用" placement="bottom">
                                 <span v-if="data.Type === 1" title="修改应用" @click="renderEdit(data)" class="cap cap-edit"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="新增权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_add_auth']" effect="dark" content="新增权限项" placement="bottom">
                                 <span v-if="data.Type === 2" title="新增权限项" @click="renderSub(data)" class="cap cap-sub"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="编辑权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_update_auth']" effect="dark" content="编辑权限项" placement="bottom">
                                 <span v-if="data.Type > 2" title="编辑权限项" @click="renderEdit(data)" class="cap cap-edit"></span>
                               </el-tooltip>
-                              <el-tooltip effect="dark" content="新增权限项" placement="bottom">
+                              <el-tooltip v-is="['authtree_btn_add_auth']" effect="dark" content="新增权限项" placement="bottom">
                                 <span v-if="data.Type > 2" title="新增权限项" @click="renderSub(data)" class="cap cap-sub"></span>
                               </el-tooltip>
                             </div>
                           </div>
                           <div v-if="data.Type > 0" class="flex details">
                             <div class="details-msg">状态:<span :class="data.Status === 1 ? 'success' : 'error'">{{data.Status === 1 ? '启用' : '禁用'}}</span></div>
-                            <div class="details-info">
+                            <div v-is="['authtree_btn_state_swatch']" class="details-info">
                               <el-switch v-model="data.flag" @click.stop.native @change="renderChange(data,index)" active-color="#6F81BC">
                               </el-switch>
                             </div>
                           </div>
                         </div>
                       </div>
-                      <div v-if="data.Type !== 0 && data.Type !== 2" @click="onNodeClick(data)" class="info-close">
+                      <template v-is="['authtree_btn_del_auth']">
+                        <div v-if="data.Type !== 0 && data.Type !== 2" @click="onNodeClick(data)" class="info-close">
+                          <i class="icon el-icon-close" :class="data.Type === 1 ? 'close1' : data.Type > 2 ? 'close2' : ''"></i>
+                        </div>
+                      </template>
+                      <!-- <div v-if="data.Type !== 0 && data.Type !== 2" @click="onNodeClick(data)" class="info-close">
                         <i class="icon el-icon-close" :class="data.Type === 1 ? 'close1' : data.Type > 2 ? 'close2' : ''"></i>
-                      </div>
+                      </div> -->
                     </div>
                   </el-col>
                 </el-row>

+ 3 - 3
src/views/authorityManagement/components/authorityPowerAdd.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 11:26:07
- * @LastEditTime: 2022-02-15 14:56:26
+ * @LastEditTime: 2022-02-28 16:30:03
  * @LastEditors: Please set LastEditors
  * @Description:权限项
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityPower.vue
@@ -47,7 +47,7 @@
         <div class="r24 flex1 part">
           <Rulesofcompetency @getData="getData" :authTo="authTo" title="权限规则" />
         </div>
-        <div class="flex1 part">
+        <div v-is="['authtree_role_card']" class="flex1 part">
           <Rolelist @checkChange="checkChange" :roleType="roleType" :checkBoxList="checkBoxList" :number="8" title="角色" />
         </div>
       </template>
@@ -56,7 +56,7 @@
         <div class="r24 flex1 part">
           <Rulesofcompetency @getData="getData" :authTo="authTo" title="权限规则" />
         </div>
-        <div class="flex1 part">
+        <div v-is="['authtree_role_card']" class="flex1 part">
           <Rolelist @checkChange="checkChange" :roleType="roleType" :checkBoxList="checkBoxList" :number="8" title="账号授权" />
         </div>
       </template>

+ 4 - 4
src/views/authorityManagement/components/authorityPowerEdit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 11:26:07
- * @LastEditTime: 2022-02-15 14:46:37
+ * @LastEditTime: 2022-02-28 16:31:34
  * @LastEditors: Please set LastEditors
  * @Description:权限项
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityPower.vue
@@ -19,7 +19,7 @@
             <el-radio v-model="radio" :label="0">否</el-radio>
           </span> -->
         </div>
-        <div class="btn">
+        <div v-is="['appupdate_box_save']" class="btn">
           <!-- <el-button @click="deleteAuth" class="r24" type="danger">删除</el-button> -->
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
@@ -47,7 +47,7 @@
         <div class="r24 flex1 part">
           <Rulesofcompetency @getData="getData" :authTo="authTo" title="权限规则" />
         </div>
-        <div class="flex1 part">
+        <div v-is="['appupdate_edit_card']" class="flex1 part">
           <Rolelist @checkChange="checkChange" :roleType="roleType" :checkBoxList="checkBoxList" :number="8" title="角色" />
         </div>
       </template>
@@ -56,7 +56,7 @@
         <div class="r24 flex1 part">
           <Rulesofcompetency @getData="getData" :authTo="authTo" title="权限规则" />
         </div>
-        <div class="flex1 part">
+        <div v-is="['appupdate_edit_card']" class="flex1 part">
           <Rolelist @checkChange="checkChange" :roleType="roleType" :checkBoxList="checkBoxList" :number="8" title="账号授权" />
         </div>
       </template>

+ 7 - 3
src/views/authorityManagement/components/authorityRoleAdd.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 16:31:31
- * @LastEditTime: 2022-02-16 10:49:29
+ * @LastEditTime: 2022-02-28 16:40:19
  * @LastEditors: Please set LastEditors
  * @Description: 新增/编辑角色
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityRoleStatus.vue
@@ -35,8 +35,12 @@
         <Rulesofcompetency @getData="getData" title="权限规则" />
       </div>
       <div class="flex1 part">
-        <Rolelist @checkChange="checkChange" @checkClick="checkClick" :imageSize="80" :roleType="roleType" :active="true" class="hucRole" :number="8" style="height: 280px; overflow: hidden" title="互斥角色" />
-        <Permissionlist v-loading="permission" :imageSize="80" :RoleList="RoleList" :check="true" class="hucPower" style="margin-top: 24px" title="互斥角色已有权限列表" />
+        <template v-is="['role_add_mutually_exclusive']">
+          <Rolelist @checkChange="checkChange" @checkClick="checkClick" :imageSize="80" :roleType="roleType" :active="true" class="hucRole" :number="8" style="height: 280px; overflow: hidden" title="互斥角色" />
+        </template>
+        <template v-is="['role_add_mutually_exclusive_list']">
+          <Permissionlist v-loading="permission" :imageSize="80" :RoleList="RoleList" :check="true" class="hucPower" style="margin-top: 24px" title="互斥角色已有权限列表" />
+        </template>
       </div>
     </div>
   </div>

+ 8 - 4
src/views/authorityManagement/components/authorityRoleEdit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 16:31:31
- * @LastEditTime: 2022-02-16 10:10:54
+ * @LastEditTime: 2022-02-28 16:41:32
  * @LastEditors: Please set LastEditors
  * @Description: 新增/编辑角色
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityRoleStatus.vue
@@ -19,7 +19,7 @@
             <el-radio v-model="radio" :label="0">否</el-radio>
           </span> -->
         </div>
-        <div class="btn">
+        <div v-is="['role_edit_save']" class="btn">
           <!-- <el-button class="r24" @click="removeRole" type="danger">删除</el-button> -->
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
@@ -43,8 +43,12 @@
         <Rulesofcompetency v-loading="loading" element-loading-text="数据加载中" :authList="authList" :authTo="authTo" title="权限规则" />
       </div>
       <div class="flex1 part">
-        <Rolelist v-loading="loading" element-loading-text="数据加载中" @checkChange="checkChange" @checkClick="checkClick" :roleType="roleType" :checkBoxList="radioCheck" :active="true" class="hucRole" :imageSize="80" :number="8" style="height: 280px; overflow: hidden" title="互斥角色" />
-        <Permissionlist v-loading="permission" element-loading-text="数据加载中" :check="true" :imageSize="80" :RoleList="RoleList" class="hucPower" style="margin-top: 24px" title="互斥角色已有权限列表" />
+        <template v-is="['role_edit_mutually_exclusive']">
+          <Rolelist v-loading="loading" element-loading-text="数据加载中" @checkChange="checkChange" @checkClick="checkClick" :roleType="roleType" :checkBoxList="radioCheck" :active="true" class="hucRole" :imageSize="80" :number="8" style="height: 280px; overflow: hidden" title="互斥角色" />
+        </template>
+        <template v-is="['role_edit_mutually_exclusive_list']">
+          <Permissionlist v-loading="permission" element-loading-text="数据加载中" :check="true" :imageSize="80" :RoleList="RoleList" class="hucPower" style="margin-top: 24px" title="互斥角色已有权限列表" />
+        </template>
       </div>
     </div>
   </div>

+ 5 - 5
src/views/authorityManagement/components/authorityRoleHome.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 14:37:54
- * @LastEditTime: 2022-02-15 15:53:04
+ * @LastEditTime: 2022-02-28 16:34:48
  * @LastEditors: Please set LastEditors
  * @Description: 角色管理
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityRole.vue
@@ -15,7 +15,7 @@
         <div class="status2"><span class="icon"></span>不存在互斥</div>
       </div>
       <Search @getSearchData="getSearchData" @clearSearchData="clearSearchData" :isSlot="true">
-        <button @click="addRole" class="btnAdd">新增角色</button>
+        <button v-is="['role_add']" @click="addRole" class="btnAdd">新增角色</button>
       </Search>
     </div>
     <!--列表-->
@@ -30,10 +30,10 @@
                   <div class="info-avoutr">
                     <div class="msg flex-wrap">
                       <p :title="item.RoleName" class="name">{{item.RoleName}}</p>
-                      <div @click="editRole(item)" class="cap cap-edit"></div>
+                      <div v-is="['role_edit']" @click="editRole(item)" class="cap cap-edit"></div>
                     </div>
                   </div>
-                  <div class="info-close">
+                  <div v-is="['role_delete']" class="info-close">
                     <i @click="checkRemove(item,index)" class="icon el-icon-close"></i>
                   </div>
                 </div>
@@ -49,7 +49,7 @@
                   <div class="details-msg">
                     状态:<span :class="item.Status == 1 ? 'success' : 'error'">{{item.Status == 1 ? '启用' : '停用'}}</span>
                   </div>
-                  <div class="details-info">
+                  <div v-is="['role_state switch']" class="details-info">
                     <el-switch v-model="item.isauto" @change="handleChange(item)" active-color="#6F81BC">
                     </el-switch>
                   </div>

+ 2 - 2
src/views/jobsManagement/add.vue

@@ -2,7 +2,7 @@
   <div class="pageBody">
     <div class="topPart">
       <div class="title">
-        <div class="tltleLeft">编辑岗位</div>
+        <div class="tltleLeft">新增岗位</div>
         <!-- <div class="isUsed">
           是否启用
           <el-radio
@@ -16,7 +16,7 @@
           >
           <el-radio v-model="FormData.isUsed" :label="3">否</el-radio>
         </div> -->
-        <div>
+        <div v-is="['job_btn_save']">
           <!-- <button type="submmit" class="delBtn" @click="delate">删除</button> -->
           <button type="submmit" style="cursor: pointer;" class="saveBtn" @click="saveJob('form')">
             保存

+ 1 - 1
src/views/jobsManagement/edit.vue

@@ -16,7 +16,7 @@
           >
           <el-radio v-model="FormData.isUsed" :label="3">否</el-radio>
         </div> -->
-        <div>
+        <div v-is="['job_btn_edit']">
           <!-- <button type="submmit" class="delBtn" @click="delate">删除</button> -->
           <button type="submmit" style="cursor: pointer;" class="saveBtn" @click="saveJob('form')">
             保存

+ 3 - 3
src/views/jobsManagement/list.vue

@@ -9,14 +9,14 @@
     </div>
     <div v-infinite-scroll="load" :infinite-scroll-distance="20" infinite-scroll-disabled="disabled" class="contantBox scrollbar">
       <div class="itemBox" v-for="(item, index) in listData" :key="index">
-        <div class="del" @click="delate(item.JobId,index)">
+        <div v-is="['joblist_btn_del_job']" class="del" @click="delate(item.JobId,index)">
           <i class="el-icon-close"></i>
         </div>
         <div>
           <el-row>
             <el-col :span="24" class="nameBox">
               <div class="name">{{ item.JobName }}</div>
-              <div class="loger" @click="toEdit(item.JobId)"></div>
+              <div v-is="['joblist_btn_edit']" class="loger" @click="toEdit(item.JobId)"></div>
             </el-col>
           </el-row>
 
@@ -40,7 +40,7 @@
               状态:<span class="used" v-if="item.Status == 1">启用</span>
               <span class="unUsed" v-else-if="item.Status == 0">停用</span>
             </el-col>
-            <el-col :span="12" class="flexLeft">
+            <el-col v-is="['joblist_btn_state_swatch']" :span="12" class="flexLeft">
               <el-switch @change="isUsedChange(item, index)" v-model="item.Flag" :active-value="true" :inactive-value="false" active-color="#6F81BC" inactive-color="#CFD6E2">
               </el-switch>
             </el-col>

+ 45 - 8
src/views/login/index.vue

@@ -60,6 +60,7 @@ import Dialog from "@/layout/components/Dialog/index.vue";
 import { GetCheckCode, getToken } from '@/api/login';
 import { GetSystemSet } from "@/api/systemConfiguration";
 import { setCodeToken } from '@/utils/auth';
+import { getAuthListByUser } from '@/api/Account';
 export default {
   name: 'Login',
   components: { Identify, Dialog },
@@ -133,14 +134,50 @@ export default {
             LoginPwd: this.loginForm.password,
             CheckCode: this.loginForm.CheckCode
           }
-          this.$store.dispatch('user/login', params).then(() => {
-            this.$store.dispatch("app/toggleOutcheck", false);
-            sessionStorage.setItem("userName", params.LoginName);
-            this.$router.push({ path: this.redirect || '/' });
-            this.loading = false;
-          }).catch(() => {
-            this.loading = false;
-          })
+          this.$store
+            .dispatch("user/login", params)
+            .then(() => {
+              this.$store.dispatch("app/toggleOutcheck", false);
+              sessionStorage.setItem("userName", params.LoginName);
+              setTimeout(() => {
+                const UserId = this.$store.getters.UserId;
+                const UserType = this.$store.getters.UserType;
+                getAuthListByUser({
+                  UserId: UserId,
+                  UserType: UserType
+                }).then(res => {
+                  if (res.code == 0) {
+                    //res.returnData.push('account_menu');
+                    const datas = res.returnData
+                    if (datas && datas.length) {
+                      const arrs = [];
+                      for (const item of datas) {
+                        arrs.push(item.AuthIdent);
+                      }
+                      arrs.push('dashboard'); //进入首页手动添加权限
+                      setToken('userAuthList', arrs);
+                      this.$store.dispatch('user/setPowerList', arrs);
+                    } else {
+                      setToken('userAuthList', []);
+                      this.$store.dispatch('user/setPowerList', []);
+                    }
+                    this.$router.push({ path: this.redirect || "/" });
+                  } else {
+                    this.loading = false;
+                    this.$store.dispatch("user/logout");
+                    this.$message.error('当前用户获取权限失败,请联系管理员');
+                  }
+                }).catch(err => {
+                  this.loading = false;
+                  this.$store.dispatch("user/logout");
+                  this.$message.error('当前用户获取权限失败,请联系管理员');
+                })
+              }, 100);
+              this.loading = false;
+            })
+            .catch(() => {
+              this.loading = false;
+            });
         } else {
           console.log('error submit!!')
           return false

+ 176 - 0
src/views/noPower/index.vue

@@ -0,0 +1,176 @@
+<template>
+  <div class="app-wrapper">
+    <sidebar class="sidebar-container" style="width:88px" />
+    <div class="main-container">
+      <navbar />
+    </div>
+    <!--修改密码弹框-->
+    <Dialog width="496px" customClass="dataStoreInfoDialog" :flag="pwdflag">
+      <div class="dialog-public-background">
+        <div class="title">修改密码</div>
+        <div class="content">
+          <el-form :model="dataForm" :rules="dataRules" ref="dataForm" class="demo-dataForm">
+            <el-form-item label="旧密码" prop="old">
+              <el-input size="medium" placeholder="请输入旧密码" show-password v-model="dataForm.old"></el-input>
+            </el-form-item>
+            <el-form-item label="新密码" prop="new">
+              <el-input size="medium" placeholder="请输入新密码" show-password v-model="dataForm.new"></el-input>
+            </el-form-item>
+            <el-form-item label="再次确认新密码" prop="again">
+              <el-input size="medium" placeholder="请再次确认新密码" show-password v-model="dataForm.again"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div class="foot center t30">
+          <el-button size="medium" type="primary" @click="addSubmit('dataForm')" class="r24">保存</el-button>
+          <el-button size="medium" @click="resetForm('dataForm')">取消</el-button>
+        </div>
+      </div>
+    </Dialog>
+    <!--退出弹框-->
+    <Dialog :flag="outflag">
+      <div class="airportInfoDialog">
+        <div class="title">退出系统</div>
+        <div class="content">是否确认退出系统?</div>
+        <div class="foot right t30">
+          <el-button size="medium" @click="outQx" class="r24">取消</el-button>
+          <el-button size="medium" @click="outQd" type="primary">确定</el-button>
+        </div>
+      </div>
+    </Dialog>
+  </div>
+</template>
+
+<script>
+import { Navbar, Sidebar } from '@/layout/components'
+import { mapGetters } from 'vuex'
+import { EditPwd } from '@/api/apiHome'
+import Dialog from '@/layout/components/Dialog'
+export default {
+  name: 'Layout',
+  components: {
+    Navbar,
+    Sidebar,
+    Dialog
+  },
+  data () {
+    return {
+      dataForm: { //数据项表单
+        old: '',
+        new: '',
+        again: ''
+      },
+      dataRules: { //数据项表单验证
+        old: [
+          { required: true, message: '请输入旧密码', trigger: 'blur' }
+        ],
+        new: [
+          { required: true, message: '请输入新密码', trigger: 'blur' }
+        ],
+        again: [
+          { required: true, message: '请再次确认新密码', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  computed: {
+    ...mapGetters(['pwdflag', 'outflag', 'name'])
+  },
+  methods: {
+    //存储数据项-提交
+    addSubmit (formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          if (this.dataForm.new !== this.dataForm.again) {
+            this.$message.error('两次输入的密码不一致,请重新输入')
+            return false
+          }
+          this.editPwd()
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    //存储数据项-取消
+    resetForm (formName) {
+      this.$store.dispatch('app/togglePwdflag', false)
+      this.$refs[formName].resetFields()
+    },
+    //退出系统-取消
+    outQx () {
+      this.$store.dispatch('app/toggleOutflag', false)
+    },
+    //退出系统-确定
+    async outQd () {
+      sessionStorage.removeItem("userName")
+      this.$store.dispatch('app/toggleOutflag', false)
+      await this.$store.dispatch("user/logout");
+      this.$router.push(`/login?redirect=${this.$route.fullPath}`);
+    },
+    //修改密码
+    async editPwd () {
+      try {
+        const res = await EditPwd({
+          LoginName: this.name,
+          LoginPwd: this.dataForm.old,
+          LoginPwdNew: this.dataForm.again
+        })
+        if (res.code === 0) {
+          this.$message.success(res.message)
+          this.$store.dispatch('app/togglePwdflag', false)
+          setTimeout(() => {
+            this.outQd()
+          }, 2000);
+        } else {
+          this.$message.error(res.message)
+        }
+      } catch (error) {
+        console.log('出错了', error)
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "~@/styles/mixin.scss";
+@import "~@/styles/variables.scss";
+
+.app-wrapper {
+  @include clearfix;
+  position: relative;
+  height: 100%;
+  width: 100%;
+  &.mobile.openSidebar {
+    position: fixed;
+    top: 0;
+  }
+}
+.drawer-bg {
+  background: #000;
+  opacity: 0.3;
+  width: 100%;
+  top: 0;
+  height: 100%;
+  position: absolute;
+  z-index: 999;
+}
+
+.fixed-header {
+  position: fixed;
+  top: 0;
+  right: 0;
+  z-index: 9;
+  width: calc(100% - #{$sideBarWidth});
+  transition: width 0.28s;
+}
+
+.hideSidebar .fixed-header {
+  width: calc(100% - 54px);
+}
+
+.mobile .fixed-header {
+  width: 100%;
+}
+</style>

+ 2 - 2
src/views/organizationManagement/components/organizationAdd.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 11:26:07
- * @LastEditTime: 2022-02-22 13:45:21
+ * @LastEditTime: 2022-02-28 17:08:57
  * @LastEditors: Please set LastEditors
  * @Description:新增组织
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityPower.vue
@@ -12,7 +12,7 @@
     <div class="addApp-form">
       <div class="addApp-form-title flex">
         <div class="title">新增组织</div>
-        <div class="btn">
+        <div v-is="['organ_btn_save']" class="btn">
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
       </div>

+ 2 - 2
src/views/organizationManagement/components/organizationEdit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 11:26:07
- * @LastEditTime: 2022-02-22 13:43:58
+ * @LastEditTime: 2022-02-28 17:09:18
  * @LastEditors: Please set LastEditors
  * @Description:新增组织
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityPower.vue
@@ -12,7 +12,7 @@
     <div class="addApp-form">
       <div class="addApp-form-title flex">
         <div class="title">编辑组织</div>
-        <div class="btn">
+        <div v-is="['organ_btn_edit']" class="btn">
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
       </div>

+ 20 - 16
src/views/organizationManagement/components/organizationHome.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 09:27:43
- * @LastEditTime: 2022-02-16 16:19:46
+ * @LastEditTime: 2022-02-28 17:08:28
  * @LastEditors: Please set LastEditors
  * @Description: 权限管理
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\home.vue
@@ -46,19 +46,19 @@
                       <el-col :span="12">
                         <div class="flex info">
                           <div class="icon">
-                            <el-tooltip effect="dark" content="新增岗位" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_job']" effect="dark" content="新增岗位" placement="bottom">
                               <span title="新增岗位" class="cap cap-job" @click="renderJob(data)" v-if="data.OrganId != -1"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="新增职员" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_officer']" effect="dark" content="新增职员" placement="bottom">
                               <span title="新增职员" v-if="data.OrganId != -1" class="cap cap-member" @click="renderMember(data)"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="编辑组织" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_update_organ']" effect="dark" content="编辑组织" placement="bottom">
                               <span title="编辑组织" class="cap cap-edit" @click="renderEdit(data)" v-if="data.OrganId != -1"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="新增组织" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_organ']" effect="dark" content="新增组织" placement="bottom">
                               <span title="新增组织" class="cap cap-sub" @click="renderAdd(data)"></span>
                             </el-tooltip>
                           </div>
@@ -81,9 +81,11 @@
                         <span class="use" v-if="data.Status == '1'">启用</span>
                         <span class="unUse" v-if="data.Status != '1'">禁用</span>
                       </el-col>
-                      <el-col :span="12" v-if="data.OrganId != -1">
-                        <el-switch active-color="#6F81BC" v-model="data.flag" @change="renderChange(data)"></el-switch>
-                      </el-col>
+                      <template v-is="['organtree_btn_state_swatch']">
+                        <el-col :span="12" v-if="data.OrganId != -1">
+                          <el-switch active-color="#6F81BC" v-model="data.flag" @change="renderChange(data)"></el-switch>
+                        </el-col>
+                      </template>
                     </el-row>
                   </div>
                 </el-col>
@@ -96,7 +98,7 @@
               <el-empty :image-size="150" v-if="childrenData.length<1"></el-empty>
               <el-row :gutter="24">
                 <el-col :span="8" v-for="(data, index) in childrenData" :key="data.OrganId">
-                  <div class="info-close" @click="onNodeClick(data,index)">
+                  <div v-is="['organtree_btn_del_organ']" class="info-close" @click="onNodeClick(data,index)">
                     <i class="el-icon-close"></i>
                   </div>
                   <div class="itemBox" @click.stop="childrenClick(data)">
@@ -109,19 +111,19 @@
                       <el-col :span="12">
                         <div class="flex info">
                           <div class="icon">
-                            <el-tooltip effect="dark" content="新增岗位" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_job']" effect="dark" content="新增岗位" placement="bottom">
                               <span title="新增岗位" class="cap cap-job" @click.stop="renderJob(data)" v-if="data.OrganId != -1"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="新增职员" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_officer']" effect="dark" content="新增职员" placement="bottom">
                               <span title="新增职员" v-if="data.OrganId != -1" class="cap cap-member" @click.stop="renderMember(data)"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="编辑组织" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_update_organ']" effect="dark" content="编辑组织" placement="bottom">
                               <span title="编辑组织" class="cap cap-edit" @click.stop="renderEdit(data)" v-if="data.OrganId != -1"></span>
                             </el-tooltip>
 
-                            <el-tooltip effect="dark" content="新增组织" placement="bottom">
+                            <el-tooltip v-is="['organtree_btn_add_organ']" effect="dark" content="新增组织" placement="bottom">
                               <span title="新增组织" class="cap cap-sub" @click.stop="renderAdd(data)"></span>
                             </el-tooltip>
                           </div>
@@ -144,9 +146,11 @@
                         <span class="use" v-if="data.Status == '1'">启用</span>
                         <span class="unUse" v-if="data.Status != '1'">禁用</span>
                       </el-col>
-                      <el-col :span="12" v-if="data.OrganId != -1">
-                        <el-switch active-color="#6F81BC" v-model="data.flag" @click.stop.native @change="childrenRenderChange(data, index)"></el-switch>
-                      </el-col>
+                      <template v-is="['organtree_btn_state_swatch']">
+                        <el-col :span="12" v-if="data.OrganId != -1">
+                          <el-switch active-color="#6F81BC" v-model="data.flag" @click.stop.native @change="childrenRenderChange(data, index)"></el-switch>
+                        </el-col>
+                      </template>
                     </el-row>
                   </div>
                 </el-col>

+ 3 - 3
src/views/staffManagement/compontents/staffAdd.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2022-02-10 14:49:20
- * @LastEditTime: 2022-02-16 16:48:33
+ * @LastEditTime: 2022-02-28 17:14:39
  * @LastEditors: Please set LastEditors
  * @Description: 编辑职员
  * @FilePath: \Foshan4A4.0\src\views\staffManagement\compontents\staffEdit.vue
@@ -12,7 +12,7 @@
     <div class="addApp-form">
       <div class="addApp-form-title flex">
         <div class="title">新增职员</div>
-        <div class="btn">
+        <div v-is="['officer_btn_save']" class="btn">
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
       </div>
@@ -27,7 +27,7 @@
           <el-form-item style="margin-right: 16px" label="登录密码">
             <el-input placeholder="*******" disabled maxlength="32" v-model="form.loginPwd"></el-input>
           </el-form-item>
-          <el-form-item>
+          <el-form-item v-is="['officer_btn_resetpwd']">
             <el-button size="small" type="primary" @click="reSetPassWord">重置密码</el-button>
           </el-form-item>
           <el-form-item label="描述">

+ 3 - 3
src/views/staffManagement/compontents/staffEdit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2022-02-10 14:49:20
- * @LastEditTime: 2022-02-16 14:10:05
+ * @LastEditTime: 2022-02-28 17:15:15
  * @LastEditors: Please set LastEditors
  * @Description: 编辑职员
  * @FilePath: \Foshan4A4.0\src\views\staffManagement\compontents\staffEdit.vue
@@ -12,7 +12,7 @@
     <div class="addApp-form">
       <div class="addApp-form-title flex">
         <div class="title">编辑职员</div>
-        <div class="btn">
+        <div v-is="['officer_btn_edit']" class="btn">
           <el-button @click="saveBtn('form')" type="primary">保存</el-button>
         </div>
       </div>
@@ -27,7 +27,7 @@
           <el-form-item style="margin-right: 16px" label="登录密码">
             <el-input placeholder="*******" disabled maxlength="32" v-model="form.loginPwd"></el-input>
           </el-form-item>
-          <el-form-item>
+          <el-form-item v-is="['officer_btn_resetpwd']">
             <el-button size="small" type="primary" @click="reSetPassWord">重置密码</el-button>
           </el-form-item>
           <el-form-item label="描述">

+ 5 - 5
src/views/staffManagement/compontents/staffHome.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-11-29 14:37:54
- * @LastEditTime: 2022-02-15 15:55:00
+ * @LastEditTime: 2022-02-28 17:13:19
  * @LastEditors: Please set LastEditors
  * @Description: 角色管理
  * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\authorityRole.vue
@@ -11,7 +11,7 @@
     <!--状态和搜索-->
     <div style="justify-content: flex-end;" class="authority-head flex">
       <Search @getSearchData="getSearchData" @clearSearchData="clearSearchData" :isSlot="true">
-        <button @click="addRole" class="btnAdd">新增</button>
+        <button v-is="['officerlist_btn_add_officer']" @click="addRole" class="btnAdd">新增</button>
       </Search>
     </div>
     <!--列表-->
@@ -25,10 +25,10 @@
                   <div class="info-avoutr">
                     <div class="msg flex-wrap">
                       <p :title="item.OfficerName" class="name">{{item.OfficerName}}</p>
-                      <div @click="editRole(item)" class="cap cap-edit"></div>
+                      <div v-is="['officerlist_btn_edit']" @click="editRole(item)" class="cap cap-edit"></div>
                     </div>
                   </div>
-                  <div class="info-close">
+                  <div v-is="['officerlist_btn_del_officer']" class="info-close">
                     <i @click="checkRemove(item,index)" class="icon el-icon-close"></i>
                   </div>
                 </div>
@@ -45,7 +45,7 @@
                   <div class="details-msg">
                     状态:<span :class="item.Status == 1 ? 'success' : 'error'">{{item.Status == 1 ? '启用' : '停用'}}</span>
                   </div>
-                  <div class="details-info">
+                  <div v-is="['officerlist_btn_state_swatch']" class="details-info">
                     <el-switch v-model="item.isauto" @change="handleChange(item)" active-color="#6F81BC">
                     </el-switch>
                   </div>

+ 3 - 3
src/views/systemManagement/LoginPolicy/index.vue

@@ -3,14 +3,14 @@
     <div class="centerBox">
       <div class="searchBox">
         <Search :isAdd="false" @getSearchData="getSearchData" @clearSearchData="clearSearchData" :isSlot="true">
-          <el-button class="btnAdd" @click="gotoAdd">新增策略</el-button>
+          <el-button v-is="['logintac_btn_add']" class="btnAdd" @click="gotoAdd">新增策略</el-button>
         </Search>
       </div>
       <div class="content-box">
         <div v-if="tacList.length" class="contentBox">
           <div v-infinite-scroll="load" :infinite-scroll-distance="20" infinite-scroll-disabled="disabled" class="center-box">
             <el-card class="box-card" v-for="(item, index) in tacList" :key="index">
-              <button type="text" @click="open(item,index)" style="
+              <button v-is="['logintac_btn_delete']" type="text" @click="open(item,index)" style="
               float: right;
               padding: 3px 0;
               border: none;
@@ -25,7 +25,7 @@
                   <div class="header-mid">
                     <span class="title">{{ item.TacName }} </span>
                   </div>
-                  <div class="loger" @click="EditStystem(item.TacId)"></div>
+                  <div class="loger" v-is="['logintac_btn_edit']" @click="EditStystem(item.TacId)"></div>
                 </div>
               </div>
             </el-card>

+ 3 - 1
src/views/systemManagement/index.vue

@@ -4,7 +4,9 @@
       <el-form :model="FormData" :rules="rules" ref="systemForm" label-width="0" class="demo-ruleForm">
         <div class="centerTitle">
           <span class="TitleStyle">系统基础设置</span>
-          <el-button v-show="isShow" @click="save()">保存</el-button>
+          <template v-is="['system_btn_save']">
+            <el-button v-show="isShow" @click="save()">保存</el-button>
+          </template>
         </div>
         <div class="boxList">
           <span class="ListName">是否开启账号组</span>