春风项目四线(合箱线、总装线)
hdy
2024-01-24 372d06cec5605fccf23357f8cf62f191297b0127
Merge remote-tracking branch 'origin/master'
已修改11个文件
已添加1个文件
715 ■■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/common/Constants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/dashboard/PanelGroup.vue 368 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/tileMatchRules/index.vue 202 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
@@ -1,11 +1,17 @@
package com.jcdm.main.bs.orderScheduling.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.jcdm.common.annotation.Excel;
import com.jcdm.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
 * è®¢å•æŽ’产对象 bs_order_scheduling
@@ -13,6 +19,7 @@
 * @author jiang
 * @date 2024-01-13
 */
@Data
public class BsOrderScheduling extends BaseEntity
{
    private static final long serialVersionUID = 1L;
@@ -146,6 +153,19 @@
    @Excel(name = "CVT下线时间")
    private Date cvtOfflineTime;
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startQuery;
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endQuery;
    @TableField(exist = false)
    private String queryField;
    public Date getBoxClosingOnlineTime() {
        return boxClosingOnlineTime;
    }
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
@@ -29,6 +29,9 @@
     */
    public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling);
    public Integer getProduceNumToday(BsOrderScheduling bsOrderScheduling);
    /**
     * æŸ¥è¯¢åˆç®±ä¸Šçº¿åˆ—表
     *
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java
@@ -7,10 +7,13 @@
import com.jcdm.main.da.opcuaconfig.init.BeanUtils;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import java.time.Duration;
import java.util.*;
import java.util.stream.Collectors;
@@ -20,11 +23,15 @@
public class MethodName {
    private IDaCollectionParamConfService collectionParamConfService = BeanUtils.getBean(IDaCollectionParamConfService.class);
    private IDaParamCollectionService daParamCollectionService = BeanUtils.getBean(IDaParamCollectionService.class);
    private IDaPassingStationCollectionService daPassingStationCollectionService = BeanUtils.getBean(IDaPassingStationCollectionService.class);
    private List<DataValue> s=null;
    public void getSn(String Node, String value) throws Exception {
        log.info(Node+":"+value);
        String[] parts = Node.split("[.]");
        ClientHandler clientHandler=new ClientHandler();
        NodeEntity SN_node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".SNCode").value("").type("").build();
        String SNCode=clientHandler.read(SN_node);
        log.info("读取节点:{},结果:{}", SN_node.getIdentifier(),SNCode);
        switch (value) {
            case "0":   //初始
                NodeEntity node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("0").type("short").build();
@@ -34,28 +41,46 @@
            case "1":   //请求下发进站状态
                NodeEntity node1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("11").type("short").build();
                Boolean out1=clientHandler.write(node1);
                DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
                PassingStationCollection.setSfcCode(SNCode);
                PassingStationCollection.setLocationCode(parts[1]);
                PassingStationCollection.setInboundTime(new Date());
                daPassingStationCollectionService.insertDaPassingStationCollection(PassingStationCollection);
                log.info("节点:{},响应结果:{}", node1.getIdentifier(),out1);
                break;
            case "2":   //请求记录工位数据
                List<DaCollectionParamConf> b;
                DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf();
                daCollectionParamConf.setCollectParameterId(parts[0]+"."+parts[1]);
                daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]);
                b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
                List<NodeId> nodeId = b.stream().map(info -> {
                    NodeId nodeid = new NodeId(2,info.getCollectParameterId());
                    NodeId nodeid = new NodeId(2,info.getGatherAddress());
                    return nodeid;
                }).collect(Collectors.toList());
                List<DataValue> s=readValues(nodeId);
                //保存PLC采集数据
                for(int i=0;i<nodeId.size();i++)
                {
                    DaParamCollection Config=new DaParamCollection();
                    Config.setParamCode(nodeId.get(i).getIdentifier().toString().split("[.]")[2]);
                    Config.setLocationCode(nodeId.get(i).getIdentifier().toString().split("[.]")[1]);
                    Config.setParamValue(s.get(i).getValue().getValue().toString());
                    Config.setSfcCode(SNCode);
                    Config.setParamName(b.get(i).getGatherAddress());
                    daParamCollectionService.insertDaParamCollection(Config);
                }
                //更新出站时间,计算节拍。
                DaPassingStationCollection PSC=new DaPassingStationCollection();
                PSC.setSfcCode(SNCode);
                List<DaPassingStationCollection> LPSC=daPassingStationCollectionService.selectDaPassingStationCollectionList(PSC);
                if(LPSC != null && LPSC.size() > 0){
                    LPSC.get(0).setOutboundTime(new Date());
                    LPSC.get(0).setCollectionTime(new Date());
                    LPSC.get(0).setBeatTime(Long.toString(Math.abs(new Date().getTime() - LPSC.get(0).getInboundTime().getTime())));
                    daPassingStationCollectionService.updateDaPassingStationCollection(LPSC.get(0));
                }
                //更新PLC节点状态
                NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("21").type("short").build();
                Boolean out2=clientHandler.write(node2);
                log.info("节点:{},响应结果:{}", node2.getIdentifier(),out2);
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/common/Constants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
package com.jcdm.main.da.passingStationCollection.common;
public final class Constants {
}
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
@@ -3,7 +3,9 @@
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jcdm.common.core.domain.R;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -48,6 +50,14 @@
        return getDataTable(list);
    }
    @PreAuthorize("@ss.hasPermi('da:passingStationCollection:list')")
    @GetMapping("/getProduceNumToday")
    public R getProduceNumToday(String fieldName)
    {
        Integer num = daPassingStationCollectionService.getProduceNumToday(fieldName);
        return R.ok(num);
    }
    /**
     * æŸ¥è¯¢äº§å“è¿‡ç«™é‡‡é›†åˆ—表
     */
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
@@ -1,5 +1,6 @@
package com.jcdm.main.da.passingStationCollection.service;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import java.util.List;
@@ -28,6 +29,14 @@
     */
    public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection);
    /**
     * èŽ·å–首页单日累计量产数据
     * @param fieldName bs
     * @return list
     */
    public Integer getProduceNumToday(String fieldName);
    /**
     * æ–°å¢žäº§å“è¿‡ç«™é‡‡é›†
     * 
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -1,13 +1,23 @@
package com.jcdm.main.da.passingStationCollection.service.impl;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import com.jcdm.common.constant.Constants;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper;
import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord;
import com.jcdm.main.rm.repairRecord.mapper.RmRepairRecordMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
/**
@@ -24,6 +34,12 @@
    @Autowired
    private RmRepairRecordMapper rmRepairRecordMapper;
    @Autowired
    private BsOrderSchedulingMapper bsOrderSchedulingMapper;
    @Autowired
    private IBsOrderSchedulingService bsOrderSchedulingService;
    /**
     * æŸ¥è¯¢äº§å“è¿‡ç«™é‡‡é›†
@@ -50,6 +66,26 @@
    }
    /**
     * èŽ·å–首页单日累计量产数据
     * @param fieldName bs
     * @return list
     */
    @Override
    public Integer getProduceNumToday(String fieldName) {
        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
        bsOrderScheduling.setQueryField(fieldName);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime startTime = LocalDate.now().atStartOfDay();
        LocalDateTime endTime = LocalDate.now().plusDays(1).atStartOfDay();
        String s1 = startTime.format(formatter);
        String s2 = endTime.format(formatter);
        bsOrderScheduling.setStartTime(s1);
        bsOrderScheduling.setEndTime(s2);
        return bsOrderSchedulingMapper.getProduceNumToday(bsOrderScheduling);
    }
    /**
     * æ–°å¢žäº§å“è¿‡ç«™é‡‡é›†
     * 
     * @param daPassingStationCollection äº§å“è¿‡ç«™é‡‡é›†
jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
@@ -99,6 +99,10 @@
            </if>
        </where>
    </select>
    <select id="getProduceNumToday" resultType="java.lang.Integer">
        select count(*) from bs_order_scheduling
        where ${queryField} BETWEEN #{startTime} AND #{endTime}
    </select>
    <insert id="insertBsOrderScheduling" parameterType="BsOrderScheduling" useGeneratedKeys="true" keyProperty="id">
jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
@@ -9,6 +9,15 @@
  })
}
// èŽ·å–首页单日累计量产数据
export function getProduceNumToday(query) {
  return request({
    url: '/da/passingStationCollection/getProduceNumToday',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢äº§å“è¿‡ç«™é‡‡é›†åˆ—表
export function insertRepairRecordByIds(query) {
  return request({
jcdm-ui/src/views/dashboard/PanelGroup.vue
@@ -1,234 +1,202 @@
<template>
    <el-card class="box-card">
  <el-row :gutter="40" class="panel-group">
    <el-card class="bottom-card">
      <div slot="header" class="clearfix">
        <span class="top2">单日累计产量</span>
        <span style="font-size: 20px;font-weight: bold">单日累计产量</span>
      </div>
      <el-row :gutter="40" class="panel-group">
    <el-col  :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('newVisitis')">
        <div class="card-panel-icon-wrapper icon-people">
          <svg-icon icon-class="peoples" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            åˆç®±ä¸Šçº¿
          </div>
          <count-to :start-val="0" :end-val="10200" :duration="2600" class="card-panel-num" />
        </div>
      </div>
    </el-col>
    <el-col  :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('messages')">
        <div class="card-panel-icon-wrapper icon-message">
          <svg-icon icon-class="message" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            åˆç®±ä¸‹çº¿
          </div>
          <count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
        </div>
      </div>
    </el-col>
    <el-col  :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('purchases')">
        <div class="card-panel-icon-wrapper icon-money">
          <svg-icon icon-class="money" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            æ€»è£…上线
          </div>
          <count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
        </div>
      </div>
    </el-col>
    <el-col :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('shoppings')">
        <div class="card-panel-icon-wrapper icon-shopping">
          <svg-icon icon-class="shopping" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            æ€»è£…下线
          </div>
          <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
        </div>
      </div>
    </el-col>
    <el-col  :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('shoppings')">
        <div class="card-panel-icon-wrapper icon-shopping">
          <svg-icon icon-class="shopping" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            CVT上线
      <div style="display: flex; margin-top: 20px; height: 80px;">
        <div class="transition-box" style="background-color: limegreen">
          <i class="el-icon-notebook-1"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px" class="nextLine">合箱上线</span>
            <span class="nextLine">{{data1}}</span>
          </div>
          <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
        </div>
        <div class="transition-box" style="background-color: cornflowerblue">
          <i class="el-icon-setting"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px" class="nextLine">合箱下线</span>
            <span class="nextLine">{{data2}}</span>
          </div>
        </div>
        <div class="transition-box" style="background-color: mediumpurple">
          <i class="el-icon-s-unfold"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px">总装上线</span>
            <span class="nextLine">{{data3}}</span>
          </div>
        </div>
        <div class="transition-box" style="background-color: green">
          <i class="el-icon-cpu"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px">总装下线</span>
            <span class="nextLine">{{data4}}</span>
          </div>
        </div>
        <div class="transition-box" style="background-color: orange">
          <i class="el-icon-upload2"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px">CVT上线</span>
            <span class="nextLine">{{data5}}</span>
          </div>
        </div>
        <div class="transition-box" style="background-color: darkslategray">
          <i class="el-icon-finished"></i>
          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
          <div>
            <span style="margin-left: 20px">CVT下线</span>
            <span class="nextLine">{{data6}}</span>
          </div>
        </div>
      </div>
    </el-col>
    <el-col  :span="4" class="card-panel-col">
      <div class="card-panel" @click="handleSetLineChartData('shoppings')">
        <div class="card-panel-icon-wrapper icon-shopping">
          <svg-icon icon-class="shopping" class-name="card-panel-icon" />
        </div>
        <div class="card-panel-description">
          <div class="card-panel-text">
            CVT下线
          </div>
          <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
        </div>
      </div>
    </el-col>
      </el-row>
    </el-card>
  </el-row>
</template>
<script>
import CountTo from 'vue-count-to'
import { getProduceNumToday } from '@/api/main/da/passingStationCollection/passingStationCollection'
export default {
  components: {
    CountTo
  },
  data(){
    return{
      query1:'box_closing_online_time',
      data1:'',
      query2:'closing_box_offline_time',
      data2:'',
      query3:'final_assembly_launch_time',
      data3:'',
      query4:'final_assembly_offline_time',
      data4:'',
      query5:'cvt_launch_time',
      data5:'',
      query6:'cvt_offline_time',
      data6:'',
    }
  },
  methods: {
    handleSetLineChartData(type) {
      this.$emit('handleSetLineChartData', type)
    },
    getData1(){
      getProduceNumToday({fieldName:this.query1}).then(response => {
        this.data1 = response.data;
      });
    },
    getData2(){
      getProduceNumToday({fieldName:this.query2}).then(response => {
        this.data2 = response.data;
      });
    },
    getData3(){
      getProduceNumToday({fieldName:this.query3}).then(response => {
        this.data3 = response.data;
      });
    },
    getData4(){
      getProduceNumToday({fieldName:this.query4}).then(response => {
        this.data4 = response.data;
      });
    },
    getData5(){
      getProduceNumToday({fieldName:this.query5}).then(response => {
        this.data5 = response.data;
      });
    },
    getData6(){
      getProduceNumToday({fieldName:this.query6}).then(response => {
        this.data6 = response.data;
      });
    }
  },
  mounted() {
    this.getData1(),
    this.getData2(),
    this.getData3(),
    this.getData4(),
    this.getData5(),
    this.getData6()
  }
}
</script>
<style lang="scss" scoped>
//.bottom-card{
//  padding: 15px 20px 20px 20px;
//  height: auto;
//  width: 1272px;
//  margin-left: 20px;
//  justify-content: center;
//  column-width: max-content;
//}
.top2{
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 0px;
.transition-box {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
  width: 200px;
  height: 80px;
  border-radius: 4px;
  text-align: center;
  color: #fff;
  padding: 40px 20px;
  box-sizing: border-box;
  margin-right: 10px;
}
.panel-group {
  width: 1442px;
  .card-panel-col {
    margin-bottom: 15px;
  }
  .card-panel {
    margin-left: -13px;
    width: 220px;
    height: 108px;
    cursor: pointer;
    font-size: 12px;
    position: relative;
    overflow: hidden;
    color: #666;
    background: #fff;
    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
    border-color: rgba(0, 0, 0, .05);
    &:hover {
      .card-panel-icon-wrapper {
        color: #fff;
      }
      .icon-people {
        background: #40c9c6;
      }
      .icon-message {
        background: #36a3f7;
      }
      .icon-money {
        background: #f4516c;
      }
      .icon-shopping {
        background: #34bfa3
      }
    }
    .icon-people {
      color: #40c9c6;
    }
    .icon-message {
      color: #36a3f7;
    }
    .icon-money {
      color: #f4516c;
    }
    .icon-shopping {
      color: #34bfa3
    }
    .card-panel-icon-wrapper {
      float: left;
      margin: 14px 0 0 10px;
      padding: 16px;
      transition: all 0.38s ease-out;
      border-radius: 6px;
    }
    .card-panel-icon {
      float: left;
      font-size: 48px;
    }
    .card-panel-description {
      float: right;
      font-weight: bold;
      margin: 15px 30px 0 0;
      //margin-left: 0px;
      padding: 15px 15px;
      .card-panel-text {
        line-height: 14px;
        color: rgba(0, 0, 0, 0.45);
        font-size: 12px;
        margin-bottom: 9px;
      }
      .card-panel-num {
        font-size: 18px;
      }
    }
  }
.bottom-card{
  padding: 0px 10px 20px 10px;
  height: auto;
  width: 1292px;
  margin-left: 20px;
  justify-content: center;
  column-width: max-content;
}
.el-icon-notebook-1{
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-icon-setting{
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-icon-s-unfold{
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-icon-cpu{
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-icon-upload2 {
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-icon-finished{
  font-size: 40px;
  display: flex;
  justify-content: left;
}
.el-divider--vertical{
  width:2px;
  height:40px;        //更改竖向分割线长度
  vertical-align:middle;
  position:relative;
}
.nextLine{
  display: block;
  margin-left: 20px;
}
@media (max-width:550px) {
  .card-panel-description {
    display: none;
  }
  .card-panel-icon-wrapper {
    float: none !important;
    width: 100%;
    height: 100%;
    margin: 0 !important;
    .svg-icon {
      display: block;
      margin: 14px auto !important;
      float: none !important;
    }
  }
}
</style>
jcdm-ui/src/views/index.vue
@@ -1,23 +1,19 @@
<template>
  <div class="dashboard-editor-container">
    <panel-group @handleSetLineChartData="handleSetLineChartData" />
    <el-row style="margin-top: 12px" >
    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
    <panel-group style="margin-bottom: 10px" @handleSetLineChartData="handleSetLineChartData" />
    <el-row style="background:#fff;padding:16px 16px 0; width: 1292px">
      <el-col :xs="24" :sm="12">
        <el-card>
          <pie-chart />
        </el-card>
        <pie-chart />
      </el-col>
      <el-col :xs="24" :sm="12">
        <el-card>
          <line-chart :chart-data="lineChartData" />
        </el-card>
        <line-chart :chart-data="lineChartData" />
      </el-col>
    </el-row>
    </el-row>
  </div>
</template>
@@ -73,7 +69,7 @@
<style lang="scss" scoped>
.dashboard-editor-container {
  padding: 32px;
  padding: 20px;
  background-color: rgb(240, 242, 245);
  position: relative;
jcdm-ui/src/views/main/da/tileMatchRules/index.vue
@@ -10,38 +10,38 @@
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="扫码对象1" prop="scanObject1">
          <el-input
            v-model="queryParams.scanObject1"
            placeholder="请输入扫码对象1"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="扫码对象2" prop="scanObject2">
          <el-input
            v-model="queryParams.scanObject2"
            placeholder="请输入扫码对象2"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="轴名称" prop="axisName">
          <el-input
            v-model="queryParams.axisName"
            placeholder="请输入轴名称"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="颈名称" prop="neckName">
          <el-input
            v-model="queryParams.neckName"
            placeholder="请输入颈名称"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
<!--        <el-form-item label="扫码对象1" prop="scanObject1">-->
<!--          <el-input-->
<!--            v-model="queryParams.scanObject1"-->
<!--            placeholder="请输入扫码对象1"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="扫码对象2" prop="scanObject2">-->
<!--          <el-input-->
<!--            v-model="queryParams.scanObject2"-->
<!--            placeholder="请输入扫码对象2"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="轴名称" prop="axisName">-->
<!--          <el-input-->
<!--            v-model="queryParams.axisName"-->
<!--            placeholder="请输入轴名称"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="颈名称" prop="neckName">-->
<!--          <el-input-->
<!--            v-model="queryParams.neckName"-->
<!--            placeholder="请输入颈名称"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
        <el-form-item label="瓦名称" prop="tileName">
          <el-input
            v-model="queryParams.tileName"
@@ -50,62 +50,62 @@
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="轴参数数位置" prop="axisParameterNoPosition">
          <el-input
            v-model="queryParams.axisParameterNoPosition"
            placeholder="请输入轴参数数位置"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="颈参数数位置" prop="neckParameterPosition">
          <el-input
            v-model="queryParams.neckParameterPosition"
            placeholder="请输入颈参数数位置"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="轴值" prop="axisValue">
          <el-input
            v-model="queryParams.axisValue"
            placeholder="请输入轴值"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="颈值" prop="neckValue">
          <el-input
            v-model="queryParams.neckValue"
            placeholder="请输入颈值"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="瓦颜色" prop="tileColor">
          <el-input
            v-model="queryParams.tileColor"
            placeholder="请输入瓦颜色"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="创建用户" prop="createUser">
          <el-input
            v-model="queryParams.createUser"
            placeholder="请输入创建用户"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
        <el-form-item label="更改用户" prop="updateUser">
          <el-input
            v-model="queryParams.updateUser"
            placeholder="请输入更改用户"
            clearable
            @keyup.enter.native="handleQuery"
          />
        </el-form-item>
<!--        <el-form-item label="轴参数数位置" prop="axisParameterNoPosition">-->
<!--          <el-input-->
<!--            v-model="queryParams.axisParameterNoPosition"-->
<!--            placeholder="请输入轴参数数位置"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="颈参数数位置" prop="neckParameterPosition">-->
<!--          <el-input-->
<!--            v-model="queryParams.neckParameterPosition"-->
<!--            placeholder="请输入颈参数数位置"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="轴值" prop="axisValue">-->
<!--          <el-input-->
<!--            v-model="queryParams.axisValue"-->
<!--            placeholder="请输入轴值"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="颈值" prop="neckValue">-->
<!--          <el-input-->
<!--            v-model="queryParams.neckValue"-->
<!--            placeholder="请输入颈值"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="瓦颜色" prop="tileColor">-->
<!--          <el-input-->
<!--            v-model="queryParams.tileColor"-->
<!--            placeholder="请输入瓦颜色"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="创建用户" prop="createUser">-->
<!--          <el-input-->
<!--            v-model="queryParams.createUser"-->
<!--            placeholder="请输入创建用户"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="更改用户" prop="updateUser">-->
<!--          <el-input-->
<!--            v-model="queryParams.updateUser"-->
<!--            placeholder="请输入更改用户"-->
<!--            clearable-->
<!--            @keyup.enter.native="handleQuery"-->
<!--          />-->
<!--        </el-form-item>-->
        <el-form-item label="状态" prop="state">
          <el-input
            v-model="queryParams.state"
@@ -170,14 +170,14 @@
      <el-table border v-loading="loading" :data="tileMatchRulesList" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" align="center" />
        <el-table-column label="主键id" align="center" prop="id" />
<!--        <el-table-column label="主键id" align="center" prop="id" />-->
        <el-table-column label="产品系列" align="center" prop="productSeries">
        </el-table-column>
        <el-table-column label="扫码对象1" align="center" prop="scanObject1">
        <el-table-column label="扫码对象1" align="center" prop="scanObject1" width="100">
        </el-table-column>
        <el-table-column label="扫码对象2" align="center" prop="scanObject2">
        <el-table-column label="扫码对象2" align="center" prop="scanObject2" width="100">
        </el-table-column>
        <el-table-column label="轴名称" align="center" prop="axisName">
@@ -189,10 +189,10 @@
        <el-table-column label="瓦名称" align="center" prop="tileName">
        </el-table-column>
        <el-table-column label="轴参数数位置" align="center" prop="axisParameterNoPosition">
        <el-table-column label="轴参数位置" align="center" prop="axisParameterNoPosition" width="100">
        </el-table-column>
        <el-table-column label="颈参数数位置" align="center" prop="neckParameterPosition">
        <el-table-column label="颈参数位置" align="center" prop="neckParameterPosition" width="100">
        </el-table-column>
        <el-table-column label="轴值" align="center" prop="axisValue">
@@ -204,12 +204,12 @@
        <el-table-column label="瓦颜色" align="center" prop="tileColor">
        </el-table-column>
        <el-table-column label="创建用户" align="center" prop="createUser">
<!--        <el-table-column label="创建用户" align="center" prop="createUser">-->
        </el-table-column>
        <el-table-column label="更改用户" align="center" prop="updateUser">
<!--        </el-table-column>-->
<!--        <el-table-column label="更改用户" align="center" prop="updateUser">-->
        </el-table-column>
<!--        </el-table-column>-->
        <el-table-column label="状态" align="center" prop="state">
        </el-table-column>
@@ -271,11 +271,11 @@
        <el-form-item label="瓦名称" prop="tileName">
          <el-input v-model="form.tileName" placeholder="请输入瓦名称" />
        </el-form-item>
        <el-form-item label="轴参数数位置" prop="axisParameterNoPosition">
          <el-input v-model="form.axisParameterNoPosition" placeholder="请输入轴参数数位置" />
        <el-form-item label="轴参数位置" prop="axisParameterNoPosition">
          <el-input v-model="form.axisParameterNoPosition" placeholder="请输入轴参数位置" />
        </el-form-item>
        <el-form-item label="颈参数数位置" prop="neckParameterPosition">
          <el-input v-model="form.neckParameterPosition" placeholder="请输入颈参数数位置" />
        <el-form-item label="颈参数位置" prop="neckParameterPosition">
          <el-input v-model="form.neckParameterPosition" placeholder="请输入颈参数位置" />
        </el-form-item>
        <el-form-item label="轴值" prop="axisValue">
          <el-input v-model="form.axisValue" placeholder="请输入轴值" />