|  | @@ -3,22 +3,26 @@ import sleep from "../utils/sleep";
 | 
	
		
			
				|  |  |  const loadingName: string = 'xc-loading'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const VElBtn = {
 | 
	
		
			
				|  |  | -    // 这里有个 bug 如果使用了 v-loading 的话
 | 
	
		
			
				|  |  |      created(el: HTMLHtmlElement, binding, vnode, prevVnode) {
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 这里有个 bug 如果使用了 v-loading 的话有问题
 | 
	
		
			
				|  |  | +         * 这个函数一定要是 promise 函数
 | 
	
		
			
				|  |  | +         * 如果这个函数需要参数的话,需要:
 | 
	
		
			
				|  |  | +         * <el-button v-el-btn="{
 | 
	
		
			
				|  |  | +         *     func : a ,
 | 
	
		
			
				|  |  | +         *     value: true
 | 
	
		
			
				|  |  | +         *   }">测试 </el-button> 这样写
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         *   无参函数:
 | 
	
		
			
				|  |  | +         *   <el-button v-el-btn="a">测试</el-button>
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         * @param ev 事件
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  |          el.addEventListener('click', async (ev: Event) => {
 | 
	
		
			
				|  |  |              ev.stopPropagation();
 | 
	
		
			
				|  |  |              let startTime: Date = new Date();
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                vnode.ref.i.props.loading = true
 | 
	
		
			
				|  |  | -                el.setAttribute(loadingName, 'true')
 | 
	
		
			
				|  |  | -                if (binding.value.func) {
 | 
	
		
			
				|  |  | -                    await binding.value.func(binding.value.value)
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    await binding.value();
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            } catch (e) {
 | 
	
		
			
				|  |  | -                console.error(e)
 | 
	
		
			
				|  |  | -            } finally {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            async function finallyFunc() {
 | 
	
		
			
				|  |  |                  let endTime = new Date()
 | 
	
		
			
				|  |  |                  if (endTime.getTime() - startTime.getTime() < 1000) {
 | 
	
		
			
				|  |  |                      await sleep(500)
 | 
	
	
		
			
				|  | @@ -27,6 +31,17 @@ const VElBtn = {
 | 
	
		
			
				|  |  |                  vnode.ref.i.props.loading = false
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            vnode.ref.i.props.loading = true
 | 
	
		
			
				|  |  | +            el.setAttribute(loadingName, 'true')
 | 
	
		
			
				|  |  | +            if (binding.value.func) {
 | 
	
		
			
				|  |  | +                await (binding.value.func(binding.value.value) as Promise<any>).finally(() => {
 | 
	
		
			
				|  |  | +                    finallyFunc()
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                await (binding.value() as Promise<any>).finally(() => {
 | 
	
		
			
				|  |  | +                    finallyFunc()
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      updated(el: HTMLHtmlElement, binding, vnode, prevVnode) {
 |