Commit 533cce1e authored by wanghao's avatar wanghao

1 开始标检后 时间设置及 状态 和 数据 记录;

parent 858fc493
...@@ -51,8 +51,36 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -51,8 +51,36 @@ public class PalletDeviceBinding extends BaseEntity
@Excel(name = "解绑时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "解绑时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date unbindingTime; private Date unbindingTime;
/**
* 状态
*/
private String status; private String status;
/**
* modbus 通信设置时间 年
*/
private String recordYear;
/**
* modbus 通信设置时间 月
*/
private String recordMonth;
/**
* modbus 通信设置时间 日
*/
private String recordDate;
/**
* modbus 通信设置时间 时
*/
private String recordHour;
/**
* modbus 通信设置时间 分
*/
private String recordMinute;
public String getStatus() { public String getStatus() {
return status; return status;
} }
...@@ -133,6 +161,46 @@ public class PalletDeviceBinding extends BaseEntity ...@@ -133,6 +161,46 @@ public class PalletDeviceBinding extends BaseEntity
return unbindingTime; return unbindingTime;
} }
public String getRecordYear() {
return recordYear;
}
public void setRecordYear(String recordYear) {
this.recordYear = recordYear;
}
public String getRecordMonth() {
return recordMonth;
}
public void setRecordMonth(String recordMonth) {
this.recordMonth = recordMonth;
}
public String getRecordDate() {
return recordDate;
}
public void setRecordDate(String recordDate) {
this.recordDate = recordDate;
}
public String getRecordHour() {
return recordHour;
}
public void setRecordHour(String recordHour) {
this.recordHour = recordHour;
}
public String getRecordMinute() {
return recordMinute;
}
public void setRecordMinute(String recordMinute) {
this.recordMinute = recordMinute;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
...@@ -20,6 +20,14 @@ public interface PalletDeviceBindingMapper ...@@ -20,6 +20,14 @@ public interface PalletDeviceBindingMapper
*/ */
public PalletDeviceBinding selectPalletDeviceBindingById(Long palletDeviceBindingId); public PalletDeviceBinding selectPalletDeviceBindingById(Long palletDeviceBindingId);
/**
* 根据 老化柜 层 ip 和 index 查询
* @param ip ip
* @param index index
* @return r
*/
public PalletDeviceBinding selectByTrayIdAndIndex(@Param("ip") String ip, @Param("index") Integer index);
/** /**
* 查询托盘绑定的设备列列表 * 查询托盘绑定的设备列列表
* *
......
...@@ -9,7 +9,7 @@ import com.serotonin.modbus4j.msg.ModbusResponse; ...@@ -9,7 +9,7 @@ import com.serotonin.modbus4j.msg.ModbusResponse;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest; import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse; import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse;
import com.zehong.system.domain.TEquipmentAlarmData; import com.zehong.system.domain.TEquipmentAlarmData;
import com.zehong.system.modbus.dto.DeviceStatusReaderDto; import com.zehong.system.modbus.handler.dto.DeviceStatusReaderDto;
import com.zehong.system.modbus.util.Modbus4jUtils; import com.zehong.system.modbus.util.Modbus4jUtils;
import com.zehong.system.service.ITEquipmentAlarmDataService; import com.zehong.system.service.ITEquipmentAlarmDataService;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.zehong.system.modbus.handler; package com.zehong.system.modbus.handler;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.zehong.system.domain.PalletDeviceBinding;
import com.zehong.system.domain.TEquipmentAlarmData;
import com.zehong.system.mapper.PalletDeviceBindingMapper;
import com.zehong.system.modbus.business.DeviceStatusReaderAndTimeSetter; import com.zehong.system.modbus.business.DeviceStatusReaderAndTimeSetter;
import com.zehong.system.modbus.dto.DeviceStatusReaderDto; import com.zehong.system.modbus.handler.dto.DeviceStatusReaderDto;
import com.zehong.system.modbus.util.Modbus4jUtils;
import com.zehong.system.service.ITEquipmentAlarmDataService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Predicate; import java.util.function.Predicate;
/** /**
* @author lenovo * @author lenovo
* @date 2025/6/27 * @date 2025/6/27
* @description TODO * @description 读取数据后根据状态判断设置时间
*/ */
@Component
public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> { public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> {
@Resource
private ITEquipmentAlarmDataService alarmDataService;
@Resource
private PalletDeviceBindingMapper palletDeviceBindingMapper;
// 创建固定大小的线程池(根据实际情况调整大小)
private static final ExecutorService executorService = Executors.newFixedThreadPool(
Runtime.getRuntime().availableProcessors() * 2
);
@Override @Override
public void accept(DeviceStatusReaderDto deviceStatusReaderDto) { public void accept(DeviceStatusReaderDto deviceStatusReaderDto) {
// 提交任务到线程池异步执行
executorService.submit(() -> handleData(deviceStatusReaderDto));
}
// 实际的数据处理方法(线程安全)
private void handleData(DeviceStatusReaderDto dto) {
int deviceId = dto.getDeviceId();
int[] data = dto.getRegisterData();
String ip = dto.getIp();
int port = dto.getPort();
// 根据 层ip 查找 层 code 根据层code 查 托盘id 根据托盘id 和 deviceId 查 绑定的点位数据
PalletDeviceBinding palletDeviceBinding = palletDeviceBindingMapper.selectByTrayIdAndIndex(ip, deviceId);
TEquipmentAlarmData alarmData;
int deviceId = deviceStatusReaderDto.getDeviceId(); // 1 获取 线程专有的Modbus连接
int[] data = deviceStatusReaderDto.getRegisterData(); try {
String ip = deviceStatusReaderDto.getIp(); ModbusMaster master = Modbus4jUtils.getMaster(ip, port);
int port = deviceStatusReaderDto.getPort();
System.out.println(">>> 回调处理: 接收到新数据"); System.out.println(">>> 回调处理[" + Thread.currentThread().getName() + "]: 接收到新数据");
System.out.println(" 数据: " + Arrays.toString(data)); System.out.println(" 数据: " + Arrays.toString(data));
if (data.length >= 2 && data[1] == DeviceStatusReaderAndTimeSetter.TARGET_VALUE) { if (data.length >= 2) {
System.out.println(" >>> 注意: 第二个寄存器值为1!"); // 给点位设置状态
palletDeviceBinding.setStatus(data[1] + "");
System.out.println(" >>> 注意: 第二个寄存器值为1 或者 3 或者 4 允许写时间!");
if(data[1] == 1 || data[1] == 3 || data[1] == 4) {
Calendar cal = Calendar.getInstance();
// 当前年
int y = cal.get(Calendar.YEAR);
// 当前月
int m = cal.get(Calendar.MONTH) + 1;
// 当前日
int d = cal.get(Calendar.DATE);
// 当前小时
int h = cal.get(Calendar.HOUR_OF_DAY);
// 当前分钟
int mm = cal.get(Calendar.MINUTE);
boolean yearResult = Modbus4jUtils.writeRegister(master,deviceId, 4, (short) y);
if(!yearResult) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("年-日期写入失败");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}else {
palletDeviceBinding.setRecordYear(y + "");
}
boolean mResult = Modbus4jUtils.writeRegister(master,deviceId, 5, (short) m);
if(!mResult) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("月-日期写入失败");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}else {
palletDeviceBinding.setRecordYear(m + "");
}
boolean dResult = Modbus4jUtils.writeRegister(master,deviceId, 6, (short) d);
if(!dResult) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("天-日期写入失败");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}else {
palletDeviceBinding.setRecordYear(h + "");
}
boolean hResult = Modbus4jUtils.writeRegister(master,deviceId, 7, (short) h);
if(!hResult) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("时-日期写入失败");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}else {
palletDeviceBinding.setRecordYear(d + "");
}
boolean mmResult = Modbus4jUtils.writeRegister(master,deviceId, 8, (short) mm);
if(!mmResult) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("分-日期写入失败");
alarmDataService.insertTEquipmentAlarmData(alarmData);
} else {
palletDeviceBinding.setRecordYear(mm + "");
}
// 更新
palletDeviceBindingMapper.updatePalletDeviceBinding(palletDeviceBinding);
} else {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("三次读取后 状态不是为 1 或 3 或 4");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}
} else {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04");
alarmData.setCreateTime(new Date());
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("三次读取后 状态不是为 1 或 3 或 4");
alarmDataService.insertTEquipmentAlarmData(alarmData);
}
} catch (ModbusInitException e) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04"); //01.老化柜 02.机械臂 03.老化层 04.点位
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port );
alarmData.setfAlarmData("Modbus初始化失败");
alarmData.setCreateTime(new Date());
alarmDataService.insertTEquipmentAlarmData(alarmData);
} catch (ModbusTransportException e) {
alarmData = new TEquipmentAlarmData();
alarmData.setfAlarmType("04"); //01.老化柜 02.机械臂 03.老化层 04.点位
alarmData.setfEquipmentCode("ip:" + ip + ",port:" + port + "deviceId:" + deviceId);
alarmData.setfAlarmData("日期写入失败");
alarmData.setCreateTime(new Date());
alarmDataService.insertTEquipmentAlarmData(alarmData);
} }
} }
// 创建通用的停止条件(可选) // 创建通用的停止条件(可选)
public static Predicate<int[]> createDefaultStopCondition() { public static Predicate<int[]> createDefaultStopCondition() {
return values -> values.length >= 2 && values[1] == DeviceStatusReaderAndTimeSetter.TARGET_VALUE; return values -> values.length >= 2 && values[1] == DeviceStatusReaderAndTimeSetter.TARGET_VALUE;
......
...@@ -62,10 +62,12 @@ public class Modbus4jUtils { ...@@ -62,10 +62,12 @@ public class Modbus4jUtils {
// modbusFactory.createRtuMaster(wapper); //RTU 协议 // modbusFactory.createRtuMaster(wapper); //RTU 协议
// modbusFactory.createUdpMaster(params);//UDP 协议 // modbusFactory.createUdpMaster(params);//UDP 协议
// modbusFactory.createAsciiMaster(wrapper);//ASCII 协议 // modbusFactory.createAsciiMaster(wrapper);//ASCII 协议
master = modbusFactory.createTcpMaster(params, false);// TCP 协议 if(master == null || !master.isConnected()) {
master.setTimeout(3000); // 设置超时时间 master = modbusFactory.createTcpMaster(params, false);// TCP 协议
master.setRetries(3); // 设置重试次数 master.setTimeout(5000); // 设置超时时间
master.init(); master.setRetries(3); // 设置重试次数
master.init();
}
return master; return master;
} }
...@@ -457,32 +459,102 @@ public class Modbus4jUtils { ...@@ -457,32 +459,102 @@ public class Modbus4jUtils {
} }
} }
/**
* 写入单个 Holding Register(功能码 6)
*
* @param slaveId 从站ID
* @param writeOffset 寄存器偏移地址(如 0 表示地址 40001)
* @param writeValue 要写入的值(short 类型)
* @return 是否写入成功
* @throws ModbusTransportException 如果传输失败
* @throws ModbusInitException 如果初始化失败
*/
public static boolean writeRegister(ModbusMaster master ,int slaveId, int writeOffset, short writeValue)
throws ModbusTransportException, ModbusInitException {
/*** WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue);
* 写[03 Holding Register(4x)] 写一个 function ID = 6
log.info("发送写入请求:从站={}, 地址={}, 值={}", slaveId, writeOffset, writeValue);
WriteRegisterResponse response = null;
synchronized (master) { // 多线程下保护主站资源
response = (WriteRegisterResponse) master.send(request);
}
if (response == null) {
log.error("未收到 Modbus 响应");
return false;
}
if (response.isException()) {
log.error("Modbus 异常响应: {}", response.getExceptionMessage());
return false;
}
log.info("写入成功,响应确认");
return true;
}
/**
* 写入单个 Holding Register(功能码 6)
* *
* @param slaveId s * @param slaveId 从站ID
* @param writeOffset w * @param writeOffset 寄存器偏移地址(如 0 表示地址 40001)
* @param writeValue w * @param writeValue 要写入的值(short 类型)
* @return * @return 是否写入成功
* @throws ModbusTransportException m * @throws ModbusTransportException 如果传输失败
* @throws ModbusInitException m * @throws ModbusInitException 如果初始化失败
*/ */
public static boolean writeRegister(int slaveId, int writeOffset, short writeValue) public static boolean writeRegister(int slaveId, int writeOffset, short writeValue)
throws ModbusTransportException, ModbusInitException { throws ModbusTransportException, ModbusInitException {
// 获取master ModbusMaster master = getMaster();
ModbusMaster tcpMaster = getMaster();
// 创建请求对象
WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue);
WriteRegisterResponse response = (WriteRegisterResponse) tcpMaster.send(request);
log.info("发送写入请求:从站={}, 地址={}, 值={}", slaveId, writeOffset, writeValue);
WriteRegisterResponse response = null;
synchronized (master) { // 多线程下保护主站资源
response = (WriteRegisterResponse) master.send(request);
}
if (response == null) {
log.error("未收到 Modbus 响应");
return false;
}
if (response.isException()) { if (response.isException()) {
log.error(response.getExceptionMessage()); log.error("Modbus 异常响应: {}", response.getExceptionMessage());
return false; return false;
} else {
return true;
} }
log.info("写入成功,响应确认");
return true;
} }
/***
* 写[03 Holding Register(4x)] 写一个 function ID = 6
*
* @param slaveId s
* @param writeOffset w
* @param writeValue w
* @return
* @throws ModbusTransportException m
* @throws ModbusInitException m
*/
// public static boolean writeRegister(int slaveId, int writeOffset, short writeValue)
// throws ModbusTransportException, ModbusInitException {
// // 获取master
// ModbusMaster tcpMaster = getMaster();
// // 创建请求对象
// WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue);
// WriteRegisterResponse response = (WriteRegisterResponse) tcpMaster.send(request);
// if (response.isException()) {
// log.error(response.getExceptionMessage());
// return false;
// } else {
// return true;
// }
//
// }
/** /**
* *
...@@ -514,6 +586,8 @@ public class Modbus4jUtils { ...@@ -514,6 +586,8 @@ public class Modbus4jUtils {
} }
} }
/** /**
* 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long)
* *
...@@ -588,6 +662,9 @@ public class Modbus4jUtils { ...@@ -588,6 +662,9 @@ public class Modbus4jUtils {
return unsignedValues; return unsignedValues;
} }
/** /**
* 测试 * 测试
* *
...@@ -610,18 +687,23 @@ public class Modbus4jUtils { ...@@ -610,18 +687,23 @@ public class Modbus4jUtils {
// 当前分钟 // 当前分钟
int mm = cal.get(Calendar.MINUTE); int mm = cal.get(Calendar.MINUTE);
boolean yearResult = writeRegister(1, 0, (short) y); boolean yearResult = writeRegister(1, 4, (short) y);
boolean mResult = writeRegister(1, 0, (short) m); System.out.println(yearResult ? "写入成功" : "写入失败");
boolean dResult = writeRegister(1, 0, (short) d); boolean mResult = writeRegister(1, 5, (short) m);
boolean hResult = writeRegister(1, 0, (short) h); System.out.println(mResult ? "写入成功" : "写入失败");
boolean mmResult = writeRegister(1, 0, (short) mm); boolean dResult = writeRegister(1, 6, (short) d);
System.out.println(dResult ? "写入成功" : "写入失败");
ModbusMaster master1 = getMaster(); boolean hResult = writeRegister(1, 7, (short) h);
System.out.println(hResult ? "写入成功" : "写入失败");
boolean mmResult = writeRegister(1, 8, (short) mm);
System.out.println(mmResult ? "写入成功" : "写入失败");
int[] ints = readDeviceRegisters(1); int[] ints = readDeviceRegisters(1);
for (int i = 0; i < ints.length; i++) { for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]); System.out.println(ints[i]);
} }
//// 01测试 //// 01测试
// Boolean v011 = readCoilStatus(1, 0); // Boolean v011 = readCoilStatus(1, 0);
// Boolean v012 = readCoilStatus(1, 1); // Boolean v012 = readCoilStatus(1, 1);
......
...@@ -15,10 +15,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -15,10 +15,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="unbindingTime" column="f_unbinding_time" /> <result property="unbindingTime" column="f_unbinding_time" />
<result property="createTime" column="f_create_time" /> <result property="createTime" column="f_create_time" />
<result property="status" column="f_status" /> <result property="status" column="f_status" />
<result property="recordYear" column="f_record_year" />
<result property="recordMonth" column="f_record_month" />
<result property="recordDate" column="f_record_date" />
<result property="recordHour" column="f_record_hour" />
<result property="recordMinute" column="f_record_minute" />
</resultMap> </resultMap>
<sql id="selectPalletDeviceBindingVo"> <sql id="selectPalletDeviceBindingVo">
select f_pallet_device_binding_id, f_tray_id, f_device_code, f_row, f_col, f_index,f_binding_time, f_unbinding_time, f_create_time,f_status from t_pallet_device_binding select f_pallet_device_binding_id, f_tray_id, f_device_code, f_row, f_col, f_index,f_binding_time,
f_unbinding_time, f_create_time,f_status,f_record_year,f_record_month,f_record_date,f_record_hour,f_record_minute from t_pallet_device_binding
</sql> </sql>
<select id="selectPalletDeviceBindingList" parameterType="PalletDeviceBinding" resultMap="PalletDeviceBindingResult"> <select id="selectPalletDeviceBindingList" parameterType="PalletDeviceBinding" resultMap="PalletDeviceBindingResult">
...@@ -40,6 +46,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -40,6 +46,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectPalletDeviceBindingVo"/> <include refid="selectPalletDeviceBindingVo"/>
where f_pallet_device_binding_id = #{palletDeviceBindingId} where f_pallet_device_binding_id = #{palletDeviceBindingId}
</select> </select>
<select id="selectByTrayIdAndIndex" resultMap="PalletDeviceBindingResult">
select f_pallet_device_binding_id,
f_tray_id,
f_device_code,
f_row,
f_col,
f_index,
f_binding_time,
f_unbinding_time,
f_create_time,
f_status,
f_record_year,
f_record_month,
f_record_date,
f_record_hour,
f_record_minute from t_pallet_device_binding palDeviceBinding where palDeviceBinding.f_tray_id = (
SELECT
trayInfo.f_tray_id
FROM
t_tray_info trayInfo
LEFT JOIN t_storey_info storeyInfo ON trayInfo.f_storey_code = storeyInfo.f_storey_code
where storeyInfo.f_ip = #{ip}
) and palDeviceBinding.f_index = #{index}
</select>
<insert id="batchInsertPalletDeviceBinding" parameterType="list"> <insert id="batchInsertPalletDeviceBinding" parameterType="list">
insert into t_pallet_device_binding (f_tray_id, f_device_code,f_row,f_col,f_index,f_binding_time,f_unbinding_time, insert into t_pallet_device_binding (f_tray_id, f_device_code,f_row,f_col,f_index,f_binding_time,f_unbinding_time,
...@@ -90,6 +121,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -90,6 +121,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if> <if test="unbindingTime != null">f_unbinding_time = #{unbindingTime},</if>
<if test="createTime != null">f_create_time = #{createTime},</if> <if test="createTime != null">f_create_time = #{createTime},</if>
<if test="status != null">f_status = #{status},</if> <if test="status != null">f_status = #{status},</if>
<if test="recordYear != null">f_record_year = #{recordYear},</if>
<if test="recordMonth != null">f_record_month = #{recordMonth},</if>
<if test="recordDate != null">f_record_date = #{recordDate},</if>
<if test="recordHour != null">f_record_hour = #{recordHour},</if>
<if test="recordMinute != null">f_record_minute = #{recordMinute},</if>
</trim> </trim>
where f_pallet_device_binding_id = #{palletDeviceBindingId} where f_pallet_device_binding_id = #{palletDeviceBindingId}
</update> </update>
......
...@@ -95,7 +95,7 @@ export default { ...@@ -95,7 +95,7 @@ export default {
{ id: 34, deviceStatus: '0' }, { id: 34, deviceStatus: '0' },
{ id: 35, deviceStatus: '0' }, { id: 35, deviceStatus: '0' },
{ id: 36, deviceStatus: '0' }, { id: 36, deviceStatus: '0' },
//...共36个 // //...共36个
], ],
// 状态对应的颜色类名 // 状态对应的颜色类名
statusMap: { statusMap: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment