L3K;U{ZFYaMOCNzM1?P_Tap;C^
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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 00000000..724249b1
--- /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 00000000..bfdc780c
--- /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 894a506e..46de4055 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 fcbb2054..cf01bab5 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 a6661fa0..ac536c2a 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 e7295d0d..b600dba0 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 52d1ff4d..d5475db0 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 242a81ae..c52cf93b 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 c91ecc52..484bb59c 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 b05d89c9..c7cf9fc6 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 5b52bffb..83893f4d 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 f78ad68e..5ba31038 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.bounty}
+ {/*
+ 联系TA
+ */}
+
+
+
-
-
- {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
+ })
}
+
+ }
-
+
知识产权说明:
+
+ 1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;
+ 2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
+
+
+
交稿声明:
+
+
+ 应征者提交的稿件必须是设计作品,广告等无效交稿一律不采用!
+
diff --git a/src/military/task/taskDetail/index.scss b/src/military/task/taskDetail/index.scss
index 000938bc..bbc354fa 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 5d56b78e..2ae799de 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 000c8ff6..9cfa005d 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 c294afb0..d4d7ae1e 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}
/>
From 216e984740c3c5bd5960d5d23c9e2bcb3de542bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com>
Date: Sat, 19 Jun 2021 16:37:35 +0800
Subject: [PATCH 04/84] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=88=91=E7=9A=84?=
=?UTF-8?q?=E6=88=90=E6=9E=9C=E9=9D=99=E6=80=81=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/military/components/chooseNav/index.jsx | 4 +-
src/military/components/chooseNav/index.scss | 35 +-
.../components/itemListAchieve/index.jsx | 101 +++++
.../components/itemListAchieve/index.scss | 20 +
src/military/components/sortBox/index.scss | 2 +-
src/military/image/win.png | Bin 0 -> 1635 bytes
src/military/image/winner.png | Bin 0 -> 8573 bytes
src/military/index.scss | 35 +-
src/military/task/myTask/index.jsx | 99 ++++-
src/military/task/static.js | 6 +-
src/military/task/taskDetail/index.jsx | 369 +++++++++++++++---
src/military/task/taskDetail/index.scss | 83 +++-
src/military/task/taskEdit/index.jsx | 23 +-
src/military/task/taskList/index.jsx | 14 +-
14 files changed, 673 insertions(+), 118 deletions(-)
create mode 100644 src/military/components/itemListAchieve/index.jsx
create mode 100644 src/military/components/itemListAchieve/index.scss
create mode 100644 src/military/image/win.png
create mode 100644 src/military/image/winner.png
diff --git a/src/military/components/chooseNav/index.jsx b/src/military/components/chooseNav/index.jsx
index e15d29b8..251ee995 100644
--- a/src/military/components/chooseNav/index.jsx
+++ b/src/military/components/chooseNav/index.jsx
@@ -3,7 +3,7 @@ import classNames from 'classnames';
import './index.scss';
export default (props) => {
- const { title, options, changeOptionId, type } = props;
+ const { title, options, changeOptionId, type ,size} = props;
const [option, setOption] = useState({ code: "", dicItemName: "" ,dicItemCode:""});
@@ -13,7 +13,7 @@ export default (props) => {
return (
-
+
{title}
{ setOption({ dicItemCode: "", dicItemName: "" }) }}>全部
diff --git a/src/military/components/chooseNav/index.scss b/src/military/components/chooseNav/index.scss
index 42ac7b01..bd68f5b3 100644
--- a/src/military/components/chooseNav/index.scss
+++ b/src/military/components/chooseNav/index.scss
@@ -1,42 +1,45 @@
.nav-content {
margin:20px 0;
+ padding:1rem 0.2rem;
background: #fff;
- border-bottom: 1px solid #eaeaea;
- box-shadow: #ddd 0px 0px 5px;
+ box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.05);
+ border-radius: 5px;
}
-.shop-box {
- width: 1280px;
- border-top: 1px solid #eaeaea;
+.choose-box {
+ padding: .35em 0;
display: flex;
justify-content: start;
+ font-size: .85rem;
}
.choose-title {
- width: 110px;
- background: #f3f3f3;
+ width: 6.5em;
text-align: center;
- padding: 16px 0;
- font-size: 14px;
- color: #666;
- font-weight: 600;
+ color: #333;
+ font-weight: 500;
+}
+
+.choose-box-big{
+ font-size: 1rem;
+ .choose-title{
+ text-align: right;
+ }
}
.choose-list {
- width: 1170px;
- padding: 16px 0;
display: flex;
justify-content: start;
}
.choose-item {
- font-size: 14px;
color:#666;
text-align: center;
padding: 0 15px ;
cursor: pointer;
&:hover{
- color: #0072ff;
+ color: #1B8FFF;
}
}
.choose-item-checked {
- color: #0072ff;
+ background: #f7f7f7;
+ color: #1B8FFF;
}
diff --git a/src/military/components/itemListAchieve/index.jsx b/src/military/components/itemListAchieve/index.jsx
new file mode 100644
index 00000000..0f7e2bf0
--- /dev/null
+++ b/src/military/components/itemListAchieve/index.jsx
@@ -0,0 +1,101 @@
+import React, { useEffect, useState } from 'react';
+import { Icon, Pagination } from 'antd';
+import { getImageUrl } from 'educoder';
+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, curPage, total, changePage, loading } = props;
+ const [page, setPage] = useState(1);
+ const [pageSize, setPageSize] = useState(() => {
+ return props.pageSize || 10;
+ });
+
+ useEffect(() => {
+ changePage(page);
+ }, [page]);
+
+ return (
+ loading ?
:
+
+ {
+ list.map(item => {
+ return (
+
+
+
+
})
+
+
+ -
+
+ 莫胜吕
+
+ 2 天前
+ 待审核
+
+
+ -
+
+ 待确认
+
+
+
+ {/*
+
+
+
+
+ */}
+
+
+ 成果编号:#25698320
+ 提交时间:2021-06-17 13: 45: 53
+ 稿件状态:雇主已浏览
+
+ 举报
+ 0
+
+ 2
+
+
+
+
+
+
+
+ )
+ })
+ }
+
+ {list.length > 0 ?
+
+ {total > pageSize &&
{ setPage(page) }}
+ current={curPage}
+ total={total}
+ showTotal={total => `共 ${total} 条`}
+ />}
+ :
+ }
+
+
+ )
+}
+
diff --git a/src/military/components/itemListAchieve/index.scss b/src/military/components/itemListAchieve/index.scss
new file mode 100644
index 00000000..69399ed8
--- /dev/null
+++ b/src/military/components/itemListAchieve/index.scss
@@ -0,0 +1,20 @@
+.blue_line_btn {
+ color: #4CACFF!important;
+ border: 1px solid #4CACFF;
+ background: #fff!important;
+}
+
+.base_smallBtn {
+ color: #ccc;
+ font-size: 14px;
+ background: #ccc;
+ border-radius: 4px;
+ height: 30px;
+ line-height: 30px;
+ display: block;
+ width: 100px;
+ box-sizing: border-box;
+ text-align: center;
+}
+
+
diff --git a/src/military/components/sortBox/index.scss b/src/military/components/sortBox/index.scss
index cbc72547..f3e8d0e9 100644
--- a/src/military/components/sortBox/index.scss
+++ b/src/military/components/sortBox/index.scss
@@ -2,7 +2,7 @@
display: flex;
justify-content: start;
align-items: center;
- margin-left: 20px;
+ margin-left: 10px;
font-size: 1rem;
.sort-item {
display: flex;
diff --git a/src/military/image/win.png b/src/military/image/win.png
new file mode 100644
index 0000000000000000000000000000000000000000..4014a9df6824f6d4d14775e4fa8d637500c4ecd8
GIT binary patch
literal 1635
zcmV-p2AuhcP)
@JtRuv|pemP8fmZE^LaW``YEv*`2rALOyL!o0|jDwk+)T
zV@zNl1ZHAnBry2;{4Ttn1Dbs38iOKpnxyNLY16|0-tQ9t+SHUFTT#_#9N0K_U*>5IU|wss~H}RppS&
zL1zz?mLjvJAakc8rO8l2-yj*5$ozY+h@!&wmV126){zaXee*GNb0c(LL++n~UGaS=
zibLpdYu-fnw7{TJ?DD1Pi8J_@ehsN^s2GlXcP?h~1SGI+61oMBlg4)~F!I!!Z1|xW<;}u;y7(=`#P;UbLwNGW}rU
zc~0%mpULZAs><^lYRjMSzo^G7Ukv}afM5MOdhrTeNkKf0JaixCp{bBebmII<33u%O
zqXfa1=t&v>t9Q_Ye*u>(P;{e$#um)O)A8H(;TzvYtYB9D5L(;ut6oFfFF;oof*3OW
zF3fjk!+;Vm&i`5b&X!|pgD=wAWBj^p=;03v>M;Q_Z#wqJ-^1@bh?zAxPlZevUASap
zN1=Tg^usgwbz9NK{op+^^)Afg4@N@pgzkNDjR&63Q*^C&u-~*B{rw*xmjN3?YNuh>
zJOk+rlqT^nZN~qu8L6toy!hL=H3LeLU4(9xXhZWvjmI}@
zCOh8mIU>4c7xZ3(qEgI~`Itw)j$83sq1hXE;$PVSRTbE}HSob{+;gj-F9jqcT9C(U
zF;nkU34#-n%RLqW4E8~=3}c?sQ)i3)iyPtMc_^>IzPJ=>K8OEV9d^YM{FWyC_TL~w
zE3s>qp&zy5S8hZvUxBk7FnlQH`GrXJ@IIe&YXk3olD}x-jsufSVCv{ikMeKrL3cO9
zfKu!Wi(%9-WN0~9i{JJx^0kS1MNu{|fBEQ6;oon?|7Zg;c|t+X$wa#e{Q~ApIaIKU
z`j#PDENfMyR@*NHe(hHH=uE*|Vlkv7iAH9Z>WA`yNMO)xBm_YMLDR0#mnY`H$f{67
zzujhdGH(@mfXM8I)yx-b)}T~I7NA>pqphbQmv`OkW)~SalL
z2M&PSM<5f%BBO>y5)Sd&rRq=Pbe&D~)!#_9Pe$hJ%|%oMRZjdAgUrR+yVdy$`ZL9O
zyN)6=T44+%Vo;Rm6C)jj?x+`Suxbv_5nh&s)B67>GXFEIb^WmzLpsXBAU+Q49AnJ`
zh7`qOXku%jk2xp^GTj;kom@wEy
h%(uzxDYtyK{0qHH-nRRlTEhSU002ovPDHLkV1n0rD2f08
literal 0
HcmV?d00001
diff --git a/src/military/image/winner.png b/src/military/image/winner.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cadadabaaadaa11a053d54a5f7a30e2c99bc753
GIT binary patch
literal 8573
zcmV-@A%fnCP)IUr(5B-SV<_HJT~yPISa%O+9R5{+rrteTC9i*d6m
zDAuS^V=sh=GD8ojpdh`&%rNCE_dWZZd%uAJ27|`rKF>UY-*D%?=brOF=lswAjPOss
z6a)yiFtQ?zmO~;?=q^Y?2r~πxU(TY-XyhBVp=VJqZYU_nv9|1%%k9{3-ADLAOj
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
D>w>EE
literal 0
HcmV?d00001
diff --git a/src/military/index.scss b/src/military/index.scss
index b600dba0..35ede431 100644
--- a/src/military/index.scss
+++ b/src/military/index.scss
@@ -11,25 +11,29 @@
.color-deep-blue{
color:#1B8FFF;
}
+.text-center{
+ text-align: center;
+}
.centerbox {
width: 80vw;
- max-width: 1280px;
+ max-width: 1200px;
margin: 40px auto;
position: relative;
}
.center-content {
+ padding-top:5px;
background: #fff;
- border: 1px solid #dedede;
- box-shadow: #eee 0px 1px 1px 3px;
+ box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.05);
+ border-radius: 5px;
}
.centerScreen {
display: flex;
justify-content: space-between;
- height: 46px;
+ height: 60px;
background-color: #fff;
border-bottom: 1px solid #dedede;
-}
+}
.head-navigation {
position: absolute;
@@ -106,4 +110,23 @@
.ant-modal-footer{
text-align: center;
-}
\ No newline at end of file
+}
+
+
+@media screen and (max-width: 1200px){
+ .centerbox {
+ width: 100vw;
+ }
+ .newHeaders{
+ min-width: 325px;
+ }
+ .newContainers{
+ min-width: 325px;
+ .newMain{
+ min-width: 325px;
+ }
+ }
+ .newFooter{
+ min-width: 325px;
+ }
+}
diff --git a/src/military/task/myTask/index.jsx b/src/military/task/myTask/index.jsx
index 484bb59c..e6e99de4 100644
--- a/src/military/task/myTask/index.jsx
+++ b/src/military/task/myTask/index.jsx
@@ -1,8 +1,9 @@
import React, { useEffect, useState } from 'react';
-import { Tabs, Input, Button, } from 'antd';
+import { Tabs, Input, Button,Table,Pagination } from 'antd';
import StatusNav from '../../components/statusNav';
+import ChooseNav from '../../components/chooseNav';
import ItemListMyTask from '../../components/itemListMyTask';
-import { taskStatusAllArr, } from '../static';
+import { taskStatusAllArr, applyStatusArr } from '../static';
import { getTaskList, getTaskCategory } from '../api';
import './index.scss';
const Search = Input.Search;
@@ -11,6 +12,7 @@ const { TabPane } = Tabs;
const publishStatusArr = taskStatusAllArr.slice(3);
const unpublishStatusArr = taskStatusAllArr.slice(0, 3);
+const columns=[];
export default ({ location, history, current_user }) => {
let defaultValue = decodeURI(location.search.split("=")[1] || "");
@@ -25,6 +27,8 @@ export default ({ location, history, current_user }) => {
return defaultValue === 'false' ? '0,1,2' : '3,4,5,6,7,8';
});
+ const [requireAchieve, setRequireAchieve] = useState('1');
+
const [searchInput, setSearchInput] = useState('');
const [orderBy, setOrderBy] = useState('');
const [curPage, setCurPage] = useState(1);
@@ -81,6 +85,16 @@ export default ({ location, history, current_user }) => {
setCurPage(1);
}
+ function changeIdentity(key) {
+ setIdentity(key);
+ if (key === '1') {
+ setStatusString('3,4,5,6,7,8');
+ } else {
+ setStatusString('0,1,2');
+ }
+ setCurPage(1);
+ }
+
function changeStatusType(key) {
if (key === '1') {
setStatusString('3,4,5,6,7,8');
@@ -91,10 +105,21 @@ export default ({ location, history, current_user }) => {
setStatusType(key);
}
+ function changeRequireAchieve(key) {
+ if (key === '1') {
+ setStatusString('3,4,5,6,7,8');
+ } else {
+ setStatusString('0,1,2');
+ }
+ setCurPage(1);
+ setRequireAchieve(key);
+ }
+
return (
-
{ setIdentity(key) }}>
+
+
{
/>
+
- 请稍候
+
+ setSearchInput(value)}
+ />
+ }
+ >
+
+
+
+
+
+ { setCurPage(page) }}
+ loading={loading}
+ />
+
+
+
+
+
+ row.id}
+ dataSource={taskList}
+ columns={columns}
+ pagination={false}
+ />
+ {taskList.length > 10 &&
+ { setCurPage(page) }}
+ current={curPage}
+ total={total}
+ />}
+
+
+
diff --git a/src/military/task/static.js b/src/military/task/static.js
index 83893f4d..51074db8 100644
--- a/src/military/task/static.js
+++ b/src/military/task/static.js
@@ -52,7 +52,11 @@ export const sortArr = [{
desc: false,
},];
-
+export const applyStatusArr = [
+ { dicItemCode: '0', name: "待确认", dicItemName: '待确认' },
+ { dicItemCode: '1', name: "未采纳", dicItemName: '未采纳' },
+ { dicItemCode: '2', name: "评选胜出", dicItemName: '评选胜出' },
+];
export const formItemLayout = {
labelCol: {
diff --git a/src/military/task/taskDetail/index.jsx b/src/military/task/taskDetail/index.jsx
index 5ba31038..cd5e260f 100644
--- a/src/military/task/taskDetail/index.jsx
+++ b/src/military/task/taskDetail/index.jsx
@@ -1,69 +1,164 @@
-import React, { useEffect, useState, useCallback } from 'react';
+import React, { forwardRef, useEffect, useState, useCallback } from 'react';
+import { Form, Input, Button, Modal, Table, Pagination } from 'antd';
+import classNames from 'classnames';
import { Link } from "react-router-dom";
import { getImageUrl } from 'educoder';
-import { httpUrl } from '../../fetch';
+import Upload from '../../components/Upload';
+import StatusNav from '../../components/statusNav';
+import ItemListAchieve from '../../components/itemListAchieve';
import { getTaskDetail, getTaskCategory } from '../api';
-import { taskModeIdArr} from '../static';
-import './index.scss';
-import classNames from 'classnames';
+import { taskModeIdArr, applyStatusArr } from '../static';
+import { httpUrl } from '../../fetch';
-const taskModeNameArr=[];
-for(const item of taskModeIdArr){
- taskModeNameArr[item.dicItemCode]=item.dicItemName;
+import winpng from '../../image/win.png';
+
+import './index.scss';
+const { TextArea } = Input;
+
+const taskModeNameArr = [];
+for (const item of taskModeIdArr) {
+ taskModeNameArr[item.dicItemCode] = item.dicItemName;
}
-export default ({ match, current_user, history, showNotification }) => {
- console.log(current_user);
- const id = match.params.taskId;
- const [detailData, setDetailData] = useState({});
- const [taskCategoryValueArr, setTaskCategoryValueArr] = useState([]);
+const columns = [
+ {
+ title: '应征者姓名',
+ dataIndex: 'name',
+ },
+ {
+ title: '投稿时间',
+ dataIndex: 'age',
+ },
+ {
+ title: '状态',
+ dataIndex: 'status',
+ render:(text,record)=>{
+ return
+ }
+
+ },
+ {
+ title: '详情',
+ dataIndex: 'detail',
+ },
+];
+
+export default Form.create()(
+ forwardRef(({ match, current_user, form, history, showNotification }, ref) => {
+ console.log(current_user);
+ const id = match.params.taskId;
+ const { getFieldDecorator, validateFields, setFieldsValue } = form;
+
+ const [detailData, setDetailData] = useState({});
+ const [taskCategoryValueArr, setTaskCategoryValueArr] = useState([]);
+ const [fileList, setFileList] = useState(null);
+
+ const [applyModal, setApplyModal] = useState(false);
- // 获取任务领域数组
- useEffect(() => {
- getTaskCategory().then(data => {
- if (data) {
- const taskCategoryValueArr = [];
- for (const item of data) {
- taskCategoryValueArr[item.id] = item.name;
+ const [curPage, setCurPage] = useState(1);
+ const [total, setTotal] = useState(0);
+ const [orderBy, setOrderBy] = useState('');
+ const [dataList, setDataList] = useState([
+ {name:'测试方式',id:1},
+ {name:'测试方式',id:2},
+ {name:'测试方式',id:3},
+ {name:'测试方式',id:4},
+ ]);
+ 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);
}
- setTaskCategoryValueArr(taskCategoryValueArr);
- }
- });
- }, []);
+ });
+ }, []);
- useEffect(() => {
- id && getTaskDetail(id).then(data => {
- setDetailData(data || {});
- console.log(data);
- })
- }, [id]);
- const process = useCallback((title, days, active) => {
- return (
-
- {title}
- {days &&
- {days}天
+
+ 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);
- }
+ function downFile(item) {
+ let url = httpUrl + '/busiAttachments/download/' + item.id;
+ window.open(url);
+ }
- return (
-
+
+ const helper = useCallback(
+ (label, name, rules, widget) => (
+
+ {getFieldDecorator(name, { rules, validateFirst: true })(widget)}
+
+ ),
+ []
+ );
+
+
+ // 上传附件后得到的文件数组
+ function UploadFunc(fileList) {
+ setFileList(fileList);
+ let files = [];
+ for (const item of fileList) {
+ files.push(item.id || item.response.data.id);
+ }
+ setFieldsValue({
+ uploadFileNumbers: files.join()
+ });
+ }
+
+
+ // 提交成果
+ function saveItem(status) {
+ validateFields((error, values) => {
+ if (!error) {
+
+ }
+ })
+ }
+
+ function changeOptionId(option, type) {
+ // 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);
+ }
+
+
+
+ return (
创客空间 >
任务大厅 >
- 任务编号:{detailData.number}
+ 任务编号:{detailData.number}
@@ -123,9 +218,9 @@ export default ({ match, current_user, history, showNotification }) => {
{
detailData.tasksAttachments.map(item => {
return
})
@@ -136,7 +231,7 @@ export default ({ match, current_user, history, showNotification }) => {
知识产权说明:
1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;
- 2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
+ 2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
交稿声明:
@@ -146,8 +241,176 @@ export default ({ match, current_user, history, showNotification }) => {
-
-
+ {/* {detailData.status == '3' ? */}
+
+
+
- )
-}
+ {/* : */}
+
+
我要应征投稿:
+ {helper(
+ "",
+ "achievementRemark",
+ [{ required: true, message: "请输入" }],
+
+ )}
+
+
+
+ {getFieldDecorator('uploadFileNumbers', {
+ validateFirst: true
+ })()}
+
+
+
+
+ {/* } */}
+
+
+
+
+
+
+
+
+
row.id}
+ dataSource={dataList}
+ columns={columns}
+ pagination={false}
+ />
+ {dataList.length > 10 &&
+ { setCurPage(page) }}
+ current={curPage}
+ total={total}
+ />}
+
+ { setCurPage(page) }}
+ loading={loading}
+ />
+
+
+
+ { setApplyModal(false) }}
+ className="form-edit-modal"
+ width='60vw'
+ >
+
+
投稿协议内容示例,请在管理 — 创客 — 基础数据 — 应征投稿协议内容 修改.
+
在您通过本平台在线签署应征投稿合同前,请您认真细致地阅读以下《应征投稿协议》,特别是其中以粗体下划线明显标注的条款,并在您同意了下述协议条款再正式进入后续程序
+
本协议由甲方(任务发布方)和乙方(应征者)在线签订,请甲乙双方仔细阅读协议内容, 请务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款。 甲乙双方点击接受本协议,即意味着已阅读、理解并接受本协议所有条款,并对本协议条款的含义及相应的法律后果已全部知晓并充分认可。甲乙双方点击确认本协议后,本协议即产生法律约束力。
+
本协议内容包括协议正文及甲乙双方在线相互确认的合同。所签订的合同、合同附件为本协议不可分割的一部分,与本协议正文具有同等法律效力。若您继续使用本平台创客空间,则表明您已经完全知晓、认可并同意遵守本协议内容、所有汇新云已经发布的各类规则以及签订的合同。
+
在阅读本协议的过程中,如不同意本协议或其中任何条款约定,应拒绝接受本协议所约定的内容,甲乙双方都有权自主选择拒绝达成合作。
+
1.定义
除非本协议另有约定,在本协议中所用下列术语定义如下:
+
1.1 本平台:是指www.XXXXXX.com 为用户提供需求信息发布、交流,第三方以“企业”或“个人”入驻的形式应征需求的电子商务交易服务平台;
+
1.2 用户:指在本平台合法注册,接受并认可服务平台相关协议、规则、规范、制度等的自然人、法人或其他非法人组织。
+
1.3 甲方:指在本平台上发布创客需求的用户。
+
1.4 乙方:是指经本平台审核通过入驻本平台,根据需求方发布的需求,提供各种定制服务或IT产品,在平台开展业务经营的企业或个人。
+
1.5 服务需求:指甲方基于自身需求向乙方提出的具体服务要求。
+
1.6 项目款:指甲方和乙方的交易金额,即本协议约定交易金额或后续经协商调整后确定的交易总金额。
+
1.7 平台账户:指用户在本平台注册的帐号,用户只能通过该帐户登陆服务平台进行交易。
+
2.甲方权利义务
2.1 甲方应当根据服务需求主动向乙方提交本项目所需的相关资料,并保证该资料的真实性、合法性、准确性、完整性,如因甲方未按照前述标准提供资料导致乙方无法履行协议义务,由此产生的责任由甲方自行承担。
+
2.2 甲方在向乙方提交项目所涉及资料时有权一并对乙方的服务提出建议和思路,同时有权在验收时对乙方的服务成果提出修改意见,但甲方提出的服务建议或思路以及修改意见应当明确具体,如不明确,有权不听取建议或拒绝修改,同时甲方不得借机拖延进度及应支付的款项,甲方提出超出协议或合同约定范围的修改要求,乙方有权拒绝或者另行收取费用。
+
2.3 甲方未按照合同在约定的日期内支付项目款的,乙方有权拒绝或顺延提供服务。
+
2.4 甲方应充分了解且同意遵守服务平台公布的所有协议、规则、制度等文件,并按照服务平台的相关规定处理相关交易事项。
+
2.5 甲方应及时验收乙方交付的服务成果(包括阶段成果和最终成果),如乙方向甲方提交服务成果后在规定期限日内甲方未给出具体验收意见的,视为乙方提交的服务成果合格。如有下一阶段服务的,乙方有权继续推进;如下一阶段服务因甲方原因导致无法继续推进的,乙方不承担任何责任。
+
2.6 甲方有义务向乙方提供必要的配合义务,包括提供必要资料、及时验收、及时回复等。
+
2.7 甲方同意并知晓,乙方仅提供合法、合规、合理的服务,对甲方违背法律法规或行政规章的服务要求,乙方有权拒绝提供服务。
+
2.8 甲方应当保证委托的服务事项不违反任何法律法规或侵犯他人合法权利,否则乙方有权拒绝提供服务并有权立即解除本协议。
+
2.9 甲方应当保证合法使用乙方提交的服务成果,不得将服务成果用于任何违法违规或侵犯他人合法权益的活动,甲方应自行承担服务成果使用过程中发生的全部责任。
+
2.10 甲方同意,为便于双方交易,本协议作为交易的主要内容和双方之间权利义务的根本性约定,具体服务项目、期限、金额等甲方在平台与乙方签订电子合同时在合同上予以标注,甲方对在合同中提供的所有信息的真实性负责。
+
2.11 甲方在签订线下子合同时,应仔细确认所需要的服务内容、价格、数量、交付方式等信息。该信息将作为甲方的真实意思表示,甲方应对该等信息的法律后果承担责任。
+
2.12 甲方理解并同意:签订线下合同时系统生成的订单信息是计算机信息系统根据乙方填写的内容自动生成的数据,仅是乙方发出的合同要约;甲方收到乙方的合同信息内容并确认签字后,合同生效。
+
2.13 甲方同意并授权平台方保存其信息(包括但不限于注册信息)
+
3. 乙方权利义务
3.1 乙方应按照合同约定的时间和质量向甲方提供服务。
+
3.2 乙方应当积极听取甲方的修改意见,甲方提出合理需求且提出明确的修改意见的,乙方在提交服务成果后可提供修改服务,但超出合同约定内容的修改需求乙方有权拒绝。
+
3.3 乙方应当对甲方提供的相关资料承担保密义务,除为履行本协议义务及法律规定外,不得向第三方透露。
+
3.4 乙方有权要求甲方按照合同约定的日期支付相应款项,否则乙方有权拒绝、顺延提供服务和不发起项目验收;
+
3.5 甲方与乙方约定分阶段工作的,乙方完成阶段性工作并发起验收,甲方应在规定期限日内予以验收确认,验收合格后乙方有权要求甲方支付下一开发阶段的项目启动资金;如甲方在规定期限日内未予以验收的,则视为验收合格。
+
3.6 在双方签订的合同生效后,乙方有权要求甲方先支付阶段性工作的项目启动资金进行托管后,再进行工作。
+
3.7 因乙方自身原因导致约定分阶段工作未能如期完成并交付,则乙方需要与甲方提前协商沟通,并在汇新云平台上发起项目延期函,甲方进行确认后方可生效。若乙方未提前发起项目延期函并与甲方确认,否则乙方需按照约定的日期进行交付,由此产生的责任由乙方自行承担。
+
3.8 乙方应按照法律规定自行缴纳相应税费。
+
3.9 乙方可能会向实现甲方需求所必须的关联方或合作伙伴共享甲方的订单信息,以保障为甲方提供的服务顺利进行。比如乙方必须将甲方的订单信息与第三方服务商共享来实现甲方的服务需求,并使其完成后续的售后服务,甲方对此无异议。
+
3.10 乙方应将平台方公布的最新信息传递给甲方,维护三方合作关系。
+
3.11 乙方对服务中产生的因己方原因造成的甲方损失负有责任,应负责解决;若因此对平台造成损失的,乙方应赔偿平台方全部损失。
+
4.服务平台方权利义务
4.1 平台方对甲乙双方的注册申请有审核决定的权利;
+
4.2 平台方享有为维护系统而短暂停止服务的权利,暂停服务之前,平台方将在系统进行通知,甲乙双方应留意公告并做好相应备份工作。
+
4.3 平台方有权根据中国法律法规的调整、行政执法机关的命令和社会伦理道德的变化相应调整在线管理服务的审核标准,甲乙双方不得以类似“以前曾通过汇新云服务审核”的理由要求平台方继续审核通过;
+
4.4 乙方使用服务平台的账号密码所进行的一切操作视为乙方行为。乙方应妥善平台的账号密码,否则由此造成的一切后果由乙方承担;一旦发生安全问题应立即通知平台方以共同采取措施包括但不限于冻结账号等。
+
4.5 平台方有权根据自身需求改变平台服务规则,并在服务平台进行公告;
+
4.6 若乙方超过90天不使用平台账号的,平台方有权屏蔽或注销其账号。
+
5. 知识产权
5.1 本协议所产生成果的知识产权在甲方支付完全部项目款后,归甲方所有,乙方或乙方委托提供服务的第三方保留法律规定禁止转让部分的知识产权,同时保留服务成果用于案例展示、评选的权利。但甲方与乙方另有约定的除外。
+
5.2 乙方应当保证服务成果符合国家法律法规的规定,不存在任何侵犯第三方的所有权、知识产权、名誉权、肖像权等侵权行为,并承担因此产生的全部责任。
+
5.3 甲方的服务需求如需采购第三方知识产权产品的,乙方应当及时告知甲方经甲方书面同意且支付采购费用后,乙方予以采购并使用或由甲方自行采购并提供给乙方使用。
+
5.4 甲方在未付清所有服务费用之前,不得使用服务成果,不得主张服务成果的知识产权。如甲方在未付清服务费用之前自行或许可他人使用(包含但不限于直接使用、修改后使用)乙方提交的服务成果的,导致乙方或者其他第三方遭受损失的,甲方应承担由此产生的全部责任。
+
5.5 甲方应积极就服务成果申请相关知识产权(如有),如发生第三方侵权的,乙方可协助甲方维权,但不对维权结果承担任何责任。
+
+ - 责任限制
+
乙方依照法律规定履行基础保障义务,但对于下述原因导致的合同履行障碍、履行瑕疵、履行延后或履行内容变更等情形,乙方并不承担相应的违约责任:
+
6、因自然灾害、罢工、暴乱、战争、政府行为、司法行政命令等不可抗力因素;
+
6、因电力供应故障、通讯网络故障等公共服务因素或第三人因素;
+
6、在乙方已尽善意管理的情况下,因常规或紧急的设备与系统维护、设备与系统故障、网络信息与数据安全等因素。
+
+ - 违约责任
+
7.1 乙方未按照合同的约定按时提交服务成果的,应向甲方支付合同中规定的违约金。
+
7.2 甲方在服务期间无正当理由单方终止协议的,已支付费用无权要求返还。
+
7.3 乙方在服务期间无正当理由单方终止协议的,所收取的费用应当全部退回给甲方。
+
7.4 甲乙双方应遵守平台规则以及维护平台商业形象以及维护平台方正常运营,若因甲乙双方任何一方的原因给平台方造成损失的,平台方有权追究其责任,要求其支付违约金,并有权冻结其享有的平台账号;若平台方以法律手段维护其权益的,平台方所支付的全部费用,包括但不限于律师费、诉讼费等,全部由违约方承担。
+
+ - 争议解决
+
8.1 因本协议及与本协议有关的争议、解释等,均适用中华人民共和国法律。
+
8.2 本协议签订或履行过程中,如有争议,双方应当友好协商解决;协商不成,双方一致同意提交平台方所在地人民法院解决。
+
+ - 其他
+
9.1 本协议以电子文本形式生成,甲方与乙方完成协议订立手续后,即具有与手写签名同等的法律效力。
+
9.2 本协议中的任何约定如违反法律法规的规定而无效的,该无效条款不影响本协议其他条款的效力,甲方与乙方仍因履行其他条款所约定的权利义务。
+
9.3 本协议内容中以加粗方式显著标识的条款,请着重阅读。甲乙方点击“确认”按钮即视为完全接受本协议,在点击之前请再次确认已知悉并完全理解本协议的全部内容
+
+
+
+
+
+
+
+
+
+
+
+ )
+ })
+)
\ No newline at end of file
diff --git a/src/military/task/taskDetail/index.scss b/src/military/task/taskDetail/index.scss
index bbc354fa..e4f126ff 100644
--- a/src/military/task/taskDetail/index.scss
+++ b/src/military/task/taskDetail/index.scss
@@ -1,10 +1,11 @@
-.centerbox{
+.centerbox {
position: relative;
- .head-navigation{
- span{
+ margin-top: 40px;
+ .head-navigation {
+ span {
display: inline-flex;
align-items: center;
- &:hover{
+ &:hover {
color: #409eff;
}
}
@@ -12,35 +13,35 @@
}
.head-navigation {
position: absolute;
- top:-2.3em;
+ top: -2.3em;
}
.task_tag {
padding: 0px 12px;
- background: #F1F8FF;
+ background: #f1f8ff;
border-radius: 4px;
float: left;
- color: #459BE6;
+ color: #459be6;
height: 1.25rem;
- line-height: 1.25rem;
+ line-height: 1.25rem;
}
.tasks_status li {
float: left;
position: relative;
margin-right: 20px;
- background: #EBEBEB;
- width: 140px;
+ background: #ebebeb;
+ min-width: 8rem;
+ width: 12.4%;
height: 35px;
line-height: 35px;
- color: #05101A;
+ color: #05101a;
text-align: center;
margin-bottom: 32px;
}
-
.tasks_status li.active {
- background: #4CACFF;
+ background: #4cacff;
color: #fff;
}
@@ -48,7 +49,7 @@
width: 0;
height: 0;
border-width: 17px;
- content: '';
+ content: "";
position: absolute;
left: 0px;
border-style: solid;
@@ -61,28 +62,68 @@
width: 0;
height: 0;
border-width: 17px;
- content: '';
+ content: "";
position: absolute;
right: -34px;
border-style: solid;
top: 0px;
- border-color: transparent transparent #EBEBEB transparent;
+ border-color: transparent transparent #ebebeb transparent;
transform: rotate(90deg);
}
.tasks_status li.active:after {
- border-color: transparent transparent #4CACFF transparent;
+ border-color: transparent transparent #4cacff transparent;
transform: rotate(90deg);
}
-.file-list-box{
- padding:0 1.25rem;
+.file-list-box {
+ padding: 0 1.25rem;
}
-.content-text{
+.content-text {
padding: 1.25rem;
}
-.content-download{
+.content-download {
color: #409eff;
}
+
+.applyText {
+ margin-top: 0.5rem;
+ border-radius: 3px;
+ font-family: "微软雅黑", "宋体";
+ font-size: 14px;
+ line-height: 1.9;
+ border: 1px solid #eaeaea;
+ background: #ffffff;
+ color: #05101a;
+ resize: none;
+}
+
+.applyList {
+ table {
+ width: 100%;
+ border: 1px solid #eee;
+ border-bottom: none;
+ background: #fff;
+ color: #888;
+ cursor: default;
+ }
+ tbody tr {
+ height: 90px;
+ }
+ .ant-table-thead
+ > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
+ > td,
+ .ant-table-tbody
+ > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
+ > td,
+ .ant-table-thead
+ > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
+ > td,
+ .ant-table-tbody
+ > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
+ > td {
+ background: #fff;
+ }
+}
diff --git a/src/military/task/taskEdit/index.jsx b/src/military/task/taskEdit/index.jsx
index 2ae799de..e3c50f8c 100644
--- a/src/military/task/taskEdit/index.jsx
+++ b/src/military/task/taskEdit/index.jsx
@@ -88,7 +88,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
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 {
@@ -165,14 +165,14 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
), []);
const helperNoLabel = useCallback(
- (title, name, rules, widget, initialValue) => (
+ (title, name, rules, widget, displayTime) => (
{title}
- {getFieldDecorator(name, { rules, initialValue, validateFirst: true, })(widget)}
+ {getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
天
-
+ {publishMode == 1 &&
{displayTime}}
), []);
@@ -438,7 +438,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
{ changeDate(v, 'collectingDays') }}
className="date-input"
- />
+ />,
+ displayTime.collectingTime
)}
{/* 2021-06-16 07:10
*/}
{/* 成果提交时间不能为空
*/}
@@ -449,7 +450,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
+ />,
+ displayTime.choosingTime
)}
{helperNoLabel(
@@ -458,7 +460,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
+ />,
+ displayTime.makePublicTime
)}
{helperNoLabel(
@@ -467,7 +470,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
+ />,
+ displayTime.signingTime
)}
{helperNoLabel(
@@ -476,7 +480,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
+ />,
+ displayTime.payingTime
)}
diff --git a/src/military/task/taskList/index.jsx b/src/military/task/taskList/index.jsx
index d4d7ae1e..4764370a 100644
--- a/src/military/task/taskList/index.jsx
+++ b/src/military/task/taskList/index.jsx
@@ -101,38 +101,42 @@ export default ({ history, current_user }) => {
}
return (
-
+
From 4109e4b07e67a17eca694fd44e03b00a21a04837 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com>
Date: Mon, 21 Jun 2021 13:43:31 +0800
Subject: [PATCH 05/84] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=9C=80?=
=?UTF-8?q?=E6=B1=82=E9=83=A8=E5=88=86bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/military/index.scss | 1 +
src/military/task/taskDetail/index.jsx | 18 +++++++++---------
src/military/task/taskEdit/index.jsx | 8 ++++----
3 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/military/index.scss b/src/military/index.scss
index 35ede431..61c5abe0 100644
--- a/src/military/index.scss
+++ b/src/military/index.scss
@@ -25,6 +25,7 @@
background: #fff;
box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.05);
border-radius: 5px;
+ overflow: auto;
}
.centerScreen {
display: flex;
diff --git a/src/military/task/taskDetail/index.jsx b/src/military/task/taskDetail/index.jsx
index cd5e260f..56b54212 100644
--- a/src/military/task/taskDetail/index.jsx
+++ b/src/military/task/taskDetail/index.jsx
@@ -33,8 +33,8 @@ const columns = [
{
title: '状态',
dataIndex: 'status',
- render:(text,record)=>{
- return

+ render: (text, record) => {
+ return

}
},
@@ -61,10 +61,10 @@ export default Form.create()(
const [total, setTotal] = useState(0);
const [orderBy, setOrderBy] = useState('');
const [dataList, setDataList] = useState([
- {name:'测试方式',id:1},
- {name:'测试方式',id:2},
- {name:'测试方式',id:3},
- {name:'测试方式',id:4},
+ { name: '测试方式', id: 1 },
+ { name: '测试方式', id: 2 },
+ { name: '测试方式', id: 3 },
+ { name: '测试方式', id: 4 },
]);
const [loading, setLoading] = useState(false);
@@ -98,7 +98,7 @@ export default Form.create()(
{title}
{days &&
{days}天
-
}
+ }
)
}, []);
@@ -232,13 +232,13 @@ export default Form.create()(
1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;
2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
-
+
交稿声明:
应征者提交的稿件必须是设计作品,广告等无效交稿一律不采用!
-
+
{/* {detailData.status == '3' ? */}
diff --git a/src/military/task/taskEdit/index.jsx b/src/military/task/taskEdit/index.jsx
index e3c50f8c..e3468e98 100644
--- a/src/military/task/taskEdit/index.jsx
+++ b/src/military/task/taskEdit/index.jsx
@@ -185,7 +185,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
// 新增或者修改后的处理函数
const publishDeal = useCallback((status, publishMode, res) => {
- if (res.data) {
+ if (res && res.data) {
showNotification("需求保存成功!");
if (!status) {
history.push("/task/myTask?published=false")
@@ -227,12 +227,12 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
// 编辑
params.id = id;
updateTask(params).then(res => {
- publishDeal();
+ publishDeal(res);
});
} else {
// 新增
addTask(params).then(res => {
- publishDeal();
+ publishDeal(res);
});
}
}
@@ -256,7 +256,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
创客空间 >
任务大厅 >
- 发布需求
+ 发布需求
任务需求提交
From 6ec6ab2308732ee4106698e4ed27be8f1b869897 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com>
Date: Wed, 23 Jun 2021 08:54:04 +0800
Subject: [PATCH 06/84] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9C=80=E6=B1=82?=
=?UTF-8?q?=E7=9A=84=E9=83=A8=E5=88=86bug=E5=8F=8A=E5=AF=B9=E6=8E=A5?=
=?UTF-8?q?=E6=88=90=E6=9E=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/common/DateUtil.js | 131 +++++---
src/common/educoder.js | 2 +-
src/military/components/chooseNav/index.scss | 2 +
.../components/itemListAchieve/index.jsx | 214 +++++++++---
.../components/itemListMyTask/index.jsx | 4 +-
.../components/itemListTask/index.jsx | 4 +-
src/military/components/statusNav/index.scss | 1 +
src/military/fetch.js | 14 +-
src/military/index.scss | 1 +
src/military/task/api.js | 91 ++++-
src/military/task/myTask/index.jsx | 10 +-
src/military/task/static.js | 15 +-
src/military/task/taskDetail/index.jsx | 313 +++++++++---------
src/military/task/taskEdit/index.jsx | 83 +++--
src/military/task/taskEdit/index.scss | 7 +
src/military/task/taskList/index.jsx | 5 +-
16 files changed, 587 insertions(+), 310 deletions(-)
diff --git a/src/common/DateUtil.js b/src/common/DateUtil.js
index 859182e1..0912ac49 100644
--- a/src/common/DateUtil.js
+++ b/src/common/DateUtil.js
@@ -1,4 +1,4 @@
-import moment from "moment";
+import moment from "moment";
// 处理整点 半点
// 取传入时间往后的第一个半点
@@ -12,7 +12,7 @@ export function handleDateString(dateString) {
if (miniute < 30 || miniute == 60) {
return [ar[0], '30'].join(':')
}
- if (miniute < 60) {
+ if (miniute < 60) {
// 加一个小时
const tempStr = [ar[0], '00'].join(':');
const format = "YYYY-MM-DD HH:mm";
@@ -20,7 +20,7 @@ export function handleDateString(dateString) {
_moment.add(1, 'hours')
return _moment.format(format)
}
-
+
return dateString
}
@@ -38,62 +38,91 @@ export function getNextHalfHourOfMoment(moment) {
return moment
}
- export function formatSeconds(value) {
+export function formatSeconds(value) {
- var theTime = parseInt(value);// 秒
- var middle= 0;// 分
- var hour= 0;// 小时
-
- if(theTime > 60) {
- middle= parseInt(theTime/60);
- theTime = parseInt(theTime%60);
- if(middle> 60) {
- hour= parseInt(middle/60);
- middle= parseInt(middle%60);
- }
- }
- var result = ""+parseInt(theTime)+"秒";
- if(middle > 0) {
- if(hour>0){
- result = ""+parseInt(middle)+"分";
- }else{
- result = ""+parseInt(middle)+"分"+result;
- }
-
- }
- if(hour> 0) {
- result = ""+parseInt(hour)+"小时"+result;
- }
- return result;
- }
-
+ var theTime = parseInt(value);// 秒
+ var middle = 0;// 分
+ var hour = 0;// 小时
-export function formatDuring(mss){
+ if (theTime > 60) {
+ middle = parseInt(theTime / 60);
+ theTime = parseInt(theTime % 60);
+ if (middle > 60) {
+ hour = parseInt(middle / 60);
+ middle = parseInt(middle % 60);
+ }
+ }
+ var result = "" + parseInt(theTime) + "秒";
+ if (middle > 0) {
+ if (hour > 0) {
+ result = "" + parseInt(middle) + "分";
+ } else {
+ result = "" + parseInt(middle) + "分" + result;
+ }
+
+ }
+ if (hour > 0) {
+ result = "" + parseInt(hour) + "小时" + result;
+ }
+ return result;
+}
+
+
+export function formatDuring(mss) {
var days = parseInt(mss / (1000 * 60 * 60 * 24));
var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
- // console.log("formatDuringformatDuring");
- // console.log(days);
- // console.log(hours);
- // console.log(minutes);
- // console.log(Math.abs(days));
- // console.log(Math.abs(hours));
- // console.log(Math.abs(minutes));
+ // console.log("formatDuringformatDuring");
+ // console.log(days);
+ // console.log(hours);
+ // console.log(minutes);
+ // console.log(Math.abs(days));
+ // console.log(Math.abs(hours));
+ // console.log(Math.abs(minutes));
- try {
- days = Math.abs(days);
- } catch (e) {
+ try {
+ days = Math.abs(days);
+ } catch (e) {
- }
- try {
- hours = Math.abs(hours);
- } catch (e) {
+ }
+ try {
+ hours = Math.abs(hours);
+ } catch (e) {
- }
- try {
- minutes = Math.abs(minutes);
- } catch (e) {
+ }
+ try {
+ minutes = Math.abs(minutes);
+ } catch (e) {
- }
+ }
return days + "天" + hours + "小时" + minutes + "分";
}
+
+/*
+ 返回多久以前
+ backDate:以前的某个日期
+*/
+export function timeAgo(backDate) {
+ try {
+ moment(backDate);
+ } catch (e) {
+ return;
+ }
+ let time = new Date() - moment(backDate);
+ var days = Math.round(time / (1000 * 60 * 60 * 24));
+ var hours = Math.round((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ var minutes = Math.round((time % (1000 * 60 * 60)) / (1000 * 60));
+ var seconds = Math.round((time % (1000 * 60 * 60)) / 1000);
+ if (days) {
+ return "约" + days + "天前";
+ }
+ if (hours) {
+ return "约" + hours + "小时前";
+ }
+ if (minutes) {
+ return "约" + minutes + "分前";
+ }
+ if (seconds) {
+ return "约" + seconds + "秒前";
+ }
+}
\ No newline at end of file
diff --git a/src/common/educoder.js b/src/common/educoder.js
index 1fc86893..c6eaf176 100644
--- a/src/common/educoder.js
+++ b/src/common/educoder.js
@@ -27,7 +27,7 @@ export {
markdownToHTML, uploadNameSizeSeperator, appendFileSizeToUploadFile, appendFileSizeToUploadFileAll, isImageExtension,
downloadFile, sortDirections, validateLength, mdJSONParse, exportMdtoHtml
} from './TextUtil'
-export { handleDateString, getNextHalfHourOfMoment, formatDuring, formatSeconds } from './DateUtil'
+export { handleDateString, getNextHalfHourOfMoment, formatDuring, formatSeconds ,timeAgo} from './DateUtil'
export { configShareForIndex, configShareForPaths, configShareForShixuns, configShareForCourses, configShareForCustom } from './util/ShareUtil'
diff --git a/src/military/components/chooseNav/index.scss b/src/military/components/chooseNav/index.scss
index bd68f5b3..2aa4d066 100644
--- a/src/military/components/chooseNav/index.scss
+++ b/src/military/components/chooseNav/index.scss
@@ -16,6 +16,7 @@
text-align: center;
color: #333;
font-weight: 500;
+ flex:none;
}
.choose-box-big{
@@ -27,6 +28,7 @@
.choose-list {
display: flex;
justify-content: start;
+ flex-wrap: wrap;
}
.choose-item {
color:#666;
diff --git a/src/military/components/itemListAchieve/index.jsx b/src/military/components/itemListAchieve/index.jsx
index 0f7e2bf0..3f602395 100644
--- a/src/military/components/itemListAchieve/index.jsx
+++ b/src/military/components/itemListAchieve/index.jsx
@@ -1,100 +1,212 @@
import React, { useEffect, useState } from 'react';
-import { Icon, Pagination } from 'antd';
-import { getImageUrl } from 'educoder';
+import { Icon, Pagination, Modal, Input ,Button} from 'antd';
+import { getImageUrl, timeAgo } from 'educoder';
+import ReactWEditor from 'wangeditor-for-react';
+import { reportAchieve, thumbUpAchieve, commentAdd } from '../../task/api';
+import { httpUrl } from '../../fetch';
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',];
+const { TextArea } = Input;
+
+// 如果是开发,那么文件系统默认使用117.50.100.12
+let fileHttpUrl = httpUrl;
+if (window.location.href.indexOf('localhost') > -1) {
+ fileHttpUrl = 'http://117.50.100.12:8001';
+}
+
+// const classArr = ['', 'list-done', 'list-error', 'list-red', 'list-yellow', '', '', 'list-pay', 'list-gray',];
export default (props) => {
- const { list, curPage, total, changePage, loading } = props;
+ const { list, curPage, total, changePage, loading, applyStatusAllNameArr, relaodList, showNotification } = props;
const [page, setPage] = useState(1);
const [pageSize, setPageSize] = useState(() => {
return props.pageSize || 10;
});
+ const [checkedItem, setCheckedItem] = useState({});
+ const [reportVisible, setReportVisible] = useState(false);
+ const [reportValue, setReportValue] = useState('');
+ const [commentHtml, setCommentHtml] = useState('');
useEffect(() => {
changePage(page);
}, [page]);
+ function downFile(item) {
+ let url = fileHttpUrl + '/busiAttachments/download/' + item.id;
+ window.open(url);
+ }
+
+ function report() {
+ if (!reportValue) {
+ return;
+ }
+ reportAchieve({
+ paperId: checkedItem.id,
+ content: reportValue
+ }).then(res => {
+ if (res.message === 'success') {
+ showNotification('举报成功');
+ setReportVisible(false);
+ setReportValue('');
+ }
+ });
+ }
+
+ function thumbUp(id) {
+ thumbUpAchieve(id).then(res => {
+ relaodList();
+ });
+ }
+
+ function commentPush(item) {
+ commentAdd({
+ content:commentHtml,
+ paperId:''
+ }).then(res => {
+
+ });
+ }
+
+ function commentEdit(id){
+
+ }
+
return (
- loading ?
:
-
- {
- list.map(item => {
- return (
-
+
+ {loading ? :
+
+ {
+ list.map(item => {
+ return (
-
})
+
-
- 莫胜吕
+ {item.user.nickName || item.user.login}
- 2 天前
- 待审核
+ {timeAgo(item.createdAt)}
+ {!item.verifyStatus && "待审核"}
-
- 待确认
-
+ {applyStatusAllNameArr[item.status]}
+
- {/*
-
-
-
- */}
-
-
- )
- })
- }
- {list.length > 0 ?
-
- {total > pageSize &&
{ setPage(page) }}
- current={curPage}
- total={total}
- showTotal={total => `共 ${total} 条`}
- />}
- :
-
}
-
+ )
+ })
+ }
+
+ {list.length > 0 ?
+
+ {total > pageSize &&
{ setPage(page) }}
+ current={curPage}
+ total={total}
+ showTotal={total => `共 ${total} 条`}
+ />}
+ :
+
}
+
+ }
+
+
+
{ setReportVisible(false) }}
+ className="form-edit-modal"
+ >
+
+
你的申诉信息将发送给平台管理员
+
请如实填写有效的申诉原由,我们将尽快完成审核
+
+
+
+
)
}
diff --git a/src/military/components/itemListMyTask/index.jsx b/src/military/components/itemListMyTask/index.jsx
index 724249b1..93084275 100644
--- a/src/military/components/itemListMyTask/index.jsx
+++ b/src/military/components/itemListMyTask/index.jsx
@@ -58,7 +58,7 @@ export default (props) => {
{publishModeArr[item.publishMode]}
-
{item.papersCount}
+
{item.papersCount||0}
¥{item.bounty}
@@ -68,7 +68,7 @@ export default (props) => {
{
- item.status == 0 ?
+ item.status == 0 ||item.status == 2 ?
编辑草稿 :
查看详情
}
diff --git a/src/military/components/itemListTask/index.jsx b/src/military/components/itemListTask/index.jsx
index 46de4055..94901251 100644
--- a/src/military/components/itemListTask/index.jsx
+++ b/src/military/components/itemListTask/index.jsx
@@ -32,8 +32,8 @@ export default (props) => {
{(!item.status == '8') && item.delayTime && 延期中}
- {item.visits}
- {item.papersCount}人参与
+ {item.visits || 0}
+ {item.papersCount || 0}人参与
{(!item.status == '8') && item.delayTime && {item.delayTime}}
diff --git a/src/military/components/statusNav/index.scss b/src/military/components/statusNav/index.scss
index ac536c2a..ea87ad32 100644
--- a/src/military/components/statusNav/index.scss
+++ b/src/military/components/statusNav/index.scss
@@ -2,6 +2,7 @@
padding: 1rem 0;
display: flex;
justify-content: start;
+ flex-wrap: wrap;
}
.status-item {
font-size: 14px;
diff --git a/src/military/fetch.js b/src/military/fetch.js
index 9e5e29cb..c56327fc 100644
--- a/src/military/fetch.js
+++ b/src/military/fetch.js
@@ -5,7 +5,8 @@ import cookie from 'react-cookies';
// export const httpUrl='http://117.50.100.12:8001';
// export const httpUrl='http://192.168.31.72:8081';
// export const httpUrl = 'http://106.75.31.211:58088';
-export const httpUrl = 'http://192.168.31.72:8089';
+// export const httpUrl = 'http://192.168.31.72:8089';
+export const httpUrl = 'http://192.168.31.104:8081';
const TokenKey = 'autologin_forge_military';
@@ -15,7 +16,7 @@ axios.defaults.withCredentials = true;
// 创建axios实例
const service = axios.create({
baseURL: httpUrl,
- timeout: 5000 // 请求超时时间
+ timeout: 10000 // 请求超时时间
});
// request拦截器
@@ -23,6 +24,15 @@ service.interceptors.request.use(config => {
if (cookie.load(TokenKey)) {
config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改
}
+ if (window.location.port === "3007") {
+ // 模拟token为登录用户
+ const taskToken=sessionStorage.taskToken||'fde0d895b20856ccea4ff2df032c4450d6b692fd';
+ if (config.url.indexOf('?') === -1) {
+ config.url = `${config.url}?token=${taskToken}`;
+ } else {
+ config.url = `${config.url}&token=${taskToken}`;
+ }
+ }
return config;
}, error => {
// Do something with request error
diff --git a/src/military/index.scss b/src/military/index.scss
index 61c5abe0..8c4db3a6 100644
--- a/src/military/index.scss
+++ b/src/military/index.scss
@@ -111,6 +111,7 @@
.ant-modal-footer{
text-align: center;
+ border: 0;
}
diff --git a/src/military/task/api.js b/src/military/task/api.js
index c52cf93b..8fcb252e 100644
--- a/src/military/task/api.js
+++ b/src/military/task/api.js
@@ -76,7 +76,7 @@ export async function getTaskDetail(id) {
}
}
-//新增公告
+//新增任务
export function addTask(data) {
return fetch({
url: '/api/tasks/add',
@@ -93,11 +93,98 @@ export function deleteTask(id) {
});
}
-//更新
+//更新任务
export function updateTask(data) {
return fetch({
url: '/api/tasks/',
method: 'put',
data: data
});
+}
+
+//新增成果
+export function addAchieve(data) {
+ return fetch({
+ url: '/api/paper/',
+ method: 'post',
+ data: data
+ });
+}
+
+// 任务成果
+export async function getTaskAchieve(params){
+ let res = await fetch({
+ url: '/api/paper/',
+ method: 'get',
+ params,
+ });
+ if (res.data) {
+ return res.data;
+ } else {
+ notification.open({
+ message: "提示",
+ description: res.message || '请求错误',
+ });
+ }
+}
+
+//更新成果
+export function updateAchieve(data) {
+ return fetch({
+ url: '/api/paper/',
+ method: 'put',
+ data: data
+ });
+}
+
+//举报成果
+export function reportAchieve(data) {
+ return fetch({
+ url: `/api/paper/${data.paperId}/paperReport`,
+ method: 'post',
+ data: data
+ });
+}
+
+//点赞成果
+export function thumbUpAchieve(id) {
+ return fetch({
+ url: `/api/paper/${id}/thumbUp`,
+ method: 'post',
+ data: {paperId:id}
+ });
+}
+
+// 检查用户是否同意协议
+export function checkAgreement(taskId) {
+ return fetch({
+ url: `/api/paper/${taskId}/agreement`,
+ method: 'get'
+ });
+}
+
+// 获取协议
+export function getAgreement() {
+ return fetch({
+ url: '/api/paper/agreementSettings/1',
+ method: 'get'
+ });
+}
+
+// 同意协议
+export function agreement(taskId) {
+ return fetch({
+ url: `/api/paper/${taskId}/agreement`,
+ method: 'post',
+ data: {taskId}
+ });
+}
+
+// 新增评论
+export function commentAdd(data) {
+ return fetch({
+ url: `/api/paper/${data.paperId}/comment`,
+ method: 'post',
+ data,
+ });
}
\ No newline at end of file
diff --git a/src/military/task/myTask/index.jsx b/src/military/task/myTask/index.jsx
index e6e99de4..b0ff5a25 100644
--- a/src/military/task/myTask/index.jsx
+++ b/src/military/task/myTask/index.jsx
@@ -30,7 +30,7 @@ export default ({ location, history, current_user }) => {
const [requireAchieve, setRequireAchieve] = useState('1');
const [searchInput, setSearchInput] = useState('');
- const [orderBy, setOrderBy] = useState('');
+ const [orderBy, setOrderBy] = useState('createdAtDesc');
const [curPage, setCurPage] = useState(1);
const [total, setTotal] = useState(0);
const [taskList, setTaskList] = useState([]);
@@ -132,7 +132,7 @@ export default ({ location, history, current_user }) => {
/>
}
>
-
+
{
/>
-
+
{
/>
}
>
-
+
{
/>
-
+
-1) {
+ fileHttpUrl = 'http://117.50.100.12:8001';
+}
const taskModeNameArr = [];
for (const item of taskModeIdArr) {
taskModeNameArr[item.dicItemCode] = item.dicItemName;
}
+const applyStatusAllNameArr = [];
+for (const item of applyStatusAllArr) {
+ applyStatusAllNameArr[item.dicItemCode] = item.dicItemName;
+}
+
const columns = [
{
@@ -28,15 +36,14 @@ const columns = [
},
{
title: '投稿时间',
- dataIndex: 'age',
+ dataIndex: 'createdAt',
},
{
title: '状态',
dataIndex: 'status',
render: (text, record) => {
- return
+ return text == 2 ?
: applyStatusAllNameArr[text]
}
-
},
{
title: '详情',
@@ -46,7 +53,7 @@ const columns = [
export default Form.create()(
forwardRef(({ match, current_user, form, history, showNotification }, ref) => {
- console.log(current_user);
+ // console.log(current_user);
const id = match.params.taskId;
const { getFieldDecorator, validateFields, setFieldsValue } = form;
@@ -55,21 +62,21 @@ export default Form.create()(
const [fileList, setFileList] = useState(null);
const [applyModal, setApplyModal] = useState(false);
+ const [applyContent, setApplyContent] = useState({ title: '应征投稿协议内容', content: agreementContent });
+ const [agreementCheckBox, setAgreementCheckBox] = useState(false);
+ const [signAgreement,setSignAgreement] = useState(false);
-
+ const [status, setStatus] = useState('');
const [curPage, setCurPage] = useState(1);
const [total, setTotal] = useState(0);
const [orderBy, setOrderBy] = useState('');
- const [dataList, setDataList] = useState([
- { name: '测试方式', id: 1 },
- { name: '测试方式', id: 2 },
- { name: '测试方式', id: 3 },
- { name: '测试方式', id: 4 },
- ]);
+ const [dataList, setDataList] = useState([]);
const [loading, setLoading] = useState(false);
+ const [reload, setReload] = useState(0);
+ const [relaodChildList, setRelaodChildList] = useState(0);
- // 获取任务领域数组
+ // 获取任务领域配置数据
useEffect(() => {
getTaskCategory().then(data => {
if (data) {
@@ -82,33 +89,75 @@ export default Form.create()(
});
}, []);
-
-
+ // 获取本任务详情
useEffect(() => {
id && getTaskDetail(id).then(data => {
setDetailData(data || {});
console.log(data);
})
- }, [id]);
+ }, [id, reload]);
+
+ // 检查用户是否同意协议
+ useEffect(() => {
+ id && checkAgreement(id).then(res => {
+ if(res&&res.data&&res.data.status==1){
+ setSignAgreement(true);
+ }
+ })
+ }, []);
+
+ // 获取协议内容
+ useEffect(() => {
+ applyModal && getAgreement().then(res => {
+ if (res && res.data) {
+ setApplyContent({
+ title: res.data.title,
+ content: res.data.content,
+ });
+ }
+ });
+ }, [applyModal]);
+
+ // 获取成果列表
+ useEffect(() => {
+ let params = {
+ taskId: id,
+ orderBy,
+ pageSize: 10,
+ curPage,
+ status,
+ }
+ id && getTaskAchieve(params).then(data => {
+ if (data && Array.isArray(data.rows)) {
+ for (const item of data.rows) {
+ item.detail = item.paperDetail.content;
+ }
+ }
+ setDataList(data.rows || []);
+ console.log(data);
+ });
+ console.log(relaodChildList);
+ }, [id, status, curPage, reload, relaodChildList]);
+
// 流程步骤显示
const process = useCallback((title, days, active) => {
return (
{title}
- {days &&
+ {typeof days === 'string' && days.includes('延期') &&
{days}
}
+ {(typeof days === 'number') &&
{days}天
}
)
- }, []);
+ }, [detailData]);
function downFile(item) {
- let url = httpUrl + '/busiAttachments/download/' + item.id;
+ let url = fileHttpUrl + '/busiAttachments/download/' + item.id;
window.open(url);
}
-
const helper = useCallback(
(label, name, rules, widget) => (
@@ -118,7 +167,6 @@ export default Form.create()(
[]
);
-
// 上传附件后得到的文件数组
function UploadFunc(fileList) {
setFileList(fileList);
@@ -127,29 +175,50 @@ export default Form.create()(
files.push(item.id || item.response.data.id);
}
setFieldsValue({
- uploadFileNumbers: files.join()
+ files: files.join()
});
}
-
// 提交成果
- function saveItem(status) {
+ function saveItem() {
validateFields((error, values) => {
if (!error) {
-
+ let params = {
+ ...values,
+ taskId: id
+ }
+ addAchieve(params).then((res) => {
+ if (res.message === 'success') {
+ showNotification('成果提交成功');
+ setReload(reload + 1);
+ setCurPage(1);
+ }
+ });
}
})
}
- function changeOptionId(option, type) {
- // 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 changeOptionId(option) {
+ setStatus(option.dicItemCode.toString() || '');
+ setCurPage(1);
}
+ // 签订协议
+ function agreementSign() {
+ agreement(id).then(res => {
+ if (res.message === 'success') {
+ showNotification('已签订协议');
+ setApplyModal(false);
+ setSignAgreement(true);
+ }
+ });
+ }
+
+ function relaodList() {
+ setRelaodChildList(relaodChildList + 1);
+ }
+
+
return (
@@ -164,6 +233,7 @@ export default Form.create()(
+ {/*
})
*/}
{current_user.username}
@@ -177,7 +247,7 @@ export default Form.create()(
悬赏模式:{taskModeNameArr[detailData.taskModeId]}
任务编号:{detailData.number}
发布时间:{detailData.publishedAt}
-
截止时间:{detailData.expiredAt}
+ {/*
截止时间:{detailData.expiredAt} */}
- ¥{detailData.bounty}
@@ -194,31 +264,30 @@ export default Form.create()(
- 发布任务
- {process('成果提交', detailData.collectingDays, detailData.status > 2)}
+ {process('成果提交', detailData.status === 3 && detailData.delayTime ? detailData.delayTime : detailData.collectingDays, detailData.status > 2)}
- {process('成果评选', detailData.choosingDays, detailData.status > 3)}
+ {process('成果评选', detailData.status === 4 && detailData.delayTime ? detailData.delayTime : detailData.choosingDays, detailData.status > 3)}
- {process('结果公示', detailData.makePublicDays, detailData.status > 4)}
+ {process('结果公示', detailData.status === 5 && detailData.delayTime ? detailData.delayTime : detailData.makePublicDays, detailData.status > 4)}
- {process('任务协议签订', detailData.signingDays, detailData.status > 5)}
+ {process('任务协议签订', detailData.status === 6 && detailData.delayTime ? detailData.delayTime : detailData.signingDays, detailData.status > 5)}
- {process('支付', detailData.payingDays, detailData.status > 6)}
+ {process('支付', detailData.status === 7 && detailData.delayTime ? detailData.delayTime : detailData.payingDays, detailData.status > 6)}
- {process('任务完成', '', detailData.status > 7)}
+ {process('任务完成', undefined, detailData.status > 7)}
-
需求详情:
+
任务详情:
{/* 富文本内容插入 */}
{detailData.tasksAttachments &&
- 需求文件:
+ 任务文件:
{
detailData.tasksAttachments.map(item => {
return
-
{ downFile(item) }}>
{item.fileName}
({item.fileSizeString})
@@ -233,9 +302,7 @@ export default Form.create()(
1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;
2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
-
交稿声明:
-
应征者提交的稿件必须是设计作品,广告等无效交稿一律不采用!
@@ -251,7 +318,7 @@ export default Form.create()(
我要应征投稿:
{helper(
"",
- "achievementRemark",
+ "content",
[{ required: true, message: "请输入" }],
- {getFieldDecorator('uploadFileNumbers', {
+ {getFieldDecorator('files', {
validateFirst: true
})(
)}
-
+
{/* } */}
-
-
交稿(0)
+
@@ -297,118 +362,52 @@ export default Form.create()(
changeOptionId={changeOptionId}
/>
-
row.id}
- dataSource={dataList}
- columns={columns}
- pagination={false}
- />
- {dataList.length > 10 &&
- { setCurPage(page) }}
- current={curPage}
- total={total}
- />}
- { setCurPage(page) }}
- loading={loading}
- />
+ {
+ detailData.status > 4 ?
+
+ row.id}
+ dataSource={dataList}
+ columns={columns}
+ pagination={false}
+ />
+ {dataList.length > 10 &&
+ { setCurPage(page) }}
+ current={curPage}
+ total={total}
+ />}
+
+ :
+ { setCurPage(page) }}
+ loading={loading}
+ applyStatusAllNameArr={applyStatusAllNameArr}
+ relaodList={relaodList}
+ showNotification={showNotification}
+ />}
-
{ setApplyModal(false) }}
className="form-edit-modal"
width='60vw'
>
-
-
投稿协议内容示例,请在管理 — 创客 — 基础数据 — 应征投稿协议内容 修改.
-
在您通过本平台在线签署应征投稿合同前,请您认真细致地阅读以下《应征投稿协议》,特别是其中以粗体下划线明显标注的条款,并在您同意了下述协议条款再正式进入后续程序
-
本协议由甲方(任务发布方)和乙方(应征者)在线签订,请甲乙双方仔细阅读协议内容, 请务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款。 甲乙双方点击接受本协议,即意味着已阅读、理解并接受本协议所有条款,并对本协议条款的含义及相应的法律后果已全部知晓并充分认可。甲乙双方点击确认本协议后,本协议即产生法律约束力。
-
本协议内容包括协议正文及甲乙双方在线相互确认的合同。所签订的合同、合同附件为本协议不可分割的一部分,与本协议正文具有同等法律效力。若您继续使用本平台创客空间,则表明您已经完全知晓、认可并同意遵守本协议内容、所有汇新云已经发布的各类规则以及签订的合同。
-
在阅读本协议的过程中,如不同意本协议或其中任何条款约定,应拒绝接受本协议所约定的内容,甲乙双方都有权自主选择拒绝达成合作。
-
1.定义
除非本协议另有约定,在本协议中所用下列术语定义如下:
-
1.1 本平台:是指www.XXXXXX.com 为用户提供需求信息发布、交流,第三方以“企业”或“个人”入驻的形式应征需求的电子商务交易服务平台;
-
1.2 用户:指在本平台合法注册,接受并认可服务平台相关协议、规则、规范、制度等的自然人、法人或其他非法人组织。
-
1.3 甲方:指在本平台上发布创客需求的用户。
-
1.4 乙方:是指经本平台审核通过入驻本平台,根据需求方发布的需求,提供各种定制服务或IT产品,在平台开展业务经营的企业或个人。
-
1.5 服务需求:指甲方基于自身需求向乙方提出的具体服务要求。
-
1.6 项目款:指甲方和乙方的交易金额,即本协议约定交易金额或后续经协商调整后确定的交易总金额。
-
1.7 平台账户:指用户在本平台注册的帐号,用户只能通过该帐户登陆服务平台进行交易。
-
2.甲方权利义务
2.1 甲方应当根据服务需求主动向乙方提交本项目所需的相关资料,并保证该资料的真实性、合法性、准确性、完整性,如因甲方未按照前述标准提供资料导致乙方无法履行协议义务,由此产生的责任由甲方自行承担。
-
2.2 甲方在向乙方提交项目所涉及资料时有权一并对乙方的服务提出建议和思路,同时有权在验收时对乙方的服务成果提出修改意见,但甲方提出的服务建议或思路以及修改意见应当明确具体,如不明确,有权不听取建议或拒绝修改,同时甲方不得借机拖延进度及应支付的款项,甲方提出超出协议或合同约定范围的修改要求,乙方有权拒绝或者另行收取费用。
-
2.3 甲方未按照合同在约定的日期内支付项目款的,乙方有权拒绝或顺延提供服务。
-
2.4 甲方应充分了解且同意遵守服务平台公布的所有协议、规则、制度等文件,并按照服务平台的相关规定处理相关交易事项。
-
2.5 甲方应及时验收乙方交付的服务成果(包括阶段成果和最终成果),如乙方向甲方提交服务成果后在规定期限日内甲方未给出具体验收意见的,视为乙方提交的服务成果合格。如有下一阶段服务的,乙方有权继续推进;如下一阶段服务因甲方原因导致无法继续推进的,乙方不承担任何责任。
-
2.6 甲方有义务向乙方提供必要的配合义务,包括提供必要资料、及时验收、及时回复等。
-
2.7 甲方同意并知晓,乙方仅提供合法、合规、合理的服务,对甲方违背法律法规或行政规章的服务要求,乙方有权拒绝提供服务。
-
2.8 甲方应当保证委托的服务事项不违反任何法律法规或侵犯他人合法权利,否则乙方有权拒绝提供服务并有权立即解除本协议。
-
2.9 甲方应当保证合法使用乙方提交的服务成果,不得将服务成果用于任何违法违规或侵犯他人合法权益的活动,甲方应自行承担服务成果使用过程中发生的全部责任。
-
2.10 甲方同意,为便于双方交易,本协议作为交易的主要内容和双方之间权利义务的根本性约定,具体服务项目、期限、金额等甲方在平台与乙方签订电子合同时在合同上予以标注,甲方对在合同中提供的所有信息的真实性负责。
-
2.11 甲方在签订线下子合同时,应仔细确认所需要的服务内容、价格、数量、交付方式等信息。该信息将作为甲方的真实意思表示,甲方应对该等信息的法律后果承担责任。
-
2.12 甲方理解并同意:签订线下合同时系统生成的订单信息是计算机信息系统根据乙方填写的内容自动生成的数据,仅是乙方发出的合同要约;甲方收到乙方的合同信息内容并确认签字后,合同生效。
-
2.13 甲方同意并授权平台方保存其信息(包括但不限于注册信息)
-
3. 乙方权利义务
3.1 乙方应按照合同约定的时间和质量向甲方提供服务。
-
3.2 乙方应当积极听取甲方的修改意见,甲方提出合理需求且提出明确的修改意见的,乙方在提交服务成果后可提供修改服务,但超出合同约定内容的修改需求乙方有权拒绝。
-
3.3 乙方应当对甲方提供的相关资料承担保密义务,除为履行本协议义务及法律规定外,不得向第三方透露。
-
3.4 乙方有权要求甲方按照合同约定的日期支付相应款项,否则乙方有权拒绝、顺延提供服务和不发起项目验收;
-
3.5 甲方与乙方约定分阶段工作的,乙方完成阶段性工作并发起验收,甲方应在规定期限日内予以验收确认,验收合格后乙方有权要求甲方支付下一开发阶段的项目启动资金;如甲方在规定期限日内未予以验收的,则视为验收合格。
-
3.6 在双方签订的合同生效后,乙方有权要求甲方先支付阶段性工作的项目启动资金进行托管后,再进行工作。
-
3.7 因乙方自身原因导致约定分阶段工作未能如期完成并交付,则乙方需要与甲方提前协商沟通,并在汇新云平台上发起项目延期函,甲方进行确认后方可生效。若乙方未提前发起项目延期函并与甲方确认,否则乙方需按照约定的日期进行交付,由此产生的责任由乙方自行承担。
-
3.8 乙方应按照法律规定自行缴纳相应税费。
-
3.9 乙方可能会向实现甲方需求所必须的关联方或合作伙伴共享甲方的订单信息,以保障为甲方提供的服务顺利进行。比如乙方必须将甲方的订单信息与第三方服务商共享来实现甲方的服务需求,并使其完成后续的售后服务,甲方对此无异议。
-
3.10 乙方应将平台方公布的最新信息传递给甲方,维护三方合作关系。
-
3.11 乙方对服务中产生的因己方原因造成的甲方损失负有责任,应负责解决;若因此对平台造成损失的,乙方应赔偿平台方全部损失。
-
4.服务平台方权利义务
4.1 平台方对甲乙双方的注册申请有审核决定的权利;
-
4.2 平台方享有为维护系统而短暂停止服务的权利,暂停服务之前,平台方将在系统进行通知,甲乙双方应留意公告并做好相应备份工作。
-
4.3 平台方有权根据中国法律法规的调整、行政执法机关的命令和社会伦理道德的变化相应调整在线管理服务的审核标准,甲乙双方不得以类似“以前曾通过汇新云服务审核”的理由要求平台方继续审核通过;
-
4.4 乙方使用服务平台的账号密码所进行的一切操作视为乙方行为。乙方应妥善平台的账号密码,否则由此造成的一切后果由乙方承担;一旦发生安全问题应立即通知平台方以共同采取措施包括但不限于冻结账号等。
-
4.5 平台方有权根据自身需求改变平台服务规则,并在服务平台进行公告;
-
4.6 若乙方超过90天不使用平台账号的,平台方有权屏蔽或注销其账号。
-
5. 知识产权
5.1 本协议所产生成果的知识产权在甲方支付完全部项目款后,归甲方所有,乙方或乙方委托提供服务的第三方保留法律规定禁止转让部分的知识产权,同时保留服务成果用于案例展示、评选的权利。但甲方与乙方另有约定的除外。
-
5.2 乙方应当保证服务成果符合国家法律法规的规定,不存在任何侵犯第三方的所有权、知识产权、名誉权、肖像权等侵权行为,并承担因此产生的全部责任。
-
5.3 甲方的服务需求如需采购第三方知识产权产品的,乙方应当及时告知甲方经甲方书面同意且支付采购费用后,乙方予以采购并使用或由甲方自行采购并提供给乙方使用。
-
5.4 甲方在未付清所有服务费用之前,不得使用服务成果,不得主张服务成果的知识产权。如甲方在未付清服务费用之前自行或许可他人使用(包含但不限于直接使用、修改后使用)乙方提交的服务成果的,导致乙方或者其他第三方遭受损失的,甲方应承担由此产生的全部责任。
-
5.5 甲方应积极就服务成果申请相关知识产权(如有),如发生第三方侵权的,乙方可协助甲方维权,但不对维权结果承担任何责任。
-
- - 责任限制
-
乙方依照法律规定履行基础保障义务,但对于下述原因导致的合同履行障碍、履行瑕疵、履行延后或履行内容变更等情形,乙方并不承担相应的违约责任:
-
6、因自然灾害、罢工、暴乱、战争、政府行为、司法行政命令等不可抗力因素;
-
6、因电力供应故障、通讯网络故障等公共服务因素或第三人因素;
-
6、在乙方已尽善意管理的情况下,因常规或紧急的设备与系统维护、设备与系统故障、网络信息与数据安全等因素。
-
- - 违约责任
-
7.1 乙方未按照合同的约定按时提交服务成果的,应向甲方支付合同中规定的违约金。
-
7.2 甲方在服务期间无正当理由单方终止协议的,已支付费用无权要求返还。
-
7.3 乙方在服务期间无正当理由单方终止协议的,所收取的费用应当全部退回给甲方。
-
7.4 甲乙双方应遵守平台规则以及维护平台商业形象以及维护平台方正常运营,若因甲乙双方任何一方的原因给平台方造成损失的,平台方有权追究其责任,要求其支付违约金,并有权冻结其享有的平台账号;若平台方以法律手段维护其权益的,平台方所支付的全部费用,包括但不限于律师费、诉讼费等,全部由违约方承担。
-
- - 争议解决
-
8.1 因本协议及与本协议有关的争议、解释等,均适用中华人民共和国法律。
-
8.2 本协议签订或履行过程中,如有争议,双方应当友好协商解决;协商不成,双方一致同意提交平台方所在地人民法院解决。
-
- - 其他
-
9.1 本协议以电子文本形式生成,甲方与乙方完成协议订立手续后,即具有与手写签名同等的法律效力。
-
9.2 本协议中的任何约定如违反法律法规的规定而无效的,该无效条款不影响本协议其他条款的效力,甲方与乙方仍因履行其他条款所约定的权利义务。
-
9.3 本协议内容中以加粗方式显著标识的条款,请着重阅读。甲乙方点击“确认”按钮即视为完全接受本协议,在点击之前请再次确认已知悉并完全理解本协议的全部内容
-
-
+
-
-
+ { setAgreementCheckBox(e.target.checked) }}>我已阅读并同意本电子协议内容
-
)
diff --git a/src/military/task/taskEdit/index.jsx b/src/military/task/taskEdit/index.jsx
index e3468e98..86ee592b 100644
--- a/src/military/task/taskEdit/index.jsx
+++ b/src/military/task/taskEdit/index.jsx
@@ -9,6 +9,7 @@ import { httpUrl } from '../../fetch';
import { getTaskDetail, addTask, updateTask, getTaskCategory } from '../api';
import { formItemLayout, formModalLayout } from '../static';
import './index.scss';
+import { number } from 'prop-types';
const { info } = Modal;
@@ -18,7 +19,7 @@ if (window.location.href.indexOf('localhost') > -1) {
}
function getSomeDayAfter(nDay) {
- return moment(new Date().setDate(new Date().getDate() + nDay)).format('YYYY-MM-DD HH:mm:ss');
+ 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) => {
@@ -45,7 +46,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
const [isSend, setIsSend] = useState(false) // 是否发送验证码
const id = match.params.taskId;
- const { getFieldDecorator, validateFields, setFieldsValue, } = form;
+ const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form;
// 根据是否传id判断是新增还是修改
useEffect(() => {
@@ -95,7 +96,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
let formValue = {
taskModeId: 1,
collectionMode: 1,
- publishMode: 0,
+ publishMode: '0',
collectingDays: 30,
choosingDays: 15,
makePublicDays: 7,
@@ -172,9 +173,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
{getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
天
- {publishMode == 1 && {displayTime}}
+ {publishMode == '0' && {displayTime}
}
- ), []);
+ ), [publishMode]);
function changeHtml(html) {
setFieldsValue({
@@ -186,10 +187,10 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
// 新增或者修改后的处理函数
const publishDeal = useCallback((status, publishMode, res) => {
if (res && res.data) {
- showNotification("需求保存成功!");
+ showNotification("任务保存成功!");
if (!status) {
history.push("/task/myTask?published=false")
- } else if (publishMode == 1) {
+ } else if (publishMode == '1') {
info({
title: '提示',
content:
@@ -227,12 +228,12 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
// 编辑
params.id = id;
updateTask(params).then(res => {
- publishDeal(res);
+ publishDeal(status, publishMode, res);
});
} else {
// 新增
addTask(params).then(res => {
- publishDeal(res);
+ publishDeal(status, publishMode, res);
});
}
}
@@ -240,15 +241,18 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
}
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);
+ if (typeof v !== 'number' || v < 0) {
+ return;
+ }
+ 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);
- setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime });
- })
+ setDisplayTime({ collectingTime, choosingTime, makePublicTime, signingTime, payingTime });
}
return (
@@ -256,9 +260,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
创客空间 >
任务大厅 >
- 发布需求
+ 发布任务
-
任务需求提交
+
任务提交
@@ -294,14 +298,14 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
-
需求内容(*必填)
+
任务内容(*必填)
创客任务列表_2019-07-26_20-53.xlsx
点击下载示例模版
-
选择需求所在领域
+
选择任务所在领域
{
@@ -318,7 +322,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
{helper(
"",
"name",
- [{ required: true, message: "请用一句话概括您要做什么?比如:开源项目网站开发,最大限制60个字符" }],
+ [{ required: true, message: "请用一句话概括您要做什么?比如:开源项目网站开发,最大限制60个字符" },
+ { max: 60, message: '长度不能超过60个字符' }],
@@ -329,7 +334,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
value={description}
config={
{
- placeholder: "把您的需求内容补充详细一些吧,越清晰具体,任务完成质量越高哟~",
+ placeholder: "把您的任务内容补充详细一些吧,越清晰具体,任务完成质量越高哟~",
uploadImgServer: actionUrl + '/busiAttachments/upload',
uploadFileName: 'file',
uploadImgHeaders: {
@@ -352,14 +357,14 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
/>
{/* 用一个隐藏的input实现上必填校验 */}
{getFieldDecorator('description', {
- rules: [{ required: true, message: "把您的需求内容补充详细一些吧,越清晰具体,任务完成质量越高哟~" }],
+ rules: [{ required: true, message: "把您的任务内容补充详细一些吧,越清晰具体,任务完成质量越高哟~" }],
validateFirst: true
})(
)}
*
- 注:需求发布之后,将会公开展示在交易中心。不要把与项目、客户相关等隐私信息,以及QQ号、微信号、电话号码等联系方式填写在需求中。
+ 注:任务发布之后,将会公开展示在交易中心。不要把与项目、客户相关等隐私信息,以及QQ号、微信号、电话号码等联系方式填写在任务中。
@@ -394,9 +399,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
)}
{helper(
- "赏金分配:",
+ "悬赏模式:",
"taskModeId",
- [{ required: true, message: "请选择赏金分配" }],
+ [{ required: true, message: "请选择悬赏模式" }],
单人悬赏,只设置一个中标者
多人悬赏,设置多分中标分享赏金
@@ -407,7 +412,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
{helper(
"征集方式:",
"collectionMode",
- [{ required: true, message: "请选择赏金分配" }],
+ [{ required: true, message: "请选择征集方式" }],
创意征集,应征者以开放讨论的形式参与
物化成果征集,应征者以各自提交成果物的形式参与
@@ -417,10 +422,10 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
{helper(
"发布方式:",
"publishMode",
- [{ required: true, message: "请选择赏金分配" }],
+ [{ required: true, message: "请选择发布方式" }],
{ setPublishMode(e.target.value) }}>
- 自主提交方式,由发布方自行支付赏金,一键自助发布
- 统筹任务,由平台支付赏金,需经过平台遴选方能发布
+ 自主提交方式,由发布方自行支付赏金,一键自助发布
+ 统筹任务,由平台支付赏金,需经过平台遴选方能发布
)}
@@ -436,8 +441,10 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
"collectingDays",
[{ required: true, message: "请输入天数" }],
{ changeDate(v, 'collectingDays') }}
className="date-input"
+ onChange={(v) => { changeDate(v, 'collectingDays') }}
+ min={0}
+ max={180}
/>,
displayTime.collectingTime
)}
@@ -450,6 +457,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
{ changeDate(v, 'choosingDays') }}
+ min={0}
+ max={180}
/>,
displayTime.choosingTime
)}
@@ -460,6 +470,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
{ changeDate(v, 'makePublicDays') }}
+ min={0}
+ max={180}
/>,
displayTime.makePublicTime
)}
@@ -470,6 +483,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
{ changeDate(v, 'signingDays') }}
+ min={0}
+ max={180}
/>,
displayTime.signingTime
)}
@@ -480,6 +496,9 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
[{ required: true, message: "请输入天数" }],
{ changeDate(v, 'payingDays') }}
+ min={0}
+ max={180}
/>,
displayTime.payingTime
)}
diff --git a/src/military/task/taskEdit/index.scss b/src/military/task/taskEdit/index.scss
index 9cfa005d..e01dcbc1 100644
--- a/src/military/task/taskEdit/index.scss
+++ b/src/military/task/taskEdit/index.scss
@@ -130,10 +130,17 @@
.no-label {
display: inline-block;
+ margin-bottom: 0;
.ant-form-explain {
+ position: absolute;
white-space: nowrap;
+ bottom: -40px;
}
}
+.display-time{
+ position: relative;
+ top:-6px;
+}
.days-word {
line-height: 40px;
}
diff --git a/src/military/task/taskList/index.jsx b/src/military/task/taskList/index.jsx
index 4764370a..55e53588 100644
--- a/src/military/task/taskList/index.jsx
+++ b/src/military/task/taskList/index.jsx
@@ -1,5 +1,5 @@
import React, { useEffect, useState } from 'react';
-import { Pagination, Input, Button } from 'antd';
+import { Input, Button } from 'antd';
import moment from 'moment';
import ChooseNav from '../../components/chooseNav';
import SortBox from '../../components/sortBox';
@@ -79,7 +79,6 @@ export default ({ history, current_user }) => {
}
function changeSort(sortType) {
- console.log(sortType);
let sortValue = '';
if (sortType.type !== 'default') {
if (sortType.desc) {
@@ -160,7 +159,7 @@ export default ({ history, current_user }) => {
onSearch={(value) => setSearchInput(value)}
/>
-
+
From 09e81b9e787ce99f49a132ad5e8b71a90af1851d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com>
Date: Mon, 28 Jun 2021 11:53:37 +0800
Subject: [PATCH 07/84] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=90=E6=9E=9C?=
=?UTF-8?q?=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/webpack.config.dev.js | 3 +
config/webpack.config.prod.js | 3 +
jsconfig.json | 14 ++
src/common/DateUtil.js | 16 +-
src/military/components/chooseNav/index.jsx | 9 +-
src/military/components/sortBox/index.jsx | 6 +-
src/military/components/statusNav/index.jsx | 8 +-
src/military/fetch.js | 6 +-
src/military/index.scss | 31 +++
src/military/task/api.js | 19 +-
.../components/itemListAchieve/index.jsx | 98 +++++----
.../components/itemListAchieve/index.scss | 4 +-
.../components/itemListMyTask/index.jsx | 19 +-
.../components/itemListMyTask/index.scss | 0
.../components/itemListTask/index.jsx | 4 +-
.../components/itemListTask/index.scss | 0
src/military/{ => task}/image/win.png | Bin
src/military/{ => task}/image/winner.png | Bin
src/military/task/myTask/index.jsx | 95 +++++++--
src/military/task/myTask/index.scss | 18 +-
src/military/task/myTask/joinTask.jsx | 194 ++++++++++++++++++
src/military/task/static.js | 2 +-
src/military/task/taskDetail/index.jsx | 23 +--
src/military/task/taskDetail/index.scss | 9 +
src/military/task/taskEdit/index.jsx | 1 -
src/military/task/taskList/index.jsx | 9 +-
26 files changed, 480 insertions(+), 111 deletions(-)
create mode 100644 jsconfig.json
rename src/military/{ => task}/components/itemListAchieve/index.jsx (70%)
rename src/military/{ => task}/components/itemListAchieve/index.scss (87%)
rename src/military/{ => task}/components/itemListMyTask/index.jsx (89%)
rename src/military/{ => task}/components/itemListMyTask/index.scss (100%)
rename src/military/{ => task}/components/itemListTask/index.jsx (96%)
rename src/military/{ => task}/components/itemListTask/index.scss (100%)
rename src/military/{ => task}/image/win.png (100%)
rename src/military/{ => task}/image/winner.png (100%)
create mode 100644 src/military/task/myTask/joinTask.jsx
diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js
index 914c0ce7..40b0b12b 100644
--- a/config/webpack.config.dev.js
+++ b/config/webpack.config.dev.js
@@ -101,6 +101,9 @@ module.exports = {
extensions: [".web.js", ".mjs", ".js", ".json", ".web.jsx", ".jsx"],
alias: {
educoder: __dirname + "/../src/common/educoder.js",
+ src: path.join(paths.appSrc), // 整个源代码目录
+ forge: path.join(paths.appSrc, 'forge'),
+ military: path.join(paths.appSrc, 'military'),
// Support React Native Web
// https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
"react-native": "react-native-web",
diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js
index a7b2c9f4..467771a5 100644
--- a/config/webpack.config.prod.js
+++ b/config/webpack.config.prod.js
@@ -87,6 +87,9 @@ module.exports = {
extensions: [".web.js", ".mjs", ".js", ".json", ".web.jsx", ".jsx"],
alias: {
educoder: __dirname + "/../src/common/educoder.js",
+ src: path.join(paths.appSrc),
+ forge: path.join(paths.appSrc, 'forge'),
+ military: path.join(paths.appSrc, 'military'),
// Support React Native Web
// https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
"react-native": "react-native-web",
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 00000000..9c99023e
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "educoder": ["./src/common/educoder.js"],
+ "forge":["./src/forge"],
+ "military":["./src/military"],
+ }
+ },
+ "exclude": [
+ "node_modules",
+ "build"
+ ]
+}
\ No newline at end of file
diff --git a/src/common/DateUtil.js b/src/common/DateUtil.js
index 0912ac49..5869a1a2 100644
--- a/src/common/DateUtil.js
+++ b/src/common/DateUtil.js
@@ -109,20 +109,20 @@ export function timeAgo(backDate) {
return;
}
let time = new Date() - moment(backDate);
- var days = Math.round(time / (1000 * 60 * 60 * 24));
- var hours = Math.round((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
- var minutes = Math.round((time % (1000 * 60 * 60)) / (1000 * 60));
- var seconds = Math.round((time % (1000 * 60 * 60)) / 1000);
+ var days = Math.floor(time / (1000 * 60 * 60 * 24));
+ var hours = Math.floor((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
+ var seconds = Math.floor((time % (1000 * 60 * 60)) / 1000);
if (days) {
- return "约" + days + "天前";
+ return days + "天前";
}
if (hours) {
- return "约" + hours + "小时前";
+ return hours + "小时前";
}
if (minutes) {
- return "约" + minutes + "分前";
+ return minutes + "分前";
}
if (seconds) {
- return "约" + seconds + "秒前";
+ return seconds + "秒前";
}
}
\ No newline at end of file
diff --git a/src/military/components/chooseNav/index.jsx b/src/military/components/chooseNav/index.jsx
index 251ee995..1074cb18 100644
--- a/src/military/components/chooseNav/index.jsx
+++ b/src/military/components/chooseNav/index.jsx
@@ -1,10 +1,11 @@
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useState,memo } from 'react';
import classNames from 'classnames';
import './index.scss';
-export default (props) => {
+export default memo((props) => {
const { title, options, changeOptionId, type ,size} = props;
-
+ console.log(" --- 组件重新渲染 --- ");
+
const [option, setOption] = useState({ code: "", dicItemName: "" ,dicItemCode:""});
useEffect(() => {
@@ -26,4 +27,4 @@ export default (props) => {
)
-}
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/military/components/sortBox/index.jsx b/src/military/components/sortBox/index.jsx
index 546907da..ebfcc7dc 100644
--- a/src/military/components/sortBox/index.jsx
+++ b/src/military/components/sortBox/index.jsx
@@ -1,9 +1,9 @@
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useState ,memo} from 'react';
import { Icon, } from 'antd';
import classNames from 'classnames';
import './index.scss';
-export default (props) => {
+export default memo((props) => {
const { options, changeOptionId, type, defaultValue } = props;
const [myOptions, setMyOptions] = useState(options);
@@ -45,4 +45,4 @@ export default (props) => {
)
-}
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/military/components/statusNav/index.jsx b/src/military/components/statusNav/index.jsx
index c059dd73..d0d58e2b 100644
--- a/src/military/components/statusNav/index.jsx
+++ b/src/military/components/statusNav/index.jsx
@@ -1,9 +1,9 @@
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useState ,memo} from 'react';
import classNames from 'classnames';
import './index.scss';
-export default (props) => {
- const { title, options, changeOptionId, type } = props;
+export default memo((props) => {
+ const { options, changeOptionId, type } = props;
const [option, setOption] = useState({ code: "", dicItemName: "" ,dicItemCode:""});
@@ -23,4 +23,4 @@ export default (props) => {
)
-}
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/src/military/fetch.js b/src/military/fetch.js
index c56327fc..9cd4f9db 100644
--- a/src/military/fetch.js
+++ b/src/military/fetch.js
@@ -3,10 +3,10 @@ import axios from 'axios';
import cookie from 'react-cookies';
// export const httpUrl='http://117.50.100.12:8001';
-// export const httpUrl='http://192.168.31.72:8081';
+export const httpUrl='http://192.168.31.72:8081';
// export const httpUrl = 'http://106.75.31.211:58088';
// export const httpUrl = 'http://192.168.31.72:8089';
-export const httpUrl = 'http://192.168.31.104:8081';
+// export const httpUrl = 'http://192.168.31.104:8081';
const TokenKey = 'autologin_forge_military';
@@ -73,7 +73,7 @@ service.interceptors.response.use(
message: "提示",
description: '无权限',
});
- window.location.href="/404";
+ // window.location.href="/404";
return Promise.reject('error');
}
if (res.status == 40001) {
diff --git a/src/military/index.scss b/src/military/index.scss
index 8c4db3a6..da727ac6 100644
--- a/src/military/index.scss
+++ b/src/military/index.scss
@@ -114,6 +114,37 @@
border: 0;
}
+// 富文本样式
+.w-e-text table td, .w-e-text table th{
+ height: 30px;
+}
+// 富文本生成的内容的样式
+.editor-w-text table td, .editor-w-text table th{
+ border-bottom: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ padding: 3px 5px;
+ height: 30px;
+ min-height: 30px;
+}
+.editor-w-text table th {
+ border-bottom: 2px solid #ccc;
+ text-align: center;
+ background-color: #f1f1f1;
+}
+.editor-w-text table {
+ border-top: 1px solid #ccc;
+ border-left: 1px solid #ccc;
+}
+.editor-w-text blockquote {
+ display: block;
+ border-left: 8px solid #d0e5f2;
+ padding: 5px 10px;
+ margin: 10px 0;
+ line-height: 1.4;
+ font-size: 100%;
+ background-color: #f1f1f1;
+}
+
@media screen and (max-width: 1200px){
.centerbox {
diff --git a/src/military/task/api.js b/src/military/task/api.js
index 8fcb252e..d0b9c544 100644
--- a/src/military/task/api.js
+++ b/src/military/task/api.js
@@ -42,7 +42,7 @@ export async function getTaskList(params) {
}
}
-// 我的列表查询
+// 我的任务列表查询
export async function getMyTaskList(params) {
let res = await fetch({
url: '/api/myTasks/',
@@ -59,6 +59,23 @@ export async function getMyTaskList(params) {
}
}
+// 我参与的任务列表查询
+export async function getJoinTaskList(params) {
+ let res = await fetch({
+ url: '/api/myTasks/myPapers',
+ method: 'get',
+ params,
+ });
+ if (res.data) {
+ return res.data;
+ } else {
+ notification.open({
+ message: "提示",
+ description: res.message || '请求错误',
+ });
+ }
+}
+
// 详情查询
export async function getTaskDetail(id) {
diff --git a/src/military/components/itemListAchieve/index.jsx b/src/military/task/components/itemListAchieve/index.jsx
similarity index 70%
rename from src/military/components/itemListAchieve/index.jsx
rename to src/military/task/components/itemListAchieve/index.jsx
index 3f602395..26720353 100644
--- a/src/military/components/itemListAchieve/index.jsx
+++ b/src/military/task/components/itemListAchieve/index.jsx
@@ -1,22 +1,16 @@
import React, { useEffect, useState } from 'react';
-import { Icon, Pagination, Modal, Input ,Button} from 'antd';
-import { getImageUrl, timeAgo } from 'educoder';
+import { Pagination, Modal, Input, Button } from 'antd';
import ReactWEditor from 'wangeditor-for-react';
-import { reportAchieve, thumbUpAchieve, commentAdd } from '../../task/api';
-import { httpUrl } from '../../fetch';
-import Nodata from '../../../forge/Nodata';
-import Loading from "../../../Loading";
+import { getImageUrl, timeAgo } from 'educoder';
+import Nodata from 'forge/Nodata';
+import Loading from "src/Loading";
+import { reportAchieve, thumbUpAchieve, commentAdd } from '../../api';
+import { httpUrl } from '../../../fetch';
+
import './index.scss';
const { TextArea } = Input;
-// 如果是开发,那么文件系统默认使用117.50.100.12
-let fileHttpUrl = httpUrl;
-if (window.location.href.indexOf('localhost') > -1) {
- fileHttpUrl = 'http://117.50.100.12:8001';
-}
-
-// const classArr = ['', 'list-done', 'list-error', 'list-red', 'list-yellow', '', '', 'list-pay', 'list-gray',];
export default (props) => {
const { list, curPage, total, changePage, loading, applyStatusAllNameArr, relaodList, showNotification } = props;
const [page, setPage] = useState(1);
@@ -28,12 +22,14 @@ export default (props) => {
const [reportValue, setReportValue] = useState('');
const [commentHtml, setCommentHtml] = useState('');
+ const [commentId, setCommentId] = useState(undefined);
+
useEffect(() => {
changePage(page);
}, [page]);
function downFile(item) {
- let url = fileHttpUrl + '/busiAttachments/download/' + item.id;
+ let url = httpUrl + '/busiAttachments/download/' + item.id;
window.open(url);
}
@@ -60,16 +56,27 @@ export default (props) => {
}
function commentPush(item) {
+ if (!commentHtml) {
+ showNotification("请输入评价");
+ return;
+ }
commentAdd({
- content:commentHtml,
- paperId:''
+ content: commentHtml,
+ paperId: item.id,
+ taskId: item.taskId
}).then(res => {
-
+ if (res.message === 'success') closeComment();
});
}
- function commentEdit(id){
+ function closeComment() {
+ setCommentId(undefined);
+ setCommentHtml('');
+ }
+ function commentEdit(id) {
+ setCommentId(id);
+ setCommentHtml('');
}
return (
@@ -111,37 +118,54 @@ export default (props) => {
}
- {/*
diff --git a/src/military/components/itemListAchieve/index.scss b/src/military/task/components/itemListAchieve/index.scss
similarity index 87%
rename from src/military/components/itemListAchieve/index.scss
rename to src/military/task/components/itemListAchieve/index.scss
index 69399ed8..7544184f 100644
--- a/src/military/components/itemListAchieve/index.scss
+++ b/src/military/task/components/itemListAchieve/index.scss
@@ -17,4 +17,6 @@
text-align: center;
}
-
+.fileCommentsList {
+ background: #FAFAFA;
+}
diff --git a/src/military/components/itemListMyTask/index.jsx b/src/military/task/components/itemListMyTask/index.jsx
similarity index 89%
rename from src/military/components/itemListMyTask/index.jsx
rename to src/military/task/components/itemListMyTask/index.jsx
index 93084275..791dea24 100644
--- a/src/military/components/itemListMyTask/index.jsx
+++ b/src/military/task/components/itemListMyTask/index.jsx
@@ -1,18 +1,21 @@
import React, { useEffect, useState } from 'react';
-import { Icon, Modal, Pagination } from 'antd';
+import { 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 Nodata from 'forge/Nodata';
+import Loading from "src/Loading";
+import { publishModeArr ,taskStatusAllArr} from '../../static';
import './index.scss';
-const statusArr = ["草稿", "待审核", "已拒绝", "成果征集中", "成果评选中", "公示中", "协议签订中", "支付中", "已完成"];
+const statusArr = [];
+for (const item of taskStatusAllArr){
+ statusArr[item.dicItemCode]=item.dicItemName;
+}
export default (props) => {
- const { list, itemClick, curPage, total, changePage, taskCategoryValueArr, loading } = props;
+ const { list, curPage, total, changePage, taskCategoryValueArr, loading } = props;
const [page, setPage] = useState(1);
- const [activeItem, setActiveItem] = useState('');
const [visibleProofs, setVisibleProofs] = useState(false);
+ const [activeItem,setActiveItem]=useState({});
const [pageSize, setPageSize] = useState(() => {
return props.pageSize || 10;
@@ -29,7 +32,7 @@ export default (props) => {
return (
-