VistarStarDataIntegration/admin.net.pro/Web/src/utils/commonFunction.ts
2024-09-09 09:23:58 +08:00

92 lines
2.7 KiB
TypeScript

// 通用函数
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 groupSeparator = (value: number, minimumFractionDigits: number = 2) => {
return value.toLocaleString('en-US', {
minimumFractionDigits: minimumFractionDigits,
maximumFractionDigits: 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);
}
});
};
// 去掉Html标签(取前面5个字符)
const removeHtmlSub = (value: string) => {
var str = value.replace(/<[^>]+>/g, '');
if (str.length > 50) return str.substring(0, 50) + '......';
else return str;
};
// 去掉Html标签
const removeHtml = (value: string) => {
return value.replace(/<[^>]+>/g, '');
};
// 获取枚举描述
const getEnumDesc = (key: any, lstEnum: any) => {
return lstEnum.find((x: any) => x.value == key)?.describe;
};
return {
percentFormat,
dateFormatYMD,
dateFormatYMDHMS,
dateFormatHMS,
scaleFormat,
scale2Format,
groupSeparator,
copyText,
removeHtmlSub,
removeHtml,
getEnumDesc,
};
}