🚸 统一UIGF导出交互,导出前选择导出路径

This commit is contained in:
BTMuli
2026-03-22 00:40:41 +08:00
parent f9b64c5c6a
commit 2807ce48a6
3 changed files with 32 additions and 6 deletions

View File

@@ -70,8 +70,10 @@ import { computed, onMounted, ref, shallowRef, watch } from "vue";
type UgoUidProps = {
/** 导入/导出 */
mode: "import" | "export";
/** filePathImport路径 */
/** filePathImport路径 */
fpi?: string;
/** filePathExport导出路径 */
fpe?: string;
};
/**
* UID项
@@ -107,7 +109,7 @@ onMounted(async () => {
});
watch(
() => [visible.value, props.mode, props.fpi],
() => [visible.value, props.mode, props.fpi, props.fpe],
async () => {
if (visible.value) await refreshData();
},
@@ -127,7 +129,7 @@ async function refreshData(): Promise<void> {
fp.value = props.fpi ?? fpEmptyText;
await refreshImport();
} else {
fp.value = await getDefaultSavePath();
fp.value = props.fpe ?? (await getDefaultSavePath());
await refreshExport();
}
}

View File

@@ -140,7 +140,7 @@
</v-window-item>
</v-window>
</div>
<UgoUid v-model="ovShow" :fpi="ovFpi" :mode="ovMode" />
<UgoUid v-model="ovShow" :fpe="ovFpe" :fpi="ovFpi" :mode="ovMode" />
<UgoHutaoDu v-model="hutaoShow" :mode="htMode" @selected="handleHutaoDu" />
</template>
<script lang="ts" setup>
@@ -181,6 +181,7 @@ const { isLogin: isLoginHutao, accessToken, userName, userInfo } = storeToRefs(h
const ovMode = ref<"export" | "import">("import");
const ovShow = ref<boolean>(false);
const ovFpi = ref<string>();
const ovFpe = ref<string>();
const authkey = ref<string>("");
const uidCur = ref<string>();
@@ -654,7 +655,18 @@ async function exportUigf4(): Promise<void> {
showSnackbar.error("未获取到 UID");
return;
}
const tsNow = Math.floor(Date.now() / 1000);
const file = await save({
title: "导出祈愿数据",
filters: [{ name: "UIGF JSON", extensions: ["json"] }],
defaultPath: `${await path.downloadDir()}${path.sep()}UIGFv4.2_${tsNow}.json`,
});
if (!file) {
showSnackbar.cancel("已取消文件保存");
return;
}
await TGLogger.Info(`[UserGacha][${uidCur.value}][exportUigf4] 导出祈愿数据(v4)`);
ovFpe.value = file;
ovMode.value = "export";
ovShow.value = true;
}

View File

@@ -84,7 +84,7 @@
</v-window-item>
</v-window>
</div>
<UgoUid v-model="ovShow" :fpi="ovFpi" :mode="ovMode" />
<UgoUid v-model="ovShow" :fpe="ovFpe" :fpi="ovFpi" :mode="ovMode" />
</template>
<script lang="ts" setup>
import showDialog from "@comp/func/dialog.js";
@@ -99,7 +99,7 @@ import TSUserAccount from "@Sqlm/userAccount.js";
import TSUserGachaB from "@Sqlm/userGachaB.js";
import useUserStore from "@store/user.js";
import { path } from "@tauri-apps/api";
import { open } from "@tauri-apps/plugin-dialog";
import { open, save } from "@tauri-apps/plugin-dialog";
import TGLogger from "@utils/TGLogger.js";
import { storeToRefs } from "pinia";
import { onMounted, ref, shallowRef, watch } from "vue";
@@ -113,6 +113,7 @@ const { account, cookie } = storeToRefs(useUserStore());
const ovMode = ref<"export" | "import">("import");
const ovShow = ref<boolean>(false);
const ovFpi = ref<string>();
const ovFpe = ref<string>();
const authkey = ref<string>("");
const uidCur = ref<string>();
@@ -351,7 +352,18 @@ async function exportUigf(): Promise<void> {
showSnackbar.error("未获取到 UID");
return;
}
const tsNow = Math.floor(Date.now() / 1000);
const file = await save({
title: "导出祈愿数据",
filters: [{ name: "UIGF JSON", extensions: ["json"] }],
defaultPath: `${await path.downloadDir()}${path.sep()}UIGFv4.2_${tsNow}.json`,
});
if (!file) {
showSnackbar.cancel("已取消文件保存");
return;
}
await TGLogger.Info(`[UserGachaB][${uidCur.value}][exportUigf] 导出祈愿数据`);
ovFpe.value = file;
ovMode.value = "export";
ovShow.value = true;
}