New file |
| | |
| | | import Vue from 'vue' |
| | | import axios from 'axios' |
| | | import * as $CONST from '@/utils/constant' |
| | | import * as $T from '@/utils/tools' |
| | | // import $store from '@/store' |
| | | |
| | | /** |
| | | * 定义传入参数数据格式 |
| | | * |
| | | * === 删除数据 === |
| | | * { |
| | | * key:['dataId1','dataId2'] |
| | | * } |
| | | * |
| | | */ |
| | | |
| | | /** |
| | | * 定义返回的json数据格式 |
| | | * |
| | | * === 分页数据 === |
| | | * { |
| | | * code:200, --- 目前框架认为0和200都是成功状态 |
| | | * message:'按业务自定义', |
| | | * data:{ |
| | | * records:[{...},{...}], --- 可按自己业务替换属性 |
| | | * total:xx, --- 可按自己业务替换属性 |
| | | * size:xx, --- 可按自己业务替换属性 |
| | | * current:xx, --- 可按自己业务替换属性 |
| | | * pages:xx --- 可按自己业务替换属性 |
| | | * }, |
| | | * } |
| | | * |
| | | * === 列表数据 === |
| | | * |
| | | * { |
| | | * code:200, |
| | | * message:'按业务自定义', |
| | | * data:[{..},{..}...] |
| | | * } |
| | | * |
| | | * === 一条数据 === |
| | | * |
| | | * { |
| | | * code:200, |
| | | * message:'按业务自定义', |
| | | * data:{...} |
| | | * } |
| | | * |
| | | * === 无返回数据 === |
| | | * |
| | | * { |
| | | * code:200, |
| | | * message:'按业务自定义', |
| | | * data: null |
| | | * } |
| | | * |
| | | * === 树形结构 === |
| | | * |
| | | * { |
| | | * code:200, |
| | | * message:'按业务自定义' |
| | | * data:[{ |
| | | * prop:xx, |
| | | * ... |
| | | * children: [ |
| | | * prop:xx, |
| | | * ... |
| | | * children:[...] |
| | | * ] |
| | | * }, |
| | | * { |
| | | * prop:xx, |
| | | * ... |
| | | * children: [ |
| | | * prop:xx, |
| | | * ... |
| | | * children:[...] |
| | | * ] |
| | | * }] |
| | | * } |
| | | * |
| | | */ |
| | | |
| | | // 创建axios实例 |
| | | const Service = axios.create({ |
| | | timeout: 1000 |
| | | }) |
| | | |
| | | const CancelToken = axios.CancelToken |
| | | |
| | | /* |
| | | function showDebugInfo(config) { |
| | | console.group('%cMethod::' + config.method + '::Url::' + config.url, 'color:red;font-size:12px;') |
| | | console.log('%c保存/更新/查看场合,传入的参数::', 'font-size:12px;') |
| | | console.log(config.hasOwnProperty('params') ? JSON.stringify(config.params) : JSON.stringify(config.data)) |
| | | console.groupEnd() |
| | | } |
| | | |
| | | function filterOauthData(config) { |
| | | let url = config.url |
| | | if (config.method === 'post' && $t.isExistOauthApi(url)) { |
| | | // post请求的场合下,追加角色名称 |
| | | } |
| | | |
| | | if (config.method === 'get' && $t.isExistOauthApi(url)) { |
| | | // get请求的场合下,追加角色名称 |
| | | if (config.hasOwnProperty('params')) { |
| | | config.params['userCode'] = '' |
| | | } else { |
| | | config['params'] = {} |
| | | config.params['userCode'] = '' |
| | | } |
| | | } |
| | | return config |
| | | } */ |
| | | |
| | | // request拦截器 |
| | | Service.interceptors.request.use( |
| | | config => { |
| | | // 临时追加 |
| | | // if ($store.state.user.account) { |
| | | // config.headers.account = $store.state.user.account |
| | | // } |
| | | const copyConfig = Object.assign({}, config) |
| | | // copyConfig = filterOauthData(copyConfig) |
| | | // showDebugInfo(copyConfig) |
| | | copyConfig.cancelToken = new CancelToken((c) => { |
| | | // 页面失效场景,取消padding中请求 |
| | | Vue.prototype.$cancels.push(c) |
| | | // todo 快速双击取消重复请求 |
| | | // 重复请求场景,取消掉上一个未padding中请求 |
| | | }) |
| | | return copyConfig |
| | | }, |
| | | error => { |
| | | Promise.reject(error) |
| | | }) |
| | | |
| | | // respone拦截器 |
| | | Service.interceptors.response.use( |
| | | response => { |
| | | // const res = response.data |
| | | // if (Number(res.code) !== 200 && Number(res.code) !== 0) { |
| | | // $T.warning(res.message) |
| | | // return Promise.reject(res.message) |
| | | // } else { |
| | | // return res |
| | | // } |
| | | return response.data |
| | | }, |
| | | error => { |
| | | if (error.message && error.message.includes('timeout')) { |
| | | $T.fail($CONST.MSG_SYS_TIME_OUT) |
| | | return Promise.reject(error) |
| | | } |
| | | |
| | | if (!error.response) { |
| | | $T.fail($CONST.MSG_SYS_ERR) |
| | | return Promise.reject(error) |
| | | } |
| | | |
| | | switch (error.response.status) { |
| | | // http status handler |
| | | case 404: |
| | | $T.fail($CONST.MSG_SYS_404) |
| | | break |
| | | case 500: |
| | | $T.fail($CONST.MSG_SYS_ERR) |
| | | break |
| | | case 503: |
| | | $T.fail($CONST.MSG_SYS_503) |
| | | break |
| | | } |
| | | |
| | | return Promise.reject(error) |
| | | } |
| | | ) |
| | | |
| | | const $http = {} |
| | | $http.$service = Service |
| | | $http.$axios = axios |
| | | $http.get = function (url, params = {}) { |
| | | if ($T.isInlineParams(url)) { |
| | | // 严格遵循restful标准的url的场景 |
| | | url = $T.replaceUrlParams(url, params) |
| | | params = {} |
| | | } |
| | | return Service({ |
| | | url: url, |
| | | method: 'get', |
| | | params: $T.filterParams(params) |
| | | }) |
| | | } |
| | | $http.post = function (url, data = {}) { |
| | | return Service({ |
| | | url: url, |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | $http.put = function (url, data = {}) { |
| | | return Service({ |
| | | url: url, |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | } |
| | | $http.delete = function (url, data = {}) { |
| | | return Service({ |
| | | url: url, |
| | | method: 'delete', |
| | | data: data |
| | | }) |
| | | } |
| | | export default $http |