🚸 确保同一时间只能执行一个脚本

close #144
This commit is contained in:
目棃
2025-02-26 09:05:39 +08:00
parent 1b1abb9b88
commit beb457a884
2 changed files with 29 additions and 7 deletions

View File

@@ -3,8 +3,8 @@
<div class="tusm-top">
<div class="tusm-title">米游币任务({{ todayPoints }}/{{ totalPoints }})</div>
<div class="tusm-acts">
<v-btn @click="tryRefresh()" class="tusm-btn">刷新</v-btn>
<v-btn @click="tryAuto()" class="tusm-btn">执行</v-btn>
<v-btn @click="tryRefresh()" class="tusm-btn" :loading="loadState">刷新</v-btn>
<v-btn @click="tryAuto()" class="tusm-btn" :loading="loadMission">执行</v-btn>
</div>
</div>
<div class="tusm-content">
@@ -55,6 +55,9 @@ const parseMissions = shallowRef<Array<ParseMission>>([]);
const missionList = shallowRef<Array<TGApp.BBS.Mission.MissionItem>>([]);
const todayPoints = ref<number>(0);
const totalPoints = ref<number>(0);
const loadScript = defineModel<boolean>();
const loadState = ref<boolean>(false);
const loadMission = ref<boolean>(false);
function mergeMission(
list: Array<TGApp.BBS.Mission.MissionItem>,
@@ -90,6 +93,12 @@ function mergeMission(
}
async function tryRefresh(): Promise<void> {
if (loadScript.value) {
showSnackbar.warn("任务正在执行中,请稍后再试");
return;
}
loadScript.value = true;
loadState.value = true;
await TGLogger.ScriptSep("米游币任务");
await TGLogger.Script("[米游币任务]刷新任务状态");
if (!cookie.value) {
@@ -105,9 +114,17 @@ async function tryRefresh(): Promise<void> {
};
await refreshState(ck);
await TGLogger.ScriptSep("米游币任务", false);
loadScript.value = false;
loadState.value = false;
}
async function tryAuto(): Promise<void> {
if (loadScript.value) {
showSnackbar.warn("任务正在执行中,请稍后再试");
return;
}
loadScript.value = true;
loadMission.value = true;
await TGLogger.ScriptSep("米游币任务");
await TGLogger.Script("[米游币任务]开始执行任务");
if (!cookie.value) {
@@ -133,6 +150,8 @@ async function tryAuto(): Promise<void> {
if (postFilter.every((i) => i.status)) {
await TGLogger.Script("[米游币任务]所有任务已完成");
await TGLogger.ScriptSep("米游币任务", false);
loadScript.value = false;
loadMission.value = false;
return;
}
let isShare = false;
@@ -202,6 +221,8 @@ async function tryAuto(): Promise<void> {
await TGLogger.Script("[米游币任务]任务执行完毕,即将刷新任务状态");
await refreshState(ck);
await TGLogger.ScriptSep("米游币任务", false);
loadScript.value = false;
loadMission.value = false;
}
async function refreshState(ck: Record<string, string>): Promise<void> {

View File

@@ -47,16 +47,16 @@
</div>
</template>
<template #append>
<span class="top-hint" @click="tryCkVerify()" title="点击验证"
>需要验证码登录所需cookie</span
>
<span class="top-hint" @click="tryCkVerify()" title="点击验证">
需要验证码登录所需cookie
</span>
</template>
</v-app-bar>
<div class="us-page-container">
<!-- 左侧脚本列表 -->
<div class="us-scripts">
<div class="us-title">脚本列表</div>
<TusMission />
<TusMission v-model="runScript" />
</div>
<!-- 右侧脚本输出 -->
<TusOutput />
@@ -70,7 +70,7 @@ import TusMission from "@comp/userScripts/tus-mission.vue";
import TusOutput from "@comp/userScripts/tus-output.vue";
import TSUserAccount from "@Sqlite/modules/userAccount.js";
import { storeToRefs } from "pinia";
import { onMounted, shallowRef } from "vue";
import { onMounted, ref, shallowRef } from "vue";
import { useUserStore } from "@/store/modules/user.js";
import apiHubReq from "@/web/request/apiHubReq.js";
@@ -78,6 +78,7 @@ import apiHubReq from "@/web/request/apiHubReq.js";
const { uid, briefInfo, cookie, account } = storeToRefs(useUserStore());
const accounts = shallowRef<Array<TGApp.App.Account.User>>([]);
const curAccount = shallowRef<TGApp.App.Account.User>();
const runScript = ref<boolean>(false);
onMounted(async () => {
accounts.value = await TSUserAccount.account.getAllAccount();