import Vue from 'vue'
|
import { Progress } from 'element-ui'
|
const ProgressIcon = Vue.extend(Progress)
|
export default {
|
update (el, binding, vnode) {
|
const dom = document.getElementById('containerBox')
|
if (binding.value.isLoading) {
|
Vue.nextTick(() => {
|
if (!document.getElementById('customLoadingMask')) {
|
// 创建一个遮罩dom
|
const loadingMask = document.createElement('div')
|
loadingMask.setAttribute('id', 'customLoadingMask')
|
loadingMask.style.width = dom.offsetWidth + 'px'
|
dom.appendChild(loadingMask)
|
// 引入进度条组件
|
const progress = new ProgressIcon({
|
el: document.createElement('div'),
|
props: { percentage: 0 }
|
})
|
progress.type = 'circle'
|
progress.color = 'rgba(215, 0, 18, .8)'
|
progress.width = 150
|
progress.height = 150
|
// 用一个变量接住copy实例
|
loadingMask.instance = progress
|
loadingMask.appendChild(progress.$el)
|
}
|
|
const customLoadingMask = document.getElementById('customLoadingMask')
|
|
// 动态设置进度条数值
|
customLoadingMask.instance.percentage = binding.value.percentage
|
// customLoadingMask.instance.circlePathStyle.transition = 'stroke-dasharray 3s ease 0s, stroke 3s ease'
|
})
|
} else {
|
if (document.getElementById('customLoadingMask')) {
|
const customLoadingMask = document.getElementById('customLoadingMask')
|
dom.removeChild(customLoadingMask)
|
}
|
}
|
}
|
}
|