From 92f3934d5eeb540a8c4cce21c8e628fca79c45f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com> Date: Fri, 18 Jun 2021 17:07:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=88=91=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E5=8F=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/favicon.ico | Bin 9049 -> 67646 bytes .../components/itemListMyTask/index.jsx | 129 ++++++++++++++ .../components/itemListMyTask/index.scss | 64 +++++++ .../components/itemListTask/index.jsx | 78 +++++---- .../components/itemListTask/index.scss | 4 +- src/military/components/statusNav/index.scss | 2 +- src/military/index.scss | 5 + src/military/task.js | 11 +- src/military/task/api.js | 8 +- src/military/task/myTask/index.jsx | 94 ++++++++--- src/military/task/myTask/index.scss | 17 +- src/military/task/static.js | 7 +- src/military/task/taskDetail/index.jsx | 152 +++++++++++++---- src/military/task/taskDetail/index.scss | 75 +++++++-- src/military/task/taskEdit/index.jsx | 158 ++++++++++++------ src/military/task/taskEdit/index.scss | 3 - src/military/task/taskList/index.jsx | 19 ++- 17 files changed, 648 insertions(+), 178 deletions(-) create mode 100644 src/military/components/itemListMyTask/index.jsx create mode 100644 src/military/components/itemListMyTask/index.scss diff --git a/public/favicon.ico b/public/favicon.ico index 05b9d163e5267afb1d933b189a1d6210fc2fe634..29b4c3af1297226b6299c44641bd21eecf1dae15 100755 GIT binary patch literal 67646 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 diff --git a/src/military/components/itemListMyTask/index.jsx b/src/military/components/itemListMyTask/index.jsx new file mode 100644 index 000000000..724249b19 --- /dev/null +++ b/src/military/components/itemListMyTask/index.jsx @@ -0,0 +1,129 @@ +import React, { useEffect, useState } from 'react'; +import { Icon, Modal, Pagination } from 'antd'; +import { Link } from "react-router-dom"; +import Nodata from '../../../forge/Nodata'; +import Loading from "../../../Loading"; +import { publishModeArr } from '../../task/static'; +import './index.scss'; + +const statusArr = ["草稿", "待审核", "已拒绝", "成果征集中", "成果评选中", "公示中", "协议签订中", "支付中", "已完成"]; +export default (props) => { + const { list, itemClick, curPage, total, changePage, taskCategoryValueArr, loading } = props; + + const [page, setPage] = useState(1); + const [activeItem, setActiveItem] = useState(''); + const [visibleProofs, setVisibleProofs] = useState(false); + + const [pageSize, setPageSize] = useState(() => { + return props.pageSize || 10; + }); + + useEffect(() => { + changePage(page); + }, [page]); + + function uploadProofs(item) { + setVisibleProofs(true); + setActiveItem(item); + } + + return ( + +
    +
  • 任务
  • +
  • 类型
  • +
  • 应征投稿
  • +
  • 金额
  • +
  • 任务状态
  • +
  • 操作
  • +
+ + {loading ? : + { + list.map(item => { + return ( +
+

+ 任务编号:{item.number} + + {item.createdAt} +

+
    +
  • + {item.name} + {item.status == 4 && 待确认} +
  • +
  • + {taskCategoryValueArr[item.categoryId]} + {publishModeArr[item.publishMode]} +
  • + +
  • {item.papersCount}
  • + +
  • ¥{item.bounty}
  • +
  • + + {statusArr[item.status]} + +
  • +
  • + { + item.status == 0 ? + 编辑草稿 : + 查看详情 + } + + {item.status == 4 && 成果评选} + {item.status == 4 && item.papersCount && (!item.isProofBoolean) && { uploadProofs(item) }} className="line_1 color-blue">上传佐证材料} + + {/* 支付登记 */} + {/* 上传支付凭证 */} +
  • +
+
+ ) + }) + } + + {list.length > 0 ? +
+ {total > pageSize && { setPage(page) }} + current={curPage} + total={total} + showTotal={total => `共 ${total} 条`} + />} +
: + } +
+ } + + { setVisibleProofs(false) }} + className="form-edit-modal" + > + {/*
+ + + + + + + + +
*/} +
+
+ + ) +} \ No newline at end of file diff --git a/src/military/components/itemListMyTask/index.scss b/src/military/components/itemListMyTask/index.scss new file mode 100644 index 000000000..bfdc780c1 --- /dev/null +++ b/src/military/components/itemListMyTask/index.scss @@ -0,0 +1,64 @@ +.needs_condition_content_nav { + padding: 0px 20px; + background: #f7f7f7; + height: 50px; + line-height: 50px; + color: #656565; + text-align: center; + margin-bottom: 10px; +} + +.needs_condition_content { + border: 1px solid #eaeaea; + border-radius: 4px; + margin-bottom: 20px; + + ul { + margin: 0; + padding: 20px; + box-sizing: border-box; + + li { + text-align: center; + justify-content: center; + align-items: center; + display: -webkit-flex; + } + } + + .list_status { + border-radius: 10px; + padding: 0px 10px; + height: 22px; + line-height: 22px; + display: inline-block; + color: #fff; + background: #fa6400; + margin-left: 0.625rem; + font-size: 0.8rem; + } + .needs_condition_content_t { + height: 40px; + padding: 0px 20px; + background: #f7f7f7; + color: #333; + border-bottom: 1px solid #eaeaea; + line-height: 40px; + } +} + +.tab-list-box { + position: relative; + display: flex; + justify-content: space-between; + padding: 20px; + background: #fff; + border-bottom: 1px solid #dedede; +} + +.flex-column { + display: flex; + flex-flow: column nowrap; + justify-content: center; + align-items: center; +} diff --git a/src/military/components/itemListTask/index.jsx b/src/military/components/itemListTask/index.jsx index 894a506e1..46de4055b 100644 --- a/src/military/components/itemListTask/index.jsx +++ b/src/military/components/itemListTask/index.jsx @@ -1,56 +1,64 @@ import React, { useEffect, useState } from 'react'; import { Icon, Pagination } from 'antd'; import Nodata from '../../../forge/Nodata'; +import Loading from "../../../Loading"; import './index.scss'; const statusArr = ["草稿", "待审核", "已拒绝", "成果征集中", "成果评选中", "公示中", "协议签订中", "支付中", "已完成"]; const classArr = ['', 'list-done', 'list-error', 'list-red', 'list-yellow', '', '', 'list-pay', 'list-gray',]; export default (props) => { - const { list, itemClick, curPage, total, changePage } = props; + const { list, itemClick, curPage, total, changePage, loading } = props; const [page, setPage] = useState(1); + const [pageSize, setPageSize] = useState(() => { + return props.pageSize || 10; + }); + useEffect(() => { changePage(page); }, [page]); return ( - - { - list.map(item => { - return ( -
-
-
{ itemClick(item.id) }}> - {item.name || item.title} - {item.status && {statusArr[item.status]}} -
-
- {item.visits} - {item.papersCount}人参与 + loading ? : + + { + list.map(item => { + return ( +
+
+
{ itemClick(item.id) }}> + {item.name || item.title} + {item.status && {statusArr[item.status]}} + {(!item.status == '8') && item.delayTime && 延期中} +
+
+ {item.visits} + {item.papersCount}人参与 + {(!item.status == '8') && item.delayTime && {item.delayTime}} +
+ + + + {item.bounty} +
+ ) + }) + } - - - {item.bounty} - -
- ) - }) - } - - {list.length > 0 ? -
- { setPage(page) }} - current={curPage} - total={total} - showTotal={total => `共 ${total} 条`} - /> -
: - } - + {list.length > 0 ? +
+ {total > pageSize && { setPage(page) }} + current={curPage} + total={total} + showTotal={total => `共 ${total} 条`} + />} +
: + } + ) } \ No newline at end of file diff --git a/src/military/components/itemListTask/index.scss b/src/military/components/itemListTask/index.scss index fcbb2054e..cf01bab51 100644 --- a/src/military/components/itemListTask/index.scss +++ b/src/military/components/itemListTask/index.scss @@ -22,9 +22,9 @@ } .list-title span { padding: 2px 10px; - margin-left: 0.5em; + margin-left: .625rem; background: #f8c753; - font-size: 13px; + font-size: .8rem; color: #fff; border-radius: 14px; } diff --git a/src/military/components/statusNav/index.scss b/src/military/components/statusNav/index.scss index a6661fa0b..ac536c2a2 100644 --- a/src/military/components/statusNav/index.scss +++ b/src/military/components/statusNav/index.scss @@ -1,5 +1,5 @@ .status-list { - padding: 1rem 1.8rem; + padding: 1rem 0; display: flex; justify-content: start; } diff --git a/src/military/index.scss b/src/military/index.scss index e7295d0d4..b600dba07 100644 --- a/src/military/index.scss +++ b/src/military/index.scss @@ -102,3 +102,8 @@ max-width: 25%; text-align: left; } + + +.ant-modal-footer{ + text-align: center; +} \ No newline at end of file diff --git a/src/military/task.js b/src/military/task.js index 52d1ff4d0..d5475db00 100644 --- a/src/military/task.js +++ b/src/military/task.js @@ -20,7 +20,7 @@ const TaskDetail = Loadable({ loading: Loading, }); -const TaskAdd = Loadable({ +const TaskEdit = Loadable({ loader: () => import("./task/taskEdit"), loading: Loading, }); @@ -46,7 +46,14 @@ class Index extends Component { ( - + + )} + > + + ( + )} > diff --git a/src/military/task/api.js b/src/military/task/api.js index 242a81ae1..c52cf93b1 100644 --- a/src/military/task/api.js +++ b/src/military/task/api.js @@ -63,10 +63,10 @@ export async function getMyTaskList(params) { // 详情查询 export async function getTaskDetail(id) { let res = await fetch({ - url: '/api/tasks/' + id, + url: '/api/tasks/getTask/' + id, method: 'get', }); - if (res.code === '1') { + if (res.data) { return res.data; } else { notification.open({ @@ -94,9 +94,9 @@ export function deleteTask(id) { } //更新 -export function editTask(data) { +export function updateTask(data) { return fetch({ - url: '/api/tasks/update', + url: '/api/tasks/', method: 'put', data: data }); diff --git a/src/military/task/myTask/index.jsx b/src/military/task/myTask/index.jsx index c91ecc527..484bb59cf 100644 --- a/src/military/task/myTask/index.jsx +++ b/src/military/task/myTask/index.jsx @@ -1,11 +1,8 @@ import React, { useEffect, useState } from 'react'; -import { Tabs, Pagination, Input, Button } from 'antd'; -import moment from 'moment'; +import { Tabs, Input, Button, } from 'antd'; import StatusNav from '../../components/statusNav'; -import SortBox from '../../components/sortBox'; -import ItemListTask from '../../components/itemListTask'; -import Nodata from '../../../forge/Nodata'; -import { taskTimeArr, taskStatusArr, taskStatusAllArr, sortArr, taskModeIdArr } from '../static'; +import ItemListMyTask from '../../components/itemListMyTask'; +import { taskStatusAllArr, } from '../static'; import { getTaskList, getTaskCategory } from '../api'; import './index.scss'; const Search = Input.Search; @@ -15,33 +12,56 @@ const publishStatusArr = taskStatusAllArr.slice(3); const unpublishStatusArr = taskStatusAllArr.slice(0, 3); -export default ({ history, current_user }) => { - const [identity, setIdentity] = useState('1'); - const [type, setType] = useState('1'); +export default ({ location, history, current_user }) => { + let defaultValue = decodeURI(location.search.split("=")[1] || ""); + + const [identity, setIdentity] = useState('1'); + const [taskCategoryValueArr, setTaskCategoryValueArr] = useState([]); + + const [statusType, setStatusType] = useState(() => { + return defaultValue === 'false' ? '2' : '1'; + }); + const [statusString, setStatusString] = useState(() => { + return defaultValue === 'false' ? '0,1,2' : '3,4,5,6,7,8'; + }); - const [status, setStatus] = useState(''); const [searchInput, setSearchInput] = useState(''); const [orderBy, setOrderBy] = useState(''); const [curPage, setCurPage] = useState(1); const [total, setTotal] = useState(0); const [taskList, setTaskList] = useState([]); + const [loading, setLoading] = useState(false); + + // 获取任务领域数组 + useEffect(() => { + getTaskCategory().then(data => { + if (data) { + const taskCategoryValueArr = []; + for (const item of data) { + taskCategoryValueArr[item.id] = item.name; + } + setTaskCategoryValueArr(taskCategoryValueArr); + } + }); + }, []); useEffect(() => { const params = { - status, + statusString, searchInput, orderBy, curPage, pageSize: 10, }; - + setLoading(true); getTaskList(params).then(data => { if (data) { setTaskList(data.rows); setTotal(data.total); } + setLoading(false); }) - }, [status, searchInput, orderBy, curPage]); + }, [statusString, searchInput, orderBy, curPage]); function taskClick(id) { @@ -53,17 +73,40 @@ export default ({ history, current_user }) => { } function changeOptionId(option, type) { - if(type==='publishStatus'){ - setStatus(option.dicItemCode); + if (type === 'publishStatus') { + setStatusString(option.dicItemCode.toString() || '3,4,5,6,7,8'); + } else if (type === 'unpublishStatus') { + setStatusString(option.dicItemCode.toString() || '0,1,2'); } + setCurPage(1); + } + + function changeStatusType(key) { + if (key === '1') { + setStatusString('3,4,5,6,7,8'); + } else { + setStatusString('0,1,2'); + } + setCurPage(1); + setStatusType(key); } return ( -
{ setIdentity(key) }}> - { setType(key) }}> + setSearchInput(value)} + /> + } + > { changeOptionId={changeOptionId} /> - { setCurPage(page) }} + loading={loading} /> + { options={unpublishStatusArr} changeOptionId={changeOptionId} /> + + { setCurPage(page) }} + loading={loading} + /> - + 请稍候 diff --git a/src/military/task/myTask/index.scss b/src/military/task/myTask/index.scss index b05d89c9d..c7cf9fc68 100644 --- a/src/military/task/myTask/index.scss +++ b/src/military/task/myTask/index.scss @@ -4,27 +4,36 @@ background: #fff; text-align: center; } - .ant-tabs-tab{ + .ant-tabs-tab { height: 4.5rem; line-height: 3rem; font-size: 1.15rem; font-weight: 500; } + .ant-tabs-extra-content { + line-height: 4.5rem; + } - .childTab{ + .childTab { background: #fff; .ant-tabs-top-bar { + padding: 0 1.8rem 0 0.8rem; background: #fff; text-align: left; } - .ant-tabs-tab{ + + .ant-tabs-tab { height: 4.5rem; line-height: 3rem; font-size: 1rem; font-weight: normal; } - .ant-tabs-ink-bar{ + .ant-tabs-ink-bar { visibility: hidden; } + .ant-tabs-tabpane { + padding: 1rem 1.8rem; + line-height: 2; + } } } diff --git a/src/military/task/static.js b/src/military/task/static.js index 5b52bffbe..83893f4df 100644 --- a/src/military/task/static.js +++ b/src/military/task/static.js @@ -1,7 +1,7 @@ // 开始 export const taskStatusArr = [ - { dicItemCode: 999, name: "正在进行中", dicItemName: '正在进行中' }, - { dicItemCode: 0, name: "已完成", dicItemName: '已完成' }, + { dicItemCode: '3,4,5,6,7', name: "正在进行中", dicItemName: '正在进行中' }, + { dicItemCode: '8', name: "已完成", dicItemName: '已完成' }, ]; export const taskStatusAllArr = [ @@ -14,7 +14,7 @@ export const taskStatusAllArr = [ { dicItemCode: 6, name: "协议签订中", dicItemName: '协议签订中' }, { dicItemCode: 7, name: "支付中", dicItemName: '支付中' }, { dicItemCode: 8, name: "已完成", dicItemName: '已完成' }, -] +]; export const taskTimeArr = [ { dicItemCode: 1, name: "24小时到期", dicItemName: "24小时到期" }, @@ -28,6 +28,7 @@ export const taskModeIdArr = [ { dicItemCode: 3, name: "计件悬赏", dicItemName: "计件悬赏" }, ] +export const publishModeArr=["自主提交","统筹任务"]; export const sortArr = [{ name: '综合', diff --git a/src/military/task/taskDetail/index.jsx b/src/military/task/taskDetail/index.jsx index f78ad68ec..5ba310384 100644 --- a/src/military/task/taskDetail/index.jsx +++ b/src/military/task/taskDetail/index.jsx @@ -1,59 +1,149 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, useCallback } from 'react'; +import { Link } from "react-router-dom"; +import { getImageUrl } from 'educoder'; import { httpUrl } from '../../fetch'; -import { getTaskDetail } from '../api'; -import { taskStatus, taskType } from '../static'; +import { getTaskDetail, getTaskCategory } from '../api'; +import { taskModeIdArr} from '../static'; import './index.scss'; +import classNames from 'classnames'; -const taskStatusArr = []; -const taskTypeArr = []; -for (const item of taskStatus) { - taskStatusArr.push(item.name); -} -for (const item of taskType) { - taskTypeArr.push(item.name); +const taskModeNameArr=[]; +for(const item of taskModeIdArr){ + taskModeNameArr[item.dicItemCode]=item.dicItemName; } - -export default ({ match,history, showNotification }) => { - const [detailData, setDetailData] = useState({}); +export default ({ match, current_user, history, showNotification }) => { + console.log(current_user); const id = match.params.taskId; + const [detailData, setDetailData] = useState({}); + const [taskCategoryValueArr, setTaskCategoryValueArr] = useState([]); + + + // 获取任务领域数组 + useEffect(() => { + getTaskCategory().then(data => { + if (data) { + const taskCategoryValueArr = []; + for (const item of data) { + taskCategoryValueArr[item.id] = item.name; + } + setTaskCategoryValueArr(taskCategoryValueArr); + } + }); + }, []); + useEffect(() => { id && getTaskDetail(id).then(data => { setDetailData(data || {}); + console.log(data); }) }, [id]); + const process = useCallback((title, days, active) => { + return ( +
  • + {title} + {days &&

    + {days}天 +

    } +
  • + ) + }, []); + + function downFile(item) { + let url = httpUrl + '/busiAttachments/download/' + item.id; + window.open(url); + } + return (
    - {history.go(-1)}}>公告 >  详情 + 创客空间 > + 任务大厅 > +  任务编号:{detailData.number}
    -
    -
    -
    {detailData.title}
    + +
    +
    +
    + 头像加载失败 +

    {current_user.username}

    +
    +
    +
      +
    • {detailData.name}
    • + {taskCategoryValueArr[detailData.categoryId]} +
    +
    +
      +
    • 悬赏模式:{taskModeNameArr[detailData.taskModeId]}
    • +
    • 任务编号:{detailData.number}
    • +
    • 发布时间:{detailData.publishedAt}
    • +
    • 截止时间:{detailData.expiredAt}
    • +
    + +
    +
    -
    -
    - {detailData.publisher &&

    发布单位:{detailData.publisher}

    } -

    发布时间:{detailData.publishDate || detailData.createdAt}

    -

    截止时间:{detailData.closingDate}

    -
    - {/* 富文本内容插入 */} -
    -
    +
    +
      +
    • 发布任务
    • + + {process('成果提交', detailData.collectingDays, detailData.status > 2)} + + {process('成果评选', detailData.choosingDays, detailData.status > 3)} + + {process('结果公示', detailData.makePublicDays, detailData.status > 4)} + + {process('任务协议签订', detailData.signingDays, detailData.status > 5)} + + {process('支付', detailData.payingDays, detailData.status > 6)} + + {process('任务完成', '', detailData.status > 7)} +
    +
    + +
    需求详情:
    + + {/* 富文本内容插入 */} +
    + + {detailData.tasksAttachments && +
    需求文件:
    { - detailData.fileDownloadPath && -

    公告附件:

    -

    { window.open(httpUrl + detailData.fileDownloadPath) }} >{detailData.fileName}

    -
    + detailData.tasksAttachments.map(item => { + return
    + + { downFile(item) }}> + {item.fileName} + ({item.fileSizeString}) +
    + }) } +
    + } -
    +
    知识产权说明:
    +

    + 1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;
    + 2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。 +

    + +
    交稿声明:
    + +

    + 应征者提交的稿件必须是设计作品,广告等无效交稿一律不采用! +

    diff --git a/src/military/task/taskDetail/index.scss b/src/military/task/taskDetail/index.scss index 000938bcd..bbc354fa8 100644 --- a/src/military/task/taskDetail/index.scss +++ b/src/military/task/taskDetail/index.scss @@ -14,22 +14,73 @@ position: absolute; top:-2.3em; } -// 内容详情 -.item-content { - padding: 10px 10px 0 30px; -} -.content-notice { - padding: 20px; + +.task_tag { + padding: 0px 12px; + background: #F1F8FF; + border-radius: 4px; + float: left; + color: #459BE6; + height: 1.25rem; + line-height: 1.25rem; } -.center-author { - display: flex; - align-items: center; +.tasks_status li { + float: left; + position: relative; + margin-right: 20px; + background: #EBEBEB; + width: 140px; + height: 35px; + line-height: 35px; + color: #05101A; + text-align: center; + margin-bottom: 32px; } -.content-text { - margin: 1em 0; - min-height: 30vh; + +.tasks_status li.active { + background: #4CACFF; + color: #fff; +} + +.tasks_status li:not(:first-child):before { + width: 0; + height: 0; + border-width: 17px; + content: ''; + position: absolute; + left: 0px; + border-style: solid; + top: 0px; + border-color: transparent transparent #fafafa transparent; + transform: rotate(90deg); +} + +.tasks_status li:not(:last-child):after { + width: 0; + height: 0; + border-width: 17px; + content: ''; + position: absolute; + right: -34px; + border-style: solid; + top: 0px; + border-color: transparent transparent #EBEBEB transparent; + transform: rotate(90deg); +} + +.tasks_status li.active:after { + border-color: transparent transparent #4CACFF transparent; + transform: rotate(90deg); +} + +.file-list-box{ + padding:0 1.25rem; +} + +.content-text{ + padding: 1.25rem; } .content-download{ diff --git a/src/military/task/taskEdit/index.jsx b/src/military/task/taskEdit/index.jsx index 5d56b78e7..2ae799deb 100644 --- a/src/military/task/taskEdit/index.jsx +++ b/src/military/task/taskEdit/index.jsx @@ -1,51 +1,57 @@ import React, { forwardRef, useCallback, useEffect, useState } from 'react'; import { Form, Radio, Input, InputNumber, Icon, Button, Modal } from 'antd'; import classNames from 'classnames'; +import moment from 'moment'; 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 } from '../api'; -import {formItemLayout,tailFormItemLayout,formModalLayout}from '../static'; +import { formItemLayout, formModalLayout } from '../static'; import './index.scss'; +const { info } = Modal; + let actionUrl = ''; if (window.location.href.indexOf('localhost') > -1) { actionUrl = httpUrl; } +function getSomeDayAfter(nDay) { + return moment(new Date().setDate(new Date().getDate() + nDay)).format('YYYY-MM-DD HH:mm:ss'); +} + export default Form.create()(forwardRef(({ current_user, form, showNotification, match, history }, ref) => { const [taskCategoryArr, setTaskCategoryArr] = useState([]); const [fileList, setFileList] = useState(null); - const [publishMode, setPublishMode] = useState(0); + const [publishMode, setPublishMode] = useState('0'); const [categoryId, setCategoryId] = useState('7'); const [description, setDescription] = useState(''); - + const [enterpriseName, setEnterpriseName] = useState('神马科技股份有限公司'); + const [displayTime, setDisplayTime] = useState(() => { + return { + collectingTime: getSomeDayAfter(30), + choosingTime: getSomeDayAfter(30 + 15), + makePublicTime: getSomeDayAfter(30 + 15 + 7), + signingTime: getSomeDayAfter(30 + 15 + 7 + 15), + payingTime: getSomeDayAfter(30 + 15 + 7 + 15 + 15) + } + }); + // console.log(displayTime); const [visible, setVisible] = useState(false); const [num, setNum] = useState(0) // 倒计时 const [isSend, setIsSend] = useState(false) // 是否发送验证码 - const id = match.params.requireId; + const id = match.params.taskId; const { getFieldDecorator, validateFields, setFieldsValue, } = form; // 根据是否传id判断是新增还是修改 useEffect(() => { - let formValue = { - taskModeId: 1, - collectionMode: 1, - publishMode: 0, - collectingDays: 30, - choosingDays: 15, - makePublicDays: 7, - signingDays: 15, - payingDays: 15, - }; - let categoryId = '7'; if (id) { getTaskDetail(id).then(data => { - formValue = { + let formValue = { name: data.name, contactName: data.contactName, contactPhone: data.contactPhone, @@ -63,20 +69,42 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, signingDays: data.signingDays, payingDays: data.payingDays, }; - - categoryId = data.categoryId; - if (data.attachmentList.length) { - for (const item of data.attachmentList) { + if (data.tasksAttachments && data.tasksAttachments.length) { + for (const item of data.tasksAttachments) { item.name = item.fileName; item.size = item.fileSize; item.uid = "rc-upload" + item.id } - setFileList(data.attachmentList); + setFileList(data.tasksAttachments); } + setFieldsValue(formValue); + setEnterpriseName(data.enterpriseName); + setCategoryId(data.categoryId); + setDescription(data.description); + + 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); + setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime }); + + console.log(data); }); + } else { + let formValue = { + taskModeId: 1, + collectionMode: 1, + publishMode: 0, + collectingDays: 30, + choosingDays: 15, + makePublicDays: 7, + signingDays: 15, + payingDays: 15, + }; + setFieldsValue(formValue); + setCategoryId('7'); } - setFieldsValue(formValue); - setCategoryId(categoryId); }, [id]); useEffect(() => { @@ -91,9 +119,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, }); }, []); - /** 倒计时显示*/ - useEffect(() => { + useEffect(() => { let timer = 0; if (isSend && num !== 0) { timer = setInterval(() => { @@ -102,7 +129,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, setIsSend(false) clearInterval(timer) } - return n - 1; + return n - 1; }); }, 1000); } @@ -112,7 +139,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, }; }, [isSend]); - function getCode(){ + function getCode() { setIsSend(true); setNum(60); } @@ -145,6 +172,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, {getFieldDecorator(name, { rules, initialValue, validateFirst: true, })(widget)} +
    ), []); @@ -155,13 +183,39 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, setDescription(html); } + // 新增或者修改后的处理函数 + const publishDeal = useCallback((status, publishMode, res) => { + if (res.data) { + showNotification("需求保存成功!"); + if (!status) { + history.push("/task/myTask?published=false") + } else if (publishMode == 1) { + info({ + title: '提示', + content:
    +

    发布申请已提交,请等待管理员的审核

    +

    我们将在1-2个工作日内完成审核

    +
    , + onOk() { + history.push("/task/myTask?published=false"); + }, + }); + } else { + history.push("/task/myTask"); + } + } else { + showNotification(res.message); + } + }, []); + // 保存 - function saveItem() { + function saveItem(status) { validateFields((error, values) => { if (!error) { let params = { ...values, - enterpriseName: '神马科技股份有限公司', + status, + enterpriseName: enterpriseName, categoryId, }; let dateSum = params.collectingDays + params.choosingDays + params.makePublicDays + params.signingDays + params.payingDays; @@ -173,48 +227,46 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, // 编辑 params.id = id; updateTask(params).then(res => { - if (res.code === '1') { - showNotification("需求更新成功!"); - history.go(-1); - } else { - showNotification(res.message); - } + publishDeal(); }); } else { // 新增 addTask(params).then(res => { - if (res.code === '1') { - showNotification("需求新增成功!"); - history.go(-1); - } else { - showNotification(res.message); - } + publishDeal(); }); } } }) } - - + function changeDate(v, field) { + validateFields((error, values) => { + 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); + setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime }); + }) + } return (
    - 创客空间 > - 任务大厅 > + 创客空间 > + 任务大厅 >  发布需求

    任务需求提交

    -
    +

    联系方式(*必填)

    - {"神马科技股份有限公司"} + {enterpriseName} {helper( @@ -384,6 +436,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, "collectingDays", [{ required: true, message: "请输入天数" }], { changeDate(v, 'collectingDays') }} className="date-input" /> )} @@ -436,15 +489,15 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification, * 注:任务天数总和不得超过180天。

    - - - -
    + + + + - - + diff --git a/src/military/task/taskEdit/index.scss b/src/military/task/taskEdit/index.scss index 000c8ff66..9cfa005da 100644 --- a/src/military/task/taskEdit/index.scss +++ b/src/military/task/taskEdit/index.scss @@ -138,6 +138,3 @@ line-height: 40px; } -.ant-modal-footer{ - text-align: center; -} \ No newline at end of file diff --git a/src/military/task/taskList/index.jsx b/src/military/task/taskList/index.jsx index c294afb0c..d4d7ae1e3 100644 --- a/src/military/task/taskList/index.jsx +++ b/src/military/task/taskList/index.jsx @@ -4,20 +4,19 @@ import moment from 'moment'; import ChooseNav from '../../components/chooseNav'; import SortBox from '../../components/sortBox'; import ItemListTask from '../../components/itemListTask'; -import Nodata from '../../../forge/Nodata'; import { taskTimeArr, taskStatusArr, sortArr, taskModeIdArr } from '../static'; import { getTaskList, getTaskCategory } from '../api'; const Search = Input.Search; - export default ({ history, current_user }) => { console.log(current_user); + const [loading, setLoading] = useState(false); const [taskCategoryArr, setTaskCategoryArr] = useState([]); const [categoryId, setCategoryId] = useState(''); const [taskModeId, setTaskModeId] = useState(''); const [expiredStartTime, setExpiredStartTime] = useState(''); const [expiredEndTime, setExpiredEndTime] = useState(''); - const [status, setStatus] = useState(''); + const [statusString, setStatusString] = useState('3,4,5,6,7,8'); const [searchInput, setSearchInput] = useState(''); const [orderBy, setOrderBy] = useState(''); const [curPage, setCurPage] = useState(1); @@ -42,20 +41,21 @@ export default ({ history, current_user }) => { taskModeId, expiredStartTime, expiredEndTime, - status, + statusString, searchInput, orderBy, curPage, pageSize: 10, }; - + setLoading(true); getTaskList(params).then(data => { if (data) { setTaskList(data.rows); setTotal(data.total); } + setLoading(false); }) - }, [categoryId, taskModeId, expiredStartTime, expiredEndTime, status, searchInput, orderBy, curPage]); + }, [categoryId, taskModeId, expiredStartTime, expiredEndTime, statusString, searchInput, orderBy, curPage]); function changeOptionId(option, type) { @@ -74,7 +74,7 @@ export default ({ history, current_user }) => { setExpiredEndTime(''); } } else if (type === 'taskStatus') { - setStatus(option.dicItemCode); + setStatusString(option.dicItemCode||'3,4,5,6,7,8'); } } @@ -101,7 +101,6 @@ export default ({ history, current_user }) => { } return ( -
    { maxLength={20} style={{ width: "300px" }} placeholder="请输入任务编号/任务名称关键字" - onSearch={(value) => setSearchInput(value)} /> + onSearch={(value) => setSearchInput(value)} + /> @@ -167,6 +167,7 @@ export default ({ history, current_user }) => { curPage={curPage} total={total} changePage={(page) => { setCurPage(page) }} + loading={loading} />