优化创客数据错乱时的展示

This commit is contained in:
何童崇 2022-11-16 14:55:53 +08:00
parent 1aaae843f2
commit b761369320
3 changed files with 65 additions and 56 deletions

View File

@ -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
};
}

View File

@ -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>}

View File

@ -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 = '';