import dayjs from 'dayjs/esm/index' import { showToast } from 'vant' import { computed, ref } from 'vue' export function useDeviceForm(initialDevices: any[] = []) { // 设备数据 const devices = ref(initialDevices) // 加载状态 const isLoading = ref(false) // 错误信息 const error = ref(null) // 计算属性 const deviceCount = computed(() => devices.value.length) const hasDevices = computed(() => deviceCount.value > 0) // 添加设备(支持附加自定义字段,例如设备类型) const addDevice = (userInfo: any, extra: Record = {}): boolean => { try { const newDevice = { f_operate_date: dayjs().format('YYYY-MM-DD HH:mm:ss'), f_operator: userInfo.name || '', f_operatorid: userInfo.id || '', f_orgid: userInfo.orgid || '', f_orgname: userInfo.orgname || '', f_depid: userInfo.f_department_id || '', f_depname: userInfo.f_department_name || '', // 允许透传外部附加字段,例如:deviceType、deviceTypeName 或后端需要的字段名 ...extra, } devices.value.push(newDevice) return true } catch (err) { const errorMessage = err instanceof Error ? err.message : '添加设备失败' console.error('添加设备失败:', err) error.value = errorMessage return false } } // 删除设备 const removeDevice = (index: number) => { if (index < 0 || index >= devices.value.length) { showToast('设备索引无效') return false } try { devices.value.splice(index, 1) showToast('已删除') return true } catch (err) { const errorMessage = err instanceof Error ? err.message : '删除设备失败' console.error('删除设备失败:', err) showToast(errorMessage) error.value = errorMessage return false } } // 更新设备 const updateDevice = (index: number, deviceData: Partial) => { if (index < 0 || index >= devices.value.length) { showToast('设备索引无效') return false } try { devices.value[index] = { ...devices.value[index], ...deviceData } return true } catch (err) { const errorMessage = err instanceof Error ? err.message : '更新设备失败' console.error('更新设备失败:', err) showToast(errorMessage) error.value = errorMessage return false } } // 重置设备列表 const resetDevices = () => { devices.value = [] error.value = null } // 设置设备列表 const setDevices = (newDevices: any[]) => { devices.value = [...newDevices] } // 获取设备数据 const getDevices = () => { return [...devices.value] } // 清除错误 const clearError = () => { error.value = null } return { // 状态 // devices: readonly(devices), // isLoading: readonly(isLoading), // error: readonly(error), devices, isLoading, error, // 计算属性 deviceCount, hasDevices, // 方法 addDevice, removeDevice, updateDevice, resetDevices, setDevices, getDevices, clearError, } }