Commit 4d41a8e8 by xiaohai

插件数据链条

parent 41870357
<template>
<el-dialog
title="选择人员"
:title="isSelectPerson ? '选择人员' : '选择部门'"
width="660px"
:visible.sync="dialogVisible"
>
......@@ -23,13 +23,14 @@
:expand-on-click-node="false"
icon-class="open-child"
:props="myProps"
:filter-node-method="filterNode"
@check-change="getCurrentNode"
@node-expand="nodeOpen"
@node-collapse="nodeClose"
@node-click="handleNodeClick">
<span class="custom-tree-node" :class="data.disableOpen || (data.children && !data.childrens) ? 'disable-open' : ''" slot-scope="{ node, data }">
<span class="custom-tree-node" :class="data.disableOpen ? 'disable-open' : ''" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span class="open-btn" v-if="data.children">
<span class="open-btn" v-if="data.childrens">
<el-button @click="nodeOpen(data, node)" :disabled="data.disableOpen" type="text" size="small">下级</el-button>
</span>
</span>
......@@ -44,11 +45,16 @@
</el-dialog>
</template>
<script>
import { formatTreeData } from '@/utils/index';
import { formatTreeData, deepCopy } from '@/utils/index';
import { getRequest, postRequest, postJsonRequest } from '@/api/api';
export default {
name: "vue-select-employee",
props: {},
props: {
isSelectPerson: {
type: Boolean,
default: true
}
},
data() {
return {
dialogVisible: true,
......@@ -64,31 +70,83 @@
};
},
methods: {
filterNode() {},
/**
* 获取分组架构
*/
getGroupData() {
let _this = this;
// _this.loading = true;
let params = {
isStoreGroup: 0
};
getRequest("/haoban-manage-web/dept/deptListForCompany", params)
.then(res => {
console.log(res, "groupData");
let treeData = [];
if (res.data.errorCode == 1) {
treeData = res.data.result || [];
}
let obj = formatTreeData(treeData);
this.defaultOpen = obj.defaultOpen;
this.menuData = obj.menuArr;
console.log(this.menuData);
this.getEmployee(obj.menuArr[0]);
treeData.some(group => {
if (group.level == 0 && this.isSelectPerson) {
let params = {
departmentId: group.groupId,
showChild: 1,
pageSize: 10000000,
pageNum: 1,
status: 1
};
getRequest("/haoban-manage-web/emp/findsimplepage", params)
.then(res => {
let employees = [];
if (res.data.errorCode == 1) {
employees = res.data.result.list || [];
}
this.formatGroupData(treeData, employees);
})
.catch(e => {
console.log(e, "error");
});
} else if (!this.isSelectPerson) {
this.formatGroupData(treeData);
}
return group.level == 0;
});
})
.catch(e => {
console.log(e, "error");
});
},
formatGroupData(data, employees = []) {
let copyData = data.slice(0);
let _this = this;
data.forEach(group => {
group.label = group.name || "";
group.id = group.groupId || "";
let arr = [];
copyData.forEach(cG => {
cG.label = cG.name || "";
cG.id = cG.groupId || "";
if (cG.parentId == group.groupId) {
arr.push(cG);
}
});
if (_this.isSelectPerson) employees.forEach(person => {
person.label = person.name;
person.id = person.employeeClerkId;
if (person.departmentId == group.groupId) {
arr.push(person);
}
});
if (arr.length > 0) group.childrens = arr;
if (group.level == 0) {
group.disabled = true;
group.hasLoad = true;
_this.menuData = [group];
_this.defaultOpen.push(group.id);
}
});
console.log(data);
},
/**
* 树形菜单选择
*/
......@@ -98,39 +156,37 @@
getCurrentNode(data, ifChecked) {
data.disableOpen = ifChecked;
},
nodeOpen(data, node, self) {
console.log(data, node, self);
this.loading = true;
nodeOpen(data, self) {
data.disabled = true;
this.departmentId = data.id;
if (!data.hasLoad) {
this.getEmployee(data || [], node);
data.hasLoad = true;
} else {
this.loading = false;
}
// this.departmentId = data.id;
// if (!data.hasLoad && this.isSelectPerson) {
// this.getEmployee(data || []);
// data.hasLoad = true;
// } else {
// this.loading = false;
// }
console.log(data);
},
nodeClose(data, node, self) {
console.log(data, node, self);
data.disabled = false;
},
/**
* 获取员工列表
*/
getEmployee( parent, node, showChild = 0) {
getEmployee( parent, showChild = 0) {
let _this = this;
let params = {
departmentId: parent.id,
showChild,
pageSize: 10000,
pageSize: 1000000,
pageNum: 1,
status: 1
};
getRequest("/haoban-manage-web/emp/findsimplepage", params)
.then(res => {
if (res.data.errorCode == 1) {
// childrens.concat(res.data.result.list);
this.formatEmployeeList(res.data.result.list || [], parent, node);
console.log(res.data.result.list.length);
this.formatEmployeeList(res.data.result.list || [], parent);
} else {
parent.childrens = parent.childrens.concat([]);
_this.loading = false;
......@@ -138,16 +194,15 @@
})
.catch(e => {
console.log(e, "error");
_this.loading = false;
});
},
formatEmployeeList(list = [], parent, node) {
formatEmployeeList(list = [], parent) {
list.forEach((li, idx) => {
li.id = li.employeeClerkId;
li.label = li.name;
li.level = parent.level + 1;
});
if ("childrens" in parent) {
if (!parent.isLast) {
parent.childrens = parent.childrens.concat(list);
} else {
parent.childrens = list;
......
......@@ -275,7 +275,7 @@ export function deepCopy(obj) {
* 按层级排序部门
* fixme 现在代码是将每个层级都剥离了出来,为的是适用后面可能出现的需求,但是如果后期需求无特殊更改,本代码可优化精简
*/
export function formatTreeData(list) {
export function formatTreeData(list, needChildrens) {
var arr = {
list0: {},
list1: {},
......@@ -326,6 +326,10 @@ export function formatTreeData(list) {
}
parent["children"][key2] = obj2;
parent["childrens"].push(obj2);
if (!obj2.hasOwnProperty("childrens") && needChildrens) {
obj2["childrens"] = [{label: ""}];
obj2["isLast"] = true;
}
}
}
arr.listObj = Object.assign({}, arr.list0, arr.list1, arr.list2, arr.list3, arr.list4, arr.list5, arr.list6);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment