浏览代码

结构管理功能适配

zisokal 3 年之前
父节点
当前提交
c53737cdc0
共有 7 个文件被更改,包括 69 次插入40 次删除
  1. 15 0
      app/__init__.py
  2. 18 6
      app/models/Organization.py
  3. 1 0
      app/models/Resource.py
  4. 1 2
      app/models/User.py
  5. 2 2
      app/routes/index.py
  6. 30 22
      app/routes/organization.py
  7. 2 8
      app/routes/user.py

+ 15 - 0
app/__init__.py

@@ -5,6 +5,19 @@ from config import config
 from flask_login import LoginManager
 from flask_login import LoginManager
 import flask_excel as excel
 import flask_excel as excel
 
 
+
+from flask.json import JSONEncoder
+from datetime import datetime, date
+
+class CustomJSONEncoder(JSONEncoder):
+    def default(self, obj):
+        if isinstance(obj, datetime):
+            return obj.strftime('%Y-%m-%d %H:%M:%S')
+        elif isinstance(obj, date):
+            return obj.strftime('%Y-%m-%d')
+        else:
+            return JSONEncoder.default(self, obj)
+
 loginmanager = LoginManager()
 loginmanager = LoginManager()
 loginmanager.session_protection = 'strong'
 loginmanager.session_protection = 'strong'
 loginmanager.login_view = 'base.login'
 loginmanager.login_view = 'base.login'
@@ -15,6 +28,8 @@ db = SQLAlchemy()
 
 
 def create_app(config_name):
 def create_app(config_name):
     app = Flask(__name__)
     app = Flask(__name__)
+    #  替换默认的json编码器
+    app.json_encoder = CustomJSONEncoder
     app.config.from_object(config[config_name])
     app.config.from_object(config[config_name])
     config[config_name].init_app(app)
     config[config_name].init_app(app)
 
 

+ 18 - 6
app/models/Organization.py

@@ -17,6 +17,9 @@ class Organization(db.Model, UserMixin):
     CODE = db.Column(db.String(200))
     CODE = db.Column(db.String(200))
     ICONCLS = db.Column(db.String(100))
     ICONCLS = db.Column(db.String(100))
     SEQ = db.Column(db.Integer)
     SEQ = db.Column(db.Integer)
