diff --git a/src/views/my/initiateChange/index.vue b/src/views/my/initiateChange/index.vue index 9c958c2..2d37140 100644 --- a/src/views/my/initiateChange/index.vue +++ b/src/views/my/initiateChange/index.vue @@ -22,6 +22,7 @@ import Jsa from "./modules/jsa.vue"; import Scl from "./modules/scl.vue"; import RiskCheck from "./modules/riskCheck.vue"; import ChangeCompareTable from "./modules/ChangeCompareTable.vue"; +import { localStg } from '@/utils/storage'; const themeStore = useThemeStore(); @@ -44,7 +45,6 @@ const form = ref({ type: "", level: "", duration: "", urgent: false, date: null, restoreDate: null, }); -const confirmed = ref>({}); const blockedTabs = ref([]); // ---------- 变更预识别 ---------- @@ -209,30 +209,15 @@ const submitApply = () => { // emit("openChange", order); }; -const PURPOSE_OPTIONS = [ - "满足市场需求", "提高生产效能", "改善操作条件", "增加安全性能", - "达到环保要求", "法律合规整改", "减少能耗物损", "稳定系统运行", - "完善管理制度", "达到质量改进", "设备可靠性升级", -]; const DEPT_APPROVER_OPTS = ["李主任(一车间主任)", "赵主任(二车间主任)", "陈主任(三车间主任)"].map((x) => ({ label: x, value: x })); const SIGNER_POOL = ["王仪表(技术部)", "王仪表(技术部 · 仪表)", "周设备(设备科 · 电气)", "王海燕(安全环保部)", "王海燕(质量部)"]; const signerOpts = (cur: string) => [...new Set([cur, ...SIGNER_POOL])].map((x) => ({ label: x, value: x })); -const levelScores = ref([2, 2, 3, 1, 2, 3]); -const totalScore = computed(() => levelScores.value.reduce((a, b) => a + b, 0)); -const levelResult = computed(() => (totalScore.value >= 20 ? "重要变更" : "一般变更")); -const RISK_TOOLS_FORM = [ - { key: "HAZOP", label: "HAZOP" }, - { key: "JSA", label: "JSA" }, - { key: "SCL", label: "设备SCL" }, - { key: "RISK_CHECK", label: "风险检查表" }, -]; const recommendTools = () => { const lv = form.value?.level === "重要" ? "重要" : "一般"; tools.value = lv === "重要" ? ["HAZOP", "JSA", "检查表法", "通用检查表"] : ["JSA", "检查表法", "通用检查表"]; window.$message?.success(`已按「${lv}变更」规则匹配风险分析工具,可继续手动重选`); }; -const files = ref(["小试实验报告.pdf", "杂质初步分析.docx"]); const previewFile = ref(null); const DISCIPLINE_SIGNER: Record = { 技术: "王仪表(技术部)", 仪表: "王仪表(技术部 · 仪表)", 电气: "周设备(设备科 · 电气)", 环保: "王海燕(安全环保部)", 质量: "王海燕(质量部)", @@ -245,10 +230,6 @@ const toggleDiscipline = (d:any) => { signers.value = {...result}; }; -const TAB_NAME: Record = { - pre: "变更预识别", form: "变更申请表", risk: "风险分析记录表", - train: "变更培训内容", pssr: "PSSR检查内容", accept: "验收评价", close: "变更关闭确认表", -}; const confirmTab = (t: string) => { const v = !confirmed.value[t]; confirmed.value = { ...confirmed.value, [t]: v }; @@ -556,16 +537,6 @@ const uploadConfirm = () => { const pluginDrawer = ref(false); const currentPlugin = ref(""); -// 插件选择 -// 注:风险核查(RISK_CHECK)的「AI 预填检查表」交互在 modules/riskCheck.vue 插件内部, -// 本页 toggleTool 仅负责打开插件抽屉,无独立 AI 预填入口,故不在此接 aiRiskCheck。 -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]; @@ -583,10 +554,18 @@ const onBack = () => { // **********************通用字段*********************** +// 当前用户 +const userInfo = ref(localStg.get('userInfo')); // 是否开启ai const aiEnabled = ref(true); // 保存loading const saveLoading = ref(false); +// 提交loading +const submitLoading = ref(false); +// 下载loading +const downloadLoading = ref(false); +// 重新生成loading +const regenerateLoading = ref(false); // 变更识别loading const preLoading = ref(false); // 风险预分析loading @@ -594,11 +573,13 @@ const analyzing = ref(false); // 生成变更申请单loading const generateLoading = ref(false); // btn disabled -const btnDisabled = computed(() => saveLoading.value || preLoading.value || analyzing.value || generateLoading.value); +const btnDisabled = computed(() => saveLoading.value || preLoading.value || analyzing.value || generateLoading.value || submitLoading.value || downloadLoading.value || regenerateLoading.value); // 变更名称 const title = ref(''); // 当前id const currentId = ref(0); +// 是否确认 +const confirmed = ref>({}); // **********************tab切换*********************** const tab = ref("pre"); @@ -742,22 +723,67 @@ const genForm = async () => { // --------------------- 变更申请表 --------------------- // 表单 const changForm = ref<{ - name: string, - mainChanges: string[], - related: string, + change_type: number | null, + change_level: number | null, + duration_type: number | null, + restore_deadline: number | null, + org_id: number | null, + urgent: number, purposes: string[], - effect: string, - type: string, - duration: string + effect: string, + main_changes: string[], + related_changes: string[], + materials: string, + update_docs: string[], + disciplines: string[], + manage_dept: string, + plan_use_date: number | null, + risk_tools: string[], }>({ - name: '', - mainChanges: [], - related: '', + change_type: null, + change_level: null, + duration_type: null, + restore_deadline: null, + org_id: null, + urgent: 0, purposes: [], effect: '', - type: '', - duration: '' + main_changes: [''], + related_changes: [''], + materials: '', + update_docs: [], + disciplines: [], + manage_dept: '', + plan_use_date: null, + risk_tools: [], }); +// 上传的资料 +const files = ref(["小试实验报告.pdf", "杂质初步分析.docx"]); +// 变更目的选项 +const PURPOSE_OPTIONS = [ + "满足市场需求", "提高生产效能", "改善操作条件", "增加安全性能", + "达到环保要求", "法律合规整改", "减少能耗物损", "稳定系统运行", + "完善管理制度", "达到质量改进", "设备可靠性升级", +]; +const levelScores = ref([2, 2, 3, 1, 2, 3]); +const totalScore = computed(() => levelScores.value.reduce((a: number, b: number) => a + b, 0)); +const levelResult = computed(() => (totalScore.value >= 20 ? "重要变更" : "一般变更")); +// 风险分析选项 +const RISK_TOOLS_FORM = [ + { key: "HAZOP", label: "HAZOP" }, + { key: "JSA", label: "JSA" }, + { key: "SCL", label: "设备SCL" }, + { key: "RISK_CHECK", label: "风险检查表" }, +]; +// 风险分析插件选择 +const toggleTool = (t: {key:string,label:string}) => { + const { risk_tools } = changForm.value; + changForm.value.risk_tools = risk_tools.includes(t.key) ? risk_tools.filter((key:string) => key !== t.key) : [...risk_tools, t.key]; +}; +const TAB_NAME: Record = { + pre: "变更预识别", form: "变更申请表", risk: "风险分析记录表", + train: "变更培训内容", pssr: "PSSR检查内容", accept: "验收评价", close: "变更关闭确认表", +}; @@ -884,18 +910,18 @@ const changForm = ref<{
申请部门 *
- +
申请人
- +
变更目的
- +
@@ -905,20 +931,20 @@ const changForm = ref<{
预期效果
- +
主要变更内容 *
-
+
{{ i + 1 }}. - - + +
- + 添加变更点
@@ -927,24 +953,25 @@ const changForm = ref<{
连带变更内容
-
+
{{ i + 1 }}. - - + +
- + 添加连带变更点
+
变更类型 *
- +
{{t}}
@@ -955,10 +982,11 @@ const changForm = ref<{
+
变更等级 *
- +
{{t}}
@@ -974,21 +1002,23 @@ const changForm = ref<{
变更时限 *
- +
- {{t}} + + {{ t === 0 ? '永久' : '临时' }} +
- 紧急 + 紧急
风险分析
- {{ t.label }} @@ -1002,12 +1032,14 @@ const changForm = ref<{
计划投用时间
- -