2021-06-07 17:22:07 +08:00
|
|
|
import { nextTick } from 'vue';
|
2023-09-23 22:52:05 +08:00
|
|
|
import '@/theme/loading.scss';
|
2021-06-07 17:22:07 +08:00
|
|
|
|
2023-09-23 22:52:05 +08:00
|
|
|
/**
|
|
|
|
|
* 页面全局 Loading
|
|
|
|
|
* @method start 创建 loading
|
|
|
|
|
* @method done 移除 loading
|
|
|
|
|
*/
|
2021-06-07 17:22:07 +08:00
|
|
|
export const NextLoading = {
|
|
|
|
|
// 创建 loading
|
|
|
|
|
start: () => {
|
2023-09-23 22:52:05 +08:00
|
|
|
const bodys: Element = document.body;
|
|
|
|
|
const div = <HTMLElement>document.createElement('div');
|
2021-06-07 17:22:07 +08:00
|
|
|
div.setAttribute('class', 'loading-next');
|
|
|
|
|
const htmls = `
|
|
|
|
|
<div class="loading-next-box">
|
2023-09-23 22:52:05 +08:00
|
|
|
<div class="loading-next-box-warp">
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
<div class="loading-next-box-item"></div>
|
|
|
|
|
</div>
|
2021-06-07 17:22:07 +08:00
|
|
|
</div>
|
|
|
|
|
`;
|
|
|
|
|
div.innerHTML = htmls;
|
|
|
|
|
bodys.insertBefore(div, bodys.childNodes[0]);
|
|
|
|
|
},
|
|
|
|
|
// 移除 loading
|
2023-09-23 22:52:05 +08:00
|
|
|
done: (time: number = 1000) => {
|
2021-06-07 17:22:07 +08:00
|
|
|
nextTick(() => {
|
|
|
|
|
setTimeout(() => {
|
2023-09-23 22:52:05 +08:00
|
|
|
const el = <HTMLElement>document.querySelector('.loading-next');
|
|
|
|
|
el?.parentNode?.removeChild(el);
|
|
|
|
|
}, time);
|
2021-06-07 17:22:07 +08:00
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
};
|
2023-12-05 23:03:51 +08:00
|
|
|
|
|
|
|
|
export function sleep(ms: number) {
|
|
|
|
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
|
|
}
|