| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- import store from '@/store';
- import router from '@/router';
- import { Message } from 'element-ui';
- import { getToken, getSeed, setToken } from '@/utils/auth';
- import user from '@/api/user';
- var ApiUtil = {
- // apiPath : 'http://192.168.0.231:8001/index.php',
- apiPath: process.env.VUE_APP_BASE_API,
- jsPath: '/start/api/',
- loginList: ['B00103', 'B00109', '401'],
- showLoading() {},
- hideLoading() {},
- asyncCall(url, params, type, paramType, header) {
- //异步
- if (paramType == 'json') {
- params = JSON.stringify(params);
- }
- var settings = {
- type: type == null ? 'post' : type,
- params: params ? params : {},
- header:
- header == null
- ? {
- 'zoomwin-token': getToken(),
- 'zoomwin-sid': getSeed()
- }
- : '',
- dataType: 'json',
- processData: true,
- contentType:
- paramType == 'json'
- ? 'application/json;charset=UTF-8'
- : 'application/x-www-form-urlencoded',
- url: url
- };
- return this.promiseAjax(settings);
- },
- syncCall(url, params, type, paramType, header) {
- //同步
- if (paramType == 'json') {
- params = JSON.stringify(params);
- }
- var settings = {
- type: type == null ? 'post' : type,
- params: params ? params : {},
- header:
- header == null
- ? {
- 'zoomwin-token': getToken(),
- 'zoomwin-sid': getSeed()
- }
- : '',
- dataType: 'json',
- processData: true,
- contentType:
- paramType == 'json'
- ? 'application/json;charset=UTF-8'
- : 'application/x-www-form-urlencoded',
- url: url
- };
- return this.call(settings);
- },
- syncUploadCall(url, params) {
- //上传图片
- var settings = {
- type: 'post',
- params: params,
- header: {
- 'zoomwin-token': getToken(),
- 'zoomwin-sid': getSeed()
- },
- dataType: 'json',
- contentType: false,
- processData: false,
- url: url
- };
- return this.call(settings);
- },
- //同步ajax
- call(settings) {
- if (settings.url == null) {
- Message.warning('访问地址不能为空!');
- return;
- }
- this.showLoading();
- var data = null;
- let _this = this;
- $.ajax({
- type: settings.type,
- data: settings.params,
- headers: settings.header,
- dataType: settings.dataType,
- contentType: settings.contentType,
- processData: settings.processData,
- url: ApiUtil.apiPath + settings.url,
- cache: false,
- async: false,
- success: function (result) {
- if (result.success) {
- ApiUtil.hideLoading();
- data = result;
- } else {
- if (result.code == 'B00101') {
- let info = JSON.parse(localStorage.getItem('orgInfo'));
- let form = {
- token: getToken(),
- seed: info.metaSeed,
- sid: info.sessionId
- };
- let token = user.refreshToken(form);
- setToken(token);
- settings.header['zoomwin-token'] = token;
- data = _this.call(settings);
- } else if (ApiUtil.loginList.includes(result.code)) {
- Message({
- message: result.message,
- type: 'error',
- duration: 1000
- });
- store.dispatch('user/physicalExit');
- router.push('/login');
- } else {
- Message({
- message: result.message,
- type: 'error',
- duration: 1000
- });
- }
- data = false;
- }
- },
- error: function (err) {
- ApiUtil.hideLoading();
- Message.error(err.statusText);
- }
- });
- return data;
- },
- //异步ajax
- promiseAjax(settings) {
- if (settings.url == null) {
- Message.warning('访问地址不能为空!');
- return;
- }
- this.showLoading();
- let _this = this;
- return new Promise(function (resolve, reject) {
- var result = null;
- $.ajax({
- type: settings.type,
- data: settings.params,
- headers: settings.header,
- dataType: settings.dataType,
- contentType: settings.contentType,
- processData: settings.processData,
- url: ApiUtil.apiPath + settings.url,
- timeout: settings.timeout || 20000,
- cache: false,
- async: true,
- success: function (res) {
- if (res.success) {
- resolve(res);
- } else {
- if (res.code == 'B00101') {
- let info = JSON.parse(localStorage.getItem('orgInfo'));
- let form = {
- token: getToken(),
- seed: info.metaSeed,
- sid: info.sessionId
- };
- let token = user.refreshToken(form);
- setToken(token);
- settings.header['zoomwin-token'] = token;
- _this.promiseAjax(settings).then((res) => {
- resolve(res);
- });
- } else if (ApiUtil.loginList.includes(res.code)) {
- Message.error(res.message);
- store.dispatch('user/physicalExit');
- router.push('/login');
- reject(res);
- } else {
- Message.error(res.message);
- reject(res);
- }
- }
- },
- error: function (err) {
- Message.error(err.statusText);
- reject(err.statusText);
- }
- });
- });
- },
- import: function (modules, callback) {
- var returnApi = {};
- var importApi = [];
- for (var i = 0; i < modules.length; i++) {
- // import('./'+modules[i]+'.js').then(result=>{
- // for(var apis in result){
- // for(var func in result[apis]){
- // window.Api[func] = result[apis][func];
- // }
- // }
- // this.readyFunc();
- // },error=>{
- // alert('没有此API脚本')
- // });
- importApi.push(import(this.jsPath + modules[i] + '.js'));
- }
- Promise.all(importApi).then(
- (result) => {
- for (var i = 0; i < result.length; i++) {
- for (var apis in result[i]) {
- for (var func in result[i][apis]) {
- returnApi[func] = result[i][apis][func];
- }
- }
- }
- callback(returnApi);
- },
- (error) => {
- alert('没有此API脚本');
- }
- );
- },
- resetToken(url, params) {
- var settings = {
- type: 'post',
- params: params,
- header: {},
- dataType: 'json',
- contentType: 'application/x-www-form-urlencoded',
- processData: true,
- url: url
- };
- var token = null;
- $.ajax({
- type: settings.type,
- data: settings.params,
- headers: settings.header,
- dataType: settings.dataType,
- contentType: settings.contentType,
- processData: settings.processData,
- url: ApiUtil.apiPath + settings.url,
- cache: false,
- async: false,
- success: function (result) {
- if (result.success) {
- token = result.data;
- } else {
- Message({
- message: result.message,
- type: 'error',
- duration: 1000
- });
- token = false;
- }
- },
- error: function (err) {
- ApiUtil.hideLoading();
- Message.error(err.statusText);
- }
- });
- return token;
- }
- };
- export default ApiUtil;
|