management_UI/src/utils/permission.js
2020-11-20 14:23:07 +08:00

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(() => {
})