From 8d84bee54909b040222fc0705c3fc01e5fd5dbcf Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Fri, 15 Jul 2022 15:13:32 +0800 Subject: [PATCH 01/14] =?UTF-8?q?7.15=20=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E5=9C=A8=E9=A1=B9=E7=9B=AE=E6=9C=AA=E5=BC=80=E6=A0=87=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8B=E7=82=B9=E5=87=BB=E8=99=9A=E6=8B=9F=E5=A4=A7?= =?UTF-8?q?=E5=8E=85=E4=BC=9A=E8=B7=B3=E8=BD=AC=E5=88=B0=E8=AF=A5=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OpenList/BidOpeningFormModal.tsx | 19 ------------------- .../Opening/ProjectManager/OpenList/index.tsx | 2 +- 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 src/pages/Opening/ProjectManager/OpenList/BidOpeningFormModal.tsx diff --git a/src/pages/Opening/ProjectManager/OpenList/BidOpeningFormModal.tsx b/src/pages/Opening/ProjectManager/OpenList/BidOpeningFormModal.tsx deleted file mode 100644 index 7d2a453..0000000 --- a/src/pages/Opening/ProjectManager/OpenList/BidOpeningFormModal.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React, { useEffect,useState } from 'react'; -import {} from '@/utils/CommonUtils' - - -const BidOpeningFormModal: React.FC<{}> = () =>{ - - useEffect(() => { - window.open("../bidOpening/bidOpening.html?roomType=2"); - },[]) - - - return ( - <> - - //
开标大厅-招标采购中心

中国联通智慧供应链平台|招标采购中心

当前时间:

//::

- + - -
-
- - 中国联通智慧供应链平台 | 招标采购中心 +
+ + 中国联通智慧供应链平台 | + 招标采购中心 +
-
-
- - - -
- -
- -
+ //调用文档通用属性方法 1-打开 2-保存(另存为) 4-打印 + function generalProp(param) { + var name = '新建文本文档'; + if (fileName != null) { + name = fileName; + } + TANGER_OCX.WebFileName = name + "." + fileType;//文档默认名称 + TANGER_OCX.ShowDialog(param) + } + +
+ +
- + \ No newline at end of file From 7c41bc48f2b599a45eae005a1c2c419644f95ab1 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 19 Jul 2022 15:07:48 +0800 Subject: [PATCH 04/14] =?UTF-8?q?7.19=20=E6=97=A0=E6=B3=95=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E8=A7=A3=E5=AF=86=E6=88=AA=E8=87=B3=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Opening/ProjectManager/Room/index.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pages/Opening/ProjectManager/Room/index.tsx b/src/pages/Opening/ProjectManager/Room/index.tsx index 925dd00..62dbc7e 100644 --- a/src/pages/Opening/ProjectManager/Room/index.tsx +++ b/src/pages/Opening/ProjectManager/Room/index.tsx @@ -699,9 +699,12 @@ const Room: React.FC<{}> = () => { //解密时限 function onOkJmsx(value: any) { - endTimeSet(value.format('yyyy-MM-DD HH:mm:ss')); + // endTimeSet(value.format('yyyy-MM-DD HH:mm:ss')); + setTime.current = value.format('yyyy-MM-DD HH:mm:ss'); } const [sxLoading, sxLoadingSet] = useState(false); + //设置解密时限存储 + const setTime = useRef('') const jmTime = () => { return ( = () => { onCancel={() => { jmTimeVisSet(false); }} onOk={async () => { sxLoadingSet(true); - if (endTime != '') { - await endTimeConfig({ id: tdocId, decryptEndDate: endTime }); + if (setTime.current != '') { + await endTimeConfig({ id: tdocId, decryptEndDate: setTime.current }); jmTimeVisSet(false); + countSet(count + 1); } else { message.error('您未设置解密截止时间') } sxLoadingSet(false); - countSet(count + 1); }} > @@ -733,7 +736,7 @@ const Room: React.FC<{}> = () => { showTime={{ defaultValue: moment('00:00:00', 'HH:mm:ss') }} // disabled={disabled} showNow={false} - onOk={onOkJmsx} + onChange={onOkJmsx} /> From b3c9913791aff3c0cdc27b06b2583d655ddef5b2 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 20 Jul 2022 13:52:14 +0800 Subject: [PATCH 05/14] =?UTF-8?q?7.20=20=E5=8D=95=E4=B8=80=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E6=B5=81=E7=A8=8B=E7=BB=93=E6=9E=9C=E5=BD=95=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BidAssessmentResults/index.tsx | 718 +++++++++--------- 1 file changed, 366 insertions(+), 352 deletions(-) diff --git a/src/pages/Calibration/BidAssessmentResults/index.tsx b/src/pages/Calibration/BidAssessmentResults/index.tsx index fd73d42..aad19a3 100644 --- a/src/pages/Calibration/BidAssessmentResults/index.tsx +++ b/src/pages/Calibration/BidAssessmentResults/index.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { Button, Card, Collapse, Form, Input, List, message, Popover, Select, Space, Spin, Typography } from "antd"; import ProTable from "@ant-design/pro-table"; import { getBidAssessmentResultList, getBidAssessmentResultsList, pushBidAssessmentResult, saveResult } from "./service" @@ -11,19 +11,19 @@ import { isEmpty } from '@/utils/CommonUtils'; const BidAssessmentResults: React.FC<{}> = (props) => { const [Refresh, setRefresh] = useState(0); const { Panel } = Collapse; - const [pageloading, setPageloading] = useState(false); const [ListData, setListData] = useState(); const [assessRoomId, setAssessRoomId] = useState(); const [currentTable, setCurrentTable] = useState(false); - const [proID, setProID] = useState(getProId); const [spintype, setSpintype] = useState(false); - //单一来源简化 - const [form] = Form.useForm(); + //查询条件-包件名称 + const [name, setName] = useState(''); + const FormItem = Form.Item; const { Option } = Select; const { Paragraph, Text } = Typography; const firstRvwResult = ['否', '是']; const [contractedMoney, contractedMoneySet] = useState('') + const proID = getProId();//项目id let name1 = "中标"; let name2 = "评标"; let name3 = "标段"; @@ -69,10 +69,6 @@ const BidAssessmentResults: React.FC<{}> = (props) => { type4 = true; type5 = true; } - //综合得分展开关闭 - const [expandTotalScore, setExpandTotalScore] = useState(proDict == "procurement_mode_7" ? false : true); - //查询条件-包件名称 - const [name, setName] = useState(''); useEffect(() => { setSpintype(true); @@ -82,26 +78,10 @@ const BidAssessmentResults: React.FC<{}> = (props) => { setListData(res.data); } }).finally(() => { - setSpintype(false) + setSpintype(false); }) }, [proID, Refresh]) - //初审详审原因render - const rvwResultRender = (field: any, reason: any) => { - const content = ( - -
{reason}
-
- ) - return isEmpty(field) || field == '-' ? '-' : ( - - {firstRvwResult[field]} - {field == 0 && - 说明 - } - ) - } - /*推送评标结果*/ const pushResult = (record: any) => { setSpintype(true); @@ -111,56 +91,379 @@ const BidAssessmentResults: React.FC<{}> = (props) => { setRefresh(Refresh + 1); } }).finally(() => { - setSpintype(false) + setSpintype(false); }) } + /*推送列表查看*/ const getResultList = (record: any) => { setAssessRoomId(record.assesRoomId); setCurrentTable(true); } + //确认评审结果ListRender封装 + const ResultListRender = (props: { item: any, index: any, setSpintype: (value: boolean) => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => { + const { item, index, setSpintype, getResultList, ListData, pushResult } = props; + //单一来源简化 + const [form] = Form.useForm(); + //综合得分展开关闭 + const [expandTotalScore, setExpandTotalScore] = useState(proDict == "procurement_mode_7" ? false : true); + + //单一简化 + function returnInput(name: any, name2: any, val: any, must: boolean, pattern?: boolean, hid?: boolean) { + let rule = [ + { required: must }, + { pattern: /^.{0,21}$/, message: '超长' } + ]; + pattern && rule.push({ pattern: /(^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,4})?$)/, message: '请输入正确数值(最多4位小数)' }); + return ( +
+ +
+ ) + } + function returnSelect(name: any, val: any) { + return ( +
+ + + +
+ + ) + } + + //初审详审原因render + const rvwResultRender = (field: any, reason: any) => { + const content = ( + +
{reason}
+
+ ) + return isEmpty(field) || field == '-' ? '-' : ( + + {firstRvwResult[field]} + {field == 0 && + 说明 + } + ) + } - //单一简化 - function returnInput(name: any, name2: any, val: any, must: boolean, pattern?: boolean, hid?: boolean) { - let rule = [ - { required: must }, - { pattern: /^.{0,21}$/, message: '超长' } - ]; - pattern && rule.push({ pattern: /(^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,4})?$)/, message: '请输入正确数值(最多4位小数)' }); return ( -
- -
+ + + { + //标段上的报价类型确认 1-% 0-元 + let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0' + const columns: any = [ + { + title: '排名', + dataIndex: 'sort', + valueType: 'text', + width: 50, + }, + { + title: '供应商名称', + dataIndex: 'companyName', + valueType: 'text', + width: 120, + }, + { + hideInTable: type1, + title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)', + dataIndex: 'price', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('price', '报价', record.price, true, true) + } else { + return record.price + } + } + }, + { + hideInTable: type2, + title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)', + dataIndex: 'priceReview', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('priceReview', '评审价', record.priceReview, true, true) + } else { + return record.priceReview + } + } + }, + { + title: '商务分', + dataIndex: 'businessScore', + width: 60, + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('businessScore', '商务分', record.businessScore, false, true) + } else { + return record.businessScore + } + } + }, + { + title: '技术分', + width: 60, + dataIndex: 'technicalScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('technicalScore', '技术分', record.technicalScore, false, true) + } else { + return record.technicalScore + } + } + }, + { + title: '服务分', + width: 60, + dataIndex: 'serviceScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('serviceScore', '服务分', record.serviceScore, false, true) + } else { + return record.serviceScore + } + } + }, + { + title: '价格分', + width: 60, + dataIndex: 'priceScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('priceScore', '价格分', record.priceScore, false, true) + } else { + return record.priceScore + } + } + }, + { + title: ( + + 综合得分 + setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"} + + ), + dataIndex: 'totalScore', + width: 120, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('totalScore', '综合得分', record.totalScore, false, true) + } else { + return record.totalScore + } + } + }, + { + hideInTable: defId === 'negotiation_single_simple', + title: '是否通过初步评审', + dataIndex: 'firstRvwResult', + width: 100, + render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason) + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '是否通过详审', + dataIndex: 'detailRvwResult', + width: 100, + render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason) + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '应答是否有效', + width: 80, + dataIndex: 'answerValid', + render: (_: any, record: any) => { + return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-' + } + }, + { + title: '是否' + name1 + '候选人', + dataIndex: 'winnerCandidate', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnSelect('winnerCandidate', record.winnerCandidate) + } else { + return record.winnerCandidate === 1 ? '是' : '否' + } + } + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '是否拟' + name1 + '人', + width: 80, + dataIndex: 'winnerBidder', + render: (_: any, record: any) => { + return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-' + } + }, + { + hideInTable: type3, + title: '拟签约金额(不含增值税)(元)', + width: 150, + dataIndex: 'contractedMoney', + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return ( + <> + {returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)} + {returnInput('id', '供应商id', record.id, false, false, true)} + {returnInput('resultId', '结果id', record.resultId, false, false, true)} + {returnInput('companyId', '公司id', record.companyId, false, false, true)} + {returnInput('companyName', '公司名称', record.companyName, false, false, true)} + + ) + } else { + return record.contractedMoney + } + } + }, + { + hideInTable: type4, + title: '增值税金额(元)', + width: 150, + dataIndex: 'taxRatePrice', + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true) + } else { + return record.taxRatePrice + } + } + }, + ] + return ( + [ + <> + + { + defId === 'negotiation_single_simple' ? + + : + + } + + + ]} + pagination={{ + defaultPageSize: 10, + showSizeChanger: false, + }} + /> + ) + }} + > + + + ) } - function returnSelect(name: any, val: any) { - return ( -
- - - -
+ const list = useMemo(() => { + return ( + ( + { setSpintype(value); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} /> + )} + /> ) - } + }, [ListData]) return ( <> @@ -177,296 +480,7 @@ const BidAssessmentResults: React.FC<{}> = (props) => { }}>重置
- ( - - - { - //标段上的报价类型确认 1-% 0-元 - let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0' - const columns: any = [ - { - title: '排名', - dataIndex: 'sort', - valueType: 'text', - width: 50, - }, - { - title: '供应商名称', - dataIndex: 'companyName', - valueType: 'text', - width: 120, - }, - { - hideInTable: type1, - title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)', - dataIndex: 'price', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('price', '报价', record.price, true, true) - } else { - return record.price - } - } - }, - { - hideInTable: type2, - title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)', - dataIndex: 'priceReview', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('priceReview', '评审价', record.priceReview, true, true) - } else { - return record.priceReview - } - } - }, - { - title: '商务分', - dataIndex: 'businessScore', - width: 60, - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('businessScore', '商务分', record.businessScore, false, true) - } else { - return record.businessScore - } - } - }, - { - title: '技术分', - width: 60, - dataIndex: 'technicalScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('technicalScore', '技术分', record.technicalScore, false, true) - } else { - return record.technicalScore - } - } - }, - { - title: '服务分', - width: 60, - dataIndex: 'serviceScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('serviceScore', '服务分', record.serviceScore, false, true) - } else { - return record.serviceScore - } - } - }, - { - title: '价格分', - width: 60, - dataIndex: 'priceScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('priceScore', '价格分', record.priceScore, false, true) - } else { - return record.priceScore - } - } - }, - { - title: ( - - 综合得分 - setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"} - - ), - dataIndex: 'totalScore', - width: 120, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('totalScore', '综合得分', record.totalScore, false, true) - } else { - return record.totalScore - } - } - }, - { - hideInTable: defId === 'negotiation_single_simple', - title: '是否通过初步评审', - dataIndex: 'firstRvwResult', - width: 100, - render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason) - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '是否通过详审', - dataIndex: 'detailRvwResult', - width: 100, - render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason) - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '应答是否有效', - width: 80, - dataIndex: 'answerValid', - render: (_: any, record: any) => { - return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-' - } - }, - { - title: '是否' + name1 + '候选人', - dataIndex: 'winnerCandidate', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnSelect('winnerCandidate', record.winnerCandidate) - } else { - return record.winnerCandidate === 1 ? '是' : '否' - } - } - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '是否拟' + name1 + '人', - width: 80, - dataIndex: 'winnerBidder', - render: (_: any, record: any) => { - return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-' - } - }, - { - hideInTable: type3, - title: '拟签约金额(不含增值税)(元)', - width: 150, - dataIndex: 'contractedMoney', - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return ( - <> - {returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)} - {returnInput('id', '供应商id', record.id, false, false, true)} - {returnInput('resultId', '结果id', record.resultId, false, false, true)} - {returnInput('companyId', '公司id', record.companyId, false, false, true)} - {returnInput('companyName', '公司名称', record.companyName, false, false, true)} - - ) - } else { - return record.contractedMoney - } - } - }, - { - hideInTable: type4, - title: '增值税金额(元)', - width: 150, - dataIndex: 'taxRatePrice', - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true) - } else { - return record.taxRatePrice - } - } - }, - ] - return ( - [ - <> - - { - defId === 'negotiation_single_simple' ? - - : - - } - - - ]} - pagination={{ - defaultPageSize: 10, - showSizeChanger: false, - }} - /> - ) - }} - > - - - - )} - /> + {list} setCurrentTable(false)} /> From 7bb5a1705dc4fa1a540796186eda912d58ea7f34 Mon Sep 17 00:00:00 2001 From: yss <17921@qq.com> Date: Thu, 21 Jul 2022 15:43:15 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E9=A3=8E=E6=8E=A7=E9=99=90=E5=AE=9A?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ViewRiskSupplierModal.tsx | 45 ++++ .../BidControl/BidControlManager/index.tsx | 197 +++++++++--------- .../BidControl/BidControlManager/service.ts | 11 +- 3 files changed, 158 insertions(+), 95 deletions(-) create mode 100644 src/pages/Evaluation/BidControl/BidControlManager/components/ViewRiskSupplierModal.tsx diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewRiskSupplierModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewRiskSupplierModal.tsx new file mode 100644 index 0000000..daa884d --- /dev/null +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewRiskSupplierModal.tsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from 'react'; +import { Collapse } from 'antd'; +import { getRiskSupplierList } from '../service'; +import { getRoomId, getSessionProjectData } from '@/utils/session'; + +interface ViewRiskSupplierModalProps { + modalVisible: boolean; + values: any; + onCancel: any; +} + +const ViewRiskSupplierModal: React.FC = (props) => { + + const [riskSupplierData, setRiskSupplierData] = useState({}); + + useEffect(() => { + getRiskSupplierInfo(); + }, []) + + const getRiskSupplierInfo = async () => { + let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') + let projectId = getSessionProjectData().id; + + //黑名单 + await getRiskSupplierList(projectId, roomId).then((res) => { + if (res.success == true && res.data.success==false) { + setRiskSupplierData(res.data.data.result[0].regulationData[0].message); + } else { + setRiskSupplierData({}); + } + }) + } + + return ( + <> + + + {riskSupplierData} + + + + ); +}; + +export default ViewRiskSupplierModal; diff --git a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx index 106c43a..320e3d4 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx @@ -1,17 +1,13 @@ -import React, { useState,useRef, useEffect } from 'react'; -import { Tabs,Table, Spin, message, Popconfirm,Card,Collapse, Modal, Button} from 'antd'; -import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; +import React, { useState } from 'react'; +import { ProColumns } from '@ant-design/pro-table'; import ViewRishFormModal from './components/ViewRishFormModal'; import ViewQuoteWarningFormModal from './components/ViewQuoteWarningFormModal'; -import { getRoomId, getSessionUserData } from '@/utils/session'; import ViewBlacklistFormModal from './components/ViewBlacklistFormModal'; import ViewReviewResultFormModal from './components/ViewReviewResultFormModal'; import ViewJuryScoringRemindFormModal from './components/ViewJuryScoringRemindFormModal'; import ViewJuryScoringAnalysisFormModal from './components/ViewJuryScoringAnalysisFormModal'; +import ViewRiskSupplierModal from './components/ViewRiskSupplierModal'; -function callback(key) { - //getSessionUserData.roleIds; -} const title2 = [ { @@ -41,9 +37,9 @@ const title2 = [ const columns: ProColumns[] = [ { title: '序号', dataIndex: 'num', width: 50, }, { title: '供应商名称', dataIndex: 'gysmc', }, - { title: 'IP地址',width: '20%', dataIndex: 'ip', }, + { title: 'IP地址', width: '20%', dataIndex: 'ip', }, { title: 'MAC地址', dataIndex: 'mac', }, - { title: '上传时间', dataIndex: 'uploadTime',}, + { title: '上传时间', dataIndex: 'uploadTime', }, ]; const columnsMac: ProColumns[] = [ @@ -65,7 +61,7 @@ const Sing: React.FC<{}> = () => { const [ViewRishFormVisible, setViewRishFormVisible] = useState(false); //查看详情窗口record const [ViewRishValues, setViewRishValues] = useState({}); - + //一致性 const [ViewQuoteWarningFormVisible, setViewQuoteWarningFormVisible] = useState(false); //查看详情窗口record @@ -85,96 +81,109 @@ const Sing: React.FC<{}> = () => { const [ViewJuryScoringRemindFormVisible, setViewJuryScoringRemindFormVisible] = useState(false); //查看详情窗口record const [ViewJuryScoringRemindValues, setViewJuryScoringRemindValues] = useState({}); - + //评审专家打分偏离度分析 const [ViewJuryScoringAnalysisFormVisible, setViewJuryScoringAnalysisFormVisible] = useState(false); //查看详情窗口record const [ViewJuryScoringAnalysisValues, setViewJuryScoringAnalysisValues] = useState({}); - - - const getWarningList = async() => { - } - return ( + //风控中心-风险限定供应商 + const [BidRiskSupplierVisible, setBidRiskSupplierVisible] = useState(false); + //风控中心-风险限定供应商record + const [BidRiskSupplierValues, setRiskSupplierValues] = useState({}); + return ( <> - { - ViewRishFormModal ? ( - { - setViewRishFormVisible(!ViewRishFormVisible); - setViewRishValues({}); - }} - > - - ) : null - } - { - ViewQuoteWarningFormModal ? ( - { - setViewQuoteWarningFormVisible(!ViewQuoteWarningFormVisible); - setViewQuoteWarningValues({}); - }} - > + { + ViewRishFormModal ? ( + { + setViewRishFormVisible(!ViewRishFormVisible); + setViewRishValues({}); + }} + > + + ) : null + } + { + ViewQuoteWarningFormModal ? ( + { + setViewQuoteWarningFormVisible(!ViewQuoteWarningFormVisible); + setViewQuoteWarningValues({}); + }} + > - - ) : null - } - { - ViewBlacklistFormModal ? ( - { - setViewBlacklistFormVisible(!ViewBlacklistFormVisible); - setViewBlacklistValues({}); - }} - > - - ) : null - } - { - ViewReviewResultFormModal ? ( - { - setViewReviewResultFormVisible(!ViewReviewResultFormVisible); - setViewReviewResultValues({}); - }} - > - - ) : null - } - { - ViewJuryScoringRemindFormModal ? ( - { - setViewJuryScoringRemindFormVisible(!ViewJuryScoringRemindFormVisible); - setViewJuryScoringRemindValues({}); - }} - > - - ) : null - } - { - ViewJuryScoringAnalysisFormModal ? ( - { - setViewJuryScoringAnalysisFormVisible(!ViewJuryScoringAnalysisFormVisible); - setViewJuryScoringAnalysisValues({}); - }} - > - - ) : null - } + + ) : null + } + { + ViewBlacklistFormModal ? ( + { + setViewBlacklistFormVisible(!ViewBlacklistFormVisible); + setViewBlacklistValues({}); + }} + > + + ) : null + } + { + ViewReviewResultFormModal ? ( + { + setViewReviewResultFormVisible(!ViewReviewResultFormVisible); + setViewReviewResultValues({}); + }} + > + + ) : null + } + { + ViewJuryScoringRemindFormModal ? ( + { + setViewJuryScoringRemindFormVisible(!ViewJuryScoringRemindFormVisible); + setViewJuryScoringRemindValues({}); + }} + > + + ) : null + } + { + ViewJuryScoringAnalysisFormModal ? ( + { + setViewJuryScoringAnalysisFormVisible(!ViewJuryScoringAnalysisFormVisible); + setViewJuryScoringAnalysisValues({}); + }} + > + + ) : null + } + { + ViewRiskSupplierModal ? ( + { + setBidRiskSupplierVisible(!BidRiskSupplierVisible); + setRiskSupplierValues({}); + }} + > + + ) : null + } ) } diff --git a/src/pages/Evaluation/BidControl/BidControlManager/service.ts b/src/pages/Evaluation/BidControl/BidControlManager/service.ts index 12bf955..a77ffc0 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/service.ts +++ b/src/pages/Evaluation/BidControl/BidControlManager/service.ts @@ -113,7 +113,16 @@ export async function replace(a: any,b: any,c: any){ return a.replace(b,c); } - +//风险限定供应商 +export async function getRiskSupplierList(projectId: any, assessRoomId: any) { + return request('/api/biz-service-ebtp-evaluation/v1/risk/querySupplierLimit', { + method: 'post', + data: { + "assessRoomId": assessRoomId, + "projectId": projectId + } + }); +} From 5785daafa6d66eafb81e2ec88cf0b867dc6acd8b Mon Sep 17 00:00:00 2001 From: yss <17921@qq.com> Date: Thu, 21 Jul 2022 15:47:44 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E9=A3=8E=E6=8E=A7=E9=99=90=E5=AE=9A?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BidControl/BidControlManager/index.tsx | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx index 320e3d4..07796d5 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx @@ -1,5 +1,4 @@ import React, { useState } from 'react'; -import { ProColumns } from '@ant-design/pro-table'; import ViewRishFormModal from './components/ViewRishFormModal'; import ViewQuoteWarningFormModal from './components/ViewQuoteWarningFormModal'; import ViewBlacklistFormModal from './components/ViewBlacklistFormModal'; @@ -9,53 +8,6 @@ import ViewJuryScoringAnalysisFormModal from './components/ViewJuryScoringAnalys import ViewRiskSupplierModal from './components/ViewRiskSupplierModal'; -const title2 = [ - { - title: '序号', - dataIndex: 'num', - key: 'num', - }, - { - title: '投标人及报价', - dataIndex: 'tbrbj', - key: 'tbrbj', - }, - { - title: '预警信息', - dataIndex: 'yjxx', - key: 'yjxx', - }, - { - title: '操作', - dataIndex: 'cz', - key: 'cz', - }, -]; - - - -const columns: ProColumns[] = [ - { title: '序号', dataIndex: 'num', width: 50, }, - { title: '供应商名称', dataIndex: 'gysmc', }, - { title: 'IP地址', width: '20%', dataIndex: 'ip', }, - { title: 'MAC地址', dataIndex: 'mac', }, - { title: '上传时间', dataIndex: 'uploadTime', }, -]; - -const columnsMac: ProColumns[] = [ - { title: '序号', dataIndex: 'num', width: 50, }, - { title: '供应商名称', dataIndex: 'gysmc', }, - { title: '相同的MAC地址', dataIndex: 'mac', }, -]; - -const columns2: ProColumns[] = [ - { title: '序号', dataIndex: 'num', width: 50, }, - { title: '投标人及报价', dataIndex: 'tbrbj', }, - { title: '预警信息', dataIndex: 'yjxx', }, - { title: '操作', dataIndex: '', }, -]; - - const Sing: React.FC<{}> = () => { //ip mac const [ViewRishFormVisible, setViewRishFormVisible] = useState(false); From 178eba6ff8bcb0f57629bef00cd508d692f2770e Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Mon, 25 Jul 2022 08:49:41 +0800 Subject: [PATCH 08/14] =?UTF-8?q?7.25=20=E5=8D=95=E4=B8=80=E7=AE=80?= =?UTF-8?q?=E5=8C=96=20=E7=A1=AE=E8=AE=A4=E8=AF=84=E5=AE=A1=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BidAssessmentResults/index.tsx | 564 +++++++++--------- 1 file changed, 275 insertions(+), 289 deletions(-) diff --git a/src/pages/Calibration/BidAssessmentResults/index.tsx b/src/pages/Calibration/BidAssessmentResults/index.tsx index aad19a3..19850c0 100644 --- a/src/pages/Calibration/BidAssessmentResults/index.tsx +++ b/src/pages/Calibration/BidAssessmentResults/index.tsx @@ -11,12 +11,14 @@ import { isEmpty } from '@/utils/CommonUtils'; const BidAssessmentResults: React.FC<{}> = (props) => { const [Refresh, setRefresh] = useState(0); const { Panel } = Collapse; - const [ListData, setListData] = useState(); + const [ListData, setListData] = useState([]); const [assessRoomId, setAssessRoomId] = useState(); const [currentTable, setCurrentTable] = useState(false); const [spintype, setSpintype] = useState(false); //查询条件-包件名称 const [name, setName] = useState(''); + //折叠面板 + const [collapseActiveKeys, setCollapseActiveKeys] = useState(['0']); const FormItem = Form.Item; const { Option } = Select; @@ -101,9 +103,14 @@ const BidAssessmentResults: React.FC<{}> = (props) => { setCurrentTable(true); } + //折叠面板change + const onCollapseChange = (key: any) => { + setCollapseActiveKeys(key); + }; + //确认评审结果ListRender封装 - const ResultListRender = (props: { item: any, index: any, setSpintype: (value: boolean) => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => { - const { item, index, setSpintype, getResultList, ListData, pushResult } = props; + const ResultListRender = (props: { item: any, setSpintype: (value: boolean) => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => { + const { item, setSpintype, getResultList, ListData, pushResult } = props; //单一来源简化 const [form] = Form.useForm(); //综合得分展开关闭 @@ -166,283 +173,6 @@ const BidAssessmentResults: React.FC<{}> = (props) => { ) } - return ( - - - { - //标段上的报价类型确认 1-% 0-元 - let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0' - const columns: any = [ - { - title: '排名', - dataIndex: 'sort', - valueType: 'text', - width: 50, - }, - { - title: '供应商名称', - dataIndex: 'companyName', - valueType: 'text', - width: 120, - }, - { - hideInTable: type1, - title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)', - dataIndex: 'price', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('price', '报价', record.price, true, true) - } else { - return record.price - } - } - }, - { - hideInTable: type2, - title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)', - dataIndex: 'priceReview', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('priceReview', '评审价', record.priceReview, true, true) - } else { - return record.priceReview - } - } - }, - { - title: '商务分', - dataIndex: 'businessScore', - width: 60, - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('businessScore', '商务分', record.businessScore, false, true) - } else { - return record.businessScore - } - } - }, - { - title: '技术分', - width: 60, - dataIndex: 'technicalScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('technicalScore', '技术分', record.technicalScore, false, true) - } else { - return record.technicalScore - } - } - }, - { - title: '服务分', - width: 60, - dataIndex: 'serviceScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('serviceScore', '服务分', record.serviceScore, false, true) - } else { - return record.serviceScore - } - } - }, - { - title: '价格分', - width: 60, - dataIndex: 'priceScore', - hideInTable: expandTotalScore, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('priceScore', '价格分', record.priceScore, false, true) - } else { - return record.priceScore - } - } - }, - { - title: ( - - 综合得分 - setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"} - - ), - dataIndex: 'totalScore', - width: 120, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('totalScore', '综合得分', record.totalScore, false, true) - } else { - return record.totalScore - } - } - }, - { - hideInTable: defId === 'negotiation_single_simple', - title: '是否通过初步评审', - dataIndex: 'firstRvwResult', - width: 100, - render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason) - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '是否通过详审', - dataIndex: 'detailRvwResult', - width: 100, - render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason) - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '应答是否有效', - width: 80, - dataIndex: 'answerValid', - render: (_: any, record: any) => { - return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-' - } - }, - { - title: '是否' + name1 + '候选人', - dataIndex: 'winnerCandidate', - width: 100, - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnSelect('winnerCandidate', record.winnerCandidate) - } else { - return record.winnerCandidate === 1 ? '是' : '否' - } - } - }, - { - hideInTable: type5 || defId === 'negotiation_single_simple', - title: '是否拟' + name1 + '人', - width: 80, - dataIndex: 'winnerBidder', - render: (_: any, record: any) => { - return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-' - } - }, - { - hideInTable: type3, - title: '拟签约金额(不含增值税)(元)', - width: 150, - dataIndex: 'contractedMoney', - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return ( - <> - {returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)} - {returnInput('id', '供应商id', record.id, false, false, true)} - {returnInput('resultId', '结果id', record.resultId, false, false, true)} - {returnInput('companyId', '公司id', record.companyId, false, false, true)} - {returnInput('companyName', '公司名称', record.companyName, false, false, true)} - - ) - } else { - return record.contractedMoney - } - } - }, - { - hideInTable: type4, - title: '增值税金额(元)', - width: 150, - dataIndex: 'taxRatePrice', - render: (_: any, record: any) => { - if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { - return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true) - } else { - return record.taxRatePrice - } - } - }, - ] - return ( - [ - <> - - { - defId === 'negotiation_single_simple' ? - - : - - } - - - ]} - pagination={{ - defaultPageSize: 10, - showSizeChanger: false, - }} - /> - ) - }} - > - - - - ) - } - - const list = useMemo(() => { return ( = (props) => { xl: 1, xxl: 1, }} - style={{ paddingTop: "24px;" }} itemLayout="vertical" - rowKey="sectionId" - dataSource={ListData} - renderItem={(item: any, index: any) => ( - { setSpintype(value); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} /> - )} - /> + rowKey="assesRoomId" + dataSource={item.assesList} + renderItem={(item1: any, index: any) => { + //标段上的报价类型确认 1-% 0-元 + let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0' + const columns: any = [ + { + title: '排名', + dataIndex: 'sort', + valueType: 'text', + width: 50, + }, + { + title: '供应商名称', + dataIndex: 'companyName', + valueType: 'text', + width: 120, + }, + { + hideInTable: type1, + title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)', + dataIndex: 'price', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('price', '报价', record.price, true, true) + } else { + return record.price + } + } + }, + { + hideInTable: type2, + title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)', + dataIndex: 'priceReview', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('priceReview', '评审价', record.priceReview, true, true) + } else { + return record.priceReview + } + } + }, + { + title: '商务分', + dataIndex: 'businessScore', + width: 60, + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('businessScore', '商务分', record.businessScore, false, true) + } else { + return record.businessScore + } + } + }, + { + title: '技术分', + width: 60, + dataIndex: 'technicalScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('technicalScore', '技术分', record.technicalScore, false, true) + } else { + return record.technicalScore + } + } + }, + { + title: '服务分', + width: 60, + dataIndex: 'serviceScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('serviceScore', '服务分', record.serviceScore, false, true) + } else { + return record.serviceScore + } + } + }, + { + title: '价格分', + width: 60, + dataIndex: 'priceScore', + hideInTable: expandTotalScore, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('priceScore', '价格分', record.priceScore, false, true) + } else { + return record.priceScore + } + } + }, + { + title: ( + + 综合得分 + setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"} + + ), + dataIndex: 'totalScore', + width: 120, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('totalScore', '综合得分', record.totalScore, false, true) + } else { + return record.totalScore + } + } + }, + { + hideInTable: defId === 'negotiation_single_simple', + title: '是否通过初步评审', + dataIndex: 'firstRvwResult', + width: 100, + render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason) + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '是否通过详审', + dataIndex: 'detailRvwResult', + width: 100, + render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason) + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '应答是否有效', + width: 80, + dataIndex: 'answerValid', + render: (_: any, record: any) => { + return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-' + } + }, + { + title: '是否' + name1 + '候选人', + dataIndex: 'winnerCandidate', + width: 100, + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnSelect('winnerCandidate', record.winnerCandidate) + } else { + return record.winnerCandidate === 1 ? '是' : '否' + } + } + }, + { + hideInTable: type5 || defId === 'negotiation_single_simple', + title: '是否拟' + name1 + '人', + width: 80, + dataIndex: 'winnerBidder', + render: (_: any, record: any) => { + return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-' + } + }, + { + hideInTable: type3, + title: '拟签约金额(不含增值税)(元)', + width: 150, + dataIndex: 'contractedMoney', + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return ( + <> + {returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)} + {returnInput('id', '供应商id', record.id, false, false, true)} + {returnInput('resultId', '结果id', record.resultId, false, false, true)} + {returnInput('companyId', '公司id', record.companyId, false, false, true)} + {returnInput('companyName', '公司名称', record.companyName, false, false, true)} + + ) + } else { + return record.contractedMoney + } + } + }, + { + hideInTable: type4, + title: '增值税金额(元)', + width: 150, + dataIndex: 'taxRatePrice', + render: (_: any, record: any) => { + if (defId === 'negotiation_single_simple' && record.pushStatus == "0") { + return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true) + } else { + return record.taxRatePrice + } + } + }, + ] + return ( + [ + <> + + { + defId === 'negotiation_single_simple' ? + + : + + } + + + ]} + pagination={{ + defaultPageSize: 10, + showSizeChanger: false, + }} + /> + ) + }} + > + ) - }, [ListData]) + } + return ( <> @@ -480,7 +460,13 @@ const BidAssessmentResults: React.FC<{}> = (props) => { }}>重置
- {list} + + {ListData.map((item, index) => ( + + { setSpintype(value); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} /> + + ))} + setCurrentTable(false)} /> From 2fdd3092f423f3b1363be01e8b3165bdcbad04b9 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Fri, 29 Jul 2022 10:28:53 +0800 Subject: [PATCH 09/14] =?UTF-8?q?7.27=20=E4=B8=93=E5=AE=B6=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E8=AF=84=E5=AE=A1=E7=BB=93=E6=9E=9C=E9=A3=8E=E6=8E=A7?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GroupLeader/components/GroupLeader.tsx | 72 ++++++++++++-- .../ReviewResults/GroupLeader/service.ts | 14 ++- src/utils/RiskPreventionSoft/index.tsx | 99 +++++++++++++++++++ src/utils/RiskPreventionSoft/riskStyle.less | 19 ++++ 4 files changed, 192 insertions(+), 12 deletions(-) create mode 100644 src/utils/RiskPreventionSoft/index.tsx create mode 100644 src/utils/RiskPreventionSoft/riskStyle.less diff --git a/src/pages/Evaluation/expert/ReviewResults/GroupLeader/components/GroupLeader.tsx b/src/pages/Evaluation/expert/ReviewResults/GroupLeader/components/GroupLeader.tsx index dca25b4..9ea200a 100644 --- a/src/pages/Evaluation/expert/ReviewResults/GroupLeader/components/GroupLeader.tsx +++ b/src/pages/Evaluation/expert/ReviewResults/GroupLeader/components/GroupLeader.tsx @@ -1,7 +1,7 @@ import { Button, Card, Col, Collapse, Divider, Form, Input, message, Modal, Popover, Row, Space, Spin, Tooltip, Typography } from 'antd'; import React, { useEffect, useRef, useState } from 'react'; import '@/utils/lq.style.less'; -import { getReviewResult, saveToExpertConfirm, submitReviewResult, submitToExpertConfirm, unlockResult } from '../service'; +import { beforeRiskControl, getReviewResult, saveToExpertConfirm, submitReviewResult, submitToExpertConfirm, unlockResult } from '../service'; import { commonMessage } from '@/utils/MessageUtils'; import { getDictName, isEmpty, isNotEmpty } from '@/utils/CommonUtils'; import ProTable, { EditableProTable } from '@ant-design/pro-table'; @@ -16,10 +16,12 @@ 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'; +import RiskPreventionSoft from '@/utils/RiskPreventionSoft'; const { Panel } = Collapse; const { TextArea } = Input; const { Paragraph, Text } = Typography; +const { confirm, warning } = Modal; const firstRvwResult = ['否', '是']; //是否中标候选人 @@ -125,6 +127,10 @@ const GroupLeader: React.FC = () => { const [reportUploadId, setReportUploadId] = useState(''); //评审报告附件列表 const [reportFileList, setReportFileList] = useState([]); + //风控弹窗 2022.7.27 zhoujianlong + const [riskVisible, setRiskVisible] = useState(false); + //风控数据 2022.7.27 zhoujianlong + const [riskData, setRiskData] = useState([]); useEffect(() => { init(); }, []); @@ -1194,7 +1200,8 @@ const GroupLeader: React.FC = () => { // } verificationMoneyIsEdit(data); } - function submit(data: any) { + //提交接口调用 + function submit() { setSpinning(true); let suppliers = JSON.parse(JSON.stringify(supplierTableData))//2021.10.14 zhoujianlong 改为深拷贝,解决保存字段闪烁问题 suppliers.forEach((item: any) => { @@ -1202,11 +1209,23 @@ const GroupLeader: React.FC = () => { item.detailRvwResult = isEmpty(item?.detailRvwResult) ? null : parseInt(item?.detailRvwResult) item.winnerBidder = isEmpty(item?.winnerBidder) ? null : parseInt(item?.winnerBidder) }); - data.suppliers = suppliers + let data: any = { + id: resultReviewForm.getFieldValue('id'), + remarks: resultReviewForm.getFieldValue('remarks'), + suppliers: [...suppliers] + } // 提交专家确认 submitToExpertConfirm(data).then(res => { - commonMessage(res); - init(); + if (res?.code == 200) { + commonMessage(res); + init(); + } else { + message.destroy(); + warning({ + title: res?.message, + centered: true, + }); + } }).finally(() => { setSpinning(false); }) @@ -1239,10 +1258,9 @@ const GroupLeader: React.FC = () => { let res = false; let gys: any = []; if (roomType === '1' || bidMethodDict === 'procurement_mode_7' || bidMethodDict === 'procurement_mode_4') {//预审 询价 招募不需要金额 - submit(params); + verificationRiskControl(params); return; } - const { confirm } = Modal; function showConfirm() { confirm({ title: `您有供应商未填写【拟签约金额】或【增值税金额】,请确认是否提交`, @@ -1257,7 +1275,7 @@ const GroupLeader: React.FC = () => { } , onOk() { - submit(params) + verificationRiskControl(params); }, }); } @@ -1269,11 +1287,35 @@ const GroupLeader: React.FC = () => { } }) if (res) { - showConfirm() + showConfirm(); } else { - submit(params); + verificationRiskControl(params); } } + /** + * 风控中心校验 + * @param params + */ + const verificationRiskControl = (params: any) => { + let suppliers = JSON.parse(JSON.stringify(supplierTableData))//2021.10.14 zhoujianlong 改为深拷贝,解决保存字段闪烁问题 + suppliers.forEach((item: any) => { + item.winnerCandidate = saveWinnerCandidate(item.winnerCandidate) + item.detailRvwResult = isEmpty(item?.detailRvwResult) ? null : parseInt(item?.detailRvwResult) + item.winnerBidder = isEmpty(item?.winnerBidder) ? null : parseInt(item?.winnerBidder) + }); + params.suppliers = suppliers + params["evalMethodDict"] = evalMethodDict; + beforeRiskControl(params).then(res => { + if (res?.code == 200) { + if (res?.data.length > 0) { + setRiskData(res?.data); + setRiskVisible(true); + } else { + submit(); + } + } + }) + } /** * 验证增值税金额是否能高于拟签约的金额 @@ -1604,6 +1646,16 @@ const GroupLeader: React.FC = () => { fileId={reportUploadId} readOnly={true} />} + {/**风控组件 */} + {riskVisible && { + setRiskVisible(false); + setRiskData([]); + }} + onSubmit={() => submit()} + data={riskData} + />} diff --git a/src/pages/Evaluation/expert/ReviewResults/GroupLeader/service.ts b/src/pages/Evaluation/expert/ReviewResults/GroupLeader/service.ts index 20b8ce3..98e7cbc 100644 --- a/src/pages/Evaluation/expert/ReviewResults/GroupLeader/service.ts +++ b/src/pages/Evaluation/expert/ReviewResults/GroupLeader/service.ts @@ -53,7 +53,7 @@ export function submitReviewResult(id: any) { * 评审结果解锁 * @param id */ - export function unlockResult(id: any) { +export function unlockResult(id: any) { return request(`/api/biz-service-ebtp-rsms/v1/reviewresult/unlock/result/${id}`, { method: 'post', }); @@ -62,8 +62,18 @@ export function submitReviewResult(id: any) { * 评审报告解锁 * @param id */ - export function unlockReportIF(id: any) { +export function unlockReportIF(id: any) { return request(`/api/biz-service-ebtp-evaluation/v1/review/report/unlock/${id}`, { method: 'post', }); } +/** + * 提交前风险防控校验接口 + * @param data + */ +export function beforeRiskControl(data: any) { + return request("/api/biz-service-ebtp-rsms/v1/riskcenter/getRemindResult", { + method: 'post', + data: data, + }); +} diff --git a/src/utils/RiskPreventionSoft/index.tsx b/src/utils/RiskPreventionSoft/index.tsx new file mode 100644 index 0000000..04a4fbf --- /dev/null +++ b/src/utils/RiskPreventionSoft/index.tsx @@ -0,0 +1,99 @@ +import React from 'react'; +import { Modal, Tag } from 'antd'; +import { ExclamationCircleOutlined } from '@ant-design/icons'; +import type { ProColumns } from '@ant-design/pro-table'; +import ProTable from '@ant-design/pro-table'; +import './riskStyle.less' + +interface RiskPreventionSoftProps { + modalVisible: boolean; + onCancel: () => void; + onSubmit: () => void; + data: Array; +} + +const modalHeight = window.innerHeight * 96 / 100; + +/** + * 风险防控通用(软控) + * @param props + * @returns + */ +const RiskPreventionSoft: React.FC = (props) => { + const { modalVisible, onCancel, onSubmit, data } = props; + + const columns: ProColumns[] = [ + { + dataIndex: 'regulationStrategy', + title: '规则响应策略', + width: '13%', + valueEnum: { + hard: { text: '强控', status: 'Error' }, + soft: { text: '软控', status: 'Warning' }, + alarm: { text: '预警', status: 'Processing' } + }, + }, + { + dataIndex: 'regulationName', + title: '规则模型名称', + width: '13%', + }, + { + dataIndex: 'regulationRank', + title: '风险响应等级', + width: '13%', + valueEnum: { + first: { text: '风险一级' }, + second: { text: '风险二级' }, + third: { text: '风险三级' } + }, + }, + { + dataIndex: 'message', + title: '规则相应内容', + }, + ]; + + return ( + onCancel()} + onOk={() => { + onSubmit(); + onCancel(); + }} + > +
+ } color="warning" className="risk-top-tag"> + 当前业务操作受以下风控规则限制 + + {data.map(ite => ite?.result.map((item: any) => ( +
+
+ 场景名称:{item.sceneName} + {item.publishDepartName} +
+ + columns={columns} + dataSource={item.regulationData} + rowKey="regulationId" + size='small' + pagination={false} + toolBarRender={false} + search={false} + /> +
+ ) + ))} +
+
+ ); +}; + +export default RiskPreventionSoft; diff --git a/src/utils/RiskPreventionSoft/riskStyle.less b/src/utils/RiskPreventionSoft/riskStyle.less new file mode 100644 index 0000000..39813bd --- /dev/null +++ b/src/utils/RiskPreventionSoft/riskStyle.less @@ -0,0 +1,19 @@ +.risk-top-tag { + font-size: 14px; + width: 100%; + padding: 8px 16px; +} + +.risk-table-title { + height: 40px; + line-height: 40px; + display: flex; + justify-content: space-between; + font-weight: bold; + .table-scene-name { + color: #7c7c7c; + } + :last-child { + color: #000; + } +} \ No newline at end of file From 6676fb5943db71b99ddab3f37dbddea13c5c8126 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 2 Aug 2022 14:36:40 +0800 Subject: [PATCH 10/14] =?UTF-8?q?8.2=20=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E8=A7=A3=E5=AF=86=E9=A1=B5=E8=A7=A3=E5=AF=86=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9C=AA=E5=90=8C=E6=AD=A5=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Evaluation/FileDecode/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Evaluation/FileDecode/index.tsx b/src/pages/Evaluation/FileDecode/index.tsx index 5d0a59d..a849054 100644 --- a/src/pages/Evaluation/FileDecode/index.tsx +++ b/src/pages/Evaluation/FileDecode/index.tsx @@ -100,7 +100,7 @@ const FileDecode: React.FC<{}> = () => { if (JSON.stringify(record) == "{}") { return ''; } else { - const status = record?.registerInfoVOList[0].decryptStatus; + const status = record?.quoteOrOther == "1" ? record?.registerInfoVOList[0].decryptOtherStatus : record?.registerInfoVOList[0].decryptStatus; if (status == null || status === '1') { return '未解密' } else if (status === '2') { return '解密成功' } else if (status === '3') { return '解密失败' } From d0c2deb4c94f17c2fd3576bebe506c2802192947 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 2 Aug 2022 17:14:21 +0800 Subject: [PATCH 11/14] =?UTF-8?q?8.2=20=E5=9B=9B=E4=B8=AA=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=BC=95=E7=94=A8=E5=9C=B0=E5=9D=80=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/TanPan/router_tanpan.ts | 2 +- config/router.config.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/TanPan/router_tanpan.ts b/config/TanPan/router_tanpan.ts index 0979c47..5a04600 100644 --- a/config/TanPan/router_tanpan.ts +++ b/config/TanPan/router_tanpan.ts @@ -31,6 +31,6 @@ export default [ }, {//单一来源简化流程 选择供应商及上传应答文件 path: '/ProjectLayout/SimpleUpload', - component: './BidEvaluation/components/SimpleUpload' + component: './BidEvaluation/components/simpleUpload' } ]; diff --git a/config/router.config.ts b/config/router.config.ts index f1e96f5..46b1726 100644 --- a/config/router.config.ts +++ b/config/router.config.ts @@ -150,7 +150,7 @@ export default [ path: '/notice', routes: [ { name: 'noticeList', path: '/notice/noticeList', component: './notice/noticeList/components/NoticeList' },//通知公告查看-所有角色 - { name: 'noticeManage', path: '/notice/noticeManage', component: './notice/noticeManage/components/noticeManage' },//通知公告管理-系统管理员 + { name: 'noticeManage', path: '/notice/noticeManage', component: './notice/noticeManage/components/NoticeManage' },//通知公告管理-系统管理员 ] }, {//委托 @@ -161,12 +161,12 @@ export default [ {//管理员-代理 name: 'manager', path: '/Project/EntrustAssign/Manager', - component: './Project/EntrustAssign/Manager', + component: './Project/EntrustAssign/manager', }, {//项目经理-代理 name: 'operator', path: '/Project/EntrustAssign/Operator', - component: './Project/EntrustAssign/Operator', + component: './Project/EntrustAssign/operator', }, {//采购经理的委托管理 name: 'mandatoryAdministration', From ee259e2b9796961e65e3d105faedb18de02d92d3 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 3 Aug 2022 16:11:35 +0800 Subject: [PATCH 12/14] =?UTF-8?q?8.3=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Calibration/BidAssessmentResults/index.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/pages/Calibration/BidAssessmentResults/index.tsx b/src/pages/Calibration/BidAssessmentResults/index.tsx index 19850c0..86ddda1 100644 --- a/src/pages/Calibration/BidAssessmentResults/index.tsx +++ b/src/pages/Calibration/BidAssessmentResults/index.tsx @@ -109,8 +109,8 @@ const BidAssessmentResults: React.FC<{}> = (props) => { }; //确认评审结果ListRender封装 - const ResultListRender = (props: { item: any, setSpintype: (value: boolean) => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => { - const { item, setSpintype, getResultList, ListData, pushResult } = props; + const ResultListRender = (props: { item: any, setRefresh: () => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => { + const { item, setRefresh, getResultList, ListData, pushResult } = props; //单一来源简化 const [form] = Form.useForm(); //综合得分展开关闭 @@ -395,9 +395,8 @@ const BidAssessmentResults: React.FC<{}> = (props) => { { @@ -463,7 +462,7 @@ const BidAssessmentResults: React.FC<{}> = (props) => { {ListData.map((item, index) => ( - { setSpintype(value); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} /> + { setRefresh(Refresh + 1); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} /> ))} From f4ebff63d3d464f1aa67822fd41400a932038ca0 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 3 Aug 2022 16:41:07 +0800 Subject: [PATCH 13/14] =?UTF-8?q?8.3=20=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E8=A7=A3=E5=AF=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Evaluation/FileDecode/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Evaluation/FileDecode/index.tsx b/src/pages/Evaluation/FileDecode/index.tsx index a849054..562c6cd 100644 --- a/src/pages/Evaluation/FileDecode/index.tsx +++ b/src/pages/Evaluation/FileDecode/index.tsx @@ -124,7 +124,7 @@ const FileDecode: React.FC<{}> = () => { title: '操作', width: 80, render: (_: any, record: any) => { if (JSON.stringify(record) !== "{}" && jm) { - const status = record?.registerInfoVOList[0].decryptStatus; + const status = record?.quoteOrOther == "1" ? record?.registerInfoVOList[0].decryptOtherStatus : record?.registerInfoVOList[0].decryptStatus; if (record?.decryptEndDate !== '' && record?.decryptEndDate !== null && status !== '2') { return