首页调试工作流管理
This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
>
|
||||
<el-icon><Promotion /></el-icon>
|
||||
{{ wf.name }}
|
||||
<span v-if="wf.isTemplate" class="pill-tag">模板</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -75,13 +76,15 @@ interface Props {
|
||||
|
||||
interface Emits {
|
||||
(e: 'send', message: string): void;
|
||||
(e: 'workflow-select', workflowId: string | null): void;
|
||||
(e: 'workflow-select', workflowId: string | null, isTemplate?: boolean): void;
|
||||
}
|
||||
|
||||
interface Workflow {
|
||||
id: string;
|
||||
name: string;
|
||||
prefix: string;
|
||||
isTemplate: boolean;
|
||||
raw?: any;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
@@ -104,11 +107,18 @@ const visibleWorkflows = computed(() => {
|
||||
const fetchWorkflows = async () => {
|
||||
try {
|
||||
const res = await getWorkflowList();
|
||||
const workflows = res.data?.listFlowUserRes?.list || [];
|
||||
const userList = res.data?.listFlowUserRes?.list || [];
|
||||
const tplList = res.data?.listFlowTemplateRes?.list || [];
|
||||
const workflows = [
|
||||
...userList.map((w) => ({ ...w, isTemplate: false })),
|
||||
...tplList.map((w) => ({ ...w, isTemplate: true })),
|
||||
];
|
||||
commonWorkflows.value = workflows.map((w) => ({
|
||||
id: String(w.id),
|
||||
name: w.flowName || '未命名',
|
||||
prefix: '[工作流] ' + (w.flowName || '') + ':\n',
|
||||
name: w.flowName || w.flowTemplateName || '未命名',
|
||||
prefix: '[工作流] ' + (w.flowName || w.flowTemplateName || '') + ':\n',
|
||||
isTemplate: !!w.isTemplate,
|
||||
raw: w,
|
||||
}));
|
||||
} catch {
|
||||
commonWorkflows.value = [];
|
||||
@@ -129,9 +139,10 @@ const handleAttachment = () => {
|
||||
|
||||
const toggleWorkflow = (id: string) => {
|
||||
if (props.workflowLocked) return;
|
||||
const item = commonWorkflows.value.find((w) => w.id === id);
|
||||
const newId = selectedWorkflowId.value === id ? null : id;
|
||||
selectedWorkflowId.value = newId;
|
||||
emit('workflow-select', newId);
|
||||
emit('workflow-select', newId, item?.isTemplate || false);
|
||||
};
|
||||
|
||||
const resetAll = () => {
|
||||
@@ -146,11 +157,17 @@ const resetAll = () => {
|
||||
emit('workflow-select', null);
|
||||
};
|
||||
|
||||
const selectWorkflow = (id: string | null) => {
|
||||
if (props.workflowLocked) return;
|
||||
selectedWorkflowId.value = id;
|
||||
emit('workflow-select', id, false);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
fetchWorkflows();
|
||||
});
|
||||
|
||||
defineExpose({ resetAll, clearWorkflow, selectedWorkflowId, commonWorkflows });
|
||||
defineExpose({ resetAll, clearWorkflow, selectWorkflow, fetchWorkflows, selectedWorkflowId, commonWorkflows });
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -371,4 +388,21 @@ onMounted(() => {
|
||||
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
.pill-tag {
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
padding: 2px 4px;
|
||||
border-radius: 4px;
|
||||
background: #fff7e6;
|
||||
color: #d97706;
|
||||
border: 1px solid #fde68a;
|
||||
white-space: nowrap;
|
||||
|
||||
.shortcut-pill.active & {
|
||||
background: rgba(255, 247, 230, 0.2);
|
||||
color: #fff;
|
||||
border-color: rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user