Merge branch '20220802-评标室预约情况' into 'release_electronic_bid_evaluation_room'

9.1 评标室预约情况

See merge request eshop/fe_service_ebtp_frontend!273
This commit is contained in:
周建龙
2022-09-01 13:16:27 +08:00
10 changed files with 825 additions and 134 deletions

View File

@ -1,10 +1,11 @@
import { echoDateTimeFormatter, saveDateTimeFormatter } from '@/utils/DateUtils';
import ExtendUpload from '@/utils/ExtendUpload';
import { getProMethod } from '@/utils/session';
import { DatePicker, Form, Input, message, Modal, Radio, Spin } from 'antd';
import { Button, DatePicker, Form, Input, message, Modal, Radio, Spin } from 'antd';
import React, { useEffect, useState } from 'react';
import moment from 'moment';
import { isEmpty } from '@/utils/CommonUtils';
import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointment';
interface AddEvaluationItemsProps {
title?: string;
modalVisible?: boolean;
@ -46,6 +47,12 @@ const AddEvaluationItems: React.FC<AddEvaluationItemsProps> = (props) => {
const [sectionType, setSectionType] = useState<any>('评审');
//loading
const [saveLoading, setSaveLoading] = useState<boolean>(false);
//电子评标室-评标室预约选择 2022.8.26 zhoujianlong
const [selectEvalVisible, setSelectEvalVisible] = useState<boolean>(false);
//电子评标室-评标室预约选择不可选状态控制 true-不可填写 false-可填写 2022.8.26 zhoujianlong
const [selectEvalDisabled, setSelectEvalDisabled] = useState<boolean>(true);
//电子评标室-评标室预约选择-数据 2022.8.26 zhoujianlong
const [selectEvalData, setSelectEvalData] = useState<any>();
useEffect(() => {
//名称确定
if (MethodDict == 'procurement_mode_1' || MethodDict == 'procurement_mode_2') {
@ -101,99 +108,144 @@ const AddEvaluationItems: React.FC<AddEvaluationItemsProps> = (props) => {
form.submit();
};
//评标室预约回调
const returnEvalData = (value: any) => {
console.log('value', value)
setSelectEvalVisible(false);
setSelectEvalDisabled(false);
setSelectEvalData(value);
form.setFieldsValue({
evaluationStartTime: value.reserveStartDate,
evaluationEndTime: value.reserveEndDate,
evaluationPlace: value.areaAddress,
reserveBy: value.reserveBy,
reserveContactNumber: value.reserveContactNumber,
})
}
//评标室预约-选择评标室
const selectEvalClick = () => {
setSelectEvalVisible(true);
}
return (
<Modal
destroyOnClose
title={title}
visible={modalVisible}
onOk={() => onSubmit()}
onCancel={() => {
// setFileListData([]);
onCancel();
}}
width={'60%'}
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
centered
okText="保存"
cancelText="返回"
confirmLoading={saveLoading}
>
<Spin spinning={saveLoading} delay={300}>
<Form
{...layout}
name="basic"
form={form}
initialValues={{ remember: true }}
validateMessages={validateMessages}
onFinish={onFinish}
preserve={false}
>
<Form.Item label={`${sectionName}名称`} name="bidSectName">
<Input bordered={false} readOnly />
</Form.Item>
<Form.Item label={`重新${sectionType}原因`} name="reason" rules={[{ required: true }, { max: 500, message: "最大不能超过500字" }]}>
<TextArea rows={4} maxLength={1000} placeholder={`请填写重新${sectionType}原因`} />
</Form.Item>
<Form.Item
label={`预计重新${sectionType}开始时间`}
name="evaluationStartTime"
rules={[{ required: true }]}
<>
<Modal
destroyOnClose
title={title}
visible={modalVisible}
onOk={() => onSubmit()}
onCancel={() => {
// setFileListData([]);
onCancel();
}}
width={'60%'}
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
centered
okText="保存"
cancelText="返回"
confirmLoading={saveLoading}
>
<Spin spinning={saveLoading} delay={300}>
<Form
{...layout}
name="basic"
form={form}
initialValues={{ remember: true }}
validateMessages={validateMessages}
onFinish={onFinish}
preserve={false}
>
<DatePicker
placeholder="请填写开始时间"
disabledDate={(current) => current && current < moment().startOf('day')}
format={'yyyy-MM-DD HH:mm'}
style={{ width: '100%' }}
showNow={false}
showTime={{ defaultValue: moment().startOf('minute') }}
/>
</Form.Item>
<Form.Item
label={`预计重新${sectionType}结束时间`}
name="evaluationEndTime"
rules={[{ required: true }]}
>
<DatePicker
placeholder="请填写结束时间"
format={'yyyy-MM-DD HH:mm'}
style={{ width: '100%' }}
showNow={false}
showTime={{ defaultValue: moment().startOf('minute') }}
/>
</Form.Item>
<Form.Item
label={`重新${sectionType}地点`}
name="evaluationPlace"
rules={[{ required: true }, { max: 100, message: "最大不能超过100字" }]}
>
<Input placeholder={`请填写重新${sectionType}地点`} maxLength={200} />
</Form.Item>
<Form.Item
label={`${sectionType}专家是否与上次一致`}
name="isAgreement"
rules={[{ required: true }]}
>
<Radio.Group options={options} />
</Form.Item>
<Form.Item
label="说明文件"
name="uploadFileId"
rules={[{ required: true, message: '请上传说明文件' }]}
extra="最多上传一个文件每个最大30MB"
>
<ExtendUpload bid={uploadId} maxCount={1} maxSize={30}>
</ExtendUpload>
</Form.Item>
<Form.Item label="id" name="id" hidden>
<Input />
</Form.Item>
<Form.Item label="sectionId" name="sectionId" hidden>
<Input />
</Form.Item>
</Form>
</Spin>
</Modal>
<Form.Item label={`${sectionName}名称`} name="bidSectName">
<Input bordered={false} readOnly />
</Form.Item>
<Form.Item label={`重新${sectionType}原因`} name="reason" rules={[{ required: true }, { max: 500, message: "最大不能超过500字" }]}>
<TextArea rows={4} maxLength={1000} placeholder={`请填写重新${sectionType}原因`} />
</Form.Item>
<Form.Item label={`重新${sectionType}地点`} style={{ marginBottom: 0 }} required>
<Form.Item
name="evaluationPlace"
rules={[{ required: true }, { max: 100, message: "最大不能超过100字" }]}
style={{ display: 'inline-block', width: 'calc(60% - 8px)' }}
>
<Input placeholder={`请填写重新${sectionType}地点`} maxLength={200} />
</Form.Item>
<Form.Item
style={{ display: 'inline-block', width: 'calc(40% - 8px)', margin: '0 8px' }}
>
<Button type='primary' onClick={() => selectEvalClick()}></Button>
</Form.Item>
</Form.Item>
<Form.Item
label={`预计重新${sectionType}开始时间`}
name="evaluationStartTime"
rules={[{ required: true }]}
>
<DatePicker
placeholder="请填写开始时间"
disabledDate={(current) => current && current < moment().startOf('day')}
format={'yyyy-MM-DD HH:mm'}
style={{ width: '100%' }}
showNow={false}
showTime={{ defaultValue: moment().startOf('minute') }}
/>
</Form.Item>
<Form.Item
label={`预计重新${sectionType}结束时间`}
name="evaluationEndTime"
rules={[{ required: true }]}
>
<DatePicker
placeholder="请填写结束时间"
format={'yyyy-MM-DD HH:mm'}
style={{ width: '100%' }}
showNow={false}
showTime={{ defaultValue: moment().startOf('minute') }}
/>
</Form.Item>
<Form.Item
name="reserveBy"
label="预约人"
rules={[{ required: !selectEvalDisabled, message: `请录入预约人` }, { max: 100, message: '内容超长' }]}
>
<Input disabled={selectEvalDisabled} />
</Form.Item>
<Form.Item
name="reserveContactNumber"
label="预约人联系方式"
rules={[{ required: !selectEvalDisabled, message: `请录入预约人联系方式` }, { max: 100, message: '内容超长' }]}
>
<Input type="number" disabled={selectEvalDisabled} />
</Form.Item>
<Form.Item
label={`${sectionType}专家是否与上次一致`}
name="isAgreement"
rules={[{ required: true }]}
>
<Radio.Group options={options} />
</Form.Item>
<Form.Item
label="说明文件"
name="uploadFileId"
rules={[{ required: true, message: '请上传说明文件' }]}
extra="最多上传一个文件每个最大30MB"
>
<ExtendUpload bid={uploadId} maxCount={1} maxSize={30}>
</ExtendUpload>
</Form.Item>
<Form.Item label="id" name="id" hidden>
<Input />
</Form.Item>
<Form.Item label="sectionId" name="sectionId" hidden>
<Input />
</Form.Item>
</Form>
</Spin>
</Modal>
{/**电子评标室-评标室预约选择 */}
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} />
</>
);
};
export default AddEvaluationItems;