import axios from 'axios' import { Toast } from 'antd-mobile' import md5 from 'md5' import { data } from '@/utils/mockdata.js' import Utils from '@/utils/utils.js' axios.defaults.crossDomain = true 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('Upload') || config.url.includes('doupload') || config.url.includes('dopreload')) { config.headers = { 'Content-Type': 'multipart/form-data' } } else { config.data = JSON.stringify(config.data) } return config }, (error) => { return Promise.reject(error) }) axios.interceptors.response.use((response) => { return Promise.resolve(response.data) }, (error) => { Toast.hide() Toast.offline('状态码-' + error.response.status + ',请联系管理员', 3) return Promise.reject(error) }) class Api { constructor() { if (process.env.NODE_ENV === 'production') { axios.defaults.baseURL = document.location.origin + '/' + window.GLOB.service } else { // axios.defaults.baseURL = 'http://127.0.0.1:8888' } } /** * @description 使用dostar接口,跳过验证 * @param {Object} param 查询及提交参数 */ dostarInterface (param) { param.userid = '' return axios({ url: '/webapi/dostar', data: param }) } getTouristMsg (param) { param.appkey = window.GLOB.appkey || '' if (window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon') } return axios({ url: '/webapi/dologon', data: param }) } /** * @description 使用dostars通用接口接口 * @param {Object} param 查询及提交参数 */ normalInterface (param) { param.lang = sessionStorage.getItem('lang') || '' param.SessionUid = localStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || 'bh0bapabtd45epsgra79segbch6c1ibk' param.userid = param.userid || sessionStorage.getItem('UserID') || 'bh0bapabtd45epsgra79segbch6c1ibk' param.appkey = window.GLOB.appkey || '' param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() let values = '' keys.forEach(key => { if (key === 'rduri' || key === 't') return if (typeof(param[key]) === 'object') { values += key + JSON.stringify(param[key]) } else { values += key + param[key] } }) param.sign = md5(values) param.t = new Date().getTime() return axios({ url: '/webapi/dostar', data: param }) } /** * @description 登录系统, 获取用户信息 */ getusermsg (username, password) { let param = { // func: 'webapi_login', UserName: username, Password: password, systemType: 'local', Type: 'X' } param.Password = Utils.formatOptions(param.Password) param.appkey = window.GLOB.appkey || '' if (window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon') } return axios({ url: '/webapi/dologon', data: param }) } getMockData (param) { return new Promise((resolve, reject) => { let _param = {} _param.userid = sessionStorage.getItem('UserID') _param.lang = localStorage.getItem('lang') || '' _param.SessionUid = localStorage.getItem('SessionUid') || '' _param.LoginUID = sessionStorage.getItem('LoginUID') || '' _param.appkey = window.GLOB.appkey || '' _param.func = 'sPC_Get_LongParam' _param.MenuID = '15928026905645arqoi0cu0p6tvhk2g1' _param.rduri = 'http://cloud.mk9h.cn/webapi/dostar' axios({ url: `/webapi/dostar`, data: _param }).then(() => { setTimeout(() => { resolve({ status: true, LongParam: data[param.MenuID] }) }, 300) }) }) } /** * @description 获取或修改系统配置,增加appkey */ getSystemConfig (param) { param.userid = param.userid || sessionStorage.getItem('UserID') param.lang = localStorage.getItem('lang') || '' param.SessionUid = localStorage.getItem('SessionUid') || '' param.LoginUID = param.LoginUID || sessionStorage.getItem('LoginUID') || '' param.appkey = window.GLOB.appkey || '' if (window.GLOB.mainSystemApi) { param.rduri = param.rduri || window.GLOB.mainSystemApi } param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() let values = '' keys.forEach(key => { if (key === 'rduri' || key === 't') return if (typeof(param[key]) === 'object') { values += key + JSON.stringify(param[key]) } else { values += key + param[key] } }) param.sign = md5(values) param.t = new Date().getTime() return axios({ url: `/webapi/dostar${param.func ? '/' + param.func : ''}`, 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 || '' param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() let values = '' keys.forEach(key => { if (key === 'rduri' || key === 't') return if (typeof(param[key]) === 'object') { values += key + JSON.stringify(param[key]) } else { values += key + param[key] } }) param.sign = md5(values) param.t = new Date().getTime() return axios({ url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, data: param }) } /** * @description 获取业务通用接口 */ genericInterface (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 (sessionStorage.getItem('isEditState') === 'true') { // HS下菜单 param.userid = sessionStorage.getItem('CloudUserID') param.SessionUid = sessionStorage.getItem('CloudSessionUid') || '' param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' } param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() let values = '' keys.forEach(key => { if (key === 'rduri' || key === 't') return if (typeof(param[key]) === 'object') { values += key + JSON.stringify(param[key]) } else { values += key + param[key] } }) param.sign = md5(values) param.t = new Date().getTime() return axios({ url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, 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') || '' param.appkey = window.GLOB.appkey || '' 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 上传base64 * @param {String} base64 base64图片编码 */ fileuploadbase64 (base64, service = 'local') { let param = { func: '', BasePath: 'Content/Upload', lang: localStorage.getItem('lang') || '', appkey: window.GLOB.appkey || '', Base64Img: base64 } if (service === 'sso' && window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi param.userid = sessionStorage.getItem('UserID') param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' } else { param.userid = sessionStorage.getItem('UserID') param.SessionUid = sessionStorage.getItem('SessionUid') || '' param.LoginUID = sessionStorage.getItem('LoginUID') || '' } param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() let values = '' keys.forEach(key => { if (key === 'rduri' || key === 't') return if (typeof(param[key]) === 'object') { values += key + JSON.stringify(param[key]) } else { values += key + param[key] } }) param.sign = md5(values) param.t = new Date().getTime() if (param.rduri) { param.rduri = param.rduri.replace(/webapi(.*)$/, 'webapi/SaveBase64Image') return axios({ url: '/webapi/dostars', data: param }) } else { return axios({ url: '/webapi/SaveBase64Image', data: param }) } } /** * @description 大文件上传 */ getLargeFileUpload (param) { return axios({ url: '/webapi/doupload', data: param }) } /** * @description 查询文件是否已上传 */ getFilePreUpload (param) { return axios({ url: '/webapi/dopreload', data: param }) } /** * @description 获取微信支付二维码 */ getWxNativePay (param) { return axios({ url: '/wxpay/wxNativePay', data: param }) } /** * @description 文件上传 */ getFileUpload (param) { return axios({ url: '/zh-CN/Home/Upload', 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 }) } } export default new Api()