request.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. //如果部署在同域名的话可以直接取cookie,后端需 HttpOnly 设置成否
  2. // var cookie_name = 'wolfking.jeesharp.session.id'
  3. // getCookie(cookie_name)
  4. // 是否本地环境
  5. function isLocalEnv() {
  6. let domain = window.location.origin
  7. if (['http://127.0.0.1:5501', 'file://'].includes(domain)) {
  8. return true
  9. } else {
  10. return false
  11. }
  12. }
  13. window.apiType = "dev" // dev 本地测试 , sit 线上测试
  14. window.fetchUrl = ""
  15. // window.fetchUrl = "http://172.21.9.236:8081"
  16. if(window.apiType == "dev"){
  17. window.fetchUrl = "http://192.168.1.11:8080"
  18. } else if(window.apiType == "sit"){
  19. window.fetchUrl = "http://172.21.9.236:8081"
  20. }
  21. // api 前缀
  22. function getApiUrl() {
  23. // 为线上时
  24. if (!isLocalEnv()) {
  25. return window.location.origin
  26. } else {
  27. // 本地时
  28. // return 'http://sxtc.com:10002' // 内网环境
  29. // return 'http://10.8.8.100:10002' // 内网环境
  30. // return 'http://1.71.170.214:18080' // 线上环境
  31. // return 'http://szxm.sxcig.com:8012' // 线上环境
  32. // return 'http://10.0.0.27:8080' // 超哥环境
  33. // return 'http://10.0.0.22:8080' // 闫敏的环境
  34. // return 'http://10.0.0.8:8080' // 祥慧的环境
  35. // return 'http://10.0.0.115:8080' // 王蒙的环境
  36. return 'http:192.168.1.60:8081' // 焦煤内网
  37. }
  38. }
  39. // websocket 前缀
  40. function getWsUrl() {
  41. let prefix = location.protocol === 'https:' ? 'wss://' : 'ws://'
  42. // 为线上时
  43. if (!isLocalEnv()) {
  44. return prefix + window.location.host
  45. } else {
  46. return prefix + 'sxtc.com:10002'
  47. // return prefix + '10.0.0.115:8080'
  48. }
  49. }
  50. // minio 前缀
  51. function getMinioUrl() {
  52. let isProduction = location.origin.indexOf('1.71.170.214') != -1
  53. if (isProduction) {
  54. return 'http://1.71.170.214:19000/constr-documents/'
  55. } else {
  56. return 'http://10.8.8.191:9000/constr-documents-test/'
  57. }
  58. }
  59. /** axios封装
  60. * 请求拦截、相应拦截、错误统一处理
  61. */
  62. const httpRequest = axios.create({
  63. baseURL: 'http:192.168.1.60:8081', // 测试环境
  64. timeout: 3 * 60 * 1000, // 3分钟等待
  65. withCredentials: true // 携带cookie
  66. })
  67. // 请求拦截器
  68. httpRequest.interceptors.request.use(
  69. function (config) {
  70. if (!isLocalEnv()) {
  71. if (getQueryVariable('token')) {
  72. config.headers['access_token'] = getQueryVariable('token')
  73. }
  74. } else {
  75. config.headers['access_token'] = localStorage.getItem('token')
  76. // config.headers['access_token'] = '4b3ed521-f509-48d9-b907-ab127479df41'
  77. }
  78. // 上传文件
  79. if (config.url == '/apiSys/oss/upload') {
  80. config.headers['Content-Type'] = 'multipart/form-data'
  81. } else {
  82. config.headers['Content-Type'] = 'application/json'
  83. }
  84. return config
  85. },
  86. function (error) {
  87. return Promise.reject(error)
  88. }
  89. )
  90. //响应拦截
  91. httpRequest.interceptors.response.use(
  92. function (response) {
  93. const res = response.data
  94. // if (res.code == 201) {
  95. // this.ELEMENT.Message.error(res.msg)
  96. // if (!isLocalEnv()) {
  97. // // 跳登录页
  98. // window.location = window.location.origin
  99. // } else {
  100. // localEnvLogin()
  101. // }
  102. // }
  103. return response
  104. },
  105. function (error) {
  106. this.ELEMENT.Message.error(error.message)
  107. return Promise.reject(error)
  108. }
  109. )
  110. function get(url, params) {
  111. return new Promise((resolve, reject) => {
  112. httpRequest
  113. .get(url, { params: params })
  114. .then(res => {
  115. resolve(res.data)
  116. })
  117. .catch(err => {
  118. reject(err.data)
  119. })
  120. })
  121. }
  122. // qs.stringify(data)
  123. function post(url, data, config) {
  124. return new Promise((resolve, reject) => {
  125. httpRequest
  126. .post(url, data, config)
  127. .then(res => {
  128. resolve(res.data)
  129. })
  130. .catch(err => {
  131. reject(err)
  132. })
  133. })
  134. }
  135. function postFile(url, blob) {
  136. return new Promise((resolve, reject) => {
  137. let formdata = new FormData()
  138. formdata.append('multipartFile', blob)
  139. httpRequest
  140. .post(url, formdata)
  141. .then(res => {
  142. resolve(res.data)
  143. })
  144. .catch(err => {
  145. reject(err)
  146. })
  147. })
  148. }
  149. function localEnvLogin() {
  150. post(
  151. '/ierp/api/getAppToken.do',
  152. {
  153. username: 'admin',
  154. password: '1q2w3e4r5t'
  155. },
  156. {
  157. transformRequest: [
  158. function (data, headers) {
  159. // 将请求数据转换成功 formdata 接收格式
  160. headers['Content-Type'] = 'application/x-www-form-urlencoded'
  161. return stringify(data)
  162. }
  163. ]
  164. }
  165. ).then(res => {
  166. localStorage.setItem('token', res.data.token || getQueryVariable('token'))
  167. })
  168. }
  169. function localEnvAppToken() {
  170. return new Promise((resole, reject) => {
  171. let data
  172. if (window.apiType == "dev") {
  173. data = {
  174. appId: "jsc",
  175. appSecuret: "G|s26?hAW1TzX5rY",
  176. tenantid: "jmdev",
  177. accountId: "1541173495969351680",
  178. }
  179. } else if (window.apiType == "sit") {
  180. data = {
  181. appId: "jsc",
  182. appSecuret: "OA9#'Jn'4p|f`nBG",
  183. tenantid: "dev",
  184. accountId: "1493393884158362624",
  185. }
  186. } else {
  187. console.log("未知类型");
  188. return
  189. }
  190. fetch(fetchUrl + "/ierp/api/getAppToken.do", {
  191. method: "post",
  192. body: JSON.stringify(data),
  193. timeout: 5000,
  194. mode: 'cors'
  195. }).then(res => {
  196. return res.json()
  197. })
  198. .catch(error => {
  199. reject(error)
  200. })
  201. .then(response => {
  202. if(response != undefined){
  203. resole(response.data)
  204. } else {
  205. reject({requestType: false})
  206. }
  207. });
  208. })
  209. };
  210. function getLocalEnvAccessToken() {
  211. return new Promise((resole, reject) => {
  212. let data
  213. if (window.apiType == "dev") {
  214. data = {
  215. user: "17649834944",
  216. apptoken: localStorage.getItem("app_token"),
  217. tenantid: "jmdev",
  218. accountId: "1541173495969351680",
  219. usertype: "Mobile",
  220. }
  221. } else if (window.apiType == "sit") {
  222. data = {
  223. user: "17649834944",
  224. apptoken: localStorage.getItem("app_token"),
  225. tenantid: "dev",
  226. accountId: "1493393884158362624",
  227. usertype: "Mobile",
  228. }
  229. } else {
  230. console.log("未知类型");
  231. return
  232. }
  233. fetch(fetchUrl + "/ierp/api/login.do", {
  234. method: "post",
  235. body: JSON.stringify(data),
  236. mode: 'cors'
  237. }).then(res => res.json())
  238. .catch(error => {
  239. reject(error)
  240. })
  241. .then(response => {
  242. resole(response.data)
  243. });
  244. })
  245. }
  246. function fetchPostMethods(url, params) {
  247. return new Promise((resole, reject) => {
  248. fetch(fetchUrl + url, {
  249. method: "post",
  250. body: JSON.stringify(params),
  251. headers: new Headers({
  252. "Content-Type": "application/json",
  253. "accesstoken": localStorage.getItem("access_token"),
  254. }),
  255. mode: 'cors'
  256. }).then(res => {
  257. return res.json()
  258. })
  259. .catch(error => {
  260. reject(error)
  261. })
  262. .then(response => {
  263. if (response != undefined) {
  264. resole(response.data)
  265. }
  266. });
  267. })
  268. }
  269. // 将参数转换成功 formdata 接收格式
  270. function stringify(data) {
  271. let ret = ''
  272. for (const it in data) {
  273. ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
  274. }
  275. ret = ret.substring(0, ret.lastIndexOf('&'))
  276. return ret
  277. }
  278. // 格式化日期
  279. function formatDate(time) {
  280. let date = time ? new Date(Number(time)) : new Date();
  281. let Y = date.getFullYear() + '-';
  282. let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  283. let D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' ';
  284. let h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
  285. let m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
  286. let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  287. return Y + M + D + h + m + s;
  288. }