流程相关-分公司项目部新增
This commit is contained in:
parent
93933e6ebe
commit
c19542f77a
|
|
@ -18,3 +18,11 @@ export function proDeptRole(data) {
|
|||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 查询详细
|
||||
export function getInfoById(orgId,deptRoleId) {
|
||||
return request({
|
||||
url: '/system/proDeptRole/getRoleInfoById/' + orgId+'/'+deptRoleId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
|
||||
<!-- 添加或修改参数配置对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" label-width="80px">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="部门名称" prop="orgName">
|
||||
<el-input v-model="form.orgName" :disabled="true"/>
|
||||
</el-form-item>
|
||||
|
|
@ -97,20 +97,11 @@
|
|||
<el-input v-model="form.deptRoleName" :disabled="true"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="人员" required>
|
||||
<el-tree
|
||||
class="tree-border"
|
||||
:data="staffOptions"
|
||||
show-checkbox
|
||||
ref="staff"
|
||||
node-key="uniqueId"
|
||||
empty-text="加载中,请稍候"
|
||||
:props="defaultProps"
|
||||
default-expand-all
|
||||
:default-checked-keys="defaultCheckedKeys"
|
||||
@check-change="handleCheckChange"
|
||||
></el-tree>
|
||||
<el-form-item label="人员:" prop="checkList">
|
||||
<treeselect v-model="form.checkList" :multiple="multiple" :flat="true" :options="personOptions"
|
||||
:normalizer="normalizer" placeholder="选择部门负责人" @input="handleSelect"/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
|
|
@ -121,12 +112,17 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import {getRoleUserList, proDeptRole} from "@/api/process/roles";
|
||||
import {getRoleUserList, proDeptRole,getInfoById} from "@/api/process/roles";
|
||||
import {treeselect as staffTreeselect, roleStaffTreeselect} from "@/api/process/tree";
|
||||
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
import {getAttGroup} from "@/api/setting/rules";
|
||||
|
||||
|
||||
export default {
|
||||
name: "Roles",
|
||||
components: {Treeselect},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
|
@ -163,11 +159,18 @@ export default {
|
|||
uniqueIdToIdMap: {},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
checkList: [
|
||||
{ required: true, message: "请选择人员", trigger: "change" },
|
||||
],
|
||||
},
|
||||
defaultProps: {
|
||||
children: "children",
|
||||
label: "name",
|
||||
disabled: "disabled" // 添加 disabled 属性
|
||||
},
|
||||
personOptions: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
|
@ -214,6 +217,7 @@ export default {
|
|||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
this.form.checkList=[];
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
|
|
@ -229,7 +233,7 @@ export default {
|
|||
reviewerTime: undefined,
|
||||
reviewerUserId: undefined,
|
||||
roleType: undefined,
|
||||
staffOptions: []
|
||||
checkList: [],
|
||||
};
|
||||
this.defaultCheckedKeys = []; // 重置默认选中的节点
|
||||
this.resetForm("form");
|
||||
|
|
@ -247,98 +251,119 @@ export default {
|
|||
/** 分配人员按钮操作 */
|
||||
handleAllocation(row) {
|
||||
this.reset();
|
||||
const orgId = row.orgId;
|
||||
const deptRoleId = row.deptRoleId
|
||||
getInfoById(orgId,deptRoleId).then(response => {
|
||||
this.form = response.data;
|
||||
})
|
||||
this.form.checkList=[];
|
||||
|
||||
this.getStaffTreeselect(row);
|
||||
this.form = row;
|
||||
this.multipleJudge(row);
|
||||
this.open = true;
|
||||
this.title = "分配人员";
|
||||
|
||||
},
|
||||
|
||||
/** 人员变更按钮操作 */
|
||||
handleChange(row) {
|
||||
async handleChange(row) {
|
||||
this.reset();
|
||||
this.form.checkList=[];
|
||||
this.multipleJudge(row);
|
||||
this.getStaffTreeselect(row);
|
||||
this.form = row;
|
||||
const orgId = row.orgId;
|
||||
const deptRoleId = row.deptRoleId
|
||||
await getInfoById(orgId,deptRoleId).then(response => {
|
||||
this.form = response.data;
|
||||
|
||||
})
|
||||
if(this.multiple){
|
||||
if (this.form.userId) {
|
||||
this.form.checkList = this.form.userId.split(",").map(id => id.trim());
|
||||
}
|
||||
}else {
|
||||
this.form.checkList=this.form.userId;
|
||||
}
|
||||
this.open = true;
|
||||
this.title = "分配人员";
|
||||
},
|
||||
|
||||
multipleJudge(row){
|
||||
if(row.deptRoleId ==1 || row.deptRoleId ==2 || row.deptRoleId ==3|| row.deptRoleId ==4){
|
||||
this.multiple = false;
|
||||
}else{
|
||||
this.multiple = true;
|
||||
}
|
||||
},
|
||||
|
||||
/** 查询员工树结构 */
|
||||
getStaffTreeselect(data) {
|
||||
staffTreeselect(data).then(response => {
|
||||
this.staffOptions = response.data;
|
||||
this.processData(this.staffOptions);
|
||||
this.setDefaultCheckedKeys();
|
||||
this.personOptions = this.changeData(response.data);
|
||||
});
|
||||
},
|
||||
|
||||
/** 处理数据,为每个节点生成唯一标识符并建立映射 */
|
||||
processData(nodes, parentId = '') {
|
||||
nodes.forEach(node => {
|
||||
node.uniqueId = `${parentId ? parentId + '-' : ''}${node.id}`; // 生成唯一标识符
|
||||
this.uniqueIdToIdMap[node.uniqueId] = node.id; // 建立 uniqueId 到 id 的映射
|
||||
if (node.children && node.children.length > 0) {
|
||||
this.processData(node.children, node.uniqueId); // 递归处理子节点
|
||||
setCheck(data) { // 存在子集就不让禁止,父级让禁止
|
||||
data.map(item => {
|
||||
if (item.isCheck == 1) {
|
||||
this.form.checkList.push(item.id)
|
||||
}
|
||||
});
|
||||
console.log("this.uniqueIdToIdMap",this.uniqueIdToIdMap)
|
||||
item.children && item.children.length > 0 && this.setCheck(item.children);
|
||||
})
|
||||
},
|
||||
|
||||
/** 设置默认选中的节点 */
|
||||
setDefaultCheckedKeys() {
|
||||
this.defaultCheckedKeys = this.getCheckedKeys(this.staffOptions);
|
||||
|
||||
//数据操作
|
||||
changeData(data) { // 存在子集就不让禁止,父级让禁止
|
||||
if (!Array.isArray(data)) {
|
||||
console.error('Expected an array, but received:', data);
|
||||
return [];
|
||||
}
|
||||
data.map(item => {
|
||||
if (item.disabled) {
|
||||
if (item.isCheck == 0) {
|
||||
item.isChecked = false
|
||||
item.isDisabled = true
|
||||
} else {
|
||||
item.isChecked = true
|
||||
item.isDisabled = false
|
||||
}
|
||||
} else if (!item.disabled) {
|
||||
item.isChecked = false
|
||||
item.isDisabled = false
|
||||
}
|
||||
item.children && item.children.length > 0 && this.changeData(item.children);
|
||||
})
|
||||
return data;
|
||||
},
|
||||
|
||||
/** 递归获取默认选中的节点 id */
|
||||
getCheckedKeys(nodes) {
|
||||
const keys = new Set();
|
||||
const recursiveCheck = (nodes) => {
|
||||
nodes.forEach(node => {
|
||||
if (node.isCheck === 1) {
|
||||
keys.add(node.uniqueId);
|
||||
}
|
||||
if (node.children && node.children.length > 0) {
|
||||
recursiveCheck(node.children);
|
||||
}
|
||||
});
|
||||
/** 转换部门数据结构 */
|
||||
normalizer(node) {
|
||||
if (node.children && !node.children.length) {
|
||||
delete node.children;
|
||||
}
|
||||
return {
|
||||
id: node.id,
|
||||
label: node.name,
|
||||
// isDisabled: node.disabled,
|
||||
children: node.children
|
||||
};
|
||||
recursiveCheck(nodes);
|
||||
return Array.from(keys);
|
||||
},
|
||||
|
||||
// 如果节点被取消选中
|
||||
handleCheckChange(data, checked, indeterminate) {
|
||||
if (!checked) { // 如果节点被取消选中
|
||||
const idToUncheck = data.id;
|
||||
this.$nextTick(() => {
|
||||
this.uncheckAllWithSameId(idToUncheck);
|
||||
});
|
||||
}
|
||||
},
|
||||
// 第三个参数防止递归影响父节点和子节点的状态
|
||||
uncheckAllWithSameId(id) {
|
||||
const tree = this.$refs.staff;
|
||||
if (tree && tree.store) {
|
||||
const allNodes = tree.store._getAllNodes();
|
||||
allNodes.forEach(node => {
|
||||
if (this.uniqueIdToIdMap[node.key] === id) {
|
||||
tree.setChecked(node, false, false);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.error('Tree or store is not initialized yet.');
|
||||
}
|
||||
async handleSelect(value, instanceId) {
|
||||
console.log("value",value)
|
||||
console.log("instanceId",instanceId)
|
||||
this.form.checkList=value;
|
||||
// 在这里处理选择事件
|
||||
},
|
||||
|
||||
/** 提交按钮 */
|
||||
submitForm: function () {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
const checkedKeys = this.getStaffAllCheckedKeys();
|
||||
if (checkedKeys.length === 0) {
|
||||
this.$message.error("请至少选择一个人员");
|
||||
return;
|
||||
if(this.multiple){
|
||||
this.form.userId = this.form.checkList.join(',');
|
||||
}else{
|
||||
this.form.userId = this.form.checkList;
|
||||
}
|
||||
this.form.userId = checkedKeys.join(",");
|
||||
proDeptRole(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
|
|
@ -347,19 +372,6 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 所有菜单节点数据
|
||||
getStaffAllCheckedKeys() {
|
||||
// 目前被选中的菜单节点
|
||||
let checkedKeys = this.$refs.staff.getCheckedKeys();
|
||||
console.log("checkedKeys,",checkedKeys)
|
||||
const checkedIds = checkedKeys.map(uniqueId => this.uniqueIdToIdMap[uniqueId]);
|
||||
// 半选中的菜单节点
|
||||
// let halfCheckedKeys = this.$refs.staff.getHalfCheckedKeys();
|
||||
// checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
|
||||
// checkedKeys.unshift.apply(checkedKeys);
|
||||
return checkedIds;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@
|
|||
|
||||
<script>
|
||||
import {getRoleCheckList, userDistributionCheck} from "@/api/process/rolesExamine";
|
||||
import {getInfoById} from "@/api/process/roles";
|
||||
|
||||
export default {
|
||||
name: "RolesExamine",
|
||||
|
|
@ -187,9 +188,15 @@
|
|||
this.handleQuery();
|
||||
},
|
||||
/** 审核人员按钮操作 */
|
||||
handleAllocation(row) {
|
||||
async handleAllocation(row) {
|
||||
this.reset();
|
||||
this.form = row;
|
||||
const orgId = row.orgId;
|
||||
const deptRoleId = row.deptRoleId
|
||||
console.log(row)
|
||||
// this.form = row;
|
||||
await getInfoById(orgId,deptRoleId).then(response => {
|
||||
this.form = response.data;
|
||||
})
|
||||
this.open = true;
|
||||
this.title = "项目部角色配置";
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue