10.27 公开比选(多阶段、一阶段)初审汇总环节,供应商不足三家增加是否继续详审
This commit is contained in:
@ -748,7 +748,6 @@ const Index: React.FC<{}> = () => {
|
||||
}
|
||||
//处理汇总表返回的数据
|
||||
const getRemarkList = (data: any) => {
|
||||
console.log('data', data);
|
||||
const List: any[] = []
|
||||
for (const item of totalSupplierColumns) {
|
||||
const obj = data[data.length - 1][item?.supplierRegisterId]
|
||||
@ -884,30 +883,30 @@ const Index: React.FC<{}> = () => {
|
||||
})
|
||||
}, [count]);
|
||||
|
||||
/**
|
||||
/**
|
||||
* 风控中心校验
|
||||
* @param params
|
||||
*/
|
||||
const verificationRiskControl = () => {
|
||||
const remarkList = getRemarkList(ref.current);
|
||||
console.log(remarkList);
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
remarkList: remarkList,
|
||||
}
|
||||
beforeRiskControl(submitData).then(res => {
|
||||
if (res?.code == 200) {
|
||||
if (res?.data.length > 0) {
|
||||
setRiskData(res?.data);
|
||||
setRiskVisible(true);
|
||||
} else {
|
||||
finalSubmit();
|
||||
const verificationRiskControl = () => {
|
||||
const remarkList = getRemarkList(ref.current);
|
||||
if (remarkList) {
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
remarkList: remarkList,
|
||||
}
|
||||
beforeRiskControl(submitData).then(res => {
|
||||
if (res?.code == 200) {
|
||||
if (res?.data.length > 0) {
|
||||
setRiskData(res?.data);
|
||||
setRiskVisible(true);
|
||||
} else {
|
||||
finalSubmit();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
@ -1099,14 +1098,14 @@ const Index: React.FC<{}> = () => {
|
||||
</Modal>
|
||||
{/**风控组件 */}
|
||||
{riskVisible && <RiskPreventionSoft
|
||||
modalVisible={riskVisible}
|
||||
onCancel={() => {
|
||||
setRiskVisible(false);
|
||||
setRiskData([]);
|
||||
}}
|
||||
onSubmit={() => finalSubmit()}
|
||||
data={riskData}
|
||||
/>}
|
||||
modalVisible={riskVisible}
|
||||
onCancel={() => {
|
||||
setRiskVisible(false);
|
||||
setRiskData([]);
|
||||
}}
|
||||
onSubmit={() => finalSubmit()}
|
||||
data={riskData}
|
||||
/>}
|
||||
</Spin>
|
||||
</>
|
||||
)
|
||||
|
@ -1,13 +1,30 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Table } from 'antd';
|
||||
import { Form, Input, Radio, Table } from 'antd';
|
||||
import '@/assets/ld_style.less';
|
||||
import { getJuryDetailScoreData, getJuryList } from '../service';
|
||||
import { checkShowData, getJuryDetailScoreData, getJuryList } from '../service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import { getRoomId } from '@/utils/session';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
|
||||
const layout = {
|
||||
labelCol: { span: 2 },
|
||||
wrapperCol: { span: 16 },
|
||||
};
|
||||
const validateMessages = {
|
||||
required: '请填写${label}',
|
||||
};
|
||||
|
||||
const DetailedSummary: React.FC<{}> = () => {
|
||||
//存储表
|
||||
const [scheduleTable, setScheduleTable] = useState<any>();
|
||||
//单选数值存储
|
||||
const [radioValue, setRadioValue] = useState<number>(1);
|
||||
//是否显示合格供应商不足三家
|
||||
const [isShowFoot, setIsShowFoot] = useState<boolean>(false);
|
||||
//说明文件fileId
|
||||
const [fileId, setFileId] = useState<string>('');
|
||||
const { TextArea } = Input;
|
||||
const [form] = Form.useForm();
|
||||
//初始化表
|
||||
useEffect(() => {
|
||||
//全部参数
|
||||
@ -21,12 +38,12 @@ const DetailedSummary: React.FC<{}> = () => {
|
||||
//获取评委
|
||||
getJuryList(juryParams).then((res) => {
|
||||
if (res.code == 200) {
|
||||
|
||||
//获取汇总表数据
|
||||
getJuryDetailScoreData(juryDataParams).then((response) => {
|
||||
if (response.code == 200) {
|
||||
//调用数据处理方法并初始化表格
|
||||
InitializeTable(res.data, response.data);
|
||||
getFooterData();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -35,21 +52,21 @@ const DetailedSummary: React.FC<{}> = () => {
|
||||
|
||||
//初始化表格方法
|
||||
const InitializeTable = (columns: any, data: any) => {
|
||||
|
||||
|
||||
//处理数据
|
||||
let totalData: any[] = []
|
||||
data.forEach((ele: any) => {
|
||||
let inner = ele
|
||||
inner.key = ele.supplierRegisterId + 1
|
||||
for (const key in inner.scoreMap) {
|
||||
if (Object.prototype.hasOwnProperty.call(inner.scoreMap, key)) {
|
||||
inner.scoreMap[key] = inner.scoreMap[key] == undefined ? "-" : inner.scoreMap[key].score
|
||||
}
|
||||
}
|
||||
Object.assign(inner,inner.scoreMap)
|
||||
totalData.push(inner)
|
||||
let inner = ele
|
||||
inner.key = ele.supplierRegisterId + 1
|
||||
for (const key in inner.scoreMap) {
|
||||
if (Object.prototype.hasOwnProperty.call(inner.scoreMap, key)) {
|
||||
inner.scoreMap[key] = inner.scoreMap[key] == undefined ? "-" : inner.scoreMap[key].score
|
||||
}
|
||||
}
|
||||
Object.assign(inner, inner.scoreMap)
|
||||
totalData.push(inner)
|
||||
});
|
||||
|
||||
|
||||
//处理表头
|
||||
const tcolumns: any[] = [
|
||||
{
|
||||
@ -83,17 +100,62 @@ const DetailedSummary: React.FC<{}> = () => {
|
||||
title: ele.name,
|
||||
dataIndex: ele.userId,
|
||||
key: ele.userId,
|
||||
render:(value: any,record: any,index: any) => {
|
||||
return value == undefined ? "-" : value
|
||||
render: (value: any, record: any, index: any) => {
|
||||
return value == undefined ? "-" : value
|
||||
}
|
||||
});
|
||||
});
|
||||
setScheduleTable(
|
||||
// <div className="bidContent" key="1">
|
||||
<Table bordered pagination={false} columns={tcolumns} dataSource={totalData} key="1"/>
|
||||
<Table bordered pagination={false} columns={tcolumns} dataSource={totalData} key="1" />
|
||||
// </div>,
|
||||
);
|
||||
};
|
||||
return <>{scheduleTable}</>;
|
||||
|
||||
//radio单选onChange方法
|
||||
const radioOnChange = (e: any) => {
|
||||
setRadioValue(e.target.value);
|
||||
};
|
||||
//获取不满足三家数据
|
||||
const getFooterData = () => {
|
||||
checkShowData(getRoomId()).then(response => {
|
||||
if (response?.code == 200) {
|
||||
if (response?.data == undefined) { } else {
|
||||
setIsShowFoot(true)
|
||||
setRadioValue(response.data?.continueStatus)
|
||||
if (response.data?.continueStatus == 1) {
|
||||
setFileId(response.data?.fileId)
|
||||
form.setFieldsValue({
|
||||
remarks: response.data?.remarks
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return (
|
||||
<>
|
||||
{scheduleTable}
|
||||
{isShowFoot ? (
|
||||
<div>
|
||||
<div style={{ margin: '8px 0px' }}>
|
||||
<span style={{ color: '#b30000' }}>合格供应商不足三家,是否继续进行详审:</span>
|
||||
<Radio.Group onChange={radioOnChange} value={radioValue} disabled>
|
||||
<Radio value={1}>是,继续进行</Radio>
|
||||
<Radio value={0}>否,终止评审</Radio>
|
||||
</Radio.Group>
|
||||
</div>
|
||||
<Form {...layout} form={form} name="control-hooks" validateMessages={validateMessages}>
|
||||
<Form.Item name="remarks" label="说明" hidden={radioValue == 0}>
|
||||
<TextArea maxLength={500} readOnly bordered={false} style={{ resize: 'none' }} />
|
||||
</Form.Item>
|
||||
<Form.Item name="fileId" label="说明文件" hidden={radioValue == 0}>
|
||||
<ExtendUpload bid={fileId} uploadProps={{ disabled: true }} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</div>
|
||||
) : null}
|
||||
</>
|
||||
);
|
||||
};
|
||||
export default DetailedSummary;
|
||||
|
@ -116,3 +116,13 @@ export async function getRoomDataById(params: any) {
|
||||
method: 'GET',
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初审汇总表-提交汇总后回显少于三家判断数据
|
||||
* @param params
|
||||
*/
|
||||
export async function checkShowData(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/early/warn/room/${params}`, {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
||||
import '@/assets/ld_style.less';
|
||||
import { getJuryDetailScoreData, getJuryList } from '../service';
|
||||
import { getJuryDetailScoreData, getJuryList, isCheckShow } from '../service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import { getRoomId } from '@/utils/session';
|
||||
import ProTable, { ActionType } from '@ant-design/pro-table';
|
||||
@ -11,6 +11,7 @@ interface BidDetailSummaryProps {
|
||||
reload: any;//重新加载
|
||||
readOnly: boolean;//是否查看状态 true-是 false-否
|
||||
summaryRef: React.MutableRefObject<Array<{}> | undefined>//ref传入
|
||||
onSubmit: (value: any) => void;
|
||||
}
|
||||
|
||||
//是否通过详审options
|
||||
@ -20,15 +21,18 @@ const selectOptions = [
|
||||
]
|
||||
|
||||
const BidDetailSummary: React.FC<BidDetailSummaryProps> = (props) => {
|
||||
const { reload, readOnly, summaryRef } = props
|
||||
const { reload, readOnly, summaryRef, onSubmit } = props
|
||||
//存储表
|
||||
const [scheduleTable, setScheduleTable] = useState<boolean>(false);
|
||||
//表格columns存储
|
||||
const [tableColumns, setTableColumns] = useState<any[]>([]);
|
||||
//表格dataSource存储
|
||||
const [tableDataSource, setTableDataSource] = useState<any[]>([]);
|
||||
const tableDataRef = useRef<any[]>([]);
|
||||
tableDataRef.current = tableDataSource;
|
||||
//表格接口ref
|
||||
const actionRef = useRef<ActionType>();
|
||||
const isShowRef = useRef<boolean>(false);
|
||||
|
||||
const { TextArea } = Input;
|
||||
|
||||
@ -55,8 +59,26 @@ const BidDetailSummary: React.FC<BidDetailSummaryProps> = (props) => {
|
||||
//获取初审汇总表数据
|
||||
getJuryDetailScoreData(juryDataParams).then((response) => {
|
||||
if (response.code == 200) {
|
||||
const data = response?.data;
|
||||
//判断采购方式是否符合
|
||||
isCheckShow(juryDataParams.assessRoomId).then((_res) => {
|
||||
if (_res.code == 200) {
|
||||
isShowRef.current = _res.data;
|
||||
let count = 0;
|
||||
data.forEach((ele: any) => {
|
||||
if (ele.qualifiedStatus == '1' || ele.qualifiedStatus == null) {
|
||||
count = count + 1;
|
||||
}
|
||||
});
|
||||
if (count < 3 && _res.data == true) {
|
||||
onSubmit(true)
|
||||
} else {
|
||||
onSubmit(false)
|
||||
}
|
||||
}
|
||||
});
|
||||
//调用数据处理方法并初始化表格
|
||||
InitializeTable(res.data, response.data);
|
||||
InitializeTable(res.data, data);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -119,8 +141,26 @@ const BidDetailSummary: React.FC<BidDetailSummaryProps> = (props) => {
|
||||
<Select
|
||||
options={selectOptions}
|
||||
onChange={(e) => {
|
||||
record.qualifiedStatus = e
|
||||
record.qualifiedStatus = e;
|
||||
tableDataRef.current.forEach(ele => {
|
||||
if (ele.supplierRegisterId == record.supplierRegisterId) {
|
||||
ele.qualifiedStatus = e;
|
||||
}
|
||||
})
|
||||
actionRef.current?.reloadAndRest?.();
|
||||
if (isShowRef.current) {
|
||||
let count = 0;
|
||||
tableDataRef.current.forEach((ele: any) => {
|
||||
if (ele.qualifiedStatus == '1' || ele.qualifiedStatus == null) {
|
||||
count = count + 1;
|
||||
}
|
||||
});
|
||||
if (count < 3) {
|
||||
onSubmit(true)
|
||||
} else {
|
||||
onSubmit(false)
|
||||
}
|
||||
}
|
||||
}}
|
||||
defaultValue={_}
|
||||
/>
|
||||
|
@ -1,17 +1,18 @@
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import { Button, Table, Tabs, Space, Progress, Radio, Input, Checkbox, Select, Modal, Menu, Pagination, Spin, Form, message, Collapse, Upload, Tooltip } from 'antd';
|
||||
import { getTabList, getProgress, getScoreDetail, getRegister, submitDetail, updateJudgesStatus, getMemberInfo, getEval, getUnlock, getCheckData, isStatus, getFile } from './service';
|
||||
import { getTabList, getProgress, getScoreDetail, getRegister, submitDetail, updateJudgesStatus, getMemberInfo, getEval, getUnlock, getCheckData, isStatus, getFile, submitSummary, checkShowData, beforeRiskControl } from './service';
|
||||
import '@/assets/ld_style.less'
|
||||
import FirstTrialTableLimitedQuantity from '../BidNumberManager/module/FirstTrialTableLimitedQuantity';
|
||||
import { getExperts } from '../BidDetailedManager/service';
|
||||
import ConsistencyCheck from './components/ConsistencyCheck';
|
||||
import BidDetailSummary from './components/BidDetailSummary';
|
||||
import BidDetailSpeed from './components/BidDetailSpeed';
|
||||
import { handleSubmit } from './utils';
|
||||
import { getRoomId, getSessionUserData, getUserToken } from '@/utils/session';
|
||||
import FileDown from '@/utils/Download';
|
||||
import { getURLInformation, isEmpty } from '@/utils/CommonUtils';
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
import RiskPreventionSoft from '@/utils/RiskPreventionSoft';
|
||||
|
||||
const { TabPane } = Tabs;
|
||||
const { Option } = Select;
|
||||
@ -22,13 +23,19 @@ const { Panel } = Collapse;
|
||||
let assessRoomId: any, reviewTurnId: any, reviewType: any, bidEvalId: any, reviewStatus: any
|
||||
let bidEvalDetailDTOList: any = [];
|
||||
let totalQualified: any = [];
|
||||
const layout = {
|
||||
labelCol: { span: 2 },
|
||||
wrapperCol: { span: 16 },
|
||||
};
|
||||
const validateMessages = {
|
||||
required: '请填写${label}',
|
||||
};
|
||||
|
||||
const Index: React.FC<{}> = () => {
|
||||
const [plainList, setPlainList] = useState([]); // 评审解锁专家
|
||||
const [bidDetailVisible, setBidDetailVisible] = useState<boolean>(false); // 初审(有限数量制)详情
|
||||
const [lockVisible, setLockVisible] = useState<boolean>(false); // 初审(有限数量制)记录表-解锁
|
||||
const [tabList, setTabList] = useState<any>([]); // tab
|
||||
const [typeId, setTypeId] = useState<any>(); // tabId
|
||||
const [typeCategory, setTypeCategory] = useState<any>(); // tab类型
|
||||
const [process, setProcess] = useState<any>(); // 我的进度
|
||||
const [totalSupplier, setTotalSupplier] = useState<any>([]); // 总供应商列头
|
||||
@ -46,9 +53,13 @@ const Index: React.FC<{}> = () => {
|
||||
const [checkData, setCheckData] = useState<any>([]); // 一致性检查数据
|
||||
const [checkVisible, setCheckVisible] = useState<boolean>(false); // 一致性检查显隐
|
||||
const [tableDisplay, setTableDisplay] = useState<boolean>(false); // 汇总表进度和汇总表显示
|
||||
const [submitStatus, setSubmitStatus] = useState<boolean>(false); // 当前页面评审汇总显隐
|
||||
// const [submitStatus, setSubmitStatus] = useState<boolean>(false); // 当前页面评审汇总显隐
|
||||
const [dateLength, setDateLength] = useState<any>([]); // tab签长度
|
||||
const [submitLoading, setSubmitLoading] = useState<boolean>(false); // 提交汇总loading
|
||||
const [uploadId, setUploadId] = useState<any>();//上传文件id存储
|
||||
const [radioValue, setRadioValue] = useState<number>();//单选数值存储
|
||||
const [isShowFoot, setIsShowFoot] = useState<boolean>(false);//是否显示合格供应商不足三家
|
||||
const [form] = Form.useForm();//动态获取表单
|
||||
|
||||
//获取数据的参数
|
||||
const [findScoreRecordData, setFindScoreRecordData] = useState<any>();
|
||||
@ -56,6 +67,10 @@ const Index: React.FC<{}> = () => {
|
||||
const [allFirstTrialTableData, setAllFirstTrialTableData] = useState<any>(null);
|
||||
//用于显示初审(有限数量制)表数据
|
||||
const [preliminaryDetails, setPreliminaryDetails] = useState<any>();
|
||||
//风控弹窗 2022.10.27 zhoujianlong
|
||||
const [riskVisible, setRiskVisible] = useState<boolean>(false);
|
||||
//风控数据 2022.10.27 zhoujianlong
|
||||
const [riskData, setRiskData] = useState<any[]>([]);
|
||||
//评审室id
|
||||
const roomId = getRoomId();
|
||||
const [count, setCount] = useState<any>(0);
|
||||
@ -932,6 +947,31 @@ const Index: React.FC<{}> = () => {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 风控中心校验
|
||||
*/
|
||||
const verificationRiskControl = () => {
|
||||
const remarkList = getRemarkList(ref.current);
|
||||
if (remarkList) {
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
remarkList: remarkList,
|
||||
}
|
||||
beforeRiskControl(submitData).then(res => {
|
||||
if (res?.code == 200) {
|
||||
if (res?.data.length > 0) {
|
||||
setRiskData(res?.data);
|
||||
setRiskVisible(true);
|
||||
} else {
|
||||
submitClick();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const submitClick = async () => {
|
||||
let juryData = {
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
@ -978,18 +1018,18 @@ const Index: React.FC<{}> = () => {
|
||||
}
|
||||
|
||||
const finalSubmit = async () => {
|
||||
const remarkList = getRemarkList(ref.current);
|
||||
if (remarkList) {
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
remarkList: remarkList,
|
||||
}
|
||||
const success = await handleSubmit(submitData)
|
||||
if (success) {
|
||||
setCount(count + 1)
|
||||
setCheckVisible(false)
|
||||
if (isShowFoot == true) {
|
||||
form.submit();
|
||||
} else {
|
||||
const remarkList = getRemarkList(ref.current);
|
||||
if (remarkList) {
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
remarkList: remarkList,
|
||||
}
|
||||
await toSubmit(submitData)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1032,6 +1072,45 @@ const Index: React.FC<{}> = () => {
|
||||
}
|
||||
},
|
||||
};
|
||||
//radio单选onChange方法
|
||||
const radioOnChange = (e: any) => {
|
||||
setRadioValue(e.target.value);
|
||||
};
|
||||
//表单提交
|
||||
const onFinish = async (values: any) => {
|
||||
let data = {
|
||||
continueStatus: radioValue
|
||||
}
|
||||
if (radioValue == 1) {
|
||||
data["remarks"] = values.remarks
|
||||
data["fileId"] = values.fileId
|
||||
}
|
||||
const remarkList = getRemarkList(ref.current)
|
||||
if (remarkList) {
|
||||
let submitData = {
|
||||
reviewStatus: '2',
|
||||
reviewTurnId: getURLInformation("turnId"),
|
||||
reviewType: '1',
|
||||
earlyWarn: { ...data },
|
||||
remarkList: remarkList,
|
||||
}
|
||||
await toSubmit(submitData)
|
||||
}
|
||||
};
|
||||
const toSubmit = async (params: any) => {
|
||||
setSubmitLoading(true)
|
||||
setSpinVisible(true)
|
||||
await submitSummary(params).then(res => { //提交汇总方法
|
||||
if (res?.code == 200) {
|
||||
message.success('提交成功');
|
||||
setCount(count + 1)
|
||||
}
|
||||
}).finally(() => {
|
||||
setSubmitLoading(false)
|
||||
setCheckVisible(false);
|
||||
setSpinVisible(false)
|
||||
})
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
bidEvalDetailDTOList = []
|
||||
@ -1055,9 +1134,19 @@ const Index: React.FC<{}> = () => {
|
||||
createBy: 101
|
||||
}
|
||||
//初始化汇总表显示状态
|
||||
isStatus(statusProps).then(res => {
|
||||
isStatus(statusProps).then(async res => {
|
||||
if (res.code == 200) {
|
||||
setTableDisplay(res.data)
|
||||
setTableDisplay(res.data);
|
||||
//初始化三家供应商判断数据
|
||||
await checkShowData(assessRoomId).then(response => {
|
||||
if (response?.code == 200) {
|
||||
setUploadId(response?.data?.fileId)
|
||||
setRadioValue(response?.data?.continueStatus == undefined ? 1 : response?.data?.continueStatus)
|
||||
form.setFieldsValue({
|
||||
remarks: response.data?.remarks
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1088,10 +1177,10 @@ const Index: React.FC<{}> = () => {
|
||||
if (item.name == '评审汇总') {
|
||||
return (
|
||||
<TabPane tab={item.name} key={index}>
|
||||
{reviewStatus == 2 || reviewStatus == 3 || submitStatus ? null : (
|
||||
{reviewStatus == 2 || reviewStatus == 3 ? null : (
|
||||
<div>
|
||||
{tableDisplay == true ? (
|
||||
<Button hidden={btnAuthority(['ebtp-expert'])} type="primary" size="small" className="fr ml10 mb10" onClick={submitClick} loading={submitLoading}>提交汇总</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-expert'])} type="primary" size="small" className="fr ml10 mb10" onClick={verificationRiskControl} loading={submitLoading}>提交汇总</Button>
|
||||
) : null}
|
||||
<Button hidden={btnAuthority(['ebtp-expert'])} onClick={getLock} type="primary" size="small" className="fr mb10">评审解锁</Button>
|
||||
</div>
|
||||
@ -1099,7 +1188,55 @@ const Index: React.FC<{}> = () => {
|
||||
{tableDisplay == true ? (
|
||||
<>
|
||||
<p className="red">初审(有限数量制)结果汇总表</p>
|
||||
<BidDetailSummary reload={count} readOnly={reviewStatus == 2 || reviewStatus == 3} summaryRef={ref} />
|
||||
<BidDetailSummary reload={count} readOnly={reviewStatus == 2 || reviewStatus == 3} summaryRef={ref} onSubmit={(value) => {
|
||||
setIsShowFoot(value)
|
||||
}} />
|
||||
{isShowFoot ? (
|
||||
<div>
|
||||
<div style={{ margin: '8px 0px' }}>
|
||||
<span style={{ color: '#b30000' }}>合格供应商不足三家,是否继续进行详审:</span>
|
||||
<Radio.Group onChange={radioOnChange} value={radioValue} disabled={reviewStatus == 2 || reviewStatus == 3}>
|
||||
<Radio value={1}>是,继续进行</Radio>
|
||||
<Radio value={0}>否,终止评审</Radio>
|
||||
</Radio.Group>
|
||||
</div>
|
||||
<Form
|
||||
{...layout}
|
||||
form={form}
|
||||
name="control-hooks"
|
||||
onFinish={onFinish}
|
||||
validateMessages={validateMessages}
|
||||
>
|
||||
<Form.Item
|
||||
name="remarks"
|
||||
label="说明"
|
||||
rules={[{ required: !(reviewStatus == 2 || reviewStatus == 3) && radioValue == 1 }]}
|
||||
hidden={radioValue == 0}
|
||||
>
|
||||
<TextArea maxLength={500} disabled={reviewStatus == 2 || reviewStatus == 3} placeholder="请填写说明" style={{ resize: reviewStatus == 2 || reviewStatus == 3 ? 'none' : 'vertical' }} />
|
||||
</Form.Item>
|
||||
{reviewStatus == 2 || reviewStatus == 3 ? (
|
||||
<Form.Item
|
||||
name="fileId"
|
||||
label="说明文件"
|
||||
hidden={radioValue == 0}
|
||||
>
|
||||
<ExtendUpload bid={uploadId} uploadProps={{ disabled: true }} />
|
||||
</Form.Item>
|
||||
) : (
|
||||
|
||||
<Form.Item
|
||||
name="fileId"
|
||||
label="说明文件"
|
||||
hidden={radioValue == 0}
|
||||
extra="最多上传一个文件,每个最大30MB"
|
||||
>
|
||||
<ExtendUpload maxSize={30} bid={uploadId} uploadProps={{}} maxCount={1}></ExtendUpload>
|
||||
</Form.Item>
|
||||
)}
|
||||
</Form>
|
||||
</div>
|
||||
) : null}
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
@ -1208,6 +1345,16 @@ const Index: React.FC<{}> = () => {
|
||||
modalVisible={checkVisible}
|
||||
values={checkData}
|
||||
/>
|
||||
{/**风控组件 */}
|
||||
{riskVisible && <RiskPreventionSoft
|
||||
modalVisible={riskVisible}
|
||||
onCancel={() => {
|
||||
setRiskVisible(false);
|
||||
setRiskData([]);
|
||||
}}
|
||||
onSubmit={() => submitClick()}
|
||||
data={riskData}
|
||||
/>}
|
||||
</Spin>
|
||||
</>
|
||||
)
|
||||
|
@ -78,7 +78,7 @@ export async function updateJudgesStatus(data: any) { // 提交
|
||||
}
|
||||
|
||||
export async function getMemberInfo(id: any) { // 评审解锁
|
||||
return request('/api/biz-service-ebtp-rsms/v1/jury/member/info/'+id, {
|
||||
return request('/api/biz-service-ebtp-rsms/v1/jury/member/info/' + id, {
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
@ -102,9 +102,9 @@ export async function getUnlock(data: any) { // 评审解锁
|
||||
* @param params
|
||||
*/
|
||||
export async function getJuryDetailScoreData(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/findScoreDetailSummary`,{
|
||||
method: 'POST',
|
||||
data: params
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/findScoreDetailSummary`, {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
@ -114,8 +114,8 @@ export async function getJuryDetailScoreData(params: any) {
|
||||
* @param params
|
||||
*/
|
||||
export async function getJuryList(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/jury/member/info/${params}`,{
|
||||
method: 'GET',
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/jury/member/info/${params}`, {
|
||||
method: 'GET',
|
||||
})
|
||||
}
|
||||
|
||||
@ -124,9 +124,9 @@ export async function getJuryList(params: any) {
|
||||
* @param params
|
||||
*/
|
||||
export async function getJuryScoreData(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/eval/summary/findProgressSummary`,{
|
||||
method: 'POST',
|
||||
data: params
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/eval/summary/findProgressSummary`, {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
@ -135,9 +135,9 @@ export async function getJuryScoreData(params: any) {
|
||||
* @param params
|
||||
*/
|
||||
export async function getCheckData(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/findConsistentResult`,{
|
||||
method: 'POST',
|
||||
params: params
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/findConsistentResult`, {
|
||||
method: 'POST',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
@ -146,9 +146,9 @@ export async function getCheckData(params: any) {
|
||||
* @param params
|
||||
*/
|
||||
export async function submitSummary(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/submitSummary`,{
|
||||
method: 'POST',
|
||||
data: params
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bxmulti/eval/summary/submitSummary`, {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
@ -157,15 +157,42 @@ export async function submitSummary(params: any) {
|
||||
* @param params
|
||||
*/
|
||||
export async function isStatus(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/eval/category/findAllJudgesStatus`,{
|
||||
method: 'GET',
|
||||
params: params
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/eval/category/findAllJudgesStatus`, {
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export async function getFile(id: any) { // 查找是否有应答文件
|
||||
return request('/api/biz-service-ebtp-rsms/v1/review/config/detail/doc/list?detailId='+id, {
|
||||
return request('/api/biz-service-ebtp-rsms/v1/review/config/detail/doc/list?detailId=' + id, {
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初审汇总表-提交汇总后回显少于三家判断数据
|
||||
* @param params
|
||||
*/
|
||||
export async function checkShowData(params: any) {
|
||||
return request(`/api/biz-service-ebtp-rsms/v1/bid/early/warn/room/${params}`, {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 初审汇总表-判断是否需要供应商少于三家判断
|
||||
* @param params
|
||||
*/
|
||||
export async function isCheckShow(params: any) {
|
||||
return request(`/api/biz-service-ebtp-process/v1/process/check/effective/supplier/${params}`, {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 提交前风险防控校验接口
|
||||
* @param data
|
||||
*/
|
||||
export function beforeRiskControl(data: any) {
|
||||
return request("/api/biz-service-ebtp-rsms/v1/riskcenter/getRemindEarlySummary", {
|
||||
method: 'post',
|
||||
data: data,
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user