hazop插件修改完成

This commit is contained in:
2026-09-11 17:01:35 +08:00
parent 1c4c8e7b62
commit c310ab351e
6 changed files with 580 additions and 44 deletions
+33 -17
View File
@@ -32,6 +32,16 @@ const regenerateLoading = ref<boolean>(false);
const submitLoading = ref<boolean>(false);
const confirmed = ref<boolean>(false);
// 是否重新生成
const regenerateTypes = ref<Record<string, boolean>>({
'form':false,
'risk':false,
'train':false,
'pssr':false,
'evaluation':false,
'close':false,
});
// 存储每个步骤选中的审核人 user_id
const approvers = ref<Record<number, number[]>>({})
const flowList = ref<any[]>([]);
@@ -95,6 +105,7 @@ const download = async () => {
}
// 重新生成:AI 调用逻辑由各标签页组件实现(按 type 分发),此处仅派发事件
const regenerate = async () => {
regenerateTypes.value[props.type] = true;
emit('regenerate', props.type);
}
// 供父组件控制「重新生成」按钮 loading
@@ -173,25 +184,30 @@ defineExpose({clearApprovers, setRegenerateLoading})
<div>
<div class="flex flex-wrap items-center justify-between gap-2 border-t p-4">
<div class="flex flex-wrap gap-2">
<NButton ghost type="success" :disabled="btnDisabled" :loading="downloadLoading" @click="download">
<Icon icon="material-symbols:download" class="size-16px" />
<span v-if="props.type==='form'">下载变更申请表</span>
<span v-if="props.type==='risk'">下载风险分析记录表</span>
<span v-if="props.type==='train'">下载变更培训内容</span>
<span v-if="props.type==='pssr'">下载PSSR检查内容</span>
<span v-if="props.type==='evaluation'">下载验收评价</span>
<span v-if="props.type==='close'">下载变更关闭确认表</span>
<NButton v-if="isAiOpen && type!=='risk'" ghost type="warning" :disabled="btnDisabled || regenerateLoading" @click="regenerate">
<Icon icon="tdesign:refresh" class="size-14px mr-1" :class="regenerateLoading?'animate-spin':''" />
<template v-if="regenerateLoading">
<span>生成中...</span>
</template>
<template v-else>
<span v-if="type==='form'">{{regenerateTypes[type]?'重新生成变更申请表':'生成变更申请表'}}</span>
<span v-if="type==='train'">{{regenerateTypes[type]?'重新生成变更培训内容':'生成变更培训内容'}}</span>
<span v-if="type==='pssr'">{{regenerateTypes[type]?'重新生成PSSR检查内容':'生成PSSR检查内容'}}</span>
<span v-if="type==='evaluation'">{{regenerateTypes[type]?'重新生成验收评价':'生成验收评价'}}</span>
<span v-if="type==='close'">{{regenerateTypes[type]?'重新生成变更关闭确认表':'生成变更关闭确认表'}}</span>
</template>
</NButton>
<NButton v-if="props.isAiOpen" ghost type="warning" :disabled="btnDisabled" :loading="regenerateLoading" @click="regenerate">
<Icon icon="tdesign:refresh" class="size-14px mr-1" />
<span v-if="props.type==='form'">重新生成变更申请表</span>
<span v-if="props.type==='risk'">重新生成风险分析记录表</span>
<span v-if="props.type==='train'">重新生成变更培训内容</span>
<span v-if="props.type==='pssr'">重新生成PSSR检查内容</span>
<span v-if="props.type==='evaluation'">重新生成验收评价</span>
<span v-if="props.type==='close'">重新生成变更关闭确认表</span>
<NButton ghost type="success" :disabled="btnDisabled || downloadLoading" @click="download">
<Icon v-if="downloadLoading" icon="tdesign:refresh" class="size-14px mr-1 animate-spin" />
<Icon v-else icon="material-symbols:download" class="size-16px" />
<span v-if="type==='form'">下载变更申请表</span>
<span v-if="type==='risk'">下载风险分析记录表</span>
<span v-if="type==='train'">下载变更培训内容</span>
<span v-if="type==='pssr'">下载PSSR检查内容</span>
<span v-if="type==='evaluation'">下载验收评价</span>
<span v-if="type==='close'">下载变更关闭确认表</span>
</NButton>
<NButton v-if="props.isAiOpen" ghost :type="confirmed ? 'success' : 'primary'" :disabled="btnDisabled" @click="confirmTab">
<NButton v-if="isAiOpen" ghost :type="confirmed ? 'success' : 'primary'" :disabled="btnDisabled" @click="confirmTab">
<Icon icon="ix:success" class="size-16px mr-1" /> {{ confirmed ? '已确认完毕' : '本标签内容确认完毕' }}
</NButton>
</div>