diff --git a/src/views/home/initiateChange/index.vue b/src/views/home/initiateChange/index.vue index 0b731d3..9b4d32f 100644 --- a/src/views/home/initiateChange/index.vue +++ b/src/views/home/initiateChange/index.vue @@ -31,7 +31,7 @@ const form = ref({ name: "", dept: "", mainChanges: [""], related: "", purposes: [], effect: "", type: "", level: "", duration: "", urgent: false, date: null, restoreDate: null, }); -const tab = ref("train"); +const tab = ref("accept"); const TABS = [ { id: "pre", name: "变更预识别", icon: 'lucide:sparkles' }, { id: "form", name: "变更申请表", icon: 'akar-icons:file' }, @@ -480,6 +480,52 @@ M-201A 搅拌电机由 55kW 更换为 75kW 防爆电机(ExdⅡBT4 → ExdⅡCT 2. 风险:联锁设定错误导致拒动 / 误动 → 应对:投用前完成跳车试验并留存记录 3. 风险:防爆接合面或格兰头密封失效 → 应对:检查防爆接合面与格兰头,严禁带电开盖` ); +// ---------- PSSR 检查内容 ---------- +const pssrDone = ref>({}); +const pssrNa = ref>({}); +const pssrActive = computed(() => pssrGroups.value.filter((g:any) => !pssrNa.value[g.g])); +const pssrTotal = computed(() => pssrActive.value.reduce((a:any, g:any) => a + g.items.length, 0)); +const pssrDoneCount = computed(() => pssrActive.value.reduce((a:any, g:any) => a + g.items.filter((it:any) => pssrDone.value[it.c]).length, 0)); +const pssrAllDone = computed(() => pssrDoneCount.value === pssrTotal.value && (pssrTotal.value > 0 || (pssrGroups.value.length > 0 && pssrGroups.value.every((g) => !!pssrNa.value[g.g])))); +const pssrFileRef = ref(null); +const pssrSheet = ref(null); + const closeDocs = ref([ + { name: "PID 图纸(PID-R201-03,受控最新版)", cat: "图纸与规程类", scope: "是", archived: true }, + { name: "操作规程(含超温应急处置卡)", cat: "图纸与规程类", scope: "是", archived: false }, + { name: "应急预案修订", cat: "图纸与规程类", scope: "不涉及", archived: false }, + { name: "总图更新", cat: "图纸与规程类", scope: "否", archived: false }, + { name: "DCS 联锁台账(新报警 / 联锁值)", cat: "台账与制度类", scope: "是", archived: false }, + { name: "设备台账与备件清单", cat: "台账与制度类", scope: "是", archived: true }, + { name: "风险分析报告(HAZOP / 检查表法)", cat: "过程与结果文件类", scope: "是", archived: true }, + { name: "培训签到与考核记录", cat: "过程与结果文件类", scope: "是", archived: true }, + { name: "PSSR 检查记录(含现场照片)", cat: "过程与结果文件类", scope: "是", archived: false }, + { name: "验收报告与化验数据", cat: "过程与结果文件类", scope: "是", archived: false }, +]); +const onPssrFile = (e: Event) => { + const input = e.target as HTMLInputElement; + const f = input.files?.[0]; input.value = ""; + if (!f) return; + pssrSheet.value = f.name; + const at = today(); + const n = { ...pssrDone.value }; + pssrGroups.value.forEach((g:any) => { if (!pssrNa.value[g.g]) g.items.forEach((it:any) => { n[it.c] = { by: "纸质确认表上传", at }; }); }); + pssrDone.value = n; + const archGroup = pssrGroups.value[pssrGroups.value.length - 1]; + if (archGroup && !pssrNa.value[archGroup.g]) { + closeDocs.value = closeDocs.value.map((d:any) => (d.name.includes("PID") || d.name.includes("设备台账") || d.name.includes("培训签到") ? { ...d, archived: true } : d)); + } + window.$message?.success(`已上传 PSSR 纸质确认表「${f.name}」:不做内容识别,上传即视为全部检查项完成确认(「不涉及」组除外),原件归档至变更档案`); +}; + +// ---------- 验收评价 ---------- +const acceptRows = ref([ + { id: 1, item: "反应转化率", basis: "转化率不低于 98%", standard: "转化率 ≥ 98%(连续 3 批化验合格)", method: "化验室逐批取样分析,出具检验报告", owner: "车间 · 张工艺", result: "待验收" }, + { id: 2, item: "单批反应时间 / 产能", basis: "反应时间缩短 50%、产能提升一倍", standard: "保温时间 4h±0.5h,产能提升 ≥ 80%", method: "DCS 批次记录统计,对比变更前 30 天均值", owner: "车间 · 李主任", result: "待验收" }, + { id: 3, item: "未知杂质含量", basis: "杂质水平受控、产品质量合格", standard: "杂质 ≤ 0.15%,产品质量指标全部合格", method: "每批化验跟踪,连续 5 批数据趋势评估", owner: "质量 · 王海燕", result: "待验收" }, + { id: 4, item: "温控与联锁有效性", basis: "温度窗口上调后保护层有效", standard: "温度波动 ≤ ±2℃,高报/联锁动作正确率 100%", method: "DCS 趋势核查 + 联锁测试记录复核", owner: "仪表 · 王仪表", result: "待验收" }, + { id: 5, item: "设备运行状态", basis: "负荷变化后设备长周期稳定", standard: "搅拌电流、釜壁温度无异常趋势,无泄漏", method: "设备巡检 + 振动/温度记录评估", owner: "设备 · 周设备", result: "待验收" }, +]); +const acceptNote = ref(""); @@ -981,11 +1027,235 @@ M-201A 搅拌电机由 55kW 更换为 75kW 防爆电机(ExdⅡBT4 → ExdⅡCT + + + + + -
+
下载{{ TAB_NAME[tab] }} @@ -1204,7 +1474,7 @@ M-201A 搅拌电机由 55kW 更换为 75kW 防爆电机(ExdⅡBT4 → ExdⅡCT overflow-y: auto; } .scroll2 { - height: calc(100vh - 409px); + height: calc(100vh - 393px); overflow-y: auto; }