forked from Gitlink/forgeplus-react
上传协议部分及bug修改
This commit is contained in:
parent
701d9dfc99
commit
1e7df569e6
|
@ -1,6 +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';
|
||||||
|
|
||||||
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);
|
||||||
|
@ -30,7 +31,20 @@ function Uploads({ className, size, actionUrl, fileList, showNotification, load
|
||||||
return itemId !== id;
|
return itemId !== id;
|
||||||
});
|
});
|
||||||
setFiles(nf);
|
setFiles(nf);
|
||||||
load && load(nf);
|
backFiles(nf);
|
||||||
|
}
|
||||||
|
|
||||||
|
function backFiles(fileList) {
|
||||||
|
if (fileList && fileList.length) {
|
||||||
|
let filesId = [];
|
||||||
|
for (const item of fileList) {
|
||||||
|
if (item) {
|
||||||
|
let itemId = (item.response && item.response.data && item.response.data.id) || item.id;
|
||||||
|
itemId && filesId.push(itemId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
load && load(fileList, filesId.join());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +58,7 @@ function Uploads({ className, size, actionUrl, fileList, showNotification, load
|
||||||
fileList.splice(i, 1);
|
fileList.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
load && load(fileList);
|
backFiles(fileList);
|
||||||
if (!info.file.response.data) {
|
if (!info.file.response.data) {
|
||||||
info.file.response && showNotification(info.file.response.message)
|
info.file.response && showNotification(info.file.response.message)
|
||||||
}
|
}
|
||||||
|
@ -63,7 +77,7 @@ function Uploads({ className, size, actionUrl, fileList, showNotification, load
|
||||||
const upload = {
|
const upload = {
|
||||||
name: 'file',
|
name: 'file',
|
||||||
fileList: files,
|
fileList: files,
|
||||||
action: actionUrl + `/busiAttachments/upload`,
|
action: (httpUrl || actionUrl) + `/busiAttachments/upload`,
|
||||||
onChange: handleChange,
|
onChange: handleChange,
|
||||||
onRemove: onAttachmentRemove,
|
onRemove: onAttachmentRemove,
|
||||||
beforeUpload: beforeUpload,
|
beforeUpload: beforeUpload,
|
||||||
|
|
|
@ -56,6 +56,11 @@ const PublicityComplain = Loadable({
|
||||||
loading: Loading,
|
loading: Loading,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const AgreementManage = Loadable({
|
||||||
|
loader: () => import("./task/agreementManage"),
|
||||||
|
loading: Loading,
|
||||||
|
});
|
||||||
|
|
||||||
const Index = (propsTransmit) => {
|
const Index = (propsTransmit) => {
|
||||||
// 开发时,从代理的位置获取用户信息
|
// 开发时,从代理的位置获取用户信息
|
||||||
const [currentUser, setCurrentUser] = useState(null);
|
const [currentUser, setCurrentUser] = useState(null);
|
||||||
|
@ -148,6 +153,14 @@ const Index = (propsTransmit) => {
|
||||||
)}
|
)}
|
||||||
></Route>
|
></Route>
|
||||||
|
|
||||||
|
{/* 协议审核 */}
|
||||||
|
<Route
|
||||||
|
path="/task/agreementManage"
|
||||||
|
render={(props) => (
|
||||||
|
<AgreementManage {...propsF} {...props} />
|
||||||
|
)}
|
||||||
|
></Route>
|
||||||
|
|
||||||
{/* 成果列表 */}
|
{/* 成果列表 */}
|
||||||
<Route
|
<Route
|
||||||
path="/task"
|
path="/task"
|
||||||
|
|
|
@ -0,0 +1,153 @@
|
||||||
|
import React, { useCallback, forwardRef, useEffect, useState } from 'react';
|
||||||
|
import { Input, Button, Form } from 'antd';
|
||||||
|
import ItemAgreementManage from '../components/itemAgreementManage';
|
||||||
|
import StatusNav from '../../components/statusNav';
|
||||||
|
import { agreementArr } from '../static';
|
||||||
|
import { agreementList } from '../api';
|
||||||
|
import '../index.scss';
|
||||||
|
|
||||||
|
agreementArr.splice(1,1);
|
||||||
|
export default Form.create()(({ current_user, form, showNotification, match, history }) => {
|
||||||
|
const { getFieldDecorator, validateFields, setFieldsValue, getFieldsValue } = form;
|
||||||
|
|
||||||
|
const [approve, setApprove] = useState(1);
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
const [searchObj, setSearchObj] = useState({});
|
||||||
|
const [status, setStatus] = useState('1');
|
||||||
|
const [curPage, setCurPage] = useState(1);
|
||||||
|
const [total, setTotal] = useState(0);
|
||||||
|
const [taskList, setTaskList] = useState([]);
|
||||||
|
|
||||||
|
const [reload, setReload] = useState(0);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const params = {
|
||||||
|
...searchObj,
|
||||||
|
status,
|
||||||
|
type:'',
|
||||||
|
currentPage:curPage,
|
||||||
|
pageSize: 10,
|
||||||
|
};
|
||||||
|
setLoading(true);
|
||||||
|
agreementList(params).then(data => {
|
||||||
|
if (data) {
|
||||||
|
setTaskList(data.rows);
|
||||||
|
setTotal(data.total);
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
})
|
||||||
|
}, [reload, status, curPage, searchObj]);
|
||||||
|
|
||||||
|
|
||||||
|
const helper = useCallback(
|
||||||
|
(name, rules, widget) => (
|
||||||
|
<Form.Item>
|
||||||
|
{getFieldDecorator(name, { rules, validateFirst: true, })(widget)}
|
||||||
|
</Form.Item>
|
||||||
|
), []);
|
||||||
|
|
||||||
|
|
||||||
|
function onSearch() {
|
||||||
|
validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
setSearchObj(values);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeOptionId = useCallback((option) => {
|
||||||
|
setStatus(option.dicItemCode.toString() || '0,2');
|
||||||
|
setCurPage(1);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
function changeApprove(approve) {
|
||||||
|
setApprove(approve);
|
||||||
|
setCurPage(1);
|
||||||
|
if (approve === 1) {
|
||||||
|
setStatus('1');
|
||||||
|
} else {
|
||||||
|
setStatus('0,2');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearSearch() {
|
||||||
|
setFieldsValue({
|
||||||
|
numberInput: '',
|
||||||
|
nameInput: '',
|
||||||
|
enterpriseNameInput: ''
|
||||||
|
});
|
||||||
|
setSearchObj({});
|
||||||
|
}
|
||||||
|
|
||||||
|
const reloadList = useCallback(() => {
|
||||||
|
setReload(reload + 1);
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="centerbox task-manage">
|
||||||
|
|
||||||
|
<div className="center-screen" >
|
||||||
|
<div className="center-left-but">
|
||||||
|
<Button className="circle-button" type={approve === 1 ? 'primary' : ''} onClick={() => { changeApprove(1) }}>待审批</Button>
|
||||||
|
<Button className="circle-button" type={approve === 2 ? 'primary' : ''} onClick={() => { changeApprove(2) }}>已审批</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="center-right-but">
|
||||||
|
{helper(
|
||||||
|
"numberInput",
|
||||||
|
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||||
|
<Input
|
||||||
|
placeholder="输入任务编号进行检索"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{helper(
|
||||||
|
"nameInput",
|
||||||
|
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||||
|
<Input
|
||||||
|
placeholder="输入任务名称进行检索"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{helper(
|
||||||
|
"enterpriseNameInput",
|
||||||
|
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||||
|
<Input
|
||||||
|
placeholder="输入发布主体名称进行检索"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Button className="mr10" type="primary" onClick={onSearch}>搜索</Button>
|
||||||
|
<Button className="mr10" type="" onClick={clearSearch}>清除</Button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="center-content">
|
||||||
|
|
||||||
|
{
|
||||||
|
approve === 2 && <StatusNav
|
||||||
|
key={'status'}
|
||||||
|
type={'status'}
|
||||||
|
options={agreementArr}
|
||||||
|
changeOptionId={changeOptionId}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
<ItemAgreementManage
|
||||||
|
list={taskList}
|
||||||
|
curPage={curPage}
|
||||||
|
total={total}
|
||||||
|
changePage={(page) => { setCurPage(page) }}
|
||||||
|
loading={loading}
|
||||||
|
showNotification={showNotification}
|
||||||
|
reloadList={reloadList}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
|
@ -409,11 +409,64 @@ export function checkPublicity(data){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 选择签订协议的方式
|
||||||
export function signMethod(data) {
|
export function signMethod(data) {
|
||||||
return fetch({
|
return fetch({
|
||||||
url: `/api/sign/method/${data.taskId}/${data.method}`,
|
url: `/api/sign/method/${data.taskId}/${data.method}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// data,
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传委托协议
|
||||||
|
export function uploadAgreeRequire(data) {
|
||||||
|
return fetch({
|
||||||
|
url: `/api/sign/task/contract/${data.taskId}`,
|
||||||
|
method: 'post',
|
||||||
|
data: data.params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审核委托协议列表
|
||||||
|
export async function agreementList(params) {
|
||||||
|
let res = await fetch({
|
||||||
|
url: '/api/sign/task/contract',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
if (res.data) {
|
||||||
|
return res.data;
|
||||||
|
} else {
|
||||||
|
notification.open({
|
||||||
|
message: "提示",
|
||||||
|
description: res.message || '请求错误',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审核协议
|
||||||
|
export function adminCheckAgreement(data) {
|
||||||
|
return fetch({
|
||||||
|
url: `/api/sign/admin/${data.type === 1 ? 'task' : 'paper'}/contract/${data.agreementId}`,
|
||||||
|
method: 'post',
|
||||||
|
data: data.params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 上传委托协议
|
||||||
|
export function uploadAgreePaper(data) {
|
||||||
|
return fetch({
|
||||||
|
url: `/api/sign/paper/contract/${data.paperId}`,
|
||||||
|
method: 'post',
|
||||||
|
data: data.params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 胜出者确认收款
|
||||||
|
export function confirmReceipt(paperId) {
|
||||||
|
return fetch({
|
||||||
|
url: `/api/sign/paper/money/${paperId}`,
|
||||||
|
method: 'post',
|
||||||
});
|
});
|
||||||
}
|
}
|
|
@ -1,14 +1,13 @@
|
||||||
import React, { useEffect, useState, useCallback, useMemo } from 'react';
|
import React, { useEffect, useState, useCallback, useMemo } from 'react';
|
||||||
import { Modal, Form, Input, } from 'antd';
|
import { Modal, Form, Input, } from 'antd';
|
||||||
import Upload from 'military/components/Upload';
|
import Upload from 'military/components/Upload';
|
||||||
import { uploadAgreePaper } from "../../api";
|
import { complainPaper, publicityComplain, } from "../../api";
|
||||||
import { httpUrl } from 'military/fetch';
|
|
||||||
import '../../index.scss';
|
import '../../index.scss';
|
||||||
|
|
||||||
const { TextArea } = Input;
|
const { TextArea } = Input;
|
||||||
|
|
||||||
export default Form.create()(props => {
|
export default Form.create()(props => {
|
||||||
const { visible, setVisible, paperId, form, showNotification, reloadList } = props;
|
const { visible, setVisible, checkedItem, detailStatus, form, showNotification, reloadList } = props;
|
||||||
const { getFieldDecorator, validateFields, setFieldsValue, } = form;
|
const { getFieldDecorator, validateFields, setFieldsValue, } = form;
|
||||||
|
|
||||||
const [fileList, setFileList] = useState([]);
|
const [fileList, setFileList] = useState([]);
|
||||||
|
@ -22,29 +21,6 @@ export default Form.create()(props => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadAgree() {
|
|
||||||
validateFields((err, values) => {
|
|
||||||
if (!err) {
|
|
||||||
uploadAgreePaper({
|
|
||||||
paperId,
|
|
||||||
params: {
|
|
||||||
files: values.files,
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
if (res.message === 'success') {
|
|
||||||
setFieldsValue({
|
|
||||||
files: '',
|
|
||||||
});
|
|
||||||
setVisible(false);
|
|
||||||
showNotification("上传协议成功!");
|
|
||||||
} else {
|
|
||||||
showNotification(res.message || "上传协议失败")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const helper = useCallback(
|
const helper = useCallback(
|
||||||
(name, rules, widget) => (
|
(name, rules, widget) => (
|
||||||
<Form.Item>
|
<Form.Item>
|
||||||
|
@ -56,28 +32,39 @@ export default Form.create()(props => {
|
||||||
|
|
||||||
function complain() {
|
function complain() {
|
||||||
validateFields((error, values) => {
|
validateFields((error, values) => {
|
||||||
// if (!error) {
|
if (!error) {
|
||||||
// if (detailStatus === 5) {
|
if (detailStatus === 5) {
|
||||||
// publicityComplain({
|
publicityComplain({
|
||||||
// content: values.complainValue,
|
content: values.complainValue,
|
||||||
// files: values.files,
|
files: values.files,
|
||||||
// paperId: checkedItem.id,
|
paperId: checkedItem.id,
|
||||||
// }).then(res => {
|
}).then(res => {
|
||||||
// complainDeal(res);
|
complainDeal(res);
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
// complainPaper({
|
|
||||||
// paperId: checkedItem.id,
|
|
||||||
// params: {
|
|
||||||
// content: values.complainValue,
|
|
||||||
// files: values.files,
|
|
||||||
// }
|
|
||||||
// }).then(res => {
|
|
||||||
// complainDeal(res);
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
complainPaper({
|
||||||
|
paperId: checkedItem.id,
|
||||||
|
params: {
|
||||||
|
content: values.complainValue,
|
||||||
|
files: values.files,
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
|
complainDeal(res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function complainDeal(res) {
|
||||||
|
if (res && res.message === 'success') {
|
||||||
|
showNotification('申诉提交成功');
|
||||||
|
setVisible(false);
|
||||||
|
setFileList(null);
|
||||||
|
setFieldsValue({
|
||||||
|
files: ''
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +76,7 @@ export default Form.create()(props => {
|
||||||
onCancel={() => { setVisible(false) }}
|
onCancel={() => { setVisible(false) }}
|
||||||
className="form-edit-modal"
|
className="form-edit-modal"
|
||||||
>
|
>
|
||||||
<div className="task-popup-content">
|
{checkedItem.checkStatus === 2 && detailStatus === 3 && <p className=" mb10 color-orange task_tip">审核意见:{checkedItem.auditing.message}</p>}
|
||||||
<p className="edu-txt-center lineh-20 mb10">你的申诉信息将发送给平台管理员</p>
|
<p className="edu-txt-center lineh-20 mb10">你的申诉信息将发送给平台管理员</p>
|
||||||
<p className="edu-txt-center lineh-20">请如实填写有效的申诉原由,我们将尽快完成审核</p>
|
<p className="edu-txt-center lineh-20">请如实填写有效的申诉原由,我们将尽快完成审核</p>
|
||||||
{
|
{
|
||||||
|
@ -116,7 +103,6 @@ export default Form.create()(props => {
|
||||||
validateFirst: true
|
validateFirst: true
|
||||||
})(<Input style={{ display: 'none' }} />)}
|
})(<Input style={{ display: 'none' }} />)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</div>
|
|
||||||
</Modal>
|
</Modal>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ export default Form.create()((props) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
item.status === 4 && item.papersCount > 0 && (!item.isProofBoolean) &&
|
(item.status === 3 || item.status === 4) && item.papersCount > 0 && (!item.isProofBoolean) &&
|
||||||
<a onClick={() => { uploadProofs(item) }} className="line_1 color-blue">上传佐证材料</a>
|
<a onClick={() => { uploadProofs(item) }} className="line_1 color-blue">上传佐证材料</a>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ import { timeAgo } from 'educoder';
|
||||||
import Nodata from 'forge/Nodata';
|
import Nodata from 'forge/Nodata';
|
||||||
import Loading from "src/Loading";
|
import Loading from "src/Loading";
|
||||||
import { editorConfig } from 'military/components/config';
|
import { editorConfig } from 'military/components/config';
|
||||||
import Upload from 'military/components/Upload';
|
|
||||||
import AgreementModal from '../agreementModal';
|
import AgreementModal from '../agreementModal';
|
||||||
import { reportPaper, thumbUpPaper, commentAdd, complainPaper, publicityComplain, confirmReceipt } from '../../api';
|
import ComplainModal from '../complainModal';
|
||||||
|
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';
|
||||||
|
@ -33,7 +33,6 @@ export default Form.create()((props) => {
|
||||||
const [commentId, setCommentId] = useState(undefined);
|
const [commentId, setCommentId] = useState(undefined);
|
||||||
|
|
||||||
const [complainVisible, setComplainVisible] = useState(false);
|
const [complainVisible, setComplainVisible] = useState(false);
|
||||||
const [fileList, setFileList] = useState(null);
|
|
||||||
|
|
||||||
const [loadingChild, setLoadingChild] = useState(false);
|
const [loadingChild, setLoadingChild] = useState(false);
|
||||||
|
|
||||||
|
@ -113,49 +112,6 @@ export default Form.create()((props) => {
|
||||||
window.location.href = `/users/${login}`;
|
window.location.href = `/users/${login}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function complain() {
|
|
||||||
validateFields((error, values) => {
|
|
||||||
if (!error) {
|
|
||||||
if (detailStatus === 5) {
|
|
||||||
publicityComplain({
|
|
||||||
content: values.complainValue,
|
|
||||||
files: values.files,
|
|
||||||
paperId: checkedItem.id,
|
|
||||||
}).then(res => {
|
|
||||||
complainDeal(res);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
complainPaper({
|
|
||||||
paperId: checkedItem.id,
|
|
||||||
params: {
|
|
||||||
content: values.complainValue,
|
|
||||||
files: values.files,
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
complainDeal(res);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function complainDeal(res) {
|
|
||||||
if (res && res.message === 'success') {
|
|
||||||
showNotification('申诉提交成功');
|
|
||||||
setComplainVisible(false);
|
|
||||||
setFileList(null);
|
|
||||||
setFieldsValue({
|
|
||||||
files: ''
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadFunc(fileList, files) {
|
|
||||||
setFileList(fileList);
|
|
||||||
setFieldsValue({
|
|
||||||
files: files,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function confirmReceiptModal(paperId) {
|
function confirmReceiptModal(paperId) {
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
|
@ -310,44 +266,13 @@ export default Form.create()((props) => {
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
<ComplainModal
|
||||||
<Modal
|
|
||||||
title="申诉"
|
|
||||||
visible={complainVisible}
|
visible={complainVisible}
|
||||||
onOk={complain}
|
setVisible={setComplainVisible}
|
||||||
onCancel={() => { setComplainVisible(false) }}
|
checkedItem={checkedItem}
|
||||||
className="form-edit-modal"
|
detailStatus={detailStatus}
|
||||||
>
|
|
||||||
<div className="task-popup-content">
|
|
||||||
<p className="edu-txt-center lineh-20 mb10">你的申诉信息将发送给平台管理员</p>
|
|
||||||
<p className="edu-txt-center lineh-20">请如实填写有效的申诉原由,我们将尽快完成审核</p>
|
|
||||||
{
|
|
||||||
helper('complainValue', [{ required: complainVisible, message: "(必填)请在此输入发起申诉的原因,最大限制100个字符" },
|
|
||||||
{ max: 100, message: '长度不能超过100个字符' }],
|
|
||||||
<TextArea
|
|
||||||
placeholder="(必填)请在此输入发起申诉的原因,最大限制100个字符"
|
|
||||||
autoSize={{ minRows: 6 }}
|
|
||||||
className="applyText"
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
<Form.Item className="upload-form" label="附件上传" required={true}>
|
|
||||||
<Upload
|
|
||||||
className="commentStyle"
|
|
||||||
load={uploadFunc}
|
|
||||||
size={50}
|
|
||||||
showNotification={showNotification}
|
showNotification={showNotification}
|
||||||
fileList={fileList}
|
|
||||||
/>
|
/>
|
||||||
{getFieldDecorator('files', {
|
|
||||||
rules: [{ required: complainVisible, message: "请上传文件" }],
|
|
||||||
validateFirst: true
|
|
||||||
})(<Input style={{ display: 'none' }} />)}
|
|
||||||
</Form.Item>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
|
||||||
|
|
||||||
|
|
||||||
{agreeVisible && <AgreementModal
|
{agreeVisible && <AgreementModal
|
||||||
paperId={checkedItem.id}
|
paperId={checkedItem.id}
|
||||||
|
|
|
@ -119,6 +119,7 @@ export default Form.create()(props => {
|
||||||
function proofItem() {
|
function proofItem() {
|
||||||
if (!selectedRows.length) {
|
if (!selectedRows.length) {
|
||||||
showNotification("请至少选择一条数据!");
|
showNotification("请至少选择一条数据!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
validateFields((err, values) => {
|
validateFields((err, values) => {
|
||||||
|
@ -210,6 +211,7 @@ export default Form.create()(props => {
|
||||||
fileList={fileList}
|
fileList={fileList}
|
||||||
/>
|
/>
|
||||||
{getFieldDecorator('files', {
|
{getFieldDecorator('files', {
|
||||||
|
rules: [{ required: visible, message: "请上传文件" }],
|
||||||
validateFirst: true
|
validateFirst: true
|
||||||
})(<Input style={{ display: 'none' }} />)}
|
})(<Input style={{ display: 'none' }} />)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
|
@ -28,4 +28,7 @@
|
||||||
.ant-form-item{
|
.ant-form-item{
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
.upload-form .ant-form-item-label{
|
||||||
|
padding-top:.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,23 +23,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-form-item-control-wrapper {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.ant-select {
|
.ant-select {
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
.ant-table-thead th {
|
.ant-table-thead th {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
&:first-child {
|
// &:first-child {
|
||||||
text-align: left;
|
// text-align: left;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
td {
|
td {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #333;
|
color: #333;
|
||||||
&:first-child {
|
&:first-child {
|
||||||
text-align: left;
|
// text-align: left;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,5 +66,11 @@
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// .ant-form-item-control-wrapper {
|
||||||
|
// display: inline-block;
|
||||||
|
// }
|
||||||
|
|
||||||
|
.upload-form{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,18 @@ import { Input, Button, Radio, Form, Table, Pagination, Modal } from 'antd';
|
||||||
import { Link } from "react-router-dom";
|
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 { paperCheckStatusArr } from '../static';
|
import { paperComplainStatusArr } from '../static';
|
||||||
import { httpUrl } from 'military/fetch';
|
import { httpUrl } from 'military/fetch';
|
||||||
|
|
||||||
import '../index.scss';
|
import '../index.scss';
|
||||||
|
|
||||||
const TextArea = Input.TextArea;
|
const TextArea = Input.TextArea;
|
||||||
|
|
||||||
const proofArrCheck = paperCheckStatusArr.slice(1);
|
const paperComplainStatus = [];
|
||||||
|
for (const item of paperComplainStatusArr) {
|
||||||
|
paperComplainStatus[item.dicItemCode] = item.dicItemName;
|
||||||
|
}
|
||||||
|
const paperComplain = paperComplainStatusArr.slice(0, 2);
|
||||||
|
|
||||||
export default Form.create()(({ current_user, form, showNotification, match, }) => {
|
export default Form.create()(({ current_user, form, showNotification, match, }) => {
|
||||||
|
|
||||||
|
@ -26,7 +30,7 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
const [reload, setReload] = useState(0);
|
const [reload, setReload] = useState(0);
|
||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
const [activeId, setActiveId] = useState('');
|
const [activeId, setActiveId] = useState('');
|
||||||
const [status, setStatus] = useState('0');
|
const [status, setStatus] = useState('2');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const params = {
|
const params = {
|
||||||
|
@ -76,9 +80,9 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
setApprove(approve);
|
setApprove(approve);
|
||||||
setCurPage(1);
|
setCurPage(1);
|
||||||
if (approve === 1) {
|
if (approve === 1) {
|
||||||
setStatus('0');
|
setStatus('2');
|
||||||
} else {
|
} else {
|
||||||
setStatus('1,2');
|
setStatus('0,1');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,16 +93,13 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
|
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
// {
|
{
|
||||||
// title: '来源任务',
|
title: '序号',
|
||||||
// dataIndex: 'name',
|
dataIndex: 'index',
|
||||||
// width: "20%",
|
render: (text, record, index) => {
|
||||||
// render: (text, record) => (
|
return index + 1
|
||||||
// <span>
|
}
|
||||||
// <Link className="line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}>{text}</Link>
|
},
|
||||||
// </span >
|
|
||||||
// ),
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
title: '申诉内容',
|
title: '申诉内容',
|
||||||
dataIndex: 'content',
|
dataIndex: 'content',
|
||||||
|
@ -124,32 +125,31 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '评论/提交者',
|
title: '提交者',
|
||||||
dataIndex: 'user',
|
dataIndex: 'user',
|
||||||
render: (text, record) => {
|
render: (text, record) => {
|
||||||
return record.user.nickname || record.user.login
|
return record.user.nickname || record.user.login
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '评论/提交时间',
|
title: '提交时间',
|
||||||
dataIndex: 'createdAt',
|
dataIndex: 'createdAt',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '审核状态',
|
title: '审核状态',
|
||||||
dataIndex: 'verifyStatus',
|
dataIndex: 'status',
|
||||||
render: (text, record) => {
|
render: (text, record) => {
|
||||||
return text ? '通过' : '未通过'
|
return text !== 2 ? paperComplainStatus[text] : <React.Fragment>
|
||||||
|
<Button className="mr5 font-12" type="primary" size="small" onClick={() => { checkPaperItem(record.id, 1) }}>通过</Button>
|
||||||
|
<Button className="mr5 font-12" type="info" size="small" onClick={() => { setActiveId(record.id); setVisible(true) }}>不通过</Button>
|
||||||
|
</React.Fragment>
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
render: (text, record) => (
|
render: (text, record) => (
|
||||||
<React.Fragment>
|
<Link className="line_1 color-grey3" to={`/task/taskDetail/${record.taskId}`}>查看详情</Link>
|
||||||
<Button className="mr5 font-12" type="primary" size="small" onClick={() => { checkPaperItem(record.id, 1) }}>通过</Button>
|
|
||||||
<Button className="mr5 font-12" type="info" size="small" onClick={() => { setActiveId(record.id); setVisible(true) }}>不通过</Button>
|
|
||||||
{/* <Link className="line_1 color-grey3" to={`/task/taskDetail/${record.id}`}>查看详情</Link> */}
|
|
||||||
</React.Fragment>
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
@ -181,7 +181,7 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
}
|
}
|
||||||
|
|
||||||
const changeOptionId = useCallback((option) => {
|
const changeOptionId = useCallback((option) => {
|
||||||
setStatus(option.dicItemCode.toString() || '1,2');
|
setStatus(option.dicItemCode.toString() || '0,1');
|
||||||
setCurPage(1);
|
setCurPage(1);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
@ -213,9 +213,9 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
<div className="center-content">
|
<div className="center-content">
|
||||||
{
|
{
|
||||||
approve === 2 && <StatusNav
|
approve === 2 && <StatusNav
|
||||||
key={'approveStatus'}
|
key={'status'}
|
||||||
type={'approveStatus'}
|
type={'status'}
|
||||||
options={proofArrCheck}
|
options={paperComplain}
|
||||||
changeOptionId={changeOptionId}
|
changeOptionId={changeOptionId}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ export default Form.create()(({ current_user, form, showNotification, match, })
|
||||||
>
|
>
|
||||||
{helper(
|
{helper(
|
||||||
"message",
|
"message",
|
||||||
[{ required: true, message: '请给出不通过的原因' }],
|
[{ required: visible, message: '请给出不通过的原因' }],
|
||||||
<TextArea
|
<TextArea
|
||||||
placeholder="(必填)我想给点什么意见呢,200字以内"
|
placeholder="(必填)我想给点什么意见呢,200字以内"
|
||||||
autoSize={{ minRows: 6 }}
|
autoSize={{ minRows: 6 }}
|
||||||
|
|
|
@ -77,6 +77,13 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
||||||
|
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
dataIndex: 'index',
|
||||||
|
render:(text,record,index)=>{
|
||||||
|
return <div style={{textAlign:'center'}}>{index+1}</div>
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '来源任务',
|
title: '来源任务',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
|
@ -96,14 +103,14 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '评论/提交者',
|
title: '提交者',
|
||||||
dataIndex: 'user',
|
dataIndex: 'user',
|
||||||
render: (text, record) => {
|
render: (text, record) => {
|
||||||
return record.user.nickname || record.user.login
|
return record.user.nickname || record.user.login
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '评论/提交时间',
|
title: '提交时间',
|
||||||
dataIndex: 'createdAt',
|
dataIndex: 'createdAt',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -153,6 +160,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
||||||
message: values.message,
|
message: values.message,
|
||||||
}
|
}
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
|
setLoading(false);
|
||||||
if (res && res.message === 'success') {
|
if (res && res.message === 'success') {
|
||||||
setReload(reload + 1);
|
setReload(reload + 1);
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
|
@ -161,7 +169,6 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
||||||
message:'',
|
message:'',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setLoading(false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -46,6 +46,12 @@ export const publicityArr=[
|
||||||
{ dicItemCode: 0, name: "不受理", dicItemName: "不受理" },
|
{ dicItemCode: 0, name: "不受理", dicItemName: "不受理" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export const agreementArr = [
|
||||||
|
{ dicItemCode: 0, name: "已驳回", dicItemName: "已驳回" },
|
||||||
|
{ dicItemCode: 1, name: "待审核", dicItemName: "待审核" },
|
||||||
|
{ dicItemCode: 2, name: "已同意", dicItemName: "已同意" },
|
||||||
|
]
|
||||||
|
|
||||||
export const publishModeArr=["自主提交","统筹任务"];
|
export const publishModeArr=["自主提交","统筹任务"];
|
||||||
|
|
||||||
export const sortArr = [{
|
export const sortArr = [{
|
||||||
|
@ -90,6 +96,12 @@ export const paperCheckStatusArr=[
|
||||||
{ dicItemCode: '2', name: "未通过", dicItemName: '未通过' },
|
{ dicItemCode: '2', name: "未通过", dicItemName: '未通过' },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export const paperComplainStatusArr=[
|
||||||
|
{ dicItemCode: '0', name: "未通过", dicItemName: '未通过' },
|
||||||
|
{ dicItemCode: '1', name: "通过", dicItemName: '通过' },
|
||||||
|
{ dicItemCode: '2', name: "待审核", dicItemName: '待审核' },
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
export const formItemLayout = {
|
export const formItemLayout = {
|
||||||
labelCol: {
|
labelCol: {
|
||||||
|
|
|
@ -299,7 +299,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
||||||
</span><span className="color-grey-9 ml5 font-12 ">点击下载示例模版</span>
|
</span><span className="color-grey-9 ml5 font-12 ">点击下载示例模版</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="pl15">
|
<div className="pl15 task-edit-content">
|
||||||
<p className="color-grey3 mb20">选择任务所在领域</p>
|
<p className="color-grey3 mb20">选择任务所在领域</p>
|
||||||
|
|
||||||
<div className="mb20 clearfix areaDiv" >
|
<div className="mb20 clearfix areaDiv" >
|
||||||
|
|
|
@ -145,3 +145,10 @@
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.task-edit-content{
|
||||||
|
.ant-form-item-control-wrapper {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
||||||
"enterpriseNameInput",
|
"enterpriseNameInput",
|
||||||
[{ max: 20, message: '长度不能超过20个字符' }],
|
[{ max: 20, message: '长度不能超过20个字符' }],
|
||||||
<Input
|
<Input
|
||||||
placeholder="输入任务名称进行检索"
|
placeholder="输入发布主体名称进行检索"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue