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';
|
2022-08-17 15:54:23 +08:00
|
|
|
|
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';
|
2022-05-09 15:03:18 +08:00
|
|
|
|
import MACAddressPrompt from '../../BidControl/BidControlManager/components/MACAddressPrompt';
|
2022-08-17 15:54:23 +08:00
|
|
|
|
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-08-17 15:54:23 +08:00
|
|
|
|
//风控弹窗 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>();
|
2022-05-25 14:50:03 +08:00
|
|
|
|
//比选一阶段二次项目自定义评审流程单选数值存储
|
|
|
|
|
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-05-25 14:50:03 +08:00
|
|
|
|
|
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)
|
2023-06-25 16:30:42 +08:00
|
|
|
|
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({
|
2022-05-09 15:03:18 +08:00
|
|
|
|
title: (
|
|
|
|
|
<>
|
|
|
|
|
{item.supplierRegisterName}
|
2022-05-17 10:02:33 +08:00
|
|
|
|
{item.macConflictStatus && <MACAddressPrompt type='score' />}
|
2022-05-09 15:03:18 +08:00
|
|
|
|
</>
|
|
|
|
|
),
|
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 () => {
|
2022-05-25 14:50:03 +08:00
|
|
|
|
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[] = []
|
2022-05-17 10:02:33 +08:00
|
|
|
|
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)) {
|
2022-05-17 10:02:33 +08:00
|
|
|
|
message.info(`请填写【${item?.supplierRegisterName}】的不合格原因说明`)
|
|
|
|
|
return false;
|
2022-03-10 14:24:13 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2022-05-17 10:02:33 +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,
|
2022-05-09 15:03:18 +08:00
|
|
|
|
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);
|
|
|
|
|
};
|
2022-05-25 14:50:03 +08:00
|
|
|
|
//流程单选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
|
2022-05-25 14:50:03 +08:00
|
|
|
|
if (isBxOneSecond && qualifyNumber == 1) {//比选一阶段二次项目 只有一家供应商合格
|
|
|
|
|
data["operationType"] = 1
|
|
|
|
|
data["customizeFlowStatus"] = processValue
|
|
|
|
|
} else {
|
|
|
|
|
data["operationType"] = 0
|
|
|
|
|
}
|
2023-03-27 10:09:58 +08:00
|
|
|
|
} 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
|
|
|
|
//初始化三家供应商判断数据
|
2022-05-25 14:50:03 +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)
|
2022-05-25 14:50:03 +08:00
|
|
|
|
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
|
|
|
|
|
2022-10-27 13:50:42 +08:00
|
|
|
|
/**
|
2022-08-17 15:54:23 +08:00
|
|
|
|
* 风控中心校验
|
|
|
|
|
*/
|
2022-10-27 13:50:42 +08:00
|
|
|
|
const verificationRiskControl = () => {
|
|
|
|
|
const remarkList = getRemarkList(ref.current);
|
|
|
|
|
if (remarkList) {
|
|
|
|
|
let submitData = {
|
|
|
|
|
reviewStatus: '2',
|
|
|
|
|
reviewTurnId: getURLInformation("turnId"),
|
|
|
|
|
reviewType: '1',
|
|
|
|
|
remarkList: remarkList,
|
2022-08-17 15:54:23 +08:00
|
|
|
|
}
|
2022-10-27 13:50:42 +08:00
|
|
|
|
beforeRiskControl(submitData).then(res => {
|
|
|
|
|
if (res?.code == 200) {
|
|
|
|
|
if (res?.data.length > 0) {
|
|
|
|
|
setRiskData(res?.data);
|
|
|
|
|
setRiskVisible(true);
|
|
|
|
|
} else {
|
|
|
|
|
finalSubmit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
2022-08-17 15:54:23 +08:00
|
|
|
|
}
|
2022-10-27 13:50:42 +08:00
|
|
|
|
}
|
2022-08-17 15:54:23 +08:00
|
|
|
|
|
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 ? (
|
2022-08-17 15:54:23 +08:00
|
|
|
|
<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) => {
|
2022-05-25 14:50:03 +08:00
|
|
|
|
setQualifyNumber(value);
|
|
|
|
|
}} isBxOneSecond={isBxOneSecond} isNodeEnd={isNodeEnd} />
|
|
|
|
|
{qualifyNumber < 3 ? (
|
2022-03-10 14:24:13 +08:00
|
|
|
|
<div>
|
|
|
|
|
<div style={{ margin: '8px 0px' }}>
|
2022-05-25 14:50:03 +08:00
|
|
|
|
<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>
|
2022-05-25 14:50:03 +08:00
|
|
|
|
{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="说明"
|
2022-05-25 14:50:03 +08:00
|
|
|
|
rules={[{ required: !(reviewStatus == 2 || reviewStatus == 3 || (qualifyNumber == 1 && isBxOneSecond && isNodeEnd)) && radioValue == 1 }]}
|
2022-03-10 14:24:13 +08:00
|
|
|
|
hidden={radioValue == 0}
|
|
|
|
|
>
|
2022-05-25 14:50:03 +08:00
|
|
|
|
<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>
|
2022-05-25 14:50:03 +08:00
|
|
|
|
{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>
|
2022-08-17 15:54:23 +08:00
|
|
|
|
{/**风控组件 */}
|
|
|
|
|
{riskVisible && <RiskPreventionSoft
|
2022-10-27 13:50:42 +08:00
|
|
|
|
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
|