Files
fe_service_ebtp_frontend/src/pages/Evaluation/BidPreliminary/BidPreliminaryReviewLeader/index.tsx

1147 lines
43 KiB
TypeScript
Raw Normal View History

2022-03-10 14:24:13 +08:00
import React, { useState, useEffect, useRef } from 'react';
2021-01-16 11:29:42 +08:00
import { Button, Table, Tabs, Space, Progress, Radio, Modal, Menu, Checkbox, Pagination, Input, message, Upload, Spin, Form, Collapse } from 'antd';
import { getTabList, getProgress, getScoreDetail, getRegister, submitDetail, updateJudgesStatus, getMemberInfo, getEval, getUnlock, isStatus, checkShowData, getFile, submitSummary, submQualified, beforeRiskControl } from './service';
2020-12-23 11:14:35 +08:00
import '@/assets/ld_style.less'
import BidPreliminarySpeed from './components/BidPreliminarySpeed';
import BidPreliminarySummary from './components/BidPreliminarySummary';
2021-01-16 11:29:42 +08:00
import FirstTrialTable from '../BidPreliminaryManager/module/FirstTrialTable';
import { getExperts } from '../BidPreliminaryManager/service';
2022-03-10 14:24:13 +08:00
import { getProMethod, getRoomId, getSessionUserData, getUserToken } from '@/utils/session';
2021-01-16 11:29:42 +08:00
import FileDown from '@/utils/Download';
2022-03-10 14:24:13 +08:00
import { getURLInformation, isEmpty } from '@/utils/CommonUtils';
import ExtendUpload from '@/utils/ExtendUpload';
import { btnAuthority } from '@/utils/authority';
import MACAddressPrompt from '../../BidControl/BidControlManager/components/MACAddressPrompt';
import RiskPreventionSoft from '@/utils/RiskPreventionSoft';
2020-12-23 11:14:35 +08:00
const { TabPane } = Tabs;
const { SubMenu } = Menu;
const { TextArea } = Input;
2021-01-16 11:29:42 +08:00
const { Panel } = Collapse;
2022-03-10 14:24:13 +08:00
const layout = {
labelCol: { span: 2 },
wrapperCol: { span: 16 },
};
const validateMessages = {
required: '请填写${label}',
};
2020-12-23 11:14:35 +08:00
2021-01-16 11:29:42 +08:00
let assessRoomId: any, reviewTurnId: any, reviewType: any, bidEvalId: any, reviewStatus: any
2022-03-10 14:24:13 +08:00
let bidEvalDetailDTOList: any = [];
let totalQualified: any = [];
let disabled: any = false;
let endProgress: any = false;
2020-12-23 11:14:35 +08:00
const Index: React.FC<{}> = () => {
const [tabList, setTabList] = useState<any>([]); // tab
const [process, setProcess] = useState<any>(); // 我的进度
const [typeId, setTypeId] = useState<any>(); // tabId
2021-01-16 11:29:42 +08:00
const [typeCategory, setTypeCategory] = useState<any>(); // tab类型
2020-12-23 11:14:35 +08:00
const [totalSupplierColumns, setTotalSupplierColumns] = useState<any>([]); // 总供应商列头
const [supplierColumns, setSupplierColumns] = useState<any>([]); // 当前显示供应商列头
2022-03-10 14:24:13 +08:00
const [current, setCurrent] = useState<number>(1); // 当前页码
2020-12-23 11:14:35 +08:00
const [total, setTotal] = useState<number>(1); // 共多少数据
const [remarkVisible, setRemarkVisible] = useState<boolean>(false); // 备注
const [dataSource, setDataSource] = useState<any>([]); // 初审项配置
const [detailVisible, setDetailVisible] = useState<boolean>(false); // 初审详情
const [lockVisible, setLockVisible] = useState<boolean>(false); // 解锁
2021-01-16 11:29:42 +08:00
const [plainList, setPlainList] = useState([]); // 解锁专家
2020-12-23 11:14:35 +08:00
const [remarksVal, setRemarksVal] = useState<any>(); // 备注
const [subId, setSubId] = useState<any>(); // 提交id
const [spinVisible, setSpinVisible] = useState<boolean>(false); // 加载中
const [remarkForm] = Form.useForm(); // 备注表单
const [isDisabled, setIsDisabled] = useState<boolean>(false); // 是否可编辑
2021-01-16 11:29:42 +08:00
const [unLockArr, setUnLockArr] = useState<any>([]); // 解锁专家数组
2022-03-10 14:24:13 +08:00
const [dateLength, setDateLength] = useState<any>([]); // tab签长度
const [isModalVisible, setIsModalVisible] = useState(false); // 全局全部合格弹窗
const [submitLoading, setSubmitLoading] = useState<boolean>(false); // 提交汇总loading
//风控弹窗 2022.8.17 zhoujianlong
const [riskVisible, setRiskVisible] = useState<boolean>(false);
//风控数据 2022.8.17 zhoujianlong
const [riskData, setRiskData] = useState<any[]>([]);
2021-01-16 11:29:42 +08:00
//获取数据的参数
const [findScoreRecordData, setFindScoreRecordData] = useState<any>();
//所有人员初审表数据
const [allFirstTrialTableData, setAllFirstTrialTableData] = useState<any>(null);
//用于显示初审表数据
const [preliminaryDetails, setPreliminaryDetails] = useState<any>();
2022-03-10 14:24:13 +08:00
// //当前页面评审汇总显隐
// const [submitStatus, setSubmitStatus] = useState<boolean>(false);
2021-01-16 11:29:42 +08:00
// 汇总表进度和汇总表显示
const [tableDisplay, setTableDisplay] = useState<boolean>(false);
2022-03-10 14:24:13 +08:00
//上传文件id存储
const [uploadId, setUploadId] = useState<any>();
//单选数值存储
const [radioValue, setRadioValue] = useState<number>();
//比选一阶段二次项目自定义评审流程单选数值存储
const [processValue, setProcessValue] = useState<number>();
//合格供应商数量
const [qualifyNumber, setQualifyNumber] = useState<number>(3);
//是否公开比选一阶段二次项目
const [isBxOneSecond, setIsBxOneSecond] = useState<boolean>(false);
//二次项目是否可编辑两个单选
const [isNodeEnd, setIsNodeEnd] = useState<boolean>(false);
2022-03-10 14:24:13 +08:00
//动态获取表单
const [form] = Form.useForm();
//当前页 初审详情
const [theCurrent, setTheCurrent] = useState<string>('1');
const [count, setCount] = useState<any>(0);
const modalHeight = (innerHeight * 96) / 100;
const ref = useRef<Array<{}>>();
const [isEndProgress, setIsEndProgress] = useState<boolean>(false); // 是否可编辑
const proMethod = getProMethod();//获取采购方式
let showNameT: any = { tbr: '', pb: '', tb: '' }//投标人供应商
if (proMethod === 'procurement_mode_1' || proMethod === 'procurement_mode_2') {//招标
2022-04-01 20:06:34 +08:00
showNameT = { tbr: '投标人', pb: '评标', tb: '投标' };
2022-03-10 14:24:13 +08:00
} else {
2022-04-01 20:06:34 +08:00
showNameT = { tbr: '供应商', pb: '评审', tb: '应答' }
2022-03-10 14:24:13 +08:00
}
2021-01-16 11:29:42 +08:00
const columns: any[] = [ // 列表数据
{
2022-03-10 14:24:13 +08:00
title: '类别名称',
dataIndex: 'categoryName',
render: (_: any, record: any, index: number) => {
return {
children: _,
props: {
rowSpan: record.rowSpan,
}
}
}
2021-01-16 11:29:42 +08:00
},
{
2022-03-10 14:24:13 +08:00
title: '初审项&审查标准',
dataIndex: 'scoreItem',
render: (_: any, record: any) => {
return (
<>
<div>{record.scoreItem}</div>
<div>{record.rvwStandard}</div>
</>
)
}
2021-01-16 11:29:42 +08:00
},
{
title: '操作',
render: (_: any, record: any) => {
return (
2022-03-10 14:24:13 +08:00
<Button type="link" disabled={disabled || endProgress} onClick={() => getQualified(record)} danger></Button>
2021-01-16 11:29:42 +08:00
)
}
},
];
2020-12-23 11:14:35 +08:00
2022-03-10 14:24:13 +08:00
const createNewArr = (data: any[], fieldName: string) => {
return data.reduce((result: any[], item: any) => {
//首先将name字段作为新数组result取出
if (result.indexOf(item[fieldName]) < 0) {
result.push(item[fieldName]);
}
return result
}, []).reduce((result: any[], name: any) => {
//将name相同的数据作为新数组取出并在其内部添加新字段**rowSpan**
const children = data.filter(item => item[fieldName] === name);
result = result.concat(
children.map((item: any, index: number) => ({
...item,
rowSpan: index === 0 ? children.length : 0,//将第一行数据添加rowSpan字段
}))
)
return result;
}, [])
}
2020-12-23 11:14:35 +08:00
const saveSorce = () => { // 保存
if (bidEvalDetailDTOList.length > 0) {
setSpinVisible(true)
let date = {
id: subId,
2021-01-16 11:29:42 +08:00
bidEvalId: bidEvalId,
2022-03-10 14:24:13 +08:00
// categoryId: typeId,
2021-01-16 11:29:42 +08:00
category: typeCategory,
2020-12-23 11:14:35 +08:00
judgesStatus: '1',
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList: bidEvalDetailDTOList,
assessRoomId: assessRoomId,
2020-12-23 11:14:35 +08:00
}
submitDetail({ ...date }).then((res) => {
if (res.code == 200) {
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList = []
ratingData(typeCategory)
myProcess(typeCategory)
} else {
myProcess(typeCategory)
ratingData(typeCategory)
bidEvalDetailDTOList = []
// setCount(count + 1)
}
}).finally(() => {
setSpinVisible(false)
bidEvalDetailDTOList = []
})
}
}
const tabSaveSorce = () => { // tab保存
if (bidEvalDetailDTOList.length > 0) {
setSpinVisible(true)
let date = {
id: subId,
bidEvalId: bidEvalId,
// categoryId: typeId,
category: typeCategory,
judgesStatus: '1',
bidEvalDetailDTOList: bidEvalDetailDTOList,
assessRoomId: assessRoomId,
}
submitDetail({ ...date }).then((res) => {
if (res.code == 200) {
bidEvalDetailDTOList = []
} else {
bidEvalDetailDTOList = []
2020-12-23 11:14:35 +08:00
}
2022-03-10 14:24:13 +08:00
}).finally(() => {
setSpinVisible(false)
bidEvalDetailDTOList = []
2020-12-23 11:14:35 +08:00
})
}
}
const submitApi = () => { // 提交接口
setSpinVisible(true)
let date = {
2022-03-10 14:24:13 +08:00
// categoryId: typeId,
category: typeCategory,
2020-12-23 11:14:35 +08:00
judgesStatus: '2',
2022-03-10 14:24:13 +08:00
bidEvalId: bidEvalId,
2020-12-23 11:14:35 +08:00
}
updateJudgesStatus({ ...date }).then((res) => {
if (res.code == 200) {
2021-01-16 11:29:42 +08:00
message.success('提交成功!');
2020-12-23 11:14:35 +08:00
setSpinVisible(false)
2021-01-16 11:29:42 +08:00
// ratingData(typeId)
setIsDisabled(true)
2022-03-10 14:24:13 +08:00
supplierTab(typeCategory) // 防止提交成功禁用按钮不生效
2020-12-23 11:14:35 +08:00
}
2022-03-10 14:24:13 +08:00
}).finally(() => {
setSpinVisible(false)
2020-12-23 11:14:35 +08:00
})
}
const submit = () => { // 提交
if (bidEvalDetailDTOList.length > 0) {
let date = {
id: subId,
2021-01-16 11:29:42 +08:00
bidEvalId: bidEvalId,
2022-03-10 14:24:13 +08:00
// categoryId: typeId,
2021-01-16 11:29:42 +08:00
category: typeCategory,
2020-12-23 11:14:35 +08:00
judgesStatus: '1',
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList: bidEvalDetailDTOList,
assessRoomId: assessRoomId,
2020-12-23 11:14:35 +08:00
}
submitDetail({ ...date }).then((res) => {
if (res.code == 200) {
setSpinVisible(false)
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList = []
2022-04-01 20:06:34 +08:00
2022-03-10 14:24:13 +08:00
let date = {
bidEvalId: bidEvalId,
reviewTurnId: reviewTurnId,
category: typeCategory,
assessRoomId: assessRoomId,
reviewType: '1'
}
getProgress({ ...date }).then((res) => {
if (res.code == 200) {
2022-04-01 20:06:34 +08:00
if (res.data == 100) {
2022-03-10 14:24:13 +08:00
setProcess(res.data)
submitApi()
} else {
message.error("您有未完成的打分项,请完成后再提交!")
}
}
})
2020-12-23 11:14:35 +08:00
}
2022-03-10 14:24:13 +08:00
}).finally(() => {
setSpinVisible(false)
bidEvalDetailDTOList = []
2020-12-23 11:14:35 +08:00
})
} else {
2022-03-10 14:24:13 +08:00
let date = {
bidEvalId: bidEvalId,
reviewTurnId: reviewTurnId,
category: typeCategory,
assessRoomId: assessRoomId,
reviewType: '1'
}
getProgress({ ...date }).then((res) => {
if (res.code == 200) {
2022-04-01 20:06:34 +08:00
if (res.data == 100) {
2022-03-10 14:24:13 +08:00
submitApi()
} else {
message.error("您有未完成的打分项,请完成后再提交!")
}
}
})
2020-12-23 11:14:35 +08:00
}
}
const onChange = (e: any, val: any, id: any) => { // 单选合格不合格
let x = false;
bidEvalDetailDTOList.map((item: any) => {
2022-03-10 14:24:13 +08:00
if (val.detailId && item.supplierRegisterId == id && item.detailId == val.detailId) {
2021-01-16 11:29:42 +08:00
item.resultValue = e.target.value
x = true
2020-12-23 11:14:35 +08:00
}
})
if (!x) {
if (val.detailId) {
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList.push({ 'categoryId': val.categoryId, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId, 'resultValue': e.target.value, 'remarks': val.remarks });
2020-12-23 11:14:35 +08:00
} else {
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList.push({ 'categoryId': val.categoryId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'resultValue': e.target.value, 'remarks': '' });
2020-12-23 11:14:35 +08:00
}
}
2021-01-16 11:29:42 +08:00
totalQualified.map((item: any) => {
if (val.detailId) {
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
2022-03-10 14:24:13 +08:00
if (id == supplierId[i] && item.scoreMap[supplierId[i]].resultValue != e.target.value) {
2021-01-16 11:29:42 +08:00
item.scoreMap[supplierId[i]].resultValue = e.target.value
}
}
}
} else {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
if (item.scoreMap == null) {
item.scoreMap = []
}
2022-03-10 14:24:13 +08:00
item.scoreMap[supplierId[i]] = { 'categoryId': val.categoryId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'resultValue': e.target.value, 'remarks': '' }
2021-01-16 11:29:42 +08:00
}
}
}
}
})
setDataSource([...totalQualified])
2020-12-23 11:14:35 +08:00
}
const openDetail = () => { // 初审详情
setDetailVisible(true)
2022-03-10 14:24:13 +08:00
setPreliminaryDetails(theCurrent == '1' ? findScoreRecordData : allFirstTrialTableData);
2020-12-23 11:14:35 +08:00
}
const handleClick = (e: any) => { // 初审详情树切换
2022-03-10 14:24:13 +08:00
setTheCurrent(e.key);
2020-12-23 11:14:35 +08:00
if (e.key == 1) { // 初审记录表
2021-01-16 11:29:42 +08:00
setPreliminaryDetails(findScoreRecordData);
2020-12-23 11:14:35 +08:00
} else if (e.key == 2) { // 专家个人初审表
2021-01-16 11:29:42 +08:00
setPreliminaryDetails(allFirstTrialTableData);
2020-12-23 11:14:35 +08:00
}
}
2021-01-16 11:29:42 +08:00
/**
*
*/
const getFirstTrialTable = async (findScoreRecordParams: any, supplierData: any) => {
let data = <FirstTrialTable
defaultSupplierData={supplierData}
defaultNumber={3}
supplierParams={null}
findScoreRecordParams={{ ...findScoreRecordParams, reviewType: "1" }}
/>;
let finalData = (
<div className="right-content">
{data}
</div>
)
setPreliminaryDetails(finalData);
setFindScoreRecordData(finalData);
return data;
2020-12-23 11:14:35 +08:00
}
2021-01-16 11:29:42 +08:00
/**
*
*/
const getAllFirstTrialTable = async (findScoreRecordParams: any, supplierData: any) => {
//获取专家数据
getExperts(assessRoomId).then((res: any) => {
let data = res.data.map((item: any) => {
return (
<>
<Panel className='h45' header={item.name} key={item.id}>
<FirstTrialTable
key={item.id}
2022-03-10 14:24:13 +08:00
findScoreRecordParams={{ ...findScoreRecordParams, reviewType: "1", createBy: item.userId }}
2021-01-16 11:29:42 +08:00
defaultNumber={3}
supplierParams={null}
defaultSupplierData={supplierData}
/>
</Panel>
</>
)
})
setAllFirstTrialTableData(
<>
<div className="right-content">
<Collapse>
{data}
</Collapse>
</div>
</>
);
})
2020-12-23 11:14:35 +08:00
}
const getTabId = (key: any) => { // tab切换获取当前tab的key
2022-03-10 14:24:13 +08:00
setCurrent(1)
if (tabList[key].name == '初审汇总') {
setCount(count + 1)
setQualifyNumber(3)
2022-03-10 14:24:13 +08:00
} else {
if (bidEvalDetailDTOList.length > 0) {
tabSaveSorce()
bidEvalDetailDTOList = []
}
if (key < tabList.length - 1) {
changePagination(1, tabList[key].category, totalSupplierColumns)
// setTypeId(tabList[key].id)
setTypeCategory(tabList[key].category)
myProcess(tabList[key].category)
}
2020-12-23 11:14:35 +08:00
}
}
2022-03-10 14:24:13 +08:00
const myProcess = (category: any) => { // 我的进度
2020-12-23 11:14:35 +08:00
let date = {
2021-01-16 11:29:42 +08:00
bidEvalId: bidEvalId,
reviewTurnId: reviewTurnId,
2022-03-10 14:24:13 +08:00
category: category,
assessRoomId: assessRoomId,
reviewType: '1'
2020-12-23 11:14:35 +08:00
}
getProgress({ ...date }).then((res) => {
if (res.code == 200) {
setProcess(res.data)
}
})
}
2022-03-10 14:24:13 +08:00
const supplierTab = (category: any) => {
2020-12-23 11:14:35 +08:00
let date = {
2021-01-16 11:29:42 +08:00
assessRoomId: assessRoomId,
2022-03-10 14:24:13 +08:00
reviewTurnId: reviewTurnId,
reviewType: "1"
2020-12-23 11:14:35 +08:00
}
getRegister({ ...date }).then((res) => { // 供应商列头
if (res.code == 200) {
setTotal(res.data.length)
setTotalSupplierColumns(res.data)
2022-03-10 14:24:13 +08:00
changePagination(1, category, res.data)
2021-01-16 11:29:42 +08:00
getAllFirstTrialTable(date, res.data);
getFirstTrialTable(date, res.data);
2020-12-23 11:14:35 +08:00
}
})
}
2021-01-16 11:29:42 +08:00
let supplierId: any = [] // 供应商数组id
2022-03-10 14:24:13 +08:00
const changePagination = (page: any, category: any, totalSupplierColumns: any) => { // 供应商列头分页
2020-12-23 11:14:35 +08:00
if (bidEvalDetailDTOList.length > 0) {
saveSorce() // 保存
}
2022-03-10 14:24:13 +08:00
setCurrent(page)
2021-01-16 11:29:42 +08:00
let currentDate = (page - 1) * 3
2020-12-23 11:14:35 +08:00
let newColumns = [...columns];
2021-01-16 11:29:42 +08:00
totalSupplierColumns.slice(currentDate, currentDate + 3).map((item: any) => {
supplierId.push(item.supplierRegisterId)
2020-12-23 11:14:35 +08:00
newColumns.push({
title: (
<>
{item.supplierRegisterName}
{item.macConflictStatus && <MACAddressPrompt type='score' />}
</>
),
2020-12-23 11:14:35 +08:00
dataIndex: item.supplierRegisterId,
render: (text: any, record: any) => {
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
return (
<div>
<Radio.Group
2022-03-10 14:24:13 +08:00
disabled={disabled || endProgress}
2021-01-16 11:29:42 +08:00
value={Number(record.scoreMap[item.supplierRegisterId].resultValue)}
2020-12-23 11:14:35 +08:00
onChange={e => onChange(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
>
<Radio value={1}></Radio>
<Radio value={2}></Radio>
</Radio.Group><br />
<Button type="link" onClick={() => getRemark(record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)} danger></Button>
2022-03-10 14:24:13 +08:00
<Button hidden={btnAuthority(['ebtp-expert'])} type="link" danger onClick={() => lookFile(record.id, item.supplierRegisterId)}>{showNameT.tb}</Button>
2020-12-23 11:14:35 +08:00
</div>
)
} else {
return (
<div>
<Radio.Group
2022-03-10 14:24:13 +08:00
disabled={disabled || endProgress}
2021-01-16 11:29:42 +08:00
value={0}
2020-12-23 11:14:35 +08:00
onChange={e => onChange(e, record, item.supplierRegisterId)}
>
2021-01-16 11:29:42 +08:00
<Radio value={1}></Radio>~
2020-12-23 11:14:35 +08:00
<Radio value={2}></Radio>
</Radio.Group><br />
<Button type="link" onClick={() => getRemark(record, item.supplierRegisterId)} danger></Button>
2022-03-10 14:24:13 +08:00
<Button hidden={btnAuthority(['ebtp-expert'])} type="link" danger onClick={() => lookFile(record.id, item.supplierRegisterId)}>{showNameT.tb}</Button>
2020-12-23 11:14:35 +08:00
</div>
)
}
},
})
})
2021-01-16 11:29:42 +08:00
setSupplierColumns([...newColumns])
2022-03-10 14:24:13 +08:00
ratingData(category)
}
const lookFile = (id: any, supplierRegisterId: any) => {
getFile(id).then((res) => { // 查看是否有应答文件
if (res.code == 200) {
if (res.data.length > 0) {
window.open("/viewOfTenderDocumentsSecond?id=" + id + "&supplierId=" + supplierRegisterId);
} else {
message.info(`无关联${showNameT.tb}文件`)
}
}
})
2021-01-16 11:29:42 +08:00
}
2022-03-10 14:24:13 +08:00
const ratingData = (category: any) => { // 评分数据
setSpinVisible(true)
totalQualified = []
2021-01-16 11:29:42 +08:00
let query = {
bidEvalId: bidEvalId,
2022-03-10 14:24:13 +08:00
reviewTurnId: reviewTurnId,
reviewType: "1",
assessRoomId: assessRoomId,
category: category,
2021-01-16 11:29:42 +08:00
supplierRegisterIds: supplierId
}
getScoreDetail({ ...query }).then((res) => { // 评分数据
if (res.code == 200) {
2022-03-10 14:24:13 +08:00
// setTypeId(res.data.categoryId) // 设置类别id
setTypeCategory(res.data.category) // 设置类别
setSpinVisible(false)
if (res.data.judgesStatus != '1') {
2021-01-16 11:29:42 +08:00
disabled = true
setIsDisabled(true)
} else {
disabled = false
setIsDisabled(false)
}
setSubId(res.data.id)
2022-03-10 14:24:13 +08:00
setDataSource(createNewArr(res.data.detailList, 'categoryName'))
totalQualified = createNewArr(res.data.detailList, 'categoryName')
} else {
setSpinVisible(false)
2021-01-16 11:29:42 +08:00
}
2022-03-10 14:24:13 +08:00
}).finally(() => {
setSpinVisible(false)
2021-01-16 11:29:42 +08:00
})
2020-12-23 11:14:35 +08:00
}
const getRemark = (val: any, id: any) => { // 备注
if (val.remarks) {
remarkForm.setFieldsValue({ remarks: val.remarks })
} else {
remarkForm.setFieldsValue({ remarks: '' })
}
if (val.detailId) {
2022-03-10 14:24:13 +08:00
setRemarksVal({ 'categoryId': val.categoryId, 'id': val.id, 'supplierRegisterId': id, 'detailId': val.detailId, 'resultValue': val.resultValue, 'remarks': val.remarks })
2020-12-23 11:14:35 +08:00
} else {
2022-03-10 14:24:13 +08:00
setRemarksVal({ 'categoryId': val.categoryId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'resultValue': '', 'remarks': '' })
2020-12-23 11:14:35 +08:00
}
setRemarkVisible(true)
}
const closeRemarks = () => { // 关闭备注
if (!isDisabled) {
let x = false;
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == remarksVal.supplierRegisterId && item.detailId == remarksVal.detailId) {
item.remarks = remarkForm.getFieldsValue().remarks
2022-03-10 14:24:13 +08:00
dataSource.map((item: any) => {
if (remarksVal.detailId == item.id) {
item.scoreMap[remarksVal.supplierRegisterId].remarks = remarkForm.getFieldsValue().remarks
}
})
2020-12-23 11:14:35 +08:00
x = true
}
})
if (!x) {
2022-03-10 14:24:13 +08:00
dataSource.map((item: any) => {
if (remarksVal.detailId) {
if (remarksVal.detailId == item.id && item.scoreMap && item.scoreMap[remarksVal.supplierRegisterId] && item.scoreMap[remarksVal.supplierRegisterId].remarks != remarkForm.getFieldsValue().remarks) {
bidEvalDetailDTOList.push({ 'categoryId': remarksVal.categoryId, 'id': remarksVal.id, 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
item.scoreMap[remarksVal.supplierRegisterId].remarks = remarkForm.getFieldsValue().remarks
} else if (remarksVal.detailId == item.id && remarksVal.id == '') {
bidEvalDetailDTOList.push({ 'categoryId': remarksVal.categoryId, 'id': remarksVal.id, 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
if (item.scoreMap == null) {
item.scoreMap = []
2021-01-16 11:29:42 +08:00
}
2022-03-10 14:24:13 +08:00
item.scoreMap[remarksVal.supplierRegisterId] = { 'categoryId': remarksVal.categoryId, 'id': '', 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': '', 'remarks': remarkForm.getFieldsValue().remarks }
} else if (remarksVal.detailId == item.id) {
bidEvalDetailDTOList.push({ 'categoryId': remarksVal.categoryId, 'id': remarksVal.id, 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
item.scoreMap[remarksVal.supplierRegisterId].remarks = remarkForm.getFieldsValue().remarks
2021-01-16 11:29:42 +08:00
}
2022-03-10 14:24:13 +08:00
} else {
if (remarkForm.getFieldsValue().remarks != '') {
bidEvalDetailDTOList.push({ 'categoryId': remarksVal.categoryId, 'id': '', 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
item.scoreMap[remarksVal.supplierRegisterId] = { 'remarks': remarkForm.getFieldsValue().remarks }
}
}
})
setDataSource([...dataSource])
2020-12-23 11:14:35 +08:00
}
}
setRemarkVisible(false)
}
2021-01-16 11:29:42 +08:00
const getQualified = (val: any) => { // 全部合格
let x = false;
totalQualified.map((item: any) => {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (item.scoreMap && item.scoreMap[supplierId[i]]) {
item.scoreMap[supplierId[i]].resultValue = '1'
bidEvalDetailDTOList.map((value: any) => {
if (value.supplierRegisterId == item.scoreMap[supplierId[i]].supplierRegisterId && value.detailId == item.scoreMap[supplierId[i]].detailId) {
value.resultValue = '1'
x = true
}
})
if (!x) {
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList.push({ 'categoryId': item.scoreMap[supplierId[i]].categoryId, 'id': item.scoreMap[supplierId[i]].id, 'supplierRegisterId': item.scoreMap[supplierId[i]].supplierRegisterId, 'detailId': item.scoreMap[supplierId[i]].detailId, 'resultValue': '1', 'remarks': item.scoreMap[supplierId[i]].remarks });
2021-01-16 11:29:42 +08:00
}
} else {
if (item.scoreMap == null) {
item.scoreMap = []
}
2022-03-10 14:24:13 +08:00
item.scoreMap[supplierId[i]] = { 'categoryId': val.categoryId, 'id': '', 'supplierRegisterId': supplierId[i], 'detailId': val.id, 'resultValue': '1', 'remarks': '' }
bidEvalDetailDTOList.push({ 'categoryId': val.categoryId, 'id': '', 'supplierRegisterId': supplierId[i], 'detailId': val.id, 'resultValue': '1', 'remarks': '' });
2021-01-16 11:29:42 +08:00
}
}
}
})
setDataSource([...totalQualified])
}
2022-03-10 14:24:13 +08:00
const makeQualified = () => { // 确认全部合格
bidEvalDetailDTOList = []
setSpinVisible(true)
let date = {
id: subId,
bidEvalId: bidEvalId,
reviewTurnId: reviewTurnId,
category: typeCategory,
assessRoomId: assessRoomId,
reviewType: '1',
}
submQualified(date).then((res) => {
if (res.code == 200) {
ratingData(typeCategory)
myProcess(typeCategory)
message.success('操作成功!');
setIsModalVisible(false)
} else {
ratingData(typeCategory)
myProcess(typeCategory)
setIsModalVisible(false)
}
}).finally(() => {
setSpinVisible(false)
setIsModalVisible(false)
})
}
2021-01-16 11:29:42 +08:00
const getLock = () => { // 初审解锁
setLockVisible(true)
getMemberInfo(assessRoomId).then((res) => {
let userArr: any = []
if (res.code == 200) {
res.data.map((item: any) => {
userArr.push({ label: item.name, value: item.userId })
})
}
setPlainList(userArr)
})
}
const changeLock = (val: any) => { // 解锁专家
setUnLockArr(val)
}
const handleOk = () => { // 确认解锁
2022-04-01 20:06:34 +08:00
if (unLockArr != '') {
2022-03-10 14:24:13 +08:00
let date = {
bidEvalId: bidEvalId,
judgesStatus: '1',
userIds: unLockArr,
assessRoomId: assessRoomId
2021-01-16 11:29:42 +08:00
}
2022-03-10 14:24:13 +08:00
getUnlock({ ...date }).then((res) => {
if (res.code == 200) {
setLockVisible(false)
message.success('专家解锁成功!')
setCount(count + 1)
}
})
} else {
message.error('请选择需要解锁的专家')
}
2021-01-16 11:29:42 +08:00
}
2020-12-23 11:14:35 +08:00
2021-01-16 11:29:42 +08:00
const gettabList = () => { // tab
let date = {
assessRoomId: assessRoomId,
reviewTurnId: reviewTurnId,
rvwType: reviewType
}
getTabList({ ...date }).then((res) => {
2020-12-23 11:14:35 +08:00
if (res.code == 200) {
2022-03-10 14:24:13 +08:00
res.data.push({ 'name': '初审汇总' })
setDateLength(res.data.length)
setTabList(res.data) // tab数据
supplierTab(res.data[0].category) // 供应商列头
if (res.data.length > 1) {
myProcess(res.data[0].category) // 进度
// setTypeId(res.data[0].id) // 设置类别id
2021-01-16 11:29:42 +08:00
setTypeCategory(res.data[0].category) // 设置类别
2020-12-23 11:14:35 +08:00
}
}
})
2021-01-16 11:29:42 +08:00
}
const finalSubmit = async () => {
if (qualifyNumber < 3) {
2022-03-10 14:24:13 +08:00
form.submit();
} else {
const remarkList = getRemarkList(ref.current)
2022-04-01 20:06:34 +08:00
if (remarkList) {
2022-03-10 14:24:13 +08:00
let submitData = {
reviewStatus: '2',
reviewTurnId: getURLInformation("turnId"),
reviewType: '1',
remarkList: remarkList,
}
await toSubmit(submitData)
}
2021-01-16 11:29:42 +08:00
}
}
2022-03-10 14:24:13 +08:00
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)
setSpinVisible(false)
})
}
//处理汇总表返回的数据
const getRemarkList = (data: any) => {
const List: any[] = []
for (const item of totalSupplierColumns) {
2022-03-10 14:24:13 +08:00
const obj = data[data.length - 1][item?.supplierRegisterId]
2022-04-01 20:06:34 +08:00
if (obj.judgesResult == false) {//判断为不合格情况
if (isEmpty(obj.remarks)) {
message.info(`请填写【${item?.supplierRegisterName}】的不合格原因说明`)
return false;
2022-03-10 14:24:13 +08:00
}
}
if (obj.macConflictStatus && obj.judgesResult) {//mac地址重复供应商选为合格
message.info(`${item?.supplierRegisterName}与其他供应商MAC地址重复不可选为初审合格`);
return false;
}
2022-03-10 14:24:13 +08:00
List.push({
supplierRegisterId: item?.supplierRegisterId,
qualifiedStatus: obj?.judgesResult ? '1' : '2',
remarks: obj?.judgesResult ? null : obj?.remarks,
originalResult: obj?.originalResult ? '1' : '2',
modifyResultStatus: obj?.judgesResult != obj?.originalResult,
2022-03-10 14:24:13 +08:00
})
}
return List
}
2021-01-16 11:29:42 +08:00
let JwtToken = getSessionUserData().userId
const props = { // 初审摘录表导入
name: 'file',
data: {
// reviewTurnId: getURLInformation("turnId"),
assessRoomId: getRoomId(),
reviewType: '1'
},
showUploadList: false,
accept: 'application/vnd.ms-application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
2022-03-10 14:24:13 +08:00
action: '/api/biz-service-ebtp-rsms/v1/abstract/upload',
2021-01-16 11:29:42 +08:00
headers: {
2022-03-10 14:24:13 +08:00
Authorization: getUserToken(),
2021-01-16 11:29:42 +08:00
JwtToken: JwtToken
},
onChange(info: any) {
2022-03-10 14:24:13 +08:00
setSpinVisible(true)
bidEvalDetailDTOList = []
2021-01-16 11:29:42 +08:00
if (info.file.status !== 'uploading') {
}
if (info.file.status === 'done') {
2022-03-10 14:24:13 +08:00
if (info.file.response.code == 200) {
message.success('初审摘录表导入成功');
myProcess(typeCategory)
changePagination(1, typeCategory, totalSupplierColumns)
setSpinVisible(false)
} else {
message.error(info.file.response.message);
myProcess(typeCategory)
changePagination(1, typeCategory, totalSupplierColumns)
setSpinVisible(false)
}
2021-01-16 11:29:42 +08:00
} else if (info.file.status === 'error') {
message.error('初审摘录表导入失败');
2022-03-10 14:24:13 +08:00
setSpinVisible(false)
2021-01-16 11:29:42 +08:00
}
},
};
2022-03-10 14:24:13 +08:00
//radio单选onChange方法
const radioOnChange = (e: any) => {
setRadioValue(e.target.value);
};
//流程单选onChange方法
const processOnChange = (e: any) => {
setProcessValue(e.target.value);
};
2022-03-10 14:24:13 +08:00
//表单提交
const onFinish = async (values: any) => {
let data = {
continueStatus: radioValue
}
if (radioValue == 1) {
data["remarks"] = values.remarks
data["fileId"] = values.fileId
if (isBxOneSecond && qualifyNumber == 1) {//比选一阶段二次项目 只有一家供应商合格
data["operationType"] = 1
data["customizeFlowStatus"] = processValue
} else {
data["operationType"] = 0
}
} else if (radioValue == 0) {
if (isBxOneSecond) {//比选一阶段二次项目
data["operationType"] = 1
data["customizeFlowStatus"] = 0
}
2022-03-10 14:24:13 +08:00
}
const remarkList = getRemarkList(ref.current)
2022-04-01 20:06:34 +08:00
if (remarkList) {
2022-03-10 14:24:13 +08:00
let submitData = {
reviewStatus: '2',
reviewTurnId: getURLInformation("turnId"),
reviewType: '1',
earlyWarn: { ...data },
remarkList: remarkList,
}
await toSubmit(submitData)
}
};
2021-01-16 11:29:42 +08:00
useEffect(() => {
2022-03-10 14:24:13 +08:00
bidEvalDetailDTOList = []
2021-01-16 11:29:42 +08:00
let date = {
reviewTurnId: getURLInformation("turnId"),
reviewType: '1',
}
2022-03-10 14:24:13 +08:00
getEval({ ...date }).then(async (res) => {
if (res?.code == 200) {
2021-01-16 11:29:42 +08:00
assessRoomId = res.data.assessRoomId
reviewTurnId = res.data.reviewTurnId
reviewType = res.data.reviewType
bidEvalId = res.data.id
reviewStatus = res.data.reviewStatus
2022-04-01 20:06:34 +08:00
if (res.data.reviewStatus != 1) {
2022-03-10 14:24:13 +08:00
endProgress = true
setIsEndProgress(true)
} else {
endProgress = false
setIsEndProgress(false)
}
2021-01-16 11:29:42 +08:00
gettabList()
let statusProps = {
assessRoomId: res.data.assessRoomId,
reviewType: 1,
reviewTurnId: getURLInformation("turnId"),
createBy: 101
}
//初始化汇总表显示状态
2022-03-10 14:24:13 +08:00
await isStatus(statusProps).then(async res => {
if (res?.code == 200) {
2021-01-16 11:29:42 +08:00
setTableDisplay(res.data)
2022-03-10 14:24:13 +08:00
//初始化三家供应商判断数据
await checkShowData(assessRoomId, getURLInformation('nodeId')).then(response => {
2022-03-10 14:24:13 +08:00
if (response?.code == 200) {
setUploadId(response?.data?.fileId)
setRadioValue(response?.data?.continueStatus == undefined ? 1 : response?.data?.continueStatus)
setProcessValue(response?.data?.customizeFlowStatus == undefined ? 1 : response?.data?.customizeFlowStatus);
setIsBxOneSecond(response?.data?.bxOneSecondProjectStatus);
setIsNodeEnd(response?.data?.nodeEndStatus);
2022-03-10 14:24:13 +08:00
form.setFieldsValue({
remarks: response.data?.remarks
})
}
})
2021-01-16 11:29:42 +08:00
}
})
}
})
2022-03-10 14:24:13 +08:00
}, [count]);
2020-12-23 11:14:35 +08:00
/**
*
*/
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();
}
}
})
}
}
2020-12-23 11:14:35 +08:00
return (
<>
2022-03-10 14:24:13 +08:00
<Spin spinning={spinVisible || submitLoading}>
<div className="bidContent pl0">
2021-01-16 11:29:42 +08:00
<div>
2022-03-10 14:24:13 +08:00
{
dateLength > 1 && !isDisabled && !isEndProgress ?
<div hidden={btnAuthority(['ebtp-expert'])}>
<Space>
<FileDown apiUrl={`/api/biz-service-ebtp-rsms/v1/abstract/getJuryAbstracet?reviewTurnId=${getURLInformation("turnId")}&reviewType=1`} fileName='11' type='xlsx' method='GET' btnName='初审摘录表导出' />
<Upload {...props}>
<Button type="primary"></Button>
</Upload>
</Space>
</div> : null
}
2021-01-16 11:29:42 +08:00
</div>
2022-03-10 14:24:13 +08:00
<Tabs defaultActiveKey="0" className="tab-mb10" onChange={getTabId}>
2020-12-23 11:14:35 +08:00
{
tabList.map((item: any, index: any) => {
if (item.name == '初审汇总') {
return (
<TabPane tab={item.name} key={index}>
2022-03-10 14:24:13 +08:00
{reviewStatus == 2 || reviewStatus == 3 ? null : (
2021-01-16 11:29:42 +08:00
<div>
{tableDisplay == true ? (
<Button hidden={btnAuthority(['ebtp-expert'])} type="primary" size="small" className="fr ml10 mb10" onClick={() => verificationRiskControl()} loading={submitLoading}></Button>
2021-01-16 11:29:42 +08:00
) : null}
2022-03-10 14:24:13 +08:00
<Button hidden={btnAuthority(['ebtp-expert'])} onClick={getLock} type="primary" size="small" className="fr mb10"></Button>
2021-01-16 11:29:42 +08:00
</div>
)}
{tableDisplay == true ? (
<>
<p className="red mb0"></p>
2022-03-10 14:24:13 +08:00
<BidPreliminarySummary readOnly={reviewStatus == 2 || reviewStatus == 3} summaryRef={ref} reload={count} totalSupplier={totalSupplierColumns} onSubmit={(value) => {
setQualifyNumber(value);
}} isBxOneSecond={isBxOneSecond} isNodeEnd={isNodeEnd} />
{qualifyNumber < 3 ? (
2022-03-10 14:24:13 +08:00
<div>
<div style={{ margin: '8px 0px' }}>
<span style={{ color: '#b30000' }}>{qualifyNumber == 1 && isBxOneSecond ? '合格供应商仅一家,是否继续进行' : '合格供应商不足三家,是否继续进行详审'}</span>
<Radio.Group onChange={radioOnChange} value={radioValue} disabled={reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)}>
2022-03-10 14:24:13 +08:00
<Radio value={1}></Radio>
<Radio value={0}></Radio>
</Radio.Group>
</div>
{qualifyNumber == 1 && isBxOneSecond && radioValue == 1 && <div style={{ margin: '8px 70px' }}>
<span style={{ color: '#b30000' }}></span>
<Radio.Group onChange={processOnChange} value={processValue} disabled={reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)}>
<Radio value={1}></Radio>
<Radio value={0}></Radio>
</Radio.Group>
</div>}
2022-03-10 14:24:13 +08:00
<Form
{...layout}
form={form}
name="control-hooks"
onFinish={onFinish}
validateMessages={validateMessages}
>
<Form.Item
name="remarks"
label="说明"
rules={[{ required: !(reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)) && radioValue == 1 }]}
2022-03-10 14:24:13 +08:00
hidden={radioValue == 0}
>
<TextArea maxLength={500} disabled={reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)} bordered={!(reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd))} placeholder="请填写说明" rows={3} autoSize={reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)} />
2022-03-10 14:24:13 +08:00
</Form.Item>
{reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd) ? (
2022-03-10 14:24:13 +08:00
<Form.Item
name="fileId"
label="说明文件"
hidden={radioValue == 0}
>
2022-04-01 20:06:34 +08:00
<ExtendUpload bid={uploadId} uploadProps={{ disabled: true }} />
2022-03-10 14:24:13 +08:00
</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}
2021-01-16 11:29:42 +08:00
</>
) : (
2022-03-10 14:24:13 +08:00
<>
<p className="red"></p>
<BidPreliminarySpeed reload={count} />
</>
)}
2020-12-23 11:14:35 +08:00
</TabPane>
)
} else {
return (
<TabPane tab={item.name} key={index}>
2022-03-10 14:24:13 +08:00
<div>
<div className="mb10">
2020-12-23 11:14:35 +08:00
<div className="process"><Progress percent={process} /></div>
<div className="block">
<Space>
{
2022-03-10 14:24:13 +08:00
isDisabled || isEndProgress ? null : <Button hidden={btnAuthority(['ebtp-expert'])} onClick={() => setIsModalVisible(true)} type="primary"></Button>
2020-12-23 11:14:35 +08:00
}
{
2022-03-10 14:24:13 +08:00
isDisabled || isEndProgress ? null : <Button hidden={btnAuthority(['ebtp-expert'])} onClick={() => saveSorce()} type="primary"></Button>
2020-12-23 11:14:35 +08:00
}
2022-03-10 14:24:13 +08:00
{
(process > 100 || process == 100) && !isDisabled && !isEndProgress ? <Button hidden={btnAuthority(['ebtp-expert'])} onClick={() => submit()} type="primary"></Button> : null
}
<Button onClick={openDetail} type="primary"></Button>
2020-12-23 11:14:35 +08:00
</Space>
</div>
</div>
<div>
<Pagination
2022-03-10 14:24:13 +08:00
current={current}
2020-12-23 11:14:35 +08:00
total={total}
2021-01-16 11:29:42 +08:00
defaultPageSize={3}
2020-12-23 11:14:35 +08:00
showSizeChanger={false}
2022-03-10 14:24:13 +08:00
onChange={(e) => changePagination(e, typeCategory, totalSupplierColumns)}
size="small"
className="mb8"
2020-12-23 11:14:35 +08:00
/>
<Table pagination={false} columns={supplierColumns} dataSource={dataSource} />
</div>
</div>
</TabPane>
)
}
})
}
</Tabs>
</div>
<Modal // 初审详情
2021-01-16 11:29:42 +08:00
width={1000}
2020-12-23 11:14:35 +08:00
title="初审详情"
visible={detailVisible}
onCancel={() => setDetailVisible(false)}
footer={null}
2022-03-10 14:24:13 +08:00
className="tableTop"
centered
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
2020-12-23 11:14:35 +08:00
>
<Menu
onClick={handleClick}
style={{ width: 180 }}
defaultSelectedKeys={['1']}
defaultOpenKeys={['sub1']}
mode="inline"
className="left-menu"
>
<SubMenu key="sub1" title="评审记录表">
<Menu.Item key="1"></Menu.Item>
<Menu.Item key="2"></Menu.Item>
</SubMenu>
</Menu>
2021-01-16 11:29:42 +08:00
{preliminaryDetails}
2020-12-23 11:14:35 +08:00
</Modal>
<Modal // 初审解锁
title="初审解锁"
width={600}
visible={lockVisible}
onCancel={() => setLockVisible(false)}
2021-01-16 11:29:42 +08:00
onOk={handleOk}
2022-03-10 14:24:13 +08:00
centered
2020-12-23 11:14:35 +08:00
>
<label></label>
<Checkbox.Group options={plainList} onChange={changeLock} />
</Modal>
<Modal // 备注
title="备注"
width={600}
visible={remarkVisible}
2022-03-10 14:24:13 +08:00
destroyOnClose
onCancel={() => setRemarkVisible(false)}
2021-01-16 11:29:42 +08:00
onOk={() => closeRemarks()}
2022-03-10 14:24:13 +08:00
centered
2020-12-23 11:14:35 +08:00
>
<Form form={remarkForm}>
<Form.Item name='remarks'>
2022-03-10 14:24:13 +08:00
<TextArea maxLength={500} disabled={isDisabled || isEndProgress} rows={4} />
2020-12-23 11:14:35 +08:00
</Form.Item>
</Form>
</Modal>
2022-03-10 14:24:13 +08:00
<Modal title="全部合格" visible={isModalVisible} onOk={() => makeQualified()} onCancel={() => setIsModalVisible(false)}>
<p></p>
</Modal>
{/**风控组件 */}
{riskVisible && <RiskPreventionSoft
modalVisible={riskVisible}
onCancel={() => {
setRiskVisible(false);
setRiskData([]);
}}
onSubmit={() => finalSubmit()}
data={riskData}
/>}
2020-12-23 11:14:35 +08:00
</Spin>
</>
)
}
2021-01-16 11:29:42 +08:00
export default Index