// 通用函数
|
import useClipboard from 'vue-clipboard3';
|
import { ElMessage } from 'element-plus';
|
import { formatDate } from '/@/utils/formatTime';
|
import { useI18n } from 'vue-i18n';
|
|
export default function () {
|
const { t } = useI18n();
|
const { toClipboard } = useClipboard();
|
|
// 百分比格式化
|
const percentFormat = (row: EmptyArrayType, column: number, cellValue: string) => {
|
return cellValue ? `${cellValue}%` : '-';
|
};
|
// 列表日期时间格式化
|
const dateFormatYMD = (row: EmptyArrayType, column: number, cellValue: string) => {
|
if (!cellValue) return '-';
|
return formatDate(new Date(cellValue), 'YYYY-mm-dd');
|
};
|
// 列表日期时间格式化
|
const dateFormatYMDHMS = (row?: EmptyArrayType, column?: number, cellValue?: string) => {
|
if (!cellValue) return '-';
|
return formatDate(new Date(cellValue), 'YYYY-mm-dd HH:MM:SS');
|
};
|
// 列表日期时间格式化
|
const dateFormatHMS = (row: EmptyArrayType, column: number, cellValue: string) => {
|
if (!cellValue) return '-';
|
let time = 0;
|
if (typeof row === 'number') time = row;
|
if (typeof cellValue === 'number') time = cellValue;
|
return formatDate(new Date(time * 1000), 'HH:MM:SS');
|
};
|
// 小数格式化
|
const scaleFormat = (value: string = '0', scale: number = 4) => {
|
return Number.parseFloat(value).toFixed(scale);
|
};
|
// 小数格式化
|
const scale2Format = (value: string = '0') => {
|
return Number.parseFloat(value).toFixed(2);
|
};
|
// 点击复制文本
|
const copyText = (text: string) => {
|
return new Promise((resolve, reject) => {
|
try {
|
//复制
|
toClipboard(text);
|
//下面可以设置复制成功的提示框等操作
|
ElMessage.success(t('message.layout.copyTextSuccess'));
|
resolve(text);
|
} catch (e) {
|
//复制失败
|
ElMessage.error(t('message.layout.copyTextError'));
|
reject(e);
|
}
|
});
|
};
|
return {
|
percentFormat,
|
dateFormatYMD,
|
dateFormatYMDHMS,
|
dateFormatHMS,
|
scaleFormat,
|
scale2Format,
|
copyText,
|
};
|
}
|