From 3f202700e57ea0e44073960b957418d5100f9855 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 9 Mar 2023 10:34:20 +0800 Subject: [PATCH] =?UTF-8?q?3.9=20=E4=BE=9B=E5=BA=94=E5=95=86=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=85=B3=E7=B3=BB=E7=96=91=E4=BC=BC=E8=BF=9D=E8=A7=84?= =?UTF-8?q?=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/assets/supplierRisk/empty_data.png | Bin 0 -> 41823 bytes src/components/BiddingRoom/index.js | 59 +++- src/components/BiddingRoom/service.ts | 21 ++ .../EquityRelation/RelationCharts.tsx | 109 +++++++ src/components/EquityRelation/index.tsx | 190 ++++++++++++ src/components/RiskModal/index.tsx | 53 ++++ src/pages/BidEvaluation/manager.js | 1 + .../BidControlManager/components/ZhiQiCha.tsx | 273 ++++++++++++++++++ .../BidControl/BidControlManager/index.tsx | 197 ++++++------- .../BidControl/BidControlManager/service.ts | 32 +- .../Evaluation/BidControl/Jury/index.tsx | 148 +++++----- .../Manager/components/Manager.tsx | 21 +- .../components/SupplierCommitment.tsx | 14 +- src/utils/session.ts | 1 + 15 files changed, 929 insertions(+), 191 deletions(-) create mode 100644 src/assets/supplierRisk/empty_data.png create mode 100644 src/components/EquityRelation/RelationCharts.tsx create mode 100644 src/components/EquityRelation/index.tsx create mode 100644 src/components/RiskModal/index.tsx create mode 100644 src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx diff --git a/package.json b/package.json index a9eaec8..cbf3167 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "classnames": "^2.2.6", "dva": "^2.4.0", "echarts": "^5.2.2", + "echarts-for-react": "^3.0.2", "lodash": "^4.17.11", "moment": "^2.29.1", "omit.js": "^2.0.2", diff --git a/src/assets/supplierRisk/empty_data.png b/src/assets/supplierRisk/empty_data.png new file mode 100644 index 0000000000000000000000000000000000000000..b8dddda08ec6c9b4b3c8663cde038921823d574e GIT binary patch literal 41823 zcmZU*by$^e&@H^#gp_niZ%P{J?(RlH8kFvqmhRZJbV@fODILw8LiW=+)P7gM}1mtCw7&9pg}Lc9ui_x8x(>?nIDSL%-%t4*KN`* zh8`4>B=KedDmIiA49^zChJcO)|A)sEEiJ`cH)e55W_RZ>%kyOetdIIZ}v`zo30xn9fZJX@^2~JAQQhw1l`~8$fOty zororxL6^xOkxvPZl3OpOel2|4+Z#h#{-6nb^-a)cTodQ?OWL1sZ{X+>7=ly zuq(=aM*F#9{fhk$1SOIev9IuyVAM6%$Z<&b(k>PS_5m_5Ge$#i#z#}IQa2^|dr1j) zLFutC$`7PBQJBnvaw(a6z|H_0Bjv%~b%W@m|Fp+d1Sg}XP zITC?&1}vY%X!9_JJG@(*eoMbHQ-DtHQMb*#rpzbkheiHM;1els|~N}c2G@Xl(-#Oq^hpWO-M z$JM%(Es@3qy5wa52KJ{Mm zmVL0`p;S~`IAlu3jExkdBDb?sL>rHIN{)W{)ML?(=em$E+K-}A;s#fh@+$3Z(Ao`Q zSVFW7nKo}Ex2;bs5#h=|OCypG?9Wf+S|Y$T0l&gs)Hm)*Gs6!6*FLKaNa?*A33$NO z%5i07#_fuchp-c&hH8luT_e30%7dUMyrIcIaN^U-C$dju>lC}Gp^(1G&4IhS^O))I z+Q3m)sj+r=`ccVVZ}{�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�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 literal 0 HcmV?d00001 diff --git a/src/components/BiddingRoom/index.js b/src/components/BiddingRoom/index.js index 0a8ef57..393f814 100644 --- a/src/components/BiddingRoom/index.js +++ b/src/components/BiddingRoom/index.js @@ -7,7 +7,7 @@ import { routerRedux } from 'dva/router'; import React, { useState, useEffect, useReducer } from 'react'; import { getSessionUserData, getRoomId, getProMethod, getSessionRoleData, getIPassDecode, getDefId, getProId } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; -import { getLeader, isShowResult, isShowCount, getErrorStatus, getRiskStatus } from './service'; +import { getLeader, isShowResult, isShowCount, getErrorStatus, getRiskStatus, isShowRiskModal, saveConfirm, isLeaderConfirm } from './service'; import logo from '@/images/opening/logo.svg' import InstantMessage from './components/InstantMessage' import { DownOutlined, UserOutlined, UserSwitchOutlined, CarryOutOutlined, HomeOutlined } from '@ant-design/icons'; @@ -17,6 +17,7 @@ import { ExclamationCircleOutlined } from '@ant-design/icons'; import { getRoomDataById } from '@/services/common'; +import RiskModal from '../RiskModal'; const BiddingRoom = (props) => { //获取采购方式 @@ -34,6 +35,10 @@ const BiddingRoom = (props) => { //获取评审室id const roomId = getRoomId(); const [list, setList] = useState(); + //风险提示文字弹窗控制 + const [riskVisible, setRiskVisible] = useState(false); + //评审结果提示文字还是进入评审室提示文字 + const [isResult, setIsResult] = useState(false); const [selectedPath, setSelectedPath] = useState(window.location.pathname.replace('ReviewResults/Jury', 'ReviewResults').replace('ReviewResults/GroupLeader', 'ReviewResults')); // const [risky, riskySet] = useState(); //字段类型(两种) 评标,评审 @@ -56,7 +61,7 @@ const BiddingRoom = (props) => { }, { id: 2, - path: "/EvaRoom/Eva", + path: "/EvaRoom/Eva/", text: `${sectionTypeThree}进展` }, { @@ -97,7 +102,7 @@ const BiddingRoom = (props) => { }, { id: 2, - path: "/EvaRoom/Eva", + path: "/EvaRoom/Eva/", text: sectionTypeTwo }, { @@ -137,7 +142,7 @@ const BiddingRoom = (props) => { }, { id: 2, - path: "/EvaRoom/Eva", + path: "/EvaRoom/Eva/", text: "项目评审" }, { @@ -234,12 +239,19 @@ const BiddingRoom = (props) => { //专家角色评审结果路由确定 const expertClickResult = async () => { - return await getLeader(roomId).then(res => { + return await getLeader(roomId).then(async res => { if (res?.code == 200) { if (res?.data == "Review") { return "/EvaRoom/Evaluation/expert/ReviewResults/Jury" } else { - return "/EvaRoom/Evaluation/expert/ReviewResults/GroupLeader" + const result = await isLeaderConfirm({ assessRoomId: roomId });//供应商股权关系-专家组长是否确认风险 + if (result?.success && result?.data) { + return "/EvaRoom/Evaluation/expert/ReviewResults/GroupLeader" + } else { + setIsResult(true) + setRiskVisible(true) + return false; + } } } else { return false @@ -283,6 +295,33 @@ const BiddingRoom = (props) => { return true //默认显示算术错误调整 } + //判断当前登录人是否弹出供应商关联风险信息 + const showRiskModal = async (resultClick) => { + if (role == "ebtp-agency-project-manager" || role == "ebtp-purchase" || role == "ebtp-expert") { + return await isShowRiskModal({ assessRoomId: roomId }).then(res => { + if (res?.code == 200 && res?.success) { + if (!res?.data) { + setIsResult(resultClick) + setRiskVisible(true) + } + return res?.data; + } + return true; + }) + } + return true; + } + //确认风险 + const confirmRisk = async () => { + return await saveConfirm({ assessRoomId: roomId }).then(res => { + if (res?.code == 200) { + return res?.data; + } else { + return false; + } + }) + } + //初始化数据 const listRender = async () => { // await isRisky(); @@ -304,7 +343,8 @@ const BiddingRoom = (props) => { JuryList.splice(5, 1) } } - + //弹出供应商关联风险信息 + await showRiskModal(false) //代理&项目经理 if (role == "ebtp-agency-project-manager" || role == "ebtp-purchase") {//代理和采购经理 setList(managerList); @@ -343,8 +383,8 @@ const BiddingRoom = (props) => { key={item.id} style={{ width: '100000px', - color: selectedPath == item.path ? "#FFFFFF" : "#b30000", - background: selectedPath == item.path ? "#b30000" : "#FFFFFF" + color: selectedPath == item.path || (item.path === '/EvaRoom/Eva/' && selectedPath.includes('/EvaRoom/Eva/')) ? "#FFFFFF" : "#b30000", + background: selectedPath == item.path || (item.path === '/EvaRoom/Eva/' && selectedPath.includes('/EvaRoom/Eva/')) ? "#b30000" : "#FFFFFF" }} onClick={() => { onclick(item.path, item.id) }} > @@ -358,6 +398,7 @@ const BiddingRoom = (props) => { })} + {riskVisible && { setRiskVisible(false); setSelectedPath(window.location.pathname) }} onSubmit={confirmRisk} isResult={isResult} role={role} />} {(MethodDict != "procurement_mode_5" && MethodDict != "procurement_mode_6") && role == "ebtp-supplier" ? null : } ); diff --git a/src/components/BiddingRoom/service.ts b/src/components/BiddingRoom/service.ts index 99a265a..2da7421 100644 --- a/src/components/BiddingRoom/service.ts +++ b/src/components/BiddingRoom/service.ts @@ -72,3 +72,24 @@ export async function getRiskStatus(params: any) { data: params }); } +// 供应商股权关系,专家及项目经理是否确认-智企查 +export async function isShowRiskModal(params: any) { + return request(`/api/biz-service-ebtp-resps/v1/risktendererwarning/haveWarningsOrConfirmed`, { + method: 'POST', + data: params + }); +} +// 供应商股权关系,专家及项目经理进入评审室确认风险-智企查 +export async function saveConfirm(params: any) { + return request(`/api/biz-service-ebtp-resps/v1/risktendererwarningConfirm/saveConfirm`, { + method: 'POST', + data: params + }); +} +// 供应商股权关系,专家组长是否确认风险-智企查 +export async function isLeaderConfirm(params: any) { + return request(`/api/biz-service-ebtp-resps/v1/risktendererwarning/haveWarningsHeadConfirmed`, { + method: 'POST', + data: params + }); +} diff --git a/src/components/EquityRelation/RelationCharts.tsx b/src/components/EquityRelation/RelationCharts.tsx new file mode 100644 index 0000000..4c5021a --- /dev/null +++ b/src/components/EquityRelation/RelationCharts.tsx @@ -0,0 +1,109 @@ +import ReactEcharts from 'echarts-for-react'; +import PropTypes from 'prop-types'; +import React, { useMemo } from 'react'; +/** + * 供应商股权关系-Echarts关系图 + * @param props + * @returns + */ +export default function RelationCharts(props: { linkData?: any[] | undefined; suppListTrans?: any[] | undefined; }) { + const { linkData = [], suppListTrans = [] } = props; + const option = { + title: { + text: '' + }, + color: '#EA8786', + tooltip: { + show: false, + }, + animationDurationUpdate: 1500, + animationEasingUpdate: 'quinticInOut', + series: [ + { + type: 'graph', + layout: 'force', + edgeSymbol: ['', 'arrow'], + label: { + normal: { + show: true, + position: 'top',//设置label显示的位置 + textStyle: { + fontSize: '12px' + }, + } + }, + symbolSize: (value: any, params: { data: { category: any; }; }) => { + switch (params.data.category) { + case 0: return 50; + case 1: return 30; + case 2: return 20; + case 3: return 30; + default: return 10; + } + }, + draggable: true, + data: suppListTrans, + force: { + edgeLength: 200, + repulsion: 3000, + gravity: 0.2, + }, + Symbol: 'circle', + // symbol:function(x,y) { + // switch (y.data.category) { + // case 1: return 'circle'; + // // case 1: return 'roundRect'; + // case 2: return 'circle'; + // default: 'circle'; + // } + // }, + links: linkData, + roam: true, + zoom: 0.8, + itemStyle: { + normal: { + color: function (params: { data: { category: any; }; }) { + // console.log('--params:', params) + // if + switch (params.data.category) { + case 1: return '#EA8786'; + case 2: return '#128bed'; + case 3: return '#f39800'; + default: return '#EA8786'; + } + }, + } + }, + lineStyle: { + color: '#EA8786', + // color: 'source', + // curveness: 0.2 + }, + edgeLabel: { + width: '80', + overflow: 'break', + }, + } + ] + } + let onclick = { + 'click': (e: { data: { isProvider: number; code: any; }; }) => { + if (e.data.isProvider == 1) { + // windowOpen(`/supplier-info/supplier-detail/${e.data.code}`, "_blank") + // alert(e.data.code); + } + } + } + return ( + <> + { + suppListTrans.length > 0 && useMemo(() => (), [suppListTrans]) + } + + ) + +} +RelationCharts.propTypes = { + linkData: PropTypes.array, + suppListTrans: PropTypes.array, +}; \ No newline at end of file diff --git a/src/components/EquityRelation/index.tsx b/src/components/EquityRelation/index.tsx new file mode 100644 index 0000000..d902ba4 --- /dev/null +++ b/src/components/EquityRelation/index.tsx @@ -0,0 +1,190 @@ +import { Checkbox, Spin } from 'antd'; +import { CheckboxChangeEvent } from 'antd/lib/checkbox'; +import { CheckboxValueType } from 'antd/lib/checkbox/Group'; +import { multiply } from 'lodash'; +import React, { useEffect, useRef, useState } from 'react'; +import RelationCharts from './RelationCharts'; +import empty_data from '@/assets/supplierRisk/empty_data.png'; +/** + * 供应商股权关系-关系图 + * @returns + */ +const EquityRelation: React.FC<{ result: any, suppCodeList: any[] }> = (props) => { + const { result, suppCodeList } = props; + const plainOptions = [ + { label: '法人', value: '6' }, + { label: '分支机构', value: '5' }, + { label: '投资', value: '1' }, + { label: '任职', value: '2' }, + { label: '疑似地址', value: '4' }, + { label: '疑似电话', value: '3' }, + { label: '疑似邮箱', value: '7' }, + ]; + const [linkData, setLinkData] = useState(); + const [suppListTrans, setSuppListTrans] = useState([]); + const [checkedAll, setCheckedAll] = useState(true); + const [checked, setChecked] = useState([]); + const resDataRef = useRef(); + function onCheckedAllChange(e: CheckboxChangeEvent) { + if (e.target.checked) { + setCheckedAll(e.target.checked); + setChecked([]); + filterData([]); + } + }; + function onCheckedChange(checkedValues: CheckboxValueType[]) { + setChecked(checkedValues); + setCheckedAll(checkedValues.length == 0); + filterData(checkedValues); + }; + function doType(str: string) { + let newArr = str.split(","); + let typeCn = ""; + for (let i = 0; i < newArr.length; i++) { + if (newArr[i] == '1') { + typeCn += '投资' + } else if (newArr[i] == '3') { + typeCn += '企业疑似电话' + } else if (newArr[i] == '4') { + typeCn += '企业疑似地址' + } else if (newArr[i] == '5') { + typeCn += '分支机构' + } else if (newArr[i] == '6') { + typeCn += '法人' + } else if (newArr[i] == '7') { + typeCn += '企业疑似邮箱' + } else { + typeCn += `${newArr[i]}` + } + } + return typeCn; + } + //选择后数据筛选 + function filterData(selected: any[]) { + if (resDataRef.current) { + if (selected.length > 0) { + const filterLinks = resDataRef.current.links.filter((item: any) => selected.includes(item.type)); + const i_links: string[] = []; + for (let i = 0, length = filterLinks.length; i < length; i++) { + i_links.push(filterLinks[i].from); + i_links.push(filterLinks[i].to); + } + const r_links = [...new Set(i_links)];//数组去重 + const filterNodes = resDataRef.current.nodes.filter((item: any) => r_links.includes(item.id)); + dataHandle(filterNodes, filterLinks);//处理数据并刷新 + } else { + dataHandle(resDataRef.current.nodes, resDataRef.current.links); + } + } + } + //数据处理 + function dataHandle(nodes: any[] | undefined, links: any[] | undefined) { + //处理右侧数据 + const valueList = nodes ? nodes : [] + valueList.map((item) => { + Object.assign(item, { + name: item.name ? item.name : item.properties?.samevalue ? item.properties?.samevalue : '暂无信息', + // category: item.isProvider == 1 ? 1 : 2, + category: suppCodeList.findIndex(ite => ite.companyName == item.name) !== -1 ? 3 : (item.type == 1 ? 1 : 2),//从珊珊拿全部供应商 + id: item.id, + }) + return item + }) + setSuppListTrans([...valueList]) + let mapList = links ? links : [] + let copeLink1 = JSON.parse(JSON.stringify(mapList)) + if (copeLink1.length > 0) { + for (let i = 0; i < copeLink1.length; i++) { + if (copeLink1[i].type == 2) { + copeLink1[i].type = copeLink1[i].properties.position_desc + } else { + if (copeLink1[i].type == 1) { + copeLink1[i].type = '投资' + multiply(copeLink1[i].properties.conprop, 100) + '%' + } else { + copeLink1[i].type = doType(copeLink1[i].type) + } + } + //手动去重 + for (let j = i + 1; j < copeLink1.length; j++) { + if (copeLink1[i].from == copeLink1[j].from && copeLink1[i].to == copeLink1[j].to && copeLink1[j].type) { + //type=2 需提前处理 + if (copeLink1[j].type == 1) { + copeLink1[j].type = '投资' + multiply(copeLink1[j].properties.conprop, 100) + '%' + } else if (copeLink1[j].type == 2) { + copeLink1[i].type = copeLink1[i].type + ',' + copeLink1[j].properties.position_desc + copeLink1[j].type = '' + } else { + if (copeLink1[j].type != 2) { + copeLink1[j].type = doType(copeLink1[j].type) + } + } + //拼接相同类型的type + if (copeLink1[i].type.substring(copeLink1[i].type.length - 1, copeLink1[i].type.length) == ',') { + copeLink1[i].type = copeLink1[i].type + copeLink1[j].type + } else { + copeLink1[i].type = copeLink1[i].type + ',' + copeLink1[j].type + } + copeLink1[j].type = '' + } else { + //type=1 需提前处理 + if (copeLink1[j].type == 1) { + copeLink1[j].type = '投资' + multiply(copeLink1[j].properties.conprop, 100) + '%,' + } else if (copeLink1[j].type == 2) { + copeLink1[j].type = copeLink1[j].properties.position_desc + } else { + if (copeLink1[j].type != 2) { + copeLink1[j].type = doType(copeLink1[j].type) + } + } + continue; + } + } + } + } + copeLink1.map((item: any) => { + Object.assign(item, { + source: item.from, + target: item.to, + label: { + show: true, + fontSize: 12, + verticalAlign: 'bottom', + formatter: () => { + return item.type + }, + }, + id: item.id, + flag: false + }) + return item + }) + setLinkData(copeLink1) + } + useEffect(() => { + if (result && result?.nodes && result.nodes.length > 0 && suppCodeList && suppCodeList.length > 0) { + resDataRef.current = result; + dataHandle(result.nodes, result.links); + } + }, [result, suppCodeList]) + return ( + <> +
+ 全部 + +
+ { + suppListTrans.length > 0 ? ( +
+ +
+ ) : ( +
+ +
+ ) + } + + ); +}; + +export default EquityRelation; diff --git a/src/components/RiskModal/index.tsx b/src/components/RiskModal/index.tsx new file mode 100644 index 0000000..fd91b8f --- /dev/null +++ b/src/components/RiskModal/index.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { Button, Modal } from 'antd'; +import { history } from 'umi'; + +interface RiskModalProps { + modalVisible: boolean; + onCancel: () => void; + onSubmit?: () => Promise;//确认后调用接口 + isResult: boolean; + role: string; +} +/** + * 供应商股权关系,风险弹窗 + * @param props + * @returns + */ +const RiskModal: React.FC = (props) => { + const { modalVisible, onCancel, isResult, role, onSubmit = () => Promise } = props; + const onOk = async () => { + if (role == "ebtp-agency-project-manager" || role == "ebtp-purchase") {//代理或采购经理 + if (!isResult) { + history.push('/EvaRoom/Evaluation/BidControl/BidControlManager?n=1'); + } + } else if (role == "ebtp-expert") {//专家 + history.push('/EvaRoom/Evaluation/BidControl/Jury?n=1'); + } + if (!isResult) { + const result = await onSubmit(); + if (result) onCancel(); + } else { + onCancel(); + } + } + + return ( + onCancel()} + bodyStyle={{ padding: '40px 40px 30px' }} + centered + maskClosable={false} + footer={null} + > +
+

{((role == "ebtp-agency-project-manager") && isResult) ? "供应商关联关系存在疑似违规行为,请确保专家组长已确认风险!" : "供应商关联关系存在疑似违规行为,请前往【风险点展示】界面查看风险!"}

+ +
+
+ ); +}; + +export default RiskModal; diff --git a/src/pages/BidEvaluation/manager.js b/src/pages/BidEvaluation/manager.js index 214650f..6fd40f3 100644 --- a/src/pages/BidEvaluation/manager.js +++ b/src/pages/BidEvaluation/manager.js @@ -119,6 +119,7 @@ class manager extends PureComponent { sessionStorage.setItem("groupId", record.chatGroupId) sessionStorage.setItem("expertGroupId", record.expertChatGroupId) sessionStorage.setItem("roomTypeByEva", getURLInformation("roomType")) + sessionStorage.setItem("sectionId", record.sectionId) 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 new file mode 100644 index 0000000..c955ef2 --- /dev/null +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ZhiQiCha.tsx @@ -0,0 +1,273 @@ +import { getLeader } from "@/components/BiddingRoom/service"; +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, Col, Collapse, Form, Input, message, Modal, Radio, RadioChangeEvent, Row, Spin, Typography } from "antd"; +import React, { Fragment, useEffect, useState } from "react"; +import { getSuspectedViolation, leaderConfirm } from "../service"; + +/** + * 智企查-供应商关联关系疑似违规行为 + * @param props + * @returns + */ +const ZhiQiCha: React.FC<{}> = (props) => { + const title_style = { color: "#b30000", fontWeight: 700 }; + const options = [ + { label: '确认无风险', value: 0 }, + { label: '确认有风险', value: 1 }, + ]; + //是否展开智企查疑似关联关系 + const defaultZQCKey = getURLInformation('n') == '1' ? ['zhiqicha'] : [] + const { Paragraph, Text } = Typography; + const { TextArea } = Input; + const { confirm } = Modal; + const [form] = Form.useForm(); + //项目id 标段id 评审室id + const projectId = getSessionProjectData()?.id; + const sessionId = sessionStorage.getItem("sectionId"); + const roomId = getRoomId(); + //获取角色 + const role = getSessionRoleData().roleCode; + //专家组长填写的表格的供应商 + const [supplierTableData, setSupplierTableData] = useState([]); + //查询的供应商股权关系数据,确认数据。 + const [warningsData, setWarningsData] = useState(); + //是否是专家组长 + const [isLeader, setIsLeader] = useState(false);//true-是组长 false-不是组长或者不是专家 + //是否有风险 + const [isRisk, setIsRisk] = useState(false);//true-有风险 false-无风险 + //radio选择 + const [radioValue, setRadioValue] = useState(""); + //loading + const [loading, setLoading] = useState(true); + + const columns: ProColumns[] = [ + { + title: 供应商, + dataIndex: 'companyName', + key: 'companyName', + editable: false, + }, + { + title: 是否有风险, + dataIndex: 'isRisk', + key: 'isRisk', + valueType: 'radio', + valueEnum: { + "0": { text: '否' }, + "1": { text: '是' }, + }, + }, + { + title: 说明, + dataIndex: 'memo', + key: 'memo', + tooltip: "此项为选填", + fieldProps: { + maxLength: 100, + } + }, + ]; + const readOnlyColumns: ProColumns[] = [ + { + title: 供应商, + dataIndex: 'companyName', + key: 'companyName', + }, + { + title: 是否有风险, + dataIndex: 'isRisk', + key: 'isRisk', + render: (_: any, record: any) => ( + {record.isRisk == 1 ? "是" : record.isRisk == 0 ? "否" : "-"} + ), + }, + { + title: 说明, + dataIndex: 'memo', + key: 'memo', + }, + ]; + //获取智企查数据 + const getZQCData = () => { + let params = { + "tpId": projectId, + "sectionId": sessionId, + "assessRoomId": roomId, + } + // let params = { "tpId": "1625300469640114176", "sectionId": "1625300469648502784", "assessRoomId": "1628212227869454336" } + getSuspectedViolation(params).then(async res => {//获取数据 + if (res?.success) { + if (role == "ebtp-expert") { + const resp = await getLeader(roomId)//判断是否是专家组长 + setIsLeader(resp?.data == "ReviewLeader"); + } + setWarningsData(res?.data); + setSupplierTableData(res?.data?.riskSupplier != null ? res?.data?.riskSupplier.supplist?.map((item: any) => { item.isRisk = String(item.isRisk); return item }) : []); + setIsRisk(res?.data?.riskSupplier != null); + form.setFieldsValue(res?.data); + } + }).finally(() => { + setLoading(false); + }) + } + //专家组长保存 + const handleSave = () => { + let values = form.getFieldsValue(); + values["riskSupplier"] = { supplist: supplierTableData }; + values["headmanConfirmStatus"] = "0";//保存参数 + setLoading(true); + leaderConfirm(values).then(res => {//专家组长保存 + if (res?.success) { + message.success("保存成功!"); + getZQCData(); + } + }).finally(() => { + setLoading(false); + }) + } + //专家组长提交 + const handleSubmit = () => { + form.validateFields().then(values => { + let emptyItem = -1; + let yesLength = 0; + for (let i = 0, length = supplierTableData.length; i < length; i++) { + const item = supplierTableData[i]; + if (item.isRisk == null) { + emptyItem = i; + break; + } + if (item.isRisk == "1") { + yesLength += 1; + } + } + if (emptyItem != -1) { + message.warning(`供应商【${supplierTableData[emptyItem].companyName}】的【是否有风险】项未填写`); + return; + } + if ((values.headmanConfirm == 1) && (yesLength == 0)) { + message.warning("【确认有风险】情况下,需至少一家供应商的【是否有风险】项选择【是】"); + return; + } + values["riskSupplier"] = { supplist: supplierTableData }; + values["headmanConfirmStatus"] = "1";//确认参数 + confirm({ + title: '提交后不可修改,确认是否提交?', + icon: , + content: <>, + centered: true, + okText: "是", + cancelText: "否", + onOk() { + setLoading(true); + return leaderConfirm(values).then(res => {//专家组长提交 + if (res?.success) { + message.success("提交成功!"); + getZQCData(); + } + }).finally(() => { + setLoading(false); + }) + }, + onCancel() { }, + }); + }); + } + const onRadioChange = (e: RadioChangeEvent) => { + setRadioValue(e.target.value); + } + useEffect(() => { + getZQCData(); + }, []) + return ( + + + + +

供应商关联关系疑似违规行为

+
+
+ +
+
+ + 《中华人民共和国招标投标法》第三十二条规定:”投标人不得相互串通投标报价,不得排挤其他投标人的公平竞争,损害招标人或者其他投标人的合法权益。投标人不得与招标人串通投标,损害国家利益、社会公共利益或者他人的合法权益。” + + + 《中华人民共和国招标投标法实施条例》第三十四条规定:“与招标人存在利害关系可能影响招标公正性的法人、其它组织或者个人,不得参加投标。单位负责人为同一人或者存在控股关系、管理关系的不同单位,不得参加同一标段投标或者未划分标段的同一招标项目投标。违反前两款规定的,相关投标无效。” + + + 控股超过51%或股权关系分散的占股最大的股东都属于控股,请项目经理与评委给予注意! + + {isRisk && ( + 经智企查分析,{warningsData?.riskSupplier?.riskSuppInfoList?.map((item: any, index: any) => {index != 0 && }{item})}存在疑似关联关系,具体见左图。 + )} + {isRisk && isLeader && ( +
+ + + + + +