forked from Gitlink/forgeplus-react
上传我的成果静态页面
This commit is contained in:
parent
92f3934d5e
commit
216e984740
|
@ -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 (
|
||||
|
||||
<div className="shop-box">
|
||||
<div className={classNames({"choose-box":true,"choose-box-big":size})}>
|
||||
<div className="choose-title">{title}</div>
|
||||
<div className="choose-list">
|
||||
<div className={classNames({ "choose-item-checked": option.dicItemCode === "", "choose-item": true })} key={"all"} onClick={() => { setOption({ dicItemCode: "", dicItemName: "" }) }}>全部</div>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 ? <Loading /> :
|
||||
<React.Fragment>
|
||||
{
|
||||
list.map(item => {
|
||||
return (
|
||||
|
||||
|
||||
<div className="fileComments df" key={item.id}>
|
||||
<img src={getImageUrl("images/educoder/competition/1.png")} width="50" height="50" className="bor-radius-all mr20" />
|
||||
<div className="flex1">
|
||||
<ul className="clearfix">
|
||||
<li className="fl pr">
|
||||
<span className="font-16 mr20 color-grey3">
|
||||
莫胜吕
|
||||
</span>
|
||||
<span className="color-grey9">2 天前</span>
|
||||
<span className="color-blue ml10">待审核</span>
|
||||
|
||||
</li>
|
||||
<li className="fr">
|
||||
<a className="base_smallBtn blue_line_btn fl">
|
||||
待确认
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
{/* <li className="color-grey-6 mt10 mb10 justify break_word lineh-20">
|
||||
<div className="paper-detail-content" id="paper-detail-content-184" style="box-sizing: border-box;">
|
||||
<textarea style="display:none;">测试</textarea>
|
||||
</div>
|
||||
|
||||
</li> */}
|
||||
<div>
|
||||
<div className="attachments" >
|
||||
<p className="clearfix" id="attachments_1541">
|
||||
<span title="歌曲ID代入演示.txt" id="attachment_">
|
||||
<i className="iconfont icon-fujian color-green font-14 mr3"></i>
|
||||
<a href="/attachments/download/1541/%E6%AD%8C%E6%9B%B2ID%E4%BB%A3%E5%85%A5%E6%BC%94%E7%A4%BA.txt" className="icon icon-attachment font-14" length="32">歌曲ID代入演示.txt</a> </span>
|
||||
|
||||
<span className="size color-grey-9 ml10">(299 Bytes)</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<li className="clearfix color-grey-6 mt10 mb20">
|
||||
<span className="mr50 fl"><span className="color-grey9">成果编号:</span>#25698320</span>
|
||||
<span className="mr50 fl"><span className="color-grey9">提交时间:</span>2021-06-17 13: 45: 53</span>
|
||||
<span className="fl"><span className="color-grey9">稿件状态:</span>雇主已浏览</span>
|
||||
<span className="fr">
|
||||
<a href="javascript:void(0)" className="mr20" onclick="tipOffs(184);"><i className="iconfont icon-jinggao font-15 mr3"></i>举报</a>
|
||||
<a href="/papers/184/add_comments" className="mr20" data-remote="true"><i className="iconfont icon-huifu1 font-15 mr3"></i>0</a>
|
||||
<span id="vote_link">
|
||||
<a onclick="vote(184, 'Paper')" href="javascript:void(0)"><i className="iconfont icon-dianzan11 font-15 mr3"></i>2</a>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<div id="paper-comment-add-184"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
{list.length > 0 ?
|
||||
<div className="edu-txt-center mt20 mb20">
|
||||
{total > pageSize && <Pagination
|
||||
showQuickJumper
|
||||
onChange={(page) => { setPage(page) }}
|
||||
current={curPage}
|
||||
total={total}
|
||||
showTotal={total => `共 ${total} 条`}
|
||||
/>}
|
||||
</div> :
|
||||
<Nodata _html="暂无数据" />}
|
||||
</React.Fragment>
|
||||
|
||||
)
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 (
|
||||
<div className="centerbox my-task">
|
||||
<Tabs defaultActiveKey={identity} onChange={(key) => { setIdentity(key) }}>
|
||||
<Tabs defaultActiveKey={identity} onChange={changeIdentity}>
|
||||
<TabPane tab="我是雇主" key="1">
|
||||
|
||||
<Tabs className="childTab"
|
||||
activeKey={statusType}
|
||||
onChange={changeStatusType}
|
||||
|
@ -145,11 +170,77 @@ export default ({ location, history, current_user }) => {
|
|||
/>
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
|
||||
</TabPane>
|
||||
|
||||
|
||||
<TabPane tab="我是创客" key="2">
|
||||
请稍候
|
||||
|
||||
<Tabs className="childTab"
|
||||
activeKey={requireAchieve}
|
||||
onChange={changeRequireAchieve}
|
||||
tabBarExtraContent={
|
||||
<Search
|
||||
maxLength={20}
|
||||
style={{ width: "300px" }}
|
||||
placeholder="请输入任务编号/任务名称关键字"
|
||||
onSearch={(value) => setSearchInput(value)}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<TabPane tab="我发布的需求" key="1">
|
||||
<ChooseNav
|
||||
key={'taskStatus'}
|
||||
type={'taskStatus'}
|
||||
title={'任务状态:'}
|
||||
options={publishStatusArr}
|
||||
changeOptionId={changeOptionId}
|
||||
/>
|
||||
|
||||
<ChooseNav
|
||||
key={'applyStatus'}
|
||||
type={'applyStatus'}
|
||||
title={'应征状态:'}
|
||||
options={applyStatusArr}
|
||||
changeOptionId={changeOptionId}
|
||||
/>
|
||||
|
||||
<ItemListMyTask
|
||||
list={taskList}
|
||||
itemClick={taskClick}
|
||||
curPage={curPage}
|
||||
total={total}
|
||||
taskCategoryValueArr={taskCategoryValueArr}
|
||||
changePage={(page) => { setCurPage(page) }}
|
||||
loading={loading}
|
||||
/>
|
||||
</TabPane>
|
||||
|
||||
<TabPane tab="需求草稿" key="2">
|
||||
<ChooseNav
|
||||
key={'applyStatus'}
|
||||
type={'applyStatus'}
|
||||
title={'应征状态:'}
|
||||
options={applyStatusArr}
|
||||
changeOptionId={changeOptionId}
|
||||
/>
|
||||
|
||||
<Table
|
||||
loading={loading}
|
||||
rowKey={(row) => row.id}
|
||||
dataSource={taskList}
|
||||
columns={columns}
|
||||
pagination={false}
|
||||
/>
|
||||
{taskList.length > 10 &&
|
||||
<Pagination
|
||||
onChange={(page) => { setCurPage(page) }}
|
||||
current={curPage}
|
||||
total={total}
|
||||
/>}
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
|
||||
</TabPane>
|
||||
|
||||
</Tabs>
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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 <img src={winpng}/>
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
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 (
|
||||
<li key={title} className={classNames({ active: active })} >
|
||||
<span>{title}</span>
|
||||
{days && <p className="color-grey-6 font-12">
|
||||
{days}天
|
||||
|
||||
useEffect(() => {
|
||||
id && getTaskDetail(id).then(data => {
|
||||
setDetailData(data || {});
|
||||
console.log(data);
|
||||
})
|
||||
}, [id]);
|
||||
|
||||
// 流程步骤显示
|
||||
const process = useCallback((title, days, active) => {
|
||||
return (
|
||||
<li key={title} className={classNames({ active: active })} >
|
||||
<span>{title}</span>
|
||||
{days && <p className="color-grey-6 font-12">
|
||||
{days}天
|
||||
</p>}
|
||||
</li>
|
||||
)
|
||||
}, []);
|
||||
</li>
|
||||
)
|
||||
}, []);
|
||||
|
||||
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 (
|
||||
<React.Fragment>
|
||||
|
||||
const helper = useCallback(
|
||||
(label, name, rules, widget) => (
|
||||
<Form.Item label={label}>
|
||||
{getFieldDecorator(name, { rules, validateFirst: true })(widget)}
|
||||
</Form.Item>
|
||||
),
|
||||
[]
|
||||
);
|
||||
|
||||
|
||||
// 上传附件后得到的文件数组
|
||||
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 (
|
||||
|
||||
<div className="centerbox">
|
||||
<div className="head-navigation">
|
||||
<Link to="/task">创客空间 ></Link>
|
||||
<Link to="/task">任务大厅 ></Link>
|
||||
任务编号:{detailData.number}
|
||||
任务编号:{detailData.number}
|
||||
</div>
|
||||
|
||||
<div className="edu-back-white padding30">
|
||||
|
@ -123,9 +218,9 @@ export default ({ match, current_user, history, showNotification }) => {
|
|||
{
|
||||
detailData.tasksAttachments.map(item => {
|
||||
return <div className="file-list-box" key={item.id}>
|
||||
|
||||
|
||||
<a onClick={() => { downFile(item) }}><i className="iconfont icon-fujian color-green font-14 mr3"></i>
|
||||
{item.fileName} </a>
|
||||
{item.fileName} </a>
|
||||
<span className="ml10 color-grey-9">({item.fileSizeString})</span>
|
||||
</div>
|
||||
})
|
||||
|
@ -136,7 +231,7 @@ export default ({ match, current_user, history, showNotification }) => {
|
|||
<div className="font-16 font-bd mt10">知识产权说明:</div>
|
||||
<p className="color-grey-6 lineh-20 padding10-15 mb10">
|
||||
1、参赛作品一经采用,其所有权、修改权和使用权均归主办方所有,设计者不得再在任何地方使用;<br />
|
||||
2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
|
||||
2、应征者所提交的作品必须由应征者本人创作或参与创作,应征者应确认其作品的原创性,主办单位不承担因作品侵犯他人(或单位)的权利而产生的法律责任,其法律责任由应征者本人承担。
|
||||
</p>
|
||||
|
||||
<div className="font-16 font-bd">交稿声明:</div>
|
||||
|
@ -146,8 +241,176 @@ export default ({ match, current_user, history, showNotification }) => {
|
|||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</React.Fragment>
|
||||
{/* {detailData.status == '3' ? */}
|
||||
<div className="edu-back-white padding30 mt20 text-center">
|
||||
<Button className="mr20" type={"primary"} onClick={() => { setApplyModal(true) }}>我要应征投稿</Button>
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
{/* : */}
|
||||
<div className="edu-back-white padding30 mt20">
|
||||
<div className="font-16 font-bd">我要应征投稿:</div>
|
||||
{helper(
|
||||
"",
|
||||
"achievementRemark",
|
||||
[{ required: true, message: "请输入" }],
|
||||
<TextArea
|
||||
placeholder="请输入"
|
||||
autoSize={{ minRows: 6 }}
|
||||
className="applyText"
|
||||
/>
|
||||
)}
|
||||
|
||||
<Form.Item >
|
||||
<Upload
|
||||
className="commentStyle"
|
||||
load={UploadFunc}
|
||||
size={50}
|
||||
showNotification={showNotification}
|
||||
// actionUrl={httpUrl}
|
||||
actionUrl={'http://117.50.100.12:8001'}
|
||||
fileList={fileList}
|
||||
/>
|
||||
{getFieldDecorator('uploadFileNumbers', {
|
||||
validateFirst: true
|
||||
})(<Input style={{ display: 'none' }} />)}
|
||||
</Form.Item>
|
||||
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem(0) }}>提交</Button>
|
||||
</div>
|
||||
{/* } */}
|
||||
|
||||
|
||||
|
||||
<div className="applyList edu-back-white padding30 mt20">
|
||||
<div class="font-16 font-bd">交稿(0)<i data-tip-down="不公示应征者姓名" class="iconfont icon-yincang1 color-grey9 font-20"></i>
|
||||
|
||||
{/* <a href="javascript:void(0)" onclick="upload_proofs_popup(130)" class="line_1 color-blue fr ml20" id="proof-upload-button">上传佐证材料</a> */}
|
||||
{/* <a href="/tasks/130/export_papers" class="line_1 color-blue fr ml20" data-disable-with="<img alt="Loading" class="download-loading" src="/images/loading.gif?1564989000" ></a>下载中..." target="_blank">一键导出成果物</a> */}
|
||||
<a href="javascript:notice_box('暂无应征者提交')"><span class="fr color-orange ml20">应征者名单公示 >></span></a>
|
||||
|
||||
</div>
|
||||
|
||||
<StatusNav
|
||||
key={'applyStatus'}
|
||||
type={'applyStatus'}
|
||||
options={applyStatusArr}
|
||||
changeOptionId={changeOptionId}
|
||||
/>
|
||||
|
||||
<Table
|
||||
loading={loading}
|
||||
rowKey={(row) => row.id}
|
||||
dataSource={dataList}
|
||||
columns={columns}
|
||||
pagination={false}
|
||||
/>
|
||||
{dataList.length > 10 &&
|
||||
<Pagination
|
||||
onChange={(page) => { setCurPage(page) }}
|
||||
current={curPage}
|
||||
total={total}
|
||||
/>}
|
||||
|
||||
<ItemListAchieve
|
||||
list={dataList}
|
||||
itemClick={dataList}
|
||||
curPage={curPage}
|
||||
total={total}
|
||||
changePage={(page) => { setCurPage(page) }}
|
||||
loading={loading}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
<Modal
|
||||
title="应征投稿协议内容"
|
||||
visible={applyModal}
|
||||
// onOk={checkItem}
|
||||
onCancel={() => { setApplyModal(false) }}
|
||||
className="form-edit-modal"
|
||||
width='60vw'
|
||||
>
|
||||
<div className="new_li markdown-body editormd-html-preview" id="agreement_content" style={{ boxSizing: 'border-box', padding: '0px 20px' }}>
|
||||
<p>投稿协议内容示例,请在管理 — 创客 — 基础数据 — 应征投稿协议内容 修改.</p>
|
||||
<p> <strong>在您通过本平台在线签署应征投稿合同前,请您认真细致地阅读以下《应征投稿协议》,特别是其中以粗体下划线明显标注的条款,并在您同意了下述协议条款再正式进入后续程序</strong></p>
|
||||
<p>本协议由甲方(任务发布方)和乙方(应征者)在线签订,请甲乙双方仔细阅读协议内容, <strong>请务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款</strong>。 甲乙双方点击接受本协议,即意味着已阅读、理解并接受本协议所有条款,并对本协议条款的含义及相应的法律后果已全部知晓并充分认可。甲乙双方点击确认本协议后,本协议即产生法律约束力。</p>
|
||||
<p>本协议内容包括协议正文及甲乙双方在线相互确认的合同。所签订的合同、合同附件为本协议不可分割的一部分,与本协议正文具有同等法律效力。若您继续使用本平台创客空间,则表明您已经完全知晓、认可并同意遵守本协议内容、所有汇新云已经发布的各类规则以及签订的合同。</p>
|
||||
<p>在阅读本协议的过程中,如不同意本协议或其中任何条款约定,应拒绝接受本协议所约定的内容,甲乙双方都有权自主选择拒绝达成合作。</p>
|
||||
<h5 id="h5-1-"><a name="1.定义" className="reference-link"></a><span className="header-link octicon octicon-link"></span>1.定义</h5><p>除非本协议另有约定,在本协议中所用下列术语定义如下:</p>
|
||||
<p>1.1 本平台:是指www.XXXXXX.com 为用户提供需求信息发布、交流,第三方以“企业”或“个人”入驻的形式应征需求的电子商务交易服务平台;</p>
|
||||
<p>1.2 用户:指在本平台合法注册,接受并认可服务平台相关协议、规则、规范、制度等的自然人、法人或其他非法人组织。</p>
|
||||
<p>1.3 甲方:指在本平台上发布创客需求的用户。</p>
|
||||
<p>1.4 乙方:是指经本平台审核通过入驻本平台,根据需求方发布的需求,提供各种定制服务或IT产品,在平台开展业务经营的企业或个人。</p>
|
||||
<p>1.5 服务需求:指甲方基于自身需求向乙方提出的具体服务要求。</p>
|
||||
<p>1.6 项目款:指甲方和乙方的交易金额,即本协议约定交易金额或后续经协商调整后确定的交易总金额。</p>
|
||||
<p>1.7 平台账户:指用户在本平台注册的帐号,用户只能通过该帐户登陆服务平台进行交易。</p>
|
||||
<h5 id="h5-2-"><a name="2.甲方权利义务" className="reference-link"></a><span className="header-link octicon octicon-link"></span>2.甲方权利义务</h5><p>2.1 甲方应当根据服务需求主动向乙方提交本项目所需的相关资料,并保证该资料的真实性、合法性、准确性、完整性,如因甲方未按照前述标准提供资料导致乙方无法履行协议义务,由此产生的责任由甲方自行承担。</p>
|
||||
<p>2.2 甲方在向乙方提交项目所涉及资料时有权一并对乙方的服务提出建议和思路,同时有权在验收时对乙方的服务成果提出修改意见,但甲方提出的服务建议或思路以及修改意见应当明确具体,如不明确,有权不听取建议或拒绝修改,同时甲方不得借机拖延进度及应支付的款项,甲方提出超出协议或合同约定范围的修改要求,乙方有权拒绝或者另行收取费用。</p>
|
||||
<p>2.3 甲方未按照合同在约定的日期内支付项目款的,乙方有权拒绝或顺延提供服务。</p>
|
||||
<p>2.4 甲方应充分了解且同意遵守服务平台公布的所有协议、规则、制度等文件,并按照服务平台的相关规定处理相关交易事项。</p>
|
||||
<p>2.5 甲方应及时验收乙方交付的服务成果(包括阶段成果和最终成果),如乙方向甲方提交服务成果后在规定期限日内甲方未给出具体验收意见的,视为乙方提交的服务成果合格。如有下一阶段服务的,乙方有权继续推进;如下一阶段服务因甲方原因导致无法继续推进的,乙方不承担任何责任。</p>
|
||||
<p>2.6 甲方有义务向乙方提供必要的配合义务,包括提供必要资料、及时验收、及时回复等。</p>
|
||||
<p><strong>2.7 甲方同意并知晓,乙方仅提供合法、合规、合理的服务,对甲方违背法律法规或行政规章的服务要求,乙方有权拒绝提供服务。</strong></p>
|
||||
<p><strong>2.8 甲方应当保证委托的服务事项不违反任何法律法规或侵犯他人合法权利,否则乙方有权拒绝提供服务并有权立即解除本协议。</strong></p>
|
||||
<p><strong>2.9 甲方应当保证合法使用乙方提交的服务成果,不得将服务成果用于任何违法违规或侵犯他人合法权益的活动,甲方应自行承担服务成果使用过程中发生的全部责任。</strong></p>
|
||||
<p><strong>2.10 甲方同意,为便于双方交易,本协议作为交易的主要内容和双方之间权利义务的根本性约定,具体服务项目、期限、金额等甲方在平台与乙方签订电子合同时在合同上予以标注,甲方对在合同中提供的所有信息的真实性负责。</strong></p>
|
||||
<p><strong>2.11 甲方在签订线下子合同时,应仔细确认所需要的服务内容、价格、数量、交付方式等信息。该信息将作为甲方的真实意思表示,甲方应对该等信息的法律后果承担责任。</strong></p>
|
||||
<p><strong>2.12 甲方理解并同意:签订线下合同时系统生成的订单信息是计算机信息系统根据乙方填写的内容自动生成的数据,仅是乙方发出的合同要约;甲方收到乙方的合同信息内容并确认签字后,合同生效。</strong></p>
|
||||
<p><strong>2.13 甲方同意并授权平台方保存其信息(包括但不限于注册信息)</strong></p>
|
||||
<h5 id="h5-3-"><a name="3. 乙方权利义务" className="reference-link"></a><span className="header-link octicon octicon-link"></span>3. 乙方权利义务</h5><p>3.1 乙方应按照合同约定的时间和质量向甲方提供服务。</p>
|
||||
<p>3.2 乙方应当积极听取甲方的修改意见,甲方提出合理需求且提出明确的修改意见的,乙方在提交服务成果后可提供修改服务,但超出合同约定内容的修改需求乙方有权拒绝。</p>
|
||||
<p>3.3 乙方应当对甲方提供的相关资料承担保密义务,除为履行本协议义务及法律规定外,不得向第三方透露。</p>
|
||||
<p>3.4 乙方有权要求甲方按照合同约定的日期支付相应款项,否则乙方有权拒绝、顺延提供服务和不发起项目验收;</p>
|
||||
<p>3.5 甲方与乙方约定分阶段工作的,乙方完成阶段性工作并发起验收,甲方应在规定期限日内予以验收确认,验收合格后乙方有权要求甲方支付下一开发阶段的项目启动资金;如甲方在规定期限日内未予以验收的,则视为验收合格。</p>
|
||||
<p>3.6 在双方签订的合同生效后,乙方有权要求甲方先支付阶段性工作的项目启动资金进行托管后,再进行工作。</p>
|
||||
<p>3.7 因乙方自身原因导致约定分阶段工作未能如期完成并交付,则乙方需要与甲方提前协商沟通,并在汇新云平台上发起项目延期函,甲方进行确认后方可生效。若乙方未提前发起项目延期函并与甲方确认,否则乙方需按照约定的日期进行交付,由此产生的责任由乙方自行承担。</p>
|
||||
<p>3.8 乙方应按照法律规定自行缴纳相应税费。</p>
|
||||
<p>3.9 乙方可能会向实现甲方需求所必须的关联方或合作伙伴共享甲方的订单信息,以保障为甲方提供的服务顺利进行。比如乙方必须将甲方的订单信息与第三方服务商共享来实现甲方的服务需求,并使其完成后续的售后服务,甲方对此无异议。</p>
|
||||
<p>3.10 乙方应将平台方公布的最新信息传递给甲方,维护三方合作关系。</p>
|
||||
<p>3.11 乙方对服务中产生的因己方原因造成的甲方损失负有责任,应负责解决;若因此对平台造成损失的,乙方应赔偿平台方全部损失。</p>
|
||||
<h5 id="h5-4-"><a name="4.服务平台方权利义务" className="reference-link"></a><span className="header-link octicon octicon-link"></span>4.服务平台方权利义务</h5><p>4.1 平台方对甲乙双方的注册申请有审核决定的权利;</p>
|
||||
<p>4.2 平台方享有为维护系统而短暂停止服务的权利,暂停服务之前,平台方将在系统进行通知,甲乙双方应留意公告并做好相应备份工作。</p>
|
||||
<p>4.3 平台方有权根据中国法律法规的调整、行政执法机关的命令和社会伦理道德的变化相应调整在线管理服务的审核标准,甲乙双方不得以类似“以前曾通过汇新云服务审核”的理由要求平台方继续审核通过;</p>
|
||||
<p>4.4 乙方使用服务平台的账号密码所进行的一切操作视为乙方行为。乙方应妥善平台的账号密码,否则由此造成的一切后果由乙方承担;一旦发生安全问题应立即通知平台方以共同采取措施包括但不限于冻结账号等。</p>
|
||||
<p>4.5 平台方有权根据自身需求改变平台服务规则,并在服务平台进行公告;</p>
|
||||
<p>4.6 若乙方超过90天不使用平台账号的,平台方有权屏蔽或注销其账号。</p>
|
||||
<h5 id="h5-5-"><a name="5. 知识产权" className="reference-link"></a><span className="header-link octicon octicon-link"></span>5. 知识产权</h5><p>5.1 本协议所产生成果的知识产权在甲方支付完全部项目款后,归甲方所有,乙方或乙方委托提供服务的第三方保留法律规定禁止转让部分的知识产权,同时保留服务成果用于案例展示、评选的权利。但甲方与乙方另有约定的除外。</p>
|
||||
<p>5.2 乙方应当保证服务成果符合国家法律法规的规定,不存在任何侵犯第三方的所有权、知识产权、名誉权、肖像权等侵权行为,并承担因此产生的全部责任。</p>
|
||||
<p>5.3 甲方的服务需求如需采购第三方知识产权产品的,乙方应当及时告知甲方经甲方书面同意且支付采购费用后,乙方予以采购并使用或由甲方自行采购并提供给乙方使用。</p>
|
||||
<p>5.4 甲方在未付清所有服务费用之前,不得使用服务成果,不得主张服务成果的知识产权。如甲方在未付清服务费用之前自行或许可他人使用(包含但不限于直接使用、修改后使用)乙方提交的服务成果的,导致乙方或者其他第三方遭受损失的,甲方应承担由此产生的全部责任。</p>
|
||||
<p>5.5 甲方应积极就服务成果申请相关知识产权(如有),如发生第三方侵权的,乙方可协助甲方维权,但不对维权结果承担任何责任。</p>
|
||||
<ol>
|
||||
<li>责任限制</li></ol>
|
||||
<p>乙方依照法律规定履行基础保障义务,但对于下述原因导致的合同履行障碍、履行瑕疵、履行延后或履行内容变更等情形,乙方并不承担相应的违约责任:</p>
|
||||
<p>6、因自然灾害、罢工、暴乱、战争、政府行为、司法行政命令等不可抗力因素;</p>
|
||||
<p>6、因电力供应故障、通讯网络故障等公共服务因素或第三人因素;</p>
|
||||
<p>6、在乙方已尽善意管理的情况下,因常规或紧急的设备与系统维护、设备与系统故障、网络信息与数据安全等因素。</p>
|
||||
<ol>
|
||||
<li>违约责任</li></ol>
|
||||
<p>7.1 乙方未按照合同的约定按时提交服务成果的,应向甲方支付合同中规定的违约金。</p>
|
||||
<p>7.2 甲方在服务期间无正当理由单方终止协议的,已支付费用无权要求返还。</p>
|
||||
<p>7.3 乙方在服务期间无正当理由单方终止协议的,所收取的费用应当全部退回给甲方。</p>
|
||||
<p>7.4 甲乙双方应遵守平台规则以及维护平台商业形象以及维护平台方正常运营,若因甲乙双方任何一方的原因给平台方造成损失的,平台方有权追究其责任,要求其支付违约金,并有权冻结其享有的平台账号;若平台方以法律手段维护其权益的,平台方所支付的全部费用,包括但不限于律师费、诉讼费等,全部由违约方承担。</p>
|
||||
<ol>
|
||||
<li>争议解决</li></ol>
|
||||
<p>8.1 因本协议及与本协议有关的争议、解释等,均适用中华人民共和国法律。</p>
|
||||
<p>8.2 本协议签订或履行过程中,如有争议,双方应当友好协商解决;协商不成,双方一致同意提交平台方所在地人民法院解决。</p>
|
||||
<ol>
|
||||
<li>其他</li></ol>
|
||||
<p>9.1 本协议以电子文本形式生成,甲方与乙方完成协议订立手续后,即具有与手写签名同等的法律效力。</p>
|
||||
<p>9.2 本协议中的任何约定如违反法律法规的规定而无效的,该无效条款不影响本协议其他条款的效力,甲方与乙方仍因履行其他条款所约定的权利义务。</p>
|
||||
<p>9.3 本协议内容中以加粗方式显著标识的条款,请着重阅读。甲乙方点击“确认”按钮即视为完全接受本协议,在点击之前请再次确认已知悉并完全理解本协议的全部内容</p>
|
||||
</div>
|
||||
|
||||
<div className="mt5 mb10 pl20 pr20 ml15">
|
||||
<input type="checkbox" name="agreements" value="1" className="magic-checkbox" id="agreements" />
|
||||
<label htmlFor="agreements" className="color-grey-6">我已阅读并同意本电子协议内容</label>
|
||||
</div>
|
||||
</Modal>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
)
|
||||
})
|
||||
)
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) => (
|
||||
<div className="timing_task" key={name}>
|
||||
<div className="mbt10 color-grey-9 lineh-35"><span className="inline-span">{title}</span></div>
|
||||
<Form.Item className="no-label">
|
||||
{getFieldDecorator(name, { rules, initialValue, validateFirst: true, })(widget)}
|
||||
{getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
|
||||
</Form.Item>
|
||||
<span className="days-word color-grey-9 ">天</span>
|
||||
|
||||
{publishMode == 1 && <span>{displayTime}</span>}
|
||||
</div>
|
||||
), []);
|
||||
|
||||
|
@ -438,7 +438,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
<InputNumber
|
||||
onChange={(v) => { changeDate(v, 'collectingDays') }}
|
||||
className="date-input"
|
||||
/>
|
||||
/>,
|
||||
displayTime.collectingTime
|
||||
)}
|
||||
{/* <div className="color-grey-9 format-time-days-1 format-time-day-show">2021-06-16 07:10</div> */}
|
||||
{/* <div className="days-error"><span className="color-red none">成果提交时间不能为空</span></div> */}
|
||||
|
@ -449,7 +450,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
[{ required: true, message: "请输入天数" }],
|
||||
<InputNumber
|
||||
className="date-input"
|
||||
/>
|
||||
/>,
|
||||
displayTime.choosingTime
|
||||
)}
|
||||
|
||||
{helperNoLabel(
|
||||
|
@ -458,7 +460,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
[{ required: true, message: "请输入天数" }],
|
||||
<InputNumber
|
||||
className="date-input"
|
||||
/>
|
||||
/>,
|
||||
displayTime.makePublicTime
|
||||
)}
|
||||
|
||||
{helperNoLabel(
|
||||
|
@ -467,7 +470,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
[{ required: true, message: "请输入天数" }],
|
||||
<InputNumber
|
||||
className="date-input"
|
||||
/>
|
||||
/>,
|
||||
displayTime.signingTime
|
||||
)}
|
||||
|
||||
{helperNoLabel(
|
||||
|
@ -476,7 +480,8 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
[{ required: true, message: "请输入天数" }],
|
||||
<InputNumber
|
||||
className="date-input"
|
||||
/>
|
||||
/>,
|
||||
displayTime.payingTime
|
||||
)}
|
||||
|
||||
<div className="timing_task">
|
||||
|
|
|
@ -101,38 +101,42 @@ export default ({ history, current_user }) => {
|
|||
}
|
||||
|
||||
return (
|
||||
<div className="centerbox">
|
||||
<div className="centerbox" style={{marginTop:'20px'}}>
|
||||
<div className="nav-content">
|
||||
<ChooseNav
|
||||
key={'taskCategory'}
|
||||
type={'taskCategory'}
|
||||
title={'任务领域'}
|
||||
title={'任务领域:'}
|
||||
options={taskCategoryArr}
|
||||
changeOptionId={changeOptionId}
|
||||
size='big'
|
||||
/>
|
||||
|
||||
<ChooseNav
|
||||
key={'taskModeId'}
|
||||
type={'taskModeId'}
|
||||
title={'任务模式'}
|
||||
title={'任务模式:'}
|
||||
options={taskModeIdArr}
|
||||
changeOptionId={changeOptionId}
|
||||
size='big'
|
||||
/>
|
||||
|
||||
<ChooseNav
|
||||
key={'taskTime'}
|
||||
type={'taskTime'}
|
||||
title={'任务时限'}
|
||||
title={'任务时限:'}
|
||||
options={taskTimeArr}
|
||||
changeOptionId={changeOptionId}
|
||||
size='big'
|
||||
/>
|
||||
|
||||
<ChooseNav
|
||||
key={'taskStatus'}
|
||||
type={'taskStatus'}
|
||||
title={'任务状态'}
|
||||
title={'任务状态:'}
|
||||
options={taskStatusArr}
|
||||
changeOptionId={changeOptionId}
|
||||
size='big'
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue