|
@@ -183,6 +183,21 @@
|
|
|
:props="{ label: 'label', children: 'children' }"
|
|
|
></el-tree>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="审核流程">
|
|
|
+ <el-checkbox v-model="flowExpand" @change="handleCheckedTreeExpand($event, 'flow')">展开/折叠</el-checkbox>
|
|
|
+ <el-checkbox v-model="flowNodeAll" @change="handleCheckedTreeNodeAll($event, 'flow')">全选/全不选</el-checkbox>
|
|
|
+ <el-checkbox v-model="form.flowCheckStrictly" @change="handleCheckedTreeConnect($event, 'flow')">父子联动</el-checkbox>
|
|
|
+ <el-tree
|
|
|
+ class="tree-border"
|
|
|
+ :data="flowOptions"
|
|
|
+ show-checkbox
|
|
|
+ ref="flowRef"
|
|
|
+ node-key="stepCode"
|
|
|
+ :check-strictly="!form.flowCheckStrictly"
|
|
|
+ empty-text="加载中,请稍候"
|
|
|
+ :props="{ label: 'stepValue', children: 'children' }"
|
|
|
+ ></el-tree>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="备注">
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
|
|
|
</el-form-item>
|
|
@@ -244,7 +259,7 @@
|
|
|
<script setup name="Role">
|
|
|
import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole, deptTreeSelect } from "@/api/system/role";
|
|
|
import { roleMenuTreeselect, treeselect as menuTreeselect } from "@/api/system/menu";
|
|
|
-
|
|
|
+import { getAuditflowTree } from "@/api/rsmonitoring/dataEntry";
|
|
|
const router = useRouter();
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
|
|
@@ -268,7 +283,10 @@ const deptOptions = ref([]);
|
|
|
const openDataScope = ref(false);
|
|
|
const menuRef = ref(null);
|
|
|
const deptRef = ref(null);
|
|
|
-
|
|
|
+const flowRef = ref(null);
|
|
|
+const flowExpand = ref(false);
|
|
|
+const flowNodeAll = ref(false);
|
|
|
+const flowOptions = ref([]);
|
|
|
/** 数据范围选项*/
|
|
|
const dataScopeOptions = ref([
|
|
|
{ value: "1", label: "全部数据权限" },
|
|
@@ -381,6 +399,12 @@ function getMenuTreeselect() {
|
|
|
menuOptions.value = response.data;
|
|
|
});
|
|
|
}
|
|
|
+function getAuditTreeselect() {
|
|
|
+ getAuditflowTree().then(response => {
|
|
|
+ flowOptions.value = response.data;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/** 所有部门节点数据 */
|
|
|
function getDeptAllCheckedKeys() {
|
|
@@ -397,10 +421,15 @@ function reset() {
|
|
|
if (menuRef.value != undefined) {
|
|
|
menuRef.value.setCheckedKeys([]);
|
|
|
}
|
|
|
+ if (flowRef.value != undefined) {
|
|
|
+ flowRef.value.setCheckedKeys([]);
|
|
|
+ }
|
|
|
menuExpand.value = false;
|
|
|
menuNodeAll.value = false;
|
|
|
deptExpand.value = true;
|
|
|
deptNodeAll.value = false;
|
|
|
+ flowExpand.value = false;
|
|
|
+ flowNodeAll.value = false;
|
|
|
form.value = {
|
|
|
roleId: undefined,
|
|
|
roleName: undefined,
|
|
@@ -409,8 +438,10 @@ function reset() {
|
|
|
status: "0",
|
|
|
menuIds: [],
|
|
|
deptIds: [],
|
|
|
+ auditFlowIds: [],
|
|
|
menuCheckStrictly: true,
|
|
|
deptCheckStrictly: true,
|
|
|
+ flowCheckStrictly: true,
|
|
|
remark: undefined
|
|
|
};
|
|
|
proxy.resetForm("roleRef");
|
|
@@ -420,6 +451,7 @@ function reset() {
|
|
|
function handleAdd() {
|
|
|
reset();
|
|
|
getMenuTreeselect();
|
|
|
+ getAuditTreeselect();
|
|
|
open.value = true;
|
|
|
title.value = "添加角色";
|
|
|
}
|
|
@@ -427,6 +459,7 @@ function handleAdd() {
|
|
|
/** 修改角色 */
|
|
|
function handleUpdate(row) {
|
|
|
reset();
|
|
|
+ getAuditTreeselect()
|
|
|
const roleId = row.roleId || ids.value;
|
|
|
const roleMenu = getRoleMenuTreeselect(roleId);
|
|
|
getRole(roleId).then(response => {
|
|
@@ -441,6 +474,11 @@ function handleUpdate(row) {
|
|
|
menuRef.value.setChecked(v, true, false);
|
|
|
});
|
|
|
});
|
|
|
+ res.auditflowKeys.forEach((v) => {
|
|
|
+ nextTick(() => {
|
|
|
+ flowRef.value.setChecked(v, true, false);
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
});
|
|
@@ -475,6 +513,11 @@ function handleCheckedTreeExpand(value, type) {
|
|
|
for (let i = 0; i < treeList.length; i++) {
|
|
|
deptRef.value.store.nodesMap[treeList[i].id].expanded = value;
|
|
|
}
|
|
|
+ } else if (type == "flow") {
|
|
|
+ let treeList = flowOptions.value;
|
|
|
+ for (let i = 0; i < treeList.length; i++) {
|
|
|
+ flowRef.value.store.nodesMap[treeList[i].id].expanded = value;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -484,6 +527,8 @@ function handleCheckedTreeNodeAll(value, type) {
|
|
|
menuRef.value.setCheckedNodes(value ? menuOptions.value : []);
|
|
|
} else if (type == "dept") {
|
|
|
deptRef.value.setCheckedNodes(value ? deptOptions.value : []);
|
|
|
+ } else if (type == "flow") {
|
|
|
+ deptRef.value.setCheckedNodes(value ? flowOptions.value : []);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -493,6 +538,8 @@ function handleCheckedTreeConnect(value, type) {
|
|
|
form.value.menuCheckStrictly = value ? true : false;
|
|
|
} else if (type == "dept") {
|
|
|
form.value.deptCheckStrictly = value ? true : false;
|
|
|
+ } else if (type == "flow") {
|
|
|
+ form.value.flowCheckStrictly = value ? true : false;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -505,6 +552,14 @@ function getMenuAllCheckedKeys() {
|
|
|
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
|
|
|
return checkedKeys;
|
|
|
}
|
|
|
+function getflowAllCheckedKeys() {
|
|
|
+ // 目前被选中的菜单节点
|
|
|
+ let checkedKeys = flowRef.value.getCheckedKeys();
|
|
|
+ // 半选中的菜单节点
|
|
|
+ let halfCheckedKeys = flowRef.value.getHalfCheckedKeys();
|
|
|
+ checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
|
|
|
+ return checkedKeys;
|
|
|
+}
|
|
|
|
|
|
/** 提交按钮 */
|
|
|
function submitForm() {
|
|
@@ -512,6 +567,7 @@ function submitForm() {
|
|
|
if (valid) {
|
|
|
if (form.value.roleId != undefined) {
|
|
|
form.value.menuIds = getMenuAllCheckedKeys();
|
|
|
+ form.value.auditFlowIds = getflowAllCheckedKeys();
|
|
|
updateRole(form.value).then(response => {
|
|
|
proxy.$modal.msgSuccess("修改成功");
|
|
|
open.value = false;
|
|
@@ -519,6 +575,7 @@ function submitForm() {
|
|
|
});
|
|
|
} else {
|
|
|
form.value.menuIds = getMenuAllCheckedKeys();
|
|
|
+ form.value.auditFlowIds = getflowAllCheckedKeys();
|
|
|
addRole(form.value).then(response => {
|
|
|
proxy.$modal.msgSuccess("新增成功");
|
|
|
open.value = false;
|