Browse Source

:sparkles: 添加新特性。支持图形化数据权限

冷冷 6 years ago
parent
commit
738f00bb15

+ 1 - 1
src/api/admin/menu.js

@@ -24,7 +24,7 @@ export function GetMenu () {
   })
 }
 
-export function fetchTree (query) {
+export function fetchMenuTree (query) {
   return request({
     url: '/admin/menu/tree',
     method: 'get',

+ 43 - 17
src/const/crud/admin/role.js

@@ -41,15 +41,15 @@ export const tableOption = {
       message: '角色名称不能为空',
       trigger: 'blur'
     },
-    {
-      min: 3,
-      max: 20,
-      message: '长度在 3 到 20 个字符',
-      trigger: 'blur'
-    }
+      {
+        min: 3,
+        max: 20,
+        message: '长度在 3 到 20 个字符',
+        trigger: 'blur'
+      }
     ]
   }, {
-    width: 150,
+    width: 120,
     label: '角色标识',
     prop: 'roleCode',
     span: 24,
@@ -59,29 +59,55 @@ export const tableOption = {
       message: '角色标识不能为空',
       trigger: 'blur'
     },
-    {
-      min: 3,
-      max: 20,
-      message: '长度在 3 到 20 个字符',
-      trigger: 'blur'
-    }
+      {
+        min: 3,
+        max: 20,
+        message: '长度在 3 到 20 个字符',
+        trigger: 'blur'
+      }
     ]
   }, {
-    width: 180,
+    width: 150,
     label: '角色描述',
     prop: 'roleDesc',
     overHidden: true,
-    type: 'textarea',
-    minRows: 6,
     span: 24
   }, {
     width: 180,
+    label: '数据权限',
+    prop: 'dsType',
+    type: 'select',
+    span: 24,
+    rules: [{
+      required: true,
+      message: '请选择数据权限类型',
+      trigger: 'blur'
+    }],
+    dicData: [{
+      label: '全部',
+      value: 0
+    }, {
+      label: '自定义',
+      value: 1
+    }, {
+      label: '本级及子级',
+      value: 2
+    }, {
+      label: '本级',
+      value: 3
+    }]
+  }, {
+    prop: 'dsScope',
+    formsolt: true,
+    hide: true
+  }, {
+    width: 150,
     label: '创建时间',
     prop: 'createTime',
     type: 'datetime',
     format: 'yyyy-MM-dd HH:mm',
     valueFormat: 'yyyy-MM-dd HH:mm:ss',
-    editDisabled: true,
+    editVisdiplay: false,
     addVisdiplay: false,
     span: 24
   }]

+ 0 - 2
src/const/errorCode.js

@@ -5,8 +5,6 @@ export default {
   '404': '资源不存在',
   '417': '未绑定登录账号,请使用密码登录后绑定',
   '423': '演示环境不能操作,如需了解联系冷冷',
-  '426': '用户名不存在或密码错误',
-  '428': '验证码错误,请重新输入',
   '429': '请求过频繁',
   '479': '演示环境,没有权限操作',
   'default': '系统未知错误,请反馈给管理员'

+ 2 - 0
src/views/activiti/process.vue

@@ -139,6 +139,7 @@
             message: "操作成功",
             type: "success"
           });
+          this.getList(this.page);
         })
       },
       handleDel(row, index) {
@@ -163,6 +164,7 @@
             message: "删除成功",
             type: "success"
           });
+          this.getList(this.page);
         }).catch(function (err) {
         });
       },

+ 2 - 2
src/views/admin/menu/index.vue

@@ -152,7 +152,7 @@
 </template>
 
 <script>
