From cf77572f4155fb4f90c75cbf8ec5b2ef90846beb Mon Sep 17 00:00:00 2001 From: sjl <1716605279@qq.com> Date: Tue, 6 May 2025 10:08:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E6=A8=A1=E7=89=88=E5=8F=AA=E5=9C=A8=E6=A5=BC=E4=B8=8B?= =?UTF-8?q?=E5=8E=82=E5=AE=B6=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/home/tabs/model.vue | 1 + .../devType/components/devTypePopup.vue | 27 ++++++++++++------- frontend/src/views/machine/devType/index.vue | 4 ++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/frontend/src/views/home/tabs/model.vue b/frontend/src/views/home/tabs/model.vue index c8bd443..d29c3a3 100644 --- a/frontend/src/views/home/tabs/model.vue +++ b/frontend/src/views/home/tabs/model.vue @@ -84,6 +84,7 @@ const modeList = [ const handelOpen = async (item: any) => { modeStore.setCurrentMode(item.code); // 将模式code存入 store const {data:scene} = await getCurrentScene(); // 获取当前场景 + // AppSceneStore.setCurrentMode(scene+'');//0:省级平台,1:设备出厂,2:研发自测 AppSceneStore.setCurrentMode(scene+'');//0:省级平台,1:设备出厂,2:研发自测 await authStore.setShowMenu(); diff --git a/frontend/src/views/machine/devType/components/devTypePopup.vue b/frontend/src/views/machine/devType/components/devTypePopup.vue index d8051e8..ba17887 100644 --- a/frontend/src/views/machine/devType/components/devTypePopup.vue +++ b/frontend/src/views/machine/devType/components/devTypePopup.vue @@ -46,7 +46,7 @@ /> - + ([]) function useMetaInfo() { const dialogVisible = ref(false) @@ -138,8 +139,19 @@ const resetFormContent = () => { //定义规则 const formRuleRef = ref() + + // 使用计算属性根据 scene 动态生成规则 + const rules = computed(() => { + const dynamicRules = { ...baseRules }; + + if (scene.value === '1'){//只有楼下出厂需要展示 + dynamicRules.reportName = [{ required: true, message: '报告模版名称必选!', trigger: 'change' }]; + } + return dynamicRules; + }); + //定义校验规则 - const rules: Ref>> = ref({ + const baseRules: Record> = { name: [{ required: true, message: '设备类型名称必填!', trigger: 'blur' }], power: [ { required: true, message: '工作电源必选!', trigger: 'change' } @@ -153,13 +165,10 @@ const resetFormContent = () => { devCurr: [ { required: true, message: '额定电流必选!', trigger: 'change' } ], - reportName: [ - { required: true, message: '报告模版名称必选!', trigger: 'change' } - ], icd: [ { required: true, message: '设备关联ICD必选!', trigger: 'change' } - ], - }) + ] +}; // 关闭弹窗 @@ -193,12 +202,12 @@ const close = () => { } // 打开弹窗,可能是新增,也可能是编辑 - const open = async (sign: string, data: DevType.ResPqDevType,icd: ICD.ResICD[]) => { + const open = async (sign: string, data: DevType.ResPqDevType,icd: ICD.ResICD[],currentScene: string) => { // 重置表单 dialogFormRef.value?.resetFields() titleType.value = sign dialogVisible.value = true - + scene.value = currentScene icdOptions.value = icd if (data.id) { diff --git a/frontend/src/views/machine/devType/index.vue b/frontend/src/views/machine/devType/index.vue index b436b16..06694e9 100644 --- a/frontend/src/views/machine/devType/index.vue +++ b/frontend/src/views/machine/devType/index.vue @@ -51,6 +51,7 @@ import type { ICD } from '@/api/device/interface/icd' // }) const modeStore = useModeStore() const dictStore = useDictStore() + const appSceneStore = useAppSceneStore() // ProTable 实例 const proTable = ref() const devTypePopup = ref() @@ -96,6 +97,7 @@ import type { ICD } from '@/api/device/interface/icd' prop: 'reportName', label: '报告模版名称', minWidth: 150, + isShow: appSceneStore.currentScene == '1', enum: dictStore.getDictData('Report_Template'), fieldNames: { label: 'name', value: 'id' }, }, @@ -134,7 +136,7 @@ import type { ICD } from '@/api/device/interface/icd' // 打开 drawer(新增、编辑) const openDialog = (titleType: string, row: Partial = {}) => { - devTypePopup.value?.open(titleType, row,icdOptions.value) + devTypePopup.value?.open(titleType, row,icdOptions.value,appSceneStore.currentScene) }