9.7 还原重评,多轮招募

This commit is contained in:
jl-zhoujl2
2022-09-07 17:07:08 +08:00
parent e0f3fd574b
commit 5710e80cde
2 changed files with 229 additions and 161 deletions

View File

@ -12,6 +12,10 @@ import { UploadOutlined } from '@ant-design/icons';
import { btnAuthority } from '@/utils/authority';
import RiskPrevention from '@/utils/RiskPrevention';
import { history } from 'umi';
import { downloadFile } from '@/utils/DownloadUtils';
import ExpertPhotoUpload from '@/components/ElecBidEvaluation/ExpertPhotoUpload';
import { getUserPhoto } from '@/pages/Tender/ProjectManager/JudgingPanel/List/service';
import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointment';
const JudgingPanel: React.FC<{}> = () => {
const modalHeight = window.innerHeight * 96 / 100;
@ -40,6 +44,11 @@ const JudgingPanel: React.FC<{}> = () => {
const [manNum, manNumSet] = useState<number>(5);//人数
const [riskVisible, setRiskVisible] = useState<boolean>(false);//风控弹窗 2021.9.7 zhoujianlong
const [riskData, setRiskData] = useState<any[]>([]);//风控数据 2021.9.7 zhoujianlong
const [selectEvalVisible, setSelectEvalVisible] = useState<boolean>(false);//电子评标室-评标室预约选择 2022.8.26 zhoujianlong
const [selectEvalDisabled, setSelectEvalDisabled] = useState<boolean>(true);//电子评标室-评标室预约选择不可选状态控制 true-不可填写 false-可填写 2022.8.26 zhoujianlong
const [selectEvalData, setSelectEvalData] = useState<any>();//电子评标室-评标室预约选择-数据 2022.8.26 zhoujianlong
// const [userPhotoId, setUserPhotoId] = useState<string>("");//电子评标室-录入外部专家-相片id 2022.8.29 zhoujianlong
const [appoType, setAppoType] = useState<string>("0");//电子评标室-预约框状态 2022.8.29 zhoujianlong
function getShouName() {
const method = getDefId();
let num = 3;
@ -137,6 +146,11 @@ const JudgingPanel: React.FC<{}> = () => {
memberCountSet(memberCount + 1);
setMemberVis(true);
}}></Button>
{record.elecEvalRoomReserve && (record.elecEvalRoomReserve.status == -1 || record.elecEvalRoomReserve.status == 0) && <Button type='text' onClick={() => {
setSelectEvalData(record.elecEvalRoomReserve)
setAppoType("1");
setSelectEvalVisible(true);
}}></Button>}
</>
);
} else {
@ -244,14 +258,19 @@ const JudgingPanel: React.FC<{}> = () => {
}
useEffect(() => {//给表单赋值
if (updateData?.reserveStatus == 1) {
setSelectEvalDisabled(false);
}
form.setFieldsValue({
juryType: updateData != undefined ? updateData.juryType : null,
representativeNumber: updateData != undefined ? updateData.representativeNumber : null,
expertNumber: updateData != undefined ? updateData.expertNumber : null,
startTime: updateData != undefined ? moment(updateData.startTime, 'yyyy-MM-DD HH:mm:ss') : null,
endTime: updateData != undefined ? moment(updateData.endTime, 'yyyy-MM-DD HH:mm:ss') : null,
startTime: updateData != undefined ? updateData.reserveStatus == 1 ? moment(updateData.elecEvalRoomReserve.reserveStartDate, 'yyyy-MM-DD HH:mm:ss') : moment(updateData.startTime, 'yyyy-MM-DD HH:mm:ss') : null,
endTime: updateData != undefined ? updateData.reserveStatus == 1 ? moment(updateData.elecEvalRoomReserve.reserveEndDate, 'yyyy-MM-DD HH:mm:ss') : moment(updateData.endTime, 'yyyy-MM-DD HH:mm:ss') : null,
evalLocation: updateData != undefined ? updateData.evalLocation : null,
description: updateData != undefined ? updateData.description : null,
reserveBy: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveBy : null,
reserveContactNumber: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveContactNumber : null,
})
}, [updateData]);
@ -359,12 +378,20 @@ const JudgingPanel: React.FC<{}> = () => {
if (verify) {
verify = checkMan(count, parseInt(formVals.expertNumber));
}
const st = formVals.startTime.format('yyyy-MM-DD HH:mm:ss');
const et = formVals.endTime.format('yyyy-MM-DD HH:mm:ss');
const st = moment(formVals.startTime).format('yyyy-MM-DD HH:mm:ss');
const et = moment(formVals.endTime).format('yyyy-MM-DD HH:mm:ss');
if (st > et || st == et) {//校验时间
verify = false;
message.error("预计开始时间应早于预计结束时间")
}
if (selectEvalData?.reserveStatus == "1") {//预约了评标室
const selectStartTime = moment(selectEvalData.reserveStartDate).format('yyyy-MM-DD HH:mm:ss');
const selectEndTime = moment(selectEvalData.reserveEndDate).format('yyyy-MM-DD HH:mm:ss');
if (selectStartTime != st || selectEndTime != et) {
verify = false;
message.error("预约时间需与选择评标室中的预约时间相等");
}
}
if (verify) {
activeKeySet('2');
}
@ -634,8 +661,29 @@ const JudgingPanel: React.FC<{}> = () => {
>
<Input style={{ width: "90%" }} disabled={disabled} />
</FormItem></Col>
</Row>
<Row>
<Col span={12}>
<Form.Item label="评审地点" style={{ marginBottom: 0 }} required>
<FormItem
name="evalLocation"
rules={[...rule('评审地点'), { type: 'string', message: '请输入正确内容' }, { max: 100, message: '内容超长' }]}
style={{ display: 'inline-block', width: 'calc(60% - 8px)' }}
>
<Input style={{ width: "100%" }} disabled={disabled || !selectEvalDisabled} />
</FormItem>
<Form.Item
style={{ display: 'inline-block', width: 'calc(40% - 8px)', margin: '0 8px' }}
>
<Button type='primary' onClick={() => selectEvalClick()} disabled={disabled}></Button>
</Form.Item>
</Form.Item>
</Col>
<Col span={12}><FormItem
name="description"
label="申请要求"
rules={[{ type: 'string', message: '请输入正确内容' }, { max: 100, message: '内容超长' }]}
>
<Input style={{ width: "90%" }} disabled={disabled} />
</FormItem></Col>
<Col span={12}><FormItem
name="startTime"
label="预计评审开始时间"
@ -647,6 +695,7 @@ const JudgingPanel: React.FC<{}> = () => {
showTime={{ defaultValue: moment('00:00:00', 'HH:mm:ss') }}
disabled={disabled}
showNow={false}
style={{ width: "90%" }}
/>
</FormItem></Col>
<Col span={12}><FormItem
@ -660,22 +709,22 @@ const JudgingPanel: React.FC<{}> = () => {
showTime={{ defaultValue: moment('00:00:00', 'HH:mm:ss') }}
disabled={disabled}
showNow={false}
style={{ width: "90%" }}
/>
</FormItem></Col>
</Row>
<Row>
<Col span={12}><FormItem
name="evalLocation"
label="评审地点"
rules={rule('评审地点')}
name="reserveBy"
label="预约人"
rules={[{ required: !selectEvalDisabled, message: `请录入预约人` }, { max: 100, message: '内容超长' }]}
>
<Input style={{ width: "90%" }} disabled={disabled} />
<Input style={{ width: "90%" }} disabled={disabled || selectEvalDisabled} />
</FormItem></Col>
<Col span={12}><FormItem
name="description"
label="申请要求"
name="reserveContactNumber"
label="预约人联系方式"
rules={[{ required: !selectEvalDisabled, message: `请录入预约人联系方式` }, { max: 100, message: '内容超长' }]}
>
<Input style={{ width: "90%" }} disabled={disabled} />
<Input type="number" style={{ width: "90%" }} disabled={disabled || selectEvalDisabled} />
</FormItem></Col>
</Row>
</Form>
@ -754,7 +803,7 @@ const JudgingPanel: React.FC<{}> = () => {
// const formValsCq = formCq.getFieldsValue();
formVals.startTime != undefined ? formVals.startTime = formVals.startTime.format('yyyy-MM-DD HH:mm:ss') : null;
formVals.endTime != undefined ? formVals.endTime = formVals.endTime.format('yyyy-MM-DD HH:mm:ss') : null;
let params = { ...formVals, projectId: proId, juryCategoryVOList: cqData, roomId: roomId, juryRoomList: juryRoomList, };
let params = { ...formVals, projectId: proId, juryCategoryVOList: cqData, roomId: roomId, juryRoomList: juryRoomList, reserveStatus: 0 };
if (updateData != undefined) {
params['id'] = updateData.id;
}
@ -766,6 +815,16 @@ const JudgingPanel: React.FC<{}> = () => {
pass = false;
message.error(`抽取数量不等于设置的专家数量(${count})`);
}
if (selectEvalData?.reserveStatus == "1") {//预约了评标室
params.reserveStatus = 1;
const evalRoomReserveVO = {
...selectEvalData,
reserveStartDate: params.startTime,
reserveEndDate: params.endTime,
reserveSectionList: juryRoomList.map((item: any) => ({ sectionId: item.sectionId, assessRoomId: item.roomId })),
}
params["evalRoomReserveVO"] = evalRoomReserveVO;
}
if (pass) {
const success = await saveG(params);
if (success) {
@ -827,6 +886,16 @@ const JudgingPanel: React.FC<{}> = () => {
{ title: '工作单位', dataIndex: 'workunit', },
{ title: '通知状态', dataIndex: 'status', },
{ title: '通知结果备注', dataIndex: 'remark', },
{
title: '照片',
dataIndex: 'faceId',
render: (_, record) => {
if (record.faceId) {
return <a onClick={() => downloadFile({ uid: record.faceId })}>{record.name}</a>
};
return '-';
}
},
{
title: '操作', dataIndex: 'option', width: 180,
valueType: 'option',
@ -1148,7 +1217,7 @@ const JudgingPanel: React.FC<{}> = () => {
onClose={() => {
setAdd(false);
changeBtnSet(true);
formMem.resetFields();
// formMem.resetFields();
}}
visible={add}
getContainer={false}
@ -1215,6 +1284,19 @@ const JudgingPanel: React.FC<{}> = () => {
>
<Input style={{ width: "60%" }} />
</FormItem></Col></Row>
<Form.Item label="照片" style={{ marginBottom: 0 }}>
<Form.Item
name="faceId"
style={{ display: 'inline-block', width: '60%' }}
>
<ExpertPhotoUpload maxSize={60} />
</Form.Item>
<Form.Item
style={{ display: 'inline-block', width: '40%', position: "relative", right: '24%' }}
>
<Button type='primary' onClick={() => getExpertPhoto()}></Button>
</Form.Item>
</Form.Item>
{/* <Row><Col span={24}><FormItem
name="type"
label="通知方式"
@ -1536,6 +1618,41 @@ const JudgingPanel: React.FC<{}> = () => {
memberCountSet(memberCount + 1);
}
//评标室预约回调
const returnEvalData = (value: any) => {
setSelectEvalVisible(false);
setSelectEvalDisabled(false);
setSelectEvalData(value);
form.setFieldsValue({
startTime: value.reserveStartDate,
endTime: value.reserveEndDate,
evalLocation: value.areaAddress,
reserveBy: value.reserveBy,
reserveContactNumber: value.reserveContactNumber,
})
}
//评标室预约-选择评标室
const selectEvalClick = () => {
setAppoType("0");
setSelectEvalVisible(true);
}
//录入外部专家-获取照片
const getExpertPhoto = () => {
formMem.validateFields(["certificate"]).then(value => {
getUserPhoto(value.certificate).then(res => {//获取照片
if (res?.code == 200) {
const data = res?.data;
if (data) {
formMem.setFieldsValue({ faceId: data });
message.info("获取专家照片成功");
} else {
message.info("当前专家无照片,请上传");
}
}
})
})
}
return (
<div className='bgCWhite' style={{ padding: '24px' }}>
<Spin spinning={spin}>
@ -1546,6 +1663,7 @@ const JudgingPanel: React.FC<{}> = () => {
setModalVis(true);
// form.resetFields();
reset();
setSelectEvalData(null);
disabledSet(false); readOnlySet(false);
}}></Button>
<Button style={{ marginLeft: '10px' }} onClick={() => { history.push(getRoomReturnURL()) }}></Button>
@ -1607,6 +1725,8 @@ const JudgingPanel: React.FC<{}> = () => {
}}
data={riskData}
/>}
{/**电子评标室-评标室预约选择 */}
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} type={appoType} reload={() => actionRef.current?.reload()} />
</div>
)
}