From fed8c612ecc3fe8d96ae08849b8b0d005e2f8221 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 20 Apr 2023 09:14:56 +0800 Subject: [PATCH 1/6] =?UTF-8?q?4.20=20=E4=BE=9B=E5=BA=94=E5=95=86=E8=82=A1?= =?UTF-8?q?=E6=9D=83=E7=A9=BF=E9=80=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/router_transfer.ts | 5 + src/pages/BidEvaluation/manager.js | 1 + .../BidControlManager/components/ZhiQiCha.tsx | 66 ++++++-- .../BidControl/BidControlManager/index.tsx | 25 ++- .../Evaluation/BidControl/Jury/index.tsx | 23 ++- src/pages/SupplierRelation/index.tsx | 154 ++++++++++++++++++ src/pages/SupplierRelation/service.ts | 9 + src/services/common.ts | 11 +- src/utils/session.ts | 1 + 9 files changed, 279 insertions(+), 16 deletions(-) create mode 100644 src/pages/SupplierRelation/index.tsx create mode 100644 src/pages/SupplierRelation/service.ts diff --git a/config/router_transfer.ts b/config/router_transfer.ts index 5992222..81d12df 100644 --- a/config/router_transfer.ts +++ b/config/router_transfer.ts @@ -91,6 +91,11 @@ export default [ path: '/viewOfTenderDocuments', component: './Evaluation/BiddingDocumentsDecrypt/components/viewOfTenderDocuments', }, + //云门户跳转查看供应商关联关系疑似违规行为 + { + path: '/SupplierRelation', + component: './SupplierRelation', + }, //项目列表跳板页面 { name: 'index_2', diff --git a/src/pages/BidEvaluation/manager.js b/src/pages/BidEvaluation/manager.js index b47d1b4..e123650 100644 --- a/src/pages/BidEvaluation/manager.js +++ b/src/pages/BidEvaluation/manager.js @@ -120,6 +120,7 @@ class manager extends PureComponent { sessionStorage.setItem("expertGroupId", record.expertChatGroupId) sessionStorage.setItem("roomTypeByEva", getURLInformation("roomType")) sessionStorage.setItem("sectionId", record.sectionId) + sessionStorage.setItem("openTime", record.openTime) this.setState({ loading: true }) await getQuotationMethodById(record.id) // this.props.dispatch(routerRedux.push('/ProjectLayout/EvaRoom')) diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx index 2ae5160..ac376fa 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx @@ -3,9 +3,9 @@ import EquityRelation from "@/components/EquityRelation"; import { getURLInformation } from "@/utils/CommonUtils"; import { getRoomId, getSessionProjectData, getSessionRoleData } from "@/utils/session"; import { ExclamationCircleOutlined } from "@ant-design/icons"; -import ProTable, { EditableProTable, ProColumns } from "@ant-design/pro-table"; -import { Button, Collapse, message, Modal, Spin, Typography } from "antd"; -import React, { Fragment, useEffect, useState } from "react"; +import ProTable, { ActionType, EditableProTable, ProColumns } from "@ant-design/pro-table"; +import { Button, Collapse, Form, message, Modal, Radio, RadioChangeEvent, Spin, Typography } from "antd"; +import React, { Fragment, useEffect, useRef, useState } from "react"; import { getSuspectedViolation, leaderConfirm } from "../service"; /** @@ -15,10 +15,10 @@ import { getSuspectedViolation, leaderConfirm } from "../service"; */ const ZhiQiCha: React.FC<{}> = (props) => { const title_style = { color: "#b30000", fontWeight: 700 }; - // const options = [ - // { label: '确认无风险', value: 0 }, - // { label: '确认有风险', value: 1 }, - // ]; + const options = [ + { label: '全部否', value: "0" }, + { label: '全部是', value: "1" }, + ]; //是否展开智企查疑似关联关系 const defaultZQCKey = getURLInformation('n') == '1' ? ['zhiqicha'] : [] const { Paragraph, Text } = Typography; @@ -43,11 +43,16 @@ const ZhiQiCha: React.FC<{}> = (props) => { // const [radioValue, setRadioValue] = useState(""); //loading const [loading, setLoading] = useState(true); + //多选用 + const [value1, setValue1] = useState(null); + const [value2, setValue2] = useState(null); + const [form] = Form.useForm(); const columns: ProColumns[] = [ { title: 供应商A, editable: false, + width: "20%", render: (_: any, record: any) => ( {record.supplierA.name} ), @@ -55,6 +60,7 @@ const ZhiQiCha: React.FC<{}> = (props) => { { title: 供应商B, editable: false, + width: "20%", render: (_: any, record: any) => ( {record.supplierB.name} ), @@ -62,6 +68,7 @@ const ZhiQiCha: React.FC<{}> = (props) => { { title: 关系类型, editable: false, + width: "10%", render: (_: any, record: any) => ( {record.typeDesc}关系 ), @@ -70,26 +77,35 @@ const ZhiQiCha: React.FC<{}> = (props) => { title: 关联信息是否准确, dataIndex: 'relationFlag', key: 'relationFlag', + width: "15%", valueType: 'radio', valueEnum: { "0": { text: '否' }, "1": { text: '是' }, }, + fieldProps: { + onChange: () => { setValue1(null) } + } }, { title: 是否被认定为风险, dataIndex: 'riskFlag', key: 'riskFlag', + width: "15%", valueType: 'radio', valueEnum: { "0": { text: '否' }, "1": { text: '是' }, }, + fieldProps: { + onChange: () => { setValue2(null) } + } }, { title: 说明, dataIndex: 'memo', key: 'memo', + width: "20%", tooltip: "一行中存在至少一项选择【否】,当前行的说明必须填写", fieldProps: { maxLength: 100, @@ -150,8 +166,8 @@ const ZhiQiCha: React.FC<{}> = (props) => { setIsLeader(resp?.data == "ReviewLeader"); } setWarningsData(res?.data); - setSupplierTableData(res?.data?.riskSupplier != null ? res?.data?.riskSupplier?.map((item: any) => { item.riskFlag = String(item.riskFlag); item.relationFlag = String(item.relationFlag); return item }) : []); - setIsRisk(res?.data?.riskSupplier != null); + setSupplierTableData(res?.data?.riskSupplier != null && res?.data?.riskSupplier.length > 0 ? res?.data?.riskSupplier?.map((item: any) => { item.riskFlag = String(item.riskFlag); item.relationFlag = String(item.relationFlag); return item }) : []); + setIsRisk(res?.data?.riskSupplier != null && res?.data?.riskSupplier.length > 0); // form.setFieldsValue(res?.data); } }).finally(() => { @@ -229,6 +245,29 @@ const ZhiQiCha: React.FC<{}> = (props) => { onCancel() { }, }); } + const onChange1 = ({ target: { value } }: RadioChangeEvent) => { + setValue1(value); + const data = JSON.parse(JSON.stringify(supplierTableData));//深拷贝 + const obj = {}; + for (let i = 0, l = data.length; i < l; i++) { + data[i].relationFlag = value; + obj[data[i].id] = { relationFlag: value }; + } + form.setFieldsValue(obj); + setSupplierTableData(data); + }; + + const onChange2 = ({ target: { value } }: RadioChangeEvent) => { + setValue2(value); + const data = JSON.parse(JSON.stringify(supplierTableData));//深拷贝 + const obj = {}; + for (let i = 0, l = data.length; i < l; i++) { + data[i].riskFlag = value; + obj[data[i].id] = { riskFlag: value }; + } + form.setFieldsValue(obj); + setSupplierTableData(data); + }; useEffect(() => { getZQCData(); }, []) @@ -273,7 +312,13 @@ const ZhiQiCha: React.FC<{}> = (props) => { {isRisk && <> {isLeader &&
-

