会议状态问题
This commit is contained in:
@@ -7,9 +7,9 @@
|
|||||||
<div class="meeting-card-header">
|
<div class="meeting-card-header">
|
||||||
<div class="meeting-card-title">{{ meeting.meetingName }}</div>
|
<div class="meeting-card-title">{{ meeting.meetingName }}</div>
|
||||||
<div class="meeting-card-status">
|
<div class="meeting-card-status">
|
||||||
<span v-if="meeting.status === 'scheduled'" class="status-badge status-scheduled">预定</span>
|
<span v-if="isMeetingEnded" class="status-badge status-ended">已结束</span>
|
||||||
<span v-else-if="meeting.status === 'ongoing'" class="status-badge status-ongoing">进行中</span>
|
<span v-else-if="meeting.status === 'ongoing'" class="status-badge status-ongoing">进行中</span>
|
||||||
<span v-else-if="meeting.status === 'ended'" class="status-badge status-ended">已结束</span>
|
<span v-else-if="meeting.status === 'scheduled'" class="status-badge status-scheduled">预定</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="meeting-card-time">
|
<div class="meeting-card-time">
|
||||||
@@ -117,6 +117,39 @@ function formatDateTime(dateStr?: string): string {
|
|||||||
return `${month}-${day} ${hour}:${minute}`
|
return `${month}-${day} ${hour}:${minute}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断会议是否已结束
|
||||||
|
* 满足以下任一条件即为已结束:
|
||||||
|
* 1. status是ended状态
|
||||||
|
* 2. 超过了endTime
|
||||||
|
* 3. actualEndTime存在
|
||||||
|
*/
|
||||||
|
const isMeetingEnded = computed(() => {
|
||||||
|
if (!meeting.value) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件1: status是ended状态
|
||||||
|
if (meeting.value.status === 'ended') {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件3: actualEndTime存在
|
||||||
|
if (meeting.value.actualEndTime) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件2: 超过了endTime
|
||||||
|
if (meeting.value.endTime) {
|
||||||
|
const endTime = new Date(meeting.value.endTime).getTime()
|
||||||
|
if (!isNaN(endTime) && currentTime.value > endTime) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算倒计时文本
|
* 计算倒计时文本
|
||||||
*/
|
*/
|
||||||
@@ -125,6 +158,11 @@ const countdownText = computed(() => {
|
|||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
|
return '会议已结束'
|
||||||
|
}
|
||||||
|
|
||||||
const advanceMinutes = meeting.value.advance || 0
|
const advanceMinutes = meeting.value.advance || 0
|
||||||
const now = currentTime.value
|
const now = currentTime.value
|
||||||
const startTime = new Date(meeting.value.startTime).getTime()
|
const startTime = new Date(meeting.value.startTime).getTime()
|
||||||
@@ -137,10 +175,6 @@ const countdownText = computed(() => {
|
|||||||
|
|
||||||
const advanceTime = startTime - advanceMinutes * 60 * 1000
|
const advanceTime = startTime - advanceMinutes * 60 * 1000
|
||||||
|
|
||||||
if (meeting.value.status === 'ended') {
|
|
||||||
return '会议已结束'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (now < advanceTime) {
|
if (now < advanceTime) {
|
||||||
// 未到提前入会时间
|
// 未到提前入会时间
|
||||||
const leftMs = advanceTime - now
|
const leftMs = advanceTime - now
|
||||||
@@ -180,7 +214,8 @@ const canJoinMeeting = computed(() => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meeting.value.status === 'ended') {
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,7 +242,8 @@ const buttonText = computed(() => {
|
|||||||
if (!meeting.value) {
|
if (!meeting.value) {
|
||||||
return '加载中'
|
return '加载中'
|
||||||
}
|
}
|
||||||
if (meeting.value.status === 'ended') {
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
return '会议已结束'
|
return '会议已结束'
|
||||||
}
|
}
|
||||||
if (!canJoinMeeting.value) {
|
if (!canJoinMeeting.value) {
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
<view class="meeting-card-header">
|
<view class="meeting-card-header">
|
||||||
<view class="meeting-card-title">{{ meeting.meetingName || '未命名会议' }}</view>
|
<view class="meeting-card-title">{{ meeting.meetingName || '未命名会议' }}</view>
|
||||||
<view class="meeting-card-status">
|
<view class="meeting-card-status">
|
||||||
<text v-if="meeting.status === 'scheduled'" class="status-badge status-scheduled">预定</text>
|
<text v-if="isMeetingEnded" class="status-badge status-ended">已结束</text>
|
||||||
<text v-else-if="meeting.status === 'ongoing'" class="status-badge status-ongoing">进行中</text>
|
<text v-else-if="meeting.status === 'ongoing'" class="status-badge status-ongoing">进行中</text>
|
||||||
<text v-else-if="meeting.status === 'ended'" class="status-badge status-ended">已结束</text>
|
<text v-else-if="meeting.status === 'scheduled'" class="status-badge status-scheduled">预定</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="meeting-card-time">
|
<view class="meeting-card-time">
|
||||||
@@ -121,6 +121,39 @@ function formatDateTime(dateStr?: string): string {
|
|||||||
return `${month}-${day} ${hour}:${minute}`
|
return `${month}-${day} ${hour}:${minute}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断会议是否已结束
|
||||||
|
* 满足以下任一条件即为已结束:
|
||||||
|
* 1. status是ended状态
|
||||||
|
* 2. 超过了endTime
|
||||||
|
* 3. actualEndTime存在
|
||||||
|
*/
|
||||||
|
const isMeetingEnded = computed((): boolean => {
|
||||||
|
if (!meeting.value) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件1: status是ended状态
|
||||||
|
if (meeting.value.status === 'ended') {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件3: actualEndTime存在
|
||||||
|
if (meeting.value.actualEndTime) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条件2: 超过了endTime
|
||||||
|
if (meeting.value.endTime) {
|
||||||
|
const endTime = new Date(meeting.value.endTime.replace(' ', 'T')).getTime()
|
||||||
|
if (!isNaN(endTime) && currentTime.value > endTime) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算倒计时文本
|
* 计算倒计时文本
|
||||||
*/
|
*/
|
||||||
@@ -129,6 +162,11 @@ const countdownText = computed((): string => {
|
|||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
|
return '会议已结束'
|
||||||
|
}
|
||||||
|
|
||||||
// advance 默认为 0
|
// advance 默认为 0
|
||||||
const advanceMinutes = meeting.value.advance || 0
|
const advanceMinutes = meeting.value.advance || 0
|
||||||
|
|
||||||
@@ -144,10 +182,6 @@ const countdownText = computed((): string => {
|
|||||||
|
|
||||||
const advanceTime = startTime - advanceMinutes * 60 * 1000
|
const advanceTime = startTime - advanceMinutes * 60 * 1000
|
||||||
|
|
||||||
if (meeting.value.status === 'ended') {
|
|
||||||
return '会议已结束'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (now < advanceTime) {
|
if (now < advanceTime) {
|
||||||
// 未到提前入会时间
|
// 未到提前入会时间
|
||||||
const leftMs = advanceTime - now
|
const leftMs = advanceTime - now
|
||||||
@@ -187,7 +221,8 @@ const canJoinMeeting = computed((): boolean => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meeting.value.status === 'ended') {
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +250,8 @@ const buttonText = computed((): string => {
|
|||||||
if (!meeting.value) {
|
if (!meeting.value) {
|
||||||
return '加载中'
|
return '加载中'
|
||||||
}
|
}
|
||||||
if (meeting.value.status === 'ended') {
|
// 统一判断会议是否已结束
|
||||||
|
if (isMeetingEnded.value) {
|
||||||
return '会议已结束'
|
return '会议已结束'
|
||||||
}
|
}
|
||||||
if (!canJoinMeeting.value) {
|
if (!canJoinMeeting.value) {
|
||||||
|
|||||||
Reference in New Issue
Block a user