import * as dd from 'dingtalk-jsapi' import router from '../router' import axios from 'axios' import qs from 'qs' var instance = axios.create() const BASE_URL = process.env.VUE_APP_API_URL // 封装instance请求拦截 instance.interceptors.response.use(res => { return Promise.resolve(res) }, err => { return new Promise((resolve, reject) => { if (err && err.response.status === 401 && err.response.data.code === 401) { refreshToken() } else if (err && err.response.status === 426 && err.response.data.code === 1) { getToken().then(res => { if (res === 40003) { router.push({ path: '/noPermission' }) } else { resolve('ok') } }) } }) }) function ispermission () { return new Promise((resolve, reject) => { // 获取用户的临时授权码 dd.runtime.permission.requestAuthCode({ corpId: localStorage.getItem('orgId'), // 企业id onSuccess: function (info) { let senddate = qs.stringify({ code: info.code, orgId: localStorage.getItem('orgId') }) // 获取用户名和密码 return instance.post(`${BASE_URL}/mingpay/v1/skipAuth/getUserInfoByCode?${senddate}`).then((res) => { if (res.data.resultCode === 0) { // 有权限登录,返回用户信息 resolve('press') } else if (res.data.resultCode === 40003) { // 无权限登录,返回40003code码 resolve(res.data.resultCode) } }).catch((err) => { console.log(err) }) }, onFail: function (err) { console.log(err) } }) }) } // 获取用户名称和密码 function getToken () { return new Promise((resolve, reject) => { // 获取用户的临时授权码 dd.runtime.permission.requestAuthCode({ corpId: localStorage.getItem('orgId'), // 企业id onSuccess: function (info) { let senddate = qs.stringify({ code: info.code, orgId: localStorage.getItem('orgId') }) // 获取用户名和密码 return instance.post(`${BASE_URL}/mingpay/v1/skipAuth/getUserInfoByCode?${senddate}`).then((res) => { if (res.data.resultCode === 0) { // 有权限登录,返回用户信息 let mingUserId = res.data.data.mingUserId let loginData = qs.stringify({ username: mingUserId, password: mingUserId, scope: 'server', grant_type: 'password' }) instance.post(`${BASE_URL}/auth/oauth/token`, loginData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Authorization': 'Basic bWluZ3BheS13ZWI6bWluZ3BheS13ZWI=' } }).then((response) => { localStorage.setItem(`access_token_${localStorage.getItem('orgId')}`, response.data.access_token) localStorage.setItem(`refresh_token_${localStorage.getItem('orgId')}`, response.data.refresh_token) localStorage.setItem(`expires_in_${localStorage.getItem('orgId')}`, response.data.expires_in * 1000) localStorage.setItem(`start_time_${localStorage.getItem('orgId')}`, new Date().getTime()) resolve('ok') }).catch(() => { }) } else if (res.data.resultCode === 40003) { // 无权限登录,返回40003code码 resolve(res.data.resultCode) } }).catch((err) => { console.log(err) }) }, onFail: function (err) { console.log(err) } }) }) } // 刷新token接口 function refreshToken () { return new Promise((resolve, reject) => { let loginData = qs.stringify({ refresh_token: localStorage.getItem(`refresh_token_${localStorage.getItem('orgId')}`), grant_type: 'refresh_token' }) instance.post(`${BASE_URL}/auth/oauth/token`, loginData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Authorization': 'Basic bWluZ3BheS13ZWI6bWluZ3BheS13ZWI=' } }).then((response) => { localStorage.setItem(`access_token_${localStorage.getItem('orgId')}`, response.data.access_token) localStorage.setItem(`refresh_token_${localStorage.getItem('orgId')}`, response.data.refresh_token) localStorage.setItem(`expires_in_${localStorage.getItem('orgId')}`, response.data.expires_in * 1000) localStorage.setItem(`start_time_${localStorage.getItem('orgId')}`, new Date().getTime()) resolve('ok') }).catch(() => { resolve('ok') }) }) } export { getToken, refreshToken, ispermission }