相关供应商关联情况汇总(参考)

+

+ 相关供应商关联情况汇总(参考) + {warningsData?.headmanConfirmStatus != "1" &&
+ 关联信息是否准确: + 是否被认定为风险: +
} +

= (props) => { value={supplierTableData} editable={{ type: 'multiple', + form: form, editableKeys: warningsData?.headmanConfirmStatus == "1" ? [] : supplierTableData.map(item => item.id), // onChange: setEditableRowKeys, onValuesChange: (record, recordList) => { diff --git a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx index b5917d2..2cfeb07 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/index.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/index.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import ViewRishFormModal from './components/ViewRishFormModal'; import ViewQuoteWarningFormModal from './components/ViewQuoteWarningFormModal'; import ViewBlacklistFormModal from './components/ViewBlacklistFormModal'; @@ -9,7 +9,8 @@ import ViewRiskSupplierModal from './components/ViewRiskSupplierModal'; import BidDocSmartCheckFormModal from './components/BidDocSmartCheckFormModal'; import ViewEvalFormModal from './components/ViewEvalFormModal'; import ZhiQiCha from './components/ZhiQiCha'; -import { getDefId } from '@/utils/session'; +import { getDefId, getRoomId, getSessionProjectData } from '@/utils/session'; +import { getSuspectedViolation } from './service'; const Sing: React.FC<{}> = () => { //ip mac @@ -57,10 +58,28 @@ const Sing: React.FC<{}> = () => { const [ViewEvalCheckValues, setViewEvalCheckValues] = useState({}); //获取流程id const defId = getDefId(); + //是否显示智企查 + const [isShowZQC, setIsShowZQC] = useState(false); + + useEffect(() => { + const tpId = getSessionProjectData()?.id; + const sectionId = sessionStorage.getItem("sectionId"); + const assessRoomId = getRoomId(); + const openTime = sessionStorage.getItem("openTime");//获取评审开始时间 + getSuspectedViolation({ tpId, sectionId, assessRoomId }).then(res => {//查询是否有风险,2023年3月31日之前的无风险项目屏蔽掉此功能 + if (res?.success) { + if (!(res?.data?.riskSupplier != null && res?.data?.riskSupplier.length > 0) && openTime && (openTime < "2023-03-31 23:59:59")) { + setIsShowZQC(false); + } else { + setIsShowZQC(true); + } + } + }); + }, []) return ( <> {/**智企查-供应商关联关系疑似违规行为 */} - {((defId != "negotiation_single") && (defId != "recruit_multi") && (defId != "inquiry")) && } + {((defId != "negotiation_single") && (defId != "recruit_multi") && (defId != "inquiry") && isShowZQC) && } { ViewRishFormModal ? ( = () => { const [ViewJuryScoringAnalysisValues, setViewJuryScoringAnalysisValues] = useState({}); //获取流程id const defId = getDefId(); + //是否显示智企查 + const [isShowZQC, setIsShowZQC] = useState(false); + + useEffect(() => { + const tpId = getSessionProjectData()?.id; + const sectionId = sessionStorage.getItem("sectionId"); + const assessRoomId = getRoomId(); + const openTime = sessionStorage.getItem("openTime");//获取评审开始时间 + getSuspectedViolation({ tpId, sectionId, assessRoomId }).then(res => {//查询是否有风险,2023年3月31日之前的无风险项目屏蔽掉此功能 + if (res?.success) { + if (!(res?.data?.riskSupplier != null && res?.data?.riskSupplier.length > 0) && openTime && (openTime < "2023-03-31 23:59:59")) { + setIsShowZQC(false); + } else { + setIsShowZQC(true); + } + } + }); + }, []) const getWarningList = async () => { @@ -48,7 +67,7 @@ const Sing: React.FC<{}> = () => { return ( <> {/**智企查-供应商关联关系疑似违规行为 */} - {((defId != "negotiation_single") && (defId != "recruit_multi")) && } + {((defId != "negotiation_single") && (defId != "recruit_multi") && (defId != "inquiry") && isShowZQC) && } {//投标文件制作地址日志信息查看 ViewRishFormModal ? ( = () => { + const title_style = { color: "#b30000", fontWeight: 700 }; + const { Paragraph, Text } = Typography; + //loading + const [loading, setLoading] = useState(true); + //查询的供应商股权关系数据,确认数据。 + const [warningsData, setWarningsData] = useState(); + //项目数据 + const [projectData, setProjectData] = useState(); + //标段数据 + const [sectionData, setSectionData] = useState(); + //专家组长填写的表格的供应商 + const [supplierTableData, setSupplierTableData] = useState([]); + //获取url参数 + const tpId = getURLInformation("tpId"); + const sectionId = getURLInformation("sectionId"); + const roomId = getURLInformation("roomId"); + const readOnlyColumns: ProColumns[] = [ + { + title: 供应商A, + render: (_: any, record: any) => ( + {record?.supplierA.name} + ), + }, + { + title: 供应商B, + render: (_: any, record: any) => ( + {record?.supplierB.name} + ), + }, + { + title: 关系类型, + editable: false, + render: (_: any, record: any) => ( + {record.typeDesc}关系 + ), + }, + { + title: 关联信息是否准确(专家评审), + dataIndex: 'relationFlag', + key: 'relationFlag', + render: (_: any, record: any) => warningsData?.headmanConfirmStatus == "1" ? ({record.relationFlag == 1 ? "是" : record.relationFlag == 0 ? "否" : "-"}) : (-), + }, + { + title: 是否被认定为风险(专家评审), + dataIndex: 'riskFlag', + key: 'riskFlag', + render: (_: any, record: any) => warningsData?.headmanConfirmStatus == "1" ? ({record.riskFlag == 1 ? "是" : record.riskFlag == 0 ? "否" : "-"}) : (-), + }, + { + title: 说明(专家评审), + dataIndex: 'memo', + key: 'memo', + render: (_: any, record: any) => warningsData?.headmanConfirmStatus == "1" ? _ : (-) + }, + ]; + //获取数据 + const getData = async () => { + let params = { + "tpId": tpId, + "sectionId": sectionId, + "assessRoomId": roomId, + } + // let params = { "tpId": "1626032810108956672", "sectionId": "1626032810125733888", "assessRoomId": "1626032965674401792" }; + if (tpId && sectionId && roomId) { + setLoading(true); + const riskResponse = await getSuspectedViolation(params);//获取风险数据 + const projectResponse = await getProjectDataById(params.tpId);//获取项目数据 + const sectionResponse = await getSectionDataById(params.sectionId);//获取标段数据 + if (riskResponse && riskResponse.success) { + setSupplierTableData(riskResponse?.data?.riskSupplier != null ? riskResponse?.data?.riskSupplier?.map((item: any) => { item.riskFlag = String(item.riskFlag); item.relationFlag = String(item.relationFlag); return item }) : []); + setWarningsData(riskResponse?.data); + updateRead(roomId, riskResponse?.data.readingCode); + } + if (projectResponse && projectResponse.success) { + setProjectData(projectResponse?.data); + } + if (sectionResponse && sectionResponse.success) { + setSectionData(sectionResponse?.data); + } + setLoading(false); + } + } + + useEffect(() => { + getData(); + }, []) + + return ( + +
+
+ 中国联通智慧供应链平台 | 招标采购中心 +
+
+
+ +

+ 供应商疑似关联关系情况 +

+

基本信息

+ + {projectData?.projectName ?? "-"} + {projectData?.ebpProjectNumber ?? "-"} + {projectData?.appManagerName ?? "-"} + {projectData?.ownerContactName ?? "-"} + {sectionData?.bidSectName ?? "-"} + +

供应商疑似关联关系图

+
+
+ +
+
+ + 《中华人民共和国招标投标法》第三十二条规定:”投标人不得相互串通投标报价,不得排挤其他投标人的公平竞争,损害招标人或者其他投标人的合法权益。投标人不得与招标人串通投标,损害国家利益、社会公共利益或者他人的合法权益。” + + + 《中华人民共和国招标投标法实施条例》第三十四条规定:“与招标人存在利害关系可能影响招标公正性的法人、其它组织或者个人,不得参加投标。单位负责人为同一人或者存在控股关系、管理关系的不同单位,不得参加同一标段投标或者未划分标段的同一招标项目投标。违反前两款规定的,相关投标无效。” + + + 控股超过51%或股权关系分散的占股最大的股东都属于控股,请项目经理与评委给予注意! + +
+
+
+

相关供应商关联情况汇总(参考)

+ +
+
+
+
+ ); +}; + +export default SupplierRelation; diff --git a/src/pages/SupplierRelation/service.ts b/src/pages/SupplierRelation/service.ts new file mode 100644 index 0000000..386fbd6 --- /dev/null +++ b/src/pages/SupplierRelation/service.ts @@ -0,0 +1,9 @@ +import request from '@/utils/request'; +/** + * 页面更新-已阅 + * @param params + * @returns + */ +export async function updateRead(roomId: any, readingCode: any) { + return request(`/api/biz-service-ebtp-resps/v1/risktendererwarning/updateReaded?assessRoomId=${roomId}&readingCode=${readingCode}`); +} \ No newline at end of file diff --git a/src/services/common.ts b/src/services/common.ts index 075007c..76a41fa 100644 --- a/src/services/common.ts +++ b/src/services/common.ts @@ -15,6 +15,15 @@ export async function getRoomDataById(params: any) { * @param data * @returns */ - export async function getSectionDataById(params: any) { +export async function getSectionDataById(params: any) { return request(`/api/biz-service-ebtp-project/v1/projectSection/${params}`); +} +/** + * 根据projectId,tpId,项目id获取项目信息 + * 2023.4.19 zhoujianlong + * @param id + * @returns + */ +export async function getProjectDataById(id?: any) { + return request(`/api/biz-service-ebtp-project/v1/projectRecord/${id}`); } \ No newline at end of file diff --git a/src/utils/session.ts b/src/utils/session.ts index 44f7a60..004c04b 100644 --- a/src/utils/session.ts +++ b/src/utils/session.ts @@ -249,6 +249,7 @@ export async function jurySaveInfo(record: any) { sessionStorage.setItem("expertGroupId", record.expertChatGroupId) sessionStorage.setItem("sectionId", record.sectionId) sessionStorage.setItem("roomTypeByEva", record.roomType) + sessionStorage.setItem("openTime", record.openTime) await getQuotationMethodById(record.id) } From b550699ec45e282c99cd7520ee903336e3b8d73b Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 20 Apr 2023 09:30:12 +0800 Subject: [PATCH 2/6] 4.20 --- src/pages/SupplierRelation/index.tsx | 5 +++-- src/pages/SupplierRelation/service.ts | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pages/SupplierRelation/index.tsx b/src/pages/SupplierRelation/index.tsx index f82248c..90a2e74 100644 --- a/src/pages/SupplierRelation/index.tsx +++ b/src/pages/SupplierRelation/index.tsx @@ -25,6 +25,7 @@ const SupplierRelation: React.FC<{}> = () => { const tpId = getURLInformation("tpId"); const sectionId = getURLInformation("sectionId"); const roomId = getURLInformation("roomId"); + const readingCode = getURLInformation("readingCode"); const readOnlyColumns: ProColumns[] = [ { title: 供应商A, @@ -72,7 +73,7 @@ const SupplierRelation: React.FC<{}> = () => { "assessRoomId": roomId, } // let params = { "tpId": "1626032810108956672", "sectionId": "1626032810125733888", "assessRoomId": "1626032965674401792" }; - if (tpId && sectionId && roomId) { + if (tpId && sectionId && roomId && readingCode) { setLoading(true); const riskResponse = await getSuspectedViolation(params);//获取风险数据 const projectResponse = await getProjectDataById(params.tpId);//获取项目数据 @@ -80,7 +81,6 @@ const SupplierRelation: React.FC<{}> = () => { if (riskResponse && riskResponse.success) { setSupplierTableData(riskResponse?.data?.riskSupplier != null ? riskResponse?.data?.riskSupplier?.map((item: any) => { item.riskFlag = String(item.riskFlag); item.relationFlag = String(item.relationFlag); return item }) : []); setWarningsData(riskResponse?.data); - updateRead(roomId, riskResponse?.data.readingCode); } if (projectResponse && projectResponse.success) { setProjectData(projectResponse?.data); @@ -89,6 +89,7 @@ const SupplierRelation: React.FC<{}> = () => { setSectionData(sectionResponse?.data); } setLoading(false); + updateRead({ assessRoomId: roomId, readingCode }); } } diff --git a/src/pages/SupplierRelation/service.ts b/src/pages/SupplierRelation/service.ts index 386fbd6..47ed55f 100644 --- a/src/pages/SupplierRelation/service.ts +++ b/src/pages/SupplierRelation/service.ts @@ -4,6 +4,9 @@ import request from '@/utils/request'; * @param params * @returns */ -export async function updateRead(roomId: any, readingCode: any) { - return request(`/api/biz-service-ebtp-resps/v1/risktendererwarning/updateReaded?assessRoomId=${roomId}&readingCode=${readingCode}`); +export async function updateRead(data: any) { + return request(`/api/biz-service-ebtp-resps/v1/risktendererwarning/updateReaded`, { + method: "POST", + data: { ...data } + }); } \ No newline at end of file From 1512542139061fc30c14adc8041ddec32a944ff0 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 25 Apr 2023 09:01:01 +0800 Subject: [PATCH 3/6] =?UTF-8?q?4.25=20=E8=87=AA=E4=B8=BB=E6=8B=9B=E6=A0=87?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E4=BB=A3=E7=90=86=E6=9C=BA=E6=9E=84=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E7=BB=8F=E7=90=86=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/SupplierRelation/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/SupplierRelation/index.tsx b/src/pages/SupplierRelation/index.tsx index 90a2e74..d061e26 100644 --- a/src/pages/SupplierRelation/index.tsx +++ b/src/pages/SupplierRelation/index.tsx @@ -114,7 +114,7 @@ const SupplierRelation: React.FC<{}> = () => { {projectData?.projectName ?? "-"} {projectData?.ebpProjectNumber ?? "-"} - {projectData?.appManagerName ?? "-"} + {projectData?.bidOrgDict !== "organization_2" && {projectData?.appManagerName ?? "-"}} {projectData?.ownerContactName ?? "-"} {sectionData?.bidSectName ?? "-"} From 301648bee5ae8bf0066a2526345c2246f2317ea3 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Sat, 6 May 2023 16:42:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?5.6=20=E4=BE=9B=E5=BA=94=E5=95=86=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=97=B6=E9=97=B4=E9=A3=8E=E9=99=A9=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/BidDocSmartCheckFormModal.tsx | 86 +++--- .../components/CollapsePanel.tsx | 22 ++ .../components/EstablishTimeWarning.tsx | 52 ++++ .../components/ViewBlacklistFormModal.tsx | 83 +++--- .../components/ViewEvalFormModal.tsx | 189 ++++++------ .../components/ViewInvoiceFormModal.tsx | 16 +- .../ViewJuryScoringAnalysisFormModal.tsx | 107 +++---- .../ViewJuryScoringRemindFormModal.tsx | 275 +++++++++--------- .../components/ViewQuoteWarningFormModal.tsx | 161 +++++----- .../components/ViewReviewResultFormModal.tsx | 244 ++++++++-------- .../components/ViewRishFormModal.tsx | 127 ++++---- .../components/ViewRiskSupplierModal.tsx | 20 +- .../BidControlManager/components/ZhiQiCha.tsx | 13 +- .../BidControl/BidControlManager/index.tsx | 186 ++---------- .../BidControl/BidControlManager/service.ts | 10 + .../Evaluation/BidControl/Jury/index.tsx | 112 +------ .../BiddingDocumentsDecrypt/index.tsx | 18 +- src/pages/Tender/BiddingResponse/index.tsx | 19 +- .../Tender/BiddingResponse/TableLook.tsx | 20 +- 19 files changed, 781 insertions(+), 979 deletions(-) create mode 100644 src/pages/Evaluation/BidControl/BidControlManager/components/CollapsePanel.tsx create mode 100644 src/pages/Evaluation/BidControl/BidControlManager/components/EstablishTimeWarning.tsx diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/BidDocSmartCheckFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/BidDocSmartCheckFormModal.tsx index b872537..938c248 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/BidDocSmartCheckFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/BidDocSmartCheckFormModal.tsx @@ -1,18 +1,14 @@ import React, { useEffect, useState } from 'react'; -import { Collapse, Table } from 'antd'; +import { Table } from 'antd'; import { getBidDocSmartCheckList } from '../service'; import { getRoomId, getSessionRoleData } from '@/utils/session'; +import CollapsePanel from './CollapsePanel'; +import { isNotEmpty } from '@/utils/CommonUtils'; -interface BidDocSmartCheckFormModalProps { - modalVisible: boolean; - values: any; - onCancel: any; -} - -const BidDocSmartCheckFormModal: React.FC = (props) => { +const BidDocSmartCheckFormModal: React.FC<{}> = () => { const [bidDocSmartCheckList, setBidDocSmartCheckList] = useState([]); - + const [showWarning, setShowWarning] = useState(false); //查看详情窗口record const [juryTableShow, setJuryTableShow] = useState(true); @@ -30,9 +26,6 @@ const BidDocSmartCheckFormModal: React.FC = (pro } }, []) - function callback(key: any) { - //getSessionUserData.roleIds; - } function visibleValue(key: any) { if (key) { return ; @@ -61,25 +54,35 @@ const BidDocSmartCheckFormModal: React.FC = (pro 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); - }}, + { + 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 ret = { "code": 200, "success": true, "message": "success", "data": [] } const getWarningList = async () => { let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') @@ -87,9 +90,10 @@ const BidDocSmartCheckFormModal: React.FC = (pro await getBidDocSmartCheckList(roomId).then((res) => { if (res.success == true) { setCheckLegalAndNameResult(res?.data?.isCheckLegalAndName); - if(res?.data?.isCheckOpen){ + if (res?.data?.isCheckOpen) { setJuryTableShow(true); - setBidDocSmartCheckList(res.data?.checkResults) + setBidDocSmartCheckList(res.data?.checkResults); + setShowWarning(isNotEmpty(res.data?.checkResults) ? res.data?.checkResults.findIndex((item: { macIPCheck: any; ensureStatus: any; }) => (item.macIPCheck || item.ensureStatus)) != -1 : false) } } else { setBidDocSmartCheckList(ret.data); @@ -100,19 +104,17 @@ const BidDocSmartCheckFormModal: React.FC = (pro return ( <> {juryTableShow ? - - - {注:"√"为审查项智能审查通过,"×"为审查项智能审查存在风险} - { -
+ + {注:"√"为审查项智能审查通过,"×"为审查项智能审查存在风险} + { +
- } -
-
+ } + : null} ); diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/CollapsePanel.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/CollapsePanel.tsx new file mode 100644 index 0000000..3e887a7 --- /dev/null +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/CollapsePanel.tsx @@ -0,0 +1,22 @@ +import React from "react"; +import { Collapse, CollapsePanelProps, Tooltip } from "antd"; +import { AlertOutlined } from "@ant-design/icons"; +/** + * 公共折叠面板-风险点展示用 + * @param props + * @returns + */ +const CollapsePanel: React.FC = (props) => { + const { showWarning = false, header } = props; + const warningHeader = ( + {header} + ) + return ( + + + {props.children} + + + ) +} +export default CollapsePanel; \ No newline at end of file diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/EstablishTimeWarning.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/EstablishTimeWarning.tsx new file mode 100644 index 0000000..583de9e --- /dev/null +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/EstablishTimeWarning.tsx @@ -0,0 +1,52 @@ +import React, { useEffect, useState } from 'react'; +import { Empty, Table } from 'antd'; +import { supplierTimeWarning } from '../service'; +import { getRoomId } from '@/utils/session'; +import CollapsePanel from './CollapsePanel'; +/** + * 供应商成立时间预警 + * @returns + */ +const EstablishTimeWarning: React.FC<{}> = () => { + const [list, setList] = useState([]); + + useEffect(() => { + getWarningList(); + }, []) + + const columns = [ + { title: '序号', dataIndex: 'num', width: 60, render: (text: any, record: any, index: any) => `${index + 1}` }, + { title: '供应商名称', dataIndex: 'companyName', }, + { title: '成立日期', dataIndex: 'foundTime', }, + ]; + + const getWarningList = async () => { + let roomId = getRoomId(); + + //供应商成立时间预警 + await supplierTimeWarning(roomId).then((res) => { + if (res.success == true) { + setList(res.data) + } + }) + } + + return ( + <> + 0}> + {list.length == 0 ? : ( + <> + 以下供应商的成立日期距评标时间间隔不足一年,请结合招标文件/采购文件的投标人资格要求,仔细核对供应商应当具备的企业资质。 +
+ + )} +
+ + ); +}; + +export default EstablishTimeWarning; diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewBlacklistFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewBlacklistFormModal.tsx index 05d3c99..76bc0ba 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewBlacklistFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewBlacklistFormModal.tsx @@ -1,23 +1,17 @@ import React, { useEffect, useState } from 'react'; -import { Tabs, Collapse, Form, Input, Modal, Col, Row, Divider, Table, Button } from 'antd'; -import ProTable, { ProColumns } from "@ant-design/pro-table"; -import ExtendUpload from "@/utils/ExtendUpload"; +import { Table, Button } from 'antd'; import { getBlackList } from '../service'; -import { isEmpty } from '@/utils/CommonUtils' -import { getRoomId, getSessionProjectData, getSessionRoleData, getSessionUserData } from '@/utils/session'; +import { getRoomId, getSessionProjectData, getSessionRoleData } from '@/utils/session'; import ViewInvoiceFormModal from './ViewInvoiceFormModal'; - -interface ViewBlacklistFormModalProps { - modalVisible: boolean; - values: any; - onCancel: any; -} +import CollapsePanel from './CollapsePanel'; +import { isNotEmpty } from '@/utils/CommonUtils'; const ret = { "code": 200, "success": true, "message": "success", "data": [{ "providerCode": "00100066991", "provinceName": "供应商1", "isBlack": "1", "ouName": null, "startTime": "2020-01-01", "endTime": "2022-01-01", "term": "2年", "oldList": [{ "id": "1", "providerCode": "00100066991", "provinceName": "供应商1", "ou": "JL", "ouName": "吉林", "startTime": "2020-01-01", "endTime": "2022-01-01", "term": "2年", "reserved1": "", "reserved2": "", "reserved3": "", "reserved4": "", "reserved5": "", "reserved6": "", "reserved7": "", "reserved8": "", "reserved9": "", "reserved10": "", "version": null, "isDel": 0, "isEnable": 0, "createBy": null, "createDate": null, "updateBy": null, "updateDate": null, "lastUpdateTime": null, "deleteFlag": "normal", "versions": null, "tenantId": null, "tenantName": null, "providerCodes": null }] }, { "providerCode": "00100066992", "provinceName": "供应商2", "isBlack": "0", "ouName": null, "startTime": null, "endTime": null, "term": null, "oldList": [] }, { "providerCode": "00100067003", "provinceName": "供应商3", "isBlack": "0", "ouName": null, "startTime": null, "endTime": null, "term": null, "oldList": [] }] } -const ViewBlacklistFormModal: React.FC = (props) => { +const ViewBlacklistFormModal: React.FC<{}> = () => { - const [quoteWarningList, setQuoteWarningList] = useState([]); + const [quoteWarningList, setQuoteWarningList] = useState([]); + const [showWarning, setShowWarning] = useState(false); //查看详情窗口显示 const [viewInvoiceFormVisible, setViewInvoiceFormVisible] = useState(false); @@ -35,10 +29,6 @@ const ViewBlacklistFormModal: React.FC = (props) => } }, []) - function callback(key: any) { - //getSessionUserData.roleIds; - } - //黑名单历史 const blacklistViewDetail = (data: any) => { setViewInvoiceFormVisible(true); @@ -56,11 +46,11 @@ const ViewBlacklistFormModal: React.FC = (props) => return name; } - const companyBlacklistColumns: ProColumns[] = [ + const companyBlacklistColumns: any[] = [ { title: '序号', dataIndex: 'num', width: 60, render: (text: any, record: any, index: any) => `${index + 1}` }, { title: '供应商名称', dataIndex: 'provinceName', }, { - title: '是否被列入黑名单', dataIndex: 'isBlack', render: (_, record) => { + title: '是否被列入黑名单', dataIndex: 'isBlack', render: (_: any, record: { isBlack: any; } | null) => { let a = ""; if (record !== null) { a = isBlackValue(record.isBlack); @@ -73,7 +63,7 @@ const ViewBlacklistFormModal: React.FC = (props) => { title: '黑名单结束时间', dataIndex: 'endTime', }, { title: '黑名单期限', dataIndex: 'term', }, { - title: '历史黑名单记录', dataIndex: 'hmdjl', render: (_, record) => { + title: '历史黑名单记录', dataIndex: 'hmdjl', render: (_: any, record: { isBlack: string; oldList: any; }) => { return ( <> {record.isBlack === "1" ? @@ -88,14 +78,13 @@ const ViewBlacklistFormModal: React.FC = (props) => const getWarningList = async () => { let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') let projectId = getSessionProjectData().id; - let sf = ""; - let a = []; //setQuoteWarningList(dataSource3) //黑名单 await getBlackList(projectId, roomId).then((res) => { if (res.success == true) { - setQuoteWarningList(res.data) + setQuoteWarningList(res.data); + setShowWarning(isNotEmpty(res.data) ? res.data.findIndex((item: { isBlack: string; }) => (item.isBlack == "1")) != -1 : false); } else { setQuoteWarningList(ret.data); setFeginState(true); @@ -106,34 +95,32 @@ const ViewBlacklistFormModal: React.FC = (props) => return ( <> {juryTableShow ? - - - {feginState ? 供应商黑名单接口不通,显示假数据 : null} - { - -
- - } -
+ + {feginState ? 供应商黑名单接口不通,显示假数据 : null} { - viewInvoiceValues ? ( - { - setViewInvoiceFormVisible(!viewInvoiceFormVisible); - setViewInvoiceValues({}); - }} - > - - ) : null + +
+ } -
+ : null} + { + viewInvoiceValues ? ( + { + setViewInvoiceFormVisible(!viewInvoiceFormVisible); + setViewInvoiceValues({}); + }} + > + + ) : null + } ); }; diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewEvalFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewEvalFormModal.tsx index 7c5a6ca..e39058c 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewEvalFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewEvalFormModal.tsx @@ -1,36 +1,31 @@ -import React, { useEffect,useState } from 'react'; -import { Tabs,Collapse,Form, Input, Modal,Col,Row,Divider, Table, Button, Empty ,message} from 'antd'; -import { getEvalRoomByAssessId, getEvalRoomPage, saveUpdateEvalRoom} from '../service'; -import {} from '@/utils/CommonUtils' -import ProTable, { ProColumns } from "@ant-design/pro-table"; -import { getProMethod, getRoomId, getSessionRoleData } from '@/utils/session'; +import React, { useEffect, useState } from 'react'; +import { Table, message } from 'antd'; +import { getEvalRoomByAssessId, getEvalRoomPage } from '../service'; +import { } from '@/utils/CommonUtils' +import { getRoomId } from '@/utils/session'; import ViewEvalAlarmUpdateModal from './ViewEvalAlarmUpdateModal'; +import CollapsePanel from './CollapsePanel'; -interface ViewEvalFormModalProps { - modalVisible: boolean; - values: any; - onCancel:any; -} interface alarmData { - tilte:string;//标题 - id:string;//告警id - reserveId:string;//预约id - tpName:string;//项目名称 - tpNumber:string;//项目编号 - bsName:string;//标段名称 - placeName:string; //评标室名称 - startDate:string; //开始时间 - endDate:string; //结束时间 - status:string;//处理状态:0未处理;1已处理', - roomStatus:string;//评标室状态 0-未开启 1-进行中 2-已结束 - pNumber:string;//人数信息 - remark:string;//处理说明 - attachment:string;//附件id + tilte: string;//标题 + id: string;//告警id + reserveId: string;//预约id + tpName: string;//项目名称 + tpNumber: string;//项目编号 + bsName: string;//标段名称 + placeName: string; //评标室名称 + startDate: string; //开始时间 + endDate: string; //结束时间 + status: string;//处理状态:0未处理;1已处理', + roomStatus: string;//评标室状态 0-未开启 1-进行中 2-已结束 + pNumber: string;//人数信息 + remark: string;//处理说明 + attachment: string;//附件id } -const ViewEvalFormModal: React.FC = (props) => { +const ViewEvalFormModal: React.FC<{}> = () => { - const alarm:alarmData ={ + const alarm: alarmData = { tilte: "测试", id: '', reserveId: '', @@ -50,21 +45,18 @@ const ViewEvalFormModal: React.FC = (props) => { const [alarmData, setAlarmData] = useState(alarm); const [alarmList, setAlarmList] = useState([]); const [juryTableShow, setJuryTableShow] = useState(true);// - const [alarmNumber, setAlarmNumber] = useState({}); const [evalAlarmUpdateDetail, setEvalAlarmUpdateDetail] = useState(false); const [isLookType, setIsLookType] = useState(false); - var roleId = getSessionRoleData().roleCode; - let roomId=getRoomId();//getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') - + let roomId = getRoomId();//getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') + useEffect(() => { // if(roleId==="ebtp-expert"){ // setJuryTableShow(false); // } - setAlarmNumber("0"); getReserveIdFunction(); - },[]) + }, []) - const columns: any[] =[ + const columns: any[] = [ { title: '序号', dataIndex: 'num', width: 60, render: (text: any, record: any, index: any) => `${index + 1}` }, { title: '告警设备类型', @@ -73,13 +65,13 @@ const ViewEvalFormModal: React.FC = (props) => { let a; if (record.deviceType === "door") { a = "门禁点"; - }else if(record.deviceType === "camera"){ + } else if (record.deviceType === "camera") { a = "监控点"; - }else if(record.deviceType === "nvr"){ + } else if (record.deviceType === "nvr") { a = "nvr"; - }else if(record.deviceType === "encodeDevice"){ + } else if (record.deviceType === "encodeDevice") { a = "编码设备"; - }else if(record.deviceType === "oneMachine"){ + } else if (record.deviceType === "oneMachine") { a = "一体机"; } return a; @@ -91,7 +83,7 @@ const ViewEvalFormModal: React.FC = (props) => { title: '告警信息', dataIndex: 'type', render: (_: any, record: any) => { - + return getTypeValue(record.type); } }, { @@ -100,8 +92,8 @@ const ViewEvalFormModal: React.FC = (props) => { render: (_: any, record: any) => { let a; if (record.status === "0") { - a =

{"未处理"}

; - }else if(record.status === "1"){ + a =

{"未处理"}

; + } else if (record.status === "1") { a = "已处理"; } return a; @@ -111,45 +103,45 @@ const ViewEvalFormModal: React.FC = (props) => { title: '操作', dataIndex: 'operation', render: (_: any, record: any) => { - return <> + return <> - {record.status === "0"? toUpdate(record)} > + {record.status === "0" ? toUpdate(record)} > 去处理 - : toLook(record)} > + : toLook(record)} > 查看 } - + }, }, ] - function getTypeValue(key:any){ + function getTypeValue(key: any) { let val = ""; if (key === "2") { val = "人员数量异常"; - }else if(key === "3"){ + } else if (key === "3") { val = "陌生人告警"; - }else{ + } else { val = key; } return val; - } + } const getDate = (record: any) => { - alarm.tilte=getTypeValue(record.type); - alarm.tpName=record.projectName; - alarm.tpNumber=record.projectNum; - alarm.bsName=record.sectionName; - alarm.id=record.id; - alarm.reserveId=record.reserveId; - alarm.placeName=record.areaName; - alarm.startDate=record.startDate; - alarm.endDate=record.endDate; - alarm.pNumber=record.pnumber; - alarm.status=record.status; - alarm.roomStatus=record.roomStatus; - alarm.remark=record.remark; - alarm.attachment=record.attachment; + alarm.tilte = getTypeValue(record.type); + alarm.tpName = record.projectName; + alarm.tpNumber = record.projectNum; + alarm.bsName = record.sectionName; + alarm.id = record.id; + alarm.reserveId = record.reserveId; + alarm.placeName = record.areaName; + alarm.startDate = record.startDate; + alarm.endDate = record.endDate; + alarm.pNumber = record.pnumber; + alarm.status = record.status; + alarm.roomStatus = record.roomStatus; + alarm.remark = record.remark; + alarm.attachment = record.attachment; setAlarmData(alarm); } @@ -165,12 +157,12 @@ const ViewEvalFormModal: React.FC = (props) => { getDate(record); setEvalAlarmUpdateDetail(true) } - - + + const getReserveIdFunction = async () => { await getEvalRoomByAssessId(roomId).then((res) => { - if (res.success == true&&res.data!=null&&res.data!="") { + if (res.success == true && res.data != null && res.data != "") { getEvalRoomPageFunction(res.data); } else { //message.error('获取评标室预约id失败:显示测试数据-uat专用') @@ -180,15 +172,15 @@ const ViewEvalFormModal: React.FC = (props) => { }) } - const getEvalRoomPageFunction = async (reserveId:any) => { - var params={}; - params["reserveId"]= reserveId; - params["types"]= [2,3]; - params["pageNo"]=1; - params["pageSize"]=999; + const getEvalRoomPageFunction = async (reserveId: any) => { + var params = {}; + params["reserveId"] = reserveId; + params["types"] = [2, 3]; + params["pageNo"] = 1; + params["pageSize"] = 999; await getEvalRoomPage(params).then((res) => { if (res.success == true) { - + setAlarmList(res.data.records); } else { message.error('系统异常:获取告警数据失败') @@ -196,37 +188,32 @@ const ViewEvalFormModal: React.FC = (props) => { }) } - function callback(key: any) { - } - return ( <> - {juryTableShow? - - - 0}> +
-
-
-
:null} - - {evalAlarmUpdateDetail ? ( - setEvalAlarmUpdateDetail(false)} - onOk={() => { - getReserveIdFunction(); - setEvalAlarmUpdateDetail(false); - }} - > - - ) : null - } + //pagination={false}//分页 + > + + : null} + + {evalAlarmUpdateDetail ? ( + setEvalAlarmUpdateDetail(false)} + onOk={() => { + getReserveIdFunction(); + setEvalAlarmUpdateDetail(false); + }} + > + + ) : null + } ); }; diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewInvoiceFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewInvoiceFormModal.tsx index 916669b..3ab764a 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewInvoiceFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewInvoiceFormModal.tsx @@ -1,10 +1,5 @@ -import React, { useEffect, useState } from 'react'; -import { Tabs, Collapse, Form, Input, Modal, Col, Row, Divider, Table } from 'antd'; -import ProTable from "@ant-design/pro-table"; -import ExtendUpload from "@/utils/ExtendUpload"; -import { isEmpty } from '@/utils/CommonUtils' - - +import React, { useEffect } from 'react'; +import { Modal, Table } from 'antd'; interface ViewInvoiceFormModalProps { modalVisible: boolean; values: any; @@ -13,13 +8,6 @@ interface ViewInvoiceFormModalProps { const ViewInvoiceFormModal: React.FC = (props) => { const { modalVisible, values, onCancel: handleUpdateModalVisible, } = props; - const [ListData, setListData] = useState([]); - - const layout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }; - useEffect(() => { }, []) diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx index d8c1b5c..96b9f6c 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx @@ -1,19 +1,13 @@ import React, { useEffect, useState } from 'react'; -import { Tabs, Collapse, Form, Input, Modal, Col, Row, Divider, Table, message, Button, Empty } from 'antd'; -import ProTable, { ProColumns } from "@ant-design/pro-table"; -import { deviatedAnalysisListToRR, deviatedAnalysisRRYes, getDeviatedAnalysisList, getList } from '../service'; +import { Modal, Table, Button, Empty } from 'antd'; +import { ProColumns } from "@ant-design/pro-table"; +import { deviatedAnalysisListToRR, deviatedAnalysisRRYes, getDeviatedAnalysisList } from '../service'; import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session'; +import CollapsePanel from './CollapsePanel'; -interface ViewJuryScoringAnalysisFormModalProps { - modalVisible: boolean; - values: any; - onCancel: any; -} +const ViewJuryScoringAnalysisFormModal: React.FC<{}> = () => { - -const ViewJuryScoringAnalysisFormModal: React.FC = (props) => { - - const [juryScoringAnalysisList, setJuryScoringAnalysisList] = useState([]); + const [juryScoringAnalysisList, setJuryScoringAnalysisList] = useState([]); const [juryYesList, setJuryYesList] = useState([]); const [juryYesVis, setJuryYesVisSet] = useState(false);//专家确认页面 const [juryTableShow, setJuryTableShow] = useState(false);// @@ -41,11 +35,6 @@ const ViewJuryScoringAnalysisFormModal: React.FC[] = [ + const juryColumns: any[] = [ { title: '序号', render: (text: any, record: any, index: any) => `${index + 1}` }, { title: '专家名称', dataIndex: "memberName" }, { title: '确认时间', dataIndex: "updateDate" } @@ -76,15 +65,15 @@ const ViewJuryScoringAnalysisFormModal: React.FC { - const tbpldzt = { title: item.name, dataIndex: 'title', key: 'title', children: [] }; + const tbpldzt = { title: item.name, dataIndex: 'title', key: 'title', children: [{}] }; item.categoryList.map((dfpld: any, index: any) => { let value = categoryValue(dfpld); tbpldzt.children.push({ title: value, dataIndex: dfpld + item.userId, key: dfpld + item.userId, render: (text: any, record: any, index: any) => { - let a = ""; + let a = <>; if (text > -10 && text < 10) { a =

{text}

} else if (text > -30 && text < 30) { @@ -110,11 +99,11 @@ const ViewJuryScoringAnalysisFormModal: React.FC { const obj = { - children: '', - props: {}, + children: <>, + props: { rowSpan: 1 }, }; if (index === 0) { - let a = ""; + let a = <>; if (!buttonStatus) { a = } else if (buttonStatus) { @@ -124,7 +113,7 @@ const ViewJuryScoringAnalysisFormModal: React.FC { deviatedRRYes(confirmList[0].id, 1); }}>确认 } else { - a = "已确认"; + a = 已确认; } } @@ -233,41 +222,39 @@ const ViewJuryScoringAnalysisFormModal: React.FC {juryTableShow ? - - - {juryScoringAnalysisList?.length == 0 - ? - : (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") ? juryScoringAnalysisList?.map((item: any, index: any) => { - if (item.zjShow) { - return ( - - -

{item.turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

-
-
-
- ); - } - }) : ( - <> -

{juryScoringAnalysisList[0].turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

-
- - ) - } - {selectjuryYes()} -
-
+ 0}> + {juryScoringAnalysisList?.length == 0 + ? + : (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") ? juryScoringAnalysisList?.map((item: any, index: any) => { + if (item.zjShow) { + return ( + +

{item.turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

+
+
+ ); + } else { + return <> + } + }) : ( + <> +

{juryScoringAnalysisList[0].turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

+
+ + ) + } + {selectjuryYes()} +
: null} ); diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringRemindFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringRemindFormModal.tsx index 25ef285..4717307 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringRemindFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringRemindFormModal.tsx @@ -1,30 +1,24 @@ -import React, { useEffect,useState } from 'react'; -import { Tabs,Collapse,Form, Input, Modal,Col,Row,Divider, Table, Button, Empty } from 'antd'; -import ProTable, { ProColumns } from "@ant-design/pro-table"; +import React, { useEffect, useState } from 'react'; +import { Form, Input, Modal, Table, Button, Empty } from 'antd'; import ExtendUpload from "@/utils/ExtendUpload"; -import { deviatedWarnListJuryYes, deviatedWarnListToRR, getDeviatedWarnList, getDeviatedWarnListByJury, getList} from '../service'; -import {} from '@/utils/CommonUtils' -import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session'; +import { deviatedWarnListJuryYes, deviatedWarnListToRR, getDeviatedWarnList, getDeviatedWarnListByJury } from '../service'; +import { } from '@/utils/CommonUtils' +import { getProMethod, getRoomId, getSessionRoleData } from '@/utils/session'; import TextArea from 'antd/lib/input/TextArea'; - -interface ViewJuryScoringRemindFormModalProps { - modalVisible: boolean; - values: any; - onCancel:any; -} +import CollapsePanel from './CollapsePanel'; const layout = { labelCol: { span: 7 }, wrapperCol: { span: 12 }, }; -const ViewJuryScoringRemindFormModal: React.FC = (props) => { +const ViewJuryScoringRemindFormModal: React.FC<{}> = (props) => { const [form] = Form.useForm(); - const [deviatedWarnList, setDeviatedWarnList] = useState([]); + const [deviatedWarnList, setDeviatedWarnList] = useState([]); const [juryYesVis, setJuryYesVisSet] = useState(false);//专家确认页面 //附件bid const [bid, setBid] = useState(''); const [whetherReadonly, setWhetherReadonly] = useState(false); const [juryTableShow, setJuryTableShow] = useState(true);//专家无数据时不显示该条 - let roomId=getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') + let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') var roleId = getSessionRoleData().roleCode;//操作员角色 let name1 = "投标人"; @@ -34,98 +28,97 @@ const ViewJuryScoringRemindFormModal: React.FC { getWarningList(); - if(roleId==="ebtp-expert"){ + if (roleId === "ebtp-expert") { setJuryTableShow(false); } - },[]) + }, []) - function callback(key: any) { - //getSessionUserData.roleIds; - } - - const juryScoringRemindColumns: ProColumns[] = [ - { title: '序号', dataIndex: 'num', render: (text: any, record: any, index: any) => `${index + 1}`}, + const juryScoringRemindColumns: any[] = [ + { title: '序号', dataIndex: 'num', render: (text: any, record: any, index: any) => `${index + 1}` }, { title: '专家姓名', dataIndex: 'name', }, { title: name1, dataIndex: 'supplierRegisterName', }, { title: '打分偏离部分', dataIndex: 'categoryName', }, - { title: '偏离度', dataIndex: 'deviatedNumber',render: (text: any, record: any, index: any)=>{ - let a = ""; - if(text>-30&&text<30){ - a =

