Merge branch 'dev_military' of https://code.gitlink.org.cn/Gitlink/forgeplus-react into feature_jk_homepage

This commit is contained in:
何童崇 2021-12-08 13:48:58 +08:00
commit e4005a03b3
21 changed files with 172 additions and 196 deletions

View File

@ -1,7 +1,7 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Upload, Button } from 'antd'; import { Upload, Button } from 'antd';
import { appendFileSizeToUploadFileAll } from 'educoder'; import { appendFileSizeToUploadFileAll } from 'educoder';
import { httpUrl } from '../fetch'; import { httpUrl } from '../task/fetch';
function Uploads({ className, size, actionUrl, fileList, showNotification, load }) { function Uploads({ className, size, actionUrl, fileList, showNotification, load }) {
const [files, setFiles] = useState(undefined); const [files, setFiles] = useState(undefined);

View File

@ -1,4 +1,4 @@
import { httpUrl } from '../fetch'; import { httpUrl } from '../task/fetch';
export const editorConfig = { export const editorConfig = {
placeholder: '请输入', placeholder: '请输入',

View File

@ -1,24 +1,20 @@
import { notification,message } from 'antd'; import { notification} from 'antd';
import axios from 'axios'; import axios from 'axios';
import cookie from 'react-cookies'; import cookie from 'react-cookies';
export const TokenKey = 'autologin_forge_military';
let settings=JSON.parse(localStorage.chromesetting); export default function javaFetch(actionUrl){
let actionUrl = settings.api_urls? settings.api_urls.task :'https://task.osredm.com'; if (window.location.href.indexOf('localhost') < 0) {
if (window.location.href.indexOf('localhost') < 0) { axios.defaults.withCredentials = true;
axios.defaults.withCredentials = true; }
}
export const httpUrl = actionUrl; // 创建axios实例
const service = axios.create({
const TokenKey = 'autologin_forge_military'; baseURL: actionUrl,
timeout: 1800000, // 请求超时时间
// 创建axios实例 });
const service = axios.create({
baseURL: httpUrl, // request拦截器
timeout: 10000, // 请求超时时间
});
// request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
if (cookie.load(TokenKey)) { if (cookie.load(TokenKey)) {
console.log(cookie.load(TokenKey)); console.log(cookie.load(TokenKey));
@ -26,11 +22,11 @@ service.interceptors.request.use(config => {
} }
if (window.location.port === "3007") { if (window.location.port === "3007") {
// 模拟token为登录用户 // 模拟token为登录用户
const taskToken = sessionStorage.taskToken; const osredmToken = sessionStorage.osredmToken;
if (config.url.indexOf('?') === -1) { if (config.url.indexOf('?') === -1) {
config.url = `${config.url}?token=${taskToken}`; config.url = `${config.url}?token=${osredmToken}`;
} else { } else {
config.url = `${config.url}&token=${taskToken}`; config.url = `${config.url}&token=${osredmToken}`;
} }
} }
return config; return config;
@ -110,4 +106,5 @@ service.interceptors.response.use(
} }
); );
export default service; return service;
}

View File

@ -1,114 +1,10 @@
import { notification } from 'antd';
import axios from 'axios'; import javaFetch from '../javaFetch';
import cookie from 'react-cookies';
let settings = JSON.parse(localStorage.chromesetting); let settings=JSON.parse(localStorage.chromesetting);
let actionUrl = settings.api_urls ? settings.api_urls.notice : 'https://info.osredm.com'; let actionUrl = settings.api_urls? settings.api_urls.notice :'https://info.osredm.com';
if (window.location.href.indexOf('localhost')< 0) {
axios.defaults.withCredentials = true; const service = javaFetch(actionUrl);
}
export const httpUrl = actionUrl; export const httpUrl = actionUrl;
export default service;
const TokenKey = 'autologin_forge_military';
// 创建axios实例
const service = axios.create({
baseURL: httpUrl,
timeout: 10000, // 请求超时时间
});
// request拦截器
service.interceptors.request.use(config => {
if (cookie.load(TokenKey)) {
console.log(cookie.load(TokenKey));
config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改
}
if (window.location.port === "3007") {
// 模拟token为登录用户
const taskToken = sessionStorage.taskToken;
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
console.log(error); // for debug
Promise.reject(error);
});
// respone拦截器
service.interceptors.response.use(
response => {
const res = response;
if (res.status === 400) {
notification.open({
message: "提示",
description: res.data.message || '验证失败',
});
return Promise.reject('error');
}
if (res.status === 401) {
notification.open({
message: "提示",
description: res.data.message || '未授权,请登录!',
});
return Promise.reject('error');
}
if (res.status === 403) {
notification.open({
message: "提示",
description: res.data.message || '无权限',
});
return Promise.reject('error');
}
if (res.status === 40001) {
notification.open({
message: "提示",
description: '账户或密码错误!',
});
return Promise.reject('error');
}
if (response.status !== 200 && res.status !== 200) {
notification.open({
message: "提示",
description: res.message,
});
} else {
return response.data;
}
},
error => {
console.log(error);
let res = error.response || {};
if (res.status === 400) {
notification.open({
message: "提示",
description: res.data.message || '操作失败',
});
return Promise.reject('error');
}
if (res.status === 401) {
notification.open({
message: "提示",
description: res.data.message || '登录信息已过期',
});
return Promise.reject('error');
}
if (res.status === 403) {
notification.open({
message: "提示",
description: res.data.message || '无权限!',
});
window.location.href = "/403";
return Promise.reject('error');
}
return Promise.reject(error);
}
);
export default service;

View File

@ -1,6 +1,5 @@
import fetch, { } from '../fetch'; import fetch, { } from './fetch';
import { notification } from 'antd'; import { notification } from 'antd';
import { func } from 'prop-types';
// 获取字典分类列表 // 获取字典分类列表
export function getDictionary(id) { export function getDictionary(id) {
@ -121,10 +120,17 @@ export async function getTaskDetail(id) {
if (res.data) { if (res.data) {
return res.data; return res.data;
} else { } else {
notification.open({ if(res.message&&res.message.indexOf('exist')>-1){
message: "提示", notification.open({
description: res.message || '请求错误', message: "提示",
}); description: "未查到该任务",
});
}else{
notification.open({
message: "提示",
description: res.message || '请求错误',
});
}
} }
} }
@ -147,9 +153,9 @@ export function updateTask(data) {
} }
//删除 //删除
export function deleteTask(id) { export function deleteTask(id, isDelete) {
return fetch({ return fetch({
url: '/api/tasks/' + id, url: '/api/tasks/' + id + '?isDelete=' + isDelete,
method: 'DELETE', method: 'DELETE',
}); });
} }
@ -500,7 +506,7 @@ export async function uploadPayProofList(params) {
} }
// 管理员上传支付凭证 // 管理员上传支付凭证
export function uploadPayProof(data){ export function uploadPayProof(data) {
return fetch({ return fetch({
url: `/api/sign/admin/paper/payment/${data.paperId}`, url: `/api/sign/admin/paper/payment/${data.paperId}`,
method: 'post', method: 'post',
@ -558,7 +564,7 @@ export function delayTask(data) {
return fetch({ return fetch({
url: `/api/tasks/backend/admin/task/delay/${data.taskId}`, url: `/api/tasks/backend/admin/task/delay/${data.taskId}`,
method: 'post', method: 'post',
data:data.params, data: data.params,
}); });
} }

View File

@ -30,7 +30,7 @@ export default props => {
<Menu.Item><a href="/task/payProof">支付报酬凭证上传</a></Menu.Item> <Menu.Item><a href="/task/payProof">支付报酬凭证上传</a></Menu.Item>
</SubMenu> </SubMenu>
<Menu.Item><a href="/task/taskAdmin">创客列表</a></Menu.Item> <Menu.Item><a href="/task/taskAdmin">任务列表</a></Menu.Item>
<Menu.Item><a href="/task/paperManage">创意征集评论</a></Menu.Item> <Menu.Item><a href="/task/paperManage">创意征集评论</a></Menu.Item>
</Menu> </Menu>
}); });
@ -66,7 +66,8 @@ export default props => {
return <Menu> return <Menu>
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/enterprise_authentication`}>企业认证</a></Menu.Item> <Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/enterprise_authentication`}>企业认证</a></Menu.Item>
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/reviews/projects_list`}>开源项目</a></Menu.Item> <Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/reviews/projects_list`}>开源项目</a></Menu.Item>
<Menu.Item><a href="/task/taskManage">统筹任务发布审批</a></Menu.Item> <Menu.Item><a href="/task/taskManage/1">统筹任务发布审批</a></Menu.Item>
<Menu.Item><a href="/task/taskManage/0">自主任务发布审批</a></Menu.Item>
<Menu.Item><a href="/task/paperComplain">成果上传申诉审批</a></Menu.Item> <Menu.Item><a href="/task/paperComplain">成果上传申诉审批</a></Menu.Item>
<Menu.Item><a href="/task/publicityComplain">公示期成果申诉审批</a></Menu.Item> <Menu.Item><a href="/task/publicityComplain">公示期成果申诉审批</a></Menu.Item>
<Menu.Item><a href="/task/agreementManage">协议审批</a></Menu.Item> <Menu.Item><a href="/task/agreementManage">协议审批</a></Menu.Item>

View File

@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata';
import Loading from "src/Loading"; import Loading from "src/Loading";
import { timeAgo, getImageUrl } from 'educoder'; import { timeAgo, getImageUrl } from 'educoder';
import { adminCheckAgreement } from '../../api'; import { adminCheckAgreement } from '../../api';
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../../fetch';
import './index.scss'; import './index.scss';
const { TextArea } = Input; const { TextArea } = Input;

View File

@ -7,7 +7,7 @@ import Upload from 'military/components/Upload';
import ProofModal from '../proofModal'; import ProofModal from '../proofModal';
import { publishModeArr, taskStatusAllArr, myPaperStatusArr } from '../../static'; import { publishModeArr, taskStatusAllArr, myPaperStatusArr } from '../../static';
import { signMethod, uploadAgreeRequire, downAgreement } from "../../api"; import { signMethod, uploadAgreeRequire, downAgreement } from "../../api";
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../../fetch';
import '../../index.scss'; import '../../index.scss';
import './index.scss'; import './index.scss';

View File

@ -9,7 +9,7 @@ import AgreementModal from '../agreementModal';
import ComplainModal from '../complainModal'; import ComplainModal from '../complainModal';
import { reportPaper, thumbUpPaper, commentAdd, confirmReceipt } from '../../api'; import { reportPaper, thumbUpPaper, commentAdd, confirmReceipt } from '../../api';
import { paperCheckStatusArr } from '../../static'; import { paperCheckStatusArr } from '../../static';
import { httpUrl } from '../../../fetch'; import { httpUrl } from '../../fetch';
import winpng from '../../image/winner.png'; import winpng from '../../image/winner.png';
import './index.scss'; import './index.scss';

View File

@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata';
import Loading from "src/Loading"; import Loading from "src/Loading";
import { timeAgo, getImageUrl } from 'educoder'; import { timeAgo, getImageUrl } from 'educoder';
import { checkProof } from '../../api'; import { checkProof } from '../../api';
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../../fetch';
import './index.scss'; import './index.scss';
const { TextArea } = Input; const { TextArea } = Input;

View File

@ -5,7 +5,7 @@ import Nodata from 'forge/Nodata';
import Loading from "src/Loading"; import Loading from "src/Loading";
import { timeAgo, getImageUrl } from 'educoder'; import { timeAgo, getImageUrl } from 'educoder';
import { checkPublicity } from '../../api'; import { checkPublicity } from '../../api';
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../../fetch';
import './index.scss'; import './index.scss';
const { TextArea } = Input; const { TextArea } = Input;

View File

@ -155,6 +155,10 @@ export default (props) => {
<div className="clearfix"></div> <div className="clearfix"></div>
<div className="width100"> <div className="width100">
<span className="with40 fl lineh-35"> <span className="with40 fl lineh-35">
<span className="color-grey-9 fl">发布方式:</span>
<span className="infos_item mr15 fl">{item.publishMode == 1 ? '统筹任务' : '自主提交'}</span>
</span>
<span className="with25 fl lineh-35">
<span className="color-grey-9 fl">所在行业:</span> <span className="color-grey-9 fl">所在行业:</span>
<span className="infos_item" style={{ maxWidth: '100px' }}>{categoryArr[item.categoryId]}</span> <span className="infos_item" style={{ maxWidth: '100px' }}>{categoryArr[item.categoryId]}</span>
</span> </span>
@ -163,6 +167,7 @@ export default (props) => {
<span className="color-grey-9 fl">企业规模:</span> <span className="color-grey-9 fl">企业规模:</span>
<span className="infos_item" style={{ maxWidth: '100px' }}>{scale(item.enterpriseSimple.scale)}</span> <span className="infos_item" style={{ maxWidth: '100px' }}>{scale(item.enterpriseSimple.scale)}</span>
</span>} </span>}
{/* <span className="inline-block lineh-35"> {/* <span className="inline-block lineh-35">
<span className="color-grey-9 fl">所在职位:</span> <span className="color-grey-9 fl">所在职位:</span>
<span className="infos_item">普通员工</span> <span className="infos_item">普通员工</span>

View File

@ -2,7 +2,7 @@ import React, { useEffect, useState, useCallback, useMemo } from 'react';
import { Modal, Table, Form, Input, Button, Pagination } from 'antd'; import { Modal, Table, Form, Input, Button, Pagination } from 'antd';
import Upload from 'military/components/Upload'; import Upload from 'military/components/Upload';
import { readyCheckPapers, proofAdd } from "../../api"; import { readyCheckPapers, proofAdd } from "../../api";
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../../fetch';
import '../../index.scss'; import '../../index.scss';
import './index.scss'; import './index.scss';

View File

@ -0,0 +1,10 @@
import javaFetch from '../javaFetch';
let settings=JSON.parse(localStorage.chromesetting);
let actionUrl = settings.api_urls? settings.api_urls.task :'https://task.osredm.com';
const service = javaFetch(actionUrl);
export const httpUrl = actionUrl;
export default service;

View File

@ -5,7 +5,7 @@ import { Link } from "react-router-dom";
import StatusNav from '../../components/statusNav'; import StatusNav from '../../components/statusNav';
import { complainPaperList, checkComplain } from '../api'; import { complainPaperList, checkComplain } from '../api';
import { paperComplainStatusArr } from '../static'; import { paperComplainStatusArr } from '../static';
import { httpUrl } from 'military/fetch'; import { httpUrl } from '../fetch';
import '../index.scss'; import '../index.scss';

View File

@ -1,10 +1,10 @@
import React, { useCallback, useEffect, useState, useMemo } from 'react'; import React, { useCallback, useEffect, useState, useMemo } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import { Input, Select, Button, Form, DatePicker, Table, Pagination, } from 'antd'; import { Input, Select, Button, Form, DatePicker, Table, Pagination, Modal } from 'antd';
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr ,main_web_site_url} from '../static'; import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr, main_web_site_url } from '../static';
import { getTaskAdminList, changeShowUserMode } from '../api'; import { getTaskAdminList, changeShowUserMode, deleteTask } from '../api';
import '../index.scss'; import '../index.scss';
import './index.scss'; import './index.scss';
const format = "YYYY-MM-DD HH:mm:ss"; const format = "YYYY-MM-DD HH:mm:ss";
@ -23,10 +23,12 @@ for (const item of paperCheckStatusArr) {
export default Form.create()(({ form, showNotification, match, history }) => { export default Form.create()(({ form, showNotification, match, history }) => {
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form; const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
const [reload, setReload] = useState();
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [statusString, setStatusString] = useState(''); const [statusString, setStatusString] = useState('');
const [publishMode, setPublishMode] = useState(''); const [publishMode, setPublishMode] = useState('');
const [showUserMode, setShowUserMode] = useState(''); const [showUserMode, setShowUserMode] = useState('');
const [isDelete, setIsDelete] = useState('0');
const [sort, setSort] = useState('Desc'); const [sort, setSort] = useState('Desc');
const [order, setOrder] = useState('createdAt'); const [order, setOrder] = useState('createdAt');
@ -45,6 +47,7 @@ export default Form.create()(({ form, showNotification, match, history }) => {
curPage, curPage,
pageSize: 10, pageSize: 10,
orderBy: order + sort, orderBy: order + sort,
isDelete,
}; };
setLoading(true); setLoading(true);
getTaskAdminList(params).then(data => { getTaskAdminList(params).then(data => {
@ -54,7 +57,7 @@ export default Form.create()(({ form, showNotification, match, history }) => {
} }
setLoading(false); setLoading(false);
}) })
}, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj]); }, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj, isDelete, reload]);
const helper = useCallback( const helper = useCallback(
@ -101,7 +104,7 @@ export default Form.create()(({ form, showNotification, match, history }) => {
dataIndex: 'name', dataIndex: 'name',
width: "15%", width: "15%",
render: (text, record) => ( render: (text, record) => (
<Link className="line_1 color-grey3" to={`/task/taskDetail/${record.id}`}>{text}</Link> <Link className="line_1 primary-link" target="_blank" to={`/task/taskDetail/${record.id}`} >{text}</Link>
), ),
}, },
{ {
@ -195,18 +198,41 @@ export default Form.create()(({ form, showNotification, match, history }) => {
</Select> </Select>
} }
}, },
// { {
// title: '', title: '操作',
// key: 'action', key: 'action',
// render: (text, record) => ( render: (text, record) => (
// <React.Fragment> <React.Fragment>
// {/* <Button className="mr5 font-12" type="danger" size="small" onClick={() => { deletItem(record.id) }}></Button> */}
// <Link className="line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}></Link> {
// </React.Fragment> isDelete == '0' ? <Button className="mr5 font-12" type="danger" size="small" onClick={() => { deletItem(record.id, '1') }}>隐藏</Button>
// ), : <Button className="mr5 font-12" type="primary" size="small" onClick={() => { deletItem(record.id, '0') }}>恢复</Button>
// }, }
{/* <Link className="line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}>查看</Link> */}
</React.Fragment>
),
},
] ]
}, []); }, [isDelete]);
function deletItem(id, isDelete) {
Modal.confirm({
title: "警告",
content: isDelete == '0' ? "确认恢复该任务吗?恢复后用户可以重新看到该任务!" : "确认隐藏?隐藏后用户无法看到该任务!",
okText: '确定',
cancelText: '取消',
onOk() {
deleteTask(id, isDelete).then(res => {
if (res.message === 'success') {
showNotification('操作成功!');
setReload(Math.random());
}
});
},
});
}
function changeStatus(showUserMode, taskId) { function changeStatus(showUserMode, taskId) {
changeShowUserMode({ changeShowUserMode({
@ -232,13 +258,18 @@ export default Form.create()(({ form, showNotification, match, history }) => {
setCurPage(1); setCurPage(1);
}, []); }, []);
const changeShow = useCallback((isDelete) => {
setIsDelete(isDelete);
setCurPage(1);
})
function downloadFile() { function downloadFile() {
window.open(main_web_site_url + '/admin/tasks.xlsx'); window.open(main_web_site_url + '/admin/tasks.xlsx');
} }
return ( return (
<div className="centerbox task-manage-all "> <div className="centerbox task-manage-all ">
<div className="search-screen" > <div className="search-screen" >
{helper( {helper(
"任务名称", "任务名称",
@ -290,25 +321,40 @@ export default Form.create()(({ form, showNotification, match, history }) => {
</div> </div>
</div> </div>
<Form.Item className="inline-form" label="排序"> <div className="select-box">
<Select <Form.Item className="inline-form" label="显示状态">
style={{ width: '200px' }} <Select
showArrow style={{ width: '200px' }}
onChange={changeSortName} showArrow
defaultValue='createdAt' onChange={changeShow}
> defaultValue='0'
<Option key={'createdAt'} >创建时间</Option> >
<Option key={'publishedAt'} >发布时间</Option> <Option key={'0'} >正常显示默认</Option>
</Select> <Option key={'1'} >已隐藏</Option>
</Select>
</Form.Item>
<span className={classNames({ "sort-active": sort === 'Desc', 'sort-icon': true, 'ml10': true })} onClick={() => { changeSort('Desc') }}> <Form.Item className="inline-form" label="排序">
<i className="fa fa-long-arrow-down font-16 "></i> <Select
</span> style={{ width: '200px' }}
<span className={classNames({ "sort-active": sort === 'Asc', 'sort-icon': true })} onClick={() => { changeSort('Asc') }}> showArrow
<i className="fa fa-long-arrow-up font-16 "></i> onChange={changeSortName}
</span> defaultValue='createdAt'
>
<Option key={'createdAt'} >创建时间</Option>
<Option key={'publishedAt'} >发布时间</Option>
</Select>
<span className={classNames({ "sort-active": sort === 'Desc', 'sort-icon': true, 'ml10': true })} onClick={() => { changeSort('Desc') }}>
<i className="fa fa-long-arrow-down font-16 "></i>
</span>
<span className={classNames({ "sort-active": sort === 'Asc', 'sort-icon': true })} onClick={() => { changeSort('Asc') }}>
<i className="fa fa-long-arrow-up font-16 "></i>
</span>
</Form.Item>
</div>
</Form.Item>

View File

@ -44,6 +44,16 @@
padding: 1rem 0.2rem; padding: 1rem 0.2rem;
text-align: center; text-align: center;
} }
a.primary-link {
color: #1890ff;
}
.select-box{
display: flex;
justify-content: space-between;
}
} }
.inline-form { .inline-form {

View File

@ -59,7 +59,7 @@ const AdminPage = (propsF) => {
<Switch {...propsF}> <Switch {...propsF}>
{/* 任务管理审核 */} {/* 任务管理审核 */}
<Route <Route
path="/task/taskManage" path="/task/taskManage/:publishMode"
render={(props) => ( render={(props) => (
<TaskManage {...propsF} {...props} /> <TaskManage {...propsF} {...props} />
)} )}

View File

@ -10,7 +10,7 @@ import ItemListPaper from '../components/itemListPaper';
import ProofModal from '../components/proofModal'; import ProofModal from '../components/proofModal';
import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper } from '../api'; import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper } from '../api';
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr } from '../static'; import { taskModeIdArr, applyStatusArr, applyStatusAllArr, agreementContent, paperCheckTextArr } from '../static';
import { httpUrl } from '../../fetch'; import { httpUrl } from '../fetch';
import './index.scss'; import './index.scss';
const { TextArea } = Input; const { TextArea } = Input;
@ -53,7 +53,6 @@ export default Form.create()(
const [visibleProofs, setVisibleProofs] = useState(false); const [visibleProofs, setVisibleProofs] = useState(false);
// //
useEffect(() => { useEffect(() => {
getTaskCategory().then(data => { getTaskCategory().then(data => {
@ -70,8 +69,11 @@ export default Form.create()(
// //
useEffect(() => { useEffect(() => {
id && getTaskDetail(id).then(data => { id && getTaskDetail(id).then(data => {
if(!data){
history.push('/task');
}
setDetailData(data || {}); setDetailData(data || {});
}) });
}, [id, reload]); }, [id, reload]);
// //

View File

@ -5,7 +5,7 @@ import moment from 'moment';
import ReactWEditor from 'wangeditor-for-react'; import ReactWEditor from 'wangeditor-for-react';
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import Upload from '../../components/Upload'; import Upload from '../../components/Upload';
import { httpUrl } from '../../fetch'; import { httpUrl } from '../fetch';
import { getTaskDetail, addTask, updateTask, getTaskCategory, getCompanyInfo } from '../api'; import { getTaskDetail, addTask, updateTask, getTaskCategory, getCompanyInfo } from '../api';
import { formItemLayout, formModalLayout } from '../static'; import { formItemLayout, formModalLayout } from '../static';
import { editorConfig } from '../../components/config'; import { editorConfig } from '../../components/config';

View File

@ -1,4 +1,4 @@
import React, { useCallback, forwardRef, useEffect, useState } from 'react'; import React, { useCallback, useEffect, useState } from 'react';
import { Input, Button, Form } from 'antd'; import { Input, Button, Form } from 'antd';
import ItemTaskManage from '../components/itemTaskManage'; import ItemTaskManage from '../components/itemTaskManage';
import StatusNav from '../../components/statusNav'; import StatusNav from '../../components/statusNav';
@ -6,7 +6,9 @@ import { approveArr, main_web_site_url } from '../static';
import { getTaskAdminList, getTaskCategory } from '../api'; import { getTaskAdminList, getTaskCategory } from '../api';
import '../index.scss'; import '../index.scss';
export default Form.create()(({ current_user, form, showNotification, match, history }) => { export default Form.create()(({ form, showNotification, match, history }) => {
const publishMode = match.params.publishMode;
const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form; const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form;
const [categoryArr, setCategoryArr] = useState([]); const [categoryArr, setCategoryArr] = useState([]);
@ -20,6 +22,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
const [reload, setReload] = useState(0); const [reload, setReload] = useState(0);
useEffect(() => { useEffect(() => {
getTaskCategory().then(data => { getTaskCategory().then(data => {
if (data) { if (data) {
@ -39,7 +42,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
orderBy: 'createdAtDesc', orderBy: 'createdAtDesc',
curPage, curPage,
pageSize: 10, pageSize: 10,
publishMode: 1 publishMode: publishMode || 1
}; };
setLoading(true); setLoading(true);
getTaskAdminList(params).then(data => { getTaskAdminList(params).then(data => {