流程相关-分公司项目部新增

This commit is contained in:
lSun 2024-10-15 19:29:14 +08:00
parent 93933e6ebe
commit c19542f77a
3 changed files with 119 additions and 92 deletions

View File

@ -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'
})
}

View File

@ -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>

View File

@ -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 = "项目部角色配置";
},