上传成果修改

This commit is contained in:
何童崇 2021-06-28 17:35:05 +08:00
parent 09e81b9e78
commit 6b63cd25aa
7 changed files with 143 additions and 207 deletions

View File

@ -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(() => {

View File

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

View File

@ -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: {

View File

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

View File

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

View File

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

View File

@ -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=&quot;Loading&quot; className=&quot;download-loading&quot; src=&quot;/images/loading.gif?1564989000&quot; ></a>下载中..." target="_blank">一键导出成果物</a> */}
{/* <a href="javascript:notice_box('暂无应征者提交')"><span className="fr color-orange ml20">应征者名单公示 &gt;&gt;</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>