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
537099a7
Commit
537099a7
authored
Jul 26, 2021
by
zhangleyuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:学院管理的添加学员
parent
7eebdadf
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
220 additions
and
60 deletions
+220
-60
src/data-source/store/request-apis.ts
+9
-2
src/domains/store-domain/storeService.ts
+10
-3
src/modules/college-manage/EmployeeManage.tsx
+7
-8
src/modules/college-manage/components/DepartMentTabCon.jsx
+1
-1
src/modules/college-manage/components/MemberTree.jsx
+41
-38
src/modules/college-manage/modal/NewChooseMembersModal.jsx
+152
-8
No files found.
src/data-source/store/request-apis.ts
View file @
537099a7
/*
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @LastEditors:
zhangleyuan
* @LastEditTime: 2021-0
3-09 10:28:03
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
7-26 16:05:10
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
...
...
@@ -75,6 +75,13 @@ export function updateStoreMessage(params: object) {
export
function
getStoreDetail
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/getStoreDetail"
,
params
);
}
export
function
getByDepartmentId
(
params
:
object
)
{
return
Service
.
Hades
(
"public/hades/getByDepartmentId"
,
params
);
}
export
function
getDepartmentUser
(
params
:
object
)
{
return
Service
.
Hades
(
"/public/hades/getDepartmentAndDepartmentUserByName"
,
params
);
}
src/domains/store-domain/storeService.ts
View file @
537099a7
/*
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @LastEditors:
zhangleyuan
* @LastEditTime: 2021-0
3-08 11:48:43
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
7-26 16:06:29
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import
{
getEmployeeList
,
getUserList
,
getStoreDecorationList
,
getStoreRole
,
addEmployee
,
editEmployee
,
deleteEmployee
,
getCourseCatalogList
,
getAllSonCategory
,
addCourseCategory
,
delCourseCategory
,
editCourseCategory
,
deleteStoreDecorationList
,
addStoreBanner
,
editStoreBanner
,
moveBannerSequence
,
getStoreUserBasicPage
,
updateStoreMessage
,
getStoreDetail
}
from
'@/data-source/store/request-apis'
;
moveBannerSequence
,
getStoreUserBasicPage
,
updateStoreMessage
,
getStoreDetail
,
getByDepartmentId
,
getDepartmentUser
}
from
'@/data-source/store/request-apis'
;
export
default
class
StoreService
{
// 获取员工列表
...
...
@@ -89,4 +89,10 @@ export default class StoreService {
static
getStoreDetail
(
params
:
any
)
{
return
getStoreDetail
(
params
);
}
static
getByDepartmentId
(
params
:
any
){
return
getByDepartmentId
(
params
);
}
static
getDepartmentUser
(
params
:
any
){
return
getDepartmentUser
(
params
);
}
}
\ No newline at end of file
src/modules/college-manage/EmployeeManage.tsx
View file @
537099a7
...
...
@@ -19,7 +19,7 @@ import LimitTip from "./LimitTip";
import
WWOpenDataCom
from
'@/components/WWOpenDataCom'
;
import
"./EmployeeManage.less"
;
import
ChooseMembersModal
from
"./modal/
ChooseMembersModal"
;
import
NewChooseMembersModal
from
"./modal/New
ChooseMembersModal"
;
const
{
confirm
}
=
Modal
;
const
{
Search
}
=
Input
;
...
...
@@ -409,15 +409,14 @@ function EmployeeManage() {
</
div
>
{
model
}
{
employeeModal
&&
<
ChooseMembersModal
isOpen
=
{
employeeModal
}
<
New
ChooseMembersModal
visible
=
{
employeeModal
}
type=
"USER"
handleChooseModal=
{
(
bool
:
any
)
=>
{
close=
{
()
=>
{
setEmployeeModal
(
false
)}
}
onConfirm=
{
()
=>
{
setEmployeeModal
(
false
)
if
(
bool
)
{
message
.
success
(
'添加成功'
)
getEmployeeList
();
}
message
.
success
(
'添加成功'
)
getEmployeeList
();
}
}
/>
}
...
...
src/modules/college-manage/components/DepartMentTabCon.jsx
View file @
537099a7
...
...
@@ -37,7 +37,7 @@ function DepartMentTabCon() {
</
div
>
<
UserTable
/>
</
div
>
<
NewChooseMembersModal
visible=
{
chooseMembersModalVisible
}
type=
"
USER"
close=
{
()
=>
{
closeChooseMembersModal
()
}
}
/>
<
NewChooseMembersModal
visible=
{
chooseMembersModalVisible
}
type=
"
CUSTOMER"
close=
{
()
=>
{
closeChooseMembersModal
()}
}
onConfirm=
{
()
=>
{
}
}
/>
</
div
>
);
}
...
...
src/modules/college-manage/components/MemberTree.jsx
View file @
537099a7
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
Tree
,
Input
,
Dropdown
,
Menu
}
from
"antd"
;
import
{
Tree
}
from
"antd"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
User
from
'@/common/js/user'
import
"./MemberTree.less"
;
const
{
Search
}
=
Input
;
const
{
DirectoryTree
}
=
Tree
;
function
MemberTree
(
props
)
{
const
{
treeType
}
=
props
const
treeData
=
[
{
title
:
"小麦助教"
,
key
:
"0-0"
,
children
:
[
{
title
:
"技术部"
,
key
:
"0-0-0"
,
children
:
[
{
title
:
"leaf"
,
key
:
"0-0-0-0"
,
},
{
title
:
"leaf"
,
key
:
"0-0-0-1"
,
},
],
},
{
title
:
"商务部"
,
key
:
"0-0-1"
,
children
:
[
{
title
:
'aaa'
,
key
:
"0-0-1-0"
,
},
],
},
],
},
];
const
{
treeType
}
=
props
;
const
{
treeData
,
setTreeData
}
=
useState
([]);
useEffect
(()
=>
{
getTreeData
();
},[]);
function
getTreeData
(){
const
params
=
{
depType
:
'DEP_CHAT'
,
enterpriseId
:
User
.
getEnterpriseId
(),
source
:
0
,
//0代表来自企培
storeId
:
User
.
getStoreId
(),
userId
:
User
.
getUserId
(),
}
StoreService
.
getDepartmentUser
(
params
).
then
(()
=>
{
const
{
departmentVOList
=
[]}
=
res
.
result
;
const
_treeData
=
handleData
(
departmentVOList
);
});
}
function
handleData
(
dataArray
){
dataArray
.
map
((
item
,
index
)
=>
{
item
.
key
=
item
.
id
;
if
(
item
.
sonDepartmentVOList
){
item
.
children
=
item
.
sonDepartmentVOList
;
handleData
(
item
.
sonDepartmentVOList
)
}
return
item
})
}
function
treeSelected
(
selectedKeys
,
e
){
const
_checkedNodes
=
e
.
checkedNodes
;
const
_selectNodes
=
_checkedNodes
.
map
((
item
,
index
)
=>
{
if
(
item
.
userType
===
'VISIBLE_USER'
){
return
item
;
}
})
props
.
onSelect
(
_selectNodes
);
}
return
(
<
div
className=
"member-tree"
>
<
div
className=
"tree-con"
>
...
...
@@ -50,12 +53,12 @@ function MemberTree(props) {
checkable
showIcon=
{
false
}
treeData=
{
treeData
}
onCheck=
{
(
selectedKeys
,
e
)
=>
treeSelected
(
selectedKeys
,
e
)
}
titleRender=
{
(
nodeData
)
=>
{
return
(
<
div
className=
"node-title-con"
>
{
/* <span className="icon iconfont title-icon"></span> */
}
<
span
className=
"icon iconfont title-icon"
>

