loading.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { nextTick } from "vue";
  2. import "@/styles/loading.scss";
  3. export const loading = {
  4. show: (value?: string) => {
  5. const bodys: Element = document.body;
  6. const div = document.createElement("div");
  7. div.className = "block-loading";
  8. div.innerHTML = `
  9. <div class="block-loading-box">
  10. <div class="block-loading-box-warp">
  11. <div class="block-loading-box-item"></div>
  12. <div class="block-loading-box-item"></div>
  13. <div class="block-loading-box-item"></div>
  14. <div class="block-loading-box-item"></div>
  15. <div class="block-loading-box-item"></div>
  16. <div class="block-loading-box-item"></div>
  17. <div class="block-loading-box-item"></div>
  18. <div class="block-loading-box-item"></div>
  19. <div class="block-loading-box-item"></div>
  20. ${value ? `<div class="block-loading-box-text">${value}</div>` : ""}
  21. </div>
  22. </div>
  23. `;
  24. bodys.insertBefore(div, bodys.childNodes[0]);
  25. },
  26. hide: () => {
  27. nextTick(() => {
  28. setTimeout(() => {
  29. const el = document.querySelector(".block-loading");
  30. el && el.parentNode?.removeChild(el);
  31. }, 1000);
  32. });
  33. }
  34. };