import axios from 'axios' import qs from 'qs' import {notification } from 'antd' // axios.defaults.baseURL = 'http://qingqiumarket.cn' axios.defaults.crossDomain = true // axios.defaults.headers.common['token'] = 'token' axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' axios.defaults.withCredentials = true axios.interceptors.request.use((config) => { config.method = 'post' if (config.url.includes('LoginAndRedirect') || config.url.includes('getjsonresult')) { config.data = qs.stringify(config.data) } else { config.headers.token = sessionStorage.getItem('TOKEN') || '' config.data = JSON.stringify(config.data) } return config }, (error) => { return Promise.reject(error) }) const setCurrentUrl = () => { if (!!(window.history && window.history.pushState)) { window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login') window.location.reload() } } let GlobMap = new Map() axios.interceptors.response.use((response) => { if (response.data.ErrCode === 'LoginError') { setCurrentUrl() } else { return Promise.resolve(response.data) } }, (error) => { notification.error({ className: 'notification-custom-error', bottom: 0, message: '状态码-' + error.response.status + ',请联系管理员', placement: 'bottomRight', duration: 15 }) return Promise.reject(error) }) class Api { constructor() { let service = window.GLOB.service ? (/\/$/.test(window.GLOB.service) ? window.GLOB.service : window.GLOB.service + '/') : '' if (process.env.NODE_ENV === 'production') { axios.defaults.baseURL = document.location.origin + '/' + service } else { // axios.defaults.baseURL = 'http://127.0.0.1:8888' } } /** * @description 系统授权 */ systemauth (appId, timestamp) { return axios({ url: '/webapi/dostar', data: { rduri: 'http://minkesoft.com/mksepc/webapi/dostar', func: 'sEmpowerCloud_Get_LinkUrl', userid: '', AppID: appId, TimeStamp: timestamp } }) } /** * @description 登录系统 */ loginsystem (username, password) { return axios({ url: '/zh-CN/Home/LoginAndRedirect', data: { Username: username, Password: password } }) } /** * @description 登录系统, 获取用户信息 */ getusermsg (username, password) { return axios({ url: 'webapi/getjsonresult', data: { DBT: 'proc', DBS: 'webapi_login', DBP: JSON.stringify({ 'UserName': username, 'Password': password }) } }) } /** * @description 重置密码 */ resetpassword (originpwd, newpwd) { return axios({ url: '/local/dostar', data: { func: 's_PwdUpt', userid: sessionStorage.getItem('UserID'), OriginPwd: originpwd, NewPwd: newpwd } }) } /** * @description 获取或修改系统配置,增加appkey */ getSystemConfig (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' param.appkey = window.GLOB.appkey || '' if (window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } return axios({ url: '/webapi/dostar', data: param }) } /** * @description 获取或修改本地配置,增加appkey */ getLocalConfig (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' param.appkey = window.GLOB.appkey || '' return axios({ url: '/webapi/dostar', data: param }) } /** * @description 获取系统配置,优先从缓存中取值,增加appkey */ getSystemCacheConfig (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' param.appkey = window.GLOB.appkey || '' if (window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } let _param = JSON.parse(JSON.stringify(param)) // 缓存校验,去除时间和加密字符 delete _param.timestamp delete _param.secretkey _param = JSON.stringify(_param) if (GlobMap.has(_param)) { return Promise.resolve(GlobMap.get(_param)) } else { return new Promise(resolve => { axios({ url: '/webapi/dostar', data: param }).then(res => { GlobMap.set(_param, res) resolve(res) }) }) } } /** * @description 获取业务通用接口 */ genericInterface (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' return axios({ url: '/webapi/dostar', data: param }) } /** * @description 导出Excel */ getExcelOut (param, name) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' return new Promise(resolve => { axios({ url: '/webapi/doexcel', responseType: 'blob', data: param }).then(res => { try { const blob = new Blob([res]) if (res.type === 'application/json') { const reader = new FileReader() reader.onload = e => resolve(JSON.parse(e.target.result)) reader.readAsText(blob) } else { if ('download' in document.createElement('a')) { // 非IE下载 const elink = document.createElement('a') elink.download = name elink.style.display = 'none' elink.href = URL.createObjectURL(blob) document.body.appendChild(elink) elink.click() URL.revokeObjectURL(elink.href) // 释放URL 对象 document.body.removeChild(elink) } else { // IE10+下载 navigator.msSaveBlob(blob, name) } resolve() } } catch { resolve({ ErrCode: 'E', ErrMesg: '文件解析错误', message: '', status: false }) } }) }) } /** * @description 获取页面配置信息 * @param {String} MenuNo 页面菜单参数 */ getMainConfigsData (MenuNo) { return axios({ url: '/local/dostar', data: { func: 'GetMainConfigs', userid: sessionStorage.getItem('UserID'), MenuNo: MenuNo } }) } /** * @description 获取页面列表数据 * @param {String} MenuNo 页面菜单参数 */ getMainTableData (MenuNo, pageIndex = 1, pageSize = 10, orderColumn = '', orderType = '', search) { return axios({ url: '/local/dostar', data: { func: 'GetMainData', userid: sessionStorage.getItem('UserID'), MenuNo: MenuNo, PageIndex: pageIndex, PageSize: pageSize, orderColumn: orderColumn, orderType: orderType, search: search } }) } /** * @description 获取页面配置信息 * @param {String} MenuNo 页面菜单参数 */ getModelFormData (MenuNo) { return axios({ url: '/local/dostar', data: { func: 'getModelFormData', userid: sessionStorage.getItem('UserID'), MenuNo: MenuNo } }) } /** * @description 获取页面列表数据 * @param {String} param 提交参数 */ setActionSubmit (param) { param.userid = sessionStorage.getItem('UserID') return axios({ url: '/local/dostar', data: param }) } /** * @description 通用接口 * @param {Object} param 查询及提交参数 */ commonInterface (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' param.BID = param.BID || '' param.debug = param.debug || '' return axios({ url: '/webapi/dostar', data: param }) } /** * @description 通用接口(提交) * @param {Object} param 查询及提交参数 */ submitInterface (param) { param.userid = sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' return axios({ url: '/webapi/dostar', data: param }) } // /** // * @description 登出系统 // */ // logoutsystem () { // return axios({ // url: '/local/dostar', // data: { // func: 'logout', // userid: sessionStorage.getItem('UserID') // } // }) // } } export default new Api()