| 
					
				 | 
			
			
				@@ -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) { 
			 |