diff --git a/frontend/src/pages/auth/login.vue b/frontend/src/pages/auth/login.vue
index 09cced5..646cda8 100644
--- a/frontend/src/pages/auth/login.vue
+++ b/frontend/src/pages/auth/login.vue
@@ -20,9 +20,9 @@
-
+ E
- 赏讼视频会议系统
+ EchoChat
连接无限,沟通无界
@@ -81,11 +81,14 @@
@@ -278,14 +281,17 @@ export default {
.logo-box {
width: 112rpx;
height: 112rpx;
+ border-radius: 24rpx;
+ background-color: #2563EB;
display: flex;
align-items: center;
justify-content: center;
}
-.brand-logo {
- width: 112rpx;
- height: 112rpx;
+.logo-letter {
+ font-size: 52rpx;
+ font-weight: 700;
+ color: #FFFFFF;
}
.brand-name {
@@ -455,8 +461,46 @@ export default {
}
.oauth-icon {
- width: 52rpx;
- height: 52rpx;
+ width: 36rpx;
+ height: 36rpx;
+ border-radius: 50%;
+ background-color: rgba(255, 255, 255, 0.94);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 22rpx;
+ font-weight: 700;
+ line-height: 36rpx;
+}
+
+.oauth-icon-wechat {
+ position: relative;
+ color: #07C160;
+}
+
+.oauth-icon-qq {
+ color: #12B7F5;
+}
+
+.wechat-bubble {
+ position: absolute;
+ border-radius: 50%;
+ background-color: #07C160;
+}
+
+.wechat-bubble-large {
+ width: 18rpx;
+ height: 14rpx;
+ left: 8rpx;
+ top: 10rpx;
+}
+
+.wechat-bubble-small {
+ width: 14rpx;
+ height: 11rpx;
+ right: 7rpx;
+ bottom: 9rpx;
+ border: 2rpx solid #FFFFFF;
}
/* ---- 底部链接 ---- */
diff --git a/frontend/src/pages/cloud-law/video-call.vue b/frontend/src/pages/cloud-law/video-call.vue
index 90145ac..77109d2 100644
--- a/frontend/src/pages/cloud-law/video-call.vue
+++ b/frontend/src/pages/cloud-law/video-call.vue
@@ -7,6 +7,7 @@
{{ entryTitle }}
{{ joinError || stateText }}
+
@@ -425,6 +426,8 @@ const buildMiniProgramReturnUrl = () => {
return `/pages_work/ai_consult/ai_consult?id=${encodeURIComponent(consultId.value)}&mode=detail&from=videoCall`
}
+let endedRedirectTimer = null
+
const notifyMiniProgramCallEnded = () => {
const payload = {
type: 'cloudLawCallEnded',
@@ -446,6 +449,18 @@ const notifyMiniProgramCallEnded = () => {
}
}
+const scheduleEndedRedirect = () => {
+ if (endedRedirectTimer) return
+ endedRedirectTimer = setTimeout(() => {
+ endedRedirectTimer = null
+ notifyCloudLawEnd().finally(() => notifyMiniProgramCallEnded())
+ }, 1200)
+}
+
+const goToConsultDetail = () => {
+ notifyCloudLawEnd().finally(() => notifyMiniProgramCallEnded())
+}
+
const pollCommandsOnce = async () => {
if (!callId.value || !meetingStore.isInMeeting || leaving.value || ended.value || commandPolling) return
commandPolling = true
@@ -827,6 +842,7 @@ const hangup = async () => {
ended.value = true
leaving.value = false
notifyMiniProgramCallEnded()
+ scheduleEndedRedirect()
}
}
@@ -855,11 +871,20 @@ onMounted(() => {
const label = MEETING_ENDED_REASON_LABEL?.[reason] || '视频咨询已结束'
uni.showToast({ title: label, icon: 'none' })
ended.value = true
+ // 对方挂断或会议结束时,通知小程序跳转到「我的咨询详情」
+ notifyCloudLawEnd().finally(() => {
+ notifyMiniProgramCallEnded()
+ scheduleEndedRedirect()
+ })
}
}, { immediate: true })
})
onBeforeUnmount(() => {
+ if (endedRedirectTimer) {
+ clearTimeout(endedRedirectTimer)
+ endedRedirectTimer = null
+ }
if (timerHandle) {
clearInterval(timerHandle)
timerHandle = null