request.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. const app = getApp();
  2. // download.zhiqiyun.com 域名
  3. const env = {
  4. NODE_ENV: 'pota',
  5. dev: {
  6. apiUrl: 'https://unwx.e-chinalife.com/hktonline'
  7. },
  8. prd: {
  9. apiUrl: 'https://apimall.zhiqiyun.com',
  10. },
  11. pota: {
  12. apiUrl: 'http://192.168.110.180:8098' ,//wjg
  13. // apiUrl: 'http://10.17.56.92:8098' ,//人寿内网
  14. // apiUrl: 'http://10.17.56.104:8005' ,//人寿内网
  15. // apiUrl: 'http://10.20.147.226:8080' ,//人寿内网
  16. // apiUrl:''
  17. }
  18. }
  19. var header = {
  20. 'content-type': 'application/x-www-form-urlencoded',
  21. }
  22. /**小程序配置 */
  23. const publics = {
  24. picUrls: 'https://zhiqiyun.oss-cn-hangzhou.aliyuncs.com/static/', //图片地址
  25. 'mapLBSKEY': 'XTABZ-5K3RW-MZVRD-3ZS33-GC5RE-YOBEG',
  26. }
  27. /*
  28. * 获取token
  29. */
  30. const getToken = (success) => {
  31. let token = getStorage('AUTH_TOKEN');
  32. if (token) {
  33. success.call(this, token);
  34. return false;
  35. } else {
  36. loadToken(data => {
  37. success.call(this, data);
  38. });
  39. }
  40. }
  41. const loadToken = (success) => {
  42. let that = this
  43. uni.request({
  44. url: env[env.NODE_ENV].apiUrl + '/api/access_token',
  45. data: {},
  46. method: 'get',
  47. header: header,
  48. success(json) {
  49. if (json.statusCode !== 200) return msg(json.data.message);
  50. if (json.data.code !== 0) return msg(json.data.msg)
  51. setStorage('AUTH_TOKEN', json.data.data);
  52. success.call(that, json.data.data);
  53. },
  54. fail() {
  55. msg('access_token 获取失败');
  56. }
  57. })
  58. }
  59. const clearValueEmpty = (data) => {
  60. let keyValue = {};
  61. for (let key in data) {
  62. let value = typeof data[key];
  63. if (value == 'string' && value) {
  64. if (data[key] != 'undefined' && data[key] != " " && data[key] != undefined && data[key] != null) {
  65. keyValue[key] = data[key];
  66. }
  67. } else if (value == 'number' && value != null) {
  68. keyValue[key] = data[key];
  69. } else if (value == 'boolean') {
  70. keyValue[key] = data[key];
  71. } else {
  72. if (data[key]) keyValue[key] = data[key];
  73. }
  74. }
  75. return keyValue;
  76. }
  77. /**
  78. * 公共请求
  79. *
  80. * @param {*} url 请求url
  81. * @param {*} data 请求参数
  82. * @param {*} method 请求方法
  83. * @param {*} success 成功函数
  84. * @param {*} isLoad 是否显示加载提示
  85. */
  86. const baseRequest = (url, data, method, success, isLoad) => {
  87. getToken(token => {
  88. if (isLoad) {
  89. load('加载中')
  90. }
  91. header.authorityToken = token;
  92. // if (url.indexOf('/v3') != -1 || url.indexOf('/paper/create') != -1) {
  93. // header['content-type'] = 'application/json;charset=UTF-8'
  94. // } else {
  95. // header['content-type'] = 'application/x-www-form-urlencoded'
  96. // }
  97. header['content-type'] = 'application/json;charset=UTF-8'
  98. try {
  99. var device_info = {};
  100. //第三放巨量投放渠道标记
  101. var pickleChannel = getStorage('pickleChannel');
  102. device_info.pickleChannel = pickleChannel;
  103. var packageChannel = getStorage('packageChannel');
  104. device_info.packageChannel = packageChannel;
  105. var deviceinfoString = JSON.stringify(device_info);
  106. deviceinfoString = deviceinfoString.replace(/{/g, '').replace(/}/g, '').replace(/:/g, '=')
  107. .replace(
  108. /,/g,
  109. ';').replace(/"/g,
  110. '');
  111. header['device-info'] = deviceinfoString;
  112. } catch (e) {}
  113. console.log('H5请求url===>',env[env.NODE_ENV].apiUrl + url,'请求方式 '+method)
  114. console.log('H5请求data===>',clearValueEmpty(data))
  115. uni.request({
  116. url: env[env.NODE_ENV].apiUrl + url,
  117. data: clearValueEmpty(data),
  118. method: method,
  119. header: header,
  120. success(json) {
  121. if (isLoad) {
  122. uni.hideLoading();
  123. }
  124. if (json.statusCode !== 200) return msg(json.data.message);
  125. if (json.data.code !== 0) {
  126. return msg(json.data.msg)
  127. }
  128. let data = json.data.data;
  129. if (typeof data === 'string' && data.indexOf("{") === 0) {
  130. data = JSON.parse(data);
  131. }
  132. console.log('H5请求返回===>',data)
  133. success.call(this, data);
  134. },
  135. fail() {
  136. if (isLoad) {
  137. uni.hideLoading();
  138. }
  139. },
  140. })
  141. })
  142. }
  143. const loadIng = (msg) => {
  144. uni.showLoading({
  145. title: msg,
  146. mask: true
  147. })
  148. }
  149. /**POST请求 */
  150. const postRequest = (url, data, success, isLoad) => {
  151. header['content-type'] = 'application/x-www-form-urlencoded'
  152. baseRequest(url, data, 'post', success, isLoad);
  153. }
  154. const postRequestLoding = (url, data, success, isLoding) => {
  155. header['content-type'] = 'application/x-www-form-urlencoded'
  156. baseRequest(url, data, 'post', success, false, isLoding);
  157. }
  158. /**GET请求 */
  159. const getRequest = (url, data, success, isLoad) => {
  160. header['content-type'] = 'application/x-www-form-urlencoded'
  161. baseRequest(url, data, 'get', success, isLoad);
  162. }
  163. /**Put请求 */
  164. const putRequest = (url, data, success, isLoad) => {
  165. header['content-type'] = 'application/x-www-form-urlencoded'
  166. baseRequest(url, data, 'put', success, isLoad)
  167. }
  168. const putRequestJson = (url, data, success, isLoad) => {
  169. header['content-type'] = 'application/json;charset=UTF-8'
  170. baseRequest(url, data, 'put', success, isLoad)
  171. }
  172. const uploadFile = (url, data, success) => {
  173. // console.log(env[env.NODE_ENV].apiUrl + url, data)
  174. getToken(token => {
  175. uni.uploadFile({
  176. url: env[env.NODE_ENV].apiUrl + url,
  177. filePath: data,
  178. name: 'file',
  179. header: {
  180. 'appId': header['appId'],
  181. 'authorityToken': token
  182. },
  183. success(res) {
  184. if (res.statusCode !== 200) return msg('文件上传失败');
  185. let data = JSON.parse(res.data);
  186. if (data.code !== 0) return msg(data.msg);
  187. success.call(this, data.data);
  188. },
  189. })
  190. })
  191. }
  192. /**弹窗 */
  193. const msg = (title, success) => {
  194. if (title) {
  195. uni.showToast({
  196. title: title,
  197. icon: 'none',
  198. success() {
  199. if (success) success.call(this);
  200. }
  201. });
  202. }
  203. return false;
  204. }
  205. const load = msg => {
  206. uni.showLoading({
  207. title: msg,
  208. mask: true
  209. })
  210. }
  211. // 去掉字符串中的特殊字符和转义字符
  212. const excludeSpecial = (s) => {
  213. // 去掉转义字符
  214. // s = s.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');
  215. const pattern = /[`~!@#$^&*()=|{}':;',\\\[\]\.<>\/?~!@#¥……&*()——|{}【】';:""' + - - _ % 。,、?\s]/g;
  216. if (s != undefined || s != null) {
  217. s = s.replace(pattern, "")
  218. }
  219. return s;
  220. }
  221. const setStorage = (key, value) => {
  222. uni.setStorageSync(env.NODE_ENV + "_" + key, value)
  223. }
  224. const getStorage = (key) => {
  225. return uni.getStorageSync(env.NODE_ENV + "_" + key)
  226. }
  227. const removeStorage = (key) => {
  228. return uni.removeStorageSync(env.NODE_ENV + "_" + key);
  229. }
  230. const silenceLogin = (saleNo) => {
  231. return new Promise((resolve, reject) => {
  232. let params = {
  233. saleNo: '14300364'
  234. }
  235. // if(getStorage('userInfo')){
  236. // resolve();
  237. // }else{
  238. // postRequest('/api/h5/login', params, data => {
  239. // if(data) setStorage('userInfo', data);
  240. // if (data.token) setStorage('AUTH_TOKEN', data.token);
  241. // resolve();
  242. // });
  243. // }
  244. postRequest('/api/h5/login', params, data => {
  245. if(data) setStorage('userInfo', data);
  246. if (data.token) setStorage('AUTH_TOKEN', data.token);
  247. resolve();
  248. });
  249. });
  250. }
  251. module.exports = {
  252. setStorage: setStorage,
  253. getStorage: getStorage,
  254. postRequest: postRequest,
  255. postRequestLoding: postRequestLoding,
  256. getRequest: getRequest,
  257. putRequest: putRequest,
  258. putRequestJson: putRequestJson,
  259. msg: msg,
  260. load: load,
  261. getToken: getToken,
  262. loadIng: loadIng,
  263. removeStorage: removeStorage,
  264. public: publics,
  265. header: header,
  266. excludeSpecial: excludeSpecial,
  267. silenceLogin:silenceLogin,
  268. uploadFile:uploadFile
  269. }