mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-30 04:39:44 +08:00
优化工作流卡片和对话框中的事件类型显示逻辑
This commit is contained in:
@@ -6,6 +6,10 @@ import ForkWorkflowDialog from '../dialog/ForkWorkflowDialog.vue'
|
||||
// 输入参数
|
||||
const props = defineProps({
|
||||
workflow: Object as PropType<WorkflowShare>,
|
||||
eventTypes: {
|
||||
type: Array as PropType<Array<{ title: string; value: string }>>,
|
||||
default: () => [],
|
||||
},
|
||||
})
|
||||
|
||||
// 定义删除事件
|
||||
@@ -135,6 +139,7 @@ function doDelete() {
|
||||
v-if="forkWorkflowDialog"
|
||||
v-model="forkWorkflowDialog"
|
||||
:workflow="props.workflow"
|
||||
:event-types="props.eventTypes"
|
||||
@close="forkWorkflowDialog = false"
|
||||
@fork="finishForkWorkflow"
|
||||
@delete="doDelete"
|
||||
|
||||
@@ -16,6 +16,10 @@ const props = defineProps({
|
||||
required: true,
|
||||
type: Object as PropType<Workflow>,
|
||||
},
|
||||
eventTypes: {
|
||||
type: Array as PropType<Array<{ title: string; value: string }>>,
|
||||
default: () => [],
|
||||
},
|
||||
})
|
||||
|
||||
// 定义事件
|
||||
@@ -39,6 +43,12 @@ const shareDialog = ref(false)
|
||||
// 加载中
|
||||
const loading = ref(false)
|
||||
|
||||
// 根据事件类型值获取显示文本
|
||||
const getEventTypeText = (eventTypeValue: string) => {
|
||||
const eventType = props.eventTypes.find(item => item.value === eventTypeValue)
|
||||
return eventType ? eventType.title : eventTypeValue
|
||||
}
|
||||
|
||||
// 编辑任务
|
||||
function handleEdit(item: Workflow) {
|
||||
editDialog.value = true
|
||||
@@ -305,7 +315,7 @@ const resolveProgress = (item: Workflow) => {
|
||||
</span>
|
||||
<span v-else-if="workflow?.trigger_type === 'event'">
|
||||
<VIcon icon="mdi-calendar-check" size="small" class="me-1" />
|
||||
{{ workflow?.event_type }}
|
||||
{{ getEventTypeText(workflow?.event_type || '') }}
|
||||
</span>
|
||||
<span v-else-if="workflow?.trigger_type === 'manual'">
|
||||
<VIcon icon="mdi-hand-pointing-up" size="small" class="me-1" />
|
||||
|
||||
@@ -13,6 +13,10 @@ const { t } = useI18n()
|
||||
// 输入参数
|
||||
const props = defineProps({
|
||||
workflow: Object as PropType<WorkflowShare>,
|
||||
eventTypes: {
|
||||
type: Array as PropType<Array<{ title: string; value: string }>>,
|
||||
default: () => [],
|
||||
},
|
||||
})
|
||||
|
||||
// 定义事件
|
||||
@@ -32,6 +36,12 @@ const processing = ref(false)
|
||||
// 删除中
|
||||
const deleting = ref(false)
|
||||
|
||||
// 根据事件类型值获取显示文本
|
||||
const getEventTypeText = (eventTypeValue: string) => {
|
||||
const eventType = props.eventTypes.find(item => item.value === eventTypeValue)
|
||||
return eventType ? eventType.title : eventTypeValue
|
||||
}
|
||||
|
||||
// 流程图相关
|
||||
const { nodes, edges } = useVueFlow()
|
||||
|
||||
@@ -200,7 +210,7 @@ async function doDelete() {
|
||||
</span>
|
||||
<span v-else-if="props.workflow?.trigger_type === 'event'">
|
||||
<VIcon icon="mdi-calendar-check" size="small" class="me-1" />
|
||||
{{ props.workflow?.event_type }}
|
||||
{{ getEventTypeText(props.workflow?.event_type || '') }}
|
||||
</span>
|
||||
<span v-else-if="props.workflow?.trigger_type === 'manual'">
|
||||
<VIcon icon="mdi-hand-pointing-up" size="small" class="me-1" />
|
||||
|
||||
@@ -26,6 +26,18 @@ const addDialog = ref(false)
|
||||
// 所有任务
|
||||
const workflowList = ref<Workflow[]>([])
|
||||
|
||||
// 事件类型列表
|
||||
const eventTypes = ref<Array<{ title: string; value: string }>>([])
|
||||
|
||||
// 加载事件类型列表
|
||||
async function loadEventTypes() {
|
||||
try {
|
||||
eventTypes.value = await api.get('workflow/event_types')
|
||||
} catch (error) {
|
||||
console.error('Failed to load event types:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 加载数据
|
||||
async function fetchData() {
|
||||
try {
|
||||
@@ -51,6 +63,7 @@ useDynamicButton({
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
loadEventTypes()
|
||||
fetchData()
|
||||
})
|
||||
|
||||
@@ -62,7 +75,7 @@ onActivated(() => {
|
||||
<div>
|
||||
<LoadingBanner v-if="!isRefreshed" class="mt-12" />
|
||||
<div v-if="workflowList.length > 0 && isRefreshed" class="grid gap-4 grid-workflow-card px-2">
|
||||
<WorkflowTaskCard v-for="item in workflowList" :key="item.id" :workflow="item" @refresh="fetchData" />
|
||||
<WorkflowTaskCard v-for="item in workflowList" :key="item.id" :workflow="item" :event-types="eventTypes" @refresh="fetchData" />
|
||||
</div>
|
||||
<NoDataFound
|
||||
v-if="workflowList.length === 0 && isRefreshed"
|
||||
|
||||
@@ -41,6 +41,18 @@ const isRefreshed = ref(false)
|
||||
const dataList = ref<WorkflowShare[]>([])
|
||||
const currData = ref<WorkflowShare[]>([])
|
||||
|
||||
// 事件类型列表
|
||||
const eventTypes = ref<Array<{ title: string; value: string }>>([])
|
||||
|
||||
// 加载事件类型列表
|
||||
async function loadEventTypes() {
|
||||
try {
|
||||
eventTypes.value = await api.get('workflow/event_types')
|
||||
} catch (error) {
|
||||
console.error('Failed to load event types:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 拼装参数
|
||||
function getParams() {
|
||||
let params = {
|
||||
@@ -121,6 +133,7 @@ function removeData(id: string) {
|
||||
}
|
||||
|
||||
onActivated(() => {
|
||||
loadEventTypes()
|
||||
fetchData({ done: () => {} })
|
||||
})
|
||||
</script>
|
||||
@@ -133,7 +146,12 @@ onActivated(() => {
|
||||
<template #empty />
|
||||
<div v-if="dataList.length > 0" class="grid gap-4 grid-workflow-share-card" tabindex="0">
|
||||
<div v-for="data in dataList" :key="data.id">
|
||||
<WorkflowShareCard :workflow="data" @delete="removeData(data.id || '')" @update="emit('update')" />
|
||||
<WorkflowShareCard
|
||||
:workflow="data"
|
||||
:event-types="eventTypes"
|
||||
@delete="removeData(data.id || '')"
|
||||
@update="emit('update')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<NoDataFound
|
||||
|
||||
Reference in New Issue
Block a user