Commit c7a05140 by zhujian

Merge branch 'feature/yuananting/20210801/task-center' into dev

parents dcb8ae84 706de926
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-08-06 17:35:35 * @Date: 2021-08-06 17:35:35
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 18:06:35 * @LastEditTime: 2021-08-14 09:51:12
* @Description: 任务中心接口 * @Description: 任务中心接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -48,3 +48,7 @@ export function getTaskCustomerDetail(params: object) { ...@@ -48,3 +48,7 @@ export function getTaskCustomerDetail(params: object) {
export function updateTrainingTaskAssign(params: object) { export function updateTrainingTaskAssign(params: object) {
return Service.Hades('public/hades/updateTrainingTaskAssign', params); return Service.Hades('public/hades/updateTrainingTaskAssign', params);
} }
export function getTrainingCourseAutoCancel(params: object) {
return Service.Hades('public/hades/getTrainingCourseAutoCancel', params);
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-08-06 17:32:41 * @Date: 2021-08-06 17:32:41
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 18:07:06 * @LastEditTime: 2021-08-14 09:52:00
* @Description: 任务中心-培训任务接口 * @Description: 任务中心-培训任务接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
updateTrainingTask, updateTrainingTask,
getTaskCustomerDetail, getTaskCustomerDetail,
updateTrainingTaskAssign, updateTrainingTaskAssign,
getTrainingCourseAutoCancel,
} from '@/data-source/taskCenter/request-apis'; } from '@/data-source/taskCenter/request-apis';
export default class TaskCenterService { export default class TaskCenterService {
...@@ -70,4 +71,9 @@ export default class TaskCenterService { ...@@ -70,4 +71,9 @@ export default class TaskCenterService {
static updateTrainingTaskAssign(params: any) { static updateTrainingTaskAssign(params: any) {
return updateTrainingTaskAssign(params); return updateTrainingTaskAssign(params);
} }
// 获取培训任务失效的课程
static getTrainingCourseAutoCancel(params: any) {
return getTrainingCourseAutoCancel(params);
}
} }
...@@ -43,7 +43,7 @@ function DataInfo(props: any) { ...@@ -43,7 +43,7 @@ function DataInfo(props: any) {
</div> </div>
<div className="num"> <div className="num">
<div className="item"> {`指派人数:${props.info.cultureCustomerNum}`}</div> <div className="item"> {`指派人数:${props.info.cultureCustomerNum}`}</div>
<div className="item">{`学习人数:${props.info.cultureCustomerNum}`}</div> <div className="item">{`学习人数:${props.info.learningCustomerNum}`}</div>
<div className="item">{`完成人数:${props.info.finishCustomerNum}`}</div> <div className="item">{`完成人数:${props.info.finishCustomerNum}`}</div>
</div> </div>
</div> </div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-07-29 13:57:03 * @Date: 2021-07-29 13:57:03
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 19:37:07 * @LastEditTime: 2021-08-14 14:30:11
* @Description: 任务中心-培训任务-新建页面 * @Description: 任务中心-培训任务-新建页面
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -60,6 +60,7 @@ function AddTrainTask() { ...@@ -60,6 +60,7 @@ function AddTrainTask() {
const [basicInfo, setBasicInfo] = useState(DEFAULT_BASIC_INFO); const [basicInfo, setBasicInfo] = useState(DEFAULT_BASIC_INFO);
const [stageList, setStageList] = useState(DEFAULT_STAGE_LIST); const [stageList, setStageList] = useState(DEFAULT_STAGE_LIST);
const [finishStandard, setFinishStandard] = useState(DEFAULT_FINISH_STANDARD); // 完成百分比 const [finishStandard, setFinishStandard] = useState(DEFAULT_FINISH_STANDARD); // 完成百分比
const [expiredCourseList, setExpiredCourseList] = useState([]); // 失效课程
const [startCheck, setStartCheck] = useState(false); // 是否启动校验 const [startCheck, setStartCheck] = useState(false); // 是否启动校验
const basicInfoRef = useRef(null); const basicInfoRef = useRef(null);
...@@ -70,6 +71,7 @@ function AddTrainTask() { ...@@ -70,6 +71,7 @@ function AddTrainTask() {
useEffect(() => { useEffect(() => {
if (type === 'edit') { if (type === 'edit') {
initTaskData(); initTaskData();
getTrainingCourseAutoCancel();
} }
}, []); }, []);
...@@ -96,12 +98,14 @@ function AddTrainTask() { ...@@ -96,12 +98,14 @@ function AddTrainTask() {
}, },
} = res; } = res;
const _assignList = assignList.map((item) => { const _assignList = assignList
item.checkedId = item.assignId; ? assignList.map((item) => {
item.checkedName = item.assignName; item.checkedId = item.assignId;
item.checkedType = item.assignType; item.checkedName = item.assignName;
return item; item.checkedType = item.assignType;
}); return item;
})
: [];
const coverInfo = courseMediaVOS.filter((item) => item.contentType === 'COVER')[0]; const coverInfo = courseMediaVOS.filter((item) => item.contentType === 'COVER')[0];
const coverUrl = coverInfo ? coverInfo.mediaUrl : defaultCover; const coverUrl = coverInfo ? coverInfo.mediaUrl : defaultCover;
...@@ -143,26 +147,40 @@ function AddTrainTask() { ...@@ -143,26 +147,40 @@ function AddTrainTask() {
setStageList(_stageList); setStageList(_stageList);
introduceInfo && getTextDetail('introduce', introduceInfo.mediaUrl); introduceInfo && getTextDetail('introduce', introduceInfo);
}); });
} }
// 获取培训目的内容 // 获取培训任务失效的课程
function getTextDetail(key, url) { function getTrainingCourseAutoCancel() {
$.ajax({ TaskCenterService.getTrainingCourseAutoCancel({ taskId }).then((res) => {
data: {}, setExpiredCourseList(res.result);
type: 'GET',
url,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: (res) => {
setBasicInfo({
...basicInfoRef.current,
[key]: res,
[`load${key}`]: true,
});
},
}); });
} }
// 获取培训目的内容
function getTextDetail(key, info) {
if (info.mediaType === 'RESOURCE_ID') {
$.ajax({
data: {},
type: 'GET',
url: info.mediaUrl,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: (res) => {
setBasicInfo({
...basicInfoRef.current,
[key]: res,
[`load${key}`]: true,
});
},
});
} else if (info.mediaType === 'TEXT') {
setBasicInfo({
...basicInfoRef.current,
[key]: info.mediaContent,
[`load${key}`]: true,
});
}
}
// 渲染底部操作按钮 // 渲染底部操作按钮
function renderFooter() { function renderFooter() {
...@@ -233,7 +251,7 @@ function AddTrainTask() { ...@@ -233,7 +251,7 @@ function AddTrainTask() {
const _assignList = assignList.map((item) => { const _assignList = assignList.map((item) => {
return { return {
assignId: item.checkedId, assignId: item.checkedId,
assignType: item.assignType, assignType: item.checkedType,
}; };
}); });
...@@ -278,27 +296,33 @@ function AddTrainTask() { ...@@ -278,27 +296,33 @@ function AddTrainTask() {
const { percentCompleteLive, percentCompleteVideo, percentCompletePicture } = finishStandard; const { percentCompleteLive, percentCompleteVideo, percentCompletePicture } = finishStandard;
if (!taskName) { if (!taskName) {
activeStep === 'TRAIN_CONTENT' && setActiveStep('BASIC_INFO');
return message.warning('请输入培训任务名称'); return message.warning('请输入培训任务名称');
} }
if (assignList.length === 0) { if (assignList.length === 0) {
activeStep === 'TRAIN_CONTENT' && setActiveStep('BASIC_INFO');
return message.warning('请选择指派对象'); return message.warning('请选择指派对象');
} }
if (stageList.length === 0) { if (stageList.length === 0) {
activeStep === 'BASIC_INFO' && setActiveStep('TRAIN_CONTENT');
return message.warning('请添加阶段'); return message.warning('请添加阶段');
} }
const stageNameEmpty = stageList.filter((item) => !item.stageName); const stageNameEmpty = stageList.filter((item) => !item.stageName);
if (stageNameEmpty.length > 0) { if (stageNameEmpty.length > 0) {
activeStep === 'BASIC_INFO' && setActiveStep('TRAIN_CONTENT');
return message.warning('请输入阶段名称'); return message.warning('请输入阶段名称');
} }
const stageNameArr = stageList.map((item) => item.stageName); const stageNameArr = stageList.map((item) => item.stageName);
const stageNameSet = new Set(stageNameArr); const stageNameSet = new Set(stageNameArr);
if (stageNameSet.size !== stageNameArr.length) { if (stageNameSet.size !== stageNameArr.length) {
activeStep === 'BASIC_INFO' && setActiveStep('TRAIN_CONTENT');
return message.warning('阶段名称不能重复'); return message.warning('阶段名称不能重复');
} }
if (percentCompleteLive === '' || percentCompleteVideo === '' || percentCompletePicture === '') { if (percentCompleteLive === '' || percentCompleteVideo === '' || percentCompletePicture === '') {
activeStep === 'BASIC_INFO' && setActiveStep('TRAIN_CONTENT');
return message.warning('请输入完成标准'); return message.warning('请输入完成标准');
} }
...@@ -309,7 +333,10 @@ function AddTrainTask() { ...@@ -309,7 +333,10 @@ function AddTrainTask() {
(introduceId) => { (introduceId) => {
submitRemote(introduceId, issue); submitRemote(introduceId, issue);
}, },
() => message.warning('上传培训目的失败') () => {
activeStep === 'TRAIN_CONTENT' && setActiveStep('BASIC_INFO');
message.warning('上传培训目的失败');
}
); );
} else { } else {
submitRemote(null, issue); submitRemote(null, issue);
...@@ -384,7 +411,14 @@ function AddTrainTask() { ...@@ -384,7 +411,14 @@ function AddTrainTask() {
</div> </div>
{activeStep === 'BASIC_INFO' && <BasicInfo basicInfo={basicInfo} startCheck={startCheck} onChange={handleChangeBasicInfo} />} {activeStep === 'BASIC_INFO' && <BasicInfo basicInfo={basicInfo} startCheck={startCheck} onChange={handleChangeBasicInfo} />}
{activeStep === 'TRAIN_CONTENT' && ( {activeStep === 'TRAIN_CONTENT' && (
<TrainContent stageList={stageList} basicInfo={basicInfo} startCheck={startCheck} finishStandard={finishStandard} onChange={handleChangeStageInfo} /> <TrainContent
stageList={stageList}
basicInfo={basicInfo}
expiredCourseList={expiredCourseList}
startCheck={startCheck}
finishStandard={finishStandard}
onChange={handleChangeStageInfo}
/>
)} )}
</div> </div>
{renderFooter()} {renderFooter()}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-07-29 14:32:24 * @Date: 2021-07-29 14:32:24
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 19:38:30 * @LastEditTime: 2021-08-14 10:04:27
* @Description: 任务中心-培训任务-新建-基本信息 * @Description: 任务中心-培训任务-新建-基本信息
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -105,7 +105,7 @@ function BasicInfo(props) { ...@@ -105,7 +105,7 @@ function BasicInfo(props) {
function confirmAddAssignor(data) { function confirmAddAssignor(data) {
props.onChange('assignList', data); props.onChange('assignList', data);
props.onClose(); setAssignorModalVisible(false);
} }
function removeSelectedCollaborator(tag) { function removeSelectedCollaborator(tag) {
......
...@@ -36,46 +36,6 @@ ...@@ -36,46 +36,6 @@
} }
.clear-btn { .clear-btn {
text-align: right; text-align: right;
color: #2966ff;
font-size: 14px;
}
}
.related-box {
padding: 6px 16px;
background: #e9efff;
border-radius: 4px;
flex: 1;
color: #666666;
font-size: 14px;
}
}
.search-container {
margin-bottom: 16px;
}
.select-area {
margin-bottom: 12px;
display: flex;
justify-content: space-between;
.select-box {
display: inline-box;
width: 186px;
background: #e9efff;
border-radius: 4px;
padding: 6px 16px;
margin-right: 8px;
display: flex;
justify-content: space-between;
.tip-icon {
color: #2966ff;
font-size: 14px;
margin-right: 4px;
}
.select-num {
color: #666666;
font-size: 14px;
}
.clear-btn {
text-align: right;
color: #5289fa; color: #5289fa;
font-size: 14px; font-size: 14px;
} }
...@@ -89,6 +49,7 @@ ...@@ -89,6 +49,7 @@
font-size: 14px; font-size: 14px;
} }
} }
.course-info { .course-info {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -111,13 +72,17 @@ ...@@ -111,13 +72,17 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
width: 180px; width: 180px;
} }
.course-status { .course-state {
font-size: 12px; * {
line-height: 18px; vertical-align: middle;
display: inline-block; display: inline-block;
border-radius: 2px; }
padding: 0 8px; .status-point {
margin-top: 8px; width: 6px;
height: 6px;
border-radius: 50%;
margin-right: 4px;
}
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-07-30 16:33:58 * @Date: 2021-07-30 16:33:58
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-11 13:33:44 * @LastEditTime: 2021-08-14 10:10:44
* @Description: 任务中心-培训任务-新建-培训内容 * @Description: 任务中心-培训任务-新建-培训内容
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -59,7 +59,7 @@ class TrainContent extends Component { ...@@ -59,7 +59,7 @@ class TrainContent extends Component {
showCourseDrawer: false, showCourseDrawer: false,
showExamDrawer: false, showExamDrawer: false,
selectedStageIndex: 0, selectedStageIndex: 0,
expiredCourseList: [], // 失效课程 expiredCourseList: props.expiredCourseList, // 失效课程
showStandardDetail: false, // 是否展开高级设置 showStandardDetail: false, // 是否展开高级设置
}; };
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-07-28 14:56:52 * @Date: 2021-07-28 14:56:52
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 18:30:47 * @LastEditTime: 2021-08-14 10:48:01
* @Description: 描述一下咯 * @Description: 描述一下咯
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -372,6 +372,7 @@ function TrainList(props) { ...@@ -372,6 +372,7 @@ function TrainList(props) {
const _query = { const _query = {
...props.query, ...props.query,
[field]: value, [field]: value,
current: 1,
}; };
props.onChange(_query); props.onChange(_query);
} }
...@@ -486,7 +487,11 @@ function TrainList(props) { ...@@ -486,7 +487,11 @@ function TrainList(props) {
pageSize={size} pageSize={size}
total={totalCount} total={totalCount}
toPage={(page) => { toPage={(page) => {
handleChangeQuery('current', page + 1); const _query = {
...props.query,
current: page + 1,
};
props.onChange(_query);
}} }}
showSizeChanger={false} showSizeChanger={false}
/> />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment