Http.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. class HTTP {
  2. constructor() {
  3. this.ENV = wx.getAccountInfoSync().miniProgram.envVersion;
  4. this.urls = [{
  5. name: "生产环境",
  6. url: "https://oms.idcgroup.com.cn:8079"
  7. }, {
  8. name: "开发环境",
  9. url: "http://61.164.207.46:8100"
  10. }]
  11. if (this.ENV === 'release') { // 正式版
  12. this.baseUrl = "https://oms.idcgroup.com.cn:8079";
  13. } else {
  14. this.baseUrl = "http://61.164.207.46:8100";
  15. // this.baseUrl = "https://oms.idcgroup.com.cn:8079";
  16. }
  17. this.init = (content, init = false) => {
  18. return new Promise((resolve, reject) => {
  19. if (init.detail != undefined) init = init.detail;
  20. if (init) content.pageNumber = 1;
  21. content.pageNumber > content.pageTotal ? reject() : resolve(content)
  22. })
  23. }
  24. this.paging = (data, res, that, ownertable, list = [], _Http) => {
  25. let content = JSON.parse(JSON.stringify(data))
  26. content.pageNumber = res.pageNumber + 1;
  27. content.pageTotal = res.pageTotal;
  28. content.total = res.total;
  29. content.sort = res.sort;
  30. if (this.isShowEmpty) this.empty = res.total == 0;
  31. if (list.length) this.getTabs(that, ownertable, list, _Http)
  32. return content;
  33. }
  34. //得到缩略图或者压缩图 getType默认得到缩略图传true得到压缩图
  35. this.getSpecifiedImage = (obj, getType = false) => {
  36. obj.url = this.getImageUrl(obj.url)
  37. try {
  38. let type = getType ? 'compressed' : 'thumbnail';
  39. let imgObj = obj.subfiles.find(v => v.type == type);
  40. return this.getImageUrl(imgObj.url || obj.url);
  41. } catch (error) {
  42. return this.getImageUrl(obj.url);
  43. }
  44. }
  45. // 判断图片是本地还是云存储
  46. this.getImageUrl = (url) => {
  47. if (!url) return '';
  48. //判断url中是否存在http,没有的话要拼接 this.baseUrl
  49. if (!/^https?:\/\//.test(url)) {
  50. url = _Http.baseUrl + url + wx.getStorageSync('userMsg').token;
  51. }
  52. return url;
  53. }
  54. this.getTabs = (that, ownertable, list = [], _Http) => {
  55. if (list.length) _Http.basic({
  56. "id": 20221018102001,
  57. "content": {
  58. ownertable,
  59. ownerids: list.map(v => v[ownertable + 'id'])
  60. }
  61. }).then(res => {
  62. if (res.code != 1) return;
  63. list.forEach(item => item.tags = res.data[item[`${ownertable}id`]] || []);
  64. let newList = that.data.list;
  65. newList.splice(newList.length - list.length, list.length, ...list);
  66. that.setData({
  67. list: newList
  68. })
  69. })
  70. }
  71. this.getTypes = async (name, _Http) => {
  72. let params = null;
  73. if (name == 'tags') {
  74. params = {
  75. "id": 20221013104401,
  76. "content": {
  77. "nochace": true,
  78. "isExport": 1,
  79. "pageNumber": 1,
  80. sys_systemtagid: 2,
  81. "pageSize": 1000,
  82. "where": {
  83. "condition": ""
  84. }
  85. }
  86. }
  87. } else {
  88. params = {
  89. "classname": "sysmanage.develop.optiontype.optiontype",
  90. "method": "optiontypeselect",
  91. "content": {
  92. "nochace": true,
  93. "pageNumber": 1,
  94. "pageSize": 1000,
  95. "typename": name,
  96. "parameter": {
  97. "siteid": wx.getStorageSync('userMsg').siteid
  98. }
  99. }
  100. }
  101. }
  102. if (!params) return;
  103. let res = await _Http.basic(params);
  104. return res.code == '1' ? res.data : [];
  105. }
  106. // 千位符格式化金额
  107. this.formatMoney = (num, decimalPlaces = 2, prefix = '', removeTrailingZeros = true) => {
  108. if (isNaN(num)) return '';
  109. let fixedNum = Number(num).toFixed(decimalPlaces);
  110. if (removeTrailingZeros) {
  111. fixedNum = parseFloat(fixedNum).toString();
  112. }
  113. let parts = fixedNum.split('.');
  114. parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  115. return prefix + parts.join('.');
  116. }
  117. }
  118. request({
  119. url,
  120. data = {},
  121. method = "POST",
  122. header = {
  123. 'content-type': 'application/json'
  124. },
  125. loading = true
  126. }) {
  127. return new Promise((resolve, reject) => {
  128. this._request(url, resolve, reject, data, method, header, loading);
  129. })
  130. }
  131. _request(url, resolve, reject, data, method, header, loading) {
  132. /* if (loading) wx.showLoading({
  133. title: getApp().globalData.Language.getMapText('加载中...'),
  134. mask: true
  135. }) */
  136. if (data.method && data.method != "query_userauth") data.languagecode = wx.getStorageSync('languagecode') || 'ZH'
  137. wx.request({
  138. url: this.baseUrl + '/yos/rest/index' + url,
  139. data: data,
  140. method: method,
  141. header: header,
  142. timeout: 60000,
  143. success: res => resolve(res.data),
  144. fial: err => reject(err),
  145. complete: (res) => {
  146. // if (loading) wx.hideLoading()
  147. if (res.data.code != 1) {
  148. console.error("错误的请求", {
  149. request: data,
  150. result: res.data
  151. })
  152. }
  153. if (res.errMsg != 'request:ok') {
  154. wx.showToast({
  155. title: getApp().globalData.Language.getMapText('网络异常,请重新进入'),
  156. icon: "none"
  157. })
  158. } else if (res.data.msg == '登陆状态已过期,请重新登陆!' || res.data.msg == getApp().globalData.Language.getMapText('登陆状态已过期,请重新登陆!')) {
  159. wx.showToast({
  160. title: getApp().globalData.Language.getMapText(res.data.msg),
  161. icon: "none",
  162. mask: true
  163. })
  164. getApp().globalData.LaunchOptions = wx.getLaunchOptionsSync();
  165. count = setTimeout(() => {
  166. wx.reLaunch({
  167. url: '/pages/login/phone',
  168. });
  169. }, 1000)
  170. }
  171. }
  172. })
  173. }
  174. }
  175. export {
  176. HTTP
  177. }