feat: 接入 UserHome 前端业务代码(含真实 src/依赖,保留 projman 标准 CI)
This commit is contained in:
+43
-46
@@ -1,5 +1,6 @@
|
||||
import { IObj, UseTableSetting } from "@/types/Basics";
|
||||
import { IObj, StatsRealyConf, UseTableSetting } from "@/types/Basics";
|
||||
import { resolveComponent } from "vue";
|
||||
import { requireImg } from "./hook/useImg";
|
||||
export default class Utils {
|
||||
/**
|
||||
* 格式化日期
|
||||
@@ -83,7 +84,7 @@ export default class Utils {
|
||||
info: string,
|
||||
iconClass: string,
|
||||
callback: Function,
|
||||
disabled: boolean = false,
|
||||
disabled: boolean = false
|
||||
) {
|
||||
if (disabled) iconClass += " disabled";
|
||||
|
||||
@@ -102,10 +103,10 @@ export default class Utils {
|
||||
class: `operating-btn iconfont ${iconClass}`,
|
||||
onClick: callback,
|
||||
},
|
||||
null,
|
||||
null
|
||||
),
|
||||
],
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -114,7 +115,7 @@ export default class Utils {
|
||||
info: string,
|
||||
className: string,
|
||||
callback: Function,
|
||||
disabled: boolean = false,
|
||||
disabled: boolean = false
|
||||
) {
|
||||
if (disabled) className += " disabled";
|
||||
return h(
|
||||
@@ -123,7 +124,7 @@ export default class Utils {
|
||||
class: `operating-link ${className}`,
|
||||
onClick: disabled ? null : callback,
|
||||
},
|
||||
info,
|
||||
info
|
||||
);
|
||||
}
|
||||
|
||||
@@ -144,10 +145,6 @@ export default class Utils {
|
||||
tabsH = 56,
|
||||
pageH = 72,
|
||||
paddingH = 8;
|
||||
|
||||
//@ts-ignore
|
||||
const bschUtil = BschLoadUtil.getInstance();
|
||||
if (!bschUtil.getIsSelf()) headerH = 56;
|
||||
let tableH = bodyH - headerH - paddingH;
|
||||
isOperat && (tableH -= operatH);
|
||||
isTabs && (tableH -= tabsH);
|
||||
@@ -180,7 +177,7 @@ export default class Utils {
|
||||
"十",
|
||||
"百",
|
||||
"千",
|
||||
"亿",
|
||||
"亿"
|
||||
); //可继续追加更高位转换值
|
||||
if (!num || isNaN(num)) {
|
||||
return "零";
|
||||
@@ -308,45 +305,45 @@ export default class Utils {
|
||||
}
|
||||
|
||||
public static removeHtmlTag(str: string) {
|
||||
str = str.replace(/<\/?[^>]*>/g, ""); //去除HTML tag
|
||||
str = str.replace(/[ | ]*\n/g, "\n"); //去除行尾空白
|
||||
str = str.replace(/\n[\s| | ]*\r/g, "\n"); //去除多余空行
|
||||
str = str.replace(/ /gi, ""); //去掉
|
||||
return str;
|
||||
// str = str.replace(/<\/?[^>]*>/g, ""); //去除HTML tag
|
||||
// str = str.replace(/[ | ]*\n/g, "\n"); //去除行尾空白
|
||||
// str = str.replace(/\n[\s| | ]*\r/g, "\n"); //去除多余空行
|
||||
// str = str.replace(/ /gi, ""); //去掉
|
||||
// return str;
|
||||
const doc = new DOMParser().parseFromString(str, "text/html");
|
||||
return doc.body.textContent || "";
|
||||
}
|
||||
|
||||
public static unpackPerms = (bits: number) => [
|
||||
!!(bits & 1), // create
|
||||
!!(bits & 2), // update
|
||||
!!(bits & 4), // move
|
||||
!!(bits & 8), // delete
|
||||
];
|
||||
|
||||
public static copyToClipboard(text: string) {
|
||||
const input = document.createElement("input");
|
||||
input.setAttribute("value", text);
|
||||
document.body.appendChild(input);
|
||||
input.select();
|
||||
try {
|
||||
const successful = document.execCommand("copy");
|
||||
if (successful) {
|
||||
return Promise.resolve();
|
||||
} else {
|
||||
return Promise.reject();
|
||||
}
|
||||
} catch (err) {
|
||||
return Promise.reject(err);
|
||||
} finally {
|
||||
document.body.removeChild(input);
|
||||
}
|
||||
public static noProtocolPath(url: string) {
|
||||
let uri = new URL(url);
|
||||
return `//${uri.hostname}${uri.pathname}`;
|
||||
}
|
||||
|
||||
public static sleep(ms: number, callback?: () => void): Promise<void> {
|
||||
return new Promise<void>(resolve => {
|
||||
setTimeout(() => {
|
||||
callback?.();
|
||||
resolve();
|
||||
}, ms);
|
||||
/** 应用图标地址:icon 为空时回退本地默认图(避免 new URL("") 抛错) */
|
||||
public static appIconPath(url?: string | null) {
|
||||
return url ? this.noProtocolPath(url) : requireImg("defappicon.png");
|
||||
}
|
||||
|
||||
public static formatRealyToMap(arr: StatsRealyConf[]) {
|
||||
const map: Map<string, StatsRealyConf> = new Map();
|
||||
arr.forEach(element => {
|
||||
map.set(element.module, element);
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换对象key
|
||||
* @param obj 元数据
|
||||
* @param keyArr key替换数组
|
||||
* @returns
|
||||
*/
|
||||
public static replaceField<T>(obj: T, keyArr: any[]): T {
|
||||
let map = new Map(Object.entries(obj as object));
|
||||
keyArr.forEach(element => {
|
||||
map.set(element.n, map.get(element.o));
|
||||
map.delete(element.o);
|
||||
});
|
||||
return Object.fromEntries(map) as T;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user