Browse Source

Merge branch 'master' of http://git.xt.wenhq.top:8083/wenhongquan/iotc

# Conflicts:
#	ruoyi-system/src/main/java/com/ruoyi/data/controller/TblEquipmentSbookController.java
#	ruoyi-system/src/main/java/com/ruoyi/data/domain/bo/TblEquipmentSbookBo.java
#	ruoyi-system/src/main/java/com/ruoyi/data/service/ITblEquipmentSbookService.java
#	ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblEquipmentSbookServiceImpl.java
#	ruoyi-system/src/main/resources/mapper/data/TblEquipmentSbookMapper.xml
liwei19941102 2 năm trước cách đây
mục cha
commit
7612538c3f

+ 17 - 0
ruoyi-admin/src/main/java/com/ruoyi/ServerInitCommandLineRunner.java

@@ -0,0 +1,17 @@
+package com.ruoyi;
+
+import com.ruoyi.data.domain.bo.TblMqttBo;
+import com.ruoyi.data.service.MqttService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ServerInitCommandLineRunner implements CommandLineRunner {
+    @Autowired
+    private  MqttService mqttService;
+    @Override
+    public void run(String... args) throws Exception {
+        mqttService.createMqttMain(new TblMqttBo());
+    }
+}

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -269,8 +269,8 @@ management:
       external-file: ./logs/sys-console.log
 
 mqtt:
-  url: tcp://xt.wenhq.top:8581
-  clientid: mqttUser
+  url: tcp://200.200.19.121:31005
+  clientid: iotc_server
   user:
   password:
   topic: /sensor/#

+ 4 - 4
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblDataController.java

@@ -34,7 +34,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 @RequestMapping("/data/device")
 public class TblDataController extends BaseController {
 
-    private final ITblEquipmentService iTblEquipmentService;
+    private final ITblEquipmentSbookService iTblEquipmentSbookService;
 
     private final ITblDatapointService iTblDatapointService;
 
@@ -62,15 +62,15 @@ public class TblDataController extends BaseController {
         TblGatewayBo tblGatewayBo = new TblGatewayBo();
         List<SysDictData> sysDictTypeList = iSysDictTypeService.selectDictDataByType("protocal_type");
         List<TblGatewayVo> gatewayVoList = iTblGatewayService.queryList(tblGatewayBo);
-        TblEquipmentBo tblEquipmentBo = new TblEquipmentBo();
+        TblEquipmentSbookBo tblEquipmentBo = new TblEquipmentSbookBo();
         List<GateWaySensor> gateWaySensorList = new ArrayList<GateWaySensor>();
-        List<TblEquipmentVo> equipmentVoList = iTblEquipmentService.queryList(tblEquipmentBo);
+        List<TblEquipmentSbookVo> equipmentVoList = iTblEquipmentSbookService.queryList(tblEquipmentBo);
         List<SensorPoint> sensorPointList = getSensorPointList();
         for(TblGatewayVo tblGatewayVo:gatewayVoList){
                GateWaySensor gateWaySensor = new GateWaySensor();
                gateWaySensor.setTblGateway(tblGatewayVo);
                List<SensorPoint> sensorPoints = new ArrayList<SensorPoint>();
-               for(TblEquipmentVo tblEquipmentvo:equipmentVoList){
+               for(TblEquipmentSbookVo tblEquipmentvo:equipmentVoList){
                      if(tblEquipmentvo.getGatewayId().longValue() == tblGatewayVo.getId().longValue()){
                              for(SensorPoint sensorPoint:sensorPointList){
                                      if(sensorPoint.getTblSensorVo().getDeviceId().longValue() == tblEquipmentvo.getId().longValue()){

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblSensorSbookVo.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.data.domain.TblEquipment;
 import lombok.Data;
 import java.util.Date;
 
@@ -122,4 +123,6 @@ public class TblSensorSbookVo implements Serializable {
      */
     @ExcelProperty(value = "")
     private String expr2;
+
+    private TblEquipment equipment;
 }

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/MqttServiceImpl.java

@@ -75,6 +75,7 @@ public class MqttServiceImpl implements MqttService {
         List<MqttObj> mqttObjList = tblEquipmentMqttMapper.selectMqttListByDeviceId(mqttObj);
         TblRecord tblRecord = new TblRecord();
         tblRecord.setEquipmentId(deviceId);
+        tblRecord.setSensorId(sensorId);
         tblRecord.setJson(mqttStr);
         tblRecord.setCreateBy("admin");
         tblRecord.setUpdateBy("admin");

+ 0 - 792
ruoyi-ui-vue3/src/views/data/equipmentSbook/index.vue

@@ -1,792 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="上层位置" prop="equipmentTreeId">
-        <el-input
-          v-model="queryParams.equipmentTreeId"
-          placeholder="请输入上层位置"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备编码" prop="sn">
-        <el-input
-          v-model="queryParams.sn"
-          placeholder="请输入设备编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="备用编码" prop="spareSn">
-        <el-input
-          v-model="queryParams.spareSn"
-          placeholder="请输入备用编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备名称" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入设备名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备信息" prop="equipmentInfoId">
-        <el-input
-          v-model="queryParams.equipmentInfoId"
-          placeholder="请输入设备信息"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="所属公司" prop="deptId">
-        <el-input
-          v-model="queryParams.deptId"
-          placeholder="请输入所属公司"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="所属组织机构" prop="deptName">
-        <el-input
-          v-model="queryParams.deptName"
-          placeholder="请输入所属组织机构"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="所属类型" prop="equipmentTypeId">
-        <el-input
-          v-model="queryParams.equipmentTypeId"
-          placeholder="请输入所属类型"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="负责人" prop="personInCharge">
-        <el-input
-          v-model="queryParams.personInCharge"
-          placeholder="请输入负责人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="安装日期" prop="installationDate">
-        <el-date-picker clearable
-          v-model="queryParams.installationDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择安装日期">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="安装地点地址" prop="address">
-        <el-input
-          v-model="queryParams.address"
-          placeholder="请输入安装地点地址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="关联设备id" prop="deviceId">
-        <el-input
-          v-model="queryParams.deviceId"
-          placeholder="请输入关联设备id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="标签" prop="tagids">
-        <el-input
-          v-model="queryParams.tagids"
-          placeholder="请输入标签"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="保修期结束日期" prop="endOfWarrantyPeriod">
-        <el-date-picker clearable
-          v-model="queryParams.endOfWarrantyPeriod"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择保修期结束日期">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="制造日期" prop="manufacturingDate">
-        <el-date-picker clearable
-          v-model="queryParams.manufacturingDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择制造日期">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="资产编码" prop="assetNo">
-        <el-input
-          v-model="queryParams.assetNo"
-          placeholder="请输入资产编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="资产编号" prop="serialNumber">
-        <el-input
-          v-model="queryParams.serialNumber"
-          placeholder="请输入资产编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="使用证编号" prop="useCertificateNo">
-        <el-input
-          v-model="queryParams.useCertificateNo"
-          placeholder="请输入使用证编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="安全级别" prop="securityLevel">
-        <el-input
-          v-model="queryParams.securityLevel"
-          placeholder="请输入安全级别"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="使用年限" prop="usefulLife">
-        <el-input
-          v-model="queryParams.usefulLife"
-          placeholder="请输入使用年限"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="变动日期" prop="changeDate">
-        <el-date-picker clearable
-          v-model="queryParams.changeDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择变动日期">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="供货厂家" prop="supplier">
-        <el-input
-          v-model="queryParams.supplier"
-          placeholder="请输入供货厂家"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建人" prop="creator">
-        <el-input
-          v-model="queryParams.creator"
-          placeholder="请输入创建人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="ctime">
-        <el-date-picker clearable
-          v-model="queryParams.ctime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="更新人" prop="modifier">
-        <el-input
-          v-model="queryParams.modifier"
-          placeholder="请输入更新人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="更新时间" prop="utime">
-        <el-date-picker clearable
-          v-model="queryParams.utime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="" prop="expr1">
-        <el-input
-          v-model="queryParams.expr1"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="" prop="expr2">
-        <el-input
-          v-model="queryParams.expr2"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['data:equipmentSbook:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['data:equipmentSbook:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['data:equipmentSbook:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['data:equipmentSbook:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="equipmentSbookList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="上层位置" align="center" prop="equipmentTreeId" />
-      <el-table-column label="设备编码" align="center" prop="sn" />
-      <el-table-column label="备用编码" align="center" prop="spareSn" />
-      <el-table-column label="设备名称" align="center" prop="name" />
-      <el-table-column label="设备信息" align="center" prop="equipmentInfoId" />
-      <el-table-column label="所属公司" align="center" prop="deptId" />
-      <el-table-column label="所属组织机构" align="center" prop="deptName" />
-      <el-table-column label="所属类型" align="center" prop="equipmentTypeId" />
-      <el-table-column label="负责人" align="center" prop="personInCharge" />
-      <el-table-column label="安装日期" align="center" prop="installationDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.installationDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="安装地点地址" align="center" prop="address" />
-      <el-table-column label="关联设备id" align="center" prop="deviceId" />
-      <el-table-column label="标签" align="center" prop="tagids" />
-      <el-table-column label="状态" align="center" prop="status" />
-      <el-table-column label="保修期结束日期" align="center" prop="endOfWarrantyPeriod" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.endOfWarrantyPeriod, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="制造日期" align="center" prop="manufacturingDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.manufacturingDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="资产编码" align="center" prop="assetNo" />
-      <el-table-column label="资产编号" align="center" prop="serialNumber" />
-      <el-table-column label="使用证编号" align="center" prop="useCertificateNo" />
-      <el-table-column label="安全级别" align="center" prop="securityLevel" />
-      <el-table-column label="使用年限" align="center" prop="usefulLife" />
-      <el-table-column label="变动日期" align="center" prop="changeDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.changeDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="供货厂家" align="center" prop="supplier" />
-      <el-table-column label="创建人" align="center" prop="creator" />
-      <el-table-column label="创建时间" align="center" prop="ctime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.ctime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="更新人" align="center" prop="modifier" />
-      <el-table-column label="更新时间" align="center" prop="utime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.utime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="" align="center" prop="expr1" />
-      <el-table-column label="" align="center" prop="expr2" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['data:equipmentSbook:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['data:equipmentSbook:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改设备台账对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="上层位置" prop="equipmentTreeId">
-          <el-input v-model="form.equipmentTreeId" placeholder="请输入上层位置" />
-        </el-form-item>
-        <el-form-item label="设备编码" prop="sn">
-          <el-input v-model="form.sn" placeholder="请输入设备编码" />
-        </el-form-item>
-        <el-form-item label="备用编码" prop="spareSn">
-          <el-input v-model="form.spareSn" placeholder="请输入备用编码" />
-        </el-form-item>
-        <el-form-item label="设备名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入设备名称" />
-        </el-form-item>
-        <el-form-item label="设备信息" prop="equipmentInfoId">
-          <el-input v-model="form.equipmentInfoId" placeholder="请输入设备信息" />
-        </el-form-item>
-        <el-form-item label="所属公司" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入所属公司" />
-        </el-form-item>
-        <el-form-item label="所属组织机构" prop="deptName">
-          <el-input v-model="form.deptName" placeholder="请输入所属组织机构" />
-        </el-form-item>
-        <el-form-item label="所属类型" prop="equipmentTypeId">
-          <el-input v-model="form.equipmentTypeId" placeholder="请输入所属类型" />
-        </el-form-item>
-        <el-form-item label="负责人" prop="personInCharge">
-          <el-input v-model="form.personInCharge" placeholder="请输入负责人" />
-        </el-form-item>
-        <el-form-item label="安装日期" prop="installationDate">
-          <el-date-picker clearable
-            v-model="form.installationDate"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择安装日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="安装地点地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入安装地点地址" />
-        </el-form-item>
-        <el-form-item label="关联设备id" prop="deviceId">
-          <el-input v-model="form.deviceId" placeholder="请输入关联设备id" />
-        </el-form-item>
-        <el-form-item label="标签" prop="tagids">
-          <el-input v-model="form.tagids" placeholder="请输入标签" />
-        </el-form-item>
-        <el-form-item label="保修期结束日期" prop="endOfWarrantyPeriod">
-          <el-date-picker clearable
-            v-model="form.endOfWarrantyPeriod"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择保修期结束日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="制造日期" prop="manufacturingDate">
-          <el-date-picker clearable
-            v-model="form.manufacturingDate"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择制造日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="资产编码" prop="assetNo">
-          <el-input v-model="form.assetNo" placeholder="请输入资产编码" />
-        </el-form-item>
-        <el-form-item label="资产编号" prop="serialNumber">
-          <el-input v-model="form.serialNumber" placeholder="请输入资产编号" />
-        </el-form-item>
-        <el-form-item label="使用证编号" prop="useCertificateNo">
-          <el-input v-model="form.useCertificateNo" placeholder="请输入使用证编号" />
-        </el-form-item>
-        <el-form-item label="安全级别" prop="securityLevel">
-          <el-input v-model="form.securityLevel" placeholder="请输入安全级别" />
-        </el-form-item>
-        <el-form-item label="使用年限" prop="usefulLife">
-          <el-input v-model="form.usefulLife" placeholder="请输入使用年限" />
-        </el-form-item>
-        <el-form-item label="变动日期" prop="changeDate">
-          <el-date-picker clearable
-            v-model="form.changeDate"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择变动日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="供货厂家" prop="supplier">
-          <el-input v-model="form.supplier" placeholder="请输入供货厂家" />
-        </el-form-item>
-        <el-form-item label="创建人" prop="creator">
-          <el-input v-model="form.creator" placeholder="请输入创建人" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="ctime">
-          <el-date-picker clearable
-            v-model="form.ctime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择创建时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="更新人" prop="modifier">
-          <el-input v-model="form.modifier" placeholder="请输入更新人" />
-        </el-form-item>
-        <el-form-item label="更新时间" prop="utime">
-          <el-date-picker clearable
-            v-model="form.utime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-        <el-form-item label="" prop="expr1">
-          <el-input v-model="form.expr1" placeholder="请输入" />
-        </el-form-item>
-        <el-form-item label="" prop="expr2">
-          <el-input v-model="form.expr2" placeholder="请输入" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listEquipmentSbook, getEquipmentSbook, delEquipmentSbook, addEquipmentSbook, updateEquipmentSbook } from "@/api/data/equipmentSbook";
-
-export default {
-  name: "EquipmentSbook",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 设备台账表格数据
-      equipmentSbookList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        equipmentTreeId: undefined,
-        sn: undefined,
-        spareSn: undefined,
-        name: undefined,
-        equipmentInfoId: undefined,
-        deptId: undefined,
-        deptName: undefined,
-        equipmentTypeId: undefined,
-        personInCharge: undefined,
-        installationDate: undefined,
-        address: undefined,
-        deviceId: undefined,
-        tagids: undefined,
-        status: undefined,
-        endOfWarrantyPeriod: undefined,
-        manufacturingDate: undefined,
-        assetNo: undefined,
-        serialNumber: undefined,
-        useCertificateNo: undefined,
-        securityLevel: undefined,
-        usefulLife: undefined,
-        changeDate: undefined,
-        supplier: undefined,
-        creator: undefined,
-        ctime: undefined,
-        modifier: undefined,
-        utime: undefined,
-        expr1: undefined,
-        expr2: undefined
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        equipmentTreeId: [
-          { required: true, message: "上层位置不能为空", trigger: "blur" }
-        ],
-        sn: [
-          { required: true, message: "设备编码不能为空", trigger: "blur" }
-        ],
-        spareSn: [
-          { required: true, message: "备用编码不能为空", trigger: "blur" }
-        ],
-        name: [
-          { required: true, message: "设备名称不能为空", trigger: "blur" }
-        ],
-        equipmentInfoId: [
-          { required: true, message: "设备信息不能为空", trigger: "blur" }
-        ],
-        deptId: [
-          { required: true, message: "所属公司不能为空", trigger: "blur" }
-        ],
-        deptName: [
-          { required: true, message: "所属组织机构不能为空", trigger: "blur" }
-        ],
-        equipmentTypeId: [
-          { required: true, message: "所属类型不能为空", trigger: "blur" }
-        ],
-        personInCharge: [
-          { required: true, message: "负责人不能为空", trigger: "blur" }
-        ],
-        installationDate: [
-          { required: true, message: "安装日期不能为空", trigger: "blur" }
-        ],
-        address: [
-          { required: true, message: "安装地点地址不能为空", trigger: "blur" }
-        ],
-        deviceId: [
-          { required: true, message: "关联设备id不能为空", trigger: "blur" }
-        ],
-        tagids: [
-          { required: true, message: "标签不能为空", trigger: "blur" }
-        ],
-        status: [
-          { required: true, message: "状态不能为空", trigger: "change" }
-        ],
-        endOfWarrantyPeriod: [
-          { required: true, message: "保修期结束日期不能为空", trigger: "blur" }
-        ],
-        manufacturingDate: [
-          { required: true, message: "制造日期不能为空", trigger: "blur" }
-        ],
-        assetNo: [
-          { required: true, message: "资产编码不能为空", trigger: "blur" }
-        ],
-        serialNumber: [
-          { required: true, message: "资产编号不能为空", trigger: "blur" }
-        ],
-        useCertificateNo: [
-          { required: true, message: "使用证编号不能为空", trigger: "blur" }
-        ],
-        securityLevel: [
-          { required: true, message: "安全级别不能为空", trigger: "blur" }
-        ],
-        usefulLife: [
-          { required: true, message: "使用年限不能为空", trigger: "blur" }
-        ],
-        changeDate: [
-          { required: true, message: "变动日期不能为空", trigger: "blur" }
-        ],
-        supplier: [
-          { required: true, message: "供货厂家不能为空", trigger: "blur" }
-        ],
-        creator: [
-          { required: true, message: "创建人不能为空", trigger: "blur" }
-        ],
-        ctime: [
-          { required: true, message: "创建时间不能为空", trigger: "blur" }
-        ],
-        modifier: [
-          { required: true, message: "更新人不能为空", trigger: "blur" }
-        ],
-        utime: [
-          { required: true, message: "更新时间不能为空", trigger: "blur" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-        expr1: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        expr2: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ]
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询设备台账列表 */
-    getList() {
-      this.loading = true;
-      listEquipmentSbook(this.queryParams).then(response => {
-        this.equipmentSbookList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        equipmentTreeId: undefined,
-        sn: undefined,
-        spareSn: undefined,
-        name: undefined,
-        equipmentInfoId: undefined,
-        deptId: undefined,
-        deptName: undefined,
-        equipmentTypeId: undefined,
-        personInCharge: undefined,
-        installationDate: undefined,
-        address: undefined,
-        deviceId: undefined,
-        tagids: undefined,
-        status: undefined,
-        endOfWarrantyPeriod: undefined,
-        manufacturingDate: undefined,
-        assetNo: undefined,
-        serialNumber: undefined,
-        useCertificateNo: undefined,
-        securityLevel: undefined,
-        usefulLife: undefined,
-        changeDate: undefined,
-        supplier: undefined,
-        creator: undefined,
-        ctime: undefined,
-        modifier: undefined,
-        utime: undefined,
-        remark: undefined,
-        expr1: undefined,
-        expr2: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加设备台账";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getEquipmentSbook(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改设备台账";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateEquipmentSbook(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addEquipmentSbook(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除设备台账编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delEquipmentSbook(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('data/equipmentSbook/export', {
-        ...this.queryParams
-      }, `equipmentSbook_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 0 - 564
ruoyi-ui-vue3/src/views/data/sensorSbook/index.vue

@@ -1,564 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="编号" prop="sn">
-        <el-input
-          v-model="queryParams.sn"
-          placeholder="请输入编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="名称" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="上层位置" prop="equipmentTreeId">
-        <el-input
-          v-model="queryParams.equipmentTreeId"
-          placeholder="请输入上层位置"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备ID" prop="equipmentId">
-        <el-input
-          v-model="queryParams.equipmentId"
-          placeholder="请输入设备ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备名称" prop="equipmentName">
-        <el-input
-          v-model="queryParams.equipmentName"
-          placeholder="请输入设备名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="协议配置" prop="configUuid">
-        <el-input
-          v-model="queryParams.configUuid"
-          placeholder="请输入协议配置"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="点表" prop="datapointId">
-        <el-input
-          v-model="queryParams.datapointId"
-          placeholder="请输入点表"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="单位" prop="unit">
-        <el-input
-          v-model="queryParams.unit"
-          placeholder="请输入单位"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="标签" prop="tagids">
-        <el-input
-          v-model="queryParams.tagids"
-          placeholder="请输入标签"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="描述" prop="description">
-        <el-input
-          v-model="queryParams.description"
-          placeholder="请输入描述"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建人" prop="creator">
-        <el-input
-          v-model="queryParams.creator"
-          placeholder="请输入创建人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="ctime">
-        <el-date-picker clearable
-          v-model="queryParams.ctime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="更新人" prop="modifier">
-        <el-input
-          v-model="queryParams.modifier"
-          placeholder="请输入更新人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="更新时间" prop="utime">
-        <el-date-picker clearable
-          v-model="queryParams.utime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择更新时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="" prop="expr1">
-        <el-input
-          v-model="queryParams.expr1"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="" prop="expr2">
-        <el-input
-          v-model="queryParams.expr2"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['data:sensorSbook:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['data:sensorSbook:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['data:sensorSbook:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['data:sensorSbook:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="sensorSbookList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="编号" align="center" prop="sn" />
-      <el-table-column label="名称" align="center" prop="name" />
-      <el-table-column label="上层位置" align="center" prop="equipmentTreeId" />
-      <el-table-column label="设备ID" align="center" prop="equipmentId" />
-      <el-table-column label="设备名称" align="center" prop="equipmentName" />
-      <el-table-column label="协议" align="center" prop="protocolType" />
-      <el-table-column label="协议配置" align="center" prop="configUuid" />
-      <el-table-column label="点表" align="center" prop="datapointId" />
-      <el-table-column label="单位" align="center" prop="unit" />
-      <el-table-column label="类型" align="center" prop="type" />
-      <el-table-column label="状态" align="center" prop="status" />
-      <el-table-column label="标签" align="center" prop="tagids" />
-      <el-table-column label="描述" align="center" prop="description" />
-      <el-table-column label="创建人" align="center" prop="creator" />
-      <el-table-column label="创建时间" align="center" prop="ctime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.ctime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="更新人" align="center" prop="modifier" />
-      <el-table-column label="更新时间" align="center" prop="utime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.utime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="" align="center" prop="expr1" />
-      <el-table-column label="" align="center" prop="expr2" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['data:sensorSbook:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['data:sensorSbook:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改传感器台账对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="编号" prop="sn">
-          <el-input v-model="form.sn" placeholder="请输入编号" />
-        </el-form-item>
-        <el-form-item label="名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入名称" />
-        </el-form-item>
-        <el-form-item label="上层位置" prop="equipmentTreeId">
-          <el-input v-model="form.equipmentTreeId" placeholder="请输入上层位置" />
-        </el-form-item>
-        <el-form-item label="设备ID" prop="equipmentId">
-          <el-input v-model="form.equipmentId" placeholder="请输入设备ID" />
-        </el-form-item>
-        <el-form-item label="设备名称" prop="equipmentName">
-          <el-input v-model="form.equipmentName" placeholder="请输入设备名称" />
-        </el-form-item>
-        <el-form-item label="协议配置" prop="configUuid">
-          <el-input v-model="form.configUuid" placeholder="请输入协议配置" />
-        </el-form-item>
-        <el-form-item label="点表" prop="datapointId">
-          <el-input v-model="form.datapointId" placeholder="请输入点表" />
-        </el-form-item>
-        <el-form-item label="单位" prop="unit">
-          <el-input v-model="form.unit" placeholder="请输入单位" />
-        </el-form-item>
-        <el-form-item label="标签" prop="tagids">
-          <el-input v-model="form.tagids" placeholder="请输入标签" />
-        </el-form-item>
-        <el-form-item label="描述" prop="description">
-          <el-input v-model="form.description" placeholder="请输入描述" />
-        </el-form-item>
-        <el-form-item label="创建人" prop="creator">
-          <el-input v-model="form.creator" placeholder="请输入创建人" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="ctime">
-          <el-date-picker clearable
-            v-model="form.ctime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择创建时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="更新人" prop="modifier">
-          <el-input v-model="form.modifier" placeholder="请输入更新人" />
-        </el-form-item>
-        <el-form-item label="更新时间" prop="utime">
-          <el-date-picker clearable
-            v-model="form.utime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择更新时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-        <el-form-item label="" prop="expr1">
-          <el-input v-model="form.expr1" placeholder="请输入" />
-        </el-form-item>
-        <el-form-item label="" prop="expr2">
-          <el-input v-model="form.expr2" placeholder="请输入" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listSensorSbook, getSensorSbook, delSensorSbook, addSensorSbook, updateSensorSbook } from "@/api/data/sensorSbook";
-
-export default {
-  name: "SensorSbook",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 传感器台账表格数据
-      sensorSbookList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        sn: undefined,
-        name: undefined,
-        equipmentTreeId: undefined,
-        equipmentId: undefined,
-        equipmentName: undefined,
-        protocolType: undefined,
-        configUuid: undefined,
-        datapointId: undefined,
-        unit: undefined,
-        type: undefined,
-        status: undefined,
-        tagids: undefined,
-        description: undefined,
-        creator: undefined,
-        ctime: undefined,
-        modifier: undefined,
-        utime: undefined,
-        expr1: undefined,
-        expr2: undefined
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        sn: [
-          { required: true, message: "编号不能为空", trigger: "blur" }
-        ],
-        name: [
-          { required: true, message: "名称不能为空", trigger: "blur" }
-        ],
-        equipmentTreeId: [
-          { required: true, message: "上层位置不能为空", trigger: "blur" }
-        ],
-        equipmentId: [
-          { required: true, message: "设备ID不能为空", trigger: "blur" }
-        ],
-        equipmentName: [
-          { required: true, message: "设备名称不能为空", trigger: "blur" }
-        ],
-        protocolType: [
-          { required: true, message: "协议不能为空", trigger: "change" }
-        ],
-        configUuid: [
-          { required: true, message: "协议配置不能为空", trigger: "blur" }
-        ],
-        datapointId: [
-          { required: true, message: "点表不能为空", trigger: "blur" }
-        ],
-        unit: [
-          { required: true, message: "单位不能为空", trigger: "blur" }
-        ],
-        type: [
-          { required: true, message: "类型不能为空", trigger: "change" }
-        ],
-        status: [
-          { required: true, message: "状态不能为空", trigger: "change" }
-        ],
-        tagids: [
-          { required: true, message: "标签不能为空", trigger: "blur" }
-        ],
-        description: [
-          { required: true, message: "描述不能为空", trigger: "blur" }
-        ],
-        creator: [
-          { required: true, message: "创建人不能为空", trigger: "blur" }
-        ],
-        ctime: [
-          { required: true, message: "创建时间不能为空", trigger: "blur" }
-        ],
-        modifier: [
-          { required: true, message: "更新人不能为空", trigger: "blur" }
-        ],
-        utime: [
-          { required: true, message: "更新时间不能为空", trigger: "blur" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-        expr1: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        expr2: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ]
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询传感器台账列表 */
-    getList() {
-      this.loading = true;
-      listSensorSbook(this.queryParams).then(response => {
-        this.sensorSbookList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        sn: undefined,
-        name: undefined,
-        equipmentTreeId: undefined,
-        equipmentId: undefined,
-        equipmentName: undefined,
-        protocolType: undefined,
-        configUuid: undefined,
-        datapointId: undefined,
-        unit: undefined,
-        type: undefined,
-        status: undefined,
-        tagids: undefined,
-        description: undefined,
-        creator: undefined,
-        ctime: undefined,
-        modifier: undefined,
-        utime: undefined,
-        remark: undefined,
-        expr1: undefined,
-        expr2: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加传感器台账";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getSensorSbook(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改传感器台账";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateSensorSbook(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addSensorSbook(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除传感器台账编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delSensorSbook(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('data/sensorSbook/export', {
-        ...this.queryParams
-      }, `sensorSbook_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 230 - 65
ruoyi-ui-vue3/src/views/device/sensordash/add.vue

@@ -5,8 +5,8 @@
         <div class="card-header">
           <span>传感器台账-新增</span>
           <div>
-            <el-button type="warning" @click="">复位</el-button>
-            <el-button type="primary" @click="">保存</el-button>
+            <el-button type="warning" @click="initdata">复位</el-button>
+            <el-button type="primary" @click="savedata">保存</el-button>
             <el-button type="primary" plain @click="router.back();">返回</el-button>
           </div>
         </div>
@@ -23,7 +23,7 @@
 
               </template>
               <div class="content-w">
-                <el-input placeholder="请输入传感器编码"/>
+                <el-input v-model="currentsensor.sn" placeholder="请输入传感器编码"/>
               </div>
             </el-descriptions-item>
             <el-descriptions-item>
@@ -33,7 +33,7 @@
                 </div>
               </template>
               <div class="content-w">
-                <el-input placeholder="请输入传感器名称"/>
+                <el-input v-model="currentsensor.name" placeholder="请输入传感器名称"/>
               </div>
             </el-descriptions-item>
             <el-descriptions-item>
@@ -43,11 +43,10 @@
                 </div>
               </template>
               <div class="content-w">
-                <el-select-v2
-                  v-model="value"
-                  :options="options"
-                  placeholder="请选择"
-                />
+                <el-select v-model="currentsensor.sensorType" placeholder="请选择">
+                  <el-option v-for="item in sensor_type" :key="item.value" :label="item.label" :value="item.value">
+                  </el-option>
+                </el-select>
               </div>
             </el-descriptions-item>
             <el-descriptions-item>
@@ -57,67 +56,125 @@
                 </div>
               </template>
               <div class="content-w">
-                <el-select-v2
-                  v-model="value"
-                  :options="options"
-                  placeholder="请选择"
-                  filterable
-                  remote
-                />
+                <el-select  @change="changeProtocalType" v-model="currentsensor.protocalType" placeholder="请选择">
+                  <el-option v-for="item in protocal_type" :key="item.value" :label="item.label" :value="parseInt(item.value)">
+                  </el-option>
+                </el-select>
+                <el-select v-if="currentsensor.protocalType!=3" v-model="currentsensor.protocalId" placeholder="请选择">
+                  <el-option v-for="item in protocallist" :key="item.name" :value="item.id" :label="item.protocolName"></el-option>
+                </el-select>
               </div>
             </el-descriptions-item>
-            <el-descriptions-item>
-              <template #label>
-                <div style="display: inline-block;min-width: 100px;text-align: right">
-                  配置信息
-                </div>
-              </template>
-              <div class="content-w">
-                <el-select-v2
-                  v-model="value"
-                  :options="options"
-                  placeholder="请选择"
-                  filterable
-                  remote
-                />
-              </div>
-            </el-descriptions-item>
-            <el-descriptions-item>
-              <template #label>
-                <div style="display: inline-block;min-width: 100px;text-align: right">
-                  点表
-                </div>
-              </template>
-              <div class="content-w">
-                <el-input placeholder="请输入"/>
-              </div>
-            </el-descriptions-item>
-            <el-descriptions-item span="2">
+            <el-descriptions-item :span="4">
               <template #label>
                 <div style="display: inline-block;min-width: 100px;text-align: right">
-                  <span style="color: red">*</span> 原表名
+                  <span style="color: red">*</span> 关联设备
                 </div>
               </template>
               <div class="content-w">
-                <el-input placeholder="请输入原表名"/>
-              </div>
-            </el-descriptions-item>
-            <el-descriptions-item span="4">
-              <template #label>
-                <div style="display: inline-block;min-width: 100px;text-align: right">
-                  <span style="color: red">*</span> 表字段类型
-                </div>
-              </template>
-              <div class="content-w">
-                <el-select-v2
-                  v-model="value"
-                  :options="options"
-                  placeholder="请选择"
-                  filterable
-                  remote
-                />
+                <el-popover placement="right" :width="800" trigger="click">
+                  <template #reference>
+                    <el-button  plain>{{ `${ (alldevice.find(i=>(i.id+"")==currentsensor.deviceId) ?? {name:'未配置'}).name}` }}</el-button>
+                  </template>
+                  <div>
+                    <div style="margin-bottom: 20px">
+                      <div style="display: flex; flex-direction: row; justify-content: space-between">
+                        <div style="display: flex; flex-direction: row;">
+                          <div style="
+                  display: flex;
+                  flex-direction: row;
+                  flex-wrap: nowrap;
+                  align-items: center;
+                ">
+                            <div style="font-size: 12px; width: 80px;">设备名称:</div>
+                            <el-input v-model="searchform.name" placeholder="设备名称"></el-input>
+                          </div>
+                          <div style="
+                  display: flex;
+                  flex-direction: row;
+                  flex-wrap: nowrap;
+                  align-items: center;
+                ">
+                            <div style="font-size: 12px; width: 80px;margin-left: 10px">设备编码:</div>
+                            <el-input v-model="searchform.sn" placeholder="设备编码"></el-input>
+                          </div>
+                        </div>
+                        <div>
+                          <el-button type="primary" plain @click="initsearch">重置</el-button>
+                          <el-button type="primary" @click="getalldata">搜索</el-button>
+                        </div>
+                      </div>
+
+                    </div>
+                    <el-table :data="alldevice" @cellClick="(row1)=>{currentsensor.deviceId=row1.id;}">
+                      <el-table-column property="sn" label="设备编码" />
+                      <el-table-column property="name" label="设备名称" />
+                      <el-table-column property="deptName" label="上层位置" />
+                    </el-table>
+
+                      <el-pagination style="float: right;margin-top: 20px"
+                                     small
+                                     background
+                                     layout="prev, pager, next"
+                                     :total="pagedata.total"
+                                     :page-size="pagedata.size"
+                                     :current-page="pagedata.current"
+                                     @current-change="onchangepage"
+                                     class="mt-4"
+                      />
+
+
+                  </div>
+
+                </el-popover>
               </div>
             </el-descriptions-item>
+<!--            <el-descriptions-item>-->
+<!--              <template #label>-->
+<!--                <div style="display: inline-block;min-width: 100px;text-align: right">-->
+<!--                  配置信息-->
+<!--                </div>-->
+<!--              </template>-->
+<!--              <div class="content-w">-->
+<!--                <el-input v-model="currentsensor.config" placeholder="请输入配置信息"/>-->
+<!--              </div>-->
+<!--            </el-descriptions-item>-->
+<!--            <el-descriptions-item>-->
+<!--              <template #label>-->
+<!--                <div style="display: inline-block;min-width: 100px;text-align: right">-->
+<!--                  点表-->
+<!--                </div>-->
+<!--              </template>-->
+<!--              <div class="content-w">-->
+<!--                <el-input placeholder="请输入"/>-->
+<!--              </div>-->
+<!--            </el-descriptions-item>-->
+<!--            <el-descriptions-item span="2">-->
+<!--              <template #label>-->
+<!--                <div style="display: inline-block;min-width: 100px;text-align: right">-->
+<!--                  <span style="color: red">*</span> 原表名-->
+<!--                </div>-->
+<!--              </template>-->
+<!--              <div class="content-w">-->
+<!--                <el-input placeholder="请输入原表名"/>-->
+<!--              </div>-->
+<!--            </el-descriptions-item>-->
+<!--            <el-descriptions-item span="4">-->
+<!--              <template #label>-->
+<!--                <div style="display: inline-block;min-width: 100px;text-align: right">-->
+<!--                  <span style="color: red">*</span> 表字段类型-->
+<!--                </div>-->
+<!--              </template>-->
+<!--              <div class="content-w">-->
+<!--                <el-select-v2-->
+<!--                  v-model="value"-->
+<!--                  :options="options"-->
+<!--                  placeholder="请选择"-->
+<!--                  filterable-->
+<!--                  remote-->
+<!--                />-->
+<!--              </div>-->
+<!--            </el-descriptions-item>-->
 
             <el-descriptions-item :span="2">
               <template #label>
@@ -126,7 +183,7 @@
                 </div>
               </template>
               <div class="content-w" style="min-width: 400px">
-                <el-input type="textarea" :line-count="5"  show-word-limit maxlength="200" placeholder="请输入描述"/>
+                <el-input type="textarea" v-model="currentsensor.sensorDesc" :line-count="5"  show-word-limit maxlength="200" placeholder="请输入描述"/>
               </div>
             </el-descriptions-item>
             <el-descriptions-item :span="2">
@@ -136,7 +193,7 @@
                 </div>
               </template>
               <div class="content-w" style="min-width: 400px">
-                <el-input type="textarea" :line-count="5"  show-word-limit maxlength="200" placeholder="请输入备注"/>
+                <el-input type="textarea"  v-model="currentsensor.remark" :line-count="5"  show-word-limit maxlength="200" placeholder="请输入备注"/>
               </div>
             </el-descriptions-item>
 
@@ -151,9 +208,16 @@
   </div>
 </template>
 
-<script setup lang="ts">
-import {ref} from "vue";
+<script setup >
+import {onMounted, ref} from "vue";
 import {useRoute, useRouter} from "vue-router";
+import {addSensor,updateSensor} from "@/api/data/sensor"
+import {ElMessage} from "element-plus";
+import {listModbusTcp} from "@/api/data/modbusTcp";
+import {listModbusRtu} from "@/api/data/modbusRtu";
+import {listEquipmentSbook} from "@/api/data/equipmentSbook";
+const {proxy} = getCurrentInstance();
+const {protocal_type, sensor_type, sensor_status} = proxy.useDict("protocal_type", "sensor_type", "sensor_status");
 
 
 
@@ -168,6 +232,107 @@ const options = ref([
     label: '黄金糕'
   }]);
 
+const currentsensor = ref({
+  "name": "",
+  "sn": "",
+  "deviceId": null,
+  "sensorType": "",
+  "protocalType": null,
+  "sensorDesc": "",
+  "status": "",
+  "remark": "",
+  "protocalId": null,
+  "equipmentTreeId": null,
+  "equipmentName": null,
+  "configUuid": null});
+const initdata = ()=>{
+  currentsensor.value = {
+    "name": "",
+    "sn": "",
+    "deviceId": null,
+    "sensorType": "",
+    "protocalType": null,
+    "sensorDesc": "",
+    "status": "",
+    "remark": "",
+    "protocalId": null,
+    "equipmentTreeId": null,
+    "equipmentName": null,
+    "configUuid": null};
+}
+const savedata = ()=>{
+  if (route.query["type"] == 1) {
+    updateSensor(currentsensor.value).then(res => {
+      ElMessage.success("保存成功")
+       router.back();
+    })
+  } else {
+    addSensor(currentsensor.value).then(res => {
+      ElMessage.success("保存成功")
+      router.back();
+    });
+  }
+}
+const searchform = ref({
+  name:"",
+  sn:"",
+})
+
+onMounted(()=>{
+  if (route.query["type"] == 1) {
+    if (localStorage.getItem("currentsensor")) {
+      currentsensor.value = JSON.parse(localStorage.getItem("currentsensor"))
+    } else {
+      route.query["type"] = 0;
+    }
+  }
+  getalldata();
+})
+
+
+const protocallist = ref([]);
+
+const changeProtocalType = (item) => {
+
+  if (item == 1) {
+    listModbusTcp({pageSize: 10000}).then(res => {
+      protocallist.value = res.rows;
+    })
+  }
+  if (item == 2) {
+    listModbusRtu({pageSize: 10000}).then(res => {
+      protocallist.value = res.rows;
+    })
+  }
+}
+
+const initsearch = ()=>{
+  searchform.value = {name:'',sn:''};
+  pagedata.value = {  total:0,
+    size:10,
+    current:1}
+}
+
+const alldevice = ref([]);
+const onchangepage = (page) => {
+  pagedata.value.current = page;
+  getalldata();
+}
+const pagedata = ref({
+  total:0,
+  size:10,
+  current:1
+});
+const getalldata = () => {
+  listEquipmentSbook({ ...pagedata.value,params:{...searchform.value}
+  }).then(res => {
+    const {rows,total,page,size} = res;
+    alldevice.value = rows;
+    pagedata.value = {total:total,current:page, size:10};
+  })
+}
+
+
 
 </script>
 

+ 33 - 1
ruoyi-ui-vue3/src/views/device/sensordash/index.vue

@@ -22,7 +22,7 @@
               @node-click="handleClick"
             >
               <template #title="{ data }">
-                {{ data.name }}
+                <div style="display: flex;align-items: center;"><el-icon v-if="(data.id+'').indexOf('device')!=-1" ><Cpu /></el-icon> {{ data.name }}</div>
               </template>
             </LayTree>
 
@@ -90,6 +90,11 @@
                 <el-table-column label="操作">
                   <template #default="scope">
                     <div>
+                      <el-button link @click="lookdata(scope.row)" >
+                        <el-tooltip effect="dark" content="查看数据" >
+                          <el-icon><PieChart /></el-icon>
+                        </el-tooltip>
+                      </el-button>
 
                       <el-button link @click="goedit(scope.row)">
                         <el-tooltip effect="dark" content="编辑">
@@ -236,6 +241,22 @@
       </div>
 
     </el-dialog>
+
+    <el-dialog
+      title="测点数据查看"
+      v-model="datashow"
+      width="50%"
+      @close="datashow = false"
+    >
+      <div>
+<!--        显示测点实时数据-->
+
+      </div>
+      <div>
+<!--        显示历史数据 折线图-->
+
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -425,11 +446,22 @@ const cdbd = (item) => {
 
 }
 
+const datashow = ref(false);
+const lookdata = (item)=>{
+  //弹窗
+  datashow.value = true;
+  currentsensor.value = item;
+
+  //直接接mqtt 数据
+}
+
+
 const deldatapoint = (index)=>{
   pointdata.value.splice(index,1)
 }
 
 const addrow = ()=>{
+  if(!pointdata.value){pointdata.value = [];}
   pointdata.value.push({
     name: "",
     unit: "",

+ 5 - 4
ruoyi-ui-vue3/src/views/gateway/manager/add.vue

@@ -117,7 +117,7 @@
                     <el-option v-for="item in protocal_type" :key="item.value" :value="parseInt(item.value)" :label="item.label"></el-option>
                   </el-select>
                   <el-select v-if="currentgateway.protocalType!=3" v-model="currentgateway.protocalId" placeholder="请选择">
-                    <el-option v-for="item in protocallist" :key="item.name" :value="item.id" :label="item.protocolName"></el-option>
+                    <el-option v-for="item in protocallist" :key="item.name" :value="(item.id) " :label="item.protocolName"></el-option>
                   </el-select>
 
                 </div>
@@ -233,7 +233,7 @@ const {gateway_status, flow_units, protocal_type} = proxy.useDict("gateway_statu
 import {delModbusRtu, listModbusRtu} from "@/api/data/modbusRtu";
 import {listModbusTcp} from "@/api/data/modbusTcp";
 import {updateGateway} from "@/api/data/gateway";
-import {listGatewayEquipmentSbook,updateEquipmentSbook} from "@/api/data/equipmentSbook"
+import {listEquipmentSbook,updateEquipmentSbook} from "@/api/data/equipmentSbook"
 import {ElMessage} from "element-plus";
 import {cloneDeep} from "lodash";
 
@@ -366,7 +366,7 @@ const pagedata = ref({
 });
 
 const getalldevicedata = () => {
-  listGatewayEquipmentSbook({gatewayId:0, ...pagedata1.value}).then(res => {
+  listEquipmentSbook({gatewayId:0, ...pagedata1.value}).then(res => {
     const {rows,total,page,size} = res;
     alldevice.value = rows;
     pagedata1.value = {total:total,current:page, size:10};
@@ -383,7 +383,7 @@ const pagedata1 = ref({
   current: 1
 });
 const getalldata = () => {
-  listGatewayEquipmentSbook({...pagedata.value,gatewayId:currentgateway.value.id}).then(res => {
+  listEquipmentSbook({...pagedata.value,gatewayId:currentgateway.value.id}).then(res => {
     const {rows,total,page,size} = res;
     tabledata.value = rows;
     pagedata.value = {total:total,current:page, size:10};
@@ -399,6 +399,7 @@ onMounted(() => {
   if (route.query["type"] == 1) {
     if (localStorage.getItem("gatewaydata")) {
       currentgateway.value = JSON.parse(localStorage.getItem("gatewaydata"))
+      changeProtocalType(currentgateway.value.protocalType)
     } else {
       route.query["type"] = 0;
     }