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
1d5170d0
Commit
1d5170d0
authored
Aug 17, 2021
by
yuananting
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:添加缺省图,修复协同人员创建者不可删除
parent
d31edcc2
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
145 additions
and
103 deletions
+145
-103
src/common/js/user.ts
+4
-0
src/modules/task-center/train-task/AddTrainTask.jsx
+8
-7
src/modules/task-center/train-task/components/BasicInfo.jsx
+3
-3
src/modules/task-center/train-task/modal/ChooseAssignorModal.jsx
+75
-59
src/modules/task-center/train-task/modal/ChooseAssignorModal.less
+12
-0
src/modules/task-center/train-task/modal/ChooseCollaboratorModal.jsx
+37
-34
src/modules/task-center/train-task/modal/ChooseCollaboratorModal.less
+6
-0
No files found.
src/common/js/user.ts
View file @
1d5170d0
...
...
@@ -39,6 +39,10 @@ class User {
return
window
.
currentStoreUserInfo
.
storeUserId
||
Storage
.
get
(
`
${
PREFIX
}
_storeUserId`
);
}
getStoreUserName
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_storeUserName`
);
}
getCustomerId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_customerId`
);
}
...
...
src/modules/task-center/train-task/AddTrainTask.jsx
View file @
1d5170d0
...
...
@@ -21,22 +21,23 @@ import { randomString } from '@/domains/basic-domain/utils';
import
TaskCenterService
from
'@/domains/task-center-domain/TaskCenterService'
;
import
Bus
from
'@/core/bus'
;
import
$
from
'jquery'
;
import
user
from
'@/common/js/user'
;
function
AddTrainTask
()
{
const
type
=
getParameterByName
(
'type'
);
const
taskId
=
getParameterByName
(
'taskId'
);
const
taskState
=
getParameterByName
(
'taskState'
);
const
type
=
window
.
getParameterByName
(
'type'
);
const
taskId
=
window
.
getParameterByName
(
'taskId'
);
const
taskState
=
window
.
getParameterByName
(
'taskState'
);
const
defaultCover
=
'https://image.xiaomaiketang.com/xm/rEAetaTEh3.png'
;
const
DEFAULT_BASIC_INFO
=
{
createId
:
User
.
getStoreUserId
(),
taskName
:
''
,
// 培训任务名称
coverUrl
:
defaultCover
,
coverId
:
null
,
helpStoreUserIds
:
[
{
checkedId
:
User
.
getStoreUserId
,
checkedId
:
User
.
getStoreUserId
(),
checkedName
:
User
.
getStoreUserName
()
},
],
// 指定协同者id
timeType
:
'FOREVER'
,
// 培训时间,默认永久有效
...
...
@@ -204,7 +205,7 @@ function AddTrainTask() {
// 确认保存新建
function
submitRemote
(
introduceId
,
issue
)
{
const
{
assignList
,
endTime
,
helpStoreUserIds
,
learnType
,
startTime
,
taskName
,
timeType
,
coverId
}
=
basicInfo
;
const
{
createId
,
assignList
,
endTime
,
helpStoreUserIds
,
learnType
,
startTime
,
taskName
,
timeType
,
coverId
}
=
basicInfo
;
let
_scheduleMediaRequests
=
[];
...
...
@@ -246,7 +247,7 @@ function AddTrainTask() {
const
commonParams
=
{
assignList
:
_assignList
,
createId
:
User
.
getStoreUserId
()
,
createId
,
endTime
,
helpStoreUserIds
:
_helpStoreUserIds
,
// 协同者集合
issueState
:
issue
,
// 是否发布
...
...
src/modules/task-center/train-task/components/BasicInfo.jsx
View file @
1d5170d0
...
...
@@ -24,9 +24,9 @@ const { RangePicker } = DatePicker;
const
FormItem
=
Form
.
Item
;
function
BasicInfo
(
props
)
{
const
taskState
=
getParameterByName
(
'taskState'
);
const
type
=
getParameterByName
(
'type'
);
const
originTimeType
=
getParameterByName
(
'timeType'
);
const
taskState
=
window
.
getParameterByName
(
'taskState'
);
const
type
=
window
.
getParameterByName
(
'type'
);
const
originTimeType
=
window
.
getParameterByName
(
'timeType'
);
const
{
basicInfo
,
startCheck
}
=
props
;
const
{
createId
,
taskName
,
coverUrl
,
helpStoreUserIds
,
timeType
,
startTime
,
endTime
,
learnType
,
assignList
,
introduce
,
loadintroduce
}
=
basicInfo
;
...
...
src/modules/task-center/train-task/modal/ChooseAssignorModal.jsx
View file @
1d5170d0
...
...
@@ -16,6 +16,7 @@ import WWOpenDataCom from '@/components/WWOpenDataCom';
import
_
from
'underscore'
;
import
'./ChooseAssignorModal.less'
;
import
$
from
'jquery'
;
import
LottieIcon
from
'@/components/LottieIcon'
;
const
{
TabPane
}
=
Tabs
;
const
{
DirectoryTree
}
=
Tree
;
...
...
@@ -412,36 +413,43 @@ function ChooseAssignorModal(props) {
<
TabPane
key=
'customGroupTab'
tab=
'自定义分组'
></
TabPane
>
</
Tabs
>
<
div
className=
'tree-con'
>
<
DirectoryTree
defaultExpandAll
checkable
checkStrictly
showIcon=
{
false
}
treeData=
{
structureData
}
checkedKeys=
{
checkedAssignorKeys
}
onCheck=
{
(
key
,
e
)
=>
onCheckAssignor
(
key
,
e
)
}
titleRender=
{
(
nodeData
)
=>
{
return
(
<
div
className=
'node-title-div'
>
{
nodeData
.
checkedType
===
'CUSTOMER'
?
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
nodeData
.
checkedName
}
/>
</
span
>
</
div
>
)
:
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
nodeData
.
checkedName
}
/>
</
span
>
<
Choose
>
<
When
condition=
{
structureData
.
length
>
0
}
>
<
DirectoryTree
defaultExpandAll
checkable
checkStrictly
showIcon=
{
false
}
treeData=
{
structureData
}
checkedKeys=
{
checkedAssignorKeys
}
onCheck=
{
(
key
,
e
)
=>
onCheckAssignor
(
key
,
e
)
}
titleRender=
{
(
nodeData
)
=>
{
return
(
<
div
className=
'node-title-div'
>
{
nodeData
.
checkedType
===
'CUSTOMER'
?
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
nodeData
.
checkedName
}
/>
</
span
>
</
div
>
)
:
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
nodeData
.
checkedName
}
/>
</
span
>
</
div
>
)
}
</
div
>
)
}
</
div
>
);
}
}
/>
);
}
}
/>
</
When
>
<
Otherwise
>
<
LottieIcon
title=
'搜索无结果'
type=
'search'
size=
{
150
}
/>
</
Otherwise
>
</
Choose
>
</
div
>
</
div
>
</
div
>
...
...
@@ -453,36 +461,44 @@ function ChooseAssignorModal(props) {
</
span
>
</
div
>
<
div
className=
'data-body'
>
{
checkedAssignorList
.
map
((
item
,
index
)
=>
{
return
(
<
div
className=
'selected-item'
>
<
span
className=
'item-title'
>
{
item
.
checkedType
===
'CUSTOMER'
?
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
</
span
>
</
Tooltip
>
</
div
>
)
:
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
.
checkedName
}
/>
</
span
>
</
Tooltip
>
</
div
>
)
}
</
span
>
<
span
className=
'icon iconfont clear-icon'
onClick=
{
()
=>
removeCheckedAssignor
(
item
)
}
>

</
span
>
</
div
>
);
})
}
<
Choose
>
<
When
condition=
{
checkedAssignorList
.
length
>
0
}
>
{
checkedAssignorList
.
map
((
item
,
index
)
=>
{
return
(
<
div
className=
'selected-item'
>
<
span
className=
'item-title'
>
{
item
.
checkedType
===
'CUSTOMER'
?
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
</
span
>
</
Tooltip
>
</
div
>
)
:
(
<
div
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'departmentName'
openid=
{
item
.
checkedName
}
/>
</
span
>
</
Tooltip
>
</
div
>
)
}
</
span
>
<
span
className=
'icon iconfont clear-icon'
onClick=
{
()
=>
removeCheckedAssignor
(
item
)
}
>

</
span
>
</
div
>
);
})
}
</
When
>
<
Otherwise
>
<
LottieIcon
title=
'暂无数据'
type=
'college'
size=
{
150
}
/>
</
Otherwise
>
</
Choose
>
</
div
>
</
div
>
</
div
>
...
...
src/modules/task-center/train-task/modal/ChooseAssignorModal.less
View file @
1d5170d0
...
...
@@ -78,6 +78,12 @@
font-size: 14px !important;
}
}
.lottie-icon {
margin-top: 64px;
.lottie-icon__title {
color: #666666;
}
}
.tree-con {
overflow-y: scroll;
overflow-x: hidden;
...
...
@@ -137,6 +143,12 @@
overflow-y: scroll;
overflow-x: hidden;
max-height: 370px;
.lottie-icon {
margin-top: 76px;
.lottie-icon__title {
color: #666666;
}
}
.selected-item {
padding: 12px 12px 12px 16px;
display: flex;
...
...
src/modules/task-center/train-task/modal/ChooseCollaboratorModal.jsx
View file @
1d5170d0
...
...
@@ -10,14 +10,10 @@
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Modal
,
Input
,
Tooltip
,
List
,
Checkbox
}
from
'antd'
;
import
{
XMTable
}
from
'@/components'
;
import
college
from
'@/common/lottie/college.json'
;
import
Service
from
'@/common/js/service'
;
import
User
from
'@/common/js/user'
;
import
StoreService
from
'@/domains/store-domain/storeService'
;
import
search
from
'@/common/lottie/search'
;
import
'./ChooseCollaboratorModal.less'
;
import
WWOpenDataCom
from
'@/components/WWOpenDataCom'
;
import
LottieIcon
from
'@/components/LottieIcon'
;
import
_
from
'underscore'
;
...
...
@@ -186,36 +182,43 @@ function ChooseCollaboratorModal(props) {
enterButton=
{
<
span
className=
'icon iconfont'
>

</
span
>
}
/>
<
div
className=
'data-body'
>
<
List
header=
{
<
Checkbox
checked=
{
allChecked
}
onChange=
{
handleCheckedAll
}
>
全部
</
Checkbox
>
}
dataSource=
{
employeeList
}
renderItem=
{
(
item
,
index
)
=>
(
<
List
.
Item
>
<
Checkbox
checked=
{
item
.
checked
}
value=
{
item
}
key=
{
item
.
checkedId
}
disabled=
{
item
.
checkedId
===
props
.
createId
}
onChange=
{
handleCheckedCollaborator
}
>
<
div
className=
'employee-item'
>
<
span
className=
'item-title'
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
<
Choose
>
<
When
condition=
{
employeeList
.
length
>
0
}
>
<
List
header=
{
<
Checkbox
checked=
{
allChecked
}
onChange=
{
handleCheckedAll
}
>
全部
</
Checkbox
>
}
dataSource=
{
employeeList
}
renderItem=
{
(
item
,
index
)
=>
(
<
List
.
Item
>
<
Checkbox
checked=
{
item
.
checked
}
value=
{
item
}
key=
{
item
.
checkedId
}
disabled=
{
item
.
checkedId
===
props
.
createId
}
onChange=
{
handleCheckedCollaborator
}
>
<
div
className=
'employee-item'
>
<
span
className=
'item-title'
>
<
span
className=
'icon iconfont title-icon'
>

</
span
>
<
Tooltip
title=
{
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
}
>
<
span
className=
'title-name'
>
<
WWOpenDataCom
type=
'userName'
openid=
{
item
.
checkedName
}
/>
</
span
>
</
Tooltip
>
</
span
>
</
Tooltip
>
</
span
>
<
span
className=
'dep-info'
>
{
renderDepItem
(
item
)
}
</
span
>
</
div
>
</
Checkbox
>
</
List
.
Item
>
)
}
/>
<
span
className=
'dep-info'
>
{
renderDepItem
(
item
)
}
</
span
>
</
div
>
</
Checkbox
>
</
List
.
Item
>
)
}
/>
</
When
>
<
Otherwise
>
<
LottieIcon
title=
'搜索无结果'
type=
'search'
size=
{
150
}
/>
</
Otherwise
>
</
Choose
>
</
div
>
</
div
>
<
div
className=
'right-list'
>
...
...
src/modules/task-center/train-task/modal/ChooseCollaboratorModal.less
View file @
1d5170d0
...
...
@@ -12,6 +12,12 @@
overflow-x: hidden;
max-height: 370px;
padding-right: 16px;
.lottie-icon {
margin-top: 76px;
.lottie-icon__title {
color: #666666;
}
}
.ant-list {
.ant-list-item:hover {
background-color: #f3f6fa;
...
...
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