refactor(components): 使用defineAsyncComponent优化异步组件加载

fix(public.js): 添加getScriptParameter函数并处理请求参数
style(index.html): 移除多余空行和注释
perf(bi.js): 移除冗余ajax方法并优化请求参数处理
docs(sign-in.txt): 调整样式和响应式布局
This commit is contained in:
DESKTOP-RQ919RC\Pc
2025-12-05 19:07:33 +08:00
parent 40d83d5374
commit 003b5992a5
19 changed files with 1899 additions and 1705 deletions

View File

@@ -194,8 +194,18 @@ class BiCard extends HTMLElement {
console.log(`用户卡片 ${this.getAttribute("username")} 已卸载`);
}
getScriptParameter(paramName) {
const currentScript = document.currentScript;
if (currentScript && currentScript.src) {
const url = new URL(currentScript.src, window.location.origin);
return url.searchParams.get(paramName);
}
return null;
}
fetchData(url, data) {
return new Promise((resolve, reject) => {
if (data) data["v"] = this.getScriptParameter("v") || "v2";
var xhr = new XMLHttpRequest();
xhr.responseType = "json";
xhr.withCredentials = true;
@@ -218,6 +228,9 @@ class BiCard extends HTMLElement {
fetchGetData(url) {
return new Promise((resolve, reject) => {
const paramSymbol = url.includes("?") ? "&" : "?";
url = `${url}${paramSymbol}v=${this.getScriptParameter("v") || "v2"}`;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
@@ -234,64 +247,6 @@ class BiCard extends HTMLElement {
xhr.send();
});
}
$ajax(url) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new Promise(function (resolve, reject) {
axios
.post(url, data, {
emulateJSON: true,
withCredentials: true,
})
.then(function (res) {
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
if (data.code == 401) {
// 需要登录
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
reject();
}
resolve(data);
})
.catch((err) => {
if (err.response.status == 401)
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
});
});
}
$ajaxget(url) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new Promise(function (resolve, reject) {
axios
.get(
url,
{},
{
emulateJSON: true,
withCredentials: true,
}
)
.then(function (res) {
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
if (data.code == 401) {
// 需要登录
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
reject();
}
resolve(data);
})
.catch((error) => {
reject(error);
});
});
}
}
// 3. 注册组件(确保只注册一次)