diff --git a/config/router_elecEvaluation.ts b/config/router_elecEvaluation.ts index 060bb68..c511dd9 100644 --- a/config/router_elecEvaluation.ts +++ b/config/router_elecEvaluation.ts @@ -70,10 +70,14 @@ export const elecBidEvaluation = [ path: '/ElecEvaluation/ElecEvalReserve', component: './ElecEvaluation/ElecEvalReserve', }, + {//预约人员-我的预约 + path: '/ElecEvaluation/MyReserve', + component: './ElecEvaluation/ElecEvalReserve/MyReserve', + }, {//评标场所及区域管理 path: '/ElecEvaluation/PlaceAreasManage', component: './ElecEvaluation/PlaceAreasManage', - }, + }, {//厂家平台管理 path: '/ElecEvaluation/ManuPlatformManage', component: './ElecEvaluation/ManuPlatformManage', diff --git a/src/components/ElecBidEvaluation/MeetingReservation.tsx b/src/components/ElecBidEvaluation/MeetingReservation.tsx index 4511b3a..f432ca9 100644 --- a/src/components/ElecBidEvaluation/MeetingReservation.tsx +++ b/src/components/ElecBidEvaluation/MeetingReservation.tsx @@ -5,6 +5,7 @@ import { cancelMeeting, getMeetingData, saveAppointmentEdit, saveMeeting } from import { isNotEmpty } from '@/utils/CommonUtils'; import { ExclamationCircleOutlined } from '@ant-design/icons'; import { dateTimeFormatter, echoDateTimeFormatter } from '@/utils/DateUtils'; +import { getSessionRoleData, getSessionUserData } from '@/utils/session'; interface MeetingReservationProps { modalVisible: boolean; @@ -12,7 +13,8 @@ interface MeetingReservationProps { onSubmit?: () => void; roomList?: any[];//评标室列表 带问号的参数可不传 status: string;//状态 0-新建 1-编辑 2-查看 - meetId?: string;//预约id + // meetId?: string;//预约id + meetData: any;//预约数据 } const layout = { labelCol: { span: 7 }, @@ -52,13 +54,18 @@ export const otherDisabledDateTime = (current: any, disabledMap: any, type: stri }; //时间选择框日期格式化 export const dateFormat: DatePickerProps['format'] = value => value?.startOf('hour').format('YYYY-MM-DD HH:mm:ss'); +//获取登录账号 +const userId = getSessionUserData()?.userId; +//获取角色 +const roleCode = getSessionRoleData()?.roleCode; /** * 评标室预约管理-会议室预约弹窗 * @param props * @returns */ const MeetingReservation: React.FC = (props) => { - const { modalVisible, onCancel, onSubmit, roomList, status, meetId } = props; + const { modalVisible, onCancel, onSubmit, roomList, status, meetData } = props; + const { id = null, reserveBy = "" } = { ...meetData }; const [form] = Form.useForm(); const { Option } = Select; const { confirm } = Modal; @@ -75,6 +82,8 @@ const MeetingReservation: React.FC = (props) => { const [isEditMeet, setIsEditMeet] = useState(false); //存一份预约数据 const [meetingData, setMeetingData] = useState(); + //判断预约人员是否本人 true-是预约人员不是本人(不可编辑) false-其余情况(可以编辑) + const isMeetSelf: boolean = (roleCode == "ebtp-appointment") && (reserveBy != userId); const onFinish = (values: any) => { if (values.reserveStartDate < moment().format(dateTimeFormatter)) { @@ -109,7 +118,7 @@ const MeetingReservation: React.FC = (props) => { //获取预约信息 const getMeetData = () => { setSkeleing(true); - getMeetingData(meetId).then(res => { + getMeetingData(id).then(res => { if (res?.code == 200) { setSkeleing(false); const data = res?.data; @@ -134,7 +143,7 @@ const MeetingReservation: React.FC = (props) => { okText: '确认', content: '', async onOk() { - await cancelMeeting(meetId).then(res => { + await cancelMeeting(id).then(res => { if (res?.code == 200) { message.success("取消预约成功"); onSubmit && onSubmit(); @@ -155,10 +164,10 @@ const MeetingReservation: React.FC = (props) => { setModalStatus("1"); } useEffect(() => { - if (isNotEmpty(meetId)) { + if (isNotEmpty(id)) { getMeetData(); } - }, [meetId]) + }, [id]) return ( = (props) => { , - , - , ]} diff --git a/src/pages/ElecEvaluation/AppointmentManage/index.tsx b/src/pages/ElecEvaluation/AppointmentManage/index.tsx index 37ecc5f..e3a9a6a 100644 --- a/src/pages/ElecEvaluation/AppointmentManage/index.tsx +++ b/src/pages/ElecEvaluation/AppointmentManage/index.tsx @@ -6,6 +6,7 @@ import { useRef } from 'react'; import MeetingReservation from '@/components/ElecBidEvaluation/MeetingReservation'; import { getRecordData, getSiteList } from './service'; import { isEmpty } from '@/utils/CommonUtils'; +import { getSessionRoleData } from '@/utils/session'; const orange_bg = { background: '#ffbc83', color: '#333333', cursor: 'pointer', width: '100%', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }; const light_orange_bg = { background: '#faf7e5' }; @@ -14,6 +15,7 @@ const tag_size = { height: '20px', width: '20px' }; const panel_title = { fontWeight: 500 }; const panel_sub_title = { ...panel_title, color: '#999999' }; const { Panel } = Collapse; +const roleCode = getSessionRoleData()?.roleCode;//获取角色 const ScreenTable = (props: { record: any, onCellClick: (id: any) => void, refresh: number }) => { const { record, onCellClick, refresh } = props; @@ -43,7 +45,7 @@ const ScreenTable = (props: { record: any, onCellClick: (id: any) => void, refre onCell: (record) => { return { style: record[ite.id]?.iskssj ? orange_bg : light_orange_bg, - onClick: record[ite.id]?.iskssj ? () => onCellClick(record[ite.id]?.id) : void 0, + onClick: record[ite.id]?.iskssj ? () => onCellClick(record[ite.id]) : void 0, } }, render: (_: any, record: any) => { @@ -93,8 +95,8 @@ const ScreenTable = (props: { record: any, onCellClick: (id: any) => void, refre -
可预约电子评标室
-
已预约电子评标室
+
可预约{roleCode == "ebtp-appointment" ? "会议室" : "电子评标室"}
+
已预约{roleCode == "ebtp-appointment" ? "会议室" : "电子评标室"}
)} @@ -124,8 +126,8 @@ export default () => { const [expandedRowKeys, setExpandedRowKeys] = useState([]); //预约状态 const [meetStatus, setMeetStatus] = useState("2"); - //预约id - const [meetId, setMeetId] = useState(""); + //单条预约数据 + const [meetData, setMeetData] = useState({}); //刷新参数 const [refresh, setRefresh] = useState(0); @@ -144,34 +146,44 @@ export default () => { //新建预约 const createMeet = () => { setMeetStatus("0"); - setMeetId(""); + setMeetData({}); setModalVisible(true); } //查看预约 - const viewMeet = (id: any) => { + const viewMeet = (record: any) => { setMeetStatus("2"); - setMeetId(id); + setMeetData(record); setModalVisible(true); } //查看预约详情跳转 const viewMeetContent = () => { window.open("/ElecEvaluation/ElecEvalReserve"); } + //预约人员-我的预约跳转 + const MyReserveContent = () => { + window.open("/ElecEvaluation/MyReserve"); + } useEffect(() => { getSiteListData("0"); }, []) return ( - +
- + {roleCode == "ebtp-appointment" ? (//预约人员 + + ) : ( + + )}
setExpandedRowKeys(value as any[])} className="screen-reserve-collapse" style={{ margin: '0 36px' }}> @@ -192,7 +204,7 @@ export default () => { ))} - {modalVisible && { setModalVisible(false); getSiteListData("1") }} roomList={siteListData} status={meetStatus} meetId={meetId} onSubmit={() => { setModalVisible(false); setRefresh(refresh => refresh + 1) }} />} + {modalVisible && { setModalVisible(false); getSiteListData("1") }} roomList={siteListData} status={meetStatus} meetData={meetData} onSubmit={() => { setModalVisible(false); setRefresh(refresh => refresh + 1) }} />}
); }; \ No newline at end of file diff --git a/src/pages/ElecEvaluation/ElecEvalReserve/MyReserve.tsx b/src/pages/ElecEvaluation/ElecEvalReserve/MyReserve.tsx new file mode 100644 index 0000000..4e8d0f2 --- /dev/null +++ b/src/pages/ElecEvaluation/ElecEvalReserve/MyReserve.tsx @@ -0,0 +1,255 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { Button, message, Card } from 'antd'; +import ProTable, { ActionType } from '@ant-design/pro-table'; +import { reserveList, roomList, cancelReserve } from './service'; +import '@/assets/ld_style.less'; +import { getURLInformation, isNotEmpty } from '@/utils/CommonUtils'; +import MeetingReservation from '@/components/ElecBidEvaluation/MeetingReservation'; +import moment from 'moment'; +import { dateTimeFormatter } from '@/utils/DateUtils'; + +const MyReserve: React.FC<{}> = () => { + const meetingRelationRef = useRef(); //操作数据后刷新列表 + + const [areaNameList, setAreaNameList] = useState(); + const [areaList, setAreaList] = useState(); + //单条预约数据 + const [meetData, setMeetData] = useState(); + //预约弹窗 + const [modalVisible, setModalVisible] = useState(false); + //预约状态 + const [meetStatus, setMeetStatus] = useState("2"); + /*拉取数据*/ + useEffect(() => { + initAreaNameList(); + }, []); + const initAreaNameList = async () => { + await roomList().then((res) => { + if (res.success == true) { + let areaNameList = {}; + setAreaList(res.data); + //将拿到的返回值遍历 + res.data.map((item: { id: string | number; areaName: any }) => { + //使用接口返回值的id做为 代替原本的0,1 + areaNameList[item.id] = { + //使用接口返回值中的overdueValue属性作为原本的text:后面的值 + text: item.areaName, + }; + }); + setAreaNameList(areaNameList); + } + }); + }; + //新建预约 + const createMeet = () => { + setMeetStatus("0"); + setMeetData(null); + setModalVisible(true); + } + //查看预约 + const viewMeet = (record: any) => { + const recordData = { ...record }; + recordData["reserveBy"] = record.createBy; + setMeetStatus("2"); + setMeetData(recordData); + setModalVisible(true); + }; + /** + * 取消预约 + * @param record + */ + const cancel = async (record: any) => { + cancelReserve(record.id).then((res) => { + if (res.code == 200 && res.data) { + message.success('预约取消成功'); + } + }); + }; + const current = getURLInformation('current'); + + + const otherColumns: any[] = [ + //会议室预约 + + { + title: '序号', + dataIndex: 'index', + valueType: 'index', + search: false, + width: '3%', + }, + { + title: '评标室', + dataIndex: 'areaId', + valueEnum: areaNameList, + search: true, + width: '10%', + }, + { + title: '会议名称', + dataIndex: 'meetingName', + search: true, + width: '10%', + }, + { + title: '会议人数', + dataIndex: 'numberInMeeting', + width: '5%', + search: false, + }, + { + title: '预约开始时间', + dataIndex: 'reserveStartDate', + valueType: 'dateTime', + search: false, + width: '10%', + }, + { + title: '预约结束时间', + dataIndex: 'reserveEndDate', + valueType: 'dateTime', + search: false, + width: '10%', + }, + { + title: '预约人', + dataIndex: 'reserveBy', + width: '5%', + search: false, + }, + { + title: '预约人联系方式', + dataIndex: 'reserveContactNumber', + width: '5%', + search: false, + }, + { + title: '预约时间', + key: 'dateRange', + dataIndex: 'dateRange', + valueType: 'dateRange', + hideInTable: true, + search: { + transform: (value: any) => ({ reserveStartDate: moment(value[0]).startOf('day').format(dateTimeFormatter), reserveEndDate: moment(value[1]).endOf('day').format(dateTimeFormatter) }), + }, + }, + { + title: '操作', + width: '7%', + search: false, + render: (text: any, record: any) => { + return ( + <> + + + + ); + }, + }, + ]; + + return ( + <> + + {areaNameList && ( + + await reserveList(params).then((res) => { + if (res.code == 200) { + let data = res.data; + return Promise.resolve({ + data: data.records, + success: res.success, + total: res.data.total, + current: res.data.current, + }); + } + return Promise.resolve({ + data: [], + success: false, + total: 0, + current: 1, + }); + }) + } + search={{ + filterType: 'query', + optionRender: (searchConfig: any, { form }) => { + return [ + , + , + , + ]; + }, + labelWidth: 'auto', + span: 6, + }} + pagination={{ + defaultCurrent: isNotEmpty(current) ? Number(current) : 1, + defaultPageSize: 10, + showSizeChanger: false, + }} //默认显示条数 + toolBarRender={false} + /> + )} + {modalVisible && ( + { + setModalVisible(false); + }} + roomList={areaList} + status={meetStatus} + meetData={meetData} + onSubmit={() => { + meetingRelationRef.current?.reload?.(); + setModalVisible(false); + }} + /> + )} + + + ); +}; +export default MyReserve; + + diff --git a/src/pages/ElecEvaluation/ElecEvalReserve/index.tsx b/src/pages/ElecEvaluation/ElecEvalReserve/index.tsx index e171565..e7a5ed4 100644 --- a/src/pages/ElecEvaluation/ElecEvalReserve/index.tsx +++ b/src/pages/ElecEvaluation/ElecEvalReserve/index.tsx @@ -24,8 +24,8 @@ const Index: React.FC<{}> = () => { const [areaNameList, setAreaNameList] = useState(); const [areaList, setAreaList] = useState(); - //预约id - const [meetId, setMeetId] = useState(''); + //单条预约数据 + const [meetData, setMeetData] = useState({}); //预约弹窗 const [modalVisible, setModalVisible] = useState(false); //刷新参数 @@ -64,13 +64,15 @@ const Index: React.FC<{}> = () => { //新建预约 const createMeet = () => { setMeetStatus("0"); - setMeetId(""); + setMeetData({}); setModalVisible(true); } //查看预约 - const viewMeet = (id: any) => { + const viewMeet = (record: any) => { + const recordData = { ...record }; + recordData["reserveBy"] = record.createBy; setMeetStatus("2"); - setMeetId(id); + setMeetData(recordData); setModalVisible(true); }; /** @@ -84,7 +86,7 @@ const Index: React.FC<{}> = () => { } }); }; - const current = getURLInformation('current'); + // const current = getURLInformation('current'); const columns: any = [ // 评标室 @@ -105,14 +107,14 @@ const Index: React.FC<{}> = () => { { title: '预约开始时间', dataIndex: 'reserveStartDate', - search: true, + search: false, valueType: 'dateTime', width: '10%', }, { title: '预约结束时间', dataIndex: 'reserveEndDate', - search: true, + search: false, valueType: 'dateTime', width: '10%', }, @@ -148,6 +150,16 @@ const Index: React.FC<{}> = () => { valueEnum: statusEnum, search: true, }, + { + title: '预约时间', + key: 'dateRange', + dataIndex: 'dateRange', + valueType: 'dateRange', + hideInTable: true, + search: { + transform: (value: any) => ({ reserveStartDate: moment(value[0]).startOf('day').format(dateTimeFormatter), reserveEndDate: moment(value[1]).endOf('day').format(dateTimeFormatter) }), + }, + }, { title: '操作', width: '7%', @@ -155,11 +167,11 @@ const Index: React.FC<{}> = () => { render: (text: any, record: any) => { return ( <> -