解决钉钉绑定失败的问题

(cherry picked from commit 88a22d90e5)
This commit is contained in:
puhui999 2023-10-26 16:19:22 +08:00 committed by shizhong
parent ca7c311f88
commit 68b2571c0c
2 changed files with 22 additions and 8 deletions

View File

@ -15,7 +15,7 @@
</div>
</template>
<div>
<el-tabs v-model="activeName" tab-position="top" style="height: 400px" class="profile-tabs">
<el-tabs v-model="activeName" class="profile-tabs" style="height: 400px" tab-position="top">
<el-tab-pane :label="t('profile.info.basicInfo')" name="basicInfo">
<BasicInfo />
</el-tab-pane>
@ -23,7 +23,7 @@
<ResetPwd />
</el-tab-pane>
<el-tab-pane :label="t('profile.info.userSocial')" name="userSocial">
<UserSocial />
<UserSocial v-model:activeName="activeName" />
</el-tab-pane>
</el-tabs>
</div>
@ -31,7 +31,7 @@
</div>
</template>
<script lang="ts" setup>
import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components'
defineOptions({ name: 'Profile' })

View File

@ -27,12 +27,15 @@ import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'
import { socialAuthRedirect, socialUnbind } from '@/api/system/user/socialUser'
defineOptions({ name: 'UserSocial' })
defineProps<{
activeName: string
}>()
const message = useMessage()
const socialUsers = ref<any[]>([])
const userInfo = ref<ProfileVO>()
const initSocial = async () => {
socialUsers.value = [] //
const res = await getUserProfileApi()
userInfo.value = res
for (const i in SystemUserSocialTypeEnum) {
@ -49,9 +52,12 @@ const initSocial = async () => {
}
}
const route = useRoute()
const emit = defineEmits<{
(e: 'update:activeName', v: string): void
}>()
const bindSocial = () => {
//
const type = route.query.type
const type = getUrlValue('type')
const code = route.query.code
const state = route.query.state
if (!code) {
@ -59,11 +65,20 @@ const bindSocial = () => {
}
socialBind(type, code, state).then(() => {
message.success('绑定成功')
emit('update:activeName', 'userSocial')
initSocial()
})
}
// encode decode
function getUrlValue(key: string): string {
const url = new URL(decodeURIComponent(location.href))
return url.searchParams.get(key) ?? ''
}
const bind = (row) => {
const redirectUri = location.origin + '/user/profile?type=' + row.type
// encode type
const redirectUri = location.origin + '/user/profile?' + encodeURIComponent(`type=${row.type}`)
//
socialAuthRedirect(row.type, encodeURIComponent(redirectUri)).then((res) => {
window.location.href = res
@ -83,9 +98,8 @@ onMounted(async () => {
watch(
() => route,
(newRoute) => {
() => {
bindSocial()
console.log(newRoute)
},
{
immediate: true