增加装饰器类 确认弹窗,loading,节流

This commit is contained in:
aixianling
2023-03-13 15:42:49 +08:00
parent d0cafeea6d
commit 812e085795

61
ui/lib/js/decorator.js Normal file
View File

@@ -0,0 +1,61 @@
import {Loading, MessageBox} from "element-ui";
/**
* 确认按钮
* @param content 提示信息
* @returns {(function(*, *, *): void)|*}
*/
export function confirm(content) {
return function (target, name, descriptor) {
const origin = descriptor.value
descriptor.value = function (...args) {
MessageBox.confirm(content, {
type: 'warning',
confirmButtonText: '确认',
center: true,
title: '提示',
dangerouslyUseHTMLString: true,
customClass: "AiConfirm",
}).then(origin.bind(this, ...args)).catch(() => 0)
}
}
}
/**
* 锁屏loading
* @returns {(function(*, *, *): void)|*}
*/
export function loading() {
return function (target, name, descriptor) {
const origin = descriptor.value
descriptor.value = async function (...args) {
const loading = Loading.service({fullscreen: true})
try {
await origin.apply(this, args)
} finally {
loading.close()
}
}
}
}
/**
* 节流装饰器
* @param wait 等待时间
* @returns {(function(*, *, *): void)|*}
*/
export function throttle(wait) {
return function (target, name, descriptor) {
const origin = descriptor.value
let lock = false
descriptor.value = function () {
if (!lock) {
lock = true
origin.apply(this, arguments)
setTimeout(() => {
lock = false
}, wait)
}
}
}
}