</
span
>
<
span
>
{
nodeData
.
title
}
</
span
>
</
div
>
...
...
src/modules/college-manage/modal/NewChooseMembersModal.jsx
View file @
537099a7
...
...
@@ -22,19 +22,123 @@ class NewChooseMembersModal extends React.Component {
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
selectUserList
:[]
selectUserList
:[],
selectObject
:
{},
visible
:
this
.
props
.
visible
,
openSetModal
:
false
,
}
}
componentDidMount
()
{
}
handleClose
=
()
=>
{
this
.
props
.
close
()
;
this
.
props
.
close
()
}
render
()
{
const
{
type
,
visible
}
=
this
.
props
;
// 信息列表——右边
selectedColumnsRight
=
()
=>
{
const
selectColumns
=
[
{
title
:
'学员名'
,
key
:
'nameRight'
,
dataIndex
:
'userName'
,
width
:
'70%'
,
render
:
(
value
,
record
)
=>
{
const
{
userName
=
''
,
avatar
}
=
record
;
return
(
<
div
className=
'avatar'
>
<
span
className=
"icon iconfont avatar-icon"
>

</
span
>
<
Tooltip
title=
{
userName
}
>
<
span
className=
'userImg'
>
{
userName
}
</
span
>
</
Tooltip
>
</
div
>
)
}
},{
title
:
'操作'
,
key
:
'edit'
,
dataIndex
:
'edit'
,
width
:
'30%'
,
align
:
'right'
,
render
:
(
value
,
record
)
=>
{
return
(
<
div
className=
'edit'
onClick=
{
()
=>
this
.
clearOneUser
(
record
)
}
>
<
span
className=
"icon iconfont edit-icon"
>

</
span
>
</
div
>
)
}
},
]
return
selectColumns
;
}
treeSelect
=
(
record
)
=>
{
this
.
setState
({
selectUserList
:
record
})
}
clearOneUser
=
(
record
)
=>
{
const
{
selectUserList
}
=
this
.
state
;
const
_selectUserList
=
selectUserList
.
map
((
item
,
index
)
=>
{
if
(
item
.
userId
!==
record
.
userId
){
return
item
}
})
this
.
setState
({
selectUserList
:
_selectUserList
})
}
// 清空所有成员
clearAllUser
=
()
=>
{
this
.
setState
({
selectUserList
:
[],
})
}
addCustomer
=
()
=>
{
const
{
selectUserList
}
=
this
.
state
;
let
enterpriseVisibleUserIdList
=
[];
// 保存新加进去的成员
selectUserList
.
map
((
item
)
=>
{
enterpriseVisibleUserIdList
.
push
(
item
.
enterpriseVisibleUserId
)
return
enterpriseVisibleUserIdList
})
const
_params
=
{
storeId
:
User
.
getStoreId
(),
enterpriseVisibleUserIdList
,
}
Service
.
Hades
(
'public/hades/addBatchEnterpriseStoreCustomer'
,
_params
).
then
((
res
)
=>
{
this
.
props
.
onConfirm
();
})
}
// 批量添加成员(点击确定)
addUser
=
(
selectUserList
)
=>
{
let
enterpriseUserList
=
[];
// 保存新加进去的成员
selectUserList
.
map
((
item
)
=>
{
enterpriseUserList
.
push
({
roleCode
:
item
.
roleCode
,
enterpriseVisibleUserId
:
item
.
enterpriseVisibleUserId
})
return
enterpriseUserList
})
const
_params
=
{
storeId
:
User
.
getStoreId
(),
enterpriseUserList
,
}
Service
.
Hades
(
'public/hades/addBatchEnterpriseStoreUser'
,
_params
).
then
((
res
)
=>
{
if
(
res
.
code
===
'200'
)
{
this
.
props
.
onConfirm
();
this
.
setState
({
openSetModal
:
false
,
})
}
})
}
render
()
{
const
{
type
,
openSetModal
,
visible
}
=
this
.
props
;
const
{
selectUserList
,
selectObject
}
=
this
.
state
;
const
title
=
type
===
'USER'
?
'添加员工'
:
'添加学员'
;
return
(
<
div
>
...
...
@@ -44,7 +148,15 @@ class NewChooseMembersModal extends React.Component {
visible=
{
visible
}
onCancel=
{
()
=>
this
.
handleClose
()
}
onOk=
{
()
=>
{
if
(
User
.
getVersion
()
&&
User
.
getVersion
().
whetherReachUserNum
)
{
message
.
error
(
"添加失败,企业使用人数超出限制"
)
return
}
if
(
_
.
isEmpty
(
selectUserList
))
{
message
.
warning
(
type
===
'USER'
?
'请选择员工'
:
'请选择学员'
)
return
null
;
}
type
===
'USER'
?
this
.
setState
({
openSetModal
:
true
},()
=>
{
this
.
handleClose
()})
:
this
.
addCustomer
();
}
}
okText=
{
type
===
'USER'
?
'下一步'
:
'确定'
}
title=
{
title
}
...
...
@@ -61,7 +173,7 @@ class NewChooseMembersModal extends React.Component {
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
/>
<
div
className=
'container-left-body-table'
>
<
MemberTree
/>
<
MemberTree
onSelect=
{
(
record
)
=>
{
this
.
treeSelect
(
record
)}
}
/>
</
div
>
</
div
>
</
div
>
...
...
@@ -72,12 +184,44 @@ class NewChooseMembersModal extends React.Component {
<
span
className=
{
(
selectUserList
.
length
>
0
)
?
'span-right-l'
:
null
}
>
清空
</
span
>
</
div
>
<
div
className=
'container-right-body'
>
<
XMTable
renderEmpty=
{
{
image
:
college
,
description
:
'暂无数据'
}
}
rowKey=
{
(
record
)
=>
record
.
enterpriseVisibleUserId
}
dataSource=
{
selectUserList
}
columns=
{
this
.
selectedColumnsRight
()
}
showHeader=
{
false
}
scroll=
{
{
y
:
375
}
}
pagination=
{
false
}
size=
{
'small'
}
/>
</
div
>
</
div
>
</
div
>
</
Modal
>
{
openSetModal
&&
<
SetEmployeeModal
list=
{
selectUserList
}
selectObject=
{
selectObject
}
onChange=
{
(
key
,
value
)
=>
{
selectObject
[
key
]
=
value
;
this
.
setState
({
selectObject
});
}
}
onClose=
{
()
=>
{
this
.
setState
({
openSetModal
:
true
},()
=>
{
this
.
handleClose
()})
this
.
setState
({
openSetModal
:
false
,
visible
:
true
})
}
}
onCancel=
{
()
=>
{
this
.
handleClose
();
this
.
setState
({
openSetModal
:
false
});
}
}
onOk=
{
(
list
)
=>
{
this
.
addUser
(
list
);
}
}
/>
}
</
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