| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- import {ACCESS_TOKEN_PREFIX} from './config'
- import userInfo from './userInfo'
- import tool from './tool'
- import axiosObj from './axiosPlugin'
- import ElementUI from 'element-ui'
- import baseInfo from './baseInfo'
- const updateToken = function (callback, errorBack) {
- if (!userInfo.hasLogin()) {
- //console.log('尚未登录');
- //userInfo.clear();
- errorBack('E40004')
- return false
- }
- // 比较本地accessToken是否还有效
- if (userInfo.accessToken() && userInfo.accessTokenExpiresIn() && parseInt(userInfo.accessTokenExpiresIn()) + parseInt(userInfo.accessTokenUpdateAt()) - 30 > parseInt(tool.getTimestamp())) {
- // 有效
- //console.log('accessToken有效');
- callback(userInfo.accessToken())
- return true
- } else {
- // 已失效,去更新
- let refreshToken = userInfo.refreshToken()
- let refreshTokenExpiresIn = userInfo.refreshTokenExpiresIn()
- let refreshTokenUpdateAt = userInfo.refreshTokenUpdateAt()
- if (refreshToken && refreshTokenExpiresIn && parseInt(refreshTokenExpiresIn) - 30 + parseInt(refreshTokenUpdateAt) > parseInt(tool.getTimestamp())) {
- // 有效,去更新
- axiosObj.get(`oauth/refresh-token?refresh-token=${refreshToken}`).then(response => {
- // 更新本地accessToken
- userInfo.accessToken(response.accessToken)
- userInfo.accessTokenExpiresIn(response.accessTokenExpiresIn)
- userInfo.accessTokenUpdateAt(response.accessTokenUpdateAt)
- userInfo.refreshToken(response.refreshToken)
- userInfo.refreshTokenExpiresIn(response.refreshTokenExpiresIn)
- userInfo.refreshTokenUpdateAt(response.refreshTokenUpdateAt)
- // 成功
- //console.log('accessToken更新成功,refreshToken更新为:'+userInfo.refreshToken());
- //console.log('accessToken更新成功,refreshToken的更新时间为:'+tool.formatDate(userInfo.refreshTokenUpdateAt()));
- //console.log('accessToken更新成功,refreshToken的有效时间为:'+userInfo.refreshTokenExpiresIn());
- callback(userInfo.accessToken())
- return true
- }).catch(error => {
- //userInfo.clear();
- //console.log(error);
- errorBack('E40001')
- return false
- })
- } else {
- //console.log('refreshToken已失效');
- userInfo.clear()
- // 失效
- errorBack('E40003')
- return false
- }
- }
- }
- const network = {
- loginGetAccessToken(adminName, password, verifyCode, pageId) {
- let promise = new Promise((resolve, reject) => {
- // if(userInfo.hasLogin()){
- // reject('E40005');
- // return false;
- // }
- axiosObj.post(`oauth/login?page_id=${pageId}`, {
- LoginForm: {
- adminName,
- password,
- verifyCode,
- }
- }).then(response => {
- // 更新本地accessToken
- userInfo.updateLoginAllInfo(response)
- // 成功
- resolve(response)
- }).catch(error => {
- //console.log('登录获取数据错误');
- userInfo.clear()
- reject(error)
- })
- })
- return promise
- },
- updateToken() {
- let promise = new Promise((resolve, reject) => {
- updateToken(function (accessToken) {
- resolve(accessToken)
- }, function (error) {
- reject(error)
- })
- })
- return promise
- },
- getUserInfo() {
- let promise = new Promise((resolve, reject) => {
- updateToken(function (accessToken) {
- axiosObj.get(`oauth/info`, {
- headers: {
- 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
- }
- }).then(response => {
- // 更新本地userInfo
- userInfo.userId(response.ID)
- userInfo.adminName(response.ADMIN_NAME)
- userInfo.baseData({roleId: response.ROLE_ID})
- // 成功
- resolve(response)
- }).catch(error => {
- reject(error)
- })
- }, function (error) {
- reject(error)
- })
- })
- return promise
- },
- getBaseInfo() {
- let promise = new Promise((resolve, reject) => {
- updateToken(function (accessToken) {
- axiosObj.get(`site/base-info`, {
- headers: {
- 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
- }
- }).then(response => {
- // 更新本地baseInfo
- baseInfo.set(response)
- // 成功
- resolve(response)
- }).catch(error => {
- reject(error)
- })
- }, function (error) {
- reject(error)
- })
- })
- return promise
- },
- getData(route, data = null) {
- if (data === null) {
- data = {}
- }
- let promise = new Promise((resolve, reject) => {
- updateToken(function (accessToken) {
- axiosObj.get(`${route}`, {
- params: data,
- headers: {
- 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
- }
- }).then(response => {
- // 成功
- resolve(response)
- }).catch(error => {
- error = tool.errorHandle(error)
- ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
- reject(error)
- })
- }, function (error) {
- error = tool.errorHandle(error)
- ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
- reject(error)
- })
- })
- return promise
- },
- postData(route, data) {
- let promise = new Promise((resolve, reject) => {
- updateToken(function (accessToken) {
- axiosObj.post(`${route}`, data, {
- headers: {
- 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
- }
- }).then(response => {
- // 成功
- resolve(response)
- }).catch(error => {
- error = tool.errorHandle(error)
- ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
- reject(error)
- })
- }, function (error) {
- error = tool.errorHandle(error)
- ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
- reject(error)
- })
- })
- return promise
- },
- getPageData(obj, path, page = null, pageSize = null, data = null, callback = null, isLoading = null, percentFieldName = null) {
- if (isLoading === false) {
- obj.loading = isLoading
- } else {
- obj.loading = true
- }
- if (page === null) page = 1
- if (pageSize === null) pageSize = 20
- let paramsData = {
- page: page,
- pageSize: pageSize,
- }
- if (data === null || tool.isEmptyObject(data)) {
- // 查看地址栏中的内容,如果有内容则把地址栏中的参数给拿到
- if(window.location.href.indexOf('filter') !== -1){
- let nowUrl = tool.parseURL(window.location.href)
- if(nowUrl.params.filter){
- data = JSON.parse(unescape(nowUrl.params.filter))
- if(obj.filterModel){
- obj.filterModel = data
- }
- }
- }
- }
- paramsData = Object.assign(paramsData, data)
- network.getData(path, paramsData).then(response => {
- obj.tableData = response.list
- obj.tableHeaders = response.columnsShow ? response.columnsShow : []
- obj.loading = false
- obj.currentPage = page
- obj.totalPages = parseInt(response.totalPages)
- obj.totalCount = parseInt(response.totalCount)
- obj.pageSize = pageSize
- if (percentFieldName !== null) {
- if(percentFieldName.length > 0){
- for(let i in obj.tableData){
- for(let j in percentFieldName){
- obj.$set(obj.percentList[percentFieldName[j]], obj.tableData[i].ID, obj.tableData[i][percentFieldName[j]])
- }
- }
- }
- }
- if (callback !== null) {
- callback(response)
- }
- }).catch(response => {
- obj.loading = false
- })
- },
- getDaysDiff() {
- let promise = new Promise((resolve, reject) => {
- axiosObj.get(`site/days-diff`).then(response => {
- // 更新本地baseInfo
- baseInfo.setDaysDiff(response.daysDiff)
- // 成功
- resolve(response)
- }).catch(error => {
- reject(error)
- })
- })
- return promise
- }
- }
- export default network
|