forked from Gitlink/forgeplus-react
上传成果修改
This commit is contained in:
parent
09e81b9e78
commit
6b63cd25aa
|
@ -3,9 +3,7 @@ import classNames from 'classnames';
|
|||
import './index.scss';
|
||||
|
||||
export default memo((props) => {
|
||||
const { title, options, changeOptionId, type ,size} = props;
|
||||
console.log(" --- 组件重新渲染 --- ");
|
||||
|
||||
const { title, options, changeOptionId, type ,size} = props;
|
||||
const [option, setOption] = useState({ code: "", dicItemName: "" ,dicItemCode:""});
|
||||
|
||||
useEffect(() => {
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -79,6 +79,7 @@ export default (props) => {
|
|||
setCommentHtml('');
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
{loading ? <Loading /> :
|
||||
|
@ -122,28 +123,16 @@ export default (props) => {
|
|||
<div class="padding20 fileCommentsList">
|
||||
{item.comments.length > 0 &&
|
||||
item.comments.map(commentsItem => {
|
||||
return <div>
|
||||
<p class="mb5 lineh-20">
|
||||
return <div className="comments-item">
|
||||
<div class="comments-author">
|
||||
<span class="color-grey3 font-bd mr20">{commentsItem.user.nickname || commentsItem.user.login}</span>
|
||||
<span class="color-grey9">大约 3 小时</span>
|
||||
</p>
|
||||
|
||||
<div dangerouslySetInnerHTML={{ __html: commentsItem.details.content }}>
|
||||
<span class="color-grey9">{timeAgo(commentsItem.createdAt)}</span>
|
||||
</div>
|
||||
<div className="editor-w-text comments-content" dangerouslySetInnerHTML={{ __html: commentsItem.details.content }}>
|
||||
</div>
|
||||
</div>
|
||||
})
|
||||
}
|
||||
{/* <ul>
|
||||
<li class="mb5 lineh-20">
|
||||
<span class="color-grey3 font-bd mr20">龙傲天</span>
|
||||
<span class="color-grey9">大约 3 小时</span>
|
||||
</li>
|
||||
<li class="color-grey-6 lineh-20">
|
||||
<div class="paper-detail-content markdown-body editormd-html-preview" id="paper-child-detail-content-194" >
|
||||
<p>短发短发</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul> */}
|
||||
{/* <!-- <a href="javascript:void(0)" class="mt10 mb10 color-blue">查看更多回复>></a>--> */}
|
||||
</div>
|
||||
|
||||
|
@ -165,6 +154,12 @@ export default (props) => {
|
|||
config={
|
||||
{
|
||||
placeholder: "请输入评论",
|
||||
excludeMenus :[
|
||||
'list',
|
||||
'todo',
|
||||
'emoticon',
|
||||
'video'
|
||||
],
|
||||
uploadImgServer: httpUrl + '/busiAttachments/upload',
|
||||
uploadFileName: 'file',
|
||||
uploadImgHeaders: {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.blue_line_btn {
|
||||
color: #4CACFF!important;
|
||||
border: 1px solid #4CACFF;
|
||||
background: #fff!important;
|
||||
color: #4cacff !important;
|
||||
border: 1px solid #4cacff;
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.base_smallBtn {
|
||||
|
@ -18,5 +18,19 @@
|
|||
}
|
||||
|
||||
.fileCommentsList {
|
||||
background: #FAFAFA;
|
||||
background: #fafafa;
|
||||
padding-top: .25rem;
|
||||
}
|
||||
|
||||
.comments-item{
|
||||
margin-top:1rem;
|
||||
}
|
||||
.comments-content {
|
||||
text-align: left;
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
padding: 20px;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { Tabs, Input, Button, Table, Pagination } from 'antd';
|
||||
import { Tabs, Input, } from 'antd';
|
||||
import { Link } from "react-router-dom";
|
||||
import StatusNav from '../../components/statusNav';
|
||||
import ChooseNav from '../../components/chooseNav';
|
||||
import ItemListMyTask from '../components/itemListMyTask';
|
||||
import JoinTask from './joinTask';
|
||||
import { taskStatusAllArr, applyStatusArr, publishModeArr } from '../static';
|
||||
import { getTaskList, getTaskCategory, getMyTaskList, getJoinTaskList } from '../api';
|
||||
import { taskStatusAllArr, publishModeArr } from '../static';
|
||||
import { getTaskCategory, getMyTaskList } from '../api';
|
||||
import './index.scss';
|
||||
const Search = Input.Search;
|
||||
const { TabPane } = Tabs;
|
||||
|
@ -64,7 +63,7 @@ export default ({ location, history, current_user }) => {
|
|||
pageSize: 10,
|
||||
};
|
||||
setLoading(true);
|
||||
getTaskList(params).then(data => {
|
||||
getMyTaskList(params).then(data => {
|
||||
if (data) {
|
||||
setMyTaskList(data.rows);
|
||||
setTotal(data.total);
|
||||
|
@ -75,67 +74,67 @@ export default ({ location, history, current_user }) => {
|
|||
|
||||
|
||||
// const columns = useCallback(()=>{
|
||||
const columns = [
|
||||
{
|
||||
title: '任务',
|
||||
dataIndex: 'name',
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
dataIndex: 'createdAt',
|
||||
render: (text, record) => {
|
||||
return <div className="flex-column">
|
||||
<span className="line_1">{taskCategoryValueArr[record.categoryId]}</span>
|
||||
<span className="line_1">{publishModeArr[record.publishMode]}</span>
|
||||
</div>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '应征投稿',
|
||||
dataIndex: 'papersCount',
|
||||
render: (text) => {
|
||||
return text || 0
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '金额',
|
||||
dataIndex: 'bounty',
|
||||
render: (text) => {
|
||||
return <span className="color-orange">¥{text}</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '任务状态',
|
||||
dataIndex: 'status',
|
||||
render: (text, record) => {
|
||||
return statusArr[text]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (text, record) => (
|
||||
<span>
|
||||
<Link className="line_1 color-grey3" to={`/task/taskDetail/${record.id}`}>查看详情</Link>
|
||||
</span >
|
||||
),
|
||||
},
|
||||
];
|
||||
const columns = [
|
||||
{
|
||||
title: '任务',
|
||||
dataIndex: 'name',
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
dataIndex: 'createdAt',
|
||||
render: (text, record) => {
|
||||
return <div className="flex-column">
|
||||
<span className="line_1">{taskCategoryValueArr[record.categoryId]}</span>
|
||||
<span className="line_1">{publishModeArr[record.publishMode]}</span>
|
||||
</div>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '应征投稿',
|
||||
dataIndex: 'papersCount',
|
||||
render: (text) => {
|
||||
return text || 0
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '金额',
|
||||
dataIndex: 'bounty',
|
||||
render: (text) => {
|
||||
return <span className="color-orange">¥{text}</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '任务状态',
|
||||
dataIndex: 'status',
|
||||
render: (text, record) => {
|
||||
return statusArr[text]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (text, record) => (
|
||||
<span>
|
||||
<Link className="line_1 color-grey3" to={`/task/taskDetail/${record.id}`}>查看详情</Link>
|
||||
</span >
|
||||
),
|
||||
},
|
||||
];
|
||||
// },[taskCategoryValueArr,publishModeArr,statusArr]);
|
||||
|
||||
|
||||
function taskClick(id) {
|
||||
history.push(`/task/taskDetail/${id}`);
|
||||
}
|
||||
|
||||
function changeOptionId(option, type) {
|
||||
const changeOptionId = useCallback((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 changeIdentity(key) {
|
||||
setIdentity(key);
|
||||
|
@ -228,76 +227,9 @@ export default ({ location, history, current_user }) => {
|
|||
|
||||
<TabPane tab="我是创客" key="2">
|
||||
|
||||
<JoinTask
|
||||
taskCategoryValueArr={taskCategoryValueArr}
|
||||
/>
|
||||
|
||||
{/* <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={myTaskList}
|
||||
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={myTaskList}
|
||||
columns={columns}
|
||||
pagination={false}
|
||||
className="mt10"
|
||||
/>
|
||||
{myTaskList.length > 10 &&
|
||||
<Pagination
|
||||
onChange={(page) => { setCurPage(page) }}
|
||||
current={curPage}
|
||||
total={total}
|
||||
/>}
|
||||
</TabPane>
|
||||
</Tabs> */}
|
||||
|
||||
<JoinTask
|
||||
taskCategoryValueArr={taskCategoryValueArr}
|
||||
/>
|
||||
</TabPane>
|
||||
|
||||
</Tabs>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { Tabs, Input, Table, Pagination } from 'antd';
|
||||
import { Tabs, Input, Table, Pagination } from 'antd';
|
||||
import { Link } from "react-router-dom";
|
||||
import ChooseNav from '../../components/chooseNav';
|
||||
import ItemListMyTask from '../components/itemListMyTask';
|
||||
|
@ -19,7 +19,7 @@ for (const item of taskStatusAllArr) {
|
|||
export default ({ taskCategoryValueArr }) => {
|
||||
|
||||
const [paperStatusString, setPaperStatusString] = useState('0,1,2,3,4');
|
||||
const [statusString, setStatusString] = useState('3,4,5,6,7,8');
|
||||
const [taskStatusString, setTaskStatusString] = useState('3,4,5,6,7,8');
|
||||
|
||||
const [requireAchieve, setRequireAchieve] = useState('1');
|
||||
|
||||
|
@ -34,7 +34,7 @@ export default ({ taskCategoryValueArr }) => {
|
|||
useEffect(() => {
|
||||
const params = {
|
||||
paperStatusString,
|
||||
statusString,
|
||||
taskStatusString,
|
||||
searchInput,
|
||||
orderBy,
|
||||
curPage,
|
||||
|
@ -48,7 +48,7 @@ export default ({ taskCategoryValueArr }) => {
|
|||
}
|
||||
setLoading(false);
|
||||
})
|
||||
}, [statusString, searchInput, orderBy, curPage]);
|
||||
}, [paperStatusString, taskStatusString, searchInput, orderBy, curPage]);
|
||||
|
||||
|
||||
// const columns = useCallback(()=>{
|
||||
|
@ -103,20 +103,20 @@ export default ({ taskCategoryValueArr }) => {
|
|||
|
||||
|
||||
|
||||
function changeOptionId(option, type) {
|
||||
const changeOptionId = useCallback((option, type) => {
|
||||
if (type === 'taskStatus') {
|
||||
setStatusString(option.dicItemCode.toString() || '3,4,5,6,7,8');
|
||||
setTaskStatusString(option.dicItemCode.toString() || '3,4,5,6,7,8');
|
||||
} else if (type === 'applyStatus') {
|
||||
setStatusString(option.dicItemCode.toString() || '0,1,2,3,4');
|
||||
setPaperStatusString(option.dicItemCode.toString() || '0,1,2,3,4');
|
||||
}
|
||||
setCurPage(1);
|
||||
}
|
||||
}, [])
|
||||
|
||||
function changeRequireAchieve(key) {
|
||||
if (key === '1') {
|
||||
setPaperStatusString('0,1,2,3,4');
|
||||
} else {
|
||||
setStatusString('3,4,5,6,7,8');
|
||||
setTaskStatusString('3,4,5,6,7,8');
|
||||
setPaperStatusString('0,1,2,3,4');
|
||||
}
|
||||
setCurPage(1);
|
||||
|
|
|
@ -13,7 +13,6 @@ import winpng from '../image/win.png';
|
|||
import './index.scss';
|
||||
const { TextArea } = Input;
|
||||
|
||||
// 如果是开发,那么文件系统默认使用117.50.100.12
|
||||
|
||||
const taskModeNameArr = [];
|
||||
for (const item of taskModeIdArr) {
|
||||
|
@ -39,7 +38,7 @@ const columns = [
|
|||
title: '状态',
|
||||
dataIndex: 'status',
|
||||
render: (text, record) => {
|
||||
return text == 2 ? <img src={winpng} /> : applyStatusAllNameArr[text]
|
||||
return text === 2 ? <img alt="胜出" src={winpng} /> : applyStatusAllNameArr[text]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -50,7 +49,6 @@ const columns = [
|
|||
|
||||
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;
|
||||
|
||||
|
@ -61,12 +59,11 @@ export default Form.create()(
|
|||
const [applyModal, setApplyModal] = useState(false);
|
||||
const [applyContent, setApplyContent] = useState({ title: '应征投稿协议内容', content: agreementContent });
|
||||
const [agreementCheckBox, setAgreementCheckBox] = useState(false);
|
||||
const [signAgreement,setSignAgreement] = 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([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
|
@ -97,7 +94,7 @@ export default Form.create()(
|
|||
// 检查用户是否同意协议
|
||||
useEffect(() => {
|
||||
id && checkAgreement(id).then(res => {
|
||||
if(res&&res.data&&res.data.status==1){
|
||||
if (res && res.data && res.data.status === 1) {
|
||||
setSignAgreement(true);
|
||||
}
|
||||
})
|
||||
|
@ -120,7 +117,7 @@ export default Form.create()(
|
|||
setLoading(true);
|
||||
let params = {
|
||||
taskId: id,
|
||||
orderBy,
|
||||
orderBy: '',
|
||||
pageSize: 10,
|
||||
curPage,
|
||||
status,
|
||||
|
@ -133,6 +130,7 @@ export default Form.create()(
|
|||
}
|
||||
setDataList(data.rows || []);
|
||||
setLoading(false);
|
||||
setTotal(data.total);
|
||||
});
|
||||
}, [id, status, curPage, reload, relaodChildList]);
|
||||
|
||||
|
@ -204,7 +202,9 @@ export default Form.create()(
|
|||
function agreementSign() {
|
||||
agreement(id).then(res => {
|
||||
if (res.message === 'success') {
|
||||
showNotification('已签订协议');
|
||||
Modal.success({
|
||||
content: '签订成功!',
|
||||
});
|
||||
setApplyModal(false);
|
||||
setSignAgreement(true);
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ export default Form.create()(
|
|||
<div className="font-16 font-bd">任务详情:</div>
|
||||
|
||||
{/* 富文本内容插入 */}
|
||||
<div className="content-text" dangerouslySetInnerHTML={{ __html: detailData.description }}></div>
|
||||
<div className="content-text editor-w-text" dangerouslySetInnerHTML={{ __html: detailData.description }}></div>
|
||||
|
||||
{detailData.tasksAttachments && <React.Fragment>
|
||||
<div className="font-16 font-bd">任务文件:</div>
|
||||
|
@ -304,46 +304,43 @@ export default Form.create()(
|
|||
</p>
|
||||
</div>
|
||||
|
||||
{/* {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(
|
||||
"",
|
||||
"content",
|
||||
[{ required: true, message: "请输入" }],
|
||||
<TextArea
|
||||
placeholder="请输入"
|
||||
autoSize={{ minRows: 6 }}
|
||||
className="applyText"
|
||||
/>
|
||||
)}
|
||||
|
||||
<Form.Item >
|
||||
<Upload
|
||||
className="commentStyle"
|
||||
load={UploadFunc}
|
||||
size={50}
|
||||
showNotification={showNotification}
|
||||
actionUrl={httpUrl}
|
||||
fileList={fileList}
|
||||
/>
|
||||
{getFieldDecorator('files', {
|
||||
validateFirst: true
|
||||
})(<Input style={{ display: 'none' }} />)}
|
||||
</Form.Item>
|
||||
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem() }}>提交</Button>
|
||||
</div>
|
||||
{/* } */}
|
||||
{detailData.status === 3 && (signAgreement ?
|
||||
<div className="edu-back-white padding30 mt20">
|
||||
<div className="font-16 font-bd">我要应征投稿:</div>
|
||||
{helper(
|
||||
"",
|
||||
"content",
|
||||
[{ required: true, message: "请输入" }],
|
||||
<TextArea
|
||||
placeholder="请输入"
|
||||
autoSize={{ minRows: 6 }}
|
||||
className="applyText"
|
||||
/>
|
||||
)}
|
||||
<Form.Item >
|
||||
<Upload
|
||||
className="commentStyle"
|
||||
load={UploadFunc}
|
||||
size={50}
|
||||
showNotification={showNotification}
|
||||
actionUrl={httpUrl}
|
||||
fileList={fileList}
|
||||
/>
|
||||
{getFieldDecorator('files', {
|
||||
validateFirst: true
|
||||
})(<Input style={{ display: 'none' }} />)}
|
||||
</Form.Item>
|
||||
<Button className="mr20" type={"primary"} onClick={() => { saveItem() }}>提交</Button>
|
||||
</div> :
|
||||
<div className="edu-back-white padding30 mt20 text-center">
|
||||
<Button className="mr20" type={"primary"} onClick={() => { setApplyModal(true) }}>我要应征投稿</Button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
<div className="applyList edu-back-white padding30 mt20">
|
||||
<div className="font-16 font-bd">交稿(0)<i data-tip-down="不公示应征者姓名" className="iconfont icon-yincang1 color-grey9 font-20"></i>
|
||||
<div className="font-16 font-bd">交稿({dataList.length})<i data-tip-down="不公示应征者姓名" className="iconfont icon-yincang1 color-grey9 font-20"></i>
|
||||
{/* <a href="javascript:void(0)" onclick="upload_proofs_popup(130)" className="line_1 color-blue fr ml20" id="proof-upload-button">上传佐证材料</a> */}
|
||||
{/* <a href="/tasks/130/export_papers" className="line_1 color-blue fr ml20" data-disable-with="<img alt="Loading" className="download-loading" src="/images/loading.gif?1564989000" ></a>下载中..." target="_blank">一键导出成果物</a> */}
|
||||
{/* <a href="javascript:notice_box('暂无应征者提交')"><span className="fr color-orange ml20">应征者名单公示 >></span></a> */}
|
||||
|
@ -395,7 +392,7 @@ export default Form.create()(
|
|||
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" }} dangerouslySetInnerHTML={{ __html: applyContent.content }}></div>
|
||||
<div className="new_li markdown-body editormd-html-preview " id="agreement_content" style={{ boxSizing: "border-box", padding: "0px 20px" }} dangerouslySetInnerHTML={{ __html: applyContent.content }}></div>
|
||||
<div className="mt5 mb10 pl20 pr20 ml15">
|
||||
<Checkbox checked={agreementCheckBox} onChange={(e) => { setAgreementCheckBox(e.target.checked) }}>我已阅读并同意本电子协议内容</Checkbox>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue