This commit is contained in:
2025-11-05 23:13:09 +08:00
parent 4959b2f34f
commit e9e5b7ee52

View File

@@ -405,6 +405,26 @@ export default {
// 设置默认日期为今天
this.setDefaultDateRange()
this.getListWithFallback()
// 监听腾讯文档授权回调消息
this.handleOAuthMessage = (event) => {
if (event.data && event.data.type === 'tendoc_oauth_callback') {
if (event.data.success) {
this.$message.success(event.data.message || '授权成功!')
// 刷新token状态
this.checkTokenStatus()
} else {
this.$message.error(event.data.message || '授权失败')
}
}
}
window.addEventListener('message', this.handleOAuthMessage)
},
beforeDestroy() {
// 移除消息监听器
if (this.handleOAuthMessage) {
window.removeEventListener('message', this.handleOAuthMessage)
}
},
methods: {
/** 设置默认日期范围为今天 */
@@ -691,22 +711,22 @@ export default {
`width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`
)
// 轮询检查授权是否完成通过检查token状态
const checkAuth = setInterval(async () => {
// 监听窗口关闭事件备用方案如果postMessage失效
const checkWindowClosed = setInterval(() => {
if (authWindow.closed) {
clearInterval(checkAuth)
// 等待1秒后检查token状态
clearInterval(checkWindowClosed)
// 等待1秒后检查token状态作为备用验证
setTimeout(async () => {
try {
const tokenStatusRes = await getTokenStatus()
if (tokenStatusRes.data && tokenStatusRes.data.hasToken) {
this.$message.success('授权成功!')
// 如果已经通过postMessage收到成功消息这里不再重复提示
} else {
// 如果没有收到postMessage可能是授权失败
this.$message.warning('授权未完成,请重新尝试')
}
} catch (e) {
this.$message.warning('无法验证授权状态')
// 静默处理,避免重复提示
}
}, 1000)
}