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
11f4ee76
Commit
11f4ee76
authored
Aug 09, 2021
by
yuananting
Browse files
Options
Browse Files
Download
Plain Diff
fix:解决合并人员组织架构分支的冲突
parents
422e709c
4c65917e
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
360 additions
and
251 deletions
+360
-251
src/modules/college-manage/EmployeeManage.less
+7
-0
src/modules/college-manage/EmployeeManage.tsx
+50
-19
src/modules/college-manage/components/DepartMentTabCon.jsx
+30
-12
src/modules/college-manage/components/DepartMentTabCon.less
+8
-0
src/modules/college-manage/components/LeftStructureTree.jsx
+112
-55
src/modules/college-manage/components/LeftStructureTree.less
+2
-1
src/modules/college-manage/components/MemberTree.jsx
+1
-0
src/modules/college-manage/modal/AddOrEditPostGroupModal.jsx
+12
-7
src/modules/college-manage/modal/ChooseMembersModal.jsx
+1
-1
src/modules/college-manage/modal/NewChooseMembersModal.jsx
+7
-1
src/modules/college-manage/modal/SetEmployeeModal.jsx
+19
-3
src/modules/root/Header.jsx
+3
-3
src/modules/store-manage/EmployeeAddOrEditModal.tsx
+108
-149
No files found.
src/modules/college-manage/EmployeeManage.less
View file @
11f4ee76
...
@@ -17,4 +17,10 @@
...
@@ -17,4 +17,10 @@
font-size:14px;
font-size:14px;
color:#5289FA;
color:#5289FA;
}
}
.post-name{
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
\ No newline at end of file
src/modules/college-manage/EmployeeManage.tsx
View file @
11f4ee76
...
@@ -9,7 +9,7 @@ import React, { useEffect, useState } from 'react';
...
@@ -9,7 +9,7 @@ import React, { useEffect, useState } from 'react';
import
{
withRouter
}
from
'react-router-dom'
;
import
{
withRouter
}
from
'react-router-dom'
;
import
_
from
'underscore'
;
import
_
from
'underscore'
;
import
{
CheckBox
,
PageControl
}
from
'@/components'
;
import
{
CheckBox
,
PageControl
}
from
'@/components'
;
import
{
Button
,
Table
,
Modal
,
message
,
Input
}
from
'antd'
;
import
{
Button
,
Table
,
Modal
,
message
,
Input
,
Tooltip
}
from
'antd'
;
import
{
XMTable
}
from
'@/components'
;
import
{
XMTable
}
from
'@/components'
;
import
college
from
'@/common/lottie/college.json'
;
import
college
from
'@/common/lottie/college.json'
;
import
StoreService
from
'@/domains/store-domain/storeService'
;
import
StoreService
from
'@/domains/store-domain/storeService'
;
...
@@ -33,7 +33,7 @@ interface RecordTypes {
...
@@ -33,7 +33,7 @@ interface RecordTypes {
phone
:
string
;
phone
:
string
;
avatar
?:
string
;
avatar
?:
string
;
weChatAccount
?:
string
;
weChatAccount
?:
string
;
depNameList
:
Array
<
string
>
;
depNameList
:
any
;
}
}
interface
RoleItemType
{
interface
RoleItemType
{
...
@@ -58,6 +58,7 @@ interface ChoosedItemType {
...
@@ -58,6 +58,7 @@ interface ChoosedItemType {
avatar
?:
string
;
avatar
?:
string
;
storeUserId
?:
string
;
storeUserId
?:
string
;
weChatAccount
?:
string
;
weChatAccount
?:
string
;
depNameList
?:
any
;
}
}
function
EmployeeManage
()
{
function
EmployeeManage
()
{
...
@@ -140,7 +141,7 @@ function EmployeeManage() {
...
@@ -140,7 +141,7 @@ function EmployeeManage() {
const
columns
=
[
const
columns
=
[
{
{
title
:
'员工'
,
title
:
'员工'
,
dataIndex
:
'
nickName
'
,
dataIndex
:
'
weChatAccount
'
,
render
:
(
val
:
string
,
record
:
RecordTypes
)
=>
{
render
:
(
val
:
string
,
record
:
RecordTypes
)
=>
{
return
(
return
(
<
div
className=
'employee-info'
>
<
div
className=
'employee-info'
>
...
@@ -170,14 +171,27 @@ function EmployeeManage() {
...
@@ -170,14 +171,27 @@ function EmployeeManage() {
if
(
!
record
.
depNameList
)
{
if
(
!
record
.
depNameList
)
{
return
<
span
>
-
</
span
>;
return
<
span
>
-
</
span
>;
}
}
return
record
.
depNameList
.
map
((
item
,
index
)
=>
{
if
(
record
.
depNameList
.
length
===
0
)
{
return
<
span
>
-
</
span
>;
}
// return record.depNameList.map((item,index)=>{
// return <span><WWOpenDataCom type="departmentName" openid={item}/>{index<(record.depNameList.length -1)?';':''}</span>;
// })
return
(
<
Tooltip
title=
{
<
div
>
{
handleDepName
(
record
.
depNameList
)
}
</
div
>
}
placement=
'top'
arrowPointAtCenter
>
<
div
className=
'post-name'
>
{
' '
}
{
record
.
depNameList
.
map
((
item
:
any
,
index
:
any
)
=>
{
return
(
return
(
<
span
>
<
span
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
}
/>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
}
/>
{
index
<
record
.
depNameList
.
length
-
1
?
'、
'
:
''
}
{
index
<
record
.
depNameList
.
length
-
1
?
';
'
:
''
}
</
span
>
</
span
>
);
);
});
})
}
</
div
>
</
Tooltip
>
);
},
},
},
},
{
{
...
@@ -227,8 +241,19 @@ function EmployeeManage() {
...
@@ -227,8 +241,19 @@ function EmployeeManage() {
return
columns
;
return
columns
;
}
}
function
handleDepName
(
depArray
:
any
):
any
{
const
depArrayDom
=
depArray
.
map
((
item
:
any
,
index
:
any
)
=>
{
return
(
<
span
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
}
/>
;
</
span
>
);
});
return
depArrayDom
;
}
function
handleEditEmployee
(
record
:
RecordTypes
)
{
function
handleEditEmployee
(
record
:
RecordTypes
)
{
const
{
nickName
,
phone
,
roleCodes
,
avatar
,
id
,
weChatAccount
}
=
record
;
const
{
nickName
,
phone
,
roleCodes
,
avatar
,
id
,
weChatAccount
,
depNameList
}
=
record
;
const
_choosesItem
=
{
const
_choosesItem
=
{
nickName
:
nickName
,
nickName
:
nickName
,
phone
:
phone
,
phone
:
phone
,
...
@@ -236,6 +261,7 @@ function EmployeeManage() {
...
@@ -236,6 +261,7 @@ function EmployeeManage() {
avatar
:
avatar
,
avatar
:
avatar
,
storeUserId
:
id
,
storeUserId
:
id
,
weChatAccount
,
weChatAccount
,
depNameList
:
depNameList
,
};
};
setChooseItem
(
_choosesItem
);
setChooseItem
(
_choosesItem
);
const
model
:
React
.
ReactNode
=
(
const
model
:
React
.
ReactNode
=
(
...
@@ -251,6 +277,7 @@ function EmployeeManage() {
...
@@ -251,6 +277,7 @@ function EmployeeManage() {
avatar
:
''
,
avatar
:
''
,
storeUserId
:
''
,
storeUserId
:
''
,
weChatAccount
:
''
,
weChatAccount
:
''
,
depNameList
:
[],
});
});
}
}
}
}
isWorkWechat=
{
isWorkWechat
}
isWorkWechat=
{
isWorkWechat
}
...
@@ -326,10 +353,10 @@ function EmployeeManage() {
...
@@ -326,10 +353,10 @@ function EmployeeManage() {
userType
:
'USER'
,
userType
:
'USER'
,
};
};
StoreService
.
syncWorkWeChatDepartment
(
params
).
then
((
res
)
=>
{
StoreService
.
syncWorkWeChatDepartment
(
params
).
then
((
res
)
=>
{
getEmployeeList
();
message
.
success
(
'已更新'
);
message
.
success
(
'已更新'
);
});
});
}
}
return
(
return
(
<
div
className=
'page employee-manage-page'
>
<
div
className=
'page employee-manage-page'
>
<
div
className=
'content-header'
>
角色管理
</
div
>
<
div
className=
'content-header'
>
角色管理
</
div
>
...
@@ -459,19 +486,22 @@ function EmployeeManage() {
...
@@ -459,19 +486,22 @@ function EmployeeManage() {
bordered
bordered
/>
/>
</
div
>
</
div
>
<
div
className=
'box-footer'
>
{
model
}
<
PageControl
{
employeeModal
&&
(
current=
{
query
.
current
}
<
NewChooseMembersModal
pageSize=
{
query
.
size
}
treeDepType=
'DEP_CHAT'
total=
{
total
}
visible=
{
employeeModal
}
toPage=
{
(
page
:
any
)
=>
{
type=
'USER'
const
queryStates
=
_
.
clone
(
query
);
close=
{
()
=>
{
queryStates
.
current
=
page
;
setEmployeeModal
(
false
);
setQuery
(
queryStates
);
}
}
onConfirm=
{
()
=>
{
setEmployeeModal
(
false
);
message
.
success
(
'添加成功'
);
getEmployeeList
();
}
}
}
}
/>
/>
</
div
>
)
}
</
div
>
{
model
}
{
model
}
{
employeeModal
&&
(
{
employeeModal
&&
(
<
NewChooseMembersModal
<
NewChooseMembersModal
...
@@ -489,6 +519,7 @@ function EmployeeManage() {
...
@@ -489,6 +519,7 @@ function EmployeeManage() {
/>
/>
)
}
)
}
</
div
>
</
div
>
</
div
>
);
);
}
}
...
...
src/modules/college-manage/components/DepartMentTabCon.jsx
View file @
11f4ee76
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
,
message
,
Modal
}
from
"antd"
;
import
{
Button
,
Input
,
message
,
Modal
,
Tooltip
}
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"
;
...
@@ -37,8 +37,8 @@ function DepartMentTabCon(props) {
...
@@ -37,8 +37,8 @@ function DepartMentTabCon(props) {
return
(
return
(
<
div
>
<
div
>
{
item
.
sourceEnum
===
"WORK_WE_CHAT"
?
{
item
.
sourceEnum
===
"WORK_WE_CHAT"
?
<
span
>
<
WWOpenDataCom
type=
"userName"
openid=
{
val
}
/></
span
>:
<
Tooltip
title=
{
<
div
><
WWOpenDataCom
type=
"userName"
openid=
{
val
}
/></
div
>
}
><
span
className=
"student-name"
><
WWOpenDataCom
type=
"userName"
openid=
{
val
}
/></
span
></
Tooltip
>:
<
span
>
{
val
}
</
span
>
<
Tooltip
title=
{
val
}
><
span
className=
"student-name"
>
{
val
}
</
span
></
Tooltip
>
}
}
<
span
<
span
className=
"tag"
className=
"tag"
...
@@ -73,17 +73,17 @@ function DepartMentTabCon(props) {
...
@@ -73,17 +73,17 @@ function DepartMentTabCon(props) {
title
:
"岗位"
,
title
:
"岗位"
,
dataIndex
:
"depNameList"
,
dataIndex
:
"depNameList"
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
if
(
!
record
.
depNameList
){
if
(
!
record
.
depNameList
){
return
<
span
>
-
</
span
>
return
<
span
>
-
</
span
>
}
else
{
}
else
{
if
(
record
.
depNameList
.
length
===
0
){
if
(
record
.
depNameList
.
length
===
0
){
return
<
span
>
-
</
span
>
return
<
span
>
-
</
span
>
}
}
return
<
div
className=
"post-name"
>
{
record
.
depNameList
.
map
((
item
,
index
)
=>
{
return
<
Tooltip
title=
{
handleDepName
(
record
.
depNameList
)
}
placement=
'top'
arrowPointAtCenter
><
div
className=
"post-name"
>
{
record
.
depNameList
.
map
((
item
,
index
)
=>
{
return
<
span
>
{
item
}{
index
!==
record
.
depNameList
.
length
-
1
&&
<
span
>
、
</
span
>
}
</
span
>;
return
<
span
>
{
item
}{
index
!==
record
.
depNameList
.
length
-
1
&&
<
span
>
;
</
span
>
}
</
span
>
})
}
})
}
</
div
>
</
div
>
</
Tooltip
>
}
}
}
}
...
@@ -92,7 +92,11 @@ function DepartMentTabCon(props) {
...
@@ -92,7 +92,11 @@ function DepartMentTabCon(props) {
title
:
"手机号"
,
title
:
"手机号"
,
dataIndex
:
"phone"
,
dataIndex
:
"phone"
,
render
:
(
val
,
item
)
=>
{
render
:
(
val
,
item
)
=>
{
return
<
span
>
{
val
}
</
span
>;
if
(
!
val
){
return
<
span
>
-
</
span
>
}
else
{
return
<
span
>
{
item
.
phone
}
</
span
>
}
},
},
},
},
{
{
...
@@ -110,7 +114,8 @@ function DepartMentTabCon(props) {
...
@@ -110,7 +114,8 @@ function DepartMentTabCon(props) {
return
(
return
(
<
div
className=
"operate"
>
<
div
className=
"operate"
>
{
props
.
currentTab
===
'departMentTab'
?
{
props
.
currentTab
===
'departMentTab'
?
<
div
className=
"operate__item"
onClick=
{
()
=>
delUser
(
'single'
,
item
.
userId
)
}
>
删除
</
div
>
<
span
>
-
</
span
>
// <div className="operate__item" onClick=
{()
=>
delUser
(
'single'
,
item
.
userId
)}
>
删除
<
/div
>
:
:
<
div
className=
"operate__item"
onClick=
{
()
=>
delUser
(
'single'
,
item
.
userId
)
}
>
移出
</
div
>
<
div
className=
"operate__item"
onClick=
{
()
=>
delUser
(
'single'
,
item
.
userId
)
}
>
移出
</
div
>
}
}
...
@@ -119,6 +124,17 @@ function DepartMentTabCon(props) {
...
@@ -119,6 +124,17 @@ function DepartMentTabCon(props) {
},
},
},
},
];
];
function
handleDepName
(
depArray
){
let
depStr
=
''
;
depArray
.
forEach
((
item
,
index
)
=>
{
if
(
index
<
depArray
.
length
-
1
)
{
depStr
=
depStr
+
item
+
';'
;
}
else
{
depStr
=
depStr
+
item
;
}
});
return
depStr
;
};
function
closeChooseMembersModal
()
{
function
closeChooseMembersModal
()
{
setChooseMembersModalVisible
(
false
);
setChooseMembersModalVisible
(
false
);
}
}
...
@@ -197,7 +213,7 @@ function DepartMentTabCon(props) {
...
@@ -197,7 +213,7 @@ function DepartMentTabCon(props) {
storeId
:
User
.
getStoreId
()
storeId
:
User
.
getStoreId
()
}
}
console
.
log
(
'selectDep'
,
selectDep
)
console
.
log
(
'selectDep'
,
selectDep
)
if
(
selectDep
.
id
===
'1
00'
){
if
(
selectDep
.
depId
===
'100
00'
){
params
.
userType
=
'WE_CHAT'
;
params
.
userType
=
'WE_CHAT'
;
}
else
{
}
else
{
params
.
userType
=
'WORK_WE_CHAT'
;
params
.
userType
=
'WORK_WE_CHAT'
;
...
@@ -205,7 +221,7 @@ function DepartMentTabCon(props) {
...
@@ -205,7 +221,7 @@ function DepartMentTabCon(props) {
StoreService
.
delDepartmentUser
(
params
).
then
((
res
)
=>
{
StoreService
.
delDepartmentUser
(
params
).
then
((
res
)
=>
{
message
.
success
(
`删除成功`
);
message
.
success
(
`删除成功`
);
getUserList
();
getUserList
();
Bus
.
trigger
(
"changeTreeData"
);
Bus
.
trigger
(
"changeTreeData"
,{
treeType
:
props
.
currentTab
}
);
});
});
}
}
function
handleSelectUserList
(
record
,
selected
){
function
handleSelectUserList
(
record
,
selected
){
...
@@ -281,7 +297,7 @@ function DepartMentTabCon(props) {
...
@@ -281,7 +297,7 @@ function DepartMentTabCon(props) {
<
div
className=
"table-con"
>
<
div
className=
"table-con"
>
{
props
.
currentTab
===
"departMentTab"
&&
(
{
props
.
currentTab
===
"departMentTab"
&&
(
<
div
className=
"operate-area"
>
<
div
className=
"operate-area"
>
{
selectDep
.
id
!==
'1
00'
&&
{
selectDep
.
depId
!==
'100
00'
&&
<
Button
<
Button
type=
"primary"
type=
"primary"
className=
"add-user-btn"
className=
"add-user-btn"
...
@@ -292,8 +308,10 @@ function DepartMentTabCon(props) {
...
@@ -292,8 +308,10 @@ function DepartMentTabCon(props) {
添加学员
添加学员
</
Button
>
</
Button
>
}
}
{
(
props
.
currentTab
===
"postGrouptab"
||
props
.
currentTab
===
"customGroupTab"
)
&&
<
Button
className=
"del-user-btn"
onClick=
{
()
=>
delUser
(
'multiple'
)
}
>
删除学员
</
Button
>
<
Button
className=
"del-user-btn"
onClick=
{
()
=>
delUser
(
'multiple'
)
}
>
删除学员
</
Button
>
{
selectDep
.
id
!==
'100'
&&
}
{
selectDep
.
depId
!==
'10000'
&&
<>
<>
<
Button
className=
"update-user-btn"
onClick=
{
()
=>
{
updateListData
()}
}
>
更新列表数据
</
Button
>
<
Button
className=
"update-user-btn"
onClick=
{
()
=>
{
updateListData
()}
}
>
更新列表数据
</
Button
>
<
span
className=
"origin-text"
>
数据来源企业微信通讯录
</
span
>
<
span
className=
"origin-text"
>
数据来源企业微信通讯录
</
span
>
...
...
src/modules/college-manage/components/DepartMentTabCon.less
View file @
11f4ee76
...
@@ -9,6 +9,14 @@
...
@@ -9,6 +9,14 @@
text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
white-space: nowrap;
}
}
.student-name{
max-width: 120px;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
vertical-align: middle;
display: inline-block;
}
.operate-area{
.operate-area{
margin-bottom:16px;
margin-bottom:16px;
.add-user-btn{
.add-user-btn{
...
...
src/modules/college-manage/components/LeftStructureTree.jsx
View file @
11f4ee76
...
@@ -24,10 +24,32 @@ function LeftStructureTree(props) {
...
@@ -24,10 +24,32 @@ function LeftStructureTree(props) {
const
[
currentGroupData
,
setCurrentGroupData
]
=
useState
({});
const
[
currentGroupData
,
setCurrentGroupData
]
=
useState
({});
const
[
completeOptions
,
setCompleteOption
]
=
useState
([]);
const
[
completeOptions
,
setCompleteOption
]
=
useState
([]);
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
([]);
// 设置选中的部门key值
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
([]);
// 设置选中的部门key值
const
[
queryName
,
setQueryName
]
=
useState
(
''
);
const
[
queryName
,
setQueryName
]
=
useState
(
''
);
// 搜索框内的值
const
[
postGroupTreeData
,
setPostGroupTreeData
]
=
useState
([]);
const
[
selctQueryName
,
setSelctQueryName
]
=
useState
(
''
);
// 搜索出结果后最终选择的名字
const
[
postGroupTreeData
,
setPostGroupTreeData
]
=
useState
([]);
// 为了判定创建和编辑时的数据会不会重明
const
[
open
,
setOpen
]
=
useState
(
false
);
const
[
open
,
setOpen
]
=
useState
(
false
);
useEffect
(()
=>
{
setQueryName
(
''
);
//切换tab时搜索置空
setCompleteOption
([]);
setOpen
(
false
);
//切换tab时搜索的下拉框置为空
getTreeData
().
then
((
res
)
=>
{
const
_defaultSelectedKeys
=
[];
if
(
res
.
length
>
0
){
_defaultSelectedKeys
.
push
(
res
[
0
].
id
);
setSelectedKeys
(
_defaultSelectedKeys
);
props
.
onChangeSelectDep
(
res
[
0
])
props
.
searchUserList
(
res
[
0
],
treeType
,
1
);
}
});
},[
props
.
treeType
]);
useEffect
(()
=>
{
Bus
.
bind
(
"addCustomer"
,(
record
)
=>
{
addCustomer
(
record
.
treeType
,
record
.
query
)})
},[]);
useEffect
(()
=>
{
Bus
.
bind
(
"changeTreeData"
,(
record
)
=>
{
getTreeData
(
record
.
treeType
)})
},[]);
const
renderTitle
=
(
title
)
=>
(
const
renderTitle
=
(
title
)
=>
(
<
span
>
<
span
>
{
title
}
{
title
}
...
@@ -62,33 +84,28 @@ function LeftStructureTree(props) {
...
@@ -62,33 +84,28 @@ function LeftStructureTree(props) {
const
notFoundContentNode
=
()
=>
{
const
notFoundContentNode
=
()
=>
{
return
<
span
>
暂无数据
</
span
>
return
<
span
>
暂无数据
</
span
>
}
}
function
handlePlaceHolder
(){
const
Complete
=
()
=>
(
let
placeholder
=
''
;
<
AutoComplete
switch
(
props
.
treeType
){
dropdownClassName=
"certain-category-search-dropdown"
case
'departMentTab'
:
dropdownMatchSelectWidth=
{
250
}
placeholder
=
'搜索学员姓名、部门'
;
allowClear
break
;
// onChange={(value)=>{setQueryName(value)}}
case
'postGrouptab'
:
onSearch=
{
(
value
)
=>
{
setQueryName
(
value
)}
}
placeholder
=
'搜索学员姓名/岗位/岗位组'
;
notFoundContent=
{
notFoundContentNode
()
}
break
;
value=
{
queryName
}
case
'customGroupTab'
:
open=
{
open
}
placeholder
=
'搜索学员姓名/自定义分组集合/自定义分组'
;
onFocus=
{
()
=>
{
setOpen
(
true
)}
}
break
;
onBlur=
{
()
=>
{
setOpen
(
false
)}
}
default
:
style=
{
{
break
;
width
:
250
,
}
}
}
return
placeholder
options=
{
completeOptions
}
}
onSelect=
{
confirmSearchSelect
}
placeholder=
'搜索员工、部门'
>
</
AutoComplete
>
);
function
confirmSearchSelect
(
value
,
option
){
function
confirmSearchSelect
(
value
,
option
){
console
.
log
(
'option'
,
option
);
setOpen
(
false
);
setOpen
(
false
);
setQueryName
(
value
);
setQueryName
(
value
);
// console.log('option',option);
// setSelctQueryName(option)
props
.
searchUserList
({
queryName
:
value
},
treeType
,
1
);
props
.
searchUserList
({
queryName
:
value
},
treeType
,
1
);
}
}
...
@@ -115,7 +132,7 @@ function LeftStructureTree(props) {
...
@@ -115,7 +132,7 @@ function LeftStructureTree(props) {
const
{
result
=
{}}
=
res
;
const
{
result
=
{}}
=
res
;
const
{
departmentUserVOList
=
[],
departmentVOList
=
[],
subLevelDepartmentVOList
=
[]}
=
result
;
const
{
departmentUserVOList
=
[],
departmentVOList
=
[],
subLevelDepartmentVOList
=
[]}
=
result
;
if
(
departmentUserVOList
.
length
>
0
){
if
(
departmentUserVOList
.
length
>
0
){
userObj
.
label
=
renderTitle
(
'
员工
'
);
userObj
.
label
=
renderTitle
(
'
学员
'
);
userObj
.
options
=
departmentUserVOList
.
map
((
item
,
index
)
=>
{
userObj
.
options
=
departmentUserVOList
.
map
((
item
,
index
)
=>
{
return
renderItem
(
item
,
'user'
);
return
renderItem
(
item
,
'user'
);
})
})
...
@@ -166,27 +183,7 @@ function LeftStructureTree(props) {
...
@@ -166,27 +183,7 @@ function LeftStructureTree(props) {
});
});
}
}
useEffect
(()
=>
{
setQueryName
(
''
);
//切换tab时搜索置空
setCompleteOption
([]);
setOpen
(
false
);
//切换tab时搜索的下拉框置为空
getTreeData
().
then
((
res
)
=>
{
const
_defaultSelectedKeys
=
[];
if
(
res
.
length
>
0
){
_defaultSelectedKeys
.
push
(
res
[
0
].
id
);
setSelectedKeys
(
_defaultSelectedKeys
);
props
.
onChangeSelectDep
(
res
[
0
])
props
.
searchUserList
(
res
[
0
],
treeType
,
1
);
}
});
},[
props
.
treeType
]);
useEffect
(()
=>
{
Bus
.
bind
(
"addCustomer"
,(
record
)
=>
{
addCustomer
(
record
.
treeType
,
record
.
query
)})
},[]);
useEffect
(()
=>
{
Bus
.
bind
(
"changeTreeData"
,(
record
)
=>
{
getTreeData
()})
},[]);
async
function
addCustomer
(
treeType
,
query
){
async
function
addCustomer
(
treeType
,
query
){
await
getTreeData
(
treeType
);
await
getTreeData
(
treeType
);
props
.
searchUserList
(
query
,
treeType
,
1
);
props
.
searchUserList
(
query
,
treeType
,
1
);
...
@@ -214,6 +211,7 @@ function LeftStructureTree(props) {
...
@@ -214,6 +211,7 @@ function LeftStructureTree(props) {
}
}
function
handleData
(
dataArray
){
function
handleData
(
dataArray
){
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
item
.
title
=
""
;
item
.
key
=
item
.
id
;
item
.
key
=
item
.
id
;
if
(
item
.
sonDepartmentVOList
){
if
(
item
.
sonDepartmentVOList
){
item
.
children
=
item
.
sonDepartmentVOList
;
item
.
children
=
item
.
sonDepartmentVOList
;
...
@@ -260,10 +258,21 @@ function LeftStructureTree(props) {
...
@@ -260,10 +258,21 @@ function LeftStructureTree(props) {
//添加岗位组/岗位
//添加岗位组/岗位
function
addPostGroup
(
level
,
record
)
{
function
addPostGroup
(
level
,
record
)
{
if
(
treeData
.
length
===
10
)
{
if
(
level
===
0
){
if
(
treeData
.
length
>
9
)
{
message
.
error
(
"岗位组数量已达10个上限"
);
message
.
error
(
"岗位组数量已达10个上限"
);
return
;
return
;
}
}
}
if
(
level
===
1
){
if
(
record
.
sonDepartmentVOList
){
if
(
record
.
sonDepartmentVOList
.
length
>
19
){
message
.
error
(
"岗位数量已达20个上限"
);
return
;
}
}
}
setCurrentGroupData
({});
setCurrentGroupData
({});
setAddOrEditPostGroupShow
(
true
);
setAddOrEditPostGroupShow
(
true
);
setOperatePostGroupModalType
(
"add"
);
setOperatePostGroupModalType
(
"add"
);
...
@@ -295,8 +304,19 @@ function LeftStructureTree(props) {
...
@@ -295,8 +304,19 @@ function LeftStructureTree(props) {
}
else
{
}
else
{
setPostGroupModalTitle
(
'编辑岗位'
);
setPostGroupModalTitle
(
'编辑岗位'
);
setPostGroupModalLable
(
'岗位'
);
setPostGroupModalLable
(
'岗位'
);
setPostGroupTreeData
([]);
setPostGroupTreeData
(
getParentChildernData
(
record
.
parentId
));
}
}
}
// 获取父节点下的所有的子级数据
function
getParentChildernData
(
parentId
){
let
_parentChildernData
=
[]
treeData
.
map
((
item
,
index
)
=>
{
if
(
parentId
===
item
.
id
){
_parentChildernData
=
item
.
sonDepartmentVOList
}
})
return
_parentChildernData
}
}
function
delPostGroup
(
record
){
function
delPostGroup
(
record
){
let
title
=
'确认删除该岗位组吗?'
;
let
title
=
'确认删除该岗位组吗?'
;
...
@@ -336,10 +356,20 @@ function LeftStructureTree(props) {
...
@@ -336,10 +356,20 @@ function LeftStructureTree(props) {
//添加自定义分组集合/分组
//添加自定义分组集合/分组
function
addCustomGroup
(
level
,
record
)
{
function
addCustomGroup
(
level
,
record
)
{
if
(
treeData
.
length
===
10
)
{
if
(
level
===
0
){
message
.
error
(
"岗位组数量已达10个上限"
);
if
(
treeData
.
length
>
9
)
{
message
.
error
(
"自定义分组集合数量已达10个上限"
);
return
;
return
;
}
}
}
if
(
level
===
1
){
if
(
record
.
sonDepartmentVOList
){
if
(
record
.
sonDepartmentVOList
.
length
>
19
){
message
.
error
(
"自定义分组数量已达20个上限"
);
return
;
}
}
}
setCurrentGroupData
({});
setCurrentGroupData
({});
setAddOrEditPostGroupShow
(
true
);
setAddOrEditPostGroupShow
(
true
);
setOperatePostGroupModalType
(
"add"
);
setOperatePostGroupModalType
(
"add"
);
...
@@ -362,14 +392,14 @@ function LeftStructureTree(props) {
...
@@ -362,14 +392,14 @@ function LeftStructureTree(props) {
setPostGroupModalLevel
(
record
.
level
);
setPostGroupModalLevel
(
record
.
level
);
setCurrentGroupData
(
record
)
setCurrentGroupData
(
record
)
//level为0的时候编辑的是岗位组 大于0的时候
//level为0的时候编辑的是岗位组 大于0的时候
if
(
record
.
l
evel
===
0
){
if
(
record
.
depL
evel
===
0
){
setPostGroupModalTitle
(
'编辑分组集合'
);
setPostGroupModalTitle
(
'编辑分组集合'
);
setPostGroupModalLable
(
'分组集合'
);
setPostGroupModalLable
(
'分组集合'
);
setPostGroupTreeData
(
treeData
);
setPostGroupTreeData
(
treeData
);
}
else
{
}
else
{
setPostGroupModalTitle
(
'编辑分组'
);
setPostGroupModalTitle
(
'编辑分组'
);
setPostGroupModalLable
(
'分组'
);
setPostGroupModalLable
(
'分组'
);
setPostGroupTreeData
(
[]
);
setPostGroupTreeData
(
getParentChildernData
(
record
.
parentId
)
);
}
}
}
}
function
delCustomGroup
(
record
){
function
delCustomGroup
(
record
){
...
@@ -428,7 +458,7 @@ function LeftStructureTree(props) {
...
@@ -428,7 +458,7 @@ function LeftStructureTree(props) {
}
}
}
}
options=
{
completeOptions
}
options=
{
completeOptions
}
onSelect=
{
confirmSearchSelect
}
onSelect=
{
confirmSearchSelect
}
placeholder=
'搜索员工、部门'
placeholder=
{
handlePlaceHolder
()
}
>
>
</
AutoComplete
>
</
AutoComplete
>
</
div
>
</
div
>
...
@@ -457,6 +487,7 @@ function LeftStructureTree(props) {
...
@@ -457,6 +487,7 @@ function LeftStructureTree(props) {
</
div
>
</
div
>
)
}
)
}
<
div
className=
"tree-con"
>
<
div
className=
"tree-con"
>
{
!
selctQueryName
?
<
DirectoryTree
<
DirectoryTree
defaultExpandAll
defaultExpandAll
showIcon=
{
false
}
showIcon=
{
false
}
...
@@ -532,6 +563,32 @@ function LeftStructureTree(props) {
...
@@ -532,6 +563,32 @@ function LeftStructureTree(props) {
);
);
}
}
}
}
/>
/>
:
<
div
>
{
(
props
.
treeType
===
'departMentTab'
)
&&
<
div
>
{
option
.
name
?
<
WWOpenDataCom
type=
"departmentName"
openid=
{
option
.
name
}
/>
:
<
WWOpenDataCom
type=
"userName"
openid=
{
option
.
userName
}
/>
}
</
div
>
}
{
(
props
.
treeType
===
'postGrouptab'
||
props
.
treeType
===
'customGroupTab'
)
&&
<
div
>
{
option
.
name
?
<
span
>
{
option
.
name
}
</
span
>
:
<
span
>
{
option
.
userName
}
</
span
>
}
</
div
>
}
</
div
>
}
</
div
>
</
div
>
</
div
>
</
div
>
{
addOrEditPostGroupShow
&&
(
{
addOrEditPostGroupShow
&&
(
...
...
src/modules/college-manage/components/LeftStructureTree.less
View file @
11f4ee76
.left-structure-tree {
.left-structure-tree {
margin-right: 24px;
margin-right: 24px;
width:2
5
0px;
width:2
6
0px;
height: calc(~'100vh - 260px');
height: calc(~'100vh - 260px');
overflow-y: scroll;
.organization{
.organization{
overflow: scroll;
overflow: scroll;
.search-con{
.search-con{
...
...
src/modules/college-manage/components/MemberTree.jsx
View file @
11f4ee76
...
@@ -38,6 +38,7 @@ function MemberTree(props) {
...
@@ -38,6 +38,7 @@ function MemberTree(props) {
}
}
function
handleData
(
dataArray
){
function
handleData
(
dataArray
){
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
const
_dataArray
=
dataArray
.
map
((
item
,
index
)
=>
{
item
.
title
=
""
;
item
.
key
=
item
.
id
;
item
.
key
=
item
.
id
;
item
.
children
=
[]
item
.
children
=
[]
if
(
item
.
departmentUserVOList
){
if
(
item
.
departmentUserVOList
){
...
...
src/modules/college-manage/modal/AddOrEditPostGroupModal.jsx
View file @
11f4ee76
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: wufan
* @Author: wufan
* @Date: 2020-11-27 16:21:49
* @Date: 2020-11-27 16:21:49
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-08-0
3 17:23:4
0
* @LastEditTime: 2021-08-0
6 17:10:5
0
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -16,25 +16,29 @@ function AddOrEditPostGroupModal(props) {
...
@@ -16,25 +16,29 @@ function AddOrEditPostGroupModal(props) {
const
[
nameErrorMsg
,
setNameErrorMsg
]
=
useState
(
''
);
const
[
nameErrorMsg
,
setNameErrorMsg
]
=
useState
(
''
);
const
[
validateStatus
,
setValidateStatus
]
=
useState
(
'success'
);
const
[
validateStatus
,
setValidateStatus
]
=
useState
(
'success'
);
const
[
postGroupName
,
setPostGroupName
]
=
useState
(
''
);
const
[
postGroupName
,
setPostGroupName
]
=
useState
(
''
);
const
[
isError
,
setIsError
]
=
useState
(
false
)
useEffect
(()
=>
{
useEffect
(()
=>
{
},[]);
},[]);
function
changePostGroupName
(
e
){
function
changePostGroupName
(
e
){
let
isError
=
false
;
setIsError
(
false
)
setValidateStatus
(
'success'
);
setValidateStatus
(
'success'
);
setNameErrorMsg
(
''
);
setNameErrorMsg
(
''
);
if
((
!
e
.
target
.
value
)
||
/^
\s
+$/
.
test
(
e
.
target
.
value
)){
setValidateStatus
(
'error'
);
setNameErrorMsg
(
`
${
props
.
label
}
不能为空`
);
setIsError
(
true
)
}
props
.
postGroupTreeData
.
map
((
item
,
index
)
=>
{
props
.
postGroupTreeData
.
map
((
item
,
index
)
=>
{
if
(
item
.
name
===
e
.
target
.
value
){
if
(
item
.
name
===
e
.
target
.
value
){
setValidateStatus
(
'error'
);
setValidateStatus
(
'error'
);
setNameErrorMsg
(
`该
${
props
.
label
}
已存在`
);
setNameErrorMsg
(
`该
${
props
.
label
}
已存在`
);
isError
=
true
;
setIsError
(
true
)
}
}
return
item
;
return
item
;
})
})
if
(
!
isError
){
setPostGroupName
(
e
.
target
.
value
);
setPostGroupName
(
e
.
target
.
value
);
}
}
}
function
handleConfirm
(){
function
handleConfirm
(){
if
(
props
.
modalOperateType
===
'add'
){
if
(
props
.
modalOperateType
===
'add'
){
...
@@ -44,10 +48,11 @@ function AddOrEditPostGroupModal(props) {
...
@@ -44,10 +48,11 @@ function AddOrEditPostGroupModal(props) {
}
}
}
}
function
addGroup
(){
function
addGroup
(){
if
(
!
postGroupName
){
if
(
isError
){
return
;
return
;
}
}
const
{
postGroupModalLevel
,
currentTab
,
currentGroupData
,
label
}
=
props
const
{
postGroupModalLevel
,
currentTab
,
currentGroupData
,
label
}
=
props
let
parmas
=
{
let
parmas
=
{
depLevel
:
postGroupModalLevel
,
depLevel
:
postGroupModalLevel
,
depType
:
DepType
[
currentTab
],
depType
:
DepType
[
currentTab
],
...
@@ -68,7 +73,7 @@ function AddOrEditPostGroupModal(props) {
...
@@ -68,7 +73,7 @@ function AddOrEditPostGroupModal(props) {
});
});
}
}
function
editGroup
(){
function
editGroup
(){
if
(
!
postGroupName
){
if
(
isError
){
return
;
return
;
}
}
const
{
postGroupModalLevel
,
currentTab
,
currentGroupData
,
label
}
=
props
const
{
postGroupModalLevel
,
currentTab
,
currentGroupData
,
label
}
=
props
...
...
src/modules/college-manage/modal/ChooseMembersModal.jsx
View file @
11f4ee76
...
@@ -16,7 +16,6 @@ import './ChooseMembersModal.less';
...
@@ -16,7 +16,6 @@ import './ChooseMembersModal.less';
import
_
from
'underscore'
;
import
_
from
'underscore'
;
const
{
Search
}
=
Input
;
const
{
Search
}
=
Input
;
class
ChooseMembersModal
extends
React
.
Component
{
class
ChooseMembersModal
extends
React
.
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
...
@@ -162,6 +161,7 @@ class ChooseMembersModal extends React.Component {
...
@@ -162,6 +161,7 @@ class ChooseMembersModal extends React.Component {
})
})
}
}
})
})
}
}
addCustomer
=
()
=>
{
addCustomer
=
()
=>
{
...
...
src/modules/college-manage/modal/NewChooseMembersModal.jsx
View file @
11f4ee76
...
@@ -119,9 +119,15 @@ class NewChooseMembersModal extends React.Component {
...
@@ -119,9 +119,15 @@ class NewChooseMembersModal extends React.Component {
_item
.
departmentId
=
item
.
departmentId
;
_item
.
departmentId
=
item
.
departmentId
;
_item
.
enterpriseVisibleUserId
=
item
.
userId
;
_item
.
enterpriseVisibleUserId
=
item
.
userId
;
}
else
{
}
else
{
if
(
item
.
depId
===
'10000'
){
_item
.
depUserType
=
'WE_CHART_USER'
;
// depid=10000代表是微信学员
_item
.
userId
=
item
.
userId
;
}
else
{
_item
.
depUserType
=
'STORE_USER'
;
_item
.
depUserType
=
'STORE_USER'
;
_item
.
departmentId
=
this
.
props
.
selectDep
.
id
;
}
_item
.
enterpriseVisibleUserId
=
item
.
enterpriseUserId
;
_item
.
enterpriseVisibleUserId
=
item
.
enterpriseUserId
;
_item
.
departmentId
=
this
.
props
.
selectDep
.
id
;
}
}
return
_item
return
_item
})
})
...
...
src/modules/college-manage/modal/SetEmployeeModal.jsx
View file @
11f4ee76
...
@@ -19,10 +19,25 @@ export default class SetEmployeeModal extends React.Component {
...
@@ -19,10 +19,25 @@ export default class SetEmployeeModal extends React.Component {
})
})
const
selectedData
=
list
[
0
]
||
{};
const
selectedData
=
list
[
0
]
||
{};
this
.
state
=
{
this
.
state
=
{
list
,
list
:
this
.
uniqArr
([...
list
])
,
selected
:
selectedData
.
userId
,
selected
:
selectedData
.
userId
,
roleCode
:
selectedData
.
roleCode
,
roleCode
:
selectedData
.
roleCode
,
submit
:
false
}
}
uniqArr
(
arr
){
let
obj
=
{};
arr
.
map
((
item
,
index
)
=>
{
// 若重复则删除该项
if
(
obj
.
hasOwnProperty
(
item
.
userId
)){
arr
.
splice
(
index
,
1
);
// 不重复则存入obj
}
else
{
obj
[
item
.
userId
]
=
item
.
userName
;
}
}
});
return
arr
;
}
}
handleChangeValues
(
value
)
{
handleChangeValues
(
value
)
{
...
@@ -33,7 +48,7 @@ export default class SetEmployeeModal extends React.Component {
...
@@ -33,7 +48,7 @@ export default class SetEmployeeModal extends React.Component {
}
}
})
})
this
.
props
.
onChange
(
selected
,
value
);
this
.
props
.
onChange
(
selected
,
value
);
this
.
setState
({
roleCode
:
value
,
list
});
this
.
setState
({
roleCode
:
value
,
list
});
}
}
render
()
{
render
()
{
...
@@ -41,6 +56,7 @@ export default class SetEmployeeModal extends React.Component {
...
@@ -41,6 +56,7 @@ export default class SetEmployeeModal extends React.Component {
list
,
list
,
roleCode
,
roleCode
,
selected
,
selected
,
submit
}
=
this
.
state
;
}
=
this
.
state
;
return
(
return
(
<
Modal
<
Modal
...
@@ -55,7 +71,7 @@ export default class SetEmployeeModal extends React.Component {
...
@@ -55,7 +71,7 @@ export default class SetEmployeeModal extends React.Component {
<
div
className=
"modal-footer"
>
<
div
className=
"modal-footer"
>
<
Button
style=
{
{
float
:
'left'
}
}
onClick=
{
()
=>
this
.
props
.
onClose
()
}
>
上一步
</
Button
>
<
Button
style=
{
{
float
:
'left'
}
}
onClick=
{
()
=>
this
.
props
.
onClose
()
}
>
上一步
</
Button
>
<
Button
onClick=
{
()
=>
this
.
props
.
onCancel
()
}
>
取消
</
Button
>
<
Button
onClick=
{
()
=>
this
.
props
.
onCancel
()
}
>
取消
</
Button
>
<
Button
onClick=
{
()
=>
this
.
props
.
onOk
(
list
)
}
type=
"primary"
>
确定
</
Button
>
<
Button
onClick=
{
()
=>
{
this
.
setState
({
submit
:
true
},()
=>
this
.
props
.
onOk
(
list
))}
}
type=
"primary"
disabled=
{
submit
}
>
确定
</
Button
>
</
div
>
</
div
>
}
}
>
>
...
...
src/modules/root/Header.jsx
View file @
11f4ee76
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2019-09-10 18:26:03
* @Date: 2019-09-10 18:26:03
* @LastEditors: yuananting
* @LastEditors: yuananting
* @LastEditTime: 2021-08-0
5 19:50:53
* @LastEditTime: 2021-08-0
9 19:20:55
* @Description:
* @Description:
*/
*/
import
React
,
{
useRef
,
useContext
,
useEffect
,
useState
}
from
'react'
;
import
React
,
{
useRef
,
useContext
,
useEffect
,
useState
}
from
'react'
;
...
@@ -76,8 +76,8 @@ function Header(props) {
...
@@ -76,8 +76,8 @@ function Header(props) {
storeUserId
:
User
.
getStoreUserId
(),
storeUserId
:
User
.
getStoreUserId
(),
};
};
BaseService
.
getStoreUser
(
param
).
then
((
res
)
=>
{
BaseService
.
getStoreUser
(
param
).
then
((
res
)
=>
{
const
{
nickName
,
phone
}
=
res
.
result
;
const
{
weChatAccount
,
phone
}
=
res
.
result
;
setNickName
(
nickName
);
setNickName
(
weChatAccount
);
setPhone
(
phone
);
setPhone
(
phone
);
setAvatar
(
res
.
result
.
avatar
);
setAvatar
(
res
.
result
.
avatar
);
User
.
setAvatar
(
res
.
result
.
avatar
);
User
.
setAvatar
(
res
.
result
.
avatar
);
...
...
src/modules/store-manage/EmployeeAddOrEditModal.tsx
View file @
11f4ee76
/*
/*
* @Author: wufan
* @Author: wufan
* @Date: 2020-11-27 16:21:49
* @Date: 2020-11-27 16:21:49
* @LastEditors:
wufan
* @LastEditors:
yuananting
* @LastEditTime: 2021-0
7-29 14:51:26
* @LastEditTime: 2021-0
8-09 19:20:49
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
React
,
{
useState
,
useEffect
}
from
"react"
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
import
{
Modal
,
Form
,
Button
,
Input
,
InputNumber
,
Radio
,
Row
,
Col
,
message
,
Tooltip
}
from
'antd'
;
Modal
,
import
_
,
{
values
}
from
'underscore'
;
Form
,
import
'./EmployeeAddOrEditModal.less'
;
Button
,
import
{
CropperModal
}
from
'@/components/'
;
Input
,
import
StoreService
from
'@/domains/store-domain/storeService'
;
InputNumber
,
import
WWOpenDataCom
from
'@/components/WWOpenDataCom'
;
Radio
,
import
$
from
'jquery'
;
Row
,
import
User
from
'@/common/js/user'
;
Col
,
message
,
Tooltip
,
}
from
"antd"
;
import
_
,
{
values
}
from
"underscore"
;
import
"./EmployeeAddOrEditModal.less"
;
import
{
CropperModal
}
from
"@/components/"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
$
from
"jquery"
;
import
User
from
"@/common/js/user"
;
const
RadioGroup
=
Radio
.
Group
;
const
RadioGroup
=
Radio
.
Group
;
declare
let
window
:
any
;
declare
let
window
:
any
;
...
@@ -36,39 +26,31 @@ interface AddEmployeeModalProps {
...
@@ -36,39 +26,31 @@ interface AddEmployeeModalProps {
role
:
Array
<
string
>
;
role
:
Array
<
string
>
;
avatar
?:
string
;
avatar
?:
string
;
storeUserId
?:
string
;
storeUserId
?:
string
;
weChatAccount
?:
string
weChatAccount
?:
string
;
depNameList
?:
any
;
};
};
onClose
:
()
=>
void
;
onClose
:
()
=>
void
;
isWorkWechat
:
boolean
;
isWorkWechat
:
boolean
;
}
}
function
AddEmployeeModal
(
props
:
AddEmployeeModalProps
)
{
function
AddEmployeeModal
(
props
:
AddEmployeeModalProps
)
{
const
[
nickName
,
setName
]
=
useState
(
""
);
const
[
nickName
,
setName
]
=
useState
(
''
);
const
[
phone
,
setPhone
]
=
useState
(
""
);
const
[
phone
,
setPhone
]
=
useState
(
''
);
const
[
role
,
setRole
]
=
useState
(
"CloudLecturer"
);
const
[
role
,
setRole
]
=
useState
(
'CloudLecturer'
);
const
[
avatar
,
setAvatar
]
=
useState
(
const
[
avatar
,
setAvatar
]
=
useState
(
'https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png'
);
"https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png"
);
const
storeUserId
=
props
.
choosedItem
.
storeUserId
;
const
storeUserId
=
props
.
choosedItem
.
storeUserId
;
const
[
imgUrl
,
setImgUrl
]
=
useState
(
const
[
imgUrl
,
setImgUrl
]
=
useState
(
avatar
||
'https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png'
);
avatar
||
"https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png"
const
[
nameErrorMsg
,
setNameErrorMsg
]
=
useState
(
''
);
);
const
[
nameStatus
,
setNameStatus
]
=
useState
<
''
|
'error'
|
'success'
|
'warning'
|
'validating'
|
undefined
>
();
const
[
nameErrorMsg
,
setNameErrorMsg
]
=
useState
(
""
);
const
[
phoneErrorMessage
,
setPhoneErrorMessage
]
=
useState
(
''
);
const
[
nameStatus
,
setNameStatus
]
=
useState
<
const
[
phoneStatus
,
setPhoneStatus
]
=
useState
<
''
|
'error'
|
'success'
|
'warning'
|
'validating'
|
undefined
>
();
""
|
"error"
|
"success"
|
"warning"
|
"validating"
|
undefined
>
();
const
[
phoneErrorMessage
,
setPhoneErrorMessage
]
=
useState
(
""
);
const
[
phoneStatus
,
setPhoneStatus
]
=
useState
<
""
|
"error"
|
"success"
|
"warning"
|
"validating"
|
undefined
>
();
const
[
cropperModalVisible
,
setCropperModalVisible
]
=
useState
(
false
);
const
[
cropperModalVisible
,
setCropperModalVisible
]
=
useState
(
false
);
const
[
form
]
=
Form
.
useForm
();
const
[
form
]
=
Form
.
useForm
();
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
props
.
choosedItem
.
nickName
)
{
if
(
props
.
choosedItem
.
nickName
)
{
console
.
log
(
"props.choosedItem"
,
props
.
choosedItem
);
console
.
log
(
'props.choosedItem'
,
props
.
choosedItem
);
setName
(
props
.
choosedItem
.
nickName
);
setName
(
props
.
choosedItem
.
nickName
);
console
.
log
(
'choosedItem'
,
props
.
choosedItem
);
console
.
log
(
'choosedItem'
,
props
.
choosedItem
);
props
.
choosedItem
.
phone
&&
setPhone
(
props
.
choosedItem
.
phone
);
props
.
choosedItem
.
phone
&&
setPhone
(
props
.
choosedItem
.
phone
);
props
.
choosedItem
.
role
&&
setRole
(
props
.
choosedItem
.
role
[
0
]);
props
.
choosedItem
.
role
&&
setRole
(
props
.
choosedItem
.
role
[
0
]);
props
.
choosedItem
.
avatar
&&
setAvatar
(
props
.
choosedItem
.
avatar
);
props
.
choosedItem
.
avatar
&&
setAvatar
(
props
.
choosedItem
.
avatar
);
...
@@ -94,13 +76,13 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -94,13 +76,13 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
function
_handleUpdateAvatar
(
e
:
any
):
any
{
function
_handleUpdateAvatar
(
e
:
any
):
any
{
const
avatar
=
e
.
target
.
files
[
0
];
const
avatar
=
e
.
target
.
files
[
0
];
const
newUrl
=
URL
.
createObjectURL
(
avatar
);
const
newUrl
=
URL
.
createObjectURL
(
avatar
);
const
$image
=
$
(
"#image"
);
const
$image
=
$
(
'#image'
);
setImgUrl
(
newUrl
);
setImgUrl
(
newUrl
);
setCropperModalVisible
(
true
);
setCropperModalVisible
(
true
);
}
}
function
_onUpload
():
any
{
function
_onUpload
():
any
{
$
(
"#CrpperAvatarPic"
).
trigger
(
"click"
);
$
(
'#CrpperAvatarPic'
).
trigger
(
'click'
);
}
}
function
changeAvatar
(
img
:
string
):
any
{
function
changeAvatar
(
img
:
string
):
any
{
...
@@ -118,47 +100,47 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -118,47 +100,47 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
function
handleOk
():
void
{
function
handleOk
():
void
{
const
values
=
form
.
getFieldsValue
();
const
values
=
form
.
getFieldsValue
();
if
(
!
values
.
nickName
.
trim
())
{
if
(
!
values
.
nickName
.
trim
())
{
setNameErrorMsg
(
"请输入员工昵称"
);
setNameErrorMsg
(
'请输入员工昵称'
);
setNameStatus
(
"error"
);
setNameStatus
(
'error'
);
return
;
return
;
}
}
setNameErrorMsg
(
""
);
setNameErrorMsg
(
''
);
setNameStatus
(
""
);
setNameStatus
(
''
);
if
(
!
String
(
values
.
phone
)
&&
!
props
.
isWorkWechat
)
{
if
(
!
String
(
values
.
phone
)
&&
!
props
.
isWorkWechat
)
{
setPhoneErrorMessage
(
"请输入手机号码"
);
setPhoneErrorMessage
(
'请输入手机号码'
);
setPhoneStatus
(
"error"
);
setPhoneStatus
(
'error'
);
return
;
return
;
}
}
setPhoneErrorMessage
(
""
);
setPhoneErrorMessage
(
''
);
setPhoneStatus
(
""
);
setPhoneStatus
(
''
);
if
(
String
(
values
.
phone
).
length
!==
11
&&
!
props
.
isWorkWechat
)
{
if
(
String
(
values
.
phone
).
length
!==
11
&&
!
props
.
isWorkWechat
)
{
setPhoneErrorMessage
(
"请输入11位手机号"
);
setPhoneErrorMessage
(
'请输入11位手机号'
);
setPhoneStatus
(
"error"
);
setPhoneStatus
(
'error'
);
return
;
return
;
}
}
setPhoneErrorMessage
(
""
);
setPhoneErrorMessage
(
''
);
setPhoneStatus
(
""
);
setPhoneStatus
(
''
);
props
.
choosedItem
.
nickName
?
handleEditEmployee
()
:
handleAddEmployee
();
props
.
choosedItem
.
nickName
?
handleEditEmployee
()
:
handleAddEmployee
();
}
}
function
handleChangeValues
(
name
:
string
,
value
:
any
)
{
function
handleChangeValues
(
name
:
string
,
value
:
any
)
{
switch
(
name
)
{
switch
(
name
)
{
case
"nickName"
:
case
'nickName'
:
form
.
setFieldsValue
({
nickName
:
value
});
form
.
setFieldsValue
({
nickName
:
value
});
setName
(
value
);
setName
(
value
);
return
;
return
;
case
"phone"
:
case
'phone'
:
form
.
setFieldsValue
({
phone
:
value
});
form
.
setFieldsValue
({
phone
:
value
});
setPhone
(
value
);
setPhone
(
value
);
setPhoneErrorMessage
(
""
);
setPhoneErrorMessage
(
''
);
setPhoneStatus
(
""
);
setPhoneStatus
(
''
);
return
;
return
;
case
"role"
:
case
'role'
:
form
.
setFieldsValue
({
role
:
value
});
form
.
setFieldsValue
({
role
:
value
});
setRole
(
value
);
setRole
(
value
);
return
;
return
;
...
@@ -175,9 +157,9 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -175,9 +157,9 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
roleCodes
:
[
role
],
roleCodes
:
[
role
],
avatar
,
avatar
,
};
};
console
.
log
(
"params"
,
params
);
console
.
log
(
'params'
,
params
);
StoreService
.
addEmployee
(
params
).
then
((
res
)
=>
{
StoreService
.
addEmployee
(
params
).
then
((
res
)
=>
{
message
.
success
(
"保存成功"
);
message
.
success
(
'保存成功'
);
props
.
onClose
();
props
.
onClose
();
});
});
}
}
...
@@ -189,12 +171,12 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -189,12 +171,12 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
roleCodes
:
[
role
],
roleCodes
:
[
role
],
avatar
,
avatar
,
storeUserId
:
storeUserId
,
storeUserId
:
storeUserId
,
storeId
:
User
.
getStoreId
()
storeId
:
User
.
getStoreId
(),
};
};
console
.
log
(
"params"
,
params
);
console
.
log
(
'params'
,
params
);
StoreService
.
editEmployee
(
params
).
then
((
res
)
=>
{
StoreService
.
editEmployee
(
params
).
then
((
res
)
=>
{
message
.
success
(
"编辑成功"
);
message
.
success
(
'编辑成功'
);
props
.
onClose
();
props
.
onClose
();
});
});
}
}
...
@@ -202,98 +184,94 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -202,98 +184,94 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
return
(
return
(
<
Modal
<
Modal
visible=
{
true
}
visible=
{
true
}
title=
{
`${props.choosedItem.nickName ?
"编辑员工" : "添加员工"
}`
}
title=
{
`${props.choosedItem.nickName ?
'编辑员工' : '添加员工'
}`
}
className=
"employee-add-modal"
className=
'employee-add-modal'
width=
{
680
}
width=
{
680
}
onCancel=
{
props
.
onClose
}
onCancel=
{
props
.
onClose
}
onOk=
{
handleOk
}
onOk=
{
handleOk
}
maskClosable=
{
false
}
maskClosable=
{
false
}
closeIcon=
{
<
span
className=
"icon iconfont modal-close-icon"
>

</
span
>
}
closeIcon=
{
<
span
className=
'icon iconfont modal-close-icon'
>

</
span
>
}
>
>
<
Row
style=
{
{
height
:
271
}
}
>
<
Row
style=
{
{
height
:
271
}
}
>
<
Col
span=
{
18
}
>
<
Col
span=
{
18
}
>
<
Form
<
Form
{
...
layout
}
form=
{
form
}
name=
'basic'
initialValues=
{
{
nickName
:
nickName
,
phone
:
phone
,
role
:
role
}
}
>
{
...
layout
}
form=
{
form
}
name=
"basic"
initialValues=
{
{
nickName
:
nickName
,
phone
:
phone
,
role
:
role
}
}
>
<
Form
.
Item
<
Form
.
Item
label=
"员工昵称"
label=
'员工姓名'
name=
"nickName"
name=
'nickName'
rules=
{
[{
required
:
true
}]
}
//
rules={[{ required: true }]}
validateStatus=
{
nameStatus
}
//
validateStatus={nameStatus}
help=
{
nameErrorMsg
||
undefined
}
//
help={nameErrorMsg || undefined}
style=
{
{
marginBottom
:
0
}
}
style=
{
{
marginBottom
:
0
}
}
>
>
<
div
<
Input
style=
{
{
style=
{
{
width
:
200
}
}
whiteSpace
:
'nowrap'
,
placeholder=
"请输入员工昵称"
textOverflow
:
'ellipsis'
,
maxLength=
{
15
}
overflow
:
'hidden'
,
autoComplete=
"off"
}
}
>
onChange=
{
(
e
)
=>
handleChangeValues
(
"nickName"
,
e
.
target
.
value
)
}
<
WWOpenDataCom
type=
'userName'
openid=
{
props
.
choosedItem
.
weChatAccount
}
/>
/
>
</
div
>
</
Form
.
Item
>
</
Form
.
Item
>
{
props
.
isWorkWechat
?
(
{
props
.
isWorkWechat
?
(
<
Form
.
Item
<
Form
.
Item
label=
'企业微信账号'
name=
'weChatAccount'
>
label=
"企业微信账号"
name=
"weChatAccount"
>
<
Tooltip
title=
{
props
.
choosedItem
.
weChatAccount
}
>
<
Tooltip
title=
{
props
.
choosedItem
.
weChatAccount
}
>
<
div
style=
{
{
<
div
style=
{
{
whiteSpace
:
'nowrap'
,
whiteSpace
:
'nowrap'
,
textOverflow
:
'ellipsis'
,
textOverflow
:
'ellipsis'
,
overflow
:
'hidden'
,
overflow
:
'hidden'
,
}
}
>
{
props
.
choosedItem
.
weChatAccount
}
</
div
>
}
}
>
{
props
.
choosedItem
.
weChatAccount
}
</
div
>
</
Tooltip
>
</
Tooltip
>
</
Form
.
Item
>
</
Form
.
Item
>
)
:
(
)
:
(
<
Form
.
Item
<
Form
.
Item
label=
'手机号码'
name=
'phone'
rules=
{
[{
required
:
true
}]
}
validateStatus=
{
phoneStatus
}
help=
{
phoneErrorMessage
}
>
label=
"手机号码"
name=
"phone"
rules=
{
[{
required
:
true
}]
}
validateStatus=
{
phoneStatus
}
help=
{
phoneErrorMessage
}
>
<
Input
<
Input
style=
{
{
width
:
200
}
}
style=
{
{
width
:
200
}
}
placeholder=
"请输入手机号"
placeholder=
'请输入手机号'
maxLength=
{
11
}
maxLength=
{
11
}
autoComplete=
"off"
autoComplete=
'off'
disabled=
{
!!
props
.
choosedItem
.
nickName
}
disabled=
{
!!
props
.
choosedItem
.
nickName
}
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
if
(
e
.
target
.
value
.
match
(
/^
\d
+$/
))
{
if
(
e
.
target
.
value
.
match
(
/^
\d
+$/
))
{
handleChangeValues
(
"phone"
,
e
.
target
.
value
);
handleChangeValues
(
'phone'
,
e
.
target
.
value
);
}
else
{
}
else
{
setPhoneErrorMessage
(
"只能输入数字"
);
setPhoneErrorMessage
(
'只能输入数字'
);
setPhoneStatus
(
"error"
);
setPhoneStatus
(
'error'
);
}
}
}
}
}
}
/>
/>
</
Form
.
Item
>
</
Form
.
Item
>
)
}
)
}
<
Form
.
Item
<
Form
.
Item
label=
'所在部门'
name=
'weChatAccount'
style=
{
{
marginBottom
:
0
}
}
>
label=
"员工角色"
<
div
name=
"role"
style=
{
{
rules=
{
[{
required
:
false
}]
}
whiteSpace
:
'nowrap'
,
style=
{
{
marginBottom
:
'-2px !important'
}
}
textOverflow
:
'ellipsis'
,
className=
"mt-26"
overflow
:
'hidden'
,
>
}
}
>
{
props
.
choosedItem
.
depNameList
.
map
((
item
:
any
,
index
:
any
)
=>
{
return
(
<
span
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
}
/>
{
index
<
props
.
choosedItem
.
depNameList
.
length
-
1
?
'、'
:
''
}
</
span
>
);
})
}
</
div
>
</
Form
.
Item
>
<
Form
.
Item
label=
'员工角色'
name=
'role'
rules=
{
[{
required
:
false
}]
}
style=
{
{
marginBottom
:
'-2px !important'
}
}
className=
'mt-26'
>
<
RadioGroup
<
RadioGroup
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
handleChangeValues
(
"role"
,
e
.
target
.
value
);
handleChangeValues
(
'role'
,
e
.
target
.
value
);
}
}
}
}
className=
"mt5"
className=
'mt5'
>
>
<
Radio
value=
{
'CloudLecturer'
}
className=
'mt-4'
>
<
Radio
value=
{
"CloudLecturer"
}
className=
"mt-4"
>
<
span
style=
{
{
color
:
'#333'
}
}
>
普通讲师
</
span
>
<
span
style=
{
{
color
:
"#333"
}
}
>
普通讲师
</
span
>
<
p
className=
'radio-tip'
>
仅可查看/使用与自己相关的文件和课表,并进行上课
</
p
>
<
p
className=
"radio-tip"
>
仅可查看/使用与自己相关的文件和课表,并进行上课
</
p
>
</
Radio
>
</
Radio
>
<
Radio
value=
{
"CloudManager"
}
>
<
Radio
value=
{
'CloudManager'
}
>
<
span
style=
{
{
color
:
"#333"
}
}
>
管理员
</
span
>
<
span
style=
{
{
color
:
'#333'
}
}
>
管理员
</
span
>
<
p
className=
"radio-tip"
>
可执行学院中所有的操作
</
p
>
<
p
className=
'radio-tip'
>
可执行学院中所有的操作
</
p
>
</
Radio
>
</
Radio
>
</
RadioGroup
>
</
RadioGroup
>
</
Form
.
Item
>
</
Form
.
Item
>
...
@@ -301,29 +279,10 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
...
@@ -301,29 +279,10 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
</
Col
>
</
Col
>
<
Col
span=
{
6
}
>
<
Col
span=
{
6
}
>
<
div
className=
"avatar-box"
>
<
div
className=
'avatar-box'
>
<
div
className=
"avatar-text"
>
头像
</
div
>
<
div
className=
'avatar-text'
>
头像
</
div
>
<
div
className=
"avatart-img"
>
<
div
className=
'avatart-img'
>
<
img
className=
"avatar"
src=
{
avatar
}
></
img
>
<
img
className=
'avatar'
src=
{
avatar
}
></
img
>
</
div
>
<
div
className=
"upload-avatar"
>
<
Button
id=
"click_upload_btn"
onClick=
{
_onUpload
}
>
上传头像
</
Button
>
<
input
type=
"file"
accept=
"image/*"
id=
"CrpperAvatarPic"
style=
{
{
display
:
"none"
}
}
onChange=
{
_handleUpdateAvatar
}
/>
{
cropperModalVisible
&&
(
<
CropperModal
imgUrl=
{
imgUrl
}
save=
{
changeAvatar
}
close=
{
closeCropperModal
}
/>
)
}
</
div
>
</
div
>
</
div
>
</
div
>
</
Col
>
</
Col
>
...
...
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