From 390c5026c78d2be9dca4357041f4a0ec8ac3668f Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 04 二月 2020 13:57:31 +0800 Subject: [PATCH] 2020-02-04 --- src/api/index.js | 380 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 258 insertions(+), 122 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index b494a97..45b2e26 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,18 +1,22 @@ import axios from 'axios' import qs from 'qs' +import {notification } from 'antd' +import md5 from 'md5' +import Utils from '@/utils/utils.js' +import options from '@/store/options.js' -// 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')) { + if (config.url.includes('LoginAndRedirect') || config.url.includes('getjsonresult')) { config.data = qs.stringify(config.data) + } else if (config.url.includes('Upload')) { + config.headers = { 'Content-Type': 'multipart/form-data' } } else { - config.headers.token = sessionStorage.getItem('TOKEN') || '' + // config.headers.token = sessionStorage.getItem('TOKEN') || '' config.data = JSON.stringify(config.data) } @@ -21,16 +25,38 @@ return Promise.reject(error) }) +const setCurrentUrl = () => { + if (!!(window.history && window.history.pushState)) { + sessionStorage.clear() + window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login') + window.location.reload() + } +} + +let GlobMap = new Map() + axios.interceptors.response.use((response) => { - return Promise.resolve(response.data) + 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 + axios.defaults.baseURL = document.location.origin + '/' + service } else { // axios.defaults.baseURL = 'http://127.0.0.1:8888' } @@ -64,133 +90,226 @@ } }) } - - /** - * @description 鐧诲嚭绯荤粺 - */ - logoutsystem () { - return axios({ - url: '/local/dostar', - data: { - func: 'logout', - userid: sessionStorage.getItem('UserID') - } - }) - } - - /** - * @description 閲嶇疆瀵嗙爜 - */ - resetpassword (originpwd, newpwd) { - return axios({ - url: '/local/dostar', - data: { - func: 'ResetPassword', - userid: sessionStorage.getItem('UserID'), - OriginPwd: originpwd, - NewPwd: newpwd - } - }) - } /** - * @description 鑾峰彇涓昏彍鍗曟暟鎹� + * @description 鐧诲綍绯荤粺, 鑾峰彇鐢ㄦ埛淇℃伅 */ - getMainMenuData () { - return axios({ - url: '/webapi/dostar', - data: { - func: 'sPC_Get_MainMenu', - userid: sessionStorage.getItem('UserID'), - lang: localStorage.getItem('lang') || '', - SessionUid: sessionStorage.getItem('SessionUid') || '', - LoginUID: sessionStorage.getItem('LoginUID') || '' - } - }) - } + getusermsg (username, password, isCloud = false) { + let param = { + // func: 'webapi_login', + UserName: username, + Password: password, + Type: 'X' + } + param.Password = Utils.formatOptions(param.Password) - /** - * @description 鑾峰彇瀛愯彍鍗曟暟鎹� - * @param {String} menuId 涓昏彍鍗旾d - */ - getSubMenuData (menuId) { - return axios({ - url: '/webapi/dostar', - data: { - func: 'sPC_Get_FunMenu', - userid: sessionStorage.getItem('UserID'), - lang: localStorage.getItem('lang') || '', - SessionUid: sessionStorage.getItem('SessionUid') || '', - LoginUID: sessionStorage.getItem('LoginUID') || '', - ParentID: menuId - } - }) - } + if (isCloud && options.cloudLoginApi) { + param.rduri = options.cloudLoginApi + } else if (window.GLOB.mainSystemApi) { + param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon') + } - /** - * @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', + url: '/webapi/dologon', data: param }) } /** - * @description 閫氱敤鎺ュ彛 + * @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 || '' + + let _rduri = '' + if (sessionStorage.getItem('isEditState') === 'true' && options.cloudServiceApi) { // 缂栬緫鐘舵�侊紝涓斿瓨鍦ㄤ簯绔湴鍧� + _rduri = options.cloudServiceApi + param.userid = sessionStorage.getItem('CloudUserID') + param.SessionUid = sessionStorage.getItem('CloudSessionUid') || '' + param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' + } else if (window.GLOB.mainSystemApi) { + _rduri = window.GLOB.mainSystemApi + } + + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + let values = keys.map(key => key + param[key]).join('') + param.sign = md5(values) + param.t = new Date().getTime() + + if (_rduri) { + param.rduri = _rduri + } + + return axios({ + url: '/webapi/dostars', + 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.map(key => key + param[key]).join('') + param.sign = md5(values) + param.t = new Date().getTime() + + return axios({ + url: '/webapi/dostars', + data: param + }) + } + + /** + * @description 鑾峰彇绯荤粺閰嶇疆锛屼紭鍏堜粠缂撳瓨涓彇鍊硷紝澧炲姞appkey + * @param {Object} param 璇锋眰鍙傛暟 + * @param {Boolean} SSO 鏄惁涓哄崟鐐圭櫥褰曞湴鍧� + */ + getSystemCacheConfig (param, SSO = true) { + 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 && SSO) { + param.rduri = window.GLOB.mainSystemApi + } + + let _param = JSON.parse(JSON.stringify(param)) // 缂撳瓨鏍¢獙锛屽幓闄ゆ椂闂村拰鍔犲瘑瀛楃 + delete _param.timestamp + delete _param.secretkey + _param = JSON.stringify(_param) + _param = md5(_param) + + if (GlobMap.has(_param)) { + return Promise.resolve(GlobMap.get(_param)) + } else { + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + keys = keys.filter(key => key !== 'rduri') + let values = keys.map(key => key + param[key]).join('') + param.sign = md5(values) + param.t = new Date().getTime() + + return new Promise(resolve => { + axios({ + url: '/webapi/dostars', + 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') || '' + + // if (param.func === 'RolesAdd') { // 瑙掕壊娣诲姞鏃讹紝浼燼ppkey(澶栭儴鎺ュ彛缁熶竴娣诲姞) + // param.appkey = window.GLOB.appkey || '' + // } + + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + keys = keys.filter(key => key !== 'rduri' && key !== 't') + let values = keys.map(key => key + param[key]).join('') + param.sign = md5(values) + param.t = new Date().getTime() + + return axios({ + url: '/webapi/dostars', + 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')) { // 闈濱E涓嬭浇 + 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: '鏂囦欢瑙f瀽閿欒', + message: '', + status: false + }) + } + }) + }) + } + + /** + * @description 鏂囦欢涓婁紶 + */ + getFileUpload (param) { + return axios({ + url: '/zh-CN/Home/Upload', + data: param + }) + } + + /** + * @description 閫氱敤鎺ュ彛(鏁版嵁绠$悊) * @param {Object} param 鏌ヨ鍙婃彁浜ゅ弬鏁� */ commonInterface (param) { @@ -200,6 +319,23 @@ 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 -- Gitblit v1.8.0