fix task article link drawer
Frontend CI / Frontend (push) Successful in 5m6s
Backend CI / Backend (push) Successful in 16m45s

This commit is contained in:
2026-05-14 21:14:27 +08:00
parent 34dda524d7
commit 765dae4bf1
15 changed files with 735 additions and 104 deletions
@@ -344,6 +344,12 @@ async function cleanupEmptyFreeCreate(): Promise<void> {
}
function navigateBack(): void {
const returnTo = normalizeReturnTo(route.query.return_to)
if (returnTo) {
void router.push(returnTo)
return
}
if (window.history.length > 1) {
void router.back()
return
@@ -352,6 +358,18 @@ function navigateBack(): void {
void router.push('/articles/templates')
}
function normalizeReturnTo(value: unknown): string | null {
const raw = Array.isArray(value) ? value[0] : value
if (typeof raw !== 'string') {
return null
}
const trimmed = raw.trim()
if (!trimmed || !trimmed.startsWith('/') || trimmed.startsWith('//')) {
return null
}
return trimmed
}
function handleStay(): void {
leaveModalOpen.value = false
}
@@ -1,7 +1,8 @@
<script setup lang="ts">
import { ClockCircleOutlined, ThunderboltOutlined } from '@ant-design/icons-vue'
import { ref } from 'vue'
import { ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRoute, useRouter } from 'vue-router'
import CustomArticleTab from '@/components/CustomArticleTab.vue'
import InstantGenerateModal from '@/components/InstantGenerateModal.vue'
@@ -11,11 +12,48 @@ import ScheduleTaskModal from '@/components/ScheduleTaskModal.vue'
import ScheduleTaskTab from '@/components/ScheduleTaskTab.vue'
const { t } = useI18n()
const route = useRoute()
const router = useRouter()
const activeTab = ref('articles')
const customTabs = ['articles', 'instantTasks', 'scheduleTasks', 'promptRules'] as const
type CustomTab = (typeof customTabs)[number]
const activeTab = ref<CustomTab>(normalizeCustomTab(route.query.tab))
const instantModalOpen = ref(false)
const scheduleModalOpen = ref(false)
function normalizeCustomTab(value: unknown): CustomTab {
const tab = Array.isArray(value) ? value[0] : value
return customTabs.includes(tab as CustomTab) ? (tab as CustomTab) : 'articles'
}
watch(
() => route.query.tab,
(tab) => {
const normalized = normalizeCustomTab(tab)
if (activeTab.value !== normalized) {
activeTab.value = normalized
}
},
)
watch(
activeTab,
(tab) => {
if (route.query.tab === tab) {
return
}
void router.replace({
name: 'articles-custom',
query: {
...route.query,
tab,
},
})
},
{ immediate: true },
)
function openInstantModal(): void {
instantModalOpen.value = true
}