2024-01-28 00:44:21 +08:00
|
|
|
|
import { $t } from '@/locales';
|
|
|
|
|
|
2023-11-17 08:45:00 +08:00
|
|
|
|
/**
|
2023-12-14 21:45:29 +08:00
|
|
|
|
* Transform record to option
|
|
|
|
|
*
|
2023-11-17 08:45:00 +08:00
|
|
|
|
* @example
|
2023-12-14 21:45:29 +08:00
|
|
|
|
* ```ts
|
|
|
|
|
* const record = {
|
|
|
|
|
* key1: 'label1',
|
|
|
|
|
* key2: 'label2'
|
|
|
|
|
* };
|
|
|
|
|
* const options = transformRecordToOption(record);
|
|
|
|
|
* // [
|
|
|
|
|
* // { value: 'key1', label: 'label1' },
|
|
|
|
|
* // { value: 'key2', label: 'label2' }
|
|
|
|
|
* // ]
|
|
|
|
|
* ```;
|
|
|
|
|
*
|
|
|
|
|
* @param record
|
2023-11-17 08:45:00 +08:00
|
|
|
|
*/
|
|
|
|
|
export function transformRecordToOption<T extends Record<string, string>>(record: T) {
|
|
|
|
|
return Object.entries(record).map(([value, label]) => ({
|
|
|
|
|
value,
|
|
|
|
|
label
|
2024-01-28 00:44:21 +08:00
|
|
|
|
})) as CommonType.Option<keyof T>[];
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-03 12:19:57 +08:00
|
|
|
|
export function transformRecordToNumberOption<T extends Record<string, string>>(record: T) {
|
|
|
|
|
return Object.entries(record).map(([value, label]) => ({
|
|
|
|
|
value,
|
|
|
|
|
label
|
|
|
|
|
})) as CommonType.Option<keyof T>[];
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-28 00:44:21 +08:00
|
|
|
|
/**
|
|
|
|
|
* Translate options
|
|
|
|
|
*
|
|
|
|
|
* @param options
|
|
|
|
|
*/
|
|
|
|
|
export function translateOptions(options: CommonType.Option<string>[]) {
|
|
|
|
|
return options.map(option => ({
|
|
|
|
|
...option,
|
|
|
|
|
label: $t(option.label as App.I18n.I18nKey)
|
|
|
|
|
}));
|
2023-11-17 08:45:00 +08:00
|
|
|
|
}
|
2024-04-24 14:01:47 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Toggle html class
|
|
|
|
|
*
|
|
|
|
|
* @param className
|
|
|
|
|
*/
|
|
|
|
|
export function toggleHtmlClass(className: string) {
|
|
|
|
|
function add() {
|
|
|
|
|
document.documentElement.classList.add(className);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function remove() {
|
|
|
|
|
document.documentElement.classList.remove(className);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
add,
|
|
|
|
|
remove
|
|
|
|
|
};
|
|
|
|
|
}
|
2024-09-03 12:19:57 +08:00
|
|
|
|
|
|
|
|
|
/* 驼峰转换下划线 */
|
|
|
|
|
export function humpToLine(str: string, line: string = '-') {
|
|
|
|
|
let temp = str.replace(/[A-Z]/g, match => {
|
|
|
|
|
return `${line}${match.toLowerCase()}`;
|
|
|
|
|
});
|
|
|
|
|
// 如果首字母是大写,执行replace时会多一个_,这里需要去掉
|
|
|
|
|
if (temp.slice(0, 1) === line) {
|
|
|
|
|
temp = temp.slice(1);
|
|
|
|
|
}
|
|
|
|
|
return temp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 判断是否为空 */
|
|
|
|
|
export function isNotNull(value: any) {
|
|
|
|
|
return value !== undefined && value !== null && value !== '' && value !== 'undefined' && value !== 'null';
|
|
|
|
|
}
|