fix(system-settings): 修复定时任务时间选择器截断及添加取消按钮

Co-Authored-By: AAEE86 <ppk0227@hotmail.com>
This commit is contained in:
fawney19
2026-02-15 20:19:35 +08:00
parent 25046d7c98
commit 4dc401677d
2 changed files with 46 additions and 22 deletions

View File

@@ -58,10 +58,10 @@
:model-value="task.hour" :model-value="task.hour"
@update:model-value="(val: string) => task.updateTime(val, task.minute)" @update:model-value="(val: string) => task.updateTime(val, task.minute)"
> >
<SelectTrigger class="w-14 h-8 text-xs"> <SelectTrigger class="w-16 h-8 text-xs px-2 justify-center gap-1">
<SelectValue placeholder="" /> <SelectValue placeholder="" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent class="min-w-0">
<SelectItem <SelectItem
v-for="h in 24" v-for="h in 24"
:key="h - 1" :key="h - 1"
@@ -76,10 +76,10 @@
:model-value="task.minute" :model-value="task.minute"
@update:model-value="(val: string) => task.updateTime(task.hour, val)" @update:model-value="(val: string) => task.updateTime(task.hour, val)"
> >
<SelectTrigger class="w-14 h-8 text-xs"> <SelectTrigger class="w-16 h-8 text-xs px-2 justify-center gap-1">
<SelectValue placeholder="" /> <SelectValue placeholder="" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent class="min-w-0">
<SelectItem <SelectItem
v-for="m in 60" v-for="m in 60"
:key="m - 1" :key="m - 1"
@@ -89,23 +89,33 @@
</SelectItem> </SelectItem>
</SelectContent> </SelectContent>
</Select> </Select>
<Button <template v-if="task.hasChanges">
v-if="task.hasChanges" <Button
variant="default" variant="ghost"
size="sm" size="sm"
class="h-8 px-2.5 text-xs" class="h-8 px-2.5 text-xs"
:disabled="task.loading" :disabled="task.loading"
@click="task.onSave" @click="task.onCancel"
> >
<Check <X class="w-3.5 h-3.5" />
v-if="!task.loading" </Button>
class="w-3.5 h-3.5" <Button
/> variant="default"
<Loader2 size="sm"
v-else class="h-8 px-2.5 text-xs"
class="w-3.5 h-3.5 animate-spin" :disabled="task.loading"
/> @click="task.onSave"
</Button> >
<Check
v-if="!task.loading"
class="w-3.5 h-3.5"
/>
<Loader2
v-else
class="w-3.5 h-3.5 animate-spin"
/>
</Button>
</template>
</div> </div>
</div> </div>
@@ -142,7 +152,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { Clock, Check, Loader2 } from 'lucide-vue-next' import { Clock, Check, Loader2, X } from 'lucide-vue-next'
import Button from '@/components/ui/button.vue' import Button from '@/components/ui/button.vue'
import Input from '@/components/ui/input.vue' import Input from '@/components/ui/input.vue'
import Switch from '@/components/ui/switch.vue' import Switch from '@/components/ui/switch.vue'
@@ -168,6 +178,7 @@ interface ScheduledTask {
loading: boolean loading: boolean
onToggle: (enabled: boolean) => void onToggle: (enabled: boolean) => void
onSave: () => void onSave: () => void
onCancel: () => void
} }
defineProps<{ defineProps<{

View File

@@ -129,6 +129,16 @@ export function useScheduledTasks(systemConfig: Ref<SystemConfig>) {
} }
} }
// Cancel handlers
function handleCheckinTimeCancel() {
systemConfig.value.provider_checkin_time = previousCheckinTime.value
}
function handleQuotaResetConfigCancel() {
systemConfig.value.user_quota_reset_time = previousUserQuotaResetTime.value
systemConfig.value.user_quota_reset_interval_days = previousUserQuotaResetIntervalDays.value
}
// Save handlers // Save handlers
async function handleCheckinTimeSave() { async function handleCheckinTimeSave() {
const newTime = systemConfig.value.provider_checkin_time const newTime = systemConfig.value.provider_checkin_time
@@ -238,6 +248,7 @@ export function useScheduledTasks(systemConfig: Ref<SystemConfig>) {
loading: checkinConfigLoading.value, loading: checkinConfigLoading.value,
onToggle: handleProviderCheckinToggle, onToggle: handleProviderCheckinToggle,
onSave: handleCheckinTimeSave, onSave: handleCheckinTimeSave,
onCancel: handleCheckinTimeCancel,
}, },
{ {
id: 'user-quota-reset', id: 'user-quota-reset',
@@ -253,6 +264,7 @@ export function useScheduledTasks(systemConfig: Ref<SystemConfig>) {
loading: quotaResetConfigLoading.value, loading: quotaResetConfigLoading.value,
onToggle: handleUserQuotaResetToggle, onToggle: handleUserQuotaResetToggle,
onSave: handleQuotaResetConfigSave, onSave: handleQuotaResetConfigSave,
onCancel: handleQuotaResetConfigCancel,
}, },
{ {
id: 'oauth-token-refresh', id: 'oauth-token-refresh',
@@ -268,6 +280,7 @@ export function useScheduledTasks(systemConfig: Ref<SystemConfig>) {
loading: false, loading: false,
onToggle: handleOAuthTokenRefreshToggle, onToggle: handleOAuthTokenRefreshToggle,
onSave: () => {}, onSave: () => {},
onCancel: () => {},
}, },
]) ])