33</template >
44
55<script lang="ts" setup>
6- import { nextTick , defineProps , onBeforeUnmount } from ' vue'
7- import { useRoute , useRouter } from ' vue-router'
8- import { getBrowserLang } from ' @/locales'
6+ import {nextTick , defineProps , onBeforeUnmount } from ' vue'
7+ import {useRoute , useRouter } from ' vue-router'
8+ import {getBrowserLang } from ' @/locales'
99import useStore from ' @/stores'
10+
1011const WE_COM_ORIGIN = ' https://login.work.weixin.qq.com'
1112const LOGIN_STATE = ' fit2cloud-wecom-qr'
1213const props = defineProps <{
@@ -21,10 +22,10 @@ const props = defineProps<{
2122
2223const router = useRouter ()
2324const route = useRoute ()
24- const { chatUser } = useStore ()
25+ const {chatUser} = useStore ()
2526
2627const {
27- params : { accessToken },
28+ params : {accessToken},
2829} = route as any
2930
3031let iframe: HTMLIFrameElement | null = null
@@ -52,16 +53,6 @@ function getLang() {
5253 return lang === ' en-US' ? ' en' : ' zh'
5354}
5455
55- async function handleLoginSuccess(code : string ) {
56- await chatUser .wecomCallback (code , accessToken )
57-
58- router .push ({
59- name: ' chat' ,
60- params: { accessToken },
61- query: route .query ,
62- })
63- }
64-
6556function cleanup() {
6657 iframe ?.remove ()
6758 iframe = null
@@ -86,13 +77,20 @@ const init = async () => {
8677 ` &panel_size=small ` +
8778 ` &redirect_type=self `
8879 iframe .addEventListener (' load' , (e ) => {
80+ console .log (' load' , iframe )
8981 if (iframe ?.contentWindow ) {
90- iframe ? .contentWindow ? .stop ()
82+ iframe .contentWindow .stop ()
9183 const searchParams = new URLSearchParams (iframe .contentWindow .location .search )
9284 const code = searchParams .get (' code' )
9385 if (code ) {
94- handleLoginSuccess (code )
95- cleanup ()
86+ chatUser .wecomCallback (code , accessToken ).then ((ok ) => {
87+ router .push ({
88+ name: ' chat' ,
89+ params: {accessToken },
90+ query: route .query ,
91+ })
92+ cleanup ()
93+ })
9694 }
9795 }
9896 })
0 commit comments