基于vue3.0和element-plus的组件库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

104 lines
2.2 KiB

import { ElLoading, ElMessage, ElNotification, ElMessageBox, Action } from 'element-plus';
let curMsg;
let count = 0;
let instance;
import { i18n } from '../i18n';
const t = i18n.t;
export function loading() {
if (count === 0) {
instance = ElLoading.service({
lock: true,
text: t('base.loading'),
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.3)',
});
}
count++;
}
export function close() {
if (count <= 0) {
return;
}
if (--count === 0) {
instance.close();
}
}
export function showMessage(type, info, unClose?) {
if (curMsg != null) {
curMsg.close();
}
const tmp = ElMessage({
type: type,
showClose: true,
message: info,
duration: 3000,
offset: 50,
});
if (!unClose) {
curMsg = tmp;
}
}
export function showNotify(type, title, message, position) {
if (position == null) {
position = 'top-right';
}
ElNotification({
title: title,
type: type,
message: message,
position: position,
duration: 0,
});
}
export function warning(msg) {
showMessage('warning', msg, false);
}
export function error(msg) {
showMessage('error', msg, false);
}
export function success(msg) {
showMessage('success', msg, false);
}
export const confirm = (msg: string, title: string) => {
return new Promise((resolve, reject) => {
ElMessageBox.confirm(msg, title, {
confirmButtonText: t('base.confirm'),
cancelButtonText: t('base.cancel'),
buttonSize: 'default',
confirmButtonClass: 'el-button--info',
type: 'warning',
})
.then(() => {
resolve(true);
})
.catch((error) => {
resolve(false);
});
});
};
export const prompt = (msg: string, title: string, pattern: RegExp, errorMsg: string) => {
return new Promise((resolve, reject) => {
ElMessageBox.prompt(msg, title, {
confirmButtonText: t('base.confirm'),
cancelButtonText: t('base.cancel'),
buttonSize: 'default',
confirmButtonClass: 'el-button--info',
inputPattern: pattern,
inputErrorMessage: errorMsg,
})
.then((result) => {
resolve(result.value);
})
.catch((error) => {
resolve(false);
});
});
};