+    LEADER = db.Column(db.String(20))
+    PHONE = db.Column(db.String(11))
+    EMAIL = db.Column(db.String(50))
 
 
     resources = db.relationship('Resource',
     resources = db.relationship('Resource',
                                 secondary=organization_resource_table,
                                 secondary=organization_resource_table,
@@ -26,17 +29,26 @@ class Organization(db.Model, UserMixin):
 
 
     parent = db.relationship('Organization', remote_side=[ID], backref='organization', uselist=False)
     parent = db.relationship('Organization', remote_side=[ID], backref='organization', uselist=False)
 
 
+    children = db.relationship('Organization')
+
     def to_json(self):
     def to_json(self):
         return {
         return {
-            'id': self.ID,
-            'createdatetime': self.CREATEDATETIME,
-            'updatedatetime': self.UPDATEDATETIME,
-            'name': self.NAME,
+            'deptId': self.ID,
+            'createTime': self.CREATEDATETIME,
+            'updateTime': self.UPDATEDATETIME,
+            'deptName': self.NAME,
             'address': self.ADDRESS,
             'address': self.ADDRESS,
             'code': self.CODE,
             'code': self.CODE,
             'iconCls': self.ICONCLS,
             'iconCls': self.ICONCLS,
-            'seq': self.SEQ,
-            'pid': self.get_pid(),
+            'orderNum': self.SEQ,
+            'parentId': self.get_pid(),
+            'leader': self.LEADER,
+            'phone': self.PHONE,
+            'email': self.EMAIL,
+            'status': '0',
+            'children': [
+                org.to_json() for org in self.children
+            ]
         }
         }
 
 
     def get_pid(self):
     def get_pid(self):

+ 1 - 0
app/models/Resource.py

@@ -69,6 +69,7 @@ class Resource(db.Model, UserMixin):
             del router['children']
             del router['children']
             del router['redirect']
             del router['redirect']
             del router['alwaysShow']
             del router['alwaysShow']
+        if not router['component']:
             router['component'] = 'Layout'
             router['component'] = 'Layout'
 
 
         return router
         return router

+ 1 - 2
app/models/User.py

@@ -33,8 +33,7 @@ class User(db.Model, UserMixin):
 
 
     roles = db.relationship('Role',
     roles = db.relationship('Role',
                             secondary=user_role_table,
                             secondary=user_role_table,
-                            backref=db.backref('users', lazy='dynamic'),
-                            lazy="dynamic")
+                            backref=db.backref('users', lazy='dynamic'),)
 
 
     def get_id(self):
     def get_id(self):
         return str(self.ID)
         return str(self.ID)

+ 2 - 2
app/routes/index.py

@@ -35,7 +35,7 @@ def icons():
 def getRouters():
 def getRouters():
     resources = Resource.query.join(ResourceType, Resource.type).filter(Resource.SYRESOURCETYPE_ID == 3).all()
     resources = Resource.query.join(ResourceType, Resource.type).filter(Resource.SYRESOURCETYPE_ID == 3).all()
     
     
-    #return jsonify({'msg': '操作成功', 'code': 200, "data": [res.to_router_json() for res in resources]})    
+    return jsonify({'msg': '操作成功', 'code': 200, "data": [res.to_router_json() for res in resources]})    
 
 
 
 
-    return jsonify({'msg': '操作成功', 'code': 200, "data":[{"name":"System","path":"/system","hidden":False,"redirect":"noRedirect","component":"Layout","alwaysShow":True,"meta":{"title":"系统管理","icon":"system","noCache":False,"link":''},"children":[{"name":"User","path":"user","hidden":False,"component":"system/user/index","meta":{"title":"用户管理","icon":"user","noCache":False,"link":''}},{"name":"Role","path":"role","hidden":False,"component":"system/role/index","meta":{"title":"角色管理","icon":"peoples","noCache":False,"link":''}},{"name":"Menu","path":"menu","hidden":False,"component":"system/menu/index","meta":{"title":"菜单管理","icon":"tree-table","noCache":False,"link":''}},{"name":"Dept","path":"dept","hidden":False,"component":"system/dept/index","meta":{"title":"部门管理","icon":"tree","noCache":False,"link":''}},{"name":"Log","path":"log","hidden":False,"redirect":"noRedirect","component":"ParentView","alwaysShow":True,"meta":{"title":"日志管理","icon":"log","noCache":False,"link":''},"children":[{"name":"Operlog","path":"operlog","hidden":False,"component":"monitor/operlog/index","meta":{"title":"操作日志","icon":"form","noCache":False,"link":''}},{"name":"Logininfor","path":"logininfor","hidden":False,"component":"monitor/logininfor/index","meta":{"title":"登录日志","icon":"logininfor","noCache":False,"link":''}}]}]}]})
+    # return jsonify({'msg': '操作成功', 'code': 200, "data":[{"name":"System","path":"/system","hidden":False,"redirect":"noRedirect","component":"Layout","alwaysShow":True,"meta":{"title":"系统管理","icon":"system","noCache":False,"link":''},"children":[{"name":"User","path":"user","hidden":False,"component":"system/user/index","meta":{"title":"用户管理","icon":"user","noCache":False,"link":''}},{"name":"Role","path":"role","hidden":False,"component":"system/role/index","meta":{"title":"角色管理","icon":"peoples","noCache":False,"link":''}},{"name":"Menu","path":"menu","hidden":False,"component":"system/menu/index","meta":{"title":"菜单管理","icon":"tree-table","noCache":False,"link":''}},{"name":"Dept","path":"dept","hidden":False,"component":"system/dept/index","meta":{"title":"部门管理","icon":"tree","noCache":False,"link":''}},{"name":"Log","path":"log","hidden":False,"redirect":"noRedirect","component":"ParentView","alwaysShow":True,"meta":{"title":"日志管理","icon":"log","noCache":False,"link":''},"children":[{"name":"Operlog","path":"operlog","hidden":False,"component":"monitor/operlog/index","meta":{"title":"操作日志","icon":"form","noCache":False,"link":''}},{"name":"Logininfor","path":"logininfor","hidden":False,"component":"monitor/logininfor/index","meta":{"title":"登录日志","icon":"logininfor","noCache":False,"link":''}}]}]}]})

+ 30 - 22
app/routes/organization.py

@@ -4,7 +4,7 @@ from ..models import Role
 from ..models import User
 from ..models import User
 from ..models import Organization
 from ..models import Organization
 from flask import g, jsonify, request
 from flask import g, jsonify, request
-from flask_login import current_user
+from flask_login import current_user, login_required
 import json
 import json
 from .. import db
 from .. import db
 from flask import render_template
 from flask import render_template
@@ -40,11 +40,19 @@ def grant_organization_resource():
 
 
     return jsonify({'success': True})    
     return jsonify({'success': True})    
 
 
-@base.route('/base/syorganization!treeGrid.action', methods=['POST'])
+@base.route('/system/dept/list', methods=['GET'])
+@login_required
 def syorganization_treeGrid():
 def syorganization_treeGrid():
     orgs = Organization.query.all()
     orgs = Organization.query.all()
 
 
-    return jsonify([org.to_json() for org in orgs])
+    return jsonify({'msg': '操作成功', 'code': 200, "data": [org.to_json() for org in orgs]})
+
+@base.route('/system/dept/list/exclude/<id>', methods=['GET'])
+@login_required
+def syorganization_dept_list_exclude(id):
+    orgs = Organization.query.filter(Organization.ID != id)
+
+    return jsonify({'msg': '操作成功', 'code': 200, "data": [org.to_json() for org in orgs]})
 
 
 @base.route('/base/syorganization!doNotNeedSecurity_comboTree.action', methods=['POST'])
 @base.route('/base/syorganization!doNotNeedSecurity_comboTree.action', methods=['POST'])
 def syorganization_comboTree():
 def syorganization_comboTree():
@@ -63,41 +71,41 @@ def get_syorganization_by_userId():
     orgs = Organization.query.join(User, Organization.users).filter(User.ID == request.form.get('id')).all()
     orgs = Organization.query.join(User, Organization.users).filter(User.ID == request.form.get('id')).all()
     return jsonify([org.to_json() for org in orgs])
     return jsonify([org.to_json() for org in orgs])
 
 
-@base.route('/base/syorganization!getById.action', methods=['POST'])
-def syorganization_getById():
-    org = Organization.query.get(request.form.get('id'))
+@base.route('/system/dept/<string:id>', methods=['GET'])
+def syorganization_getById(id):
+    org = Organization.query.get(id)
 
 
     if org:
     if org:
-        return jsonify(org.to_json())
+        return jsonify({'msg': '操作成功', 'code': 200, 'data': org.to_json()})
     else:
     else:
         return jsonify({'success': False, 'msg': 'error'})
         return jsonify({'success': False, 'msg': 'error'})
 
 
-@base.route('/base/syorganization!update.action', methods=['POST'])
+@base.route('/system/dept', methods=['PUT'])
 def syorganization_update():
 def syorganization_update():
-    org = Organization.query.get(request.form.get('data.id'))
+    org = Organization.query.get(request.json['deptId'])
 
 
     org.UPDATEDATETIME = datetime.now()
     org.UPDATEDATETIME = datetime.now()
-    org.NAME = request.form.get('data.name')
-    org.ADDRESS = request.form.get('data.address')
-    org.CODE = request.form.get('data.code')
-    org.ICONCLS = request.form.get('data.iconCls')
-    org.SEQ = request.form.get('data.seq')
-    org.parent = Organization.query.get(request.form.get('data.syorganization.id'))
+    org.NAME = request.json['deptName']
+    org.EMAIL = request.json['email']
+    org.LEADER = request.json['leader']
+    org.PHONE = request.json['phone']
+    org.SEQ = request.json['orderNum']
+    org.parent = Organization.query.get(request.json['parentId'])
 
 
     db.session.add(org)
     db.session.add(org)
 
 
     return jsonify({'success': True})
     return jsonify({'success': True})
 
 
-@base.route('/base/syorganization!save.action', methods=['POST'])
+@base.route('/system/dept', methods=['POST'])
 def syorganization_save():
 def syorganization_save():
     org = Organization()
     org = Organization()
     org.ID = str(uuid.uuid4())
     org.ID = str(uuid.uuid4())
-    org.NAME = request.form.get('data.name')
-    org.ADDRESS = request.form.get('data.address')
-    org.CODE = request.form.get('data.code')
-    org.ICONCLS = request.form.get('data.iconCls')
-    org.SEQ = request.form.get('data.seq')
-    org.parent = Organization.query.get(request.form.get('data.syorganization.id'))
+    org.NAME = request.json['deptName']
+    org.EMAIL = request.json['email']
+    org.LEADER = request.json['leader']
+    org.PHONE = request.json['phone']
+    org.SEQ = request.json['orderNum']
+    org.parent = Organization.query.get(request.json['parentId'])
 
 
     # add organization to current user
     # add organization to current user
     current_user.organizations.append(org)
     current_user.organizations.append(org)

+ 2 - 8
app/routes/user.py

@@ -217,17 +217,11 @@ def syuser_info():
             new_dict[obj.ID] = obj
             new_dict[obj.ID] = obj
 
 
     for resource in new_dict.values():
     for resource in new_dict.values():
-        res = {}
-        if resource.parent:
-            res['pid'] = resource.parent.ID 
-        res['id'] = resource.ID
-        res['text'] = resource.NAME
-        res['iconCls'] = resource.ICONCLS
-        resourceTree.append(res)
+        resourceTree.append(resource.PERMS)
 
 
     return jsonify({'msg': '登录成功~', 'code': 200, \
     return jsonify({'msg': '登录成功~', 'code': 200, \
         'user': {'userName': current_user.LOGINNAME, 'avatar': '', 'nickName': current_user.NAME, 'userId': current_user.ID}, \
         'user': {'userName': current_user.LOGINNAME, 'avatar': '', 'nickName': current_user.NAME, 'userId': current_user.ID}, \
-        'roles': [], 'permissions': resourceTree})
+        'roles': [role.NAME for role in current_user.roles], 'permissions': resourceTree})
 
 
 
 
 @base.route('/base/syuser!export.action', methods=['POST'])
 @base.route('/base/syuser!export.action', methods=['POST'])