5.9 上传投标文件、应答情况查看页、评审打分页,评审汇总表,评审结果MAC强控
This commit is contained in:
@ -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 { CheckOutlined, CloseOutlined } from '@ant-design/icons';
|
||||
import { getProMethod, getRoomId } from '@/utils/session';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
import MACAddressPrompt from '@/pages/Evaluation/BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
interface BidPreliminarySummaryProps {
|
||||
totalSupplier: any;
|
||||
@ -168,7 +169,12 @@ const PreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
];
|
||||
columns.forEach((ele: any) => {
|
||||
tcolumns[4].children.push({
|
||||
title: ele.supplierRegisterName,
|
||||
title: (
|
||||
<>
|
||||
{ele.supplierRegisterName}
|
||||
{ele.macConflictStatus && <MACAddressPrompt type='other' companyName={ele.supplierRegisterName} />}
|
||||
</>
|
||||
),
|
||||
dataIndex: ele.supplierRegisterId,
|
||||
key: ele.supplierRegisterId,
|
||||
render: (value: any, record: any, index: any) => {
|
||||
|
@ -7,6 +7,7 @@ import FileDown from '@/utils/Download';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import FirstTrialTable from '../BidPreliminaryManager/module/FirstTrialTable';
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import MACAddressPrompt from '../../BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
const { TabPane } = Tabs;
|
||||
const { TextArea } = Input;
|
||||
@ -214,7 +215,7 @@ const Index: React.FC<{}> = () => {
|
||||
}
|
||||
getProgress({ ...date }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if(res.data == 100){
|
||||
if (res.data == 100) {
|
||||
submitApi()
|
||||
} else {
|
||||
message.error("您有未完成的打分项,请完成后再提交!")
|
||||
@ -237,7 +238,7 @@ const Index: React.FC<{}> = () => {
|
||||
}
|
||||
getProgress({ ...date }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
if(res.data == 100){
|
||||
if (res.data == 100) {
|
||||
setProcess(res.data)
|
||||
submitApi()
|
||||
} else {
|
||||
@ -359,7 +360,12 @@ const Index: React.FC<{}> = () => {
|
||||
totalSupplierColumns.slice(currentDate, currentDate + 3).map((item: any) => {
|
||||
supplierId.push(item.supplierRegisterId)
|
||||
newColumns.push({
|
||||
title: item.supplierRegisterName,
|
||||
title: (
|
||||
<>
|
||||
{item.supplierRegisterName}
|
||||
{item.macConflictStatus && <MACAddressPrompt type='score' />}
|
||||
</>
|
||||
),
|
||||
dataIndex: item.supplierRegisterId,
|
||||
render: (text: any, record: any) => {
|
||||
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
|
||||
|
@ -1,10 +1,11 @@
|
||||
import React, { useEffect, useImperativeHandle, useState } from 'react';
|
||||
import { Input, Pagination, Table } from 'antd';
|
||||
import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
||||
import { Input, Pagination, Select, Table } from 'antd';
|
||||
import '@/assets/ld_style.less';
|
||||
import { getSupplierScoreData, isCheckShow } from '../service';
|
||||
import { CheckOutlined, CloseOutlined } from '@ant-design/icons';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import { getProMethod, getRoomId } from '@/utils/session';
|
||||
import MACAddressPrompt from '@/pages/Evaluation/BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
interface BidPreliminarySummaryProps {
|
||||
totalSupplier?: any;
|
||||
@ -29,12 +30,15 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
const [tableDataSource, setTableDataSource] = useState<any[]>([]);
|
||||
//刷新参数
|
||||
const [count, setCount] = useState<number>(0);
|
||||
const tableDataRef = useRef<any[]>([]);
|
||||
const isShowRef = useRef<boolean>(false);
|
||||
tableDataRef.current = tableDataSource;
|
||||
const proMethod = getProMethod();//获取采购方式
|
||||
let showNameT: any = { tbr: '', pb: '', tb: '' }//投标人供应商
|
||||
if (proMethod === 'procurement_mode_1' || proMethod === 'procurement_mode_2') {//招标
|
||||
showNameT = { tbr: '投标人', pb: '评标', tb: '投标' };
|
||||
showNameT = { tbr: '投标人', pb: '评标', tb: '投标' };
|
||||
} else {
|
||||
showNameT = { tbr: '供应商', pb: '评审', tb: '应答' }
|
||||
showNameT = { tbr: '供应商', pb: '评审', tb: '应答' }
|
||||
}
|
||||
|
||||
const { TextArea } = Input;
|
||||
@ -76,6 +80,7 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
//判断采购方式是否符合
|
||||
isCheckShow(juryDataParams.assessRoomId).then((res) => {
|
||||
if (res.code == 200) {
|
||||
isShowRef.current = res.data;
|
||||
let count = 0;
|
||||
totalSupplier.forEach((ele: any) => {
|
||||
if (
|
||||
@ -133,6 +138,12 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
return pre
|
||||
}
|
||||
}, 0)
|
||||
for (const key in inner.earlyMap) {
|
||||
if (Object.prototype.hasOwnProperty.call(inner.earlyMap, key)) {
|
||||
const element = inner.earlyMap[key];
|
||||
element['originalResult'] = element.judgesResult;
|
||||
}
|
||||
}
|
||||
if (count == inner.length - 1) {
|
||||
count = 0
|
||||
} else {
|
||||
@ -232,7 +243,12 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
];
|
||||
columns.forEach((ele: any) => {
|
||||
tcolumns[4].children.push({
|
||||
title: ele.supplierRegisterName,
|
||||
title: (
|
||||
<>
|
||||
{ele.supplierRegisterName}
|
||||
{ele.macConflictStatus && <MACAddressPrompt type='other' companyName={ele.supplierRegisterName} />}
|
||||
</>
|
||||
),
|
||||
dataIndex: ele.supplierRegisterId,
|
||||
key: ele.supplierRegisterId,
|
||||
render: (value: any, record: any, index: any) => {
|
||||
@ -261,6 +277,7 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
return readOnly ? value.remarks : (!value.judgesResult ? <TextArea
|
||||
onBlur={(e) => {
|
||||
value.remarks = e.target.value
|
||||
setTableDataSource([...tableDataRef.current])
|
||||
}}
|
||||
maxLength={500}
|
||||
autoSize
|
||||
@ -268,7 +285,33 @@ const BidPreliminarySummary: React.FC<BidPreliminarySummaryProps> = (props) => {
|
||||
defaultValue={value.remarks}
|
||||
/> : null)
|
||||
} else {
|
||||
return value.judgesResult == true ? '合格' : '不合格';
|
||||
// return value.judgesResult == true ? '合格' : '不合格';
|
||||
return readOnly || !ele.macConflictStatus ? value.judgesResult ? '合格' : '不合格' : (<Select
|
||||
onChange={(e) => {
|
||||
value.judgesResult = !!e;
|
||||
tableDataRef.current[tableDataRef.current.length - 1][ele.supplierRegisterId].judgesResult = !!e;
|
||||
setTableDataSource([...tableDataRef.current])
|
||||
if (isShowRef.current) {
|
||||
let count = 0;
|
||||
totalSupplier.forEach((ele: any) => {
|
||||
if (tableDataRef.current[tableDataRef.current.length - 1][ele.supplierRegisterId].judgesResult) {
|
||||
count = count + 1;
|
||||
}
|
||||
});
|
||||
if (count < 3) {
|
||||
onSubmit(true)
|
||||
} else {
|
||||
onSubmit(false)
|
||||
}
|
||||
}
|
||||
}}
|
||||
options={[
|
||||
{ label: '合格', value: 1 },
|
||||
{ label: '不合格', value: 0 },
|
||||
]}
|
||||
style={{ width: '100px' }}
|
||||
defaultValue={value.judgesResult ? 1 : 0}
|
||||
/>)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -11,6 +11,7 @@ import FileDown from '@/utils/Download';
|
||||
import { getURLInformation, isEmpty } from '@/utils/CommonUtils';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import MACAddressPrompt from '../../BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
const { TabPane } = Tabs;
|
||||
const { SubMenu } = Menu;
|
||||
@ -444,7 +445,12 @@ const Index: React.FC<{}> = () => {
|
||||
totalSupplierColumns.slice(currentDate, currentDate + 3).map((item: any) => {
|
||||
supplierId.push(item.supplierRegisterId)
|
||||
newColumns.push({
|
||||
title: item.supplierRegisterName,
|
||||
title: (
|
||||
<>
|
||||
{item.supplierRegisterName}
|
||||
{item.macConflictStatus && <MACAddressPrompt type='other' companyName={item.supplierRegisterName} />}
|
||||
</>
|
||||
),
|
||||
dataIndex: item.supplierRegisterId,
|
||||
render: (text: any, record: any) => {
|
||||
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
|
||||
@ -751,6 +757,8 @@ const Index: React.FC<{}> = () => {
|
||||
supplierRegisterId: item?.supplierRegisterId,
|
||||
qualifiedStatus: obj?.judgesResult ? '1' : '2',
|
||||
remarks: obj?.judgesResult ? null : obj?.remarks,
|
||||
originalResult: obj?.originalResult ? '1' : '2',
|
||||
modifyResultStatus: obj?.judgesResult != obj?.originalResult,
|
||||
})
|
||||
});
|
||||
if (Error.length > 0) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Button, Card, DatePicker, Divider, Form, List, message, Modal, Progress, Spin } from "antd";
|
||||
import { Button, Card, DatePicker, Divider, Form, List, message, Modal, Popover, Progress, Spin, Typography } from "antd";
|
||||
import ProForm, {
|
||||
ModalForm,
|
||||
ProFormDateTimePicker,
|
||||
@ -8,9 +8,10 @@ import ProTable from "@ant-design/pro-table";
|
||||
import {
|
||||
ClockCircleOutlined,
|
||||
DownloadOutlined,
|
||||
ExclamationCircleOutlined,
|
||||
FullscreenExitOutlined,
|
||||
UnorderedListOutlined
|
||||
} from "@ant-design/icons/lib";
|
||||
} from "@ant-design/icons";
|
||||
import {
|
||||
getBiddingDocumentsDecryptList,
|
||||
DownFile,
|
||||
@ -57,6 +58,7 @@ const BiddingDocumentsDecrypt: React.FC<BiddingDocumentsDecryptProps> = (props)
|
||||
const [spinTip, spinTipSet] = useState<string>('请稍等...');//spin tip显示文字
|
||||
|
||||
const MethodDict = getProMethod();
|
||||
const { Title, Text } = Typography;
|
||||
//应答字段类型 评标,应答
|
||||
let responseType = MethodDict == "procurement_mode_1" || MethodDict == "procurement_mode_2" ? "投标" : "应答"
|
||||
let supplierType = MethodDict == "procurement_mode_1" || MethodDict == "procurement_mode_2" ? "投标人" : "供应商"
|
||||
@ -367,6 +369,26 @@ const BiddingDocumentsDecrypt: React.FC<BiddingDocumentsDecryptProps> = (props)
|
||||
dataIndex: 'companyName',
|
||||
valueType: 'text'
|
||||
},
|
||||
{
|
||||
title: (
|
||||
<span>
|
||||
同意MAC地址检测承诺书时间
|
||||
<Popover
|
||||
content={
|
||||
<Typography>
|
||||
<Title level={5}>承诺书内容:</Title>
|
||||
<Text style={{ display: 'inline-block', textIndent: '2em' }}>已阅读并承诺在采购招标过程中,不存在围标、串标行为。同意中国联通公司对参与供应商进行IP、MAC地址校验,如不同供应商的MAC地址相同,评标/评审委员会(或采购人)将按围标、串标处理。</Text>
|
||||
</Typography>
|
||||
}
|
||||
overlayInnerStyle={{ width: 400 }}
|
||||
>
|
||||
<ExclamationCircleOutlined style={{ color: '#b30000', marginLeft: 4 }} />
|
||||
</Popover>
|
||||
</span>
|
||||
),
|
||||
dataIndex: 'confirmTime',
|
||||
valueType: 'text'
|
||||
},
|
||||
{
|
||||
title: '解密状态',
|
||||
dataIndex: item.quoteOrOther == "1" ? 'decryptOtherStatus' : "decryptStatus",
|
||||
|
@ -15,6 +15,7 @@ import SortEditableTable from './SortEditableTable';
|
||||
import ReviewReportUpload from '@/utils/ReviewReportUpload';
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons';
|
||||
import { getFileListByBid } from '@/utils/DownloadUtils';
|
||||
import MACAddressPrompt from '@/pages/Evaluation/BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
const { Panel } = Collapse;
|
||||
const { TextArea } = Input;
|
||||
@ -286,6 +287,26 @@ const GroupLeader: React.FC = () => {
|
||||
{
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
// render: (_: any, record: any) => {
|
||||
// let tip = <></>;
|
||||
// if (record.problemInfoList?.length > 0) {
|
||||
@ -345,6 +366,23 @@ const GroupLeader: React.FC = () => {
|
||||
title: '是否通过初步评审',
|
||||
dataIndex: 'firstRvwResult',
|
||||
render: (_: any, record: any) => {
|
||||
/**
|
||||
* 2022.5.9 zhoujianlong 增加MAC地址重复供应商不能将中标候选人选为‘是’的校验
|
||||
*/
|
||||
if (!confirmSubmitStatus && record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
if (record.winnerCandidate == 'yes') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可选为${candidateType}候选人`);
|
||||
record.winnerCandidate = 'no'
|
||||
}
|
||||
}
|
||||
}
|
||||
if (record.firstRvwResult == null) {
|
||||
return '-'
|
||||
} else {
|
||||
@ -382,6 +420,26 @@ const GroupLeader: React.FC = () => {
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
fixed: 'left',
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
// render: (_: any, record: any) => {
|
||||
// let tip = <></>;
|
||||
// if (record.problemInfoList?.length > 0) {
|
||||
@ -476,6 +534,27 @@ const GroupLeader: React.FC = () => {
|
||||
isEmpty(record.winnerCandidate) ? record.winnerCandidate = 'no' : null
|
||||
isEmpty(record.winnerBidder) ? record.winnerBidder = '0' : null
|
||||
}
|
||||
/**
|
||||
* 2022.5.9 zhoujianlong 增加MAC地址重复供应商不能将中标候选人选为‘是’的校验
|
||||
*/
|
||||
if (!confirmSubmitStatus && record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
if (record.winnerCandidate == 'yes') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可选为入围候选人`);
|
||||
record.winnerCandidate = 'no'
|
||||
}
|
||||
if (record.winnerBidder == '1') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可选为拟入围人`);
|
||||
record.winnerBidder = '0'
|
||||
}
|
||||
}
|
||||
}
|
||||
record.answerValid = valid
|
||||
return rvwResultRender(_, record.detailRvwReason);
|
||||
}
|
||||
@ -532,6 +611,26 @@ const GroupLeader: React.FC = () => {
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
fixed: 'left',
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
// render: (_: any, record: any) => {
|
||||
// let tip = <></>;
|
||||
// if (record.problemInfoList?.length > 0) {
|
||||
@ -645,6 +744,27 @@ const GroupLeader: React.FC = () => {
|
||||
isEmpty(record.winnerCandidate) ? record.winnerCandidate = 'no' : null
|
||||
isEmpty(record.winnerBidder) ? record.winnerBidder = '0' : null
|
||||
}
|
||||
/**
|
||||
* 2022.5.9 zhoujianlong 增加MAC地址重复供应商不能将中标候选人选为‘是’的校验
|
||||
*/
|
||||
if (!confirmSubmitStatus && record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
if (record.winnerCandidate == 'yes') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可选为${candidateType}候选人`);
|
||||
record.winnerCandidate = 'no'
|
||||
}
|
||||
if (record.winnerBidder == '1') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可选为拟${candidateType}人`);
|
||||
record.winnerBidder = '0'
|
||||
}
|
||||
}
|
||||
}
|
||||
record.answerValid = valid
|
||||
return rvwResultRender(_, record.detailRvwReason);
|
||||
}
|
||||
@ -747,6 +867,26 @@ const GroupLeader: React.FC = () => {
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
fixed: 'left',
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
@ -827,6 +967,23 @@ const GroupLeader: React.FC = () => {
|
||||
if (valid == 0 && !resultDisabledStatus) {//应答是否有效为否并且当前是编辑状态自动触发
|
||||
isEmpty(record.winnerCandidate) ? record.winnerCandidate = 'no' : null
|
||||
}
|
||||
/**
|
||||
* 2022.5.9 zhoujianlong 增加MAC地址重复供应商不能将中标候选人选为‘是’的校验
|
||||
*/
|
||||
if (!confirmSubmitStatus && record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
if (record.winnerCandidate == 'yes') {
|
||||
message.info(`${record.companyName}与其他供应商MAC地址相同,不可通过审核结果`);
|
||||
record.winnerCandidate = 'no'
|
||||
}
|
||||
}
|
||||
}
|
||||
record.answerValid = valid
|
||||
return rvwResultRender(_, record.detailRvwReason);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import { btnAuthority } from '@/utils/authority';
|
||||
import WebOffice0609, { WebOfficeRefProps } from '@/pages/webOffice/weboffice0609';
|
||||
import ReviewReportUpload from '@/utils/ReviewReportUpload';
|
||||
import { getFileListByBid } from '@/utils/DownloadUtils';
|
||||
import MACAddressPrompt from '@/pages/Evaluation/BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
const { Panel } = Collapse;
|
||||
const { TextArea } = Input;
|
||||
const { Paragraph, Text } = Typography;
|
||||
@ -99,6 +100,26 @@ const Jury: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: `报价(${quotationMethod})`,
|
||||
@ -205,6 +226,26 @@ const Jury: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
@ -291,6 +332,26 @@ const Jury: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 210,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '报价总金额净价(元)',
|
||||
@ -353,6 +414,26 @@ const Jury: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
|
@ -11,6 +11,7 @@ import { btnAuthority } from '@/utils/authority';
|
||||
import WebOffice0609, { WebOfficeRefProps } from '@/pages/webOffice/weboffice0609';
|
||||
import ReviewReportUpload from '@/utils/ReviewReportUpload';
|
||||
import { getFileListByBid } from '@/utils/DownloadUtils';
|
||||
import MACAddressPrompt from '@/pages/Evaluation/BidControl/BidControlManager/components/MACAddressPrompt';
|
||||
|
||||
const { Panel } = Collapse;
|
||||
const { Paragraph, Text } = Typography;
|
||||
@ -101,6 +102,26 @@ const Manager: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: `报价(${quotationMethod})`,
|
||||
@ -207,6 +228,26 @@ const Manager: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
@ -293,6 +334,26 @@ const Manager: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 210,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '报价总金额净价(元)',
|
||||
@ -355,6 +416,26 @@ const Manager: React.FC = () => {
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
width: 110,
|
||||
render: (_: any, record: any) => {
|
||||
if (record.problemInfoList != null) {
|
||||
let count = 0;
|
||||
record.problemInfoList.forEach((ele: any) => {
|
||||
if (ele.problemType == 1) {//MAC地址重复
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
if (count > 0) {
|
||||
return (
|
||||
<>
|
||||
{_}
|
||||
{<MACAddressPrompt type='other' companyName={_} />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return _;
|
||||
}
|
||||
return _;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
|
Reference in New Issue
Block a user