接口联调
This commit is contained in:
parent
464fd7f911
commit
e8739893e4
|
|
@ -10,9 +10,16 @@ const Iframe = (props) => {
|
|||
const history = props.history
|
||||
const location = history.location
|
||||
|
||||
if (!location.state.url) {
|
||||
history.push("/404");
|
||||
}
|
||||
|
||||
function iframeLoad() {
|
||||
let myIframe = document.getElementById("iframe");
|
||||
myIframe.height = `${document.documentElement.clientHeight - 300}px`
|
||||
if (myIframe.contentWindow.location && myIframe.contentWindow.location.href) {
|
||||
window.location.href = myIframe.contentWindow.location.href
|
||||
}
|
||||
}
|
||||
|
||||
return <iframe
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
import React, { useCallback, useEffect, useState, useMemo } from 'react';
|
||||
import { Input, Radio, Select, Button, Form, DatePicker, Table, Pagination, Modal } from 'antd';
|
||||
import { Link } from "react-router-dom";
|
||||
import { Confirm } from '../../components/ModalFun';
|
||||
import { paperCheckStatusArr,taskStatusAllArr } from '../static';
|
||||
import { readyCheckPapers, checkPaper, } from '../api';
|
||||
import { paperCheckStatusArr,taskStatusAllArr, signStatus } from '../static';
|
||||
import { agreementSignList, getSignUrl, } from '../api';
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
import { httpUrl } from '../fetch';
|
||||
|
||||
const format = "YYYY-MM-DD HH:mm:ss";
|
||||
const Option = Select.Option;
|
||||
const TextArea = Input.TextArea;
|
||||
|
||||
|
||||
const statusArr = [];
|
||||
for (const item of taskStatusAllArr) {
|
||||
|
|
@ -18,39 +18,35 @@ const checkStatusArr = [];
|
|||
for (const item of paperCheckStatusArr) {
|
||||
checkStatusArr[item.dicItemCode] = item.dicItemName;
|
||||
}
|
||||
export default Form.create()(({ current_user, form, showNotification, match, history }) => {
|
||||
export default Form.create()(({ form, history }) => {
|
||||
|
||||
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [signLoading, setSignLoading] = useState(false);
|
||||
|
||||
const [searchObj, setSearchObj] = useState({
|
||||
checkStatus: '2',
|
||||
parentId: 0,
|
||||
signStatus: signStatus.unsigned,
|
||||
});
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
const [total, setTotal] = useState(0);
|
||||
const [taskList, setTaskList] = useState([]);
|
||||
|
||||
const [reload, setReload] = useState(0);
|
||||
const [currentImg, setCurrentImg] = useState(undefined);
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const params = {
|
||||
curPage,
|
||||
pageSize: 10,
|
||||
...searchObj,
|
||||
};
|
||||
setLoading(true);
|
||||
readyCheckPapers(params).then(data => {
|
||||
agreementSignList(params).then(data => {
|
||||
if (data) {
|
||||
if((data.rows && data.rows.length<=0) && curPage>1){
|
||||
if((data.data && data.data.length<=0) && curPage>1){
|
||||
setCurPage(curPage-1);
|
||||
}
|
||||
setTaskList(data.rows);
|
||||
setTaskList(data.data);
|
||||
setTotal(data.total);
|
||||
}
|
||||
setLoading(false);
|
||||
|
|
@ -67,26 +63,28 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
|
||||
function onSearch() {
|
||||
let values = getFieldsValue(['checkStatus', 'endCreatedAt', 'startCreatedAt', 'parentId','number']);
|
||||
if (values.startCreatedAt) values.startCreatedAt = values.startCreatedAt.format(format);
|
||||
if (values.endCreatedAt) values.endCreatedAt = values.endCreatedAt.format(format);
|
||||
if (values.checkStatus === '0,1,2') values.checkStatus = '';
|
||||
let values = getFieldsValue(['signStatus']);
|
||||
setSearchObj(values);
|
||||
}
|
||||
|
||||
function clearSearch() {
|
||||
setFieldsValue({
|
||||
startCreatedAt: '',
|
||||
endCreatedAt: '',
|
||||
checkStatus: '0,1,2',
|
||||
number:''
|
||||
signStatus: signStatus.all,
|
||||
});
|
||||
setSearchObj({});
|
||||
}
|
||||
|
||||
function previewImage() {
|
||||
setCurrentImg('https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png')
|
||||
setVisible(true)
|
||||
function getAgreementSignUrl(item) {
|
||||
setSignLoading(true);
|
||||
const params = {
|
||||
signTaskType: 2 , //类型: 1-签订表 2-协议
|
||||
signatureFormSignTaskId: item.checkedAgreementSignTaskId
|
||||
}
|
||||
getSignUrl(params).then(data => {
|
||||
history.push({ pathname: '/managements/iframe', state: { url: data.data } })
|
||||
}).finally(() => {
|
||||
setSignLoading(false);
|
||||
})
|
||||
}
|
||||
|
||||
const columns = useMemo(() => {
|
||||
|
|
@ -100,50 +98,67 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
},
|
||||
{
|
||||
title: '任务编号',
|
||||
dataIndex: 'number',
|
||||
dataIndex: 'taskId',
|
||||
},
|
||||
{
|
||||
title: '任务名称',
|
||||
dataIndex: 'name',
|
||||
dataIndex: 'taskName',
|
||||
},
|
||||
{
|
||||
title: '发布时间',
|
||||
dataIndex: 'createdAt',
|
||||
dataIndex: 'taskPublishedTime',
|
||||
},
|
||||
{
|
||||
title: '胜出者姓名',
|
||||
dataIndex: 'user',
|
||||
render: (text, record) => {
|
||||
return record.user.nickname || record.user.login
|
||||
return record.nickname || record.login
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '协议',
|
||||
dataIndex: 'content',
|
||||
render: (text, record) => {
|
||||
return <img
|
||||
style={{ width: '100px' , cursor: 'pointer' }}
|
||||
onClick={ previewImage }
|
||||
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
|
||||
/>
|
||||
return record.checkedAgreementFileId ? <a href={`${ httpUrl }/busiAttachments/view/${ record.checkedAgreementFileId }`} target='_blank'>协议预览</a> : '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (text, record) => (
|
||||
!record.checkedAgreementFileId ? <Button className="mr5 font-12" type="primary" onClick={() => { getAgreementSignUrl(record) }} loading={ signLoading } >签订表签字</Button> : '已签署'
|
||||
),
|
||||
},
|
||||
]
|
||||
}, []);
|
||||
|
||||
function changeType(e) {
|
||||
setSearchObj({
|
||||
...searchObj,
|
||||
parentId: e,
|
||||
signStatus: e,
|
||||
});
|
||||
setCurPage(1);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="task-manage paper-manage">
|
||||
<div className="task-manage paper-manage imageLayerParent">
|
||||
<div className="center-screen clearfix" >
|
||||
<div className="center-left-but">
|
||||
|
||||
{helper(
|
||||
"签订状态",
|
||||
"signStatus",
|
||||
[],
|
||||
<Select
|
||||
showArrow
|
||||
placeholder="请选择签订状态"
|
||||
onChange={changeType}
|
||||
>
|
||||
<Option key={0} value={ signStatus.all }>全部</Option>
|
||||
<Option key={1} value={ signStatus.unsigned }>未签订</Option>
|
||||
<Option key={2} value={ signStatus.signed }>已签订</Option>
|
||||
</Select>,
|
||||
signStatus.unsigned
|
||||
)}
|
||||
{helper(
|
||||
"任务编号",
|
||||
"number",
|
||||
|
|
@ -170,35 +185,8 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
placeholder="请输入胜出者姓名"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="center-right-but">
|
||||
{helper(
|
||||
"发布时间:",
|
||||
"startCreatedAt",
|
||||
[],
|
||||
<DatePicker
|
||||
showTime
|
||||
format={format}
|
||||
placeholder="请选择开始时间"
|
||||
/>
|
||||
)}
|
||||
|
||||
{helper(
|
||||
"",
|
||||
"endCreatedAt",
|
||||
[],
|
||||
<DatePicker
|
||||
showTime
|
||||
format={format}
|
||||
placeholder="请选择结束时间"
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
<Button className="mr10" type="primary" onClick={onSearch}>搜索</Button>
|
||||
<Button className="mr10" type="" onClick={clearSearch}>清除</Button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -206,7 +194,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
<div className="center-content">
|
||||
|
||||
<Table
|
||||
loading={loading}
|
||||
loading={loading || signLoading}
|
||||
rowKey={(row) => row.id}
|
||||
dataSource={taskList}
|
||||
columns={columns}
|
||||
|
|
@ -221,15 +209,6 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
/>}
|
||||
|
||||
</div>
|
||||
<Modal
|
||||
visible={visible}
|
||||
footer={null}
|
||||
className="form-edit-modal"
|
||||
width={'1000px'}
|
||||
onCancel={() => { setVisible(false)}}
|
||||
>
|
||||
<img style={{ width: '95%', margin: 'auto' }} src={ currentImg } alt="" />
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@
|
|||
.line_1{
|
||||
display: inline-block;
|
||||
}
|
||||
a {
|
||||
color: #4154f1;
|
||||
}
|
||||
}
|
||||
.ant-modal-body {
|
||||
display: flex;
|
||||
|
|
|
|||
|
|
@ -6,10 +6,13 @@ import { paperCheckStatusArr,taskStatusAllArr } from '../static';
|
|||
import { agreementListNew, adminCheckAgreementNew } from '../api';
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
import { httpUrl } from '../fetch';
|
||||
|
||||
const format = "YYYY-MM-DD HH:mm:ss";
|
||||
const Option = Select.Option;
|
||||
const TextArea = Input.TextArea;
|
||||
|
||||
|
||||
const statusArr = [];
|
||||
for (const item of taskStatusAllArr) {
|
||||
statusArr[item.dicItemCode] = item.dicItemName;
|
||||
|
|
@ -36,7 +39,8 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
const [checkedItem, setCheckedItem] = useState({});
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
const [checkLoading, setCheckLoading] = useState(false);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const params = {
|
||||
|
|
@ -84,6 +88,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
Modal.confirm({
|
||||
title: '确认审批通过?',
|
||||
onOk() {
|
||||
setCheckLoading(true);
|
||||
adminCheckAgreementNew({
|
||||
taskOnlineSignId: item.id,
|
||||
params: {
|
||||
|
|
@ -94,8 +99,11 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
showNotification('操作成功');
|
||||
setReload(Math.random());
|
||||
}
|
||||
}).finally(() => {
|
||||
setCheckLoading(false);
|
||||
})
|
||||
}
|
||||
},
|
||||
confirmLoading: checkLoading
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -107,6 +115,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
function dealAction() {
|
||||
validateFields((error, values) => {
|
||||
if (!error) {
|
||||
setCheckLoading(true);
|
||||
adminCheckAgreementNew({
|
||||
taskOnlineSignId: checkedItem.id,
|
||||
params: {
|
||||
|
|
@ -119,6 +128,8 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
setReload(Math.random());
|
||||
setVisible(false);
|
||||
}
|
||||
}).finally(() => {
|
||||
setCheckLoading(false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
@ -147,16 +158,24 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
dataIndex: 'user',
|
||||
render: (text, record) => {
|
||||
return record.signatureFormUnsignedFile ?
|
||||
<a href={ record.signatureFormUnsignedFile.fileDownloadPath } target='_blank' download={ record.signatureFormUnsignedFile.fileName }><Icon type="file" /> { record.signatureFormUnsignedFile.fileName }</a>
|
||||
<div>
|
||||
<Icon type="file" /> { record.signatureFormUnsignedFile.fileName }
|
||||
<a href={ record.signatureFormUnsignedFile.fileDownloadPath } target="_blank" download={ record.signatureFormUnsignedFile.fileName } className="ml10">下载</a>
|
||||
<a href={`${ httpUrl }/busiAttachments/view/${ record.signatureFormUnsignedFile.id }`} target="_blank" className="ml10">预览</a>
|
||||
</div>
|
||||
: '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '协议文件文件',
|
||||
title: '协议文件',
|
||||
dataIndex: 'user1',
|
||||
render: (text, record) => {
|
||||
return record.agreementFile ?
|
||||
<a href={ record.agreementFile.fileDownloadPath } target='_blank' download={ record.agreementFile.fileName }><Icon type="file" /> { record.agreementFile.fileName }</a>
|
||||
<div>
|
||||
<Icon type="file" /> { record.agreementFile.fileName }
|
||||
<a href={ record.agreementFile.fileDownloadPath } target="_blank" download={ record.agreementFile.fileName } className="ml10">下载</a>
|
||||
<a href={`${ httpUrl }/busiAttachments/view/${ record.agreementFile.id }`} target="_blank" className="ml10">预览</a>
|
||||
</div>
|
||||
: '-'
|
||||
}
|
||||
},
|
||||
|
|
@ -175,8 +194,8 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
{
|
||||
record.firstDraftCheckStatus === 2 && <React.Fragment>
|
||||
<Button type="primary" className="mr20" onClick={() => { agreeClick(record) }}>同意</Button>
|
||||
<Button onClick={() => { refuseClick(record) }}>驳回</Button>
|
||||
<Button type="primary" className="mr20" onClick={() => { agreeClick(record) }} >同意</Button>
|
||||
<Button onClick={() => { refuseClick(record) }} >驳回</Button>
|
||||
</React.Fragment>
|
||||
}
|
||||
</span>
|
||||
|
|
@ -233,7 +252,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
<div className="center-content">
|
||||
|
||||
<Table
|
||||
loading={loading}
|
||||
loading={loading || checkLoading }
|
||||
rowKey={(row) => row.id}
|
||||
dataSource={taskList}
|
||||
columns={columns}
|
||||
|
|
@ -254,6 +273,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
onOk={dealAction}
|
||||
onCancel={() => { setVisible(false) }}
|
||||
className="form-edit-modal"
|
||||
confirmLoading={ checkLoading }
|
||||
>
|
||||
{
|
||||
helper('驳回原因', 'message', [{ required: visible, message: "请输入驳回的原因" }, { max: 200, message: '不能超过200字符' }],
|
||||
|
|
|
|||
|
|
@ -18,4 +18,7 @@
|
|||
.line_1{
|
||||
display: inline-block;
|
||||
}
|
||||
a {
|
||||
color: #4154f1;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,8 +2,8 @@ import React, { useCallback, useEffect, useState, useMemo } from 'react';
|
|||
import { Input, Radio, Select, Button, Form, DatePicker, Table, Pagination, Modal } from 'antd';
|
||||
import { Link } from "react-router-dom";
|
||||
import { Confirm } from '../../components/ModalFun';
|
||||
import { paperCheckStatusArr,taskStatusAllArr } from '../static';
|
||||
import { readyCheckPapers, agreementSignList, getSignUrl } from '../api';
|
||||
import { paperCheckStatusArr,taskStatusAllArr, signStatus } from '../static';
|
||||
import { readyCheckPapers, signatureFormList, getSignUrl } from '../api';
|
||||
import '../index.scss';
|
||||
import './index.scss';
|
||||
const format = "YYYY-MM-DD HH:mm:ss";
|
||||
|
|
@ -24,9 +24,9 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [signLoading, setSignLoading] = useState(false);
|
||||
const [searchObj, setSearchObj] = useState({
|
||||
signStatus: '2',
|
||||
parentId: 0,
|
||||
signStatus: signStatus.unsigned,
|
||||
});
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
const [total, setTotal] = useState(0);
|
||||
|
|
@ -42,7 +42,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
...searchObj,
|
||||
};
|
||||
setLoading(true);
|
||||
agreementSignList(params).then(data => {
|
||||
signatureFormList(params).then(data => {
|
||||
if (data) {
|
||||
if((data.data && data.data.length<=0) && curPage>1){
|
||||
setCurPage(curPage-1);
|
||||
|
|
@ -70,18 +70,21 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
function clearSearch() {
|
||||
setFieldsValue({
|
||||
signStatus: '',
|
||||
signStatus: signStatus.all,
|
||||
});
|
||||
setSearchObj({});
|
||||
}
|
||||
|
||||
function getSignFormUrl(item) {
|
||||
setSignLoading(true);
|
||||
const params = {
|
||||
signTaskType: 1 , //类型: 1-签订表 2-协议
|
||||
signatureFormSignTaskId: item.signatureFormSignTaskId
|
||||
}
|
||||
getSignUrl(params).then(data => {
|
||||
history.push({ pathname: '/managements/iframe', state: { url: data.data } })
|
||||
history.push({ pathname: '/managements/iframe', state: { url: data.data } });
|
||||
}).finally(() => {
|
||||
setSignLoading(false);
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -94,6 +97,10 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
return <div style={{ textAlign: 'center' }}>{index + 1}</div>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '任务编号',
|
||||
dataIndex: 'taskId',
|
||||
},
|
||||
{
|
||||
title: '任务名称',
|
||||
dataIndex: 'taskName',
|
||||
|
|
@ -101,21 +108,19 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
{
|
||||
title: '发布主体',
|
||||
dataIndex: 'user',
|
||||
// render: (text, record) => {
|
||||
// return record.user.nickname || record.user.login
|
||||
// }
|
||||
render: (text, record) => {
|
||||
return record.nickname || record.login
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '发布时间',
|
||||
dataIndex: 'createdAt',
|
||||
dataIndex: 'taskPublishedTime',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (text, record) => (
|
||||
<React.Fragment>
|
||||
<Button className="mr5 font-12" type="primary" onClick={() => { getSignFormUrl(record) }}>签订表签字</Button>
|
||||
</React.Fragment>
|
||||
!record.signatureFormSignedFileId ? <Button className="mr5 font-12" type="primary" onClick={() => { getSignFormUrl(record) }} loading={ signLoading } >签订表签字</Button> : '已签署'
|
||||
),
|
||||
},
|
||||
]
|
||||
|
|
@ -142,10 +147,11 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
placeholder="请选择签订状态"
|
||||
onChange={changeType}
|
||||
>
|
||||
<Option key={0} value={0}>未签订</Option>
|
||||
<Option key={1} value={1}>已签订</Option>
|
||||
<Option key={0} value={ signStatus.all }>全部</Option>
|
||||
<Option key={1} value={ signStatus.unsigned }>未签订</Option>
|
||||
<Option key={2} value={ signStatus.signed }>已签订</Option>
|
||||
</Select>,
|
||||
0
|
||||
signStatus.unsigned
|
||||
)}
|
||||
|
||||
<Button className="mr10" type="primary" onClick={onSearch}>搜索</Button>
|
||||
|
|
|
|||
|
|
@ -737,7 +737,7 @@ export function changePinnedTaskSort(data){
|
|||
// 签订表+协议审核列表
|
||||
export function agreementListNew(params) {
|
||||
return fetch({
|
||||
url: `/api/taskOnlineSign/firstDraft/list`,
|
||||
url: `/api/taskOnlineSign/admin/firstDraft/list`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
|
|
@ -753,7 +753,7 @@ export function adminCheckAgreementNew(data) {
|
|||
}
|
||||
|
||||
// 签订表签署列表
|
||||
export function agreementSignList(params) {
|
||||
export function signatureFormList(params) {
|
||||
return fetch({
|
||||
url: `/api/taskOnlineSign/admin/signatureForm/list`,
|
||||
method: 'get',
|
||||
|
|
@ -786,4 +786,31 @@ export function uploadSignForm(data) {
|
|||
method: 'post',
|
||||
data: data.params
|
||||
});
|
||||
}
|
||||
|
||||
// 获取协议签署列表
|
||||
export function agreementSignList(params) {
|
||||
return fetch({
|
||||
url: `/api/taskOnlineSign/admin/agreement/list`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 用户获取任务签署状态
|
||||
export function getTaskSignStatus(params) {
|
||||
return fetch({
|
||||
url: `/api/taskOnlineSign/signTaskStatus`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 用户获取签订表签署链接
|
||||
export function getUserSignUrl(params) {
|
||||
return fetch({
|
||||
url: `/api/taskOnlineSign/user/get-url`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
|
@ -14,9 +14,16 @@ export default Form.create()(props => {
|
|||
|
||||
const [fileList, setFileList] = useState([]);
|
||||
const [fileList1, setFileList1] = useState([]);
|
||||
const [content,setContent]=useState('');
|
||||
const [content, setContent]=useState('');
|
||||
const [loading, setLoading]=useState(false);
|
||||
|
||||
const uploadList = [uploadAgreement, uploadSignForm]
|
||||
const uploadList = [{
|
||||
func: uploadAgreement,
|
||||
params: 'files'
|
||||
}, {
|
||||
func: uploadSignForm,
|
||||
params: 'files1'
|
||||
}, ]
|
||||
|
||||
useEffect(()=>{
|
||||
visible && getAgreement({title:'协议模板'}).then(res=>{
|
||||
|
|
@ -54,10 +61,11 @@ export default Form.create()(props => {
|
|||
validateFields((err, values) => {
|
||||
if (!err) {
|
||||
const promiseList = []
|
||||
setLoading(true)
|
||||
uploadList.forEach(e => {
|
||||
promiseList.push(e({
|
||||
promiseList.push(e.func({
|
||||
params: {
|
||||
files: values.files,
|
||||
files: values[e.params],
|
||||
paperNumber: checkedItem.number
|
||||
}
|
||||
}))
|
||||
|
|
@ -74,6 +82,8 @@ export default Form.create()(props => {
|
|||
}else{
|
||||
showNotification("上传协议失败")
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false)
|
||||
});
|
||||
}
|
||||
})
|
||||
|
|
@ -86,6 +96,7 @@ export default Form.create()(props => {
|
|||
onOk={uploadAgree}
|
||||
onCancel={() => { setVisible(false) }}
|
||||
className="form-edit-modal"
|
||||
confirmLoading={ loading }
|
||||
>
|
||||
<div className="task-popup-content">
|
||||
{/* paperAuditing */}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ for (const item of paperCheckStatusArr) {
|
|||
}
|
||||
|
||||
export default Form.create()((props) => {
|
||||
const { list, curPage, total, changePage, loading, applyStatusAllNameArr, reloadList, showNotification, current_user, form, detailStatus, expertReview ,mygetHelmetapi, taskLimit} = props;
|
||||
const { list, curPage, total, changePage, loading, applyStatusAllNameArr, reloadList, showNotification, current_user, form, detailStatus, expertReview ,agreementStatus, taskLimit} = props;
|
||||
const { getFieldDecorator, validateFields, setFieldsValue } = form;
|
||||
const [page, setPage] = useState(1);
|
||||
const pageSize = props.pageSize || 10;
|
||||
|
|
@ -172,8 +172,14 @@ export default Form.create()((props) => {
|
|||
{winReview && i ==0 && <span className='winReview'><img src={win1}/>第一名</span>}
|
||||
{winReview && i ==1 && <span className='winReview'><img src={win2}/>第二名</span>}
|
||||
{winReview && i ==2 && <span className='winReview'><img src={win3}/>第三名</span>}
|
||||
{item.status === 2 && detailStatus === 6 && taskLimit &&
|
||||
<a className="right-button" onClick={() => {certificationCheck(item); }}>签订协议</a>}
|
||||
{
|
||||
item.status === 2 && detailStatus === 6 && taskLimit &&
|
||||
<a className="right-button" onClick={() => {certificationCheck(item); }}>签订协议</a>
|
||||
}
|
||||
{
|
||||
item.status === 2 && detailStatus > 6 && (current_user.login === item.user.login) &&
|
||||
<a className="right-button" href={`${httpUrl}/busiAttachments/downloadAttachment/${agreementStatus.checkedAgreementFileUniqueId}`} target='_blank'>下载协议</a>
|
||||
}
|
||||
</li>
|
||||
<li className="fr">
|
||||
{((item.needComplain && detailStatus === 3) || (detailStatus === 5 && item.publicTaskComplain && item.checkStatus === 1 && item.status !== 2)) && (current_user.login === item.user.login) &&
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
border:1px solid;
|
||||
border-color:#4154f1;
|
||||
border-radius:2px;
|
||||
color:#4154f1;
|
||||
color: #4154f1 !important;;
|
||||
font-size:15px;
|
||||
line-height: 34px;
|
||||
text-align: center;
|
||||
|
|
|
|||
|
|
@ -253,3 +253,15 @@ export function surplusTime(item) {
|
|||
delayTime
|
||||
};
|
||||
}
|
||||
|
||||
export const signStatus = {
|
||||
all: 'all', // 全部
|
||||
unsigned: 'unsigned', // 未签署
|
||||
signed: 'signed', // 已签署
|
||||
};
|
||||
|
||||
//
|
||||
export const urlType = {
|
||||
edit: 1, // 协同编辑
|
||||
agreement: 2 // 协议签署
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import StatusNav from '../../components/statusNav';
|
|||
import ItemListPaper from '../components/itemListPaper';
|
||||
import ProofModal from '../components/proofModal';
|
||||
import ExportPaper from './exportPaper';
|
||||
import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper, addExpertReview, followTask, unfollowTask } from '../api';
|
||||
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, paperCheckSearchArr, agreementContent, paperCheckTextArr, surplusTime } from '../static';
|
||||
import { getTaskDetail, getTaskCategory, getTaskPaper, makePublic, addPaper, getAgreement, agreement, checkAgreement, checkHavePaper, addExpertReview, followTask, unfollowTask, getTaskSignStatus, getUserSignUrl } from '../api';
|
||||
import { taskModeIdArr, applyStatusArr, applyStatusAllArr, paperCheckSearchArr, agreementContent, paperCheckTextArr, surplusTime, urlType } from '../static';
|
||||
import { httpUrl } from '../fetch';
|
||||
import './index.scss';
|
||||
import { getRules } from 'src/military/expert/api';
|
||||
|
|
@ -53,6 +53,7 @@ export default Form.create()(
|
|||
const [total, setTotal] = useState(0);
|
||||
const [dataList, setDataList] = useState([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [signLoading, setSignLoading] = useState(false);
|
||||
|
||||
const [reload, setReload] = useState(0);
|
||||
const [relaodChildList, setRelaodChildList] = useState(0);
|
||||
|
|
@ -62,6 +63,11 @@ export default Form.create()(
|
|||
const [publishedReviewRules, setPublishedReviewRules] = useState(undefined);
|
||||
const [download, setDownload] = useState();
|
||||
|
||||
// 在线协议当前签署状态
|
||||
const [agreementStatus, setAgreementStatus] = useState({
|
||||
phase: 0
|
||||
})
|
||||
|
||||
// useEffect(()=>{
|
||||
// !current_user.login&&showLoginDialog();
|
||||
// },[current_user.login]);
|
||||
|
|
@ -127,15 +133,31 @@ export default Form.create()(
|
|||
const isWinner = useMemo(() => {
|
||||
let isWin = false
|
||||
for (const item of dataList) {
|
||||
if (item.user.login === current_user.login) {
|
||||
if (item.user.login === current_user.login && item.status === 2) {
|
||||
isWin = true
|
||||
}
|
||||
}
|
||||
return isWin
|
||||
},[dataList, current_user])
|
||||
|
||||
const signStep = (status) => {
|
||||
return status === 0 ? <span>协议在线签字</span> : <span>协议在线签字,<Link to={{ pathname: '/iframe', state: { url: 'https://umijs.org/docs/introduce/contributing' } }} >点击前往</Link></span>
|
||||
const signStep = () => {
|
||||
return agreementStatus.phase === 1 && agreementStatus.checkedAgreementSignTaskId?
|
||||
<span>协议在线签字,<Button type="link" size="large" onClick={ getSignFormUrl } loading={ signLoading }>点击前往</Button></span>
|
||||
: <span>协议在线签字</span>
|
||||
}
|
||||
|
||||
// 获取编辑或者签署链接
|
||||
const getSignFormUrl = () => {
|
||||
setSignLoading(true);
|
||||
const params = {
|
||||
urlType: urlType.agreement , // 链接类型: 1-协同编辑 2-协议签署
|
||||
taskId: id
|
||||
}
|
||||
getUserSignUrl(params).then(data => {
|
||||
history.push({ pathname: '/iframe', state: { url: data.data.actorAgreementSignTaskEmbedUrl } })
|
||||
}).finally(() => {
|
||||
setSignLoading(false);
|
||||
})
|
||||
}
|
||||
|
||||
// 获取协议内容
|
||||
|
|
@ -179,6 +201,23 @@ export default Form.create()(
|
|||
}
|
||||
}, [id, status, checkStatus, curPage, reload, relaodChildList, detailData, current_user.login]);
|
||||
|
||||
// 签订协议阶段获取协议状态
|
||||
useEffect(() => {
|
||||
// 当前为签订协议阶段并且为胜出者
|
||||
if (detailData.status > 6 && isWinner) {
|
||||
const params = {
|
||||
taskId: id
|
||||
}
|
||||
getTaskSignStatus(params).then(data => {
|
||||
if (data.data) {
|
||||
data.data.phase = data.data.phase - 2
|
||||
setAgreementStatus(data.data); // 当前少了在线编辑步骤
|
||||
}
|
||||
});
|
||||
}
|
||||
}, [dataList]);
|
||||
|
||||
|
||||
|
||||
// 流程步骤显示,返回剩余时间
|
||||
const process = useCallback((title, status, days) => {
|
||||
|
|
@ -586,7 +625,7 @@ export default Form.create()(
|
|||
|
||||
{
|
||||
current_user.login && detailData.status === 6 && isWinner && <div className="edu-back-white step-contain mt20">
|
||||
<Steps current={1}>
|
||||
<Steps current={ agreementStatus.phase }>
|
||||
<Step title="等待平台审核协议内容" />
|
||||
<Step title={ signStep() }></Step>
|
||||
</Steps>
|
||||
|
|
@ -647,6 +686,7 @@ export default Form.create()(
|
|||
agreementSigning={detailData.agreementSigning}
|
||||
expertReview={detailData.expertReview}
|
||||
mygetHelmetapi={mygetHelmetapi}
|
||||
agreementStatus={ agreementStatus }
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
taskModeId: data.taskModeId,
|
||||
collectionMode: data.collectionMode,
|
||||
publishMode: data.publishMode + '',
|
||||
agreementType: data.agreementType + '',
|
||||
|
||||
description: data.description,
|
||||
collectingDays: data.collectingDays,
|
||||
|
|
@ -113,6 +114,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
taskModeId: 1,
|
||||
collectionMode: 1,
|
||||
publishMode: '0',
|
||||
agreementType: '1',
|
||||
collectingDays: 30,
|
||||
choosingDays: 15,
|
||||
makePublicDays: 7,
|
||||
|
|
@ -254,6 +256,7 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
enterpriseName: enterpriseName,
|
||||
categoryId,
|
||||
};
|
||||
|
||||
params.expertReview=Boolean(params.expertReview);
|
||||
let dateSum = params.collectingDays + params.choosingDays + params.makePublicDays + params.signingDays + params.payingDays;
|
||||
if (dateSum > 180) {
|
||||
|
|
@ -491,6 +494,17 @@ export default Form.create()(forwardRef(({ current_user, form, showNotification,
|
|||
</Radio.Group>
|
||||
)}
|
||||
|
||||
{helper(
|
||||
"协议类型:",
|
||||
"agreementType",
|
||||
[{ required: true, message: "协议类型" }],
|
||||
<Radio.Group disabled={published}>
|
||||
<Radio value={'1'}>理论成果协议</Radio>
|
||||
<Radio value={'2'}>软件成果协议</Radio>
|
||||
<Radio value={'3'}>实物成果协议</Radio>
|
||||
</Radio.Group>
|
||||
)}
|
||||
|
||||
<div className="task-setting-days">
|
||||
<div className="timing_task">
|
||||
<div className="mbt10 color-grey-9 lineh-35"><span className="inline-span active">需求提报</span></div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue