diff --git a/src/assets/screen/going_01.png b/src/assets/screen/going_01.png index ea2a1cb..0acdc42 100644 Binary files a/src/assets/screen/going_01.png and b/src/assets/screen/going_01.png differ diff --git a/src/assets/screen/going_02.png b/src/assets/screen/going_02.png index 2fceb99..c815c27 100644 Binary files a/src/assets/screen/going_02.png and b/src/assets/screen/going_02.png differ diff --git a/src/assets/zjl_style.less b/src/assets/zjl_style.less index db3887f..1c9b6b0 100644 --- a/src/assets/zjl_style.less +++ b/src/assets/zjl_style.less @@ -225,4 +225,44 @@ .ant-collapse-content>.ant-collapse-content-box { padding: 16px 0; } +} + +.screen-warn-p { + + // .ant-drawer-close { + // color: #fff; + + // &:focus, + // &:hover { + // color: #fff; + // } + // } + + // .ant-drawer-content { + // background-color: rgba(0, 0, 0, 0.35); + // } + + .ant-drawer-body { + text-align: center; + padding: 0; + + &>div { + height: 100%; + } + + &>div>img { + position: relative; + top: 50%; + transform: translateY(-50%); + -moz-user-select: 'none'; + /* Firefox私有属性 */ + -webkit-user-select: 'none'; + /* WebKit内核私有属性 */ + -ms-user-select: 'none'; + /* IE私有属性(IE10及以后) */ + user-select: 'none'; + /* CSS3属性 */ + } + } + } \ No newline at end of file diff --git a/src/components/ElecBidEvaluation/BidEvalAppointment.tsx b/src/components/ElecBidEvaluation/BidEvalAppointment.tsx index 8eb5c8d..c075b85 100644 --- a/src/components/ElecBidEvaluation/BidEvalAppointment.tsx +++ b/src/components/ElecBidEvaluation/BidEvalAppointment.tsx @@ -1,8 +1,8 @@ import React, { useEffect, useRef, useState } from 'react'; import { Col, DatePicker, Descriptions, Form, Input, message, Modal, Row, Spin } from 'antd'; import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; -import { getBidEvalRoom, handleTakeEffectReserve, saveAppointmentEdit } from './service'; -import { dateFormat, disabledDate, disabledDateTime, validateMessages } from './MeetingReservation'; +import { getBidEvalRoom, getTimeByAreaId, handleTakeEffectReserve, saveAppointmentEdit } from './service'; +import { dateFormat, disabledDate, otherDisabledDateTime, validateMessages } from './MeetingReservation'; import moment from 'moment'; import { dateTimeFormatter } from '@/utils/DateUtils'; import { getProId } from '@/utils/session'; @@ -65,6 +65,8 @@ const BidEvalAppointment: React.FC = (props) => { const [selectedRecord, setSelectedRecord] = useState(); //loading const [loading, setLoading] = useState(false); + //不可选择日期 + const [disabledMap, setDisabledMap] = useState({}); const columns: ProColumns[] = [ { valueType: 'index', @@ -172,12 +174,26 @@ const BidEvalAppointment: React.FC = (props) => { } }) } + //获取不可选择时间 + const getDisabledTime = (rowKeys: any[]) => { + getTimeByAreaId(rowKeys[0]).then(res => { + if (res?.code == 200) { + const data = res?.data; + setDisabledMap(data); + } + }) + } useEffect(() => { setSelectedRowKeys([]); setSelectedRecord(null); + setDisabledMap({}); }, [values]) + useEffect(() => { + selectedRowKeys.length > 0 && getDisabledTime(selectedRowKeys); + }, [selectedRowKeys]) + return ( = (props) => { rules={[{ required: true, message: '请选择' }]} extra={预约时间范围 7:00 ~ 18:00} > - + otherDisabledDateTime(current, disabledMap)} showMinute={false} showSecond={false} format={dateFormat} style={{ width: '100%' }} renderExtraFooter={() => "注:若时间被占用,则置灰不可选"} /> @@ -293,7 +309,7 @@ const BidEvalAppointment: React.FC = (props) => { name="reserveEndDate" rules={[{ required: true, message: '请选择' }]} > - + otherDisabledDateTime(current, disabledMap)} showMinute={false} showSecond={false} format={dateFormat} style={{ width: '100%' }} renderExtraFooter={() => "注:若时间被占用,则置灰不可选"} /> diff --git a/src/components/ElecBidEvaluation/MeetingReservation.tsx b/src/components/ElecBidEvaluation/MeetingReservation.tsx index 4dc2a16..2c9803b 100644 --- a/src/components/ElecBidEvaluation/MeetingReservation.tsx +++ b/src/components/ElecBidEvaluation/MeetingReservation.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { Button, DatePicker, DatePickerProps, Form, Input, message, Modal, Select, Skeleton, Spin } from 'antd'; import moment from 'moment' -import { cancelMeeting, getMeetingData, saveMeeting } from './service'; +import { cancelMeeting, getMeetingData, saveAppointmentEdit, saveMeeting } from './service'; import { isNotEmpty } from '@/utils/CommonUtils'; import { ExclamationCircleOutlined } from '@ant-design/icons'; import { dateTimeFormatter, echoDateTimeFormatter } from '@/utils/DateUtils'; @@ -36,6 +36,20 @@ export function disabledDate(current: any) { export const disabledDateTime = () => ({ disabledHours: () => [...range(0, 7), ...range(19, 24)], }); +//不可选小时(额外不可选) +export const otherDisabledDateTime = (current: any, disabledMap: any) => { + let otherHour: any[] = range(0, 24); + if (current) { + otherHour = []; + if (Object.keys(disabledMap).length != 0) { + const time = moment(current).format("yyyy-MM-DD"); + disabledMap[time] && (otherHour = [...disabledMap[time]]); + } + } + return ({ + disabledHours: () => [...range(0, 7), ...range(19, 24), ...otherHour], + }) +}; //时间选择框日期格式化 export const dateFormat: DatePickerProps['format'] = value => value?.startOf('hour').format('YYYY-MM-DD HH:mm:ss'); /** @@ -59,9 +73,10 @@ const MeetingReservation: React.FC = (props) => { const [meetType, setMeetType] = useState("meeting"); //会议室预约是否可修改 true-不可修改 false-可修改 const [isEditMeet, setIsEditMeet] = useState(false); + //存一份预约数据 + const [meetingData, setMeetingData] = useState(); const onFinish = (values: any) => { - console.log(values); if (values.reserveStartDate < moment().format(dateTimeFormatter)) { message.info("开始时间不可早于当前时间"); return; @@ -70,14 +85,25 @@ const MeetingReservation: React.FC = (props) => { params.reserveStartDate = moment(params.reserveStartDate).format(dateTimeFormatter); params.reserveEndDate = moment(params.reserveEndDate).format(dateTimeFormatter); setLoading(true); - saveMeeting(params).then(res => { - if (res?.code == 200) { - message.success("保存成功"); - onSubmit && onSubmit(); - } - }).finally(() => { - setLoading(false); - }) + if (meetType == "meeting") {//会议室保存 + saveMeeting(params).then(res => { + if (res?.code == 200) { + message.success("保存成功"); + onSubmit && onSubmit(); + } + }).finally(() => { + setLoading(false); + }) + } else { + saveAppointmentEdit({ ...meetingData, ...params }).then(res => {//评标室保存 + if (res?.code == 200) { + message.success("保存成功"); + onSubmit && onSubmit(); + } + }).finally(() => { + setLoading(false); + }) + } }; //获取预约信息 @@ -87,8 +113,9 @@ const MeetingReservation: React.FC = (props) => { if (res?.code == 200) { setSkeleing(false); const data = res?.data; - const isEdit: boolean = data.reserveStartDate <= moment().format(dateTimeFormatter); + const isEdit: boolean = data.reserveType == "meeting" ? data.reserveStartDate <= moment().format(dateTimeFormatter) : data.status != 0; setIsEditMeet(isEdit); + setMeetingData(data); setMeetType(data.reserveType);//变更窗口类型 if (data.reserveType == "meeting") { data.reserveStartDate = echoDateTimeFormatter(data.reserveStartDate); @@ -117,6 +144,16 @@ const MeetingReservation: React.FC = (props) => { onCancel() { }, }); } + + const editMeeting = () => { + if (meetType == "eval") {//评标室预约修改 + const data = JSON.parse(JSON.stringify(meetingData));//深拷贝 + data.reserveStartDate = echoDateTimeFormatter(data.reserveStartDate); + data.reserveEndDate = echoDateTimeFormatter(data.reserveEndDate); + form.setFieldsValue(data); + } + setModalStatus("1"); + } useEffect(() => { if (isNotEmpty(meetId)) { getMeetData(); @@ -135,10 +172,10 @@ const MeetingReservation: React.FC = (props) => { , - , - ,