<script lang="ts" setup name="EditArea"> const dialogFormVisible = ref(false) // 对话框是否显示 const dataForm = ref({ }) // 表单 // 重置表单 const className = ref('') const info = ref<any>({}) const resetForm = () => { info.value = { } } const initDialog = (row: any) => { dialogFormVisible.value = true const grade = `grade-${row.alarmLevel === '一级' ? '1' : row.alarmLevel === '二级' ? '2' : row.alarmLevel === '三级' ? '3' : 'other'}` className.value = grade resetForm() info.value = row // const row = { // alarmNoteMethod: '1', // 消息提醒 1:弹窗,2:消息提醒 // isSound: '1', // 报警音效,1:开,0:关 // isSend: '1', // 报警推送,1:开,0:关 // isText: '1', // 报警短息,1:开,0:关 // alarmType: '浓度超限', // tagNumber: 'NX5702', // alarmTime: '2024-09-09', // value: '20', // typeName: '燃气智能终端', // alarmLevel: '一级', // } } // 关闭 const close = () => { dialogFormVisible.value = false } // 关闭声音 const { proxy } = getCurrentInstance() as any const closeSound = () => { proxy.pauseAudio() localStorage.setItem('eventAudio', 'pause') } // 查看 const $router = useRouter() const detail = () => { dialogFormVisible.value = false $router.push({ name: 'AlarmCurrent', query: { row: JSON.stringify({ ...info.value, id: info.value.alarmIds }), }, }) } defineExpose({ initDialog, }) </script> <template> <el-dialog v-model="dialogFormVisible" title="" append-to-body class="warning-dialog" :show-close="false" width="400px" :class="`${className.includes('2') ? 'grade-2' : className.includes('3') ? 'grade-3' : className.includes('1') ? 'grade-1' : 'grade-other'}`" :close-on-click-modal="false" > <div class="container-dialog"> <div class="content"> <div class="name"> 报警类型: </div> <div class="value"> {{ info.alarmType }} </div> </div> <div class="content"> <div class="name"> 报警等级: </div> <div class="value"> {{ info.alarmLevel }} </div> </div> <div class="content"> <div class="name"> 设备类型: </div> <div class="value"> {{ info.typeName }} </div> </div> <div class="content"> <div class="name"> 安装位号: </div> <div class="value"> {{ info.tagNumber }} </div> </div> <div class="content"> <div class="name"> 报警值: </div> <div class="value"> {{ info.value }} {{ info.typeName.includes('燃气') ? '%vol' : '' }} </div> </div> <div class="content"> <div class="name"> 报警时间: </div> <div class="value"> {{ info.alarmTime }} </div> </div> </div> <template #footer> <div class="dialog-footer"> <div v-if="proxy.hasPerm('/alarm/current')" class="btn" @click="detail"> 查看 </div> <div v-if="info.isSound === '1'" class="btn" @click="closeSound"> 关闭声音 </div> <div class="btn" @click="close"> 关闭 </div> <!-- <el-button :loading="btnLoading" type="primary" @click="saveData"> 保存 </el-button> <el-button @click="cancel"> 取消 </el-button> --> </div> </template> </el-dialog> </template> <!-- <style lang="scss" scoped></style> --> <style> .warning-dialog { background-color: #0000; background-image: url("@/assets/global_images/warningDialog_one.png"); background-repeat: no-repeat; background-size: 100% 100%; box-shadow: none; } .grade-2 { background-image: url("@/assets/global_images/warningDialog_two.png"); } .grade-3 { background-image: url("@/assets/global_images/warningDialog_three.png"); } .grade-other { background-image: url("@/assets/global_images/warningDialog_other.png"); } </style> <style lang="scss" scoped> .container-dialog { width: 80%; margin: 0 auto; margin-top: 10px; // margin: 0 auto; // padding-left: 30px; color: #f1eded; font-size: 18px; font-weight: 700; .content { display: flex; margin: 10px 0; .value { padding-left: 10px; } } } .dialog-footer { width: 100%; display: flex; justify-content: center; margin-bottom: 10px; .btn { width: 24%; border: 1px solid #f1eded; text-align: center; height: 30px; line-height: 30px; color: #faf5f5; &:hover { cursor: pointer; color: rgb(115 184 240); } } } </style>