forked from Gitlink/forgeplus-react
增加管理员修改发布任务后继续修改任务的功能
This commit is contained in:
parent
161adbe6c7
commit
cadf447f45
|
@ -52,14 +52,13 @@ function renderModal(props) {
|
|||
if (type === 'delete') {
|
||||
return <InitModal
|
||||
title="删除"
|
||||
contentTitle="确定要删除吗?"
|
||||
okText="确认删除"
|
||||
{...props}
|
||||
|
||||
afterClose={destroy}
|
||||
contentTitle={<React.Fragment>
|
||||
<i className="red-circle iconfont icon-shanchu_tc_icon mr3"></i>
|
||||
{props.contentTitle}
|
||||
{props.contentTitle||'确定要删除吗?'}
|
||||
</React.Fragment>}
|
||||
/>
|
||||
} else if (type === 'confirm') {
|
||||
|
|
|
@ -48,6 +48,7 @@ function Uploads({ className, size, actionUrl, fileList, showNotification, load
|
|||
|
||||
|
||||
function handleChange(info) {
|
||||
console.log(info);
|
||||
if (info.file.status === 'uploading' || info.file.status === 'done' || info.file.status === 'removed') {
|
||||
let fileList = info.fileList;
|
||||
setFiles(appendFileSizeToUploadFileAll(fileList));
|
||||
|
@ -59,7 +60,8 @@ function Uploads({ className, size, actionUrl, fileList, showNotification, load
|
|||
}
|
||||
backFiles(fileList);
|
||||
if (!info.file.response.data) {
|
||||
info.file.response && showNotification(info.file.response.message)
|
||||
info.file.response && showNotification(info.file.response.message);
|
||||
setFiles([]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -183,6 +183,24 @@ export function updateTask(data) {
|
|||
});
|
||||
}
|
||||
|
||||
//修改已发布创客任务内容
|
||||
export function updatePublishedTask(data) {
|
||||
return fetch({
|
||||
url: '/api/tasks/backend/admin/updatePublishedTask',
|
||||
method: 'PUT',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
//重置延期关闭任务状态
|
||||
export function resetTask(data) {
|
||||
return fetch({
|
||||
url: '/api/tasks/backend/admin/resetTask',
|
||||
method: 'PUT',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
//删除
|
||||
export function deleteTask(id, isDelete) {
|
||||
return fetch({
|
||||
|
@ -268,7 +286,7 @@ export function updatePaper(data) {
|
|||
});
|
||||
}
|
||||
|
||||
// 删除
|
||||
// 删除成果
|
||||
export function deletePaper(id) {
|
||||
return fetch({
|
||||
url: `api/paper/${id}`,
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
import React, { useCallback, useEffect, useState, useMemo } from 'react';
|
||||
import { Input, Radio, Select, Button, Form, DatePicker, Table, Pagination, Modal } from 'antd';
|
||||
import { Link } from "react-router-dom";
|
||||
import { paperCheckStatusArr } from '../static';
|
||||
import { readyCheckPapers, checkPaper, } from '../api';
|
||||
import { Confirm } from '../../components/ModalFun';
|
||||
import { paperCheckStatusArr,taskStatusAllArr } from '../static';
|
||||
import { readyCheckPapers, checkPaper,deletePaper } from '../api';
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
const format = "YYYY-MM-DD HH:mm:ss";
|
||||
const Option = Select.Option;
|
||||
const TextArea = Input.TextArea;
|
||||
|
||||
|
||||
const statusArr = [];
|
||||
for (const item of taskStatusAllArr) {
|
||||
statusArr[item.dicItemCode] = item.dicItemName;
|
||||
}
|
||||
const checkStatusArr = [];
|
||||
for (const item of paperCheckStatusArr) {
|
||||
checkStatusArr[item.dicItemCode] = item.dicItemName;
|
||||
|
@ -62,7 +66,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
|
||||
function onSearch() {
|
||||
let values = getFieldsValue(['checkStatus', 'endCreatedAt', 'startCreatedAt', 'parentId']);
|
||||
let values = getFieldsValue(['checkStatus', 'endCreatedAt', 'startCreatedAt', 'parentId','number']);
|
||||
if (values.startCreatedAt) values.startCreatedAt = values.startCreatedAt.format(format);
|
||||
if (values.endCreatedAt) values.endCreatedAt = values.endCreatedAt.format(format);
|
||||
if (values.checkStatus === '0,1,2') values.checkStatus = '';
|
||||
|
@ -73,11 +77,30 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
setFieldsValue({
|
||||
startCreatedAt: '',
|
||||
endCreatedAt: '',
|
||||
checkStatus: '0,1,2'
|
||||
checkStatus: '0,1,2',
|
||||
number:''
|
||||
});
|
||||
setSearchObj({});
|
||||
}
|
||||
|
||||
// 删除成果
|
||||
function deleteItem(id){
|
||||
Confirm({
|
||||
title: "警告",
|
||||
content: "此操作将删除该用户提交的成果,用户可重新提交。确认删除?",
|
||||
okText: '确定',
|
||||
cancelText: '取消',
|
||||
onOk() {
|
||||
deletePaper(id).then(res => {
|
||||
if (res.message === 'success') {
|
||||
showNotification('操作成功!');
|
||||
setReload(Math.random());
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function checkPaperItem(paperId, passStatus) {
|
||||
validateFields((err, values) => {
|
||||
if (!err) {
|
||||
|
@ -113,6 +136,10 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
return <div style={{ textAlign: 'center' }}>{index + 1}</div>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '成果编号',
|
||||
dataIndex: 'number',
|
||||
},
|
||||
{
|
||||
title: '来源任务',
|
||||
dataIndex: 'name',
|
||||
|
@ -123,6 +150,13 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
</span >
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '任务状态',
|
||||
dataIndex: 'task',
|
||||
render: (text, record) => {
|
||||
return text.status.exceptClosedBoolean ? '已关闭' : statusArr[text.status]
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '评论/成果内容',
|
||||
dataIndex: 'content',
|
||||
|
@ -157,7 +191,10 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
key: 'action',
|
||||
render: (text, record) => (
|
||||
<React.Fragment>
|
||||
<Link className="line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}>查看</Link>
|
||||
<Link className="mr5 line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}>查看</Link>
|
||||
{record.task&&record.task.status==3&&<a className="mr5 line_1 color-grey3" onClick={() => { deleteItem(record.id) }}>删除</a>}
|
||||
|
||||
{/* {record.task&&record.task.status==3&&<Button className=" font-12" type="danger" size="small" onClick={() => { deleteItem(record.id) }}>删除</Button>} */}
|
||||
</React.Fragment>
|
||||
),
|
||||
},
|
||||
|
@ -244,10 +281,18 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
</Select>,
|
||||
0
|
||||
)}
|
||||
|
||||
{helper(
|
||||
"成果编号",
|
||||
"number",
|
||||
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||
<Input
|
||||
placeholder="请输入成果编号"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="center-right-but">
|
||||
|
||||
{helper(
|
||||
"发布时间:",
|
||||
"startCreatedAt",
|
||||
|
@ -269,6 +314,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
placeholder="请选择结束时间"
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
<Button className="mr10" type="primary" onClick={onSearch}>搜索</Button>
|
||||
<Button className="mr10" type="" onClick={clearSearch}>清除</Button>
|
||||
|
|
|
@ -6,4 +6,16 @@
|
|||
float: left;
|
||||
}
|
||||
}
|
||||
.center-left-but{
|
||||
width: 100%;
|
||||
.ant-form-item{
|
||||
width: 30%;
|
||||
}
|
||||
}
|
||||
.center-right-but{
|
||||
width: 100%;
|
||||
}
|
||||
.line_1{
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ import { Link } from 'react-router-dom';
|
|||
import moment from 'moment';
|
||||
|
||||
import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr, main_web_site_url } from '../static';
|
||||
import { getTaskAdminList, changeShowUserMode, deleteTask, recommendTask, addExpertReview, publishExpertsAndRules,delayTask } from '../api';
|
||||
import { getTaskAdminList, changeShowUserMode, deleteTask, recommendTask, addExpertReview, publishExpertsAndRules,delayTask ,resetTask} from '../api';
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
import { getRules, selectExpertList } from 'src/military/expert/api';
|
||||
|
@ -45,6 +45,8 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
const [expertReview, setExpertReview] = useState('');
|
||||
const [downloading,setDownloading] = useState(false);
|
||||
|
||||
const [restartVisible,setRestartVisible]= useState(false); //重启任务modal
|
||||
|
||||
//查看评审规则、查看选取专家、发布评审任务
|
||||
const [lookRules, setLookRules] = useState(false);
|
||||
const [lookExperts, setLookExperts] = useState(false);
|
||||
|
@ -54,7 +56,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
const [publicTaskId, setPublicTaskId] = useState(undefined);
|
||||
// 加入专家评审的创客id数组
|
||||
const [reviewTaskId, setReviewTaskId] = useState(undefined);
|
||||
const [visible, setVisible] = useState(false);
|
||||
const [visible, setVisible] = useState(false); //延期任务modal
|
||||
const [checkedItem, setCheckedItem] = useState('');
|
||||
|
||||
useEffect(()=>{
|
||||
|
@ -134,9 +136,13 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
setSearchObj({});
|
||||
}
|
||||
|
||||
function delayClick(item) {
|
||||
function delayClick(item,restart) {
|
||||
setCheckedItem(item);
|
||||
setVisible(true);
|
||||
if(restart){
|
||||
setVisible(true);
|
||||
}else{
|
||||
setRestartVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
const columns = useMemo(() => {
|
||||
|
@ -217,7 +223,8 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
const disabled = record.assignRuleAndExperts || !(record.status == 1 || record.status == 3);
|
||||
return(
|
||||
<React.Fragment>
|
||||
{[3,4,6,7].includes(record.status)&&<Button className="mr5 mb5 f89" onClick={() => { delayClick(record) }}>延期</Button>}
|
||||
{[3,4,6,7].includes(record.status)&&<Button className="mr5 mb5 f89" onClick={() => { delayClick(record,true) }}>延期</Button>}
|
||||
{record.status==8&& record.exceptClosedBoolean&&<Button className="mr5 mb5 f89" onClick={() => { delayClick(record)}}>重启</Button>}
|
||||
<Button className="mr5 mb5 f20" onClick={() => { deleteItem(record.id,isDelete == '0' ? '1':'0') }}>{isDelete == '0' ? '隐藏任务':'恢复任务'}</Button>
|
||||
<Button className="mr5 mb5 f89" onClick={() => { recommendItem(record.id, record.recommend ? '0' :'1') }}>{record.recommend ? '撤销推荐':'首页推荐'}</Button>
|
||||
<Button className={`mr5 mb5 c2a3 ${text ? 'bor':'full'} ${disabled && 'disabled'}`} onClick={() => { changeExpertReviewStatus(text ? '-1':'1', record.id) }} disabled={disabled}>{text ? '取消专家评审':'加入专家评审'}</Button>
|
||||
|
@ -292,6 +299,8 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
];
|
||||
}, []);
|
||||
|
||||
// function resetTaskModal
|
||||
|
||||
function recommendItem(id, recommend) {
|
||||
Modal.confirm({
|
||||
title: "警告",
|
||||
|
@ -519,10 +528,13 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
return current && current < moment(checkedItem.eachPhaseEndTime).endOf('day');
|
||||
}
|
||||
|
||||
function disabledDate2(current) {
|
||||
return current && current < moment();
|
||||
}
|
||||
|
||||
function delayTime() {
|
||||
validateFields((err, values) => {
|
||||
validateFields(['delayedTo'],(err, values) => {
|
||||
if (!err) {
|
||||
console.log(values)
|
||||
delayTask({
|
||||
taskId: checkedItem.id,
|
||||
params: {
|
||||
|
@ -539,7 +551,22 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
function restartTask(){
|
||||
validateFields(["restartEndTime"],(err, values) => {
|
||||
if (!err) {
|
||||
resetTask({
|
||||
taskId: checkedItem.id,
|
||||
endTime: moment(values.restartEndTime).format(format)
|
||||
}).then(res => {
|
||||
if (res && res.message === 'success') {
|
||||
showNotification('操作成功');
|
||||
setReload(Math.random());
|
||||
setRestartVisible(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="task-manage-all ">
|
||||
|
@ -755,6 +782,28 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
)}
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
title="重启任务"
|
||||
visible={restartVisible}
|
||||
onOk={restartTask}
|
||||
onCancel={() => { setRestartVisible(false) }}
|
||||
// className="time-edit-modal"
|
||||
destroyOnClose
|
||||
>
|
||||
<div>当前任务将恢复至<span className="imoptantText">{statusArr[checkedItem.currentStatus]}</span>,请选择该阶段的截止日期:</div>
|
||||
{helper(
|
||||
"",
|
||||
"restartEndTime",
|
||||
[{ required: true, message: "请选择时间" }],
|
||||
<DatePicker
|
||||
format={format}
|
||||
placeholder="请选择时间"
|
||||
disabledDate={disabledDate2}
|
||||
/>,
|
||||
moment(moment(new Date()).format(formatDelay)+' 23:59:59')
|
||||
)}
|
||||
</Modal>
|
||||
|
||||
<ExportTable downloading={downloading} setDownloading={setDownloading}/>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -237,4 +237,8 @@
|
|||
.time-edit-modal .ant-modal-body{
|
||||
width: 200px;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.imoptantText{
|
||||
color: $primary-color;
|
||||
}
|
|
@ -9,7 +9,7 @@ import StatusNav from '../../components/statusNav';
|
|||
import ItemListPaper from '../components/itemListPaper';
|
||||
import ProofModal from '../components/proofModal';
|
||||
import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper, addExpertReview, followTask, unfollowTask } from '../api';
|
||||
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr, surplusTime} from '../static';
|
||||
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr, surplusTime } from '../static';
|
||||
import { httpUrl } from '../fetch';
|
||||
import './index.scss';
|
||||
import { getRules } from 'src/military/expert/api';
|
||||
|
@ -160,7 +160,7 @@ export default Form.create()(
|
|||
|
||||
// 流程步骤显示,返回剩余时间
|
||||
const process = useCallback((title, status, days) => {
|
||||
let {surplus,
|
||||
let { surplus,
|
||||
surplusTimetext,
|
||||
delayTime
|
||||
} = surplusTime(detailData);
|
||||
|
@ -216,6 +216,9 @@ export default Form.create()(
|
|||
let params = {
|
||||
...values,
|
||||
taskId: id
|
||||
};
|
||||
if (!params.files){
|
||||
delete params.files;
|
||||
}
|
||||
setPaperUploadLoading(true);
|
||||
addPaper(params).then((res) => {
|
||||
|
@ -307,7 +310,7 @@ export default Form.create()(
|
|||
Modal.confirm({
|
||||
content: "请先完成实名认证再提交需求申请,是否前往认证?",
|
||||
onOk() {
|
||||
window.location.href=`${mygetHelmetapi && mygetHelmetapi.main_web_site_url}/users/${current_user.login}/profiles`;
|
||||
window.location.href = `${mygetHelmetapi && mygetHelmetapi.main_web_site_url}/users/${current_user.login}/profiles`;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -404,6 +407,7 @@ export default Form.create()(
|
|||
<Link to="/task">创客空间 ></Link>
|
||||
<Link to="/task">任务大厅 ></Link>
|
||||
任务编号:{detailData.number}
|
||||
|
||||
</div>
|
||||
|
||||
<div className="edu-back-white padding30">
|
||||
|
@ -420,19 +424,23 @@ export default Form.create()(
|
|||
<span className="font-18 mr20 font-bd task-tit-text fl" >{detailData.name}</span>
|
||||
<span className="task_tag">{taskCategoryValueArr[detailData.categoryId]}</span>
|
||||
</span>
|
||||
<span className='detail_tag_btn '>
|
||||
<span>
|
||||
{
|
||||
detailData.canFollow ? <span className='detail_tag_btn_name' onClick={follow}>
|
||||
<i className="iconfont icon-kongxing font-16 mr3"></i>
|
||||
关注
|
||||
</span> : <span className='detail_tag_btn_name' onClick={unfollow}>
|
||||
<i className="iconfont icon-shixing color-orange font-16 mr3"></i>
|
||||
取消关注
|
||||
</span>
|
||||
current_user && current_user.roles && current_user.roles.includes('管理员') && <Link class="adminEdit" to={`/task/taskEdit/${id}`}>编辑</Link>
|
||||
}
|
||||
<span className="detail_tag_btn_count">{detailData.followCount}</span>
|
||||
<span className='detail_tag_btn '>
|
||||
{
|
||||
detailData.canFollow ? <span className='detail_tag_btn_name' onClick={follow}>
|
||||
<i className="iconfont icon-kongxing font-16 mr3"></i>
|
||||
关注
|
||||
</span> : <span className='detail_tag_btn_name' onClick={unfollow}>
|
||||
<i className="iconfont icon-shixing color-orange font-16 mr3"></i>
|
||||
取消关注
|
||||
</span>
|
||||
}
|
||||
<span className="detail_tag_btn_count">{detailData.followCount}</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div className="clearfix flex1">
|
||||
<ul className="fl">
|
||||
|
@ -440,7 +448,7 @@ export default Form.create()(
|
|||
<li><span className="mr10 color-grey9">任务编号:</span><span className="color-grey3">{detailData.number}</span></li>
|
||||
<li><span className="mr10 color-grey9">发布时间:</span><span className="color-grey3">{detailData.publishedAt || detailData.createdAt}</span></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div className="fr edu-txt-right mt10">
|
||||
<div className="color-orange font-bd lineh-30"><span className="font-18">¥</span><span className="font-28">{detailData.bounty}</span></div>
|
||||
</div>
|
||||
|
|
|
@ -11,6 +11,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
.adminEdit{
|
||||
float: left;
|
||||
margin-right: 2em;
|
||||
color: #4154f1;
|
||||
}
|
||||
|
||||
.task-tit-text{
|
||||
line-height: 1.4;
|
||||
max-width: 800px;
|
||||
|
@ -56,6 +62,7 @@
|
|||
.head-navigation {
|
||||
position: absolute;
|
||||
top: -2.3em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.task-title{
|
||||
|
|
|
@ -6,30 +6,27 @@ import ReactWEditor from 'wangeditor-for-react';
|
|||
import { Link } from "react-router-dom";
|
||||
import Upload from '../../components/Upload';
|
||||
import { httpUrl } from '../fetch';
|
||||
import { getTaskDetail, addTask, updateTask, getTaskCategory, getCompanyInfo } from '../api';
|
||||
import { getTaskDetail, addTask, updateTask, updatePublishedTask, getTaskCategory, getCompanyInfo } from '../api';
|
||||
import { formItemLayout, formModalLayout } from '../static';
|
||||
import { editorConfig } from '../../components/config';
|
||||
import CodeModal from './codeModal';
|
||||
import './index.scss';
|
||||
import { Confirm } from '../../components/ModalFun';
|
||||
|
||||
|
||||
const { info } = Modal;
|
||||
|
||||
|
||||
function getSomeDayAfter(nDay) {
|
||||
return moment(new Date().setDate(new Date().getDate() + nDay)).format('YYYY-MM-DD HH:mm');
|
||||
}
|
||||
|
||||
export default Form.create()(forwardRef(({ current_user, form, showNotification, match, history }, ref) => {
|
||||
|
||||
console.log(current_user);
|
||||
|
||||
const [taskCategoryArr, setTaskCategoryArr] = useState([]);
|
||||
const [fileList, setFileList] = useState(null);
|
||||
|
||||
const [publishMode, setPublishMode] = useState('0');
|
||||
const [categoryId, setCategoryId] = useState('7');
|
||||
const [descriptionHtml, setDescriptionHtml] = useState('');
|
||||
const [enterpriseName, setEnterpriseName] = useState('');
|
||||
const [publishMode, setPublishMode] = useState('0'); //发布方式
|
||||
const [categoryId, setCategoryId] = useState('7'); //所在领域
|
||||
const [descriptionHtml, setDescriptionHtml] = useState(''); //详情的富文本
|
||||
const [enterpriseName, setEnterpriseName] = useState(''); //主体信息
|
||||
const [displayTime, setDisplayTime] = useState(() => {
|
||||
return {
|
||||
collectingTime: getSomeDayAfter(30),
|
||||
|
@ -38,18 +35,32 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
signingTime: getSomeDayAfter(30 + 15 + 7 + 15),
|
||||
payingTime: getSomeDayAfter(30 + 15 + 7 + 15 + 15)
|
||||
}
|
||||
});
|
||||
}); //节点时间
|
||||
const [visible, setVisible] = useState(false);
|
||||
const [num, setNum] = useState(0) // 倒计时
|
||||
const [isSend, setIsSend] = useState(false) // 是否发送验证码
|
||||
|
||||
const [published, setPublished] = useState(false); //是否已发布
|
||||
const [status, setStatus] = useState(0); //任务当前状态
|
||||
const [publishedAt, setPublishedAt] = useState();
|
||||
|
||||
const id = match.params.taskId;
|
||||
const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form;
|
||||
|
||||
// 根据是否传id判断是新增还是修改
|
||||
// 根据是否传id判断是新增还是修改,根据状态判定是否是发布后的修改
|
||||
useEffect(() => {
|
||||
if (id) {
|
||||
getTaskDetail(id).then(data => {
|
||||
console.log('data');
|
||||
console.log(data.status);
|
||||
// 如果发布了, 且用户不是管理员,那么返回之前的页面
|
||||
if (data.status > 2 && !(current_user && current_user.admin)) {
|
||||
history.go(-1);
|
||||
}
|
||||
if (data.status > 2) {
|
||||
setPublished(true);
|
||||
setStatus(data.status);
|
||||
setPublishedAt(data.publishedAt || data.createdAt)
|
||||
}
|
||||
let formValue = {
|
||||
name: data.name,
|
||||
contactName: data.contactName,
|
||||
|
@ -67,6 +78,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
makePublicDays: data.makePublicDays,
|
||||
signingDays: data.signingDays,
|
||||
payingDays: data.payingDays,
|
||||
expertReview: data.expertReview&&'checked'
|
||||
};
|
||||
if (data.tasksAttachments && data.tasksAttachments.length) {
|
||||
for (const item of data.tasksAttachments) {
|
||||
|
@ -82,11 +94,13 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
setDescriptionHtml(data.description);
|
||||
setPublishMode(data.publishMode + '');
|
||||
|
||||
let collectingTime = getSomeDayAfter(data.collectingDays);
|
||||
let choosingTime = getSomeDayAfter(data.collectingDays + data.choosingDays);
|
||||
let makePublicTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays);
|
||||
let signingTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays + data.signingDays);
|
||||
let payingTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays + data.signingDays + data.payingDays);
|
||||
let publishedAt = (data.publishedAt || data.createdAt);
|
||||
|
||||
let collectingTime = getSomeDayAfter(data.collectingDays, publishedAt);
|
||||
let choosingTime = getSomeDayAfter(data.collectingDays + data.choosingDays, publishedAt);
|
||||
let makePublicTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays, publishedAt);
|
||||
let signingTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays + data.signingDays, publishedAt);
|
||||
let payingTime = getSomeDayAfter(data.collectingDays + data.choosingDays + data.makePublicDays + data.signingDays + data.payingDays, publishedAt);
|
||||
setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime });
|
||||
});
|
||||
} else {
|
||||
|
@ -153,6 +167,12 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
};
|
||||
}, [isSend]);
|
||||
|
||||
// 计算发布以后多久
|
||||
function getSomeDayAfter(nDay, publishedAt) {
|
||||
return publishedAt ? moment(new Date(publishedAt).setDate((publishedAt ? new Date(publishedAt) : new Date()).getDate() + nDay)).format('YYYY-MM-DD HH:mm') :
|
||||
moment(new Date().setDate(new Date().getDate() + nDay)).format('YYYY-MM-DD HH:mm');
|
||||
}
|
||||
|
||||
// 上传附件后得到的文件数组
|
||||
function UploadFunc(fileList) {
|
||||
setFileList(fileList);
|
||||
|
@ -177,16 +197,19 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
), []);
|
||||
|
||||
const helperNoLabel = useCallback(
|
||||
(title, name, rules, widget, displayTime) => (
|
||||
<div className="timing_task" key={name}>
|
||||
<div className="mbt10 color-grey-9 lineh-35"><span className="inline-span">{title}</span></div>
|
||||
<Form.Item className="no-label">
|
||||
{getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
|
||||
</Form.Item>
|
||||
<span className="days-word color-grey-9 ">天</span>
|
||||
{publishMode == '0' && <p className="display-time">{displayTime}</p>}
|
||||
</div>
|
||||
), [publishMode]);
|
||||
(title, name, rules, widget, displayTime) => {
|
||||
let active = (status == 3 && title == '成果提交') || (status == 4 && title == '成果评选') || (status == 5 && title == '结果公示') || (status == 6 && title == '任务协议签订');
|
||||
return (
|
||||
<div className="timing_task" key={name}>
|
||||
<div className="mbt10 color-grey-9 lineh-35"><span className={`inline-span ${active ? 'active' : ''}`}>{title}</span></div>
|
||||
<Form.Item className="no-label">
|
||||
{getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
|
||||
</Form.Item>
|
||||
<span className="days-word color-grey-9 ">天</span>
|
||||
{publishMode == '0' && <p className="display-time">{displayTime}</p>}
|
||||
</div>
|
||||
)
|
||||
}, [publishMode, status]);
|
||||
|
||||
// 新增或者修改后的处理函数
|
||||
const publishDeal = useCallback((status, publishMode, res) => {
|
||||
|
@ -194,6 +217,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
if (!status) {
|
||||
history.push("/task/myTask?published=false");
|
||||
showNotification("任务保存成功!");
|
||||
} else if (current_user.admin && status>2) {
|
||||
history.push(`/task/taskDetail/${id}`);
|
||||
showNotification("任务修改成功!");
|
||||
} else if (current_user.admin) {
|
||||
history.push("/task");
|
||||
showNotification("任务发布成功!");
|
||||
|
@ -229,7 +255,23 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
showNotification("任务天数总和不得超过180天!");
|
||||
return;
|
||||
}
|
||||
if (id) {
|
||||
if (status > 2) {
|
||||
updatePublishedTask({
|
||||
id: id,
|
||||
bounty: values.bounty,
|
||||
choosingDays: values.choosingDays,
|
||||
collectingDays: values.collectingDays,
|
||||
currentUserId: current_user.user_id,
|
||||
description: values.description,
|
||||
makePublicDays: values.makePublicDays,
|
||||
name: values.name,
|
||||
payingDays: values.payingDays,
|
||||
signingDays: values.signingDays,
|
||||
uploadFileNumbers:values.uploadFileNumbers
|
||||
}).then(res => {
|
||||
publishDeal(status, publishMode, res);
|
||||
});
|
||||
} else if (id) {
|
||||
// 编辑
|
||||
params.id = id;
|
||||
updateTask(params).then(res => {
|
||||
|
@ -251,21 +293,36 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
}
|
||||
let values = getFieldsValue();
|
||||
values[field] = v;
|
||||
let collectingTime = getSomeDayAfter(values.collectingDays);
|
||||
let choosingTime = getSomeDayAfter(values.collectingDays + values.choosingDays);
|
||||
let makePublicTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays);
|
||||
let signingTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays + values.signingDays);
|
||||
let payingTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays + values.signingDays + values.payingDays);
|
||||
let collectingTime = getSomeDayAfter(values.collectingDays, publishedAt);
|
||||
let choosingTime = getSomeDayAfter(values.collectingDays + values.choosingDays, publishedAt);
|
||||
let makePublicTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays, publishedAt);
|
||||
let signingTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays + values.signingDays, publishedAt);
|
||||
let payingTime = getSomeDayAfter(values.collectingDays + values.choosingDays + values.makePublicDays + values.signingDays + values.payingDays, publishedAt);
|
||||
|
||||
setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime });
|
||||
}
|
||||
|
||||
function changeContactPhone(e){
|
||||
function changeContactPhone(e) {
|
||||
console.log(e);
|
||||
setFieldsValue({
|
||||
contactPhone:e
|
||||
contactPhone: e
|
||||
})
|
||||
}
|
||||
|
||||
function editPublished() {
|
||||
Confirm({
|
||||
title: '提醒',
|
||||
content: <div>
|
||||
<p>确认更改该创客任务内容?</p>
|
||||
</div>,
|
||||
onOk: () => {
|
||||
saveItem(status)
|
||||
},
|
||||
onCancel:()=>{
|
||||
history.push(`/task/taskDetail/${id}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
return (
|
||||
<div className="centerbox">
|
||||
<div className="head-navigation">
|
||||
|
@ -289,6 +346,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
"contactName",
|
||||
[{ required: true, message: "请输入联系人" }],
|
||||
<Input
|
||||
disabled={published}
|
||||
className="contact-input"
|
||||
placeholder="请输入联系人"
|
||||
/>
|
||||
|
@ -364,8 +422,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
<Form.Item >
|
||||
{getFieldDecorator('expertReview', {
|
||||
validateFirst: true,
|
||||
initialValue: false
|
||||
})(<Checkbox className="color-grey-3 font-bd mb10 font-18">是否增加专家评审流程?添加后可联系管理员发布此专家评审任务</Checkbox>)}
|
||||
defaultValue:true,
|
||||
valuePropName:"checked"
|
||||
})(<Checkbox className="color-grey-3" disabled={published}>是否增加专家评审流程?添加后可联系管理员发布此专家评审任务</Checkbox>)}
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item >
|
||||
|
@ -404,7 +463,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
"悬赏模式:",
|
||||
"taskModeId",
|
||||
[{ required: true, message: "请选择悬赏模式" }],
|
||||
<Radio.Group>
|
||||
<Radio.Group disabled={published}>
|
||||
<Radio value={1}>单人悬赏,只设置一个中标者</Radio>
|
||||
<Radio value={2}>多人悬赏,设置多分中标分享赏金</Radio>
|
||||
<Radio value={3}>计件悬赏,合格一稿,支付一稿(稿件数量≥2件)</Radio>
|
||||
|
@ -415,7 +474,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
"征集方式:",
|
||||
"collectionMode",
|
||||
[{ required: true, message: "请选择征集方式" }],
|
||||
<Radio.Group>
|
||||
<Radio.Group disabled={published}>
|
||||
<Radio value={1}>创意征集,应征者以开放讨论的形式参与</Radio>
|
||||
<Radio value={0}>物化成果征集,应征者以各自提交成果物的形式参与</Radio>
|
||||
</Radio.Group>
|
||||
|
@ -425,7 +484,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
"发布方式:",
|
||||
"publishMode",
|
||||
[{ required: true, message: "请选择发布方式" }],
|
||||
<Radio.Group onChange={(e) => { setPublishMode(e.target.value) }}>
|
||||
<Radio.Group disabled={published} onChange={(e) => { setPublishMode(e.target.value) }}>
|
||||
<Radio value={'0'}>自主提交方式,由发布方自行支付赏金,一键自助发布</Radio>
|
||||
<Radio value={'1'}>统筹任务,由平台支付赏金,需经过平台遴选方能发布</Radio>
|
||||
</Radio.Group>
|
||||
|
@ -447,6 +506,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
onChange={(v) => { changeDate(v, 'collectingDays') }}
|
||||
min={1}
|
||||
max={180}
|
||||
disabled={status > 2}
|
||||
/>,
|
||||
displayTime.collectingTime
|
||||
)}
|
||||
|
@ -462,6 +522,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
onChange={(v) => { changeDate(v, 'choosingDays') }}
|
||||
min={1}
|
||||
max={180}
|
||||
disabled={status > 3}
|
||||
/>,
|
||||
displayTime.choosingTime
|
||||
)}
|
||||
|
@ -475,6 +536,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
onChange={(v) => { changeDate(v, 'makePublicDays') }}
|
||||
min={1}
|
||||
max={180}
|
||||
disabled={status > 4}
|
||||
/>,
|
||||
displayTime.makePublicTime
|
||||
)}
|
||||
|
@ -520,12 +582,17 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem(1) }}>发布</Button>
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem(0) }}>保存</Button>
|
||||
<Button onClick={() => { history.go(-1) }}>取消</Button>
|
||||
{
|
||||
published ? <Button className="mr20" type={"primary"} onClick={editPublished}>确认修改</Button> : <div>
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem(1) }}>发布</Button>
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem(0) }}>保存</Button>
|
||||
<Button onClick={() => { history.go(-1) }}>取消</Button>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
<CodeModal visible={visible} setVisible={setVisible} changeContactPhone={changeContactPhone} />
|
||||
|
||||
<CodeModal visible={visible} setVisible={setVisible} changeContactPhone={changeContactPhone}/>
|
||||
|
||||
</div>
|
||||
)
|
||||
})
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
line-height: 28px;
|
||||
padding: 0px 12px;
|
||||
color: #656565;
|
||||
margin: 0px 10px 10px;
|
||||
margin: 0px 10px 10px !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue