import { getDevices, getDevicesAll, getDevicesCount } from 'apis'; import dayjs from 'dayjs'; import { ElMessage } from 'element-plus'; const user = { namespaced: true, state: { devices: [], // 站点列表 设备列表简版 devicesAll: null, // 设备列表完整版 currentDeviceId: '', // 当前正在编辑的设备deviceId count: { total: 0, // 总设备数量 online: 0, // 在线 offline: 0, // 离线 warning: 0, // 警告 fault: 0, // 故障 }, }, getters: { // 当前正在编辑的设备的完整信息 current({ devicesAll, currentDeviceId }) { try { return devicesAll.data.find(device => device.deviceId === currentDeviceId); } catch (error) { return null; } }, }, mutations: { /** * 设置devices数据 * @param {*} state * @param {array} devices */ setDevices(state, devices) { if (devices && devices.length) { state.devices = devices; user.mutations.setCurrentDeviceId(state, devices[0].deviceId); } else { state.devices = []; } }, /** * 设置设备统计数据信息 * @param {object} state * @param {object} count // 服务端返回的对象 * @param {number} count.total // 总设备数量 * @param {number} count.online // 在线 * @param {number} count.offline // 离线 * @param {number} count.warning // 报警 * @param {number} count.fault // 故障 */ setDevicesCount(state, count) { state.count = count; }, /** * 设置devicesAll的数据 * @param {*} state * @param {object} devices {page, data} */ setDevicesAll(state, devices) { if (devices && devices.data) { for (let i = 0; i < devices.data.length; i++) { const device = devices.data[i]; if (device.installTime) { devices.data[i].installTime = dayjs(new Date(+device.installTime)).format('YYYY-MM-DD HH:mm:ss'); } if (device.runTime) { devices.data[i].runTime = dayjs(new Date(+device.runTime)).format('YYYY-MM-DD HH:mm:ss'); } } } state.devicesAll = devices; }, /** * 设置正则编辑的设备deviceId * @param {*} state * @param {string} deviceId */ setCurrentDeviceId(state, deviceId) { state.currentDeviceId = deviceId; }, /** * 更新某个设备的信息 * @param {*} param0 * @param {object} newData 设备更新后的信息 */ updateDevice({ devicesAll }, newData) { for (let i = 0; i < devicesAll.data.length; i++) { const item = devicesAll.data[i]; if (item && item.deviceId === newData.deviceId) { newData.installTime = dayjs(new Date(+item.installTime)).format('YYYY-MM-DD HH:mm:ss'); newData.runTime = dayjs(new Date(+item.runTime)).format('YYYY-MM-DD HH:mm:ss'); devicesAll.data[i] = newData; break; } } }, /** * 删除设备 * @param {*} param0 * @param {string} deviceId 设备id */ deleteDevice({ devicesAll }, deviceId) { if (!devicesAll || !devicesAll.data || !devicesAll.data.length) return; devicesAll.data = devicesAll.data.filter(item => item.deviceId !== deviceId); }, }, actions: { // 获取设备列表(站点列表) async getDevices({ commit }) { try { const data = await getDevices(); commit('setDevices', data || []); return data; } catch (error) { throw new Error(error); } }, // 查询设备数量信息 async getDevicesCount({ commit }) { try { const data = await getDevicesCount(); commit('setDevicesCount', data); } catch (error) { ElMessage.error(error.message || '获取设备统计信息失败'); throw new Error(error); } }, // 获取设备列表(站点列表) 完整信息 async getDevicesAll({ commit }, params) { try { const data = await getDevicesAll(params); commit('setDevicesAll', data || null); return data; } catch (error) { throw new Error(error); } }, }, }; export default user;