diff --git a/src/components/ElecBidEvaluation/BidEvalAppointment.tsx b/src/components/ElecBidEvaluation/BidEvalAppointment.tsx index 9066099..e6228eb 100644 --- a/src/components/ElecBidEvaluation/BidEvalAppointment.tsx +++ b/src/components/ElecBidEvaluation/BidEvalAppointment.tsx @@ -1,16 +1,19 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Col, DatePicker, Form, Input, message, Modal, Row } from 'antd'; +import { Col, DatePicker, Descriptions, Form, Input, message, Modal, Row } from 'antd'; import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; -import { getBidEvalRoom } from './service'; +import { getBidEvalRoom, saveAppointmentEdit } from './service'; import { dateFormat, disabledDate, disabledDateTime, validateMessages } from './MeetingReservation'; import moment from 'moment'; import { dateTimeFormatter } from '@/utils/DateUtils'; +import { getProId } from '@/utils/session'; interface BidEvalAppointmentProps { modalVisible: boolean; onCancel: () => void; onSubmit: (value: any) => void; + reload: () => void; values: any; + type: string; //0-选择评标室 1-修改预约 } export const proviceEnum = { @@ -51,9 +54,11 @@ export const proviceEnum = { const modalHeight = window.innerHeight * 96 / 100; const BidEvalAppointment: React.FC = (props) => { - const { modalVisible, onCancel, onSubmit, values } = props; + const { modalVisible, onCancel, onSubmit, reload, values, type } = props; const actionRef = useRef(); const [form] = Form.useForm(); + //项目id + const proId = getProId(); //当前选择行areaId const [selectedRowKeys, setSelectedRowKeys] = useState([]); //当前选择行数据 @@ -106,51 +111,78 @@ const BidEvalAppointment: React.FC = (props) => { return; } form.validateFields().then(value => { - if (value.reserveStartDate < moment().format(dateTimeFormatter)) { - message.info("开始时间不可早于当前时间"); + if (moment(value.reserveStartDate).format(dateTimeFormatter) < moment().format(dateTimeFormatter)) { + message.info("开始时间需晚于当前时间"); return; } - value["areaId"] = selectedRecord.id; - value["placeId"] = selectedRecord.placeId; - value["evalLocation"] = selectedRecord.areaName; - onSubmit(value); + if (moment(value.reserveEndDate).format(dateTimeFormatter) <= moment(value.reserveStartDate).format(dateTimeFormatter)) { + message.info("结束时间需晚于开始时间"); + return; + } + if (type == "0") {//选择评标室 + value["areaId"] = selectedRecord.id; + value["placeId"] = selectedRecord.placeId; + value["areaAddress"] = selectedRecord.areaAddress; + value["areaName"] = selectedRecord.areaName; + value["contactName"] = selectedRecord.contactName; + value["contactTel"] = selectedRecord.contactTel; + value["areaNumber"] = selectedRecord.areaNumber; + onSubmit(value); + } else {//修改预约 + const params = { + ...values, + areaId: selectedRecord.id, + placeId: selectedRecord.placeId, + reserveStartDate: moment(value.reserveStartDate).format(dateTimeFormatter), + reserveEndDate: moment(value.reserveEndDate).format(dateTimeFormatter), + reserveBy: value.reserveBy, + reserveContactNumber: value.reserveContactNumber, + } + saveAppointmentEdit(params).then(res => { + if (res?.code == 200) { + message.success("预约成功"); + onCancel(); + reload(); + } + }) + } }) } useEffect(() => { - if (values) { - if (values?.areaId) { - setSelectedRowKeys([values.areaId]) - setSelectedRecord({ - ...values, - id: values.areaId, - }) - } - form.setFieldsValue({ - ...values, - }) - } - return () => { - setSelectedRowKeys([]); - setSelectedRecord(void 0); - } + setSelectedRowKeys([]); + setSelectedRecord(void 0); }, [values]) return ( onCancel()} onOk={() => onOk()} - okText="确认" + okText={type == "0" ? "确认" : "保存"} width={"70%"} style={{ maxHeight: modalHeight }} bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto', }} className="confirm table-no-alert" centered > + {values?.areaId && ( + <> +

{type == "0" ? "已选择评标室" : "已预约评标室"}

+ + {values?.areaName} + {values?.contactName} + {values?.contactTel} + {values?.areaNumber ? values?.areaNumber : values?.numberInMeeting} + {moment(values?.reserveStartDate).format(dateTimeFormatter)} + {moment(values?.reserveEndDate).format(dateTimeFormatter)} + +

选择评标室

+ + )} columns={columns} actionRef={actionRef} @@ -201,6 +233,22 @@ const BidEvalAppointment: React.FC = (props) => { preserve={false} validateMessages={validateMessages} > + + {selectedRowKeys.length > 0 && ( @@ -208,6 +256,7 @@ const BidEvalAppointment: React.FC = (props) => { label="预计评标开始时间" name="reserveStartDate" rules={[{ required: true, message: '请选择' }]} + extra={预约时间范围 7:00 ~ 18:00} > diff --git a/src/components/ElecBidEvaluation/service.ts b/src/components/ElecBidEvaluation/service.ts index b6e356a..91472cd 100644 --- a/src/components/ElecBidEvaluation/service.ts +++ b/src/components/ElecBidEvaluation/service.ts @@ -40,4 +40,15 @@ export async function getBidEvalRoom(data: any) { pageNo: data.current, }, }); +} + +/** + * 评标室预约-预约修改保存 + * @params data + */ +export async function saveAppointmentEdit(data: any) { + return request('/api/biz-service-ebtp-evaluation/v1/eval/room/reserve/updateSubmit', { + method: 'POST', + data: { ...data, }, + }); } \ No newline at end of file diff --git a/src/pages/Project/ProjectManage/ProjectManager/HomePageSectionList/components/AddEvaluationItems.tsx b/src/pages/Project/ProjectManage/ProjectManager/HomePageSectionList/components/AddEvaluationItems.tsx index fbb894e..05bb3e4 100644 --- a/src/pages/Project/ProjectManage/ProjectManager/HomePageSectionList/components/AddEvaluationItems.tsx +++ b/src/pages/Project/ProjectManage/ProjectManager/HomePageSectionList/components/AddEvaluationItems.tsx @@ -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 = (props) => { const [sectionType, setSectionType] = useState('评审'); //loading const [saveLoading, setSaveLoading] = useState(false); + //电子评标室-评标室预约选择 2022.8.26 zhoujianlong + const [selectEvalVisible, setSelectEvalVisible] = useState(false); + //电子评标室-评标室预约选择不可选状态控制 true-不可填写 false-可填写 2022.8.26 zhoujianlong + const [selectEvalDisabled, setSelectEvalDisabled] = useState(true); + //电子评标室-评标室预约选择-数据 2022.8.26 zhoujianlong + const [selectEvalData, setSelectEvalData] = useState(); useEffect(() => { //名称确定 if (MethodDict == 'procurement_mode_1' || MethodDict == 'procurement_mode_2') { @@ -101,99 +108,144 @@ const AddEvaluationItems: React.FC = (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 ( - onSubmit()} - onCancel={() => { - // setFileListData([]); - onCancel(); - }} - width={'60%'} - style={{ maxHeight: modalHeight }} - bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }} - centered - okText="保存" - cancelText="返回" - confirmLoading={saveLoading} - > - -
- - - - -