http.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. import store from '@/store';
  2. import router from '@/router';
  3. import { Message } from 'element-ui';
  4. import { getToken, getSeed, setToken } from '@/utils/auth';
  5. import user from '@/api/user';
  6. var ApiUtil = {
  7. // apiPath : 'http://192.168.0.231:8001/index.php',
  8. apiPath: process.env.VUE_APP_BASE_API,
  9. jsPath: '/start/api/',
  10. loginList: ['B00103', 'B00109', '401'],
  11. showLoading() {},
  12. hideLoading() {},
  13. asyncCall(url, params, type, paramType, header) {
  14. //异步
  15. if (paramType == 'json') {
  16. params = JSON.stringify(params);
  17. }
  18. var settings = {
  19. type: type == null ? 'post' : type,
  20. params: params ? params : {},
  21. header:
  22. header == null
  23. ? {
  24. 'zoomwin-token': getToken(),
  25. 'zoomwin-sid': getSeed()
  26. }
  27. : '',
  28. dataType: 'json',
  29. processData: true,
  30. contentType:
  31. paramType == 'json'
  32. ? 'application/json;charset=UTF-8'
  33. : 'application/x-www-form-urlencoded',
  34. url: url
  35. };
  36. return this.promiseAjax(settings);
  37. },
  38. syncCall(url, params, type, paramType, header) {
  39. //同步
  40. if (paramType == 'json') {
  41. params = JSON.stringify(params);
  42. }
  43. var settings = {
  44. type: type == null ? 'post' : type,
  45. params: params ? params : {},
  46. header:
  47. header == null
  48. ? {
  49. 'zoomwin-token': getToken(),
  50. 'zoomwin-sid': getSeed()
  51. }
  52. : '',
  53. dataType: 'json',
  54. processData: true,
  55. contentType:
  56. paramType == 'json'
  57. ? 'application/json;charset=UTF-8'
  58. : 'application/x-www-form-urlencoded',
  59. url: url
  60. };
  61. return this.call(settings);
  62. },
  63. syncUploadCall(url, params) {
  64. //上传图片
  65. var settings = {
  66. type: 'post',
  67. params: params,
  68. header: {
  69. 'zoomwin-token': getToken(),
  70. 'zoomwin-sid': getSeed()
  71. },
  72. dataType: 'json',
  73. contentType: false,
  74. processData: false,
  75. url: url
  76. };
  77. return this.call(settings);
  78. },
  79. //同步ajax
  80. call(settings) {
  81. if (settings.url == null) {
  82. Message.warning('访问地址不能为空!');
  83. return;
  84. }
  85. this.showLoading();
  86. var data = null;
  87. let _this = this;
  88. $.ajax({
  89. type: settings.type,
  90. data: settings.params,
  91. headers: settings.header,
  92. dataType: settings.dataType,
  93. contentType: settings.contentType,
  94. processData: settings.processData,
  95. url: ApiUtil.apiPath + settings.url,
  96. cache: false,
  97. async: false,
  98. success: function (result) {
  99. if (result.success) {
  100. ApiUtil.hideLoading();
  101. data = result;
  102. } else {
  103. if (result.code == 'B00101') {
  104. let info = JSON.parse(localStorage.getItem('orgInfo'));
  105. let form = {
  106. token: getToken(),
  107. seed: info.metaSeed,
  108. sid: info.sessionId
  109. };
  110. let token = user.refreshToken(form);
  111. setToken(token);
  112. settings.header['zoomwin-token'] = token;
  113. data = _this.call(settings);
  114. } else if (ApiUtil.loginList.includes(result.code)) {
  115. Message({
  116. message: result.message,
  117. type: 'error',
  118. duration: 1000
  119. });
  120. store.dispatch('user/physicalExit');
  121. router.push('/login');
  122. } else {
  123. Message({
  124. message: result.message,
  125. type: 'error',
  126. duration: 1000
  127. });
  128. }
  129. data = false;
  130. }
  131. },
  132. error: function (err) {
  133. ApiUtil.hideLoading();
  134. Message.error(err.statusText);
  135. }
  136. });
  137. return data;
  138. },
  139. //异步ajax
  140. promiseAjax(settings) {
  141. if (settings.url == null) {
  142. Message.warning('访问地址不能为空!');
  143. return;
  144. }
  145. this.showLoading();
  146. let _this = this;
  147. return new Promise(function (resolve, reject) {
  148. var result = null;
  149. $.ajax({
  150. type: settings.type,
  151. data: settings.params,
  152. headers: settings.header,
  153. dataType: settings.dataType,
  154. contentType: settings.contentType,
  155. processData: settings.processData,
  156. url: ApiUtil.apiPath + settings.url,
  157. timeout: settings.timeout || 20000,
  158. cache: false,
  159. async: true,
  160. success: function (res) {
  161. if (res.success) {
  162. resolve(res);
  163. } else {
  164. if (res.code == 'B00101') {
  165. let info = JSON.parse(localStorage.getItem('orgInfo'));
  166. let form = {
  167. token: getToken(),
  168. seed: info.metaSeed,
  169. sid: info.sessionId
  170. };
  171. let token = user.refreshToken(form);
  172. setToken(token);
  173. settings.header['zoomwin-token'] = token;
  174. _this.promiseAjax(settings).then((res) => {
  175. resolve(res);
  176. });
  177. } else if (ApiUtil.loginList.includes(res.code)) {
  178. Message.error(res.message);
  179. store.dispatch('user/physicalExit');
  180. router.push('/login');
  181. reject(res);
  182. } else {
  183. Message.error(res.message);
  184. reject(res);
  185. }
  186. }
  187. },
  188. error: function (err) {
  189. Message.error(err.statusText);
  190. reject(err.statusText);
  191. }
  192. });
  193. });
  194. },
  195. import: function (modules, callback) {
  196. var returnApi = {};
  197. var importApi = [];
  198. for (var i = 0; i < modules.length; i++) {
  199. // import('./'+modules[i]+'.js').then(result=>{
  200. // for(var apis in result){
  201. // for(var func in result[apis]){
  202. // window.Api[func] = result[apis][func];
  203. // }
  204. // }
  205. // this.readyFunc();
  206. // },error=>{
  207. // alert('没有此API脚本')
  208. // });
  209. importApi.push(import(this.jsPath + modules[i] + '.js'));
  210. }
  211. Promise.all(importApi).then(
  212. (result) => {
  213. for (var i = 0; i < result.length; i++) {
  214. for (var apis in result[i]) {
  215. for (var func in result[i][apis]) {
  216. returnApi[func] = result[i][apis][func];
  217. }
  218. }
  219. }
  220. callback(returnApi);
  221. },
  222. (error) => {
  223. alert('没有此API脚本');
  224. }
  225. );
  226. },
  227. resetToken(url, params) {
  228. var settings = {
  229. type: 'post',
  230. params: params,
  231. header: {},
  232. dataType: 'json',
  233. contentType: 'application/x-www-form-urlencoded',
  234. processData: true,
  235. url: url
  236. };
  237. var token = null;
  238. $.ajax({
  239. type: settings.type,
  240. data: settings.params,
  241. headers: settings.header,
  242. dataType: settings.dataType,
  243. contentType: settings.contentType,
  244. processData: settings.processData,
  245. url: ApiUtil.apiPath + settings.url,
  246. cache: false,
  247. async: false,
  248. success: function (result) {
  249. if (result.success) {
  250. token = result.data;
  251. } else {
  252. Message({
  253. message: result.message,
  254. type: 'error',
  255. duration: 1000
  256. });
  257. token = false;
  258. }
  259. },
  260. error: function (err) {
  261. ApiUtil.hideLoading();
  262. Message.error(err.statusText);
  263. }
  264. });
  265. return token;
  266. }
  267. };
  268. export default ApiUtil;