重新打开应用是否自动登录判断优化 #18

Merged
yangqiang merged 14 commits from yangjie into master 2024-10-11 14:15:18 +08:00
5 changed files with 122 additions and 34 deletions
Showing only changes of commit c7d6f90174 - Show all commits

View File

@ -11,6 +11,12 @@ export const PostRoom = (data: any) =>
method: 'post', method: 'post',
data, data,
}) })
export const PostRoomInfo = (data: any) =>
request({
url: `/home/room-info`,
method: 'put',
data,
})
export const DeleteRoom = (roomId: string) => export const DeleteRoom = (roomId: string) =>
request({ request({
url: `/home/room?roomId=${roomId}`, url: `/home/room?roomId=${roomId}`,

View File

@ -33,6 +33,12 @@ export const PutUserPwd = (data: { id: string, pwd: string }) =>
data data
}) })
export const GetSubDpList = () =>
request({
url: `/pub/sub-dp-list`,
method: 'get',
})
export const GetRoleDpList = () => export const GetRoleDpList = () =>
request({ request({
url: `/pub/role-dp-list`, url: `/pub/role-dp-list`,

View File

@ -1,8 +1,8 @@
import styles from '@/page/Home/Index/index.module.scss' import styles from '@/page/Home/Index/index.module.scss'
import { useEffect, useState, useRef } from "react"; import { useEffect, useState, useRef } from "react";
import Operation from '@/components/Operation'; import Operation from '@/components/Operation';
import { Button, Input, Modal, Pagination, Empty, message, Popover, Popconfirm, DatePicker } from "antd"; import { Button, Input, Modal, Pagination, Empty, message, Popover, Popconfirm, DatePicker, Select } from "antd";
import { GetRoom, PostRoom, GetCheckoutRoomNum, GetRoomRtcToken, DeleteRoom, GetRecord } from '@/api/Home/Index'; import { GetRoom, PostRoom, GetCheckoutRoomNum, GetRoomRtcToken, DeleteRoom, GetRecord, PostRoomInfo } from '@/api/Home/Index';
import ImageUrl from '@/utils/package/imageUrl' import ImageUrl from '@/utils/package/imageUrl'
import { ExclamationCircleFilled, ReloadOutlined } from '@ant-design/icons'; import { ExclamationCircleFilled, ReloadOutlined } from '@ant-design/icons';
import JoinSetting from '@/components/JoinSetting'; import JoinSetting from '@/components/JoinSetting';
@ -12,6 +12,7 @@ import { useNavigate } from 'react-router-dom';
import { role } from '@/config/role'; import { role } from '@/config/role';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import StupWizard from '@/components/StupWizard'; import StupWizard from '@/components/StupWizard';
import { GetSubDpList } from '@/api/Home/User';
const fs = require('fs').promises; const fs = require('fs').promises;
const { exec } = require('child_process'); const { exec } = require('child_process');
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
@ -26,15 +27,20 @@ const Index: React.FC = () => {
}) })
const [createRoomModal, setCreateRoomModal] = useState(false) const [createRoomModal, setCreateRoomModal] = useState(false)
const [timeSelectModal, setTimeSelectModal] = useState(false) const [timeSelectModal, setTimeSelectModal] = useState(false)
const [createRoomFrom, setCreateRoomFrom] = useState<{ roomName: string, roomNum: string }>({ const [createRoomFrom, setCreateRoomFrom] = useState<{ id: string, roomName: string, roomNum: string, subject: string, year: string }>({
id: "",
roomName: "", roomName: "",
roomNum: "" roomNum: "",
subject: "",
year: ""
}) })
const joinSettingRef = useRef<any>(); const joinSettingRef = useRef<any>();
const stupWizardRef = useRef<any>(); const stupWizardRef = useRef<any>();
const [user, setUser] = useState<any>({}); const [user, setUser] = useState<any>({});
const [currentRoomInfo, setCurrentRoomInfo] = useState<any>({}); const [currentRoomInfo, setCurrentRoomInfo] = useState<any>({});
const [subjectList, setSubjectList] = useState<any>([]);
const [timeData, setTimeData] = useState<any>([]); const [timeData, setTimeData] = useState<any>([]);
const [isCreateRoom, setIsCreateRoom] = useState<boolean>(false);
const userInfo = JSON.parse(storage.getItem('user') as string) const userInfo = JSON.parse(storage.getItem('user') as string)
useEffect(() => { useEffect(() => {
setUser(userInfo) setUser(userInfo)
@ -62,7 +68,12 @@ const Index: React.FC = () => {
setList({ setList({
...list, ...list,
total: res.data.total, total: res.data.total,
data: res.data.items, data: res.data.items.map((item: any) => {
return {
...item,
open: false
}
}),
}) })
} }
}) })
@ -80,6 +91,13 @@ const Index: React.FC = () => {
} }
}) })
} }
const getSubDpList = async (): Promise<void> => {
await GetSubDpList().then(res => {
if (res.code === 200) {
setSubjectList(res.data.map((item: any) => { return { value: item.value, label: item.name } }))
}
})
}
const getRoomRtcToken = async (roomNum: string, callBack: Function): Promise<void> => { const getRoomRtcToken = async (roomNum: string, callBack: Function): Promise<void> => {
Promise.all([GetRoomRtcToken(roomNum), GetRoomRtcToken(roomNum + 'a')]).then(res => { Promise.all([GetRoomRtcToken(roomNum), GetRoomRtcToken(roomNum + 'a')]).then(res => {
if (res[0].code === 200 && res[1].code === 200) { if (res[0].code === 200 && res[1].code === 200) {
@ -166,8 +184,13 @@ const Index: React.FC = () => {
onClick={() => { onClick={() => {
setCreateRoomFrom({ setCreateRoomFrom({
roomName: "", roomName: "",
roomNum: "" roomNum: "",
subject: "",
year: "",
id: "",
}) })
getSubDpList()
setIsCreateRoom(true)
setCreateRoomModal(true) setCreateRoomModal(true)
}} }}
style={{ marginRight: '22px' }} style={{ marginRight: '22px' }}
@ -234,13 +257,26 @@ const Index: React.FC = () => {
okText="确定" okText="确定"
cancelText="取消" cancelText="取消"
> >
<div></div> <div className='meetingContentFooterPopoverDel'></div>
</Popconfirm> : null} </Popconfirm> : null}
<div onClick={() => { <div className='meetingContentFooterPopoverDefault' onClick={() => {
changeOpen(index, false) changeOpen(index, false)
setTimeSelectModal(true) setTimeSelectModal(true)
}}></div> }}></div>
<div onClick={() => { <div className='meetingContentFooterPopoverDefault' onClick={() => {
changeOpen(index, false)
setCreateRoomFrom({
roomName: item.roomName,
roomNum: item.roomNum,
subject: item.subject,
year: item.year,
id: item.id,
})
getSubDpList()
setIsCreateRoom(false)
setCreateRoomModal(true)
}}></div>
<div className='meetingContentFooterPopoverCancel' onClick={() => {
changeOpen(index, false) changeOpen(index, false)
}}></div> }}></div>
</div> </div>
@ -298,19 +334,19 @@ const Index: React.FC = () => {
</div> </div>
} }
<div className={styles.indexContentPagination}> <div className={styles.indexContentPagination}>
<Pagination size="small" total={list.total} onChange={(e) => { <Pagination size="small" total={list.total} onChange={(e: number) => {
setList({ setList({
...list, ...list,
pageIndex: e pageIndex: e
}) })
}} pageSize={list.pageSize} showSizeChanger={false}/> }} pageSize={list.pageSize} showSizeChanger={false} />
</div> </div>
</div> </div>
</div> </div>
<Modal title="新建会议室" open={createRoomModal} footer={null} closable={false} centered width={'400px'}> <Modal title={isCreateRoom ? '新建会议室' : '更新会议信息'} open={createRoomModal} footer={null} closable={false} centered width={'400px'}>
<div> <div>
<div> <div>
<Input {isCreateRoom ? <Input
placeholder="请输入房间号" placeholder="请输入房间号"
style={{ marginBottom: '14px' }} style={{ marginBottom: '14px' }}
className={styles.letterSpacing} className={styles.letterSpacing}
@ -344,7 +380,7 @@ const Index: React.FC = () => {
> >
</span> </span>
} }
/> /> : null}
<Input.TextArea <Input.TextArea
placeholder="请输入房间名字" placeholder="请输入房间名字"
style={{ marginBottom: '14px' }} style={{ marginBottom: '14px' }}
@ -358,6 +394,30 @@ const Index: React.FC = () => {
}) })
}} }}
autoSize /> autoSize />
<Input
placeholder="请输入届"
style={{ marginBottom: '14px' }}
value={createRoomFrom.year}
onChange={(e) => {
const regex = /^[0-9]*$/;
if (regex.test(e.target.value)) {
setCreateRoomFrom({
...createRoomFrom,
year: e.target.value
})
}
}}
/>
<Select
placeholder='请选择学科'
style={{ width: '100%', marginBottom: '14px' }}
options={subjectList}
value={createRoomFrom.subject === "" ? null : createRoomFrom.subject} onChange={(e) => {
setCreateRoomFrom({
...createRoomFrom,
subject: e
})
}} />
</div> </div>
<div style={{ <div style={{
display: 'flex', justifyContent: 'center' display: 'flex', justifyContent: 'center'
@ -370,6 +430,13 @@ const Index: React.FC = () => {
if (!createRoomFrom.roomNum) { if (!createRoomFrom.roomNum) {
return message.error('请输入房间号!') return message.error('请输入房间号!')
} }
if (!createRoomFrom.year) {
return message.error('请输入届!')
}
if (createRoomFrom.subject === "") {
return message.error('请选择学科!')
}
if (isCreateRoom) {
isGetCheckoutRoomNum(createRoomFrom.roomNum, (bool: boolean) => { isGetCheckoutRoomNum(createRoomFrom.roomNum, (bool: boolean) => {
if (bool) { if (bool) {
message.error('房间号已存在!') message.error('房间号已存在!')
@ -383,7 +450,16 @@ const Index: React.FC = () => {
}) })
} }
}) })
}}></Button> } else {
PostRoomInfo(createRoomFrom).then(res => {
if (res.code === 200) {
message.success('更新成功!')
setCreateRoomModal(false)
getRoomList()
}
})
}
}}>{isCreateRoom ? '创建' : '更新'}</Button>
</div> </div>
</div> </div>
</Modal> </Modal>

View File

@ -811,7 +811,7 @@
} }
} }
>div:nth-child(1) { .meetingContentFooterPopoverDel {
background-color: #FF5219; background-color: #FF5219;
&:hover { &:hover {
@ -823,7 +823,7 @@
} }
} }
>div:nth-child(2) { .meetingContentFooterPopoverDefault {
background-color: #31353A; background-color: #31353A;
&:hover { &:hover {
@ -835,7 +835,7 @@
} }
} }
>div:nth-child(3) { .meetingContentFooterPopoverCancel {
background-color: #101418; background-color: #101418;
&:hover { &:hover {

View File

@ -2228,11 +2228,11 @@ const Meeting: React.FC = () => {
okText="结束" okText="结束"
cancelText="取消" cancelText="取消"
> >
<div></div> <div className='meetingContentFooterPopoverDel'></div>
</Popconfirm> </Popconfirm>
: null} : null}
<div onClick={() => leaveChannel()}></div> <div className='meetingContentFooterPopoverDefault' onClick={() => leaveChannel()}></div>
<div onClick={() => { setOpen(false) }}></div> <div className='meetingContentFooterPopoverCancel' onClick={() => { setOpen(false) }}></div>
</div> </div>
} }
title="" title=""