king
2020-01-13 a8736e84e62cae98c05b1cc6ac6992e4b31e7cf2
src/api/index.js
@@ -1,9 +1,11 @@
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
@@ -11,8 +13,10 @@
  config.method = 'post'
  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)
  }
@@ -28,6 +32,8 @@
  }
}
let GlobMap = new Map()
axios.interceptors.response.use((response) => {
  if (response.data.ErrCode === 'LoginError') {
    setCurrentUrl()
@@ -35,14 +41,21 @@
    return Promise.resolve(response.data)
  }
}, (error) => {
  // console.log(error.response.status)
  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 + (window.GLOB.service ? '/' + window.GLOB.service : '')
      axios.defaults.baseURL = document.location.origin + '/' + service
    } else {
      // axios.defaults.baseURL = 'http://127.0.0.1:8888'
    }
@@ -90,26 +103,59 @@
      }
    })
  }
  /**
   * @description 重置密码
   * @description 获取或修改系统配置,增加appkey
   */
  resetpassword (originpwd, newpwd) {
  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 (sessionStorage.getItem('isEditState') && options.cloudServiceApi) { // 编辑状态,且存在云端地址
      param.rduri = options.cloudServiceApi
      param.userid = sessionStorage.getItem('CloudUserID')
      param.SessionUid = sessionStorage.getItem('CloudSessionUid') || ''
      param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
    } else if (window.GLOB.mainSystemApi) {
      param.rduri = window.GLOB.mainSystemApi
    }
    // param.nonc = Utils.getuuid()
    // param._ = new Date().getTime()
    // let keys = Object.keys(param).sort()
    // let values = keys.map(key => key + param[key]).join('')
    // param.sign  = md5(values)
    return axios({
      url: '/local/dostar',
      data: {
        func: 'ResetPassword',
        userid: sessionStorage.getItem('UserID'),
        OriginPwd: originpwd,
        NewPwd: newpwd
      }
      url: '/webapi/dostar',
      data: param
    })
  }
  /**
   * @description 获取系统配置,增加appkey
   * @description 获取或修改本地配置,增加appkey
   */
  getSystemConfig (param) {
  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') || ''
@@ -118,6 +164,41 @@
    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') || ''
    if (param.func === 'RolesAdd') { // 角色添加时,传appkey
      param.appkey = window.GLOB.appkey || ''
    }
    return axios({
      url: '/webapi/dostar',
      data: param
@@ -125,69 +206,67 @@
  }
  /**
   * @description 获取页面配置信息
   * @param {String} MenuNo 页面菜单参数
   * @description 导出Excel
   */
  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) {
  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 文件上传
   */
  getFileUpload (param) {
    return axios({
      url: '/local/dostar',
      url: '/zh-CN/Home/Upload',
      data: param
    })
  }
  /**
   * @description 通用接口
   * @description 通用接口(数据管理)
   * @param {Object} param 查询及提交参数
   */
  commonInterface (param) {
@@ -197,6 +276,7 @@
    param.LoginUID = sessionStorage.getItem('LoginUID') || ''
    param.BID = param.BID || ''
    param.debug = param.debug || ''
    return axios({
      url: '/webapi/dostar',
      data: param
@@ -204,7 +284,7 @@
  }
  /**
   * @description 通用接口(提交)
   * @description 通用接口(提交)(数据管理)
   * @param {Object} param 查询及提交参数
   */
  submitInterface (param) {
@@ -212,24 +292,12 @@
    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()