完成角色删除和权限编辑
This commit is contained in:
@@ -70,18 +70,22 @@ def get_power_by_id(id):
|
|||||||
|
|
||||||
# 更新角色
|
# 更新角色
|
||||||
def update_power(req_json):
|
def update_power(req_json):
|
||||||
id = req_json.get("roleId")
|
id = req_json.get("powerId")
|
||||||
data = {
|
data = {
|
||||||
"code": req_json.get("roleCode"),
|
"icon": req_json.get("icon"),
|
||||||
"name": req_json.get("roleName"),
|
"open_type": req_json.get("openType"),
|
||||||
"sort": req_json.get("sort"),
|
"parent_id": req_json.get("parentId"),
|
||||||
"enable": req_json.get("enable"),
|
"code": req_json.get("powerCode"),
|
||||||
"details": req_json.get("details")
|
"name": req_json.get("powerName"),
|
||||||
|
"type": req_json.get("powerType"),
|
||||||
|
"url": req_json.get("powerUrl"),
|
||||||
|
"sort": req_json.get("sort")
|
||||||
}
|
}
|
||||||
print(data)
|
print(data)
|
||||||
role = Role.query.filter_by(id=id).update(data)
|
power = Power.query.filter_by(id=id).update(data)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return role
|
print(power)
|
||||||
|
return power
|
||||||
|
|
||||||
|
|
||||||
# 删除权限(目前没有判断父节点自动删除子节点)
|
# 删除权限(目前没有判断父节点自动删除子节点)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from marshmallow import fields
|
|||||||
from sqlalchemy import and_
|
from sqlalchemy import and_
|
||||||
|
|
||||||
from applications.models import db
|
from applications.models import db
|
||||||
from applications.models.admin import Role, Power
|
from applications.models.admin import Role, Power, User
|
||||||
|
|
||||||
ma = Marshmallow()
|
ma = Marshmallow()
|
||||||
|
|
||||||
@@ -77,13 +77,13 @@ def get_role_by_id(id):
|
|||||||
|
|
||||||
# 更新角色
|
# 更新角色
|
||||||
def update_role(req_json):
|
def update_role(req_json):
|
||||||
id =req_json.get("roleId")
|
id = req_json.get("roleId")
|
||||||
data ={
|
data = {
|
||||||
"code":req_json.get("roleCode"),
|
"code": req_json.get("roleCode"),
|
||||||
"name":req_json.get("roleName"),
|
"name": req_json.get("roleName"),
|
||||||
"sort":req_json.get("sort"),
|
"sort": req_json.get("sort"),
|
||||||
"enable":req_json.get("enable"),
|
"enable": req_json.get("enable"),
|
||||||
"details":req_json.get("details")
|
"details": req_json.get("details")
|
||||||
}
|
}
|
||||||
print(data)
|
print(data)
|
||||||
role = Role.query.filter_by(id=id).update(data)
|
role = Role.query.filter_by(id=id).update(data)
|
||||||
@@ -124,3 +124,25 @@ def update_role_power(id, power_list):
|
|||||||
for p in powers:
|
for p in powers:
|
||||||
role.power.append(p)
|
role.power.append(p)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
# 删除角色
|
||||||
|
def remove_role(id):
|
||||||
|
role = Role.query.filter_by(id=id).first()
|
||||||
|
# 删除该角色的权限
|
||||||
|
power_id_list = []
|
||||||
|
for p in role.power:
|
||||||
|
power_id_list.append(p.id)
|
||||||
|
|
||||||
|
powers = Power.query.filter(Power.id.in_(power_id_list)).all()
|
||||||
|
for p in powers:
|
||||||
|
role.power.remove(p)
|
||||||
|
user_id_list = []
|
||||||
|
for u in role.user:
|
||||||
|
user_id_list.append(u.id)
|
||||||
|
users = User.query.filter(User.id.in_(user_id_list)).all()
|
||||||
|
for u in users:
|
||||||
|
role.user.remove(u)
|
||||||
|
r = Role.query.filter_by(id=id).delete()
|
||||||
|
db.session.commit()
|
||||||
|
return r
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
from flask import Blueprint, render_template, request, jsonify
|
from flask import Blueprint, render_template, request, jsonify
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
from applications.service.admin.power import get_power_dict, select_parent, save_power, remove_power, get_power_by_id
|
from applications.service.admin.power import get_power_dict, select_parent, save_power, remove_power, get_power_by_id, \
|
||||||
|
update_power
|
||||||
|
|
||||||
|
|
||||||
admin_power = Blueprint('adminPower', __name__, url_prefix='/admin/power')
|
admin_power = Blueprint('adminPower', __name__, url_prefix='/admin/power')
|
||||||
|
|
||||||
@@ -53,17 +55,23 @@ def remove(id):
|
|||||||
else:
|
else:
|
||||||
return jsonify(success=False, msg="删除失败")
|
return jsonify(success=False, msg="删除失败")
|
||||||
|
|
||||||
|
|
||||||
# 权限编辑
|
# 权限编辑
|
||||||
@admin_power.route('/edit/<int:id>', methods=['GET', 'POST'])
|
@admin_power.route('/edit/<int:id>', methods=['GET', 'POST'])
|
||||||
def edit(id):
|
def edit(id):
|
||||||
power = get_power_by_id(id)
|
power = get_power_by_id(id)
|
||||||
return render_template('admin/power/edit.html',power=power)
|
icon = str(power.icon).split()
|
||||||
|
if len(icon) == 2:
|
||||||
|
icon = icon[1]
|
||||||
|
else:
|
||||||
|
icon = None
|
||||||
|
return render_template('admin/power/edit.html', power=power, icon=icon)
|
||||||
|
|
||||||
|
|
||||||
# 权限更新
|
# 权限更新
|
||||||
@admin_power.route('/update', methods=['PUT'])
|
@admin_power.route('/update', methods=['PUT'])
|
||||||
def update():
|
def update():
|
||||||
res = update_role(request.json)
|
res = update_power(request.json)
|
||||||
if not res:
|
if not res:
|
||||||
return jsonify(success=False, msg="更新角色失败")
|
return jsonify(success=False, msg="更新角色失败")
|
||||||
return jsonify(success=True, msg="更新角色成功")
|
return jsonify(success=True, msg="更新角色成功")
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from flask import Blueprint, render_template, request, jsonify
|
|||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
from applications.service.admin.role import get_role_data_dict, add_role, get_role_power, update_role_power, \
|
from applications.service.admin.role import get_role_data_dict, add_role, get_role_power, update_role_power, \
|
||||||
get_role_by_id, update_role
|
get_role_by_id, update_role, remove_role
|
||||||
|
|
||||||
admin_role = Blueprint('adminRole', __name__, url_prefix='/admin/role')
|
admin_role = Blueprint('adminRole', __name__, url_prefix='/admin/role')
|
||||||
|
|
||||||
@@ -98,6 +98,14 @@ def update():
|
|||||||
return jsonify(success=False, msg="更新角色失败")
|
return jsonify(success=False, msg="更新角色失败")
|
||||||
return jsonify(success=True, msg="更新角色成功")
|
return jsonify(success=True, msg="更新角色成功")
|
||||||
|
|
||||||
|
|
||||||
|
@admin_role.route('/remove/<int:id>', methods=['DELETE'])
|
||||||
|
def remove(id):
|
||||||
|
res = remove_role(id)
|
||||||
|
if not res:
|
||||||
|
return jsonify(success=False, msg="角色删除失败")
|
||||||
|
return jsonify(success=True, msg="角色删除成功")
|
||||||
|
|
||||||
# 批量删除
|
# 批量删除
|
||||||
# @admin_user.route('/batchRemove', methods=['GET', 'POST'])
|
# @admin_user.route('/batchRemove', methods=['GET', 'POST'])
|
||||||
# @login_required
|
# @login_required
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>权限编辑</title>
|
<title>权限编辑</title>
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='/admin/component/pear/css/pear.css') }}"
|
<link rel="stylesheet" href="{{ url_for('static', filename='/admin/component/pear/css/pear.css') }}"
|
||||||
@@ -39,11 +39,11 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">状态</label>
|
<label class="layui-form-label">状态</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="radio" lay-filter="powerType" {% if power.type == '0' %} checked{% endif %}
|
<input type="radio" lay-filter="powerType" {% if power.type == "0" %} checked{% endif %}
|
||||||
name="powerType" value="0" title="目录">
|
name="powerType" value="0" title="目录">
|
||||||
<input type="radio" lay-filter="powerType" {% if power.type == '1' %} checked{% endif %}
|
<input type="radio" lay-filter="powerType" {% if power.type == "1" %} checked{% endif %}
|
||||||
name="powerType" value="1" title="菜单">
|
name="powerType" value="1" title="菜单">
|
||||||
<input type="radio" lay-filter="powerType" {% if power.type == '2' %} checked{% endif %}
|
<input type="radio" lay-filter="powerType" {% if power.type == "2" %} checked{% endif %}
|
||||||
name="powerType" value="2" title="按钮">
|
name="powerType" value="2" title="按钮">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -59,8 +59,8 @@
|
|||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="openType" id="openType">
|
<select name="openType" id="openType">
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
<option value="_iframe" {% if power.type == '_iframe' %} checked{% endif %}>框架</option>
|
<option value="_iframe" {% if power.open_type == "_iframe" %} selected{% endif %}>框架</option>
|
||||||
<option value="_blank" {% if power.type == '_blank' %} checked{% endif %}>签页</option>
|
<option value="_blank" {% if power.open_type == "_blank" %} selected{% endif %}>签页</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
skin: "layui",
|
skin: "layui",
|
||||||
dataFormat: "list",
|
dataFormat: "list",
|
||||||
response: {treeId: "powerId", parentId: "parentId", title: "powerName"},
|
response: {treeId: "powerId", parentId: "parentId", title: "powerName"},
|
||||||
selectInitVal: {{ power.parent_id }}
|
selectInitVal: "{{ power.parent_id }}"
|
||||||
});
|
});
|
||||||
|
|
||||||
form.on("radio(powerType)", function (data) {
|
form.on("radio(powerType)", function (data) {
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
form.on('submit(power-save)', function (data) {
|
form.on('submit(power-save)', function (data) {
|
||||||
data.field.icon = "layui-icon " + data.field.icon;
|
data.field.icon = "layui-icon " + data.field.icon;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/system/power/update',
|
url: '/admin/power/update',
|
||||||
data: JSON.stringify(data.field),
|
data: JSON.stringify(data.field),
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
iconPicker.checkIcon("icon", [[${sysPower.icon}]]);
|
iconPicker.checkIcon("icon", "{{ icon }}");
|
||||||
|
|
||||||
window.init = function (type) {
|
window.init = function (type) {
|
||||||
if (type == '0') {
|
if (type == '0') {
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.init([[${sysPower.powerType}]]);
|
window.init("{{ power.type}}");
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -184,7 +184,7 @@
|
|||||||
layer.close(index);
|
layer.close(index);
|
||||||
let loading = layer.load();
|
let loading = layer.load();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: MODULE_PATH + "remove/" + obj.data['roleId'],
|
url: MODULE_PATH + "remove/" + obj.data['id'],
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
type: 'delete',
|
type: 'delete',
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.batchRemove = function (obj) {
|
window.batchRemove = function (obj) {
|
||||||
let ids = common.checkField(obj,'roleId');
|
let ids = common.checkField(obj,'id');
|
||||||
if (common.isEmpty(ids)) {
|
if (common.isEmpty(ids)) {
|
||||||
popup.warning("未选中数据");
|
popup.warning("未选中数据");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user