Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
306a9e02
Commit
306a9e02
authored
Jul 29, 2021
by
zhangleyuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:处理学员的删除
parent
cd5f3152
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
452 additions
and
156 deletions
+452
-156
src/data-source/store/request-apis.ts
+11
-4
src/domains/store-domain/constants.ts
+3
-2
src/domains/store-domain/storeService.ts
+12
-2
src/modules/college-manage/EmployeeManage.tsx
+1
-0
src/modules/college-manage/components/DepartMentTabCon.jsx
+274
-124
src/modules/college-manage/components/DepartMentTabCon.less
+7
-0
src/modules/college-manage/components/LeftStructureTree.jsx
+134
-15
src/modules/college-manage/components/MemberTree.jsx
+2
-2
src/modules/college-manage/modal/NewChooseMembersModal.jsx
+8
-7
No files found.
src/data-source/store/request-apis.ts
View file @
306a9e02
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: wufan
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @Date: 2020-11-25 18:25:02
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-2
8 15:59:30
* @LastEditTime: 2021-07-2
9 19:57:16
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -93,6 +93,12 @@ export function editDepartment(params: object) {
...
@@ -93,6 +93,12 @@ export function editDepartment(params: object) {
export
function
delDepartment
(
params
:
object
)
{
export
function
delDepartment
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/delDepartment"
,
params
);
return
Service
.
Hades
(
"public/hades/delDepartment"
,
params
);
}
}
export
function
queryDepartmentTree
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/queryDepartmentTree"
,
params
);
}
export
function
getStoreCustomerAndDepNamePage
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/getStoreCustomerAndDepNamePage"
,
params
);
}
export
function
delDepartmentUser
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/delDepartmentUser"
,
params
);
}
\ No newline at end of file
src/domains/store-domain/constants.ts
View file @
306a9e02
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: zhangleyuan
* @Author: zhangleyuan
* @Date: 2021-01-19 11:27:56
* @Date: 2021-01-19 11:27:56
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-2
8 18:07:31
* @LastEditTime: 2021-07-2
9 13:37:10
* @Description: 描述一下
* @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -32,7 +32,7 @@ export const childIndustryList = {
...
@@ -32,7 +32,7 @@ export const childIndustryList = {
"其他行业"
:[
"科学研究和技术服务业"
,
"社会组织"
,
"水利和环境管理"
,
"国际组织"
,
"其他"
]
"其他行业"
:[
"科学研究和技术服务业"
,
"社会组织"
,
"水利和环境管理"
,
"国际组织"
,
"其他"
]
}
}
export
const
DepType
=
{
export
const
DepType
=
{
'departMentTab'
:
'DEP_
CHAT
'
,
'departMentTab'
:
'DEP_
ORG
'
,
'postGrouptab'
:
'DEP_POST'
,
'postGrouptab'
:
'DEP_POST'
,
'customGroupTab'
:
'DEP_CUSTOM'
'customGroupTab'
:
'DEP_CUSTOM'
}
}
\ No newline at end of file
src/domains/store-domain/storeService.ts
View file @
306a9e02
...
@@ -2,14 +2,14 @@
...
@@ -2,14 +2,14 @@
* @Author: wufan
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @Date: 2020-11-25 18:25:02
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-07-2
7 15:09:1
2
* @LastEditTime: 2021-07-2
9 19:57:5
2
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
{
getEmployeeList
,
getUserList
,
getStoreDecorationList
,
getStoreRole
,
addEmployee
,
editEmployee
,
deleteEmployee
,
getCourseCatalogList
,
import
{
getEmployeeList
,
getUserList
,
getStoreDecorationList
,
getStoreRole
,
addEmployee
,
editEmployee
,
deleteEmployee
,
getCourseCatalogList
,
getAllSonCategory
,
addCourseCategory
,
delCourseCategory
,
editCourseCategory
,
deleteStoreDecorationList
,
addStoreBanner
,
editStoreBanner
,
getAllSonCategory
,
addCourseCategory
,
delCourseCategory
,
editCourseCategory
,
deleteStoreDecorationList
,
addStoreBanner
,
editStoreBanner
,
moveBannerSequence
,
getStoreUserBasicPage
,
updateStoreMessage
,
getStoreDetail
,
getByDepartmentId
,
getDepartmentUser
,
getDepartmentUserNotPage
,
addDepartment
,
moveBannerSequence
,
getStoreUserBasicPage
,
updateStoreMessage
,
getStoreDetail
,
getByDepartmentId
,
getDepartmentUser
,
getDepartmentUserNotPage
,
addDepartment
,
editDepartment
,
delDepartment
editDepartment
,
delDepartment
,
queryDepartmentTree
,
getStoreCustomerAndDepNamePage
,
delDepartmentUser
}
from
'@/data-source/store/request-apis'
;
}
from
'@/data-source/store/request-apis'
;
export
default
class
StoreService
{
export
default
class
StoreService
{
...
@@ -109,4 +109,13 @@ export default class StoreService {
...
@@ -109,4 +109,13 @@ export default class StoreService {
static
delDepartment
(
params
:
any
){
static
delDepartment
(
params
:
any
){
return
delDepartment
(
params
);
return
delDepartment
(
params
);
}
}
static
queryDepartmentTree
(
params
:
any
){
return
queryDepartmentTree
(
params
);
}
static
getStoreCustomerAndDepNamePage
(
params
:
any
){
return
getStoreCustomerAndDepNamePage
(
params
);
}
static
delDepartmentUser
(
params
:
any
){
return
delDepartmentUser
(
params
);
}
}
}
\ No newline at end of file
src/modules/college-manage/EmployeeManage.tsx
View file @
306a9e02
...
@@ -410,6 +410,7 @@ function EmployeeManage() {
...
@@ -410,6 +410,7 @@ function EmployeeManage() {
{
model
}
{
model
}
{
employeeModal
&&
{
employeeModal
&&
<
NewChooseMembersModal
<
NewChooseMembersModal
treeDepType=
"DEP_CHAT"
visible=
{
employeeModal
}
visible=
{
employeeModal
}
type=
"USER"
type=
"USER"
close=
{
()
=>
{
setEmployeeModal
(
false
)}
}
close=
{
()
=>
{
setEmployeeModal
(
false
)}
}
...
...
src/modules/college-manage/components/DepartMentTabCon.jsx
View file @
306a9e02
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
Button
,
Input
}
from
"antd"
;
import
{
Button
,
Input
,
message
,
Modal
}
from
"antd"
;
import
NewChooseMembersModal
from
"@/modules/college-manage/modal/NewChooseMembersModal"
;
import
NewChooseMembersModal
from
"@/modules/college-manage/modal/NewChooseMembersModal"
;
import
LeftStructureTree
from
'./LeftStructureTree'
;
import
LeftStructureTree
from
"./LeftStructureTree"
;
import
{
XMTable
,
PageControl
}
from
'@/components'
;
import
{
XMTable
,
PageControl
}
from
"@/components"
;
import
college
from
'@/common/lottie/college.json'
;
import
college
from
"@/common/lottie/college.json"
;
import
{
DepType
}
from
'@/domains/store-domain/constants'
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
{
DepType
}
from
"@/domains/store-domain/constants"
;
import
User
from
"@/common/js/user"
;
import
moment
from
"moment"
;
import
"./DepartMentTabCon.less"
;
import
"./DepartMentTabCon.less"
;
import
Bus
from
"@/core/bus"
;
import
_
from
'underscore'
;
const
{
Search
}
=
Input
;
const
{
Search
}
=
Input
;
const
{
confirm
}
=
Modal
;
const
DefaultQuery
=
{
const
DefaultQuery
=
{
size
:
10
,
size
:
10
,
current
:
1
current
:
1
,
}
}
;
function
DepartMentTabCon
(
props
)
{
function
DepartMentTabCon
(
props
)
{
const
[
chooseMembersModalVisible
,
setChooseMembersModalVisible
]
=
useState
(
false
);
const
[
chooseMembersModalVisible
,
setChooseMembersModalVisible
]
=
useState
(
const
[
query
,
setQuery
]
=
useState
(
DefaultQuery
);
false
const
[
total
,
setTotal
]
=
useState
(
0
);
);
const
{
userParams
,
setUserParams
}
=
useState
({})
const
[
query
,
setQuery
]
=
useState
(
DefaultQuery
);
const
[
userListdata
,
setUserListData
]
=
useState
([]);
const
[
total
,
setTotal
]
=
useState
(
0
);
const
[
userListdata
,
setUserListData
]
=
useState
([]);
const
[
selectUser
,
setSelectUser
]
=
useState
([]);
const
columns
=
[
const
columns
=
[
{
{
title
:
'学员'
,
title
:
"学员"
,
dataIndex
:
'user'
,
dataIndex
:
"nickName"
,
width
:
220
,
width
:
220
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
item
)
=>
{
return
<
span
>
{
val
}
</
span
>
return
(
}
<
div
>
<
span
>
{
val
}
</
span
>
<
span
className=
"tag"
style=
{
{
color
:
item
.
sourceEnum
===
"WORK_WE_CHAT"
?
"#2966FF"
:
"#1DCC65"
,
}
}
>
{
item
.
sourceEnum
===
"WORK_WE_CHAT"
?
"@企业微信"
:
"@微信"
}
</
span
>
</
div
>
);
},
},
},
{
{
title
:
'真实姓名'
,
title
:
"真实姓名"
,
dataIndex
:
'nickname'
,
dataIndex
:
"userName"
,
width
:
'15%'
,
width
:
"15%"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
return
<
span
>
{
val
}
</
span
>
return
<
span
>
{
val
}
</
span
>;
},
}
},
},
{
{
title
:
'账号'
,
title
:
"账号"
,
dataIndex
:
'account'
,
dataIndex
:
"nickName"
,
width
:
'15%'
,
width
:
"15%"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
item
)
=>
{
return
<
span
>
{
val
}
</
span
>
return
<
span
>
{
val
}
</
span
>
;
}
},
},
},
{
{
title
:
'岗位'
,
title
:
"岗位"
,
dataIndex
:
'post'
,
dataIndex
:
"depPostNameList"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
return
<
span
>
{
val
}
</
span
>
if
(
!
record
.
depPostNameList
){
}
return
<
span
>
-
</
span
>
}
else
{
record
.
depPostNameList
.
map
((
item
,
index
)
=>
{
return
<
span
>
{
item
}{
index
!==
record
.
depPostNameList
.
length
-
1
&&
<
span
>
、
</
span
>
}
</
span
>;
})
}
}
},
},
{
{
title
:
'手机号'
,
title
:
"手机号"
,
dataIndex
:
'phone'
,
dataIndex
:
"phone"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
item
)
=>
{
return
<
span
>
{
val
}
</
span
>;
return
<
span
>
{
val
}
</
span
>;
}
},
},
},
{
{
title
:
'注册时间'
,
title
:
"注册时间"
,
dataIndex
:
'registerTime'
,
dataIndex
:
"created"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
item
)
=>
{
return
<
span
>
{
val
}
</
span
>;
return
<
div
>
{
moment
(
val
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</
div
>;
}
},
},
},
{
{
title
:
"操作"
,
title
:
"操作"
,
key
:
"operate"
,
key
:
"operate"
,
dataIndex
:
"operate"
,
dataIndex
:
"operate"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
item
)
=>
{
return
(
return
(
<
div
className=
"operate"
>
<
div
className=
"operate"
>
<
div
{
props
.
currentTab
===
'departMentTab'
?
className=
"operate__item"
<
div
className=
"operate__item"
onClick=
{
()
=>
delUser
(
'single'
,
item
.
id
)
}
>
删除
</
div
>
>
:
删除
<
div
className=
"operate__item"
onClick=
{
()
=>
delUser
(
'single'
,
item
.
id
)
}
>
移出
</
div
>
</
div
>
}
</
div
>
</
div
>
)
)
;
}
},
},
},
];
];
function
closeChooseMembersModal
(){
function
closeChooseMembersModal
()
{
setChooseMembersModalVisible
(
false
);
setChooseMembersModalVisible
(
false
);
}
}
function
getUserList
(
params
){
StoreService
.
getDepartmentUser
(
params
).
then
((
res
)
=>
{
function
getUserList
(
record
,
current
)
{
const
{
records
=
[],
current
,
size
,
total
}
=
res
.
result
;
const
params
=
{
...
query
,
depType
:
DepType
[
props
.
currentTab
],
departmentId
:
record
.
id
,
enterpriseId
:
User
.
getEnterpriseId
(),
source
:
0
,
storeId
:
User
.
getStoreId
(),
userId
:
User
.
getUserId
(),
};
if
(
current
)
{
params
.
current
=
current
;
}
setQuery
(
params
);
StoreService
.
getStoreCustomerAndDepNamePage
(
params
).
then
((
res
)
=>
{
const
{
records
=
[],
total
}
=
res
.
result
;
setUserListData
(
records
);
setUserListData
(
records
);
setQuery
({
current
,
size
});
setTotal
(
total
);
setTotal
(
total
);
});
});
}
}
function
confirmAddCustomer
()
{
Bus
.
trigger
(
"addCustomer"
);
}
function
delUser
(
type
,
id
){
let
idList
=
[];
if
(
type
===
'single'
){
idList
.
push
(
id
);
}
if
(
type
===
'multiple'
){
idList
=
_
.
pluck
(
selectUser
,
'id'
);
}
if
(
idList
.
length
===
0
){
message
.
warning
(
'请先选择要删除的学员'
)
return
;
}
return
confirm
({
title
:
"确定要删除学员吗?"
,
content
:
"删除后,该学员将从员工列表中删除,且看不到该学院用户端。"
,
icon
:
(
<
span
className=
"icon iconfont default-confirm-icon"
>

</
span
>
),
okText
:
"删除"
,
okType
:
"danger"
,
cancelText
:
"取消"
,
onOk
:
()
=>
{
handleConfirmDelUser
(
idList
);
},
});
}
function
handleConfirmDelUser
(
idList
){
const
params
=
{
depType
:
DepType
[
props
.
currentTab
],
idList
,
storeId
:
User
.
getStoreId
()
}
StoreService
.
delDepartmentUser
(
params
).
then
((
res
)
=>
{
message
.
success
(
`删除成功`
);
getUserList
(
query
);
});
}
function
handleSelectUserList
(
record
,
selected
){
let
_list
=
[];
if
(
selected
||
!
_
.
find
(
selectUser
,
(
item
)
=>
item
.
userId
===
record
.
userId
))
{
_list
=
_
.
uniq
(
selectUser
.
concat
([
record
]),
false
,
(
item
)
=>
item
.
userId
);
}
else
{
_list
=
_
.
reject
(
selectUser
,
(
item
)
=>
item
.
userId
===
record
.
userId
);
}
if
(
_list
.
length
>
50
)
{
message
.
warning
(
'无法继续选择,最多选择50个'
);
return
;
}
console
.
log
(
'selectUser'
,
_list
);
setSelectUser
(
_list
);
};
return
(
return
(
<
div
className=
"department-tab-con"
>
<
div
className=
"department-tab-con"
>
{
props
.
currentTab
&&
{
props
.
currentTab
&&
(
<
LeftStructureTree
treeType=
{
props
.
currentTab
}
searchUserList=
{
(
params
)
=>
getUserList
(
params
)
}
/>
<
LeftStructureTree
}
treeType=
{
props
.
currentTab
}
<
div
className=
"table-con"
>
searchUserList=
{
(
params
)
=>
getUserList
(
params
)
}
{
props
.
currentTab
===
'departMentTab'
&&
/>
<
div
className=
"operate-area"
>
)
}
<
Button
type=
"primary"
className=
"add-user-btn"
onClick=
{
()
=>
{
setChooseMembersModalVisible
(
true
)}
}
>
添加学员
</
Button
>
<
div
className=
"table-con"
>
<
Button
className=
"del-user-btn"
>
删除学员
</
Button
>
{
props
.
currentTab
===
"departMentTab"
&&
(
<
Button
className=
"update-user-btn"
>
更新列表数据
</
Button
>
<
div
className=
"operate-area"
>
<
span
className=
"origin-text"
>
数据来源企业微信通讯录
</
span
>
<
Button
<
a
href=
'https://www.yuque.com/wangzhong-zkqw0/qixue'
target=
"_blank"
>
type=
"primary"
<
span
className=
"view-text"
>
查看数据更新说明
</
span
>
className=
"add-user-btn"
</
a
>
onClick=
{
()
=>
{
</
div
>
setChooseMembersModalVisible
(
true
);
}
}
}
{
(
props
.
currentTab
===
'postGrouptab'
||
props
.
currentTab
===
'customGroupTab'
)
&&
>
<
div
className=
"operate-area"
>
添加学员
<
Button
type=
"primary"
className=
"add-user-btn"
>
</
Button
>
添加学员
<
Button
className=
"del-user-btn"
onClick=
{
()
=>
delUser
(
'multiple'
)
}
>
删除学员
</
Button
>
</
Button
>
<
Button
className=
"update-user-btn"
>
更新列表数据
</
Button
>
<
Button
className=
"del-user-btn"
>
移出学员
</
Button
>
<
span
className=
"origin-text"
>
数据来源企业微信通讯录
</
span
>
</
div
>
<
a
}
href=
"https://www.yuque.com/wangzhong-zkqw0/qixue"
<
div
className=
"user-table"
>
target=
"_blank"
<
XMTable
>
renderEmpty=
{
{
<
span
className=
"view-text"
>
查看数据更新说明
</
span
>
image
:
college
,
</
a
>
description
:
'暂无数据'
,
</
div
>
}
}
)
}
bordered
{
(
props
.
currentTab
===
"postGrouptab"
||
size=
'middle'
props
.
currentTab
===
"customGroupTab"
)
&&
(
pagination=
{
false
}
<
div
className=
"operate-area"
>
columns=
{
columns
}
<
Button
scroll=
{
{
x
:
1300
}
}
type=
"primary"
dataSource=
{
userListdata
}
className=
"add-user-btn"
/>
onClick=
{
()
=>
{
<
div
className=
'box-footer'
>
setChooseMembersModalVisible
(
true
);
<
PageControl
}
}
current=
{
query
.
current
}
>
pageSize=
{
query
.
size
}
添加学员
total=
{
total
}
</
Button
>
toPage=
{
(
page
)
=>
{
<
Button
className=
"del-user-btn"
onClick=
{
()
=>
delUser
(
'multiple'
)
}
>
移出学员
</
Button
>
const
queryStates
=
_
.
clone
(
query
);
</
div
>
queryStates
.
current
=
page
;
)
}
setQuery
(
queryStates
);
<
div
className=
"user-table"
>
}
}
<
XMTable
/>
renderEmpty=
{
{
</
div
>
image
:
college
,
</
div
>
description
:
"暂无数据"
,
}
}
bordered
size=
"middle"
pagination=
{
false
}
columns=
{
columns
}
scroll=
{
{
x
:
1300
}
}
dataSource=
{
userListdata
}
rowKey=
{
(
record
)
=>
record
.
userId
}
rowSelection=
{
{
type
:
'checkbox'
,
selectedRowKeys
:
_
.
pluck
(
selectUser
,
'userId'
),
onSelect
:
(
record
,
selected
)
=>
{
console
.
log
(
'record'
,
record
);
handleSelectUserList
(
record
,
selected
)
},
onSelectAll
:
(
selected
,
_selectedRows
,
changeRows
)
=>
{
let
_list
=
[];
if
(
selected
)
{
_list
=
_
.
uniq
(
selectUser
.
concat
(
changeRows
),
false
,
(
item
)
=>
item
.
userId
);
}
else
{
_list
=
_
.
reject
(
selectUser
,
(
item
)
=>
_
.
find
(
changeRows
,
(
data
)
=>
data
.
userId
===
item
.
userId
));
}
if
(
_list
.
length
>
50
)
{
message
.
warning
(
'无法继续选择,一个任务最多关联50个课程'
);
const
extraLength
=
_list
.
length
-
50
;
_list
.
splice
(
_list
.
length
-
extraLength
,
extraLength
);
}
setSelectUser
(
_list
);
},
}
}
/>
<
div
className=
"box-footer"
>
<
PageControl
current=
{
query
.
current
}
pageSize=
{
query
.
size
}
total=
{
total
}
toPage=
{
(
page
)
=>
{
const
queryStates
=
_
.
clone
(
query
);
queryStates
.
current
=
page
;
getUserList
(
queryStates
);
setQuery
(
queryStates
);
}
}
/>
</
div
>
</
div
>
</
div
>
{
</
div
>
chooseMembersModalVisible
&&
{
chooseMembersModalVisible
&&
(
<
NewChooseMembersModal
visible=
{
chooseMembersModalVisible
}
type=
"CUSTOMER"
depType=
{
DepType
[
props
.
currentTab
]
}
close=
{
()
=>
{
closeChooseMembersModal
()}
}
onConfirm=
{
()
=>
{}
}
/>
<
NewChooseMembersModal
}
visible=
{
chooseMembersModalVisible
}
type=
"CUSTOMER"
treeDepType=
{
props
.
currentTab
===
"departMentTab"
?
"DEP_CHAT"
:
"DEP_ORG"
}
addDepType=
{
DepType
[
props
.
currentTab
]
}
close=
{
()
=>
{
closeChooseMembersModal
();
}
}
onConfirm=
{
()
=>
{
confirmAddCustomer
();
}
}
/>
)
}
</
div
>
</
div
>
);
);
}
}
export
default
withRouter
(
DepartMentTabCon
);
export
default
withRouter
(
DepartMentTabCon
);
\ No newline at end of file
src/modules/college-manage/components/DepartMentTabCon.less
View file @
306a9e02
...
@@ -23,5 +23,11 @@
...
@@ -23,5 +23,11 @@
color:#5289FA;
color:#5289FA;
}
}
}
}
.operate{
.operate__item{
color:#2966FF;
cursor: pointer;
}
}
}
}
}
}
\ No newline at end of file
src/modules/college-manage/components/LeftStructureTree.jsx
View file @
306a9e02
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
Tree
,
Input
,
Dropdown
,
Menu
,
Button
,
Modal
,
message
}
from
"antd"
;
import
{
Tree
,
Input
,
Dropdown
,
Menu
,
Button
,
Modal
,
message
,
AutoComplete
}
from
"antd"
;
import
AddOrEditPostGroupModal
from
"../modal/AddOrEditPostGroupModal"
;
import
AddOrEditPostGroupModal
from
"../modal/AddOrEditPostGroupModal"
;
import
User
from
'@/common/js/user'
import
User
from
'@/common/js/user'
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
{
DepType
}
from
'@/domains/store-domain/constants'
;
import
{
DepType
}
from
'@/domains/store-domain/constants'
;
import
Bus
from
'@/core/bus'
;
import
"./LeftStructureTree.less"
;
import
"./LeftStructureTree.less"
;
const
{
Search
}
=
Input
;
const
{
Search
}
=
Input
;
...
@@ -19,26 +20,142 @@ function LeftStructureTree(props) {
...
@@ -19,26 +20,142 @@ function LeftStructureTree(props) {
const
[
postGroupModalLable
,
setPostGroupModalLable
]
=
useState
(
""
);
const
[
postGroupModalLable
,
setPostGroupModalLable
]
=
useState
(
""
);
const
[
postGroupName
,
setPostGroupName
]
=
useState
(
""
);
const
[
postGroupName
,
setPostGroupName
]
=
useState
(
""
);
const
[
currentGroupData
,
setCurrentGroupData
]
=
useState
({});
const
[
currentGroupData
,
setCurrentGroupData
]
=
useState
({});
useEffect
(()
=>
{
const
[
selectUserParams
,
setSelectUserParams
]
=
useState
({});
getTreeData
();
const
[
completeOptions
,
setCompleteOption
]
=
useState
([]);
},[
props
.
treeType
]);
function
getTreeData
(){
const
renderTitle
=
(
title
)
=>
(
<
span
>
{
title
}
</
span
>
);
const
renderItem
=
(
record
,
type
)
=>
({
value
:
record
.
userName
||
record
.
name
,
label
:
(
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'space-between'
,
}
}
>
{
type
===
'user'
?
<
div
>
{
record
.
userName
}
</
div
>
:
<
div
>
{
record
.
name
}
</
div
>
}
{
type
===
'user'
&&
record
.
postDepNamesList
.
map
((
item
,
index
)
=>
{
return
<
span
>
{
item
}
</
span
>
})
}
</
div
>
),
});
const
notFoundContentNode
=
()
=>
{
return
<
span
>
暂无数据
</
span
>
}
const
Complete
=
()
=>
(
<
AutoComplete
dropdownClassName=
"certain-category-search-dropdown"
dropdownMatchSelectWidth=
{
250
}
allowClear
onChange=
{
getCompleteOptionData
}
notFoundContent=
{
notFoundContentNode
()
}
style=
{
{
width
:
250
,
}
}
options=
{
completeOptions
}
>
<
Input
size=
"large"
placeholder=
"搜索部门/学员姓名"
/>
</
AutoComplete
>
);
function
getCompleteOptionData
(
value
){
const
params
=
{
const
params
=
{
depType
:
DepType
[
treeType
],
depType
:
DepType
[
treeType
],
queryName
:
value
,
enterpriseId
:
User
.
getEnterpriseId
(),
enterpriseId
:
User
.
getEnterpriseId
(),
source
:
0
,
//0代表来自企培
source
:
0
,
//0代表来自企培
storeId
:
User
.
getStoreId
(),
storeId
:
User
.
getStoreId
(),
userId
:
User
.
getUserId
(),
userId
:
User
.
getUserId
(),
whetherCount
:
tru
e
whetherCount
:
fals
e
}
}
StoreService
.
getDepartmentUser
(
params
).
then
((
res
)
=>
{
StoreService
.
getDepartmentUser
(
params
).
then
((
res
)
=>
{
let
{
departmentVOList
=
[]}
=
res
.
result
;
const
_completeOptions
=
[];
let
_treeData
=
handleData
(
departmentVOList
);
const
userObj
=
{};
console
.
log
(
"_treeData"
,
_treeData
);
const
departmentGroupObj
=
{};
setTreeData
(
_treeData
);
const
postobj
=
{};
const
{
departmentUserVOList
,
departmentVOList
}
=
res
.
result
;
if
(
departmentUserVOList
.
records
.
length
>
0
){
userObj
.
label
=
renderTitle
(
'员工'
);
userObj
.
options
=
departmentUserVOList
.
records
.
map
((
item
,
index
)
=>
{
return
renderItem
(
item
,
'user'
);
})
}
if
(
departmentVOList
.
length
>
0
){
switch
(
treeType
){
case
'departMentTab'
:
departmentGroupObj
.
label
=
renderTitle
(
'部门'
);
break
;
case
'postGrouptab'
:
departmentGroupObj
.
label
=
renderTitle
(
'岗位组'
);
break
;
case
'customGroupTab'
:
departmentGroupObj
.
label
=
renderTitle
(
'自定义分组集合'
);
break
;
default
:
break
;
}
departmentGroupObj
.
options
=
departmentVOList
.
map
((
item
,
index
)
=>
{
return
renderItem
(
item
,
'group'
);
})
}
if
(
Object
.
keys
(
userObj
).
length
!==
0
){
_completeOptions
.
push
(
userObj
);
}
if
(
Object
.
keys
(
departmentGroupObj
).
length
!==
0
){
_completeOptions
.
push
(
departmentGroupObj
);
}
console
.
log
(
'_completeOptions'
,
_completeOptions
);
// setCompleteOption(_completeOptions);
});
});
}
}
useEffect
(()
=>
{
getTreeData
();
},[
props
.
treeType
]);
useEffect
(()
=>
{
Bus
.
bind
(
"addCustomer"
,
addCustomer
)
},[]);
async
function
addCustomer
(){
await
getTreeData
();
props
.
searchUserList
(
setSelectUserParams
)
}
function
getTreeData
(){
return
new
Promise
((
resolve
,
reject
)
=>
{
const
params
=
{
departmentTypeEnum
:
DepType
[
treeType
],
enterpriseId
:
User
.
getEnterpriseId
(),
source
:
0
,
//0代表来自企培
storeId
:
User
.
getStoreId
(),
userId
:
User
.
getUserId
(),
whetherCount
:
true
}
StoreService
.
queryDepartmentTree
(
params
).
then
((
res
)
=>
{
// let { departmentVOList=[]} = res.result;
let
_treeData
=
handleData
(
res
.
result
);
setTreeData
(
_treeData
);
resolve
();
});
})
}
function
handleData
(
dataArray
){
function
handleData
(
dataArray
){
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
item
.
key
=
item
.
id
;
item
.
key
=
item
.
id
;
...
@@ -214,20 +331,22 @@ function LeftStructureTree(props) {
...
@@ -214,20 +331,22 @@ function LeftStructureTree(props) {
getTreeData
()
getTreeData
()
}
}
function
selectUserList
(){
function
selectUserList
(
record
,
e
){
props
.
searchUserList
()
console
.
log
(
'e'
,
e
);
props
.
searchUserList
(
e
.
selectedNodes
[
0
]);
}
}
return
(
return
(
<
div
className=
"left-structure-tree"
>
<
div
className=
"left-structure-tree"
>
<
div
className=
"organization"
>
<
div
className=
"organization"
>
<
div
className=
"search-con"
>
<
div
className=
"search-con"
>
<
Search
{
/*
<Search
placeholder="搜索部门/学员姓名"
placeholder="搜索部门/学员姓名"
className="search search-input"
className="search search-input"
style={{ width: 245 }}
style={{ width: 245 }}
enterButton={<span className="icon iconfont"></span>}
enterButton={<span className="icon iconfont"></span>}
/>
/> */
}
<
Complete
/>
</
div
>
</
div
>
{
(
treeType
===
'postGrouptab'
||
treeType
===
'customGroupTab'
)
&&
(
{
(
treeType
===
'postGrouptab'
||
treeType
===
'customGroupTab'
)
&&
(
<
div
className=
"operate"
>
<
div
className=
"operate"
>
...
...
src/modules/college-manage/components/MemberTree.jsx
View file @
306a9e02
...
@@ -14,7 +14,7 @@ function MemberTree(props) {
...
@@ -14,7 +14,7 @@ function MemberTree(props) {
},[]);
},[]);
function
getTreeData
(){
function
getTreeData
(){
const
params
=
{
const
params
=
{
depType
:
props
.
depType
||
'DEP_CHAT'
,
depType
:
props
.
treeDepType
,
enterpriseId
:
User
.
getEnterpriseId
(),
enterpriseId
:
User
.
getEnterpriseId
(),
source
:
0
,
//0代表来自企培
source
:
0
,
//0代表来自企培
storeId
:
User
.
getStoreId
(),
storeId
:
User
.
getStoreId
(),
...
@@ -66,7 +66,7 @@ function MemberTree(props) {
...
@@ -66,7 +66,7 @@ function MemberTree(props) {
checkable
checkable
showIcon=
{
false
}
showIcon=
{
false
}
treeData=
{
treeData
}
treeData=
{
treeData
}
checkedKeys=
{
_
.
pluck
(
props
.
selectUserList
,
'id'
)
}
//
checkedKeys={_.pluck(props.selectUserList, 'id')}
onCheck=
{
(
selectedKeys
,
e
)
=>
treeSelected
(
selectedKeys
,
e
)
}
onCheck=
{
(
selectedKeys
,
e
)
=>
treeSelected
(
selectedKeys
,
e
)
}
titleRender=
{
(
nodeData
)
=>
{
titleRender=
{
(
nodeData
)
=>
{
return
(
return
(
...
...
src/modules/college-manage/modal/NewChooseMembersModal.jsx
View file @
306a9e02
...
@@ -101,25 +101,26 @@ class NewChooseMembersModal extends React.Component {
...
@@ -101,25 +101,26 @@ class NewChooseMembersModal extends React.Component {
addCustomer
=
()
=>
{
addCustomer
=
()
=>
{
const
{
selectUserList
}
=
this
.
state
;
const
{
selectUserList
}
=
this
.
state
;
const
{
d
epType
}
=
this
.
props
;
const
{
addD
epType
}
=
this
.
props
;
let
enterpriseUserList
=
[];
// 保存新加进去的成员
let
enterpriseUserList
=
[];
// 保存新加进去的成员
enterpriseUserList
=
selectUserList
.
map
((
item
)
=>
{
enterpriseUserList
=
selectUserList
.
map
((
item
)
=>
{
const
_item
=
{}
const
_item
=
{}
if
(
depType
===
'DEP_CHAT
'
){
if
(
addDepType
===
'DEP_ORG
'
){
_item
.
depUserType
=
'VISIBLE_USER'
;
_item
.
depUserType
=
'VISIBLE_USER'
;
}
else
{
}
else
{
_item
.
depUserType
=
'STORE_USER'
;
_item
.
depUserType
=
'STORE_USER'
;
}
}
_item
.
departmentId
=
item
.
depId
;
_item
.
departmentId
=
item
.
dep
artment
Id
;
_item
.
enterpriseVisibleUserId
=
item
.
userId
;
_item
.
enterpriseVisibleUserId
=
item
.
userId
;
return
_item
return
_item
})
})
const
_params
=
{
const
_params
=
{
storeId
:
User
.
getStoreId
(),
storeId
:
User
.
getStoreId
(),
depType
:
d
epType
,
depType
:
addD
epType
,
enterpriseUserList
,
userAndDepartmentList
:
enterpriseUserList
}
}
Service
.
Hades
(
'public/hades/addBatchUserAndDepartmentStoreCustomer'
,
_params
).
then
((
res
)
=>
{
Service
.
Hades
(
'public/hades/addBatchUserAndDepartmentStoreCustomer'
,
_params
).
then
((
res
)
=>
{
this
.
handleClose
();
this
.
props
.
onConfirm
();
this
.
props
.
onConfirm
();
})
})
}
}
...
@@ -148,7 +149,7 @@ class NewChooseMembersModal extends React.Component {
...
@@ -148,7 +149,7 @@ class NewChooseMembersModal extends React.Component {
}
}
render
()
{
render
()
{
const
{
type
,
d
epType
}
=
this
.
props
;
const
{
type
,
treeD
epType
}
=
this
.
props
;
const
{
selectUserList
,
selectObject
,
visible
,
openSetModal
}
=
this
.
state
;
const
{
selectUserList
,
selectObject
,
visible
,
openSetModal
}
=
this
.
state
;
const
title
=
type
===
'USER'
?
'添加员工'
:
'添加学员'
;
const
title
=
type
===
'USER'
?
'添加员工'
:
'添加学员'
;
return
(
return
(
...
@@ -184,7 +185,7 @@ class NewChooseMembersModal extends React.Component {
...
@@ -184,7 +185,7 @@ class NewChooseMembersModal extends React.Component {
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
/>
/>
<
div
className=
'container-left-body-table'
>
<
div
className=
'container-left-body-table'
>
<
MemberTree
depType=
{
d
epType
}
onSelect=
{
(
record
)
=>
{
this
.
treeSelect
(
record
)}
}
selectUserList=
{
selectUserList
}
/>
<
MemberTree
treeDepType=
{
treeD
epType
}
onSelect=
{
(
record
)
=>
{
this
.
treeSelect
(
record
)}
}
selectUserList=
{
selectUserList
}
/>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
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