61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
import router from '@/router'
|
|
import store from '@/store'
|
|
import { Message } from 'element-ui'
|
|
import * as dd from 'dingtalk-jsapi'
|
|
import { apiDingtalkLogin } from '@/api/login'
|
|
import VueCookie from 'vue-cookies'
|
|
// 钉钉免登录
|
|
async function handleDingtalkLogin (val) {
|
|
const res = await apiDingtalkLogin(val)
|
|
console.log('钉钉免登录res: ', res)
|
|
if (res && res.code === 200) {
|
|
console.log('res.token: ', res.token)
|
|
VueCookie.set('token', res.token)
|
|
return 1
|
|
// window.open(window.location.protocol + '//' + window.location.host + '/digitization/kpi/workbench/home?code=' + this.dingCode.code)
|
|
} else {
|
|
Message.error('登录失败')
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// 获取钉钉鉴权码
|
|
function handleGetDingtalkCode () {
|
|
return new Promise((resolve, reject) => {
|
|
dd.runtime.permission.requestAuthCode({
|
|
corpId: 'ding267474e759bbca1c35c2f4657eb6378f',
|
|
async onSuccess (res) {
|
|
console.log('result===', res)
|
|
let result = await handleDingtalkLogin(res)
|
|
console.log('result: ', result)
|
|
resolve(result)
|
|
},
|
|
onFail (err) {
|
|
console.log('err: ', err)
|
|
reject(err)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
router.beforeEach(async (to, from, next) => {
|
|
console.log('dd---: ', dd)
|
|
if (!store.getters.userInfo.userNo && !dd.other) {
|
|
let res = await handleGetDingtalkCode()
|
|
console.log('res: ', res)
|
|
if (res === 1) {
|
|
console.log('res: ', res)
|
|
let res1 = await store.dispatch('GET_USERINFO')
|
|
console.log('res1: ', res1)
|
|
if (res1 === 1) next()
|
|
} else {
|
|
Message.error('网络错误')
|
|
next()
|
|
}
|
|
} else {
|
|
next()
|
|
}
|
|
})
|
|
|
|
router.afterEach(() => {
|
|
})
|