<!-- Description: 报警管理-挂起 Author: 李亚光 Date: 2024-09-10 --> <script lang="ts" setup name="PendingDialog"> import type { FormRules } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus' import { pendingAlarm } from '@/api/home/alarm/current' import { pendingDeviceAlarm } from '@/api/home/operation/alarm' const emits = defineEmits(['refresh']) const dataFormRef = ref() const dialogFormVisible = ref(false) // 对话框是否显示 const dataForm = ref({ suspendTime: '1', suspendReason: '', alarmId: '', }) // 表单 const rules: FormRules = { suspendReason: [{ required: true, message: '挂起原因不能为空', trigger: ['blur', 'change'] }], } // 前端校验规则 // 重置表单 const resetForm = () => { dataForm.value = { suspendTime: '1', suspendReason: '', alarmId: '', } } // 初始化对话框 const data = ref() const type = ref('') const initDialog = (row: any) => { data.value = row dialogFormVisible.value = true resetForm() dataForm.value.alarmId = row.id type.value = row.type } defineExpose({ initDialog, }) // 保存数据 const saveData = () => { dataFormRef.value.validate((valid: any) => { if (valid) { (type.value === 'data' ? pendingAlarm : pendingDeviceAlarm)(dataForm.value).then((res) => { ElMessage.success('操作成功') dialogFormVisible.value = false data.value.processStatus = 3 data.value.processStatusName = '挂起' emits('refresh') }).catch(() => { // ElMessage.success('操作成功') }) } }) } const cancel = () => { dialogFormVisible.value = false } </script> <template> <el-dialog v-model="dialogFormVisible" title="挂起" append-to-body width="30%"> <el-form ref="dataFormRef" :rules="rules" :model="dataForm" label-position="right" label-width="120px"> <el-row :gutter="24"> <el-col :span="24"> <el-form-item label="挂起原因" prop="suspendReason"> <el-input v-model.trim="dataForm.suspendReason" type="text" placeholder="挂起原因" style="width: 100%;" clearable /> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="挂起时间" prop="suspendTime"> <el-input-number v-model="dataForm.suspendTime" :min="1" :max="99" :step="1" step-strictly /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="saveData"> 确认 </el-button> <el-button @click="cancel"> 取消 </el-button> </div> </template> </el-dialog> </template> <style lang="scss" scoped> .el-dialog { width: 700px; } .el-select { width: 100%; } </style>