<!-- 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 $route = useRoute() 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 disabledBtn = ref(false) const selectList = ref<any[]>([]) const initDialog = (row: any, select: []) => { data.value = row dialogFormVisible.value = true disabledBtn.value = false resetForm() dataForm.value.alarmId = row.id type.value = $route.path.includes('alarm/current') ? 'data' : 'device' if(select.length) { selectList.value = select } else { selectList.value = [] } } defineExpose({ initDialog, }) // 保存数据 const saveData = () => { dataFormRef.value.validate((valid: any) => { if (valid) { disabledBtn.value = true; (type.value === 'data' ? pendingAlarm : pendingDeviceAlarm)(dataForm.value).then((res) => { ElMessage.success('操作成功') dialogFormVisible.value = false data.value.processStatus = 3 data.value.processStatusName = '挂起' emits('refresh') disabledBtn.value = false }).catch(() => { // ElMessage.success('操作成功') disabledBtn.value = false }) } }) } 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 v-if="selectList.length" label="挂起原因" prop="suspendReason"> <el-select v-model="dataForm.suspendReason" placeholder="挂起原因" style="width: 100%;"> <el-option v-for="item in selectList" :key="item.value" :label="item.name" :value="item.name"></el-option> </el-select> </el-form-item> <el-form-item v-else 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="挂起时间(h)" 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 :loading="disabledBtn" :disabled="disabledBtn" 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>