253 lines
6.9 KiB
TypeScript
253 lines
6.9 KiB
TypeScript
import React, { useState, useEffect } from 'react';
|
||
import { Button, Table, Space, Modal, Collapse } from 'antd';
|
||
import { getPayandreply, getDetail } from './service';
|
||
import '@/assets/ld_style.less';
|
||
import { getProId } from '@/utils/session';
|
||
|
||
const { Panel } = Collapse;
|
||
|
||
const Index: React.FC<{}> = () => {
|
||
const [detailList, setDetailList] = useState<any>([]); // 标包详情
|
||
const [downloadList, setDownloadList] = useState<any>([]); // 标书下载记录
|
||
const [detailVisible, setDetailVisible] = useState<boolean>(false);
|
||
const [packageList, setPackageList] = useState([]);
|
||
const [companyName, setCompanyName] = useState<object>(); // 单位名称
|
||
const [downloadStatus, setDownloadStatus] = useState<object>(); // 状态
|
||
const [contactName, setContactName] = useState<object>(); // 联系人姓名
|
||
|
||
const columns: any[] = [ // 标包列表
|
||
{
|
||
title: '序号',
|
||
width: '10%',
|
||
render: (text: any, record: any, index: any) => `${index + 1}`
|
||
},
|
||
{
|
||
title: '单位名称',
|
||
width: '25%',
|
||
dataIndex: 'companyName',
|
||
},
|
||
{
|
||
title: '购标联系人',
|
||
width: '15%',
|
||
dataIndex: 'contactName',
|
||
},
|
||
{
|
||
title: '购标联系人电话',
|
||
width: '20%',
|
||
dataIndex: 'contactTelephone',
|
||
},
|
||
{
|
||
title: '当前状态',
|
||
width: '15%',
|
||
render: (text: any, record: any) => {
|
||
if (record.registerStatus == '4') {
|
||
return (
|
||
<>已退出</>
|
||
)
|
||
} else {
|
||
if (record.downloadStatus == '1') {
|
||
return (
|
||
<>已下载</>
|
||
)
|
||
} else if (record.downloadStatus == '2') {
|
||
return (
|
||
<>已投标</>
|
||
)
|
||
} else {
|
||
if (record.payStatus == '2') {
|
||
return (
|
||
<>已付款</>
|
||
)
|
||
} else if (record.payStatus == '1') {
|
||
return (
|
||
<>未付款</>
|
||
)
|
||
}
|
||
}
|
||
}
|
||
},
|
||
},
|
||
{
|
||
title: '操作',
|
||
width: '15%',
|
||
render: (text: any, record: any) => (
|
||
<Space>
|
||
<Button type="link" danger onClick={() => lookDetail(record)}>查看详情</Button>
|
||
</Space>
|
||
),
|
||
},
|
||
];
|
||
const detailColumns: any[] = [ // 标包详情
|
||
{
|
||
title: '序号',
|
||
render: (text: any, record: any, index: any) => `${index + 1}`
|
||
},
|
||
{
|
||
title: '标包编号',
|
||
dataIndex: 'bidSectBizNum',
|
||
},
|
||
{
|
||
title: '标段(包)名称',
|
||
dataIndex: 'bidSectName',
|
||
},
|
||
{
|
||
title: '标包分类',
|
||
dataIndex: 'bidSectTypeDict',
|
||
},
|
||
{
|
||
title: '购标联系人',
|
||
dataIndex: 'contactName',
|
||
},
|
||
{
|
||
title: '当前状态',
|
||
dataIndex: 'downloadStatus',
|
||
render: (text: any, record: any) => {
|
||
if (record.downloadStatus == '0') {
|
||
return (
|
||
<>未下载</>
|
||
)
|
||
} else if (record.downloadStatus == '1') {
|
||
return (
|
||
<>已下载</>
|
||
)
|
||
} else if (record.downloadStatus == '2') {
|
||
return (
|
||
<>已上传投标文件</>
|
||
)
|
||
} else if (record.downloadStatus == '3') {
|
||
return (
|
||
<>已撤回</>
|
||
)
|
||
}
|
||
},
|
||
}
|
||
];
|
||
const downloadColumns: any[] = [ // 标书下载记录
|
||
{
|
||
title: '序号',
|
||
width: 80,
|
||
render: (text: any, record: any, index: any) => `${index + 1}`
|
||
},
|
||
{
|
||
title: '标包编号',
|
||
dataIndex: 'bidSectBizNum',
|
||
},
|
||
{
|
||
title: '版本',
|
||
dataIndex: 'downloadVersion',
|
||
},
|
||
{
|
||
title: '下载时间',
|
||
dataIndex: 'downloadTime',
|
||
},
|
||
{
|
||
title: '下载人',
|
||
dataIndex: 'updownUserName',
|
||
},
|
||
{
|
||
title: '下载文件名',
|
||
width: '20%',
|
||
dataIndex: 'fileName',
|
||
}
|
||
];
|
||
|
||
const callback = (key: any) => {
|
||
console.log(key);
|
||
}
|
||
|
||
const lookDetail = (val: any) => { // 购标及应答情况查看-查看详情
|
||
setDetailVisible(true)
|
||
setCompanyName(val.companyName)
|
||
setDownloadStatus(val.downloadStatus)
|
||
setContactName(val.contactName)
|
||
getDetail(val.id).then((res) => {
|
||
if (res.code == 200) {
|
||
setDetailList(res.data.projectSection)
|
||
setDownloadList(res.data.bizUpdownRecords)
|
||
}
|
||
})
|
||
}
|
||
|
||
useEffect(() => {
|
||
let projectId = getProId()
|
||
getPayandreply(projectId).then((res) => {
|
||
if (res.code == 200) {
|
||
setPackageList(res.data)
|
||
}
|
||
})
|
||
}, []);
|
||
|
||
return (
|
||
<>
|
||
<div className="bidContent">
|
||
<Button type="primary" danger>导出购标信息</Button>
|
||
{
|
||
packageList.map((item: any, index: any) => {
|
||
return (
|
||
<Collapse className='m10' defaultActiveKey={['1']} onChange={callback}>
|
||
<Panel header={item.sectionVO.bsName} key="1">
|
||
<div>
|
||
<Table pagination={false} columns={columns} dataSource={item.bizSupplierRegisters} />
|
||
</div>
|
||
</Panel>
|
||
</Collapse>
|
||
)
|
||
})
|
||
}
|
||
<Modal // 查看详情
|
||
title="购标信息"
|
||
width={800}
|
||
visible={detailVisible}
|
||
onCancel={() => setDetailVisible(false)}
|
||
footer={null}
|
||
>
|
||
<div className="relative">
|
||
<Collapse className='m10' defaultActiveKey={['1']}>
|
||
<Panel header="购标申请信息" key="1">
|
||
<div className="address">
|
||
<p>单位名称:{companyName}</p>
|
||
</div>
|
||
</Panel>
|
||
</Collapse>
|
||
</div>
|
||
<div className="relative">
|
||
<Collapse className='m10' defaultActiveKey={['1']}>
|
||
<Panel header="标包详情" key="1">
|
||
{
|
||
detailList.map((val: any, index: any) => {
|
||
val.contactName = contactName
|
||
val.downloadStatus = downloadStatus
|
||
})
|
||
}
|
||
<Table
|
||
pagination={false}
|
||
columns={detailColumns}
|
||
dataSource={detailList}
|
||
className="mt10"
|
||
/>
|
||
</Panel>
|
||
</Collapse>
|
||
</div>
|
||
<div className="relative">
|
||
<Collapse className='m10' defaultActiveKey={['1']}>
|
||
<Panel header="标书下载记录" key="1">
|
||
{
|
||
downloadList.map((val: any, index: any) => {
|
||
val.bidSectBizNum = detailList[0].bidSectBizNum
|
||
})
|
||
}
|
||
<Table
|
||
pagination={false}
|
||
columns={downloadColumns}
|
||
dataSource={downloadList}
|
||
className="mt10"
|
||
/>
|
||
</Panel>
|
||
</Collapse>
|
||
</div>
|
||
</Modal>
|
||
</div>
|
||
</>
|
||
)
|
||
}
|
||
export default Index |