Commit 4d41a8e8 by xiaohai

插件数据链条

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