| | |
| | | <div>设备名称: {{ formData.deviceName }}</div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div>设备编码: {{ formData.deviceCode }}</div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div>设备状态: {{ getDeviceStatusLabel(formData.deviceStatus) }}</div> |
| | | <div>设备编码: {{ formData.deviceSn }}</div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div>场景: {{ formData.defenseSceneName }}</div> |
| | |
| | | <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="deviceId"> |
| | | <el-form-item label="设备" prop="deviceId"> |
| | | <el-select v-model="formData.deviceId" placeholder="请选择" clearable @change="handleDeviceChange"> |
| | | <el-option v-for="item in deviceList" :key="item.id" :label="item.deviceName" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备编码" prop="deviceCode"> |
| | | <el-input v-model="formData.deviceCode" disabled placeholder="选择设备后自动带出" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备状态" prop="deviceStatus"> |
| | | <el-input v-model="formData.deviceStatusLabel" disabled placeholder="选择设备后自动带出" /> |
| | | <el-form-item label="设备编码" prop="deviceSn"> |
| | | <el-input v-model="formData.deviceSn" disabled placeholder="选择设备后自动带出" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | placeholder="请先选择场景" |
| | | clearable |
| | | :disabled="!formData.defenseSceneId" |
| | | @change="handleAreaChange" |
| | | > |
| | | <el-option v-for="item in areaList" :key="item.id" :label="item.areaName" :value="item.id" /> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="调度位置" prop="longitude"> |
| | | <el-button @click="selectLocation" style="width: 100%"> |
| | | <!-- <el-button @click="selectLocation" style="width: 100%">--> |
| | | <el-button style="width: 100%"> |
| | | {{ |
| | | formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` : '点击选择位置' |
| | | formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` : '选择区域后自动带出' |
| | | }} |
| | | </el-button> |
| | | </el-form-item> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | |
| | | <template #footer> |
| | | <el-button @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button> |
| | | <el-button v-if="!readonly" type="primary" :loading="submitting" :disabled="submitting" @click="handleSubmit"> |
| | |
| | | // 初始化表单 |
| | | const initForm = () => ({ |
| | | deviceId: '', // 设备ID |
| | | deviceCode: '', // 设备编码 |
| | | deviceSn: '', // 设备编码 |
| | | deviceName: '', // 设备名称 |
| | | deviceStatus: '', // 设备状态 |
| | | deviceStatusLabel: '', // 设备状态标签 |
| | |
| | | deviceList: { type: Array, default: () => [] }, |
| | | }) |
| | | |
| | | // 注入字典数据 |
| | | const dictObj = inject('dictObj') |
| | | |
| | | const emit = defineEmits(['success']) |
| | | const formRef = ref(null) // 表单实例 |
| | | const formData = ref(initForm()) // 表单数据 |
| | |
| | | const areaList = ref([]) // 区域列表 |
| | | |
| | | const rules = { |
| | | deviceId: [{ required: true, message: '请选择设备', trigger: 'change' }], |
| | | defenseSceneId: [{ required: true, message: '请选择场景', trigger: 'change' }], |
| | | areaDivideId: [{ required: true, message: '请选择区域', trigger: 'change' }], |
| | | deviceId: fieldRules(true), |
| | | areaDivideId: fieldRules(true), |
| | | defenseSceneId: fieldRules(true), |
| | | dispatchUser: fieldRules(true, 50), |
| | | } |
| | | |
| | | // 获取设备状态标签 |
| | | function getDeviceStatusLabel(status) { |
| | | const statusMap = { 0: '离线', 1: '在线' } |
| | | return statusMap[status] || status |
| | | dispatchDateRange: fieldRules(true), |
| | | } |
| | | |
| | | // 设备选择变化处理 |
| | |
| | | const device = props.deviceList.find(item => item.id === deviceId) |
| | | if (device) { |
| | | formData.value.deviceName = device.deviceName |
| | | formData.value.deviceCode = device.deviceCode |
| | | formData.value.deviceSn = device.deviceSn |
| | | formData.value.deviceStatus = device.deviceStatus |
| | | formData.value.deviceStatusLabel = getDeviceStatusLabel(device.deviceStatus) |
| | | } else { |
| | | formData.value.deviceName = '' |
| | | formData.value.deviceCode = '' |
| | | formData.value.deviceSn = '' |
| | | formData.value.deviceStatus = '' |
| | | formData.value.deviceStatusLabel = '' |
| | | } |
| | | } |
| | | |
| | |
| | | } else { |
| | | areaList.value = [] |
| | | } |
| | | } |
| | | |
| | | function handleAreaChange(areaId) { |
| | | const find = areaList.value.find(item => item.id === areaId) |
| | | formData.value.longitude = find?.longitude |
| | | formData.value.latitude = find?.latitude |
| | | } |
| | | |
| | | // 加载区域列表 |
| | |
| | | const data = res?.data?.data ?? {} |
| | | formData.value = { |
| | | ...data, |
| | | deviceStatusLabel: getDeviceStatusLabel(data.deviceStatus), |
| | | dispatchDateRange: |
| | | data.dispatchStartTime && data.dispatchEndTime ? [data.dispatchStartTime, data.dispatchEndTime] : [], |
| | | } |