Files
jnpf_app/pages/login/otherLogin.vue
2026-01-04 11:09:06 +08:00

114 lines
2.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@@ -0,0 +1,70 @@
<template>
<view>
<web-view :src="url"></web-view>
</view>
</template>
<script>
import {
getTicketStatus,
socialsLogin
} from '@/api/common.js'
import {
useUserStore
} from '@/store/modules/user'
export default {
data() {
return {
show: false,
url: '',
ticket: '',
ssoTimer: null,
tenantUserInfo: [],
}
},
onLoad(option) {
this.url = uni.getStorageSync('ssoUrl')
this.ticket = option.ssoTicket
this.ssoTimer = setInterval(() => {
this.getTicketStatus()
}, 1000)
},
onUnload() {
this.clearTimer()
},
methods: {
getTicketStatus() {
const userStore = useUserStore()
if (!this.ticket) return
getTicketStatus(this.ticket).then(res => {
if (res.data.status != 2) {
this.clearTimer()
// 登录成功
if (res.data.status == 1) {
uni.showLoading({
title: '登录中'
})
userStore.setToken(res.data.value)
userStore.getCurrentUser().then(res => {
uni.hideLoading()
uni.reLaunch({
url: '/pages/index/index'
});
}).catch(() => {
uni.hideLoading()
uni.reLaunch({
url: '/pages/index/index'
});
})
} else if (res.data.status == 4) {
uni.setStorageSync('ssoTicket', this.ticket)
uni.reLaunch({
url: '/pages/login/index',
success: () => this.$u.toast('第三方账号未绑定5分钟内登录本系统账号密码自动绑定该账号')
})
} else if (res.data.status == 6) {
let tenantUserInfo = JSON.parse(res.data.value)
if (tenantUserInfo.length == 1) {
uni.showLoading({
title: '登录中'
})
userStore.setToken(res.data.value)
uni.hideLoading()
uni.reLaunch({
url: '/pages/index/index'
});
} else {
uni.reLaunch({
url: '/pages/login/index?data=' + JSON.stringify(tenantUserInfo)
})
}
} else if (res.data.status == 7) {
this.$u.toast('第三方账号未绑定账号,请绑定后重试')
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/index'
})
}, 600)
} else {
this.show = false
this.ssoUrl = ''
uni.showToast({
title: res.data.value || '操作超时,请重新点击登录',
icon: 'none'
})
uni.reLaunch({
url: '/pages/login/index'
});
}
}
})
},
clearTimer() {
if (this.ssoTimer) {
clearInterval(this.ssoTimer)
this.ssoTimer = null
}
}
}
}
</script>