浏览代码

role update

zhujf21st 3 年之前
父节点
当前提交
9e5812b834
共有 3 个文件被更改,包括 53 次插入4 次删除
  1. 7 0
      app/models/Resource.py
  2. 15 0
      app/routes/resource.py
  3. 31 4
      app/routes/role.py

+ 7 - 0
app/models/Resource.py

@@ -55,6 +55,13 @@ class Resource(db.Model, UserMixin):
             'menuType': 'F' if self.SYRESOURCETYPE_ID == '1' else 'C' if self.SYRESOURCETYPE_ID == '0' else 'M'
         }
 
+    def to_tree_select_json(self):
+        return {
+            'id': self.ID,
+            'label': self.NAME,
+            'children': [res.to_tree_select_json() for res in self.children]
+        }
+
     def to_router_json(self):
         router = {
             'name': self.PATH.capitalize(),

+ 15 - 0
app/routes/resource.py

@@ -122,3 +122,18 @@ def syresource_delete(id):
 
     return jsonify({'code': 200, 'msg': '操作成功'})
 
+@base.route('/system/menu/treeselect', methods=['GET'])
+def syresource_tree_select():
+    resList = Resource.query.filter(Resource.SYRESOURCE_ID == None)
+
+    return jsonify({'msg': '操作成功', 'code': 200, "data": [res.to_tree_select_json() for res in resList]})
+
+@base.route('/system/menu/roleMenuTreeselect/<roleId>', methods=['GET'])
+def syresource_role_tree_select(roleId):
+    role = Role.query.get(roleId)
+    resList = Resource.query.filter(Resource.SYRESOURCE_ID == None)
+
+    return jsonify({'msg': '操作成功', 'code': 200, \
+        "menus": [res.to_tree_select_json() for res in resList], \
+        "checkedKeys": [res.ID for res in role.resources]}) 
+

+ 31 - 4
app/routes/role.py

@@ -1,4 +1,6 @@
 # coding:utf-8
+import imp
+from operator import or_
 from ..base import base
 from ..models import Role, Resource, User
 from flask import render_template, request
@@ -9,6 +11,7 @@ from .. import  db
 import uuid
 from sqlalchemy import desc
 from sqlalchemy import asc
+from sqlalchemy import or_
 
 @base.route('/securityJsp/base/Syrole.jsp', methods=['GET'])
 def index_role():
@@ -94,7 +97,7 @@ def syrole_update():
 
     db.session.add(role)
 
-    return jsonify({'success': True})
+    return jsonify({'code': 200})
 
 @base.route('/system/role', methods=['POST'])
 def syrole_save():
@@ -102,15 +105,19 @@ def syrole_save():
 
     role.ID = str(uuid.uuid4())
     role.NAME = request.json['roleName']
-    role.DESCRIPTION = request.json['remark']
+    if 'remark' in request.json: role.DESCRIPTION = request.json['remark']
     role.SEQ = request.json['roleSort']
 
+    if 'menuIds' in request.json:
+        res_list = [Resource.query.get(menuId) for menuId in request.json['menuIds']]
+        role.resources = res_list
+        
     # add current use to new role
     current_user.roles.append(role)
 
     db.session.add(role)
 
-    return jsonify({'success': True})
+    return jsonify({'code': 200})
 
 @base.route('/system/role/<string:id>', methods=['DELETE'])
 def syrole_delete(id):
@@ -118,4 +125,24 @@ def syrole_delete(id):
     if role:
         db.session.delete(role)
 
-    return jsonify({'success': True})
+    return jsonify({'code': 200})
+
+@base.route('/system/role/authUser/allocatedList', methods=['GET'])
+def allocatedList():
+    page = request.args.get('pageNum', 1, type=int)
+    rows = request.args.get('pageSize', 10, type=int)
+    pagination = User.query.join(Role, User.roles).filter(Role.ID == request.args['roleId']).paginate(
+        page, per_page=rows, error_out=False)
+    users = pagination.items
+
+    return jsonify({'rows': [user.to_json() for user in users], 'total': pagination.total})
+
+@base.route('/system/role/authUser/unallocatedList', methods=['GET'])
+def unallocatedList():
+    page = request.args.get('pageNum', 1, type=int)
+    rows = request.args.get('pageNum', 10, type=int)
+    pagination = User.query.join(Role, User.roles).filter(or_(Role.ID != request.args['roleId'], Role.ID == None)).paginate(
+        page, per_page=rows, error_out=False)
+    users = pagination.items
+
+    return jsonify({'rows': [user.to_json() for user in users], 'total': pagination.total})