Forráskód Böngészése

添加权限获取方式

cc12458 1 éve
szülő
commit
17302b2a7c
3 módosított fájl, 26 hozzáadás és 4 törlés
  1. 3 0
      src/store/index.js
  2. 19 0
      src/store/modules/user.js
  3. 4 4
      src/views/Index.vue

+ 3 - 0
src/store/index.js

@@ -17,6 +17,9 @@ export default new Vuex.Store({
       // console.log(state.user, '啊啊啊')
       return state.user.userInfo
     },
+    getPermissions(state) {
+      return state.user.permissions
+    },
     getPatiensInfo(state) {
       return state.user.patiensInfo
     },

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

@@ -1,9 +1,12 @@
+import {getPermissionsMenu} from '@/api/system';
+
 export default {
     namespaced: true,
     state: {
         patiensInfo: sessionStorage.getItem('patiensInfo') ? JSON.parse(sessionStorage.getItem('patiensInfo')) : null, // 病人信息
         // userInfo: sessionStorage.getItem('userinfo') ? JSON.parse(sessionStorage.getItem('userinfo')) : {}, // 当前登录用户信息
         userInfo: sessionStorage.getItem('userinfo') ? JSON.parse(sessionStorage.getItem('userinfo')) : {}, // 当前登录用户信息
+        permissions: sessionStorage.getItem('permissions') ? JSON.parse(sessionStorage.getItem('permissions')) : [], // 权限标识
         isSeeDoctor: sessionStorage.getItem('isSeeDoctor') ? sessionStorage.getItem('isSeeDoctor') : true, // 当前状态是就诊还是查看 
         preNo: sessionStorage.getItem('edit_preNo') ? sessionStorage.getItem('edit_preNo') : '', // 当前(进入)状态是修改处方还是创建处方
         outpatientDiagnosis: sessionStorage.getItem('outpatientDiagnosis') ? sessionStorage.getItem('outpatientDiagnosis') : null, // 转病例到中医诊断
@@ -19,6 +22,10 @@ export default {
             sessionStorage.setItem('userinfo', JSON.stringify(data))
             state.userInfo = data
         },
+        setPermissions(state, data) {
+            sessionStorage.setItem('permissions', JSON.stringify(data));
+            state.permissions = data;
+        },
         setIsSee(state, data) {
             sessionStorage.setItem('isSeeDoctor', data)
             state.isSeeDoctor = data
@@ -42,5 +49,17 @@ export default {
         user(state) {
             return state
         }
+    },
+    actions: {
+        async setUserinfoAndPermissions(state, data) {
+            state.commit('setUserinfo', data);
+            let permissions = [];
+            try {
+                const roles = data.roles.map(item => getPermissionsMenu({RoleID: item.roleid}).then(res => res.Data.RoleRight.split(',')).catch(() => []));
+                const results = await Promise.all(roles);
+                permissions = [...new Set(results.flat(1))];
+            } catch (e) {}
+            state.commit('setPermissions', permissions);
+        },
     }
 };

+ 4 - 4
src/views/Index.vue

@@ -25,12 +25,12 @@ export default {
     async getUserInfo() {
       let res = await getUserInfo();
       if (res.ResultCode == 0) {
-        this.setInfo(res.Data);
+        await this.setInfo(res.Data);
       }
     },
-    ...mapMutations({
-      setInfo: "user/setUserinfo"
-    })
+    ...mapActions({
+      setInfo: "user/setUserinfoAndPermissions"
+    }),
   }
 };
 </script>