diff --git a/pear_admin/apis/__init__.py b/pear_admin/apis/__init__.py index 40f2769..6fa0bde 100644 --- a/pear_admin/apis/__init__.py +++ b/pear_admin/apis/__init__.py @@ -1,5 +1,6 @@ from flask import Blueprint, Flask +from .department import department_api from .passport import passport_api from .rights import rights_api from .role import role_api @@ -11,5 +12,6 @@ def register_apis(app: Flask): apis.register_blueprint(passport_api) apis.register_blueprint(rights_api) apis.register_blueprint(role_api) + apis.register_blueprint(department_api) app.register_blueprint(apis) diff --git a/pear_admin/apis/department.py b/pear_admin/apis/department.py new file mode 100644 index 0000000..e1a9064 --- /dev/null +++ b/pear_admin/apis/department.py @@ -0,0 +1,68 @@ +from flask import Blueprint, request +from flask_sqlalchemy.pagination import Pagination + +from pear_admin.extensions import db +from pear_admin.orms import DepartmentORM + +department_api = Blueprint("department", __name__) + + +@department_api.get("/department") +def department_list(): + page = request.args.get("page", default=1, type=int) + per_page = request.args.get("limit", default=10, type=int) + + _type = request.args.get("type") + ret = [] + if _type == "tree": + dept_obj: DepartmentORM = DepartmentORM.query.get(1) + for child in dept_obj.children: + child_data = child.json() + child_data["children"] = [] + if child.children: + child_data["isParent"] = True + for son in child.children: + son_data = son.json() + # son_data["isParent"] = True + child_data["children"].append(son_data) + ret.append(child_data) + return {"code": 0, "message": "请求权限数据成功", "data": ret} + q = db.select(DepartmentORM) + + pages: Pagination = db.paginate(q, page=page, per_page=per_page) + + return { + "code": 0, + "message": "获取部门数据成功", + "data": [item.json() for item in pages.items], + "count": pages.total, + } + + +@department_api.post("/department") +def create_department(): + data = request.get_json() + if data["id"]: + del data["id"] + department = DepartmentORM(**data) + department.save() + return {"code": 0, "message": "新增部门成功"} + + +@department_api.put("/department/") +def change_department(rid): + data = request.get_json() + del data["id"] + + department_obj = DepartmentORM.query.get(rid) + for key, value in data.items(): + setattr(department_obj, key, value) + department_obj.save() + return {"code": 0, "message": "修改部门成功"} + + +@department_api.delete("/department/") +def del_department(rid): + department_obj = DepartmentORM.query.get(rid) + department_obj.delete() + return {"code": 0, "message": "删除删除成功"} diff --git a/pear_admin/orms/department.py b/pear_admin/orms/department.py index 838ba41..e3b9237 100644 --- a/pear_admin/orms/department.py +++ b/pear_admin/orms/department.py @@ -8,17 +8,15 @@ class DepartmentORM(BaseORM): id = db.Column(db.Integer, primary_key=True, comment="部门ID") name = db.Column(db.String(50), comment="部门名称") leader = db.Column(db.String(50), comment="负责人") - phone = db.Column(db.String(20), comment="联系方式") - email = db.Column(db.String(50), comment="邮箱") - enable = db.Column(db.Boolean, comment="状态(1开启,0关闭)") - comment = db.Column(db.Text, comment="备注") - address = db.Column(db.String(255), comment="详细地址") - sort = db.Column(db.Integer, comment="排序") + enable = db.Column(db.Boolean, comment="状态(1开启,0关闭)", default=True) users = db.relationship("UserORM", backref="department") - pid = db.Column(db.Integer, db.ForeignKey("ums_department.id")) - parent = db.relationship("DepartmentORM", remote_side=[id], backref="child") # 自关联 + pid = db.Column(db.Integer, db.ForeignKey("ums_department.id"), default=1) + parent = db.relationship( + "DepartmentORM", back_populates="children", remote_side=[id] + ) # 自关联 + children = db.relationship("DepartmentORM", back_populates="parent") def json(self): return { @@ -26,8 +24,5 @@ class DepartmentORM(BaseORM): "pid": self.pid, "name": self.name, "leader": self.leader, - "email": self.email, - "phone": self.phone, - "sort": self.sort, "enable": self.enable, } diff --git a/pear_admin/views/views.py b/pear_admin/views/views.py index d23e684..4ecf759 100644 --- a/pear_admin/views/views.py +++ b/pear_admin/views/views.py @@ -11,3 +11,8 @@ def rights_view(): @views_bp.get("/role") def role_view(): return render_template("views/role/index.html") + + +@views_bp.get("/department") +def department_view(): + return render_template("views/department/index.html") diff --git a/static/data/ums_department.csv b/static/data/ums_department.csv index f1d8c87..5c878fa 100644 --- a/static/data/ums_department.csv +++ b/static/data/ums_department.csv @@ -1,10 +1,10 @@ -id,name,leader,phone,email,enable,comment,address,sort,pid -1,集团总部,集团负责人,12312345679,123qq.com,,,这是集团总部,1,0 -2,济南分公司,就眠仪式,12312345678,1234qq.com,,,这是济南,2,1 -3,唐山分公司,mkg,12312345678,123@qq.com,,,这是唐山,4,1 -4,济南分公司-开发部,就眠仪式,12312345678,123@qq.com,,,测试,5,4 -5,唐山分公司-测试部,mkg,12312345678,123@qq.com,,,测试部,6,5 -6,长沙分公司,正心全栈编程,18675867241,pyxxp@qq.com,,,湖南省长沙市望城区,6,1 -7,长沙分公司-VIP服务中心,正心全栈编程,18675867241,pyxxp@qq.com,,,,6,6 -8,长沙分公司-招生中心,正心全栈编程,18675867241,pyxxp@qq.com,,,,6,6 -9,长沙分公司-运营中心,正心全栈编程,18675867241,pyxxp@qq.com,,,,6,6 \ No newline at end of file +id,name,leader,enable,pid +1,集团总部,集团负责人,,0 +2,济南分公司,就眠仪式,,1 +3,唐山分公司,mkg,,1 +4,济南分公司-开发部,就眠仪式,,4 +5,唐山分公司-测试部,mkg,,5 +6,长沙分公司,正心全栈编程,,1 +7,长沙分公司-VIP服务中心,正心全栈编程,,6 +8,长沙分公司-招生中心,正心全栈编程,,6 +9,长沙分公司-运营中心,正心全栈编程,,6 \ No newline at end of file diff --git a/templates/views/department/index.html b/templates/views/department/index.html new file mode 100644 index 0000000..9b64d50 --- /dev/null +++ b/templates/views/department/index.html @@ -0,0 +1,243 @@ + + + + + 部门管理 + + + + + +
+
+
+
+
+
+
+ + + + + +