diff --git a/src/components/userCombat/tuc-ae-box.vue b/src/components/userCombat/tuc-ae-box.vue
index 17f950e7..c5677e3b 100644
--- a/src/components/userCombat/tuc-ae-box.vue
+++ b/src/components/userCombat/tuc-ae-box.vue
@@ -16,7 +16,7 @@
-
+
{{ enemy.name }}
diff --git a/src/pages/User/Combat.vue b/src/pages/User/Combat.vue
index d617f1b3..b0e17bc6 100644
--- a/src/pages/User/Combat.vue
+++ b/src/pages/User/Combat.vue
@@ -134,11 +134,11 @@
+
+

+
暂无数据,请尝试刷新
+
-
-

-
暂无数据,请尝试刷新
-
@@ -157,8 +157,8 @@ import TucOverview from "@comp/userCombat/tuc-overview.vue";
import TucRound from "@comp/userCombat/tuc-round.vue";
import hutao from "@Hutao/index.js";
import recordReq from "@req/recordReq.js";
+import TSUserAccount from "@Sqlm/userAccount.js";
import TSUserCombat from "@Sqlm/userCombat.js";
-import useAppStore from "@store/app.js";
import useHutaoStore from "@store/hutao.js";
import useUserStore from "@store/user.js";
import { getVersion } from "@tauri-apps/api/app";
@@ -173,7 +173,6 @@ import { useRouter } from "vue-router";
const router = useRouter();
const hutaoStore = useHutaoStore();
-const { isLogin } = storeToRefs(useAppStore());
const { account, cookie } = storeToRefs(useUserStore());
const { userName } = storeToRefs(hutaoStore);
@@ -196,14 +195,14 @@ onMounted(async () => {
await TGLogger.Info("[UserCombat][onMounted] 打开真境剧诗页面");
await showLoading.update("正在加载UID列表");
await reloadUid();
- if (uidCur.value) {
- await showLoading.update(`正在加载UID${uidCur.value}的剧诗数据`);
- await loadCombat();
- }
await showLoading.end();
});
watch(() => uidCur.value, loadCombat);
+watch(
+ () => account.value,
+ async () => await reloadUid(),
+);
async function toAbyss(): Promise {
await router.push({ name: "深境螺旋" });
@@ -213,6 +212,21 @@ async function toChallenge(): Promise {
await router.push({ name: "幽境危战" });
}
+async function hideAllOverlay(): Promise {
+ if (showTarot.value) {
+ showTarot.value = false;
+ await new Promise((resolve) => setTimeout(resolve, 500));
+ }
+ if (showChar.value) {
+ showChar.value = false;
+ await new Promise((resolve) => setTimeout(resolve, 500));
+ }
+ if (showStat.value) {
+ showStat.value = false;
+ await new Promise((resolve) => setTimeout(resolve, 500));
+ }
+}
+
async function loadWiki(): Promise {
await showLoading.start("正在加载统计数据");
const res = await hutao.Combat.data();
@@ -221,21 +235,21 @@ async function loadWiki(): Promise {
showSnackbar.warn(`[${res.retcode}] ${res.message}`);
await TGLogger.Warn(`[Combat][loadWiki] ${JSON.stringify(res)}`);
} else cloudCombat.value = res;
- await showLoading.end();
showSnackbar.success("成功获取统计数据");
- if (showTarot.value) showTarot.value = false;
- if (showChar.value) showChar.value = false;
+ await hideAllOverlay();
+ await showLoading.end();
showStat.value = true;
}
-async function reloadUid(): Promise {
+async function reloadUid(uid?: string): Promise {
uidList.value = await TSUserCombat.getAllUid();
- if (uidList.value.includes(account.value.gameUid)) uidCur.value = account.value.gameUid;
- else if (uidList.value.length > 0) uidCur.value = uidList.value[0];
- else if (isLogin.value) {
- uidList.value = [account.value.gameUid];
- uidCur.value = account.value.gameUid;
- } else uidCur.value = undefined;
+ if (uidList.value.length === 0) uidList.value = [account.value.gameUid];
+ if (uidList.value.includes(account.value.gameUid)) {
+ if (uid === undefined) uidCur.value = account.value.gameUid;
+ } else {
+ uidList.value = [account.value.gameUid, ...uidList.value];
+ if (uid === undefined) uidCur.value = uidList.value[0];
+ }
}
async function loadCombat(): Promise {
@@ -250,39 +264,46 @@ async function tryLoginHutao(): Promise {
}
async function refreshCombat(): Promise {
- if (!cookie.value) {
- showSnackbar.error("未登录");
- await TGLogger.Warn("[UserCombat][refreshCombat] 未登录");
- return;
- }
- if (uidCur.value && uidCur.value !== account.value.gameUid) {
- const switchCheck = await showDialog.check(
- "是否切换游戏账户",
- `确认则尝试切换至 ${uidCur.value}`,
- );
- if (switchCheck) {
- await useUserStore().switchGameAccount(uidCur.value);
- await refreshCombat();
+ let rfAccount = account.value;
+ let rfCk = cookie.value;
+ if (!uidCur.value) {
+ if (!rfCk) {
+ showSnackbar.warn("请先登录");
+ await TGLogger.Warn(`[Combat][refreshCombat][${rfAccount.gameUid}] 未登录`);
return;
}
- const freshCheck = await showDialog.check(
- "确定刷新?",
- `用户${account.value.gameUid}与当前UID${uidCur.value}不一致`,
- );
- if (!freshCheck) {
- showSnackbar.cancel("已取消剧诗数据刷新");
- return;
+ } else {
+ const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString());
+ console.log(uidCur.value, gcFind);
+ if (!gcFind) {
+ const check = await showDialog.check(
+ `确定刷新?`,
+ `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`,
+ );
+ if (!check) return;
+ } else {
+ const acFind = await TSUserAccount.account.getAccount(gcFind.uid);
+ if (!acFind) {
+ const check = await showDialog.check(
+ `确定刷新?`,
+ `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`,
+ );
+ if (!check) return;
+ } else {
+ rfAccount = gcFind;
+ rfCk = acFind.cookie;
+ }
}
}
- await TGLogger.Info("[UserCombat][refreshCombat] 更新剧诗数据");
- await showLoading.start(`正在获取${account.value.gameUid}的剧诗数据`);
- const res = await recordReq.combat.base(cookie.value, account.value);
+ await TGLogger.Info("[Combat][refreshCombat] 更新剧诗数据");
+ await showLoading.start(`正在获取${rfAccount.gameUid}的剧诗数据`);
+ const res = await recordReq.combat.base(rfCk!, rfAccount);
console.log(res);
if ("retcode" in res) {
await showLoading.end();
showSnackbar.error(`[${res.retcode}]${res.message}`);
- await TGLogger.Error(`[UserCombat][refreshCombat] 获取${account.value.gameUid}的剧诗数据失败`);
- await TGLogger.Error(`[UserCombat][refreshCombat] ${res.retcode} ${res.message}`);
+ await TGLogger.Error(`[Combat][refreshCombat] 获取${rfAccount.gameUid}的剧诗数据失败`);
+ await TGLogger.Error(`[Combat][refreshCombat] ${res.retcode} ${res.message}`);
return;
}
if (!res.is_unlock) {
@@ -293,48 +314,39 @@ async function refreshCombat(): Promise {
await showLoading.update("正在保存剧诗数据");
for (const combat of res.data) {
await showLoading.update("正在保存剧诗数据");
- await TSUserCombat.saveCombat(account.value.gameUid, combat);
+ await TSUserCombat.saveCombat(rfAccount.gameUid, combat);
}
await showLoading.update("正在加载剧诗数据");
- await reloadUid();
+ await reloadUid(uidCur.value);
await loadCombat();
await showLoading.end();
}
async function loadCharMaster(): Promise {
- if (!cookie.value) {
- showSnackbar.error("未登录");
- await TGLogger.Warn("[UserCombat][loadCharMaster] 未登录");
+ let cmAccount = account.value;
+ let cmCk = cookie.value;
+ const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value!.toString());
+ console.log(uidCur.value, gcFind);
+ if (!gcFind) {
+ showSnackbar.warn(`未找到 ${uidCur.value} 对应 UID,无法获取对应游迹数据`);
return;
}
- if (uidCur.value && uidCur.value !== account.value.gameUid) {
- const switchCheck = await showDialog.check(
- "是否切换游戏账户",
- `确认则尝试切换至 ${uidCur.value}`,
- );
- if (switchCheck) {
- await useUserStore().switchGameAccount(uidCur.value);
- await refreshCombat();
- return;
- }
- const freshCheck = await showDialog.check(
- "确定刷新?",
- `用户${account.value.gameUid}与当前UID${uidCur.value}不一致`,
- );
- if (!freshCheck) {
- showSnackbar.cancel("已取消剧诗数据刷新");
- return;
- }
+ cmAccount = gcFind;
+ const acFind = await TSUserAccount.account.getAccount(gcFind.uid);
+ if (!acFind) {
+ showSnackbar.warn(`未找到 ${uidCur.value} 对应 CK,无法获取对应游迹数据`);
+ return;
}
- await TGLogger.Info("[UserCombat][loadCharMaster] 获取绘想游迹数据");
- await showLoading.start(`正在获取${account.value.gameUid}的绘想游迹数据`);
- const res = await recordReq.combat.char(cookie.value, account.value);
+ cmCk = acFind.cookie;
+ await TGLogger.Info("[Combat][loadCharMaster] 获取绘想游迹数据");
+ await showLoading.start(`正在获取${cmAccount.gameUid}的绘想游迹数据`);
+ const res = await recordReq.combat.char(cmCk!, cmAccount);
console.log(res);
if ("retcode" in res) {
await showLoading.end();
showSnackbar.error(`[${res.retcode}]${res.message}`);
- await TGLogger.Error(`[UserCombat][loadCharMaster] 获取${account.value.gameUid}的剧诗数据失败`);
- await TGLogger.Error(`[UserCombat][loadCharMaster] ${res.retcode} ${res.message}`);
+ await TGLogger.Error(`[Combat][loadCharMaster] 获取${cmAccount.gameUid}的剧诗数据失败`);
+ await TGLogger.Error(`[Combat][loadCharMaster] ${res.retcode} ${res.message}`);
return;
}
if (!res.is_unlock) {
@@ -342,47 +354,37 @@ async function loadCharMaster(): Promise {
showSnackbar.warn("用户未解锁绘想游迹");
return;
} else charMasters.value = res.list;
- showSnackbar.success("成功获取绘想游迹数据");
+ showSnackbar.success(`成功获取 ${uidCur.value} 的绘想游迹数据`);
+ await hideAllOverlay();
await showLoading.end();
- if (showStat.value) showStat.value = false;
- if (showTarot.value) showTarot.value = false;
showChar.value = true;
}
async function loadTarot(): Promise {
- if (!cookie.value) {
- showSnackbar.error("未登录");
- await TGLogger.Warn("[UserCombat][loadTarot] 未登录");
+ let trAccount = account.value;
+ let trCk = cookie.value;
+ const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value!.toString());
+ console.log(uidCur.value, gcFind);
+ if (!gcFind) {
+ showSnackbar.warn(`未找到 ${uidCur.value} 对应 UID,无法获取对应圣牌数据`);
return;
}
- if (uidCur.value && uidCur.value !== account.value.gameUid) {
- const switchCheck = await showDialog.check(
- "是否切换游戏账户",
- `确认则尝试切换至 ${uidCur.value}`,
- );
- if (switchCheck) {
- await useUserStore().switchGameAccount(uidCur.value);
- await refreshCombat();
- return;
- }
- const freshCheck = await showDialog.check(
- "确定刷新?",
- `用户${account.value.gameUid}与当前UID${uidCur.value}不一致`,
- );
- if (!freshCheck) {
- showSnackbar.cancel("已取消剧诗数据刷新");
- return;
- }
+ trAccount = gcFind;
+ const acFind = await TSUserAccount.account.getAccount(gcFind.uid);
+ if (!acFind) {
+ showSnackbar.warn(`未找到 ${uidCur.value} 对应 CK,无法获取对应圣牌数据`);
+ return;
}
- await TGLogger.Info("[UserCombat][loadTarot] 获取月谕圣牌数据");
- await showLoading.start(`正在获取${account.value.gameUid}的月谕圣牌数据`);
- const res = await recordReq.combat.base(cookie.value, account.value);
+ trCk = acFind.cookie;
+ await TGLogger.Info("[Combat][loadTarot] 获取月谕圣牌数据");
+ await showLoading.start(`正在获取${trAccount.gameUid}的月谕圣牌数据`);
+ const res = await recordReq.combat.base(trCk!, trAccount);
console.log(res);
if ("retcode" in res) {
await showLoading.end();
showSnackbar.error(`[${res.retcode}]${res.message}`);
- await TGLogger.Error(`[UserCombat][loadTarot] 获取${account.value.gameUid}的月谕圣牌数据失败`);
- await TGLogger.Error(`[UserCombat][loadTarot] ${res.retcode} ${res.message}`);
+ await TGLogger.Error(`[Combat][loadTarot] 获取${trAccount.gameUid}的月谕圣牌数据失败`);
+ await TGLogger.Error(`[Combat][loadTarot] ${res.retcode} ${res.message}`);
return;
}
if (!res.is_unlock) {
@@ -390,10 +392,9 @@ async function loadTarot(): Promise {
showSnackbar.warn("用户未解锁幻想真境剧诗");
return;
} else tarotStat.value = res.tarot_card_state;
- showSnackbar.success("成功获取月谕圣牌数据");
+ showSnackbar.success(`成功获取${uidCur.value}的月谕圣牌数据`);
+ await hideAllOverlay();
await showLoading.end();
- if (showStat.value) showStat.value = false;
- if (showChar.value) showChar.value = false;
showTarot.value = true;
}
@@ -686,23 +687,6 @@ function isFinTarot(data: TGApp.Sqlite.Combat.TableTrans): boolean {
padding-left: 4px;
}
-.user-empty {
- position: absolute;
- top: calc(50vh - 200px);
- left: calc(50vw - 400px);
- display: flex;
- width: 800px;
- height: 400px;
- flex-direction: column;
- align-items: center;
- border-radius: 5px;
- background: var(--common-shadow-t-2);
- box-shadow: 0 0 5px var(--common-shadow-2);
- color: var(--common-text-title);
- font-family: var(--font-title);
- font-size: 1.5rem;
-}
-
.ucw-rounds {
display: flex;
width: 100%;
@@ -711,4 +695,20 @@ function isFinTarot(data: TGApp.Sqlite.Combat.TableTrans): boolean {
justify-content: center;
row-gap: 8px;
}
+
+.ucm-empty {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: flex;
+ width: 100%;
+ height: 100%;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ color: var(--common-text-title);
+ font-family: var(--font-title);
+ font-size: 1.5rem;
+ row-gap: 12px;
+}