diff --git a/src/views/my/initiateChange/index.vue b/src/views/my/initiateChange/index.vue index 8aaa9ec..99bf30f 100644 --- a/src/views/my/initiateChange/index.vue +++ b/src/views/my/initiateChange/index.vue @@ -3,12 +3,12 @@ import { computed, ref } from 'vue'; import { Icon } from '@iconify/vue' import { useThemeStore } from '@/store/modules/theme'; import { - CHANGES, DOC_TODO, LEVEL_COLOR, STATUS_COLOR, TEMP_WATCH, URGE_RECORDS, - countOpenStatus, type ChangeLevel, type ChangeOrder, type ChangeStatus, type ChangeType, + CHANGES, type ChangeLevel, type ChangeOrder, type ChangeStatus, type ChangeType, } from "@/typings/model"; import { getColorWithOpacity } from "@/utils/common"; -import HighlightText from "@/views/my/modules/HighlightText.vue"; -import Ed from "@/views/my/modules/Ed.vue"; +import HighlightText from "./modules/HighlightText.vue"; +import Ed from "./modules/Ed.vue"; +import Hazop from "./modules/hazop.vue"; const themeStore = useThemeStore(); @@ -108,8 +108,7 @@ const formGen = ref("idle"); const materialsText = ref(""); const updateDocs = ref([]); const disciplines = ref([]); -const tools = ref(["JSA", "检查表法", "通用检查表"]); -const plugin = ref<"HAZOP" | "JSA" | "检查表法" | "通用检查表" | null>(null); +const tools = ref(["HAZOP","JSA", "SCL", "通用检查表"]); const genForm = () => { if (formGen.value === "generating") return; formGen.value = "generating"; @@ -136,8 +135,8 @@ const genForm = () => { updateDocs.value = ["PID图纸", "操作规程", "总图", "设备台账"]; disciplines.value = ["技术", "仪表"]; signers.value = { 技术: "王仪表(技术部)", 仪表: "王仪表(技术部 · 仪表)" }; - tools.value = ["JSA", "检查表法", "通用检查表"]; - plugin.value = null; + tools.value = ["HAZOP","JSA", "SCL", "通用检查表"]; + currentPlugin.value = ""; formGen.value = "done"; tab.value = "form"; window.$message?.success("变更申请单已生成:AI 自动总结名称、预填内容,均可手动修改"); @@ -293,7 +292,7 @@ const levelResult = computed(() => (totalScore.value >= 20 ? "重要变更" : " const RISK_TOOLS_FORM = [ { key: "HAZOP", label: "HAZOP" }, { key: "JSA", label: "JSA" }, - { key: "检查表法", label: "设备SCL" }, + { key: "SCL", label: "设备SCL" }, { key: "通用检查表", label: "风险检查表" }, ]; const recommendTools = () => { @@ -301,9 +300,6 @@ const recommendTools = () => { tools.value = lv === "重要" ? ["HAZOP", "JSA", "检查表法", "通用检查表"] : ["JSA", "检查表法", "通用检查表"]; window.$message?.success(`已按「${lv}变更」规则匹配风险分析工具,可继续手动重选`); }; -const toggleTool = (t: string) => { - tools.value = tools.value.includes(t) ? tools.value.filter((x) => x !== t) : [...tools.value, t]; -}; const files = ref(["小试实验报告.pdf", "杂质初步分析.docx"]); const previewFile = ref(null); @@ -396,7 +392,7 @@ const finishApprover = () => { const TOOL_CARDS = [ { key: "HAZOP" as const, name: "HAZOP 分析", desc: "节点-偏离结构化分析:原因 / 后果 / LS 风险矩阵 / 安全措施" }, { key: "JSA" as const, name: "JSA 分析", desc: "作业步骤分解:危害因素识别与 LS 风险分级管控" }, - { key: "检查表法" as const, name: "设备 SCL", desc: "设备 / 管理检查项目对照标准逐项核查" }, + { key: "SCL" as const, name: "设备 SCL", desc: "设备 / 管理检查项目对照标准逐项核查" }, { key: "通用检查表" as const, name: "风险检查表", desc: "变更通用检查项:是 / 否 / 不涉及逐项判定,输出风险描述与管控措施" }, ]; const pluginDone = ref>({}); @@ -404,15 +400,6 @@ const riskRecords = ref([]); const updRec = (i: number, patch: Partial) => { riskRecords.value = riskRecords.value.map((x, j) => (j === i ? { ...x, ...patch } : x)); }; -const addRiskRecords = (items: any[], mode: "manual" | "ai") => { - riskRecords.value = [...riskRecords.value, ...items]; - if (mode === "ai") { - plugin.value = null; - window.$message?.success(`AI 已自动整理形成风险分析记录表(新增 ${items.length} 项),支持手动修改`); - } else { - window.$message?.success(`已选入 ${items.length} 条风险记录,可继续挑选或返回查看记录表`); - } -}; const lvlNext = (v: string) => (v === "高" ? "中" : v === "中" ? "低" : "高"); const pssrGroups = ref<{ g: string; items: any[] }[]>([ { g: "一、风险分析行动项落实", items: [ @@ -561,6 +548,30 @@ const uploadConfirm = () => { uploadDoc.value = null; } +const pluginDrawer = ref(false); +const currentPlugin = ref(""); +// 插件选择 +const toggleTool = (t: any) => { + if (!tools.value.includes(t.key)) + tools.value = tools.value.includes(t.key) ? tools.value.filter((x) => x !== t.key) : [...tools.value, t.key]; + currentPlugin.value = t.key; + pluginDrawer.value = true; +}; + + +const exportAll = (items: any[], mode: "manual" | "ai") => { + riskRecords.value = [...riskRecords.value, ...items]; + if (mode === "ai") { + pluginDrawer.value = false; + currentPlugin.value = ''; + window.$message?.success(`AI 已自动整理形成风险分析记录表(新增 ${items.length} 项),支持手动修改`); + } else { + window.$message?.success(`已选入 ${items.length} 条风险记录,可继续挑选或返回查看记录表`); + } +} +const onBack = () => { + pluginDrawer.value = false; +} @@ -927,7 +938,7 @@ const uploadConfirm = () => { - + + + + + + + diff --git a/src/views/my/modules/Ed.vue b/src/views/my/initiateChange/modules/Ed.vue similarity index 87% rename from src/views/my/modules/Ed.vue rename to src/views/my/initiateChange/modules/Ed.vue index 0a46784..8777b23 100644 --- a/src/views/my/modules/Ed.vue +++ b/src/views/my/initiateChange/modules/Ed.vue @@ -9,7 +9,7 @@ const start = () => { val.value = props.v; ed.value = true; }; const done = () => { ed.value = false; if (val.value !== props.v) emit("update", val.value); };