Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
office-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
office
office-web
Commits
4d41a8e8
Commit
4d41a8e8
authored
Dec 28, 2018
by
xiaohai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
插件数据链条
parent
41870357
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
30 deletions
+89
-30
vueSelectEmployee.vue
src/components/common/vueSelectEmployee.vue
+84
-29
index.js
src/utils/index.js
+5
-1
No files found.
src/components/common/vueSelectEmployee.vue
View file @
4d41a8e8
<
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.children
s
"
>
<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
:
10000
00
,
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
paren
t
)
{
if
(
!
parent
.
isLas
t
)
{
parent
.
childrens
=
parent
.
childrens
.
concat
(
list
);
}
else
{
parent
.
childrens
=
list
;
...
...
src/utils/index.js
View file @
4d41a8e8
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment