/** * base_device 页面操作列扩展 * 在 onInit 中动态注入自定义操作列,按 DeviceGroup 渲染对应按钮组件 * 对话框由各按钮组件内部自行管理 */ import { h } from 'vue' import VideoDeviceActions from '@/views/warehouse/device_manager/base_device/components/VideoDeviceActions.vue' import IoTDeviceActions from '@/views/warehouse/device_manager/base_device/components/IoTDeviceActions.vue' const actionMap = { '视频设备': VideoDeviceActions, 'IoT设备': IoTDeviceActions, } export default { onInit() { const gcol = this.columns.find(c => c.field === 'DeviceGroup') if (gcol) gcol.hidden = false this.columns.splice(0, 0, { field: '_actions', title: '操作', type: 'string', width: 300, fixed: 'right', align: 'left', render: (h, { row }) => { const comp = actionMap[row.DeviceGroup] if (!comp) return null return h(comp, { row }) } }) } }