forked from Gitlink/forgeplus-react
优化创客数据错乱时的展示
This commit is contained in:
parent
1aaae843f2
commit
b761369320
|
@ -1,9 +1,13 @@
|
|||
// task静态数据
|
||||
import { formatDuring } from 'educoder';
|
||||
|
||||
// task静态数据,工具函数
|
||||
// 任务状态分组
|
||||
export const taskStatusArr = [
|
||||
{ dicItemCode: "3,4,5,6,7", name: "正在进行中", dicItemName: "正在进行中" },
|
||||
{ dicItemCode: "8", name: "已完成", dicItemName: "已完成" },
|
||||
];
|
||||
|
||||
// 所有任务状态
|
||||
export const taskStatusAllArr = [
|
||||
{ dicItemCode: 0, name: "草稿", dicItemName: "草稿" },
|
||||
{ dicItemCode: 1, name: "待审核", dicItemName: "待审核" },
|
||||
|
@ -17,43 +21,51 @@ export const taskStatusAllArr = [
|
|||
{ dicItemCode: 9, name: "待修缮", dicItemName: "待修缮" },
|
||||
];
|
||||
|
||||
// 到期时间筛选项
|
||||
export const taskTimeArr = [
|
||||
{ dicItemCode: 1, name: "24小时到期", dicItemName: "24小时到期" },
|
||||
{ dicItemCode: 3, name: "3天内到期", dicItemName: "3天内到期" },
|
||||
{ dicItemCode: 7, name: "7天内到期", dicItemName: "7天内到期" },
|
||||
];
|
||||
|
||||
// 悬赏选项
|
||||
export const taskModeIdArr = [
|
||||
{ dicItemCode: 1, name: "单人悬赏", dicItemName: "单人悬赏" },
|
||||
{ dicItemCode: 2, name: "多人悬赏", dicItemName: "多人悬赏" },
|
||||
{ dicItemCode: 3, name: "计件悬赏", dicItemName: "计件悬赏" },
|
||||
];
|
||||
|
||||
// 任务筛选状态组
|
||||
export const approveArr = [
|
||||
{ dicItemCode: "3,4,5,6,7,8", name: "已同意", dicItemName: "已同意" },
|
||||
{ dicItemCode: "2", name: "已拒绝", dicItemName: "已拒绝" },
|
||||
{ dicItemCode: "9", name: "待修缮", dicItemName: "待修缮" },
|
||||
];
|
||||
|
||||
// 证明选项
|
||||
export const proofArr = [
|
||||
{ dicItemCode: 1, name: "已同意", dicItemName: "已同意" },
|
||||
{ dicItemCode: 0, name: "已拒绝", dicItemName: "已拒绝" },
|
||||
{ dicItemCode: 2, name: "待审核", dicItemName: "待审核" },
|
||||
];
|
||||
|
||||
// 投诉受理选项
|
||||
export const publicityArr = [
|
||||
{ dicItemCode: 1, name: "已受理", dicItemName: "已受理" },
|
||||
{ dicItemCode: 0, name: "不受理", dicItemName: "不受理" },
|
||||
];
|
||||
|
||||
// 合同审批选项
|
||||
export const agreementArr = [
|
||||
{ dicItemCode: 0, name: "已驳回", dicItemName: "已驳回" },
|
||||
{ dicItemCode: 1, name: "已同意", dicItemName: "已同意" },
|
||||
{ dicItemCode: 2, name: "待审核", dicItemName: "待审核" },
|
||||
];
|
||||
|
||||
// 任务类型选项
|
||||
export const publishModeArr = ["自主提交", "统筹任务"];
|
||||
|
||||
// 延期列表选项
|
||||
export const delayTaskArr = [
|
||||
{ dicItemCode: 3, name: "成果征集中", dicItemName: "成果征集中" },
|
||||
{ dicItemCode: 4, name: "成果评选中", dicItemName: "成果评选中" },
|
||||
|
@ -61,11 +73,13 @@ export const delayTaskArr = [
|
|||
{ dicItemCode: 7, name: "支付中", dicItemName: "支付中" },
|
||||
];
|
||||
|
||||
// 延期选项
|
||||
export const delayDealArr = [
|
||||
{ dicItemCode: 1, name: "延期", dicItemName: "延期" },
|
||||
{ dicItemCode: 2, name: "关闭", dicItemName: "关闭" },
|
||||
];
|
||||
|
||||
// 排序选项
|
||||
export const sortArr = [
|
||||
{
|
||||
name: "综合",
|
||||
|
@ -91,12 +105,14 @@ export const sortArr = [
|
|||
},
|
||||
];
|
||||
|
||||
// 任务成果状态
|
||||
export const applyStatusArr = [
|
||||
{ dicItemCode: "0,3,4", name: "待确认", dicItemName: "待确认" },
|
||||
{ dicItemCode: "1", name: "未采纳", dicItemName: "未采纳" },
|
||||
{ dicItemCode: "2", name: "评选胜出", dicItemName: "评选胜出" },
|
||||
];
|
||||
|
||||
// 任务成果状态
|
||||
export const applyStatusAllArr = [
|
||||
{ dicItemCode: "0", name: "待确认", dicItemName: "待确认" },
|
||||
{ dicItemCode: "1", name: "未采纳", dicItemName: "未采纳" },
|
||||
|
@ -105,24 +121,28 @@ export const applyStatusAllArr = [
|
|||
{ dicItemCode: "4", name: "待确认", dicItemName: "待确认" },
|
||||
];
|
||||
|
||||
// 任务成果审核状态
|
||||
export const paperCheckStatusArr = [
|
||||
{ dicItemCode: "2", name: "待审核", dicItemName: "待审核" },
|
||||
{ dicItemCode: "1", name: "通过", dicItemName: "通过" },
|
||||
{ dicItemCode: "0", name: "未通过", dicItemName: "未通过" },
|
||||
];
|
||||
|
||||
// 提示语数组
|
||||
export const paperCheckTextArr = [
|
||||
"您的成果审核未通过",
|
||||
"您的成果已经审核通过!",
|
||||
"您已成功提交,请等待审核!",
|
||||
];
|
||||
|
||||
// 成果申诉选项
|
||||
export const paperComplainStatusArr = [
|
||||
{ dicItemCode: "0", name: "未通过", dicItemName: "未通过" },
|
||||
{ dicItemCode: "1", name: "通过", dicItemName: "通过" },
|
||||
{ dicItemCode: "2", name: "待审核", dicItemName: "待审核" },
|
||||
];
|
||||
|
||||
// 公示选项
|
||||
export const showUserModeArr = [
|
||||
{ dicItemCode: 0, name: "不公示", dicItemName: "不公示" },
|
||||
{ dicItemCode: 1, name: "自动公示", dicItemName: "自动公示" },
|
||||
|
@ -183,3 +203,39 @@ export const expertReviewArr = [
|
|||
{ dicItemCode: 1, name: "提交评审", dicItemName: "提交评审" },
|
||||
{ dicItemCode: -1, name: "不提交评审", dicItemName: "不提交评审" },
|
||||
];
|
||||
|
||||
// 计算剩余/延期时间
|
||||
export function surplusTime(item) {
|
||||
let surplus = 0;
|
||||
switch (item.status) {
|
||||
case 3:
|
||||
surplus = item.collectingDays * 24 * 3600 - (new Date() - new Date((item.publishedAt || item.createdAt).replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 4:
|
||||
if (!item.collectingCompleteAt) { break; }
|
||||
surplus = item.choosingDays * 24 * 3600 - (new Date() - new Date(item.collectingCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 5:
|
||||
if (!item.makePublicAt) { break; }
|
||||
surplus = item.makePublicDays * 24 * 3600 - (new Date() - new Date(item.makePublicAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 6:
|
||||
if (!item.publicityCompleteAt) { break; }
|
||||
surplus = item.signingDays * 24 * 3600 - (new Date() - new Date(item.publicityCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 7:
|
||||
if (!item.signingCompleteAt) { break; }
|
||||
surplus = item.payingDays * 24 * 3600 - (new Date() - new Date(item.signingCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
default:
|
||||
surplus = 0;
|
||||
}
|
||||
|
||||
let surplusTimetext = formatDuring(surplus);
|
||||
let delayTime = surplus == 0 ? '' : surplus > 0 ? '剩余' + surplusTimetext : '延期' + surplusTimetext;
|
||||
return {
|
||||
surplus,
|
||||
surplusTimetext,
|
||||
delayTime
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 } 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,37 +160,17 @@ export default Form.create()(
|
|||
|
||||
// 流程步骤显示,返回剩余时间
|
||||
const process = useCallback((title, status, days) => {
|
||||
let surplusTimetext = '';
|
||||
let surplus;
|
||||
if (detailData.status === status) {
|
||||
switch (status) {
|
||||
case 3:
|
||||
surplus = detailData.collectingDays * 24 * 3600 - (new Date() - new Date((detailData.publishedAt || detailData.createdAt).replace(/-/g,'/'))) / 1000;
|
||||
break;
|
||||
case 4:
|
||||
surplus = detailData.choosingDays * 24 * 3600 - (new Date() - new Date(detailData.collectingCompleteAt.replace(/-/g,'/'))) / 1000;
|
||||
break;
|
||||
case 5:
|
||||
surplus = detailData.makePublicDays * 24 * 3600 - (new Date() - new Date(detailData.makePublicAt.replace(/-/g,'/'))) / 1000;
|
||||
break;
|
||||
case 6:
|
||||
surplus = detailData.signingDays * 24 * 3600 - (new Date() - new Date(detailData.publicityCompleteAt.replace(/-/g,'/'))) / 1000;
|
||||
break;
|
||||
case 7:
|
||||
surplus = detailData.payingDays * 24 * 3600 - (new Date() - new Date(detailData.signingCompleteAt.replace(/-/g,'/'))) / 1000;
|
||||
break;
|
||||
default:
|
||||
surplus = 0;
|
||||
}
|
||||
surplusTimetext = formatDuring(surplus);
|
||||
}
|
||||
let {surplus,
|
||||
surplusTimetext,
|
||||
delayTime
|
||||
} = surplusTime(detailData);
|
||||
return (
|
||||
<li key={title} className={classNames({ 'active': (detailData.currentStatus !== 9 && detailData.currentStatus >= status), 'except-close': (status === 8 && detailData.exceptClosedBoolean) })} >
|
||||
<span>{title}</span>
|
||||
{detailData.status !== status && days ? <p className="color-grey-6 font-12">{days}天</p> : ''}
|
||||
|
||||
{/* 因为有时只延期几秒或者几分钟时后端没有返回延期,所以这里加一个判断 */}
|
||||
{detailData.status === status && days ? <p className="color-grey-6 font-12">{surplus < 0 ? ('延期' + surplusTimetext) : ('剩余' + surplusTimetext)}</p> : ''}
|
||||
{detailData.status === status && days ? <p className="color-grey-6 font-12">{delayTime}</p> : ''}
|
||||
|
||||
{detailData.status === status && detailData.cancelStatus === 1 && surplus > 0 && <p className="delay-text">(手动延期)</p>}
|
||||
{detailData.status === status && detailData.delayed && detailData.cancelStatus === 0 && surplus > 0 && detailData.delayCount && <p className="delay-text">(系统自动延期)</p>}
|
||||
|
|
|
@ -5,7 +5,7 @@ import { formatDuring, getUrlToken, addMeta, IsPC } from 'educoder';
|
|||
import ChooseNav from '../../components/chooseNav';
|
||||
import SortBox from '../../components/sortBox';
|
||||
import ItemListTask from '../components/itemListTask';
|
||||
import { taskTimeArr, taskStatusArr, sortArr, taskModeIdArr } from '../static';
|
||||
import { taskTimeArr, taskStatusArr, sortArr, taskModeIdArr, surplusTime } from '../static';
|
||||
import { getTaskList, getTaskCategory, getCompanyInfo } from '../api';
|
||||
import polify from '../image/polify.png';
|
||||
import '../index.scss';
|
||||
|
@ -85,7 +85,7 @@ export default ({ history, current_user, showLoginDialog, location, mygetHelmeta
|
|||
getTaskList(params).then(data => {
|
||||
if (data) {
|
||||
for (const item of data.rows) {
|
||||
item.delayTime = surplusTime(item);
|
||||
item.delayTime = surplusTime(item).delayTime;
|
||||
}
|
||||
setTaskList(data.rows);
|
||||
setTotal(data.total);
|
||||
|
@ -127,33 +127,6 @@ export default ({ history, current_user, showLoginDialog, location, mygetHelmeta
|
|||
setCurPage(1);
|
||||
}, []);
|
||||
|
||||
// 计算任务时间,返回延时/剩余时间
|
||||
function surplusTime(item) {
|
||||
let surplus;
|
||||
switch (item.status) {
|
||||
case 3:
|
||||
surplus = item.collectingDays * 24 * 3600 - (new Date() - new Date((item.publishedAt || item.createdAt).replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 4:
|
||||
surplus = item.choosingDays * 24 * 3600 - (new Date() - new Date(item.collectingCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 5:
|
||||
surplus = item.makePublicDays * 24 * 3600 - (new Date() - new Date(item.makePublicAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 6:
|
||||
surplus = item.signingDays * 24 * 3600 - (new Date() - new Date(item.publicityCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
case 7:
|
||||
surplus = item.payingDays * 24 * 3600 - (new Date() - new Date(item.signingCompleteAt.replace(/-/g, '/'))) / 1000;
|
||||
break;
|
||||
default:
|
||||
surplus = 0;
|
||||
}
|
||||
|
||||
let surplusTimetext = formatDuring(surplus);
|
||||
return surplus > 0 ? '剩余' + surplusTimetext : '延期' + surplusTimetext;
|
||||
}
|
||||
|
||||
// 改变排序
|
||||
const changeSort = useCallback((sortType) => {
|
||||
let sortValue = '';
|
||||
|
|
Loading…
Reference in New Issue