methods.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. import { BASE_IMG_URL } from "@/utils/request"
  2. export default {
  3. splitImgHost(url) {
  4. if (!url) {
  5. return ''
  6. }
  7. if (url.indexOf("http") != -1 || url.indexOf("https") != -1 || url.indexOf("base64") != -1) {
  8. return url;
  9. }
  10. return BASE_IMG_URL + url
  11. },
  12. //秒级别
  13. onlyForma(timeStamp, Diszing = true) {
  14. if (!timeStamp) {
  15. return
  16. }
  17. var date = new Date(timeStamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  18. var Y = date.getFullYear() + '-';
  19. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  20. var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
  21. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  22. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  23. var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  24. if (Diszing) {
  25. return Y + M + D + ' ' + h + m + s; //时分秒可以根据自己的需求加上
  26. }
  27. return Y + M + D;
  28. },
  29. //毫秒级别
  30. onlyFormaHao(timeStamp, Diszing = true) {
  31. if (!timeStamp) {
  32. return
  33. }
  34. var date = new Date(timeStamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  35. var Y = date.getFullYear() + '-';
  36. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  37. var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
  38. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  39. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  40. var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  41. if (Diszing) {
  42. return Y + M + D + ' ' + h + m + s; //时分秒可以根据自己的需求加上
  43. }
  44. return Y + M + D;
  45. },
  46. //毫秒级别
  47. onlyFormaWeek(timeStamp, Diszing = true) {
  48. if (!timeStamp) {
  49. return
  50. }
  51. var date = new Date(timeStamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  52. var Y = date.getFullYear() + '年';
  53. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '月' : date.getMonth() + 1 + '月');
  54. var D = date.getDate() < 10 ? '0' + date.getDate() + '日' : date.getDate() + '日';
  55. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  56. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  57. var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  58. let dis = ''
  59. if (Diszing) {
  60. dis = Y + M + D + ' ' + h + m + s; //时分秒可以根据自己的需求加上
  61. }
  62. dis = Y + M + D;
  63. var str = "";
  64. var week = new Date().getDay();
  65. if (week == 0) {
  66. str = "星期日";
  67. } else if (week == 1) {
  68. str = "星期一";
  69. } else if (week == 2) {
  70. str = "星期二";
  71. } else if (week == 3) {
  72. str = "星期三";
  73. } else if (week == 4) {
  74. str = "星期四";
  75. } else if (week == 5) {
  76. str = "星期五";
  77. } else if (week == 6) {
  78. str = "星期六";
  79. }
  80. return dis + ' ' + str
  81. },
  82. //判断是否为数字
  83. isNotANumber(inputData) {
  84. //isNaN(inputData)不能判断空串或一个空格
  85. //如果是一个空串或是一个空格,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
  86. if (parseFloat(inputData).toString() == "NaN") {
  87. //alert("请输入数字……");注掉,放到调用时,由调用者弹出提示。
  88. return false;
  89. } else {
  90. return true;
  91. }
  92. },
  93. //判断是否为数组
  94. isArrayFn(o) {
  95. return Object.prototype.toString.call(o) === '[object Array]';
  96. },
  97. /**
  98. *
  99. * @param {int} result
  100. * @returns {string}
  101. * @remard 单位S转小时分钟秒
  102. */
  103. secondToDate(result, Diszing = true) {
  104. var h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
  105. var m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
  106. var s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
  107. if (h == 0 && Diszing) {
  108. result = m + ":" + s;
  109. } else {
  110. result = h + ':' + m + ":" + s
  111. }
  112. return result;
  113. },
  114. /**
  115. * @param {string} result
  116. * @returns int
  117. * @remard 00:00:00格式转秒
  118. */
  119. secondFormDate(result) {
  120. if (result) {
  121. let reTime = result.split(":").map(Number)
  122. var hs = reTime[0] * 60 * 60
  123. var ms = reTime[1] * 60
  124. var ss = reTime[2]
  125. return hs + ms + ss
  126. } else {
  127. return 0
  128. }
  129. },
  130. /**
  131. * 扁平结构转换成树形结构 ---最佳性能方法
  132. * @param {Arrays} items 数据
  133. * @param {Strings} Id 参数名称 例如:'id' 默认id
  134. * @param {Strings} pId 参数名称 例如:'pid' 默认 pid
  135. * @returns 返回树形结构
  136. */
  137. arrayToTree(items, Id = 'id', pId = 'pid') {
  138. const result = []; // 存放结果集
  139. const itemMap = {}; //
  140. for (const item of items) {
  141. const id = item[Id];
  142. const pid = item[pId];
  143. if (!itemMap[id]) {
  144. itemMap[id] = {
  145. children: [],
  146. };
  147. }
  148. itemMap[id] = {
  149. ...item,
  150. children: itemMap[id]["children"],
  151. };
  152. const treeItem = itemMap[id];
  153. if (pid === 0) {
  154. result.push(treeItem);
  155. } else {
  156. if (!itemMap[pid]) {
  157. itemMap[pid] = {
  158. children: [],
  159. };
  160. }
  161. itemMap[pid].children.push(treeItem);
  162. }
  163. }
  164. return result;
  165. },
  166. getQueryVariable(variable) {
  167. var query = window.location.search.substring(1);
  168. var vars = query.split("&");
  169. for (var i = 0; i < vars.length; i++) {
  170. var pair = vars[i].split("=");
  171. if (pair[0] == variable) { return pair[1]; }
  172. }
  173. return (false);
  174. },
  175. /**
  176. *
  177. * @param {Arrays} arr 数据
  178. * @param {Strings} uniId 根据哪个参数去重
  179. * @returns 对象数组去重
  180. */
  181. uniqueFunc(arr, uniId) {
  182. const res = new Map();
  183. return arr.filter(
  184. (item) => !res.has(item[uniId]) && res.set(item[uniId], 1)
  185. );
  186. },
  187. exportData(msg, status = true) {
  188. if (!msg) {
  189. this.$message.warning("导出地址获取错误,请联系开发人员处理")
  190. return
  191. }
  192. var baseUrl =BASE_IMG_URL + '/'
  193. let url =
  194. baseUrl + msg;
  195. let link = document.createElement("a");
  196. let fileName = "导入模板" + ".xlsx";
  197. document.body.appendChild(link);
  198. link.href = url;
  199. link.download = fileName;
  200. link.click();
  201. link.remove();
  202. },
  203. downloadPicBase (msg) {
  204. var baseUrl =BASE_IMG_URL
  205. let imgsrc =
  206. baseUrl + msg;
  207. var image = new Image()
  208. // 解决跨域canvas污染问题
  209. image.setAttribute('crossOrigin', 'anonymous')
  210. image.onload = function () {
  211. let canvas = document.createElement('canvas')
  212. canvas.width = image.width
  213. canvas.height = image.height
  214. let context = canvas.getContext('2d')
  215. context.drawImage(image, 0, 0, image.width, image.height)
  216. let url = canvas.toDataURL('image/png') // 得到图片的base64编码数据
  217. let a = document.createElement('a')
  218. a.download = 'download'
  219. a.href = url
  220. a.click()
  221. }
  222. image.src = imgsrc
  223. },
  224. //base64转blob
  225. base64ToBlob(code) {
  226. const parts = code.split(';base64,');
  227. const contentType = parts[0].split(':')[1];
  228. const raw = window.atob(parts[1]);
  229. const rawLength = raw.length;
  230. const uInt8Array = new Uint8Array(rawLength);
  231. for (let i = 0; i < rawLength; ++i) {
  232. uInt8Array[i] = raw.charCodeAt(i);
  233. }
  234. return new Blob([uInt8Array], { type: contentType });
  235. },
  236. //下载
  237. downloadbase64(fileName, content) {
  238. const blob = this.base64ToBlob(content); // new Blob([content]);
  239. if (window.navigator.msSaveOrOpenBlob) {
  240. navigator.msSaveBlob(blob, fileName);
  241. } else {
  242. const link = document.createElement('a');
  243. link.href = window.URL.createObjectURL(blob);
  244. link.download = fileName;
  245. //此写法兼容可火狐浏览器
  246. document.body.appendChild(link);
  247. const evt = document.createEvent("MouseEvents");
  248. evt.initEvent("click", false, false);
  249. link.dispatchEvent(evt);
  250. document.body.removeChild(link);
  251. }
  252. },
  253. downloadPic (msg) {
  254. var baseUrl =BASE_IMG_URL
  255. let imgsrc =
  256. baseUrl + msg;
  257. let x = new XMLHttpRequest()
  258. x.open('GET', imgsrc, true)
  259. x.responseType = 'blob'
  260. x.onload = function () {
  261. let url = window.URL.createObjectURL(x.response)
  262. let a = document.createElement('a')
  263. a.href = url
  264. a.download = 'download';
  265. a.click()
  266. }
  267. x.send()
  268. }
  269. }