| | |
| | | <el-form-item label="防区面积" prop="zoneArea">{{ formatZoneArea(formData.zoneArea) }}</el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="关联场景" prop="defenseSceneIds"> |
| | | <el-table |
| | | ref="sceneTableRef" |
| | | :data="sceneList" |
| | | row-key="id" |
| | | @selection-change="handleSceneSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="sceneName" label="场景名称" /> |
| | | <el-table-column prop="sceneType" label="场景类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabel(row.sceneType, dictObj.sceneType) }} |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-form-item> |
| | | <div> |
| | | <div> |
| | | 关联场景 |
| | | <el-input v-model="searchName" placeholder="请输入" clearable></el-input> |
| | | </div> |
| | | <el-form-item label="关联场景" prop="defenseSceneIds" label-width="0"> |
| | | <el-table |
| | | ref="sceneTableRef" |
| | | :data="sceneList.filter(item => item.sceneName.includes(searchName))" |
| | | row-key="id" |
| | | @selection-change="handleSceneSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55" :reserve-selection="true" /> |
| | | <el-table-column prop="sceneName" label="场景名称" /> |
| | | <el-table-column prop="sceneType" label="场景类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabel(row.sceneType, dictObj.sceneType) }} |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-form-item> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | |
| | | const readonly = computed(() => dialogMode.value === 'view') |
| | | const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) |
| | | const sceneTableRef = ref(null) |
| | | const searchName = ref('') |
| | | const sceneList = ref([]) // 关联场景列表 |
| | | const selectedSceneRows = ref([]) // 选中场景 |
| | | const dictObj = inject('dictObj') |
| | |
| | | sceneList.value = res?.data?.data ?? [] |
| | | if (readonly.value) { |
| | | const ids = getSceneIdList() |
| | | sceneList.value = sceneList.value.filter(item => ids.includes(String(item.id))) |
| | | sceneList.value = sceneList.value.filter(item => ids.includes(item.id)) |
| | | } |
| | | } |
| | | |
| | | // 获取场景ID列表 |
| | | function getSceneIdList() { |
| | | if (!formData.value.defenseSceneIds) return [] |
| | | return formData.value.defenseSceneIds.split(',').filter(Boolean) |
| | | return formData.value.defenseSceneIds.split(',') |
| | | } |
| | | |
| | | // 关联场景变更 |
| | |
| | | const ids = getSceneIdList() |
| | | const rows = [] |
| | | sceneList.value.forEach(row => { |
| | | if (ids.includes(String(row.id))) { |
| | | if (ids.includes(row.id)) { |
| | | sceneTableRef.value.toggleRowSelection(row, true) |
| | | rows.push(row) |
| | | } |