request.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. import {
  2. config
  3. } from './config.js'
  4. import {
  5. tansParams
  6. } from "./util.js";
  7. import {
  8. hex_md5
  9. } from '@/utils/md5.js';
  10. export const apiResquest = (prams) => {
  11. return new Promise((resolve, reject) => {
  12. const timestamp = Date.now().toString();
  13. const sign = generateSign(config.APP_ID, config.APP_SECRET, timestamp, prams.data);
  14. let url = config.base_url + prams.url;
  15. uni.showLoading({
  16. title: '加载中',
  17. mask: true
  18. });
  19. // get请求映射params参数
  20. if (prams.method === 'GET' && prams.data) {
  21. url = url + '?' + tansParams(prams.data);
  22. url = url.slice(0, -1);
  23. prams.data = {};
  24. }
  25. return uni.request({
  26. timeout:10000,
  27. url: url,
  28. data: {
  29. ...prams.data
  30. },
  31. method: prams.method,
  32. header: {
  33. 'content-type': 'application/json;charset=utf-8',
  34. // 'Authorization': uni.getStorageSync('token'),
  35. 'timestamp': timestamp,
  36. 'sign': sign
  37. },
  38. success: (res) => {
  39. // 成功
  40. uni.hideLoading()
  41. if (res.statusCode == 200) {
  42. if (res.data.code == 200) {
  43. resolve(res);
  44. } else if (res.data.code == 401) {
  45. loginTimeout();
  46. } else {
  47. uni.showToast({
  48. mask: true,
  49. icon: "none",
  50. position: "center",
  51. title: res.data.message,
  52. duration: 2000
  53. });
  54. resolve(res);
  55. }
  56. } else if (res.statusCode == 401) {
  57. loginTimeout();
  58. } else {
  59. uni.showToast({
  60. mask: true,
  61. icon: "none",
  62. position: "center",
  63. title: '连接异常,请联系管理员.',
  64. duration: 2000
  65. });
  66. resolve(res);
  67. }
  68. },
  69. fail: (err) => {
  70. // 失败
  71. uni.hideLoading()
  72. uni.showToast({
  73. mask: true,
  74. icon: "none",
  75. position: "center",
  76. title: '出错啦~请联系管理员!',
  77. duration: 2000
  78. });
  79. },
  80. complete: () => {
  81. // 完成
  82. }
  83. });
  84. })
  85. }
  86. export const apiResquestOutside = (prams) => {
  87. return new Promise((resolve, reject) => {
  88. let url = prams.url;
  89. uni.showLoading({
  90. title: '加载中',
  91. mask: true
  92. });
  93. // get请求映射params参数
  94. if (prams.method === 'GET' && prams.data) {
  95. url = url + '?' + tansParams(prams.data);
  96. url = url.slice(0, -1);
  97. prams.data = {};
  98. }
  99. return uni.request({
  100. timeout:10000,
  101. url: url,
  102. data: {
  103. ...prams.data
  104. },
  105. method: prams.method,
  106. header: {
  107. 'content-type': 'application/json;charset=utf-8',
  108. 'Authorization': uni.getStorageSync('token')
  109. },
  110. success: (res) => {
  111. // 成功
  112. uni.hideLoading()
  113. if (res.statusCode == 200) {
  114. if (res.data.code == 200) {
  115. resolve(res);
  116. } else if (res.data.code == 401) {
  117. loginTimeout();
  118. } else {
  119. uni.showToast({
  120. mask: true,
  121. icon: "none",
  122. position: "center",
  123. title: res.data.message,
  124. duration: 2000
  125. });
  126. resolve(res);
  127. }
  128. } else if (res.statusCode == 401) {
  129. loginTimeout();
  130. } else {
  131. uni.showToast({
  132. mask: true,
  133. icon: "none",
  134. position: "center",
  135. title: '连接异常,请联系管理员.',
  136. duration: 2000
  137. });
  138. resolve(res);
  139. }
  140. },
  141. fail: (err) => {
  142. // 失败
  143. uni.hideLoading()
  144. uni.showToast({
  145. mask: true,
  146. icon: "none",
  147. position: "center",
  148. title: '出错啦~请联系管理员!',
  149. duration: 2000
  150. });
  151. },
  152. complete: () => {
  153. // 完成
  154. }
  155. });
  156. })
  157. }
  158. export const apiResquestForm = (prams) => {
  159. return new Promise((resolve, reject) => {
  160. let url = config.base_url + prams.url;
  161. uni.showLoading({
  162. title: '加载中',
  163. mask: true
  164. });
  165. // get请求映射params参数
  166. if (prams.method === 'GET' && prams.data) {
  167. url = url + '?' + tansParams(prams.data);
  168. url = url.slice(0, -1);
  169. prams.data = {};
  170. }
  171. return uni.request({
  172. timeout:10000,
  173. url: url,
  174. data: {
  175. ...prams.data
  176. },
  177. method: prams.method,
  178. header: {
  179. 'content-type': 'application/x-www-form-urlencoded',
  180. 'Authorization': uni.getStorageSync('token')
  181. },
  182. success: (res) => {
  183. // 成功
  184. uni.hideLoading()
  185. if (res.statusCode == 200) {
  186. if (res.data.code == 200) {
  187. resolve(res);
  188. } else if (res.data.code == 401) {
  189. loginTimeout();
  190. } else {
  191. uni.showToast({
  192. mask: true,
  193. icon: "none",
  194. position: "center",
  195. title: res.data.message,
  196. duration: 2000
  197. });
  198. resolve(res);
  199. }
  200. } else if (res.statusCode == 401) {
  201. loginTimeout();
  202. } else {
  203. uni.showToast({
  204. mask: true,
  205. icon: "none",
  206. position: "center",
  207. title: '连接异常,请联系管理员.',
  208. duration: 2000
  209. });
  210. resolve(res);
  211. }
  212. },
  213. fail: (err) => {
  214. // 失败
  215. uni.hideLoading()
  216. uni.showToast({
  217. mask: true,
  218. icon: "none",
  219. position: "center",
  220. title: '出错啦~请联系管理员!',
  221. duration: 2000
  222. });
  223. },
  224. complete: () => {
  225. // 完成
  226. }
  227. });
  228. })
  229. }
  230. export const apiResquestJsonList = (prams) => {
  231. return new Promise((resolve, reject) => {
  232. let url = config.base_url + prams.url;
  233. uni.showLoading({
  234. title: '加载中',
  235. mask: true
  236. });
  237. // get请求映射params参数
  238. if (prams.method === 'GET' && prams.data) {
  239. url = url + '?' + tansParams(prams.data);
  240. url = url.slice(0, -1);
  241. prams.data = {};
  242. }
  243. return uni.request({
  244. timeout:10000,
  245. url: url,
  246. data: prams.data,
  247. method: prams.method,
  248. header: {
  249. 'content-type': 'application/json',
  250. 'Authorization': uni.getStorageSync('token')
  251. },
  252. success: (res) => {
  253. // 成功
  254. uni.hideLoading()
  255. if (res.statusCode == 200) {
  256. if (res.data.code == 200) {
  257. resolve(res);
  258. } else if (res.data.code == 401) {
  259. loginTimeout();
  260. } else {
  261. uni.showToast({
  262. mask: true,
  263. icon: "none",
  264. position: "center",
  265. title: res.data.message,
  266. duration: 2000
  267. });
  268. resolve(res);
  269. }
  270. } else if (res.statusCode == 401) {
  271. loginTimeout();
  272. } else {
  273. uni.showToast({
  274. mask: true,
  275. icon: "none",
  276. position: "center",
  277. title: '连接异常,请联系管理员.',
  278. duration: 2000
  279. });
  280. resolve(res);
  281. }
  282. },
  283. fail: (err) => {
  284. // 失败
  285. uni.hideLoading()
  286. uni.showToast({
  287. mask: true,
  288. icon: "none",
  289. position: "center",
  290. title: '出错啦~请联系管理员!',
  291. duration: 2000
  292. });
  293. },
  294. complete: () => {
  295. // 完成
  296. }
  297. });
  298. })
  299. }
  300. export const apiResquestFormVideo = (prams) => {
  301. return new Promise((resolve, reject) => {
  302. let url = uni.getStorageSync('cameraExtranetAgent') + prams.url;
  303. uni.showLoading({
  304. title: '加载中',
  305. mask: true
  306. });
  307. // get请求映射params参数
  308. if (prams.method === 'GET' && prams.data) {
  309. url = url + '?' + tansParams(prams.data);
  310. url = url.slice(0, -1);
  311. prams.data = {};
  312. }
  313. return uni.request({
  314. timeout:10000,
  315. url: url,
  316. data: {
  317. ...prams.data
  318. },
  319. method: prams.method,
  320. header: {
  321. 'content-type': 'application/x-www-form-urlencoded',
  322. 'Authorization': uni.getStorageSync('token')
  323. },
  324. success: (res) => {
  325. // 成功
  326. uni.hideLoading()
  327. if (res.statusCode == 200) {
  328. if (res.data.code == 200) {
  329. resolve(res);
  330. } else if (res.data.code == 401) {
  331. loginTimeout();
  332. } else {
  333. uni.showToast({
  334. mask: true,
  335. icon: "none",
  336. position: "center",
  337. title: res.data.message,
  338. duration: 2000
  339. });
  340. resolve(res);
  341. }
  342. } else if (res.statusCode == 401) {
  343. loginTimeout();
  344. } else {
  345. uni.showToast({
  346. mask: true,
  347. icon: "none",
  348. position: "center",
  349. title: '连接异常,请联系管理员.',
  350. duration: 2000
  351. });
  352. resolve(res);
  353. }
  354. },
  355. fail: (err) => {
  356. // 失败
  357. uni.hideLoading()
  358. uni.showToast({
  359. mask: true,
  360. icon: "none",
  361. position: "center",
  362. title: '出错啦~请联系管理员!',
  363. duration: 2000
  364. });
  365. },
  366. complete: () => {
  367. // 完成
  368. }
  369. });
  370. })
  371. }
  372. export const apiResquestTimer = (prams) => {
  373. return new Promise((resolve, reject) => {
  374. let url = config.base_url + prams.url;
  375. // get请求映射params参数
  376. if (prams.method === 'GET' && prams.data) {
  377. url = url + '?' + tansParams(prams.data);
  378. url = url.slice(0, -1);
  379. prams.data = {};
  380. }
  381. return uni.request({
  382. timeout:10000,
  383. url: url,
  384. data: {
  385. ...prams.data
  386. },
  387. method: prams.method,
  388. header: {
  389. 'content-type': 'application/json;charset=utf-8',
  390. 'Authorization': uni.getStorageSync('token')
  391. },
  392. success: (res) => {
  393. // 成功
  394. uni.hideLoading()
  395. if (res.statusCode == 200) {
  396. if (res.data.code == 200) {
  397. resolve(res);
  398. } else if (res.data.code == 401) {
  399. loginTimeout();
  400. } else {
  401. uni.showToast({
  402. mask: true,
  403. icon: "none",
  404. position: "center",
  405. title: res.data.message,
  406. duration: 2000
  407. });
  408. resolve(res);
  409. }
  410. } else if (res.statusCode == 401) {
  411. loginTimeout();
  412. } else {
  413. uni.showToast({
  414. mask: true,
  415. icon: "none",
  416. position: "center",
  417. title: '连接异常,请联系管理员.',
  418. duration: 2000
  419. });
  420. resolve(res);
  421. }
  422. },
  423. fail: (err) => {
  424. // 失败
  425. uni.hideLoading()
  426. uni.showToast({
  427. mask: true,
  428. icon: "none",
  429. position: "center",
  430. title: '出错啦~请联系管理员!',
  431. duration: 2000
  432. });
  433. },
  434. complete: () => {
  435. // 完成
  436. }
  437. });
  438. })
  439. }
  440. //登录超时-退出至登录页面
  441. export function loginTimeout(params) {
  442. uni.showToast({
  443. mask: true,
  444. icon: "none",
  445. position: "center",
  446. title: "登录超时,请重新登录~",
  447. duration: 2000
  448. });
  449. uni.removeStorageSync('token');
  450. uni.removeStorageSync('userId');
  451. uni.removeStorageSync('userType');
  452. setTimeout(function() {
  453. if(uni.getStorageSync('patrolLoginType')){
  454. uni.redirectTo({
  455. url: '/pages/views/login/patrolLogin',
  456. });
  457. }else{
  458. uni.redirectTo({
  459. url: '/pages/views/login/login',
  460. });
  461. }
  462. }, 2000);
  463. }
  464. // ========== 前端签名工具 ==========
  465. function generateSign(appId, appSecret, timestamp, params) {
  466. const sortedKeys = Object.keys(params).sort();
  467. let signStr = `appId=${appId}&timestamp=${timestamp}`;
  468. sortedKeys.forEach((key) => {
  469. const value = params[key];
  470. if (value !== null && value !== undefined && value !== '') {
  471. signStr += `&${key}=${value}`;
  472. }
  473. });
  474. signStr += `&appSecret=${appSecret}`;
  475. // MD5 加密,转大写
  476. return hex_md5(signStr).toUpperCase();
  477. }