import React, { useState, useRef, useEffect } from 'react';
import { Button, DatePicker, Input, Select, Space, Table, message } from 'antd';
import styles from './index.less';
import ContractModal, { Type } from './component/Modal';
import { PageContainer } from '@ant-design/pro-components';
import { useRequest, useModel } from '@umijs/max';
import { connect } from 'umi';
import {
queryApproval,
queryContract,
queryContractCancel,
queryGetContractList,
} from '../../services/contract';
import dayjs from 'dayjs';
import useModal from 'antd/es/modal/useModal';
const ConteactManager = (props) => {
const { dispatch } = props;
const [searchData, setSearchData] = useState({
effect_on: '',
project_name: '',
status: '',
page_size: 10,
current: 0,
name: '',
});
const { user } = useModel('userInfo');
const [visible, setVisible] = useState(false);
const [detail, setDetail] = useState({});
const [data, setData] = useState([]);
const [pagination, setPagination] = useState({ current: 0 });
const typeRef = useRef();
const parentIdRef = useRef(0);
const showBtn = (record, type) => {
let bool = false;
switch (type) {
case 'download':
if (user?.Permission['menu-001-audit'] || record.created_by == user.ID)
bool = true;
break;
case 'addOrCal':
if (record.created_by == user.ID) bool = true;
break;
}
return bool;
};
const columns = [
{
title: '合同编号',
dataIndex: 'code',
key: 'code',
align: 'center',
width: '12%',
},
{
title: '合同生效时间',
dataIndex: 'effect_on',
key: 'effect_on',
align: 'center',
},
{
title: '合同名称',
dataIndex: 'name',
key: 'name',
align: 'center',
},
{
title: '甲方',
dataIndex: 'party_a',
key: 'party_a',
align: 'center',
},
{
title: '丙方',
dataIndex: 'party_c',
key: 'party_c',
align: 'center',
},
{
title: '所属部门/子公司',
dataIndex: 'dep_name',
key: 'dep_name',
align: 'center',
},
{
title: '项目名称',
dataIndex: 'project_name',
key: 'project_name',
align: 'center',
},
{
title: '合同总价(万元)',
dataIndex: 'amount',
key: 'amount',
align: 'center',
},
{
title: '经办人',
dataIndex: 'deal_by',
key: 'deal_by',
align: 'center',
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
align: 'center',
render: (status) => {
let str = '';
switch (status) {
case 1:
str = '待审核';
break;
case 2:
str = '审核拒绝';
break;
case 3:
str = '已存档';
break;
case 4:
str = '作废待审核';
break;
case 5:
str = '作废拒绝';
break;
case 6:
str = '已作废';
break;
}
return
{str}
;
},
},
{
title: '操作',
width: '210px',
align: 'center',
render: (record) => {
return (
{
typeRef.current = Type.detail;
parentIdRef.current = 0;
setDetail(record);
setVisible(true);
}}
>
详情
预览
{showBtn(record, 'download') && 下载}
{showBtn(record, 'addOrCal') && !record.parent_id && (
{
typeRef.current = Type.add;
parentIdRef.current = record.id;
setDetail({});
setVisible(true);
}}
>
增补
)}
{
typeRef.current = Type.cancel;
setDetail(record);
setVisible(true);
}}
>
作废
);
},
},
];
useEffect(() => {
dispatch({
type: 'user/fetch',
});
}, []);
//请求列表
const { run, loading } = useRequest((data) => queryGetContractList(data), {
defaultParams: [searchData],
onSuccess: (data) => {
let resultData = data?.list?.map((item) => {
return item.sub_num > 0 ? { ...item, children: [] } : item;
});
setData(resultData);
setPagination(data?.pagination);
// setData({ list: resultData, pagination: data?.pagination });
console.log(data);
},
});
//编辑新增接口
const { run: editRun } = useRequest((data) => queryContract(data), {
manual: true,
onSuccess: () => {
message.success('添加成功');
setVisible(false);
run(searchData);
},
onError: () => {
message.success('添加失败');
},
});
//作废发起
const { run: calRun } = useRequest((data) => queryContractCancel(data), {
manual: true,
onSuccess: () => {
message.success('发起作废成功');
setVisible(false);
run(searchData);
},
onError: () => {
message.success('发起作废失败');
},
});
//请求项目列表
const { data: projectData } = useRequest(queryApproval, {
defaultParams: [{ pageSize: 99999 }],
});
const handlePreView = () => {
// originFileObj 是读取的文件对象,如上传组件读取到的
// const fileURL = URL.createObjectURL(originFileObj);
// window.open(fileURL);
};
const handleUpload = () => {};
const handleSearch = () => {
run(searchData);
};
const handleExport = () => {};
const handleQueryChildren = async (req) => {
const res = await queryGetContractList(req);
if (res?.data?.list) {
let resultData = [...data];
let idx = data.findIndex((item) => item.id == req.is_parent);
if (idx > -1) {
resultData[idx].children = res?.data?.list;
setData(resultData);
setPagination(res.data?.pagination);
// setData({ list: resultData, pagination: res.data?.pagination });
}
}
};
const handleOk = (data) => {
if (typeRef.current == Type.add) {
editRun(data);
} else if (typeRef.current == Type.cancel) {
calRun(data);
}
};
const onPageChange = (page) => {
run({ ...searchData, current: page });
};
return (
合同生效日期:
{
setSearchData({
...searchData,
effect_on: e ? dayjs(e).format('YYYY-MM-DD') : null,
});
}}
/>
项目名称:
状态:
{
setSearchData({
...searchData,
name: e.target.value,
});
}}
/>
{
console.log(expanded, record);
if (expanded) handleQueryChildren({ is_parent: record.id });
}}
pagination={{ ...pagination, onChange: onPageChange }}
/>
setVisible(false)}
/>
);
};
export default connect(({ user, loading }) => ({
userList: user.list,
}))(ConteactManager);