Merge branch 'master' of http://10.124.128.2:8888/eshop/fe_service_ebtp_frontend into master-风控限定供应商
This commit is contained in:
@ -0,0 +1,121 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Collapse, Table } from 'antd';
|
||||
import { getBidDocSmartCheckList } from '../service';
|
||||
import { getRoomId, getSessionRoleData } from '@/utils/session';
|
||||
|
||||
interface BidDocSmartCheckFormModalProps {
|
||||
modalVisible: boolean;
|
||||
values: any;
|
||||
onCancel: any;
|
||||
}
|
||||
|
||||
const BidDocSmartCheckFormModal: React.FC<BidDocSmartCheckFormModalProps> = (props) => {
|
||||
|
||||
const [bidDocSmartCheckList, setBidDocSmartCheckList] = useState([]);
|
||||
|
||||
//查看详情窗口record
|
||||
const [juryTableShow, setJuryTableShow] = useState<boolean>(true);
|
||||
|
||||
//是否显示法人及投标人名称对比结果;false-不显示结果,true-显示结果
|
||||
const [checkLegalAndNameResult, setCheckLegalAndNameResult] = useState<boolean>(true);
|
||||
|
||||
var roleId = getSessionRoleData().roleCode;
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
setJuryTableShow(false);
|
||||
getWarningList();
|
||||
if (roleId === "ebtp-expert") {
|
||||
setJuryTableShow(false);
|
||||
}
|
||||
}, [])
|
||||
|
||||
function callback(key: any) {
|
||||
//getSessionUserData.roleIds;
|
||||
}
|
||||
function visibleValue(key: any) {
|
||||
if (key) {
|
||||
return <span style={{ color: 'green' }}>√</span>;
|
||||
} else {
|
||||
return <span style={{ color: 'red' }}>×</span>;
|
||||
}
|
||||
}
|
||||
function visibleLegalAndNameValue(key: any) {
|
||||
//false-不显示结果,true-显示结果
|
||||
if (checkLegalAndNameResult) {
|
||||
if (key) {
|
||||
return <span style={{ color: 'green' }}>√</span>;
|
||||
} else {
|
||||
return <span style={{ color: 'red' }}>×</span>;
|
||||
}
|
||||
} else {
|
||||
return <span></span>;
|
||||
}
|
||||
}
|
||||
|
||||
const BidDocSmartCheckColumns = [
|
||||
{ title: '序号', dataIndex: 'num', width: 60, render: (text: any, record: any, index: any) => `${index + 1}` },
|
||||
{ title: '供应商名称', dataIndex: 'companyName', },
|
||||
{
|
||||
title: '供应商投标文件密封性检查', dataIndex: 'docTightnessCheck', render: (_: any, record: any) => {
|
||||
return visibleValue(record.docTightnessCheck);
|
||||
}
|
||||
},
|
||||
{ title: '供应商投标文件的完整性', dataIndex: 'docIntegrityCheck', render: (_: any, record: any) => {
|
||||
return visibleValue(record.docIntegrityCheck);
|
||||
}},
|
||||
{ title: 'Mac、IP地址校验', dataIndex: 'macIPCheck', render: (_: any, record: any) => {
|
||||
return visibleValue(record.macIPCheck);
|
||||
}},
|
||||
{ title: '投标保证金缴纳', dataIndex: 'ensureStatus', render: (_: any, record: any) => {
|
||||
return visibleValue(record.ensureStatus);
|
||||
}},
|
||||
{ title: '不同投标人间法定代表人、法定代表授权委托人对比', dataIndex: 'supplierLegalCheck', render: (_: any, record: any) => {
|
||||
return visibleLegalAndNameValue(record.supplierLegalCheck);
|
||||
}},
|
||||
{ title: '投标人名称与系统操作投标人名称', dataIndex: 'supplierNameCheck', render: (_: any, record: any) => {
|
||||
return visibleLegalAndNameValue(record.supplierNameCheck);
|
||||
}},
|
||||
];
|
||||
|
||||
|
||||
const ret = { "code": 200, "success": true, "message": "success", "data": []}
|
||||
const getWarningList = async () => {
|
||||
let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId')
|
||||
|
||||
//投标文件智能审查
|
||||
await getBidDocSmartCheckList(roomId).then((res) => {
|
||||
if (res.success == true) {
|
||||
setCheckLegalAndNameResult(res?.data?.isCheckLegalAndName);
|
||||
if(res?.data?.isCheckOpen){
|
||||
setJuryTableShow(true);
|
||||
setBidDocSmartCheckList(res.data?.checkResults)
|
||||
}
|
||||
} else {
|
||||
setBidDocSmartCheckList(ret.data);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{juryTableShow ?
|
||||
<Collapse onChange={callback}>
|
||||
<Collapse.Panel header="投标文件智能审查" key="3">
|
||||
{<span style={{ color: 'red' }}>注:"√"为审查项智能审查通过,"×"为审查项智能审查存在风险</span>}
|
||||
{
|
||||
<Table
|
||||
columns={BidDocSmartCheckColumns}
|
||||
dataSource={bidDocSmartCheckList}
|
||||
pagination={false}//分页
|
||||
></Table>
|
||||
|
||||
}
|
||||
</Collapse.Panel>
|
||||
</Collapse>
|
||||
: null}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default BidDocSmartCheckFormModal;
|
@ -0,0 +1,70 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Modal, Popover, Typography } from 'antd';
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons';
|
||||
import ViewRishFormModal from './ViewRishFormModal';
|
||||
|
||||
interface MACAddressPromptProps {
|
||||
type: string; //score-打分 other-其他
|
||||
companyName?: string //公司名称
|
||||
}
|
||||
|
||||
const MACAddressPrompt: React.FC<MACAddressPromptProps> = (props) => {
|
||||
const { type, companyName } = props;
|
||||
const { Text, Link } = Typography;
|
||||
const modalHeight = window.innerHeight * 96 / 100;
|
||||
//Modal visible
|
||||
const [visible, setVisible] = useState<boolean>(false);
|
||||
|
||||
return (
|
||||
<>
|
||||
{type == 'score' ? (
|
||||
<Modal
|
||||
destroyOnClose
|
||||
visible={visible}
|
||||
onCancel={() => setVisible(false)}
|
||||
style={{ maxHeight: modalHeight }}
|
||||
bodyStyle={{ maxHeight: modalHeight - 54, overflowY: 'auto', }}
|
||||
width={'80%'}
|
||||
centered
|
||||
closable={false}
|
||||
cancelText="关闭"
|
||||
okButtonProps={{ hidden: true }}
|
||||
>
|
||||
<ViewRishFormModal activeKey={true} />
|
||||
</Modal>
|
||||
) : (
|
||||
<Modal
|
||||
destroyOnClose
|
||||
visible={visible}
|
||||
onCancel={() => setVisible(false)}
|
||||
centered
|
||||
bodyStyle={{ padding: 40 }}
|
||||
footer={null}
|
||||
>
|
||||
<Text strong>{companyName}与其他供应商MAC地址相同,根据联通《关于进一步防范围标串标风险的通知》(WTZ2019110816765),如不同供应商MAC地址相同,视同围标、串标!</Text>
|
||||
</Modal>
|
||||
)}
|
||||
<Popover
|
||||
content={
|
||||
<Typography>
|
||||
<Text strong style={{ display: 'block', }}>风险点</Text>
|
||||
<Text strong style={{ fontSize: 64, lineHeight: '8px', float: 'left', color: '#b30000' }}>·</Text>
|
||||
<Link
|
||||
href="#"
|
||||
onClick={() => {
|
||||
setVisible(true);
|
||||
}}
|
||||
underline={true}
|
||||
>
|
||||
与其他供应商MAC地址重复
|
||||
</Link>
|
||||
</Typography>
|
||||
}
|
||||
>
|
||||
<ExclamationCircleOutlined style={{ color: '#b30000', marginLeft: 4 }} />
|
||||
</Popover>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default MACAddressPrompt;
|
@ -5,9 +5,10 @@ import { getProMethod, getRoomId } from '@/utils/session';
|
||||
import FileDown from '@/utils/Download';
|
||||
|
||||
interface ViewRishFormModalProps {
|
||||
modalVisible: boolean;
|
||||
values: any;
|
||||
onCancel: any;
|
||||
modalVisible?: boolean;
|
||||
values?: any;
|
||||
onCancel?: any;
|
||||
activeKey?: boolean;
|
||||
}
|
||||
|
||||
|
||||
@ -22,7 +23,7 @@ const ViewRishFormModal: React.FC<ViewRishFormModalProps> = (props) => {
|
||||
} else {
|
||||
name1 = "应答";
|
||||
}
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
getWarningList();
|
||||
}, [])
|
||||
@ -35,12 +36,12 @@ const ViewRishFormModal: React.FC<ViewRishFormModalProps> = (props) => {
|
||||
{ title: '序号', width: '10%', render: (text: any, record: any, index: any) => `${index + 1}` },
|
||||
{ title: '供应商名称', width: '20%', dataIndex: 'companyName', },
|
||||
{
|
||||
title: 'IP地址', width: 200, dataIndex: 'ip', render: (_ : any, record: any) => {
|
||||
title: 'IP地址', width: 200, dataIndex: 'ip', render: (_: any, record: any) => {
|
||||
return <div style={{ wordBreak: 'break-all', wordWrap: 'break-word' }}>{record.ip}</div>;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: 'MAC地址', width: '20%', dataIndex: 'mac', render: (_ : any, record: any) => {
|
||||
title: 'MAC地址', width: '20%', dataIndex: 'mac', render: (_: any, record: any) => {
|
||||
return <div style={{ wordBreak: 'break-all', wordWrap: 'break-word' }}>{record.mac}</div>;
|
||||
}
|
||||
},
|
||||
@ -51,7 +52,7 @@ const ViewRishFormModal: React.FC<ViewRishFormModalProps> = (props) => {
|
||||
{ title: '序号', width: '10%', render: (text: any, record: any, index: any) => `${index + 1}` },
|
||||
{ title: '供应商名称', width: '25%', dataIndex: 'companyName', },
|
||||
{
|
||||
title: 'MAC地址', width: '20%', dataIndex: 'mac', render: (_ : any, record: any) => {
|
||||
title: 'MAC地址', width: '20%', dataIndex: 'mac', render: (_: any, record: any) => {
|
||||
return <div style={{ wordBreak: 'break-all', wordWrap: 'break-word' }}>{record.mac}</div>;
|
||||
}
|
||||
},
|
||||
@ -77,7 +78,7 @@ const ViewRishFormModal: React.FC<ViewRishFormModalProps> = (props) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Collapse onChange={callback}>
|
||||
<Collapse onChange={callback} defaultActiveKey={props?.activeKey ? ['1'] : []}>
|
||||
<Collapse.Panel header={`${name1}文件制作地址日志信息查看`} key="1">
|
||||
{rishList?.length == 0
|
||||
? <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
|
||||
@ -124,7 +125,7 @@ const ViewRishFormModal: React.FC<ViewRishFormModalProps> = (props) => {
|
||||
</Collapse>
|
||||
);
|
||||
}) : (
|
||||
<Card bordered={false} bodyStyle={{padding: '16px 24px'}}>
|
||||
<Card bordered={false} bodyStyle={{ padding: '16px 24px' }}>
|
||||
<p>MAC地址相同的供应商信息如下: </p>
|
||||
<Table
|
||||
size='small'
|
||||
|
@ -6,6 +6,7 @@ import ViewReviewResultFormModal from './components/ViewReviewResultFormModal';
|
||||
import ViewJuryScoringRemindFormModal from './components/ViewJuryScoringRemindFormModal';
|
||||
import ViewJuryScoringAnalysisFormModal from './components/ViewJuryScoringAnalysisFormModal';
|
||||
import ViewRiskSupplierModal from './components/ViewRiskSupplierModal';
|
||||
import BidDocSmartCheckFormModal from './components/BidDocSmartCheckFormModal';
|
||||
|
||||
|
||||
const Sing: React.FC<{}> = () => {
|
||||
@ -42,7 +43,12 @@ const Sing: React.FC<{}> = () => {
|
||||
const [BidRiskSupplierVisible, setBidRiskSupplierVisible] = useState<any>(false);
|
||||
//风控中心-风险限定供应商record
|
||||
const [BidRiskSupplierValues, setRiskSupplierValues] = useState<any>({});
|
||||
return (
|
||||
|
||||
//投标文件智能审查
|
||||
const [BidDocSmartCheckFormVisible, setBidDocSmartCheckFormVisible] = useState<any>(false);
|
||||
//查看详情窗口record
|
||||
const [BidDocSmartCheckValues, setBidDocSmartCheckValues] = useState<any>({});
|
||||
return (
|
||||
<>
|
||||
{
|
||||
ViewRishFormModal ? (
|
||||
@ -68,74 +74,87 @@ const Sing: React.FC<{}> = () => {
|
||||
}}
|
||||
>
|
||||
|
||||
</ViewQuoteWarningFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewBlacklistFormModal ? (
|
||||
<ViewBlacklistFormModal
|
||||
modalVisible={ViewBlacklistFormVisible}
|
||||
values={ViewBlacklistValues}
|
||||
onCancel={() => {
|
||||
setViewBlacklistFormVisible(!ViewBlacklistFormVisible);
|
||||
setViewBlacklistValues({});
|
||||
}}
|
||||
>
|
||||
</ViewBlacklistFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewReviewResultFormModal ? (
|
||||
<ViewReviewResultFormModal
|
||||
modalVisible={ViewReviewResultFormVisible}
|
||||
values={ViewReviewResultValues}
|
||||
onCancel={() => {
|
||||
setViewReviewResultFormVisible(!ViewReviewResultFormVisible);
|
||||
setViewReviewResultValues({});
|
||||
}}
|
||||
>
|
||||
</ViewReviewResultFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewJuryScoringRemindFormModal ? (
|
||||
<ViewJuryScoringRemindFormModal
|
||||
modalVisible={ViewJuryScoringRemindFormVisible}
|
||||
values={ViewJuryScoringRemindValues}
|
||||
onCancel={() => {
|
||||
setViewJuryScoringRemindFormVisible(!ViewJuryScoringRemindFormVisible);
|
||||
setViewJuryScoringRemindValues({});
|
||||
}}
|
||||
>
|
||||
</ViewJuryScoringRemindFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewJuryScoringAnalysisFormModal ? (
|
||||
<ViewJuryScoringAnalysisFormModal
|
||||
modalVisible={ViewJuryScoringAnalysisFormVisible}
|
||||
values={ViewJuryScoringAnalysisValues}
|
||||
onCancel={() => {
|
||||
setViewJuryScoringAnalysisFormVisible(!ViewJuryScoringAnalysisFormVisible);
|
||||
setViewJuryScoringAnalysisValues({});
|
||||
}}
|
||||
>
|
||||
</ViewJuryScoringAnalysisFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewRiskSupplierModal ? (
|
||||
<ViewRiskSupplierModal
|
||||
modalVisible={BidRiskSupplierVisible}
|
||||
values={BidRiskSupplierValues}
|
||||
onCancel={() => {
|
||||
setBidRiskSupplierVisible(!BidRiskSupplierVisible);
|
||||
setRiskSupplierValues({});
|
||||
}}
|
||||
>
|
||||
</ViewRiskSupplierModal>
|
||||
) : null
|
||||
}
|
||||
</ViewQuoteWarningFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewBlacklistFormModal ? (
|
||||
<ViewBlacklistFormModal
|
||||
modalVisible={ViewBlacklistFormVisible}
|
||||
values={ViewBlacklistValues}
|
||||
onCancel={() => {
|
||||
setViewBlacklistFormVisible(!ViewBlacklistFormVisible);
|
||||
setViewBlacklistValues({});
|
||||
}}
|
||||
>
|
||||
</ViewBlacklistFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewReviewResultFormModal ? (
|
||||
<ViewReviewResultFormModal
|
||||
modalVisible={ViewReviewResultFormVisible}
|
||||
values={ViewReviewResultValues}
|
||||
onCancel={() => {
|
||||
setViewReviewResultFormVisible(!ViewReviewResultFormVisible);
|
||||
setViewReviewResultValues({});
|
||||
}}
|
||||
>
|
||||
</ViewReviewResultFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewJuryScoringRemindFormModal ? (
|
||||
<ViewJuryScoringRemindFormModal
|
||||
modalVisible={ViewJuryScoringRemindFormVisible}
|
||||
values={ViewJuryScoringRemindValues}
|
||||
onCancel={() => {
|
||||
setViewJuryScoringRemindFormVisible(!ViewJuryScoringRemindFormVisible);
|
||||
setViewJuryScoringRemindValues({});
|
||||
}}
|
||||
>
|
||||
</ViewJuryScoringRemindFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewJuryScoringAnalysisFormModal ? (
|
||||
<ViewJuryScoringAnalysisFormModal
|
||||
modalVisible={ViewJuryScoringAnalysisFormVisible}
|
||||
values={ViewJuryScoringAnalysisValues}
|
||||
onCancel={() => {
|
||||
setViewJuryScoringAnalysisFormVisible(!ViewJuryScoringAnalysisFormVisible);
|
||||
setViewJuryScoringAnalysisValues({});
|
||||
}}
|
||||
>
|
||||
</ViewJuryScoringAnalysisFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
BidDocSmartCheckFormModal ? (
|
||||
<BidDocSmartCheckFormModal
|
||||
modalVisible={BidDocSmartCheckFormVisible}
|
||||
values={BidDocSmartCheckValues}
|
||||
onCancel={() => {
|
||||
setBidDocSmartCheckFormVisible(!BidDocSmartCheckFormVisible);
|
||||
setBidDocSmartCheckValues({});
|
||||
}}
|
||||
>
|
||||
</BidDocSmartCheckFormModal>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
ViewRiskSupplierModal ? (
|
||||
<ViewRiskSupplierModal
|
||||
modalVisible={BidRiskSupplierVisible}
|
||||
values={BidRiskSupplierValues}
|
||||
onCancel={() => {
|
||||
setBidRiskSupplierVisible(!BidRiskSupplierVisible);
|
||||
setRiskSupplierValues({});
|
||||
}}
|
||||
>
|
||||
</ViewRiskSupplierModal>
|
||||
) : null
|
||||
}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
@ -61,6 +61,13 @@ export async function getBlackList(projectId:any,assessRoomId: any) { //黑名
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
export async function getBidDocSmartCheckList(assessRoomId: any) { //投标文件智能审查
|
||||
return request('/api/biz-service-ebtp-resps/v1/tfilewarning/getBidDocSmartCheck?assessRoomId='+`${assessRoomId}`, {
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
export async function getDeviatedWarnList(assessRoomId: any) { // 偏离度提醒
|
||||
return request('/api/biz-service-ebtp-rsms/v1/bid/deviated/warn/findBidDeviatedWarnListByRoomId/'+`${assessRoomId}`, {
|
||||
method: 'get'
|
||||
|
Reference in New Issue
Block a user