https.ts 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. // @ts-ignore
  2. import {clearToken, fetchToken} from "@/utils/auth"
  3. let isDevelopment = (process.env.NODE_ENV === 'development')
  4. let env: string = isDevelopment ? "dev" : "prd";
  5. const apis: any = {
  6. dev: {
  7. serverUrl: "https://dev-wash.kuaiyuman.cn/api",
  8. fileUrl: "https://zyp-1258963180.cos.ap-guangzhou.myqcloud.com/"
  9. },
  10. prd: {
  11. serverUrl: "https://api.yeswash.cn/api",
  12. fileUrl: "https://api.yeswash.cn",
  13. },
  14. };
  15. // @ts-ignore
  16. // @ts-ignore
  17. const cfg = {
  18. key: {
  19. token: 'wash.token'
  20. },
  21. env: env,
  22. api: {
  23. serverUrl: apis[env]?.serverUrl,
  24. fileUrl: apis[env].fileUrl,
  25. uploadUrl: apis[env].serverUrl + "file/upload"
  26. }
  27. };
  28. const serverUrl = apis[env]?.serverUrl;
  29. const fileUrl = apis[env].fileUrl;
  30. const isEmptyOrNull = function (exp: any) {
  31. return !exp || typeof (exp) == "undefined" || exp.length === 0 || exp === '' || Object.keys(exp).length === 0;
  32. };
  33. /**
  34. * get请求封装
  35. * @param url
  36. * @param param
  37. */
  38. const get = (url: string, param = {}) => {
  39. let token = fetchToken() || ""
  40. console.log(token, url, new Date().toLocaleString())
  41. if (!isEmptyOrNull(param)) {
  42. let params = [];
  43. for (let key in param) {
  44. // @ts-ignore
  45. params.push(encodeURIComponent(key) + "=" + encodeURIComponent(param[key]));
  46. }
  47. param = params.join("&")
  48. }
  49. let options = {
  50. url: fillUrl(url) + (isEmptyOrNull(param) ? "" : "?" + param),
  51. data: param,
  52. method: 'GET',
  53. header: {
  54. "Accept": "application/json",
  55. "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  56. "satoken": token,
  57. },
  58. };
  59. return request(options)
  60. };
  61. const post = (url: string, param = {}) => {
  62. let token = fetchToken() || ""
  63. console.log(token, url, new Date().toLocaleString())
  64. let options = {
  65. url: fillUrl(url),
  66. data: param,
  67. method: 'POST',
  68. header: {
  69. 'X-Requested-With': 'XMLHttpRequest',
  70. "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8;",
  71. "satoken": token,
  72. },
  73. dataType: 'json'
  74. };
  75. return request(options);
  76. };
  77. const body = (url: string, param = {}) => {
  78. let token = fetchToken() || ""
  79. console.log(token, url, new Date().toLocaleString())
  80. let options = {
  81. url: fillUrl(url),
  82. data: param,
  83. method: 'POST',
  84. header: {
  85. 'X-Requested-With': 'XMLHttpRequest',
  86. "Accept": "application/json",
  87. "Content-Type": "application/json; charset=UTF-8",
  88. "satoken": token,
  89. },
  90. dataType: 'json'
  91. };
  92. return request(options);
  93. };
  94. const request = (options: any) => {
  95. return new Promise((resolve, reject) => {
  96. uni.request({
  97. url: options.url,
  98. data: options.data,
  99. method: options.method,
  100. header: options.header,
  101. dataType: options.dataType
  102. }).then((res: any) => {
  103. // @ts-ignore
  104. let response = res.data;
  105. if (response.code !== 200) {
  106. let errMsg = response.message || '服务异常,请稍后重试';
  107. console.error("error=>", errMsg);
  108. if (response.code !== 301) {
  109. uni.showToast({
  110. title: errMsg,
  111. icon: 'error',
  112. duration: 5000
  113. });
  114. }
  115. if (response.code == 1001) {
  116. //清除登录状态
  117. console.error("清除登录状态XXXXXXXXXXXXX")
  118. clearToken();
  119. }
  120. reject(errMsg);
  121. } else {
  122. resolve(response.data);
  123. }
  124. }).catch(error => {
  125. uni.hideLoading();
  126. uni.showToast({
  127. title: error,
  128. icon: 'none'
  129. });
  130. console.error("error=>", error);
  131. reject(error);
  132. })
  133. });
  134. };
  135. const upload = (url: string, param: any = {}) => {
  136. let token = fetchToken() || ""
  137. console.log(token, url, new Date().toLocaleString())
  138. return new Promise((resolve, reject) => {
  139. uni.uploadFile({
  140. url: fillUrl(url),
  141. filePath: param.filePath || param.url,
  142. name: 'file',
  143. header: {
  144. "satoken": token
  145. },
  146. success: function (res) {
  147. console.log("upload file=>", res)
  148. let response = JSON.parse(res.data);
  149. if (response.code === 200) {
  150. resolve(response);
  151. } else if (response.code === 500) {
  152. uni.showToast({
  153. title: '系统繁忙,请稍后重试',
  154. icon: 'none'
  155. });
  156. reject();
  157. } else {
  158. console.error()
  159. uni.showToast({
  160. title: response.message
  161. });
  162. reject();
  163. }
  164. },
  165. fail: function (e) {
  166. console.error(e)
  167. uni.showToast({
  168. title: '请稍后重试'
  169. });
  170. reject();
  171. }
  172. });
  173. })
  174. }
  175. const uploadV2 = (opt: any) => {
  176. opt = opt || {};
  177. opt.url = opt.url || '';
  178. opt.filePath = opt.filePath || null;//要上传文件资源的路径。
  179. opt.name = opt.name || null;//文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
  180. opt.filePath = opt.filePath || null;
  181. opt.success = opt.success || function () {
  182. };
  183. uni.uploadFile({
  184. url: fillUrl(opt.url),
  185. filePath: opt.filePath,
  186. name: opt.name,
  187. success: function (res) {
  188. console.log("upload file=>", res)
  189. opt.success(res);
  190. },
  191. fail: function () {
  192. uni.showToast({
  193. title: '请稍后重试'
  194. });
  195. }
  196. })
  197. };
  198. const fillUrl = function (url: string) {
  199. if (url.indexOf("http") === 0) {
  200. return url;
  201. } else {
  202. return serverUrl + url;
  203. }
  204. };
  205. const formatUrl = (v: string) => {
  206. if (v == null || v == "") {
  207. return "/static/missing-face.png";
  208. }
  209. if (v.indexOf("http") === 0) {
  210. return v;
  211. }
  212. return fileUrl + v.replace(/\\/g, "/");
  213. };
  214. export {
  215. get, post, body, upload, uploadV2, cfg, serverUrl, fileUrl, formatUrl
  216. }