2021-03-25 18:07:15 +08:00
|
|
|
import { nextTick } from 'vue';
|
2021-04-01 20:18:27 +08:00
|
|
|
import loadingCss from '/@/theme/loading.scss';
|
2021-03-25 18:07:15 +08:00
|
|
|
|
|
|
|
// 定义方法
|
|
|
|
export const NextLoading = {
|
2021-04-01 20:18:27 +08:00
|
|
|
// 载入 css
|
|
|
|
setCss: () => {
|
|
|
|
let link = document.createElement('link');
|
|
|
|
link.rel = 'stylesheet';
|
|
|
|
link.href = loadingCss;
|
|
|
|
link.crossOrigin = 'anonymous';
|
|
|
|
document.getElementsByTagName('head')[0].appendChild(link);
|
|
|
|
},
|
2021-03-25 18:07:15 +08:00
|
|
|
// 创建 loading
|
|
|
|
start: () => {
|
2021-04-01 11:13:38 +08:00
|
|
|
const bodys: any = document.body;
|
2021-03-25 18:07:15 +08:00
|
|
|
const div = document.createElement('div');
|
|
|
|
div.setAttribute('class', 'loading-next');
|
2021-04-01 11:13:38 +08:00
|
|
|
const htmls = `
|
|
|
|
<div class="loading-next-box">
|
|
|
|
<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>
|
|
|
|
</div>
|
|
|
|
`;
|
|
|
|
div.innerHTML = htmls;
|
|
|
|
bodys.insertBefore(div, bodys.childNodes[0]);
|
2021-03-25 18:07:15 +08:00
|
|
|
},
|
|
|
|
// 移除 loading
|
|
|
|
done: () => {
|
|
|
|
nextTick(() => {
|
|
|
|
setTimeout(() => {
|
|
|
|
const el = document.querySelector('.loading-next');
|
|
|
|
el && el.parentNode?.removeChild(el);
|
|
|
|
}, 1000);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
};
|