until.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import axios from "axios";
  2. import crypto from "crypto-js";
  3. /*
  4. * 生成 uuid 字符串
  5. */
  6. export function uuid() {
  7. var s: any[] = [];
  8. var hexDigits = "0123456789abcdef";
  9. for (var i = 0; i < 36; i++) {
  10. s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
  11. }
  12. s[14] = "4";
  13. s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
  14. s[8] = s[13] = s[18] = s[23] = "-";
  15. var uuid = s.join("");
  16. return `${uuid}-${new Date().getTime()}`;
  17. }
  18. /**
  19. * 生成 rgba 数字
  20. * @param rgba rgba 字符串
  21. */
  22. export function rgbaNum(rgba: string) {
  23. let val = rgba.match(/(\d(\.\d+)?)+/g);
  24. return val;
  25. }
  26. /**
  27. * svg流转换为base64字符串
  28. *
  29. * @param url 获取base的路径
  30. */
  31. export function svgTobase64(url: string) {
  32. let baseUrl: string = ''
  33. return new Promise((relve, res) => {
  34. if (url.includes(".svg")) {
  35. axios.get(url).then((res) => {
  36. if (res.data) {
  37. const regexp = /\<\?xml .*\?\>/i,
  38. newXml = '<?xml version="1.0" encoding="UTF-8"?>';
  39. res.data = res.data.replace(regexp, newXml);
  40. if ("<?xml".indexOf(res.data) === -1) {
  41. res.data = '<?xml version="1.0" encoding="UTF-8"?>' + res.data;
  42. }
  43. const index = res.data.indexOf('"UTF-8"?>');
  44. const str = res.data.substr(index + 9);
  45. const a = crypto.enc.Utf8.parse(str);
  46. baseUrl =
  47. "data:image/svg+xml;base64," + crypto.enc.Base64.stringify(a);
  48. }
  49. relve(baseUrl)
  50. }).catch((err) => {
  51. res(err)
  52. });
  53. } else {
  54. baseUrl = url;
  55. relve(baseUrl)
  56. }
  57. })
  58. }