吉安感知网项目-前端
shuishen
2026-02-03 89380e6260a75d1d3b94de687ebcc2f50d50659d
applications/drone-command/src/views/aICrudTemplate/FormDiaLog.vue
@@ -1,6 +1,6 @@
<template>
   <el-dialog v-model="visible" :title="dialogTitle" @closed="handleClosed" destroy-on-close>
      <div v-if="dialogReadonly">
   <el-dialog v-model="visible" :title="titleEnum[dialogMode]" :close-on-click-modal="false">
      <div v-if="readonly">
         <el-row>
            <el-col :span="12">
               <div>设备信息: {{ formData.deviceName }}</div>
@@ -25,7 +25,7 @@
            </el-col>
         </el-row>
      </div>
      <el-form v-else ref="formRef" :model="formData" :rules="rules" :disabled="dialogReadonly" label-width="100px">
      <el-form v-else ref="formRef" :model="formData" :rules="rules" :disabled="readonly" label-width="100px">
         <el-row>
            <el-col :span="12">
               <el-form-item label="设备名称" prop="deviceName">
@@ -89,14 +89,8 @@
         </el-row>
      </el-form>
      <template #footer>
         <el-button @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
         <el-button
            v-if="!dialogReadonly"
            type="primary"
            :loading="submitting"
            :disabled="submitting"
            @click="handleSubmit"
         >
         <el-button @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button>
         <el-button v-if="!readonly" type="primary" :loading="submitting" :disabled="submitting" @click="handleSubmit">
            确定
         </el-button>
      </template>
@@ -108,7 +102,7 @@
import { ElMessage } from 'element-plus'
import { fwDeviceDetailApi, fwDeviceSubmitApi } from '@/views/aICrudTemplate/aICrudTemplateApi'
import { getUserListApi } from '@/api/system/user'
import { fieldRules } from '@ztzf/utils'
import { contactPhoneRules, fieldRules } from '@ztzf/utils'
const initForm = () => ({
   belongDept: '', // 所属部门
@@ -129,30 +123,21 @@
const emit = defineEmits(['success'])
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
const visible = ref(false) // 弹框显隐
const visible = defineModel() // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false) // 提交中
const userList = ref([]) // 用户列表
const dialogReadonly = computed(() => dialogMode.value === 'view')
const dialogTitle = computed(() => {
   if (dialogMode.value === 'edit') {
      return '编辑'
   } else if (dialogMode.value === 'view') {
      return '查看'
   } else {
      return '新增'
   }
})
const readonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const rules = {
   deviceName: fieldRules(true, 50),
   deviceType: fieldRules(true, 0),
   deviceAtt: fieldRules(true, 0),
   deviceType: fieldRules(true),
   deviceAtt: fieldRules(true),
   deviceModel: fieldRules(true, 50),
   belongDept: fieldRules(true, 50),
   contactPhone: fieldRules(true, 50),
   charger: fieldRules(true, 0),
   belongDept: fieldRules(true),
   contactPhone: contactPhoneRules(true, 50),
   charger: fieldRules(true),
}
// 部门重置
@@ -194,21 +179,11 @@
   formData.value = res?.data?.data ?? {}
}
// 关闭后重置
function handleClosed() {
   formData.value = initForm()
}
// 打开弹框
async function open({ mode, row } = {}) {
   dialogMode.value = mode || 'add'
   formData.value = row
   visible.value = true
   if (dialogMode.value === 'add') {
      formData.value = initForm()
   } else {
      await loadDetail()
   }
   formData.value = dialogMode.value === 'add' ? initForm() : row
   dialogMode.value !== 'add' && (await loadDetail())
}
watch(() => formData.value.belongDept, getUserList)