{text}

- }else if(text>-50&&text<50){ - a =

{text}

- }else if(text<=-50||text>=50){ - a =

{text}

- }else{ - a = text; + { + title: '偏离度', dataIndex: 'deviatedNumber', render: (text: any, record: any, index: any) => { + let a = <>; + if (text > -30 && text < 30) { + a =

{text}

+ } else if (text > -50 && text < 50) { + a =

{text}

+ } else if (text <= -50 || text >= 50) { + a =

{text}

+ } else { + a = text; + } + return a; } - return a; - } }, + }, { title: '打分提交时间', dataIndex: 'warnSubmitDate', }, { title: '提醒生成时间', dataIndex: 'warnCreateDate', }, { title: '提醒专家时间', dataIndex: 'warnNoticeDate', }, { title: '专家回复时间', dataIndex: 'warnReplyDate', }, - { title: '查看说明',render: (_, record) => { - let r: any = ""; - if(roleId==="ebtp-agency-project-manager"||roleId==="ebtp-purchase"){ - if(record.warnNoticeStatus==="1") { - if(record.warnReplyStatus==="1") { - r = + { + title: '查看说明', render: (_: any, record: { warnNoticeStatus: string; warnReplyStatus: string; id: any; fileId: string; remarks: any; }) => { + let r: any = ""; + if (roleId === "ebtp-agency-project-manager" || roleId === "ebtp-purchase") { + if (record.warnNoticeStatus === "1") { + if (record.warnReplyStatus === "1") { + r = + } else { + r = "等待专家回复" + } } else { - r = "等待专家回复" + r = } - } else { - r = - } - }else if(roleId==="ebtp-expert"){ - if(record.warnNoticeStatus==="1") { - if(record.warnReplyStatus==="1") { - r = "已确认" - } else { - r = + } else if (roleId === "ebtp-expert") { + if (record.warnNoticeStatus === "1") { + if (record.warnReplyStatus === "1") { + r = "已确认" + } else { + r = + } } } + return r; } - return r; - } - }, + }, ]; - const getWarningList = async() => { - + const getWarningList = async () => { + //专家打分偏离度提醒 - if(roleId==="ebtp-agency-project-manager"||roleId==="ebtp-purchase"){ + if (roleId === "ebtp-agency-project-manager" || roleId === "ebtp-purchase") { await getDeviatedWarnList(roomId).then((res) => { - if (res.success ==true) { + if (res.success == true) { setDeviatedWarnList(res.data) } }) - }else if(roleId==="ebtp-expert"){ + } else if (roleId === "ebtp-expert") { await getDeviatedWarnListByJury(roomId).then((res) => { var list2 = []; - if (res.success ==true) { + if (res.success == true) { var list = res.data; var j = 0; - for(var i = 0 ; i < list.length;i++){ + for (var i = 0; i < list.length; i++) { var obj = list[i].list[0]; - if(obj!==null&&obj!==undefined&&obj.warnNoticeStatus!==0){ + if (obj !== null && obj !== undefined && obj.warnNoticeStatus !== 0) { list2[j] = list[i]; - j+=1; + j += 1; } } - setJuryTableShow(list2!=null&&list2.length>0); + setJuryTableShow(list2 != null && list2.length > 0); setDeviatedWarnList(list2) } }) } } - const toRr = async(id: any) => {//专家打分偏离度提醒 + const toRr = async (id: any) => {//专家打分偏离度提醒 await deviatedWarnListToRR(id).then((res) => { - if (res.success ==true) { + if (res.success == true) { getWarningList() } }) @@ -133,11 +126,11 @@ const ViewJuryScoringRemindFormModal: React.FC {//返回成员modal foot return ( <> - {roleId==="ebtp-agency-project-manager"||roleId==="ebtp-purchase"? - - : - } - + {roleId === "ebtp-agency-project-manager" || roleId === "ebtp-purchase" ? + + : + } + ) } @@ -145,104 +138,100 @@ const ViewJuryScoringRemindFormModal: React.FC { const fieldsValue = await form.validateFields(); var params = { - "id":fieldsValue.id, - "fileId":fieldsValue.fileId, - "remarks":fieldsValue.remarks + "id": fieldsValue.id, + "fileId": fieldsValue.fileId, + "remarks": fieldsValue.remarks } - + await deviatedWarnListJuryYes(params).then((res) => { - if (res.success ==true) { + if (res.success == true) { setJuryYesVisSet(false); getWarningList() } }) } - const juryYesShow = (id: any,fileId: string | undefined,remarks: any) => { + const juryYesShow = (id: any, fileId: string, remarks: any) => { form.setFieldsValue({ id: id, fileId: fileId, remarks: remarks }); - - if(roleId==="ebtp-agency-project-manager"||roleId==="ebtp-purchase"){ + + if (roleId === "ebtp-agency-project-manager" || roleId === "ebtp-purchase") { setWhetherReadonly(true); } - + setBid(fileId); setJuryYesVisSet(true); } //专家确认 const juryYesModal = () => { - return ( - <> - setJuryYesVisSet(false)} - footer={selectjuryYesButton()} - > -
- - -