diff --git a/src/views/my/initiateChange/modules/pssr.vue b/src/views/my/initiateChange/modules/pssr.vue index 5fcb8e9..77bbed7 100644 --- a/src/views/my/initiateChange/modules/pssr.vue +++ b/src/views/my/initiateChange/modules/pssr.vue @@ -4,70 +4,44 @@ import { ref } from 'vue'; import { Icon } from '@iconify/vue' import { useThemeStore } from '@/store/modules/theme'; import Footer from './footer.vue'; +import { uploadFileApi } from "@/service/api/file"; const themeStore = useThemeStore(); const props = defineProps(['type','isAiOpen','title','currentId']) const emit = defineEmits(['save','submit','confirmTab']); -const form = ref<{ content: string }>({ - content: '' -}); - +const uploadLoading = ref(false); +const uploadFileRef = ref(null); +const isUploaded = ref(false); const editing = ref(null); -const pssrGroups = ref<{ g: string; items: any[] }[]>([ - { g: "一、风险分析行动项落实", items: [ - { c: "联锁跳车电流设定值校核并留存记录", p: "投用前" }, - { c: "电缆与开关容量校核升级完成", p: "投用前" }, - { c: "操作人员培训完成并考核合格", p: "投用前" }, - ] }, - { g: "二、现场设备安装检查确认", items: [ - { c: "电机安装就位,联轴器对中合格", p: "投用前" }, - { c: "地脚螺栓紧固,减振垫安装到位", p: "投用前" }, - { c: "电缆接线、防爆格兰头密封良好", p: "投用前" }, - ] }, - { g: "三、保护措施确认", items: [ - { c: "联锁跳车设定值与新电机额定电流匹配", p: "投用前" }, - { c: "电机外壳接地、防护罩完好", p: "投用前" }, - { c: "紧急停机按钮功能试验正常", p: "投用前" }, - ] }, - { g: "四、资料归档确认", items: [ - { c: "P&ID(图号 PID-R201-03)已更新并受控", p: "关闭前" }, - { c: "设备台账、备件清单已更新", p: "关闭前" }, - { c: "培训签到表、考核记录已归档", p: "关闭前" }, - ] }, + +const list = ref<{ g: string; type:number; na_flag:number; items: any[] }[]>([ + { g: "一、风险分析行动项落实", type:1, na_flag:0, items: [] }, + { g: "二、现场设备安装检查确认", type:2, na_flag:0, items: [] }, + { g: "三、保护措施确认", type:3, na_flag:0, items: [] }, + { g: "四、资料归档确认", type:4, na_flag:0, items: [] }, ]); -const pssrDone = ref>({}); const pssrNa = ref>({}); -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 today = () => new Date().toISOString().slice(0, 10); + +// 添加检查项 +const addItem = (g:any, gi: number) => { + list.value[gi].items.push({id:0, group_type:g.type, content: '新检查项(点击直接编辑内容)', phase: 1, na_flag: 0 }); +} + // 上传纸质确认表 -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)); +const uploadFile = async (e: any) => { + const file = e.target.files[0]; + if (!file) return; + const formData = new FormData(); + formData.append('file', file); + formData.append('step', '2'); + uploadLoading.value = true; + const {error} = await uploadFileApi(props.currentId, formData); + if(!error){ + isUploaded.value = true; + window.$message?.success(`已上传 PSSR 纸质确认表:不做内容识别,上传即视为全部检查项完成确认(「不涉及」组除外),原件归档至变更档案`); } - window.$message?.success(`已上传 PSSR 纸质确认表「${f.name}」:不做内容识别,上传即视为全部检查项完成确认(「不涉及」组除外),原件归档至变更档案`); + uploadLoading.value = false; }; // 保存草稿 @@ -83,96 +57,97 @@ const confirmTab = (tab:string, val:boolean) => { emit('confirmTab', tab, val); } -defineExpose({form}) +defineExpose({list})