-  import {addObj, delObj, fetchTree, getObj, putObj} from '@/api/admin/menu'
+  import {addObj, delObj, fetchMenuTree, getObj, putObj} from '@/api/admin/menu'
   import {mapGetters} from 'vuex'
 
   export default {
@@ -224,7 +224,7 @@
     },
     methods: {
       getList() {
-        fetchTree(this.listQuery).then(response => {
+        fetchMenuTree(this.listQuery).then(response => {
           this.treeData = response.data.data
         })
       },

+ 36 - 4
src/views/admin/role/index.vue

@@ -40,6 +40,21 @@
                      icon="el-icon-edit">添加
           </el-button>
         </template>
+        <template slot="dsScopeForm" slot-scope="scope">
+          <div v-if="form.dsType == 1">
+            <el-tree class="filter-tree"
+                     :data="dsScopeData"
+                     :check-strictly="true"
+                     node-key="id"
+                     highlight-current
+                     :props="defaultProps"
+                     ref="scopeTree"
+                     :default-checked-keys="checkedDsScope"
+                     show-checkbox>
+            </el-tree>
+          </div>
+        </template>
+
         <template slot="menu"
                   slot-scope="scope">
           <el-button size="mini"
@@ -90,17 +105,20 @@
 
 <script>
   import {addObj, delObj, fetchList, fetchRoleTree, getObj, permissionUpd, putObj} from '@/api/admin/role'
-  import {fetchTree} from '@/api/admin/menu'
-  import {mapGetters} from 'vuex'
   import {tableOption} from '@/const/crud/admin/role'
+  import {fetchTree} from '@/api/admin/dept'
+  import {fetchMenuTree} from '@/api/admin/menu'
+  import {mapGetters} from 'vuex'
 
   export default {
     name: 'table_role',
     data() {
       return {
         tableOption: tableOption,
+        dsScopeData: [],
         treeData: [],
         checkedKeys: [],
+        checkedDsScope: [],
         defaultProps: {
           label: "name",
           value: 'id'
@@ -156,6 +174,14 @@
         this.$refs.crud.rowAdd();
       },
       handleOpenBefore(show, type) {
+        fetchTree().then(response => {
+          this.dsScopeData = response.data.data;
+          if (this.form.dsScope) {
+            this.checkedDsScope = (this.form.dsScope).split(",")
+          } else {
+            this.checkedDsScope = []
+          }
+        });
         show();
       },
       handleUpdate(row, index) {
@@ -165,7 +191,7 @@
         fetchRoleTree(row.roleId)
           .then(response => {
             this.checkedKeys = response.data
-            return fetchTree()
+            return fetchMenuTree()
           })
           .then(response => {
             this.treeData = response.data.data
@@ -215,6 +241,9 @@
         })
       },
       create(row, done, loading) {
+        if (this.form.dsType === 1){
+          this.form.dsScope = this.$refs.scopeTree.getCheckedKeys().join(',')
+        }
         addObj(this.form).then(() => {
           this.getList(this.page)
           done();
@@ -229,6 +258,9 @@
         });
       },
       update(row, index, done, loading) {
+        if (this.form.dsType === 1){
+          this.form.dsScope = this.$refs.scopeTree.getCheckedKeys().join(',')
+        }
         putObj(this.form).then(() => {
           this.getList(this.page)
           done();
@@ -247,7 +279,7 @@
         this.menuIds = this.$refs.menuTree.getCheckedKeys().join(',').concat(',').concat(this.$refs.menuTree.getHalfCheckedKeys().join(','))
         permissionUpd(roleId, this.menuIds).then(() => {
           this.dialogPermissionVisible = false
-          fetchTree()
+          fetchMenuTree()
             .then(response => {
               this.form = response.data.data
               return fetchRoleTree(roleId)

+ 2 - 2
src/views/admin/user/index.vue

@@ -115,7 +115,7 @@
 <script>
   import {addObj, delObj, fetchList, getObj, putObj} from "@/api/admin/user";
   import {deptRoleList} from "@/api/admin/role";
-  import {fetchDeptTree} from "@/api/admin/dept";
+  import {fetchDeptTree,fetchTree} from "@/api/admin/dept";
   import {tableOption} from '@/const/crud/admin/user';
   import {mapGetters} from "vuex";
   import {constants} from 'fs';
@@ -200,7 +200,7 @@
         });
       },
       handleDept() {
-        fetchDeptTree().then(response => {
+        fetchTree().then(response => {
           this.treeDeptData = response.data.data;
         });
       },