feat: 接入 UserHome 前端业务代码(含真实 src/依赖,保留 projman 标准 CI)
deploy-userbase-front / build-and-deploy (push) Failing after 1m54s
build / build (push) Successful in 3m36s

This commit is contained in:
chenxing
2026-09-09 22:37:59 +08:00
parent a53ce07228
commit 4279f99be1
270 changed files with 12479 additions and 25715 deletions
+43 -46
View File
@@ -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;
}
}