Files
fe_service_ebtp_frontend/src/pages/Tender/BiddingResponse/index.tsx

462 lines
15 KiB
TypeScript
Raw Normal View History

2020-12-23 11:14:35 +08:00
import React, { useState, useEffect } from 'react';
2023-05-06 16:42:17 +08:00
import { Button, Table, Space, Modal, Collapse, Popover, Typography } from 'antd';
2020-12-23 11:14:35 +08:00
import { getPayandreply, getDetail } from './service';
import '@/assets/ld_style.less';
2022-03-10 14:24:13 +08:00
import { getProId, getProMethod, getDicData } from '@/utils/session';
import FileDown from '@/utils/Download';
2022-09-28 09:52:13 +08:00
import { getURLInformation, multipleTypeTransform, proTableValueEnum } from '@/utils/CommonUtils';
2022-03-10 14:24:13 +08:00
import { btnAuthority } from '@/utils/authority';
import ProTable from '@ant-design/pro-table';
import { AlertOutlined, InfoCircleOutlined } from '@ant-design/icons';
2020-12-23 11:14:35 +08:00
const { Panel } = Collapse;
2023-05-06 16:42:17 +08:00
const { Text } = Typography;
2020-12-23 11:14:35 +08:00
2022-03-10 14:24:13 +08:00
let columns: any = [], detailColumns: any = [], downloadColumns: any[]
let modelTit: string, tit1: string, tit2: string, tit3: string, contactListName: string, contactTelephone: string, contactEmail: string, bidSectBizNum: string, bidSectName: string, bidSectTypeDict: string, bidcontactName: string, dowSectBizNum: string, exportBtn: string;
2020-12-23 11:14:35 +08:00
const Index: React.FC<{}> = () => {
2022-03-10 14:24:13 +08:00
const [detailList, setDetailList] = useState<any>([]); // 标段详情
2021-01-16 11:29:42 +08:00
const [downloadList, setDownloadList] = useState<any>([]); // 标书下载记录
2020-12-23 11:14:35 +08:00
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>(); // 联系人姓名
2022-03-10 14:24:13 +08:00
const projectType = getURLInformation('roomType') ? getURLInformation('roomType') : '2';
const MethodDict = getProMethod(); //获取采购方式
const modalHeight = (innerHeight * 96) / 100;
//获取字典
const getDict: any = getDicData();
const dictData = JSON.parse(getDict);
if (MethodDict == "procurement_mode_1" || MethodDict == "procurement_mode_2") {
modelTit = '购标信息'
tit1 = '购标申请信息'
tit2 = '标段详情'
tit3 = '标书下载记录'
contactListName = '购标联系人'
contactTelephone = '购标联系人电话'
contactEmail = '购标联系人邮箱'
bidSectBizNum = '标段编号'
bidSectName = '标段名称'
bidSectTypeDict = '标段分类'
bidcontactName = '标段联系人'
dowSectBizNum = '标段编号'
exportBtn = '导出购标信息'
} else if (MethodDict == "procurement_mode_5" || MethodDict == "procurement_mode_6" || MethodDict == "procurement_mode_3" || MethodDict == "procurement_mode_9") {
modelTit = '缴费信息'
tit1 = '缴费申请信息'
tit2 = '采购包详情'
tit3 = '采购文件下载记录'
contactListName = '缴费联系人'
contactTelephone = '缴费联系人电话'
contactEmail = '缴费联系人邮箱'
bidSectBizNum = '采购包编号'
bidSectName = '采购包名称'
bidSectTypeDict = '采购包分类'
bidcontactName = '采购包联系人'
dowSectBizNum = '采购文件编号'
exportBtn = '导出缴费信息'
} else if (MethodDict == "procurement_mode_7") { // 询价
modelTit = '缴费信息'
tit1 = '缴费申请信息'
tit2 = '采购包详情'
tit3 = '询价文件下载记录'
contactListName = '联系人'
contactTelephone = '联系人电话'
contactEmail = '联系人邮箱'
bidSectBizNum = '采购包编号'
bidSectName = '采购包名称'
bidSectTypeDict = '采购包分类'
bidcontactName = '采购包联系人'
dowSectBizNum = '询价文件编号'
exportBtn = '导出信息'
} else if (MethodDict == "procurement_mode_4") {
modelTit = '缴费信息'
tit1 = '缴费申请信息'
tit2 = '包件详情'
tit3 = '招募文件下载记录'
contactListName = '缴费联系人'
contactTelephone = '缴费联系人电话'
contactEmail = '缴费联系人邮箱'
bidSectBizNum = '包件编号'
bidSectName = '包件名称'
bidSectTypeDict = '包件分类'
bidcontactName = '包件联系人'
dowSectBizNum = '招募文件编号'
exportBtn = '导出缴费信息'
} else if (MethodDict == "procurement_mode_8") {
modelTit = '缴费信息'
tit1 = '缴费申请信息'
tit2 = '标段详情'
tit3 = '标书下载记录'
contactListName = '缴费联系人'
contactTelephone = '缴费联系人电话'
contactEmail = '缴费联系人邮箱'
bidSectBizNum = '标段编号'
bidSectName = '标段名称'
bidSectTypeDict = '标段分类'
bidcontactName = '标段联系人'
dowSectBizNum = '标段编号'
exportBtn = '导出缴费信息'
}
2020-12-23 11:14:35 +08:00
2022-03-10 14:24:13 +08:00
columns = [ // 标段列表
2020-12-23 11:14:35 +08:00
{
title: '序号',
2022-03-10 14:24:13 +08:00
width: 50,
2020-12-23 11:14:35 +08:00
render: (text: any, record: any, index: any) => `${index + 1}`
},
{
title: '单位名称',
2021-01-16 11:29:42 +08:00
width: '25%',
2020-12-23 11:14:35 +08:00
dataIndex: 'companyName',
2023-05-06 16:42:17 +08:00
render: (_: any, record: any, index: any) => (
<>
{_}
<Popover
content={
<Typography style={{ width: "282px" }}>
<Text style={{ display: 'block', color: "rgb(245,156,38)" }}></Text>
<Text ><Text underline>{record?.supplierCreatetime && record?.supplierCreatetime.foundTime}</Text></Text>
</Typography>
}
>
{(record?.supplierCreatetime && record?.supplierCreatetime.toPayTime === 0) && <AlertOutlined style={{ color: "rgb(245,156,38)", marginLeft: 6 }} />}
</Popover>
{record?.supplierCreatetime && record?.supplierCreatetime.foundTime === null ? (
<Popover
content={
<Typography>
<Text style={{ display: 'block', color: "rgb(245,156,38)" }}></Text>
<Text></Text>
</Typography>
}
>
<InfoCircleOutlined style={{ color: "rgb(245,156,38)", marginLeft: 6 }} />
</Popover>
) : null}
2023-05-06 16:42:17 +08:00
</>
)
2020-12-23 11:14:35 +08:00
},
{
2022-03-10 14:24:13 +08:00
title: contactListName,
2021-01-16 11:29:42 +08:00
width: '15%',
2020-12-23 11:14:35 +08:00
dataIndex: 'contactName',
},
{
2022-03-10 14:24:13 +08:00
title: contactTelephone,
2021-01-16 11:29:42 +08:00
width: '20%',
2020-12-23 11:14:35 +08:00
dataIndex: 'contactTelephone',
},
2022-03-10 14:24:13 +08:00
{
title: contactEmail,
width: '20%',
dataIndex: 'contactEmail',
},
2020-12-23 11:14:35 +08:00
{
title: '当前状态',
2021-01-16 11:29:42 +08:00
width: '15%',
render: (text: any, record: any) => {
2022-03-10 14:24:13 +08:00
if (MethodDict == "procurement_mode_1" || MethodDict == "procurement_mode_2") {
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 (
<></>
)
}
}
}
} else if (MethodDict == "procurement_mode_7") {
2021-01-16 11:29:42 +08:00
if (record.downloadStatus == '1') {
return (
<></>
)
} else if (record.downloadStatus == '2') {
2022-03-10 14:24:13 +08:00
if (record.offerTotalPrice == null || record.offerTotalPrice == undefined || record.offerTotalPrice == "") {
return (
<></>
)
} else {
return (
<></>
)
}
} else {
2021-01-16 11:29:42 +08:00
return (
2022-03-10 14:24:13 +08:00
<></>
)
}
} else {
if (record.registerStatus == '4') {
return (
<>退</>
2021-01-16 11:29:42 +08:00
)
} else {
2022-03-10 14:24:13 +08:00
if (record.downloadStatus == '1') {
2021-01-16 11:29:42 +08:00
return (
2022-03-10 14:24:13 +08:00
<></>
2021-01-16 11:29:42 +08:00
)
2022-03-10 14:24:13 +08:00
} else if (record.downloadStatus == '2') {
2021-01-16 11:29:42 +08:00
return (
2022-03-10 14:24:13 +08:00
<></>
2021-01-16 11:29:42 +08:00
)
2022-03-10 14:24:13 +08:00
} else {
if (record.payStatus == '2') {
return (
<></>
)
} else if (record.payStatus == '1') {
return (
<></>
)
}
2021-01-16 11:29:42 +08:00
}
}
2020-12-23 11:14:35 +08:00
}
2021-01-16 11:29:42 +08:00
},
2020-12-23 11:14:35 +08:00
},
{
title: '操作',
2021-01-16 11:29:42 +08:00
width: '15%',
2020-12-23 11:14:35 +08:00
render: (text: any, record: any) => (
<Space>
2022-03-10 14:24:13 +08:00
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="link" danger onClick={() => lookDetail(record)}></Button>
2020-12-23 11:14:35 +08:00
</Space>
),
},
];
2022-03-10 14:24:13 +08:00
detailColumns = [ // 标段详情
2020-12-23 11:14:35 +08:00
{
title: '序号',
2022-03-10 14:24:13 +08:00
width: 50,
2020-12-23 11:14:35 +08:00
render: (text: any, record: any, index: any) => `${index + 1}`
},
{
2022-03-10 14:24:13 +08:00
title: bidSectBizNum,
2020-12-23 11:14:35 +08:00
dataIndex: 'bidSectBizNum',
},
{
2022-03-10 14:24:13 +08:00
title: bidSectName,
2020-12-23 11:14:35 +08:00
dataIndex: 'bidSectName',
},
{
2022-03-10 14:24:13 +08:00
title: bidSectTypeDict,
dataIndex: 'procurementTypeDict',
2022-09-28 09:52:13 +08:00
render: (_: any, record: any) => multipleTypeTransform(record.procurementTypeDict, proTableValueEnum(dictData['procurement_type=entrust'])),
2020-12-23 11:14:35 +08:00
},
{
2022-03-10 14:24:13 +08:00
title: bidcontactName,
2020-12-23 11:14:35 +08:00
dataIndex: 'contactName',
},
{
title: '当前状态',
dataIndex: 'downloadStatus',
2021-01-16 11:29:42 +08:00
render: (text: any, record: any) => {
2022-03-10 14:24:13 +08:00
if (MethodDict == "procurement_mode_1" || MethodDict == "procurement_mode_2") {
if (record.downloadStatus == '0') {
return (
<></>
)
} else if (record.downloadStatus == '1') {
return (
<></>
)
} else if (record.downloadStatus == '2') {
return (
<></>
)
} else if (record.downloadStatus == '3') {
return (
<></>
)
}
} else {
if (record.downloadStatus == '0') {
return (
<></>
)
} else if (record.downloadStatus == '1') {
return (
<></>
)
} else if (record.downloadStatus == '2') {
return (
<></>
)
} else if (record.downloadStatus == '3') {
return (
<></>
)
}
2021-01-16 11:29:42 +08:00
}
},
2020-12-23 11:14:35 +08:00
}
];
2022-03-10 14:24:13 +08:00
downloadColumns = [ // 标书下载记录
2020-12-23 11:14:35 +08:00
{
title: '序号',
2022-03-10 14:24:13 +08:00
width: 50,
2020-12-23 11:14:35 +08:00
render: (text: any, record: any, index: any) => `${index + 1}`
},
{
2022-03-10 14:24:13 +08:00
title: dowSectBizNum,
2020-12-23 11:14:35 +08:00
dataIndex: 'bidSectBizNum',
},
{
title: '下载时间',
dataIndex: 'downloadTime',
},
{
title: '下载人',
dataIndex: 'updownUserName',
},
{
title: '下载文件名',
2021-01-16 11:29:42 +08:00
width: '20%',
2020-12-23 11:14:35 +08:00
dataIndex: 'fileName',
}
];
const callback = (key: any) => {
}
const lookDetail = (val: any) => { // 购标及应答情况查看-查看详情
setDetailVisible(true)
setCompanyName(val.companyName)
setDownloadStatus(val.downloadStatus)
setContactName(val.contactName)
2022-03-10 14:24:13 +08:00
let data = {
roomType: projectType
}
getDetail(val.id, data).then((res) => {
2020-12-23 11:14:35 +08:00
if (res.code == 200) {
setDetailList(res.data.projectSection)
setDownloadList(res.data.bizUpdownRecords)
}
})
}
useEffect(() => {
2021-01-16 11:29:42 +08:00
let projectId = getProId()
2022-03-10 14:24:13 +08:00
let data = {
roomType: projectType
}
getPayandreply(projectId, data).then((res) => {
2020-12-23 11:14:35 +08:00
if (res.code == 200) {
setPackageList(res.data)
}
})
}, []);
return (
<>
2022-03-10 14:24:13 +08:00
<div className="biddingResponse">
<div className="exportBtn">
</div>
2020-12-23 11:14:35 +08:00
{
packageList.map((item: any, index: any) => {
return (
2022-03-10 14:24:13 +08:00
<Collapse defaultActiveKey={['0']} onChange={callback}>
<Panel header={item.sectionVO.bsName} key={index}>
2020-12-23 11:14:35 +08:00
<div>
2022-03-10 14:24:13 +08:00
{
item.bizSupplierRegisters ?
<div hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} className="mb16">
<FileDown apiUrl={`/api/biz-service-ebtp-tender/v1/supplier_register/export/supplier/${item.sectionVO.bsId}/${item.bizSupplierRegisters[0].assessRoomId}?roomType=${projectType}`} fileName={''} type='xlsx' method='GET' btnName={exportBtn} />
</div> : null
}
<Table size='small' pagination={false} columns={columns} dataSource={item.bizSupplierRegisters} />
2020-12-23 11:14:35 +08:00
</div>
</Panel>
</Collapse>
)
})
}
<Modal // 查看详情
2022-03-10 14:24:13 +08:00
// title="购标信息"
title={modelTit}
2020-12-23 11:14:35 +08:00
width={800}
visible={detailVisible}
onCancel={() => setDetailVisible(false)}
2022-03-10 14:24:13 +08:00
footer={[<Button onClick={() => setDetailVisible(false)}></Button>]}
centered
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
2020-12-23 11:14:35 +08:00
>
<div className="relative">
2022-03-10 14:24:13 +08:00
<Collapse defaultActiveKey={['1']}>
<Panel header={tit1} key="1">
2020-12-23 11:14:35 +08:00
<div className="address">
<p>{companyName}</p>
</div>
</Panel>
</Collapse>
</div>
<div className="relative">
2022-03-10 14:24:13 +08:00
<Collapse defaultActiveKey={['1']}>
<Panel header={tit2} key="1">
2020-12-23 11:14:35 +08:00
{
detailList.map((val: any, index: any) => {
val.contactName = contactName
val.downloadStatus = downloadStatus
})
}
2022-03-10 14:24:13 +08:00
<ProTable
size='small'
2020-12-23 11:14:35 +08:00
pagination={false}
columns={detailColumns}
dataSource={detailList}
className="mt10"
2022-03-10 14:24:13 +08:00
toolBarRender={false}
search={false}
2020-12-23 11:14:35 +08:00
/>
</Panel>
</Collapse>
</div>
<div className="relative">
2022-03-10 14:24:13 +08:00
<Collapse defaultActiveKey={['1']}>
<Panel header={tit3} key="1">
2020-12-23 11:14:35 +08:00
{
downloadList.map((val: any, index: any) => {
val.bidSectBizNum = detailList[0].bidSectBizNum
})
}
<Table
2022-03-10 14:24:13 +08:00
size='small'
2020-12-23 11:14:35 +08:00
pagination={false}
columns={downloadColumns}
dataSource={downloadList}
className="mt10"
/>
</Panel>
</Collapse>
</div>
</Modal>
</div>
</>
)
}
export default Index