From 87ebb286373e365b4bb427177b26cf00dda1e2f3 Mon Sep 17 00:00:00 2001
From: yyt <306727702@qq.com>
Date: 星期三, 24 一月 2024 11:17:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml                                        |    4 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/mapper/DaTileMatchRulesMapper.java                                |   61 ++
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java         |    9 
 jcdm-ui/src/views/index.vue                                                                                               |   18 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java                                    |   20 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java    |   10 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java |   36 +
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java                        |  104 +++
 jcdm-ui/src/views/dashboard/PanelGroup.vue                                                                                |  368 +++++------
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/domain/DaTileMatchRules.java                                      |  235 ++++++++
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/common/Constants.java                                   |    5 
 jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js                                                                  |   44 +
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java                     |   96 +++
 jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml                                          |  129 ++++
 jcdm-ui/src/views/main/da/tileMatchRules/index.vue                                                                        |  473 ++++++++++++++++
 jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js                                              |    9 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java                              |    3 
 jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/IDaTileMatchRulesService.java                             |   61 ++
 18 files changed, 1,474 insertions(+), 211 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
index 1907f60..83eb39f 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
+++ b/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;
     }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
index 11a711b..39bb248 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
+++ b/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);
+
     /**
      * 鏌ヨ鍚堢涓婄嚎鍒楄〃
      *
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/common/Constants.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/common/Constants.java
new file mode 100644
index 0000000..5b0d40e
--- /dev/null
+++ b/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 {
+
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
index 973d321..19831e2 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
+++ b/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);
+    }
+
     /**
      * 鏌ヨ浜у搧杩囩珯閲囬泦鍒楄〃
      */
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
index 9c9b9cf..cb8845e 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
+++ b/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);
+
     /**
      * 鏂板浜у搧杩囩珯閲囬泦
      * 
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
index 550b86d..3b5fbe4 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
+++ b/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 浜у搧杩囩珯閲囬泦
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
new file mode 100644
index 0000000..db6d3ad
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
@@ -0,0 +1,104 @@
+package com.jcdm.main.da.tileMatchRules.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 閰嶇摝瑙勫垯Controller
+ * 
+ * @author jiang
+ * @date 2024-01-24
+ */
+@RestController
+@RequestMapping("/da/tileMatchRules")
+public class DaTileMatchRulesController extends BaseController
+{
+    @Autowired
+    private IDaTileMatchRulesService daTileMatchRulesService;
+
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DaTileMatchRules daTileMatchRules)
+    {
+        startPage();
+        List<DaTileMatchRules> list = daTileMatchRulesService.selectDaTileMatchRulesList(daTileMatchRules);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭閰嶇摝瑙勫垯鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:export')")
+    @Log(title = "閰嶇摝瑙勫垯", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DaTileMatchRules daTileMatchRules)
+    {
+        List<DaTileMatchRules> list = daTileMatchRulesService.selectDaTileMatchRulesList(daTileMatchRules);
+        ExcelUtil<DaTileMatchRules> util = new ExcelUtil<DaTileMatchRules>(DaTileMatchRules.class);
+        util.exportExcel(response, list, "閰嶇摝瑙勫垯鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇閰嶇摝瑙勫垯璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(daTileMatchRulesService.selectDaTileMatchRulesById(id));
+    }
+
+    /**
+     * 鏂板閰嶇摝瑙勫垯
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:add')")
+    @Log(title = "閰嶇摝瑙勫垯", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DaTileMatchRules daTileMatchRules)
+    {
+        return toAjax(daTileMatchRulesService.insertDaTileMatchRules(daTileMatchRules));
+    }
+
+    /**
+     * 淇敼閰嶇摝瑙勫垯
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:edit')")
+    @Log(title = "閰嶇摝瑙勫垯", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DaTileMatchRules daTileMatchRules)
+    {
+        return toAjax(daTileMatchRulesService.updateDaTileMatchRules(daTileMatchRules));
+    }
+
+    /**
+     * 鍒犻櫎閰嶇摝瑙勫垯
+     */
+    @PreAuthorize("@ss.hasPermi('da:tileMatchRules:remove')")
+    @Log(title = "閰嶇摝瑙勫垯", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(daTileMatchRulesService.deleteDaTileMatchRulesByIds(ids));
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/domain/DaTileMatchRules.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/domain/DaTileMatchRules.java
new file mode 100644
index 0000000..45c490c
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/domain/DaTileMatchRules.java
@@ -0,0 +1,235 @@
+package com.jcdm.main.da.tileMatchRules.domain;
+
+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;
+
+/**
+ * 閰嶇摝瑙勫垯瀵硅薄 da_tile_match_rules
+ * 
+ * @author jiang
+ * @date 2024-01-24
+ */
+public class DaTileMatchRules extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 浜у搧绯诲垪 */
+    @Excel(name = "浜у搧绯诲垪")
+    private String productSeries;
+
+    /** 鎵爜瀵硅薄1 */
+    @Excel(name = "鎵爜瀵硅薄1")
+    private String scanObject1;
+
+    /** 鎵爜瀵硅薄2 */
+    @Excel(name = "鎵爜瀵硅薄2")
+    private String scanObject2;
+
+    /** 杞村悕绉� */
+    @Excel(name = "杞村悕绉�")
+    private String axisName;
+
+    /** 棰堝悕绉� */
+    @Excel(name = "棰堝悕绉�")
+    private String neckName;
+
+    /** 鐡﹀悕绉� */
+    @Excel(name = "鐡﹀悕绉�")
+    private String tileName;
+
+    /** 杞村弬鏁版暟浣嶇疆 */
+    @Excel(name = "杞村弬鏁版暟浣嶇疆")
+    private Long axisParameterNoPosition;
+
+    /** 棰堝弬鏁版暟浣嶇疆 */
+    @Excel(name = "棰堝弬鏁版暟浣嶇疆")
+    private Long neckParameterPosition;
+
+    /** 杞村�� */
+    @Excel(name = "杞村��")
+    private String axisValue;
+
+    /** 棰堝�� */
+    @Excel(name = "棰堝��")
+    private String neckValue;
+
+    /** 鐡﹂鑹� */
+    @Excel(name = "鐡﹂鑹�")
+    private String tileColor;
+
+    /** 鍒涘缓鐢ㄦ埛 */
+    @Excel(name = "鍒涘缓鐢ㄦ埛")
+    private String createUser;
+
+    /** 鏇存敼鐢ㄦ埛 */
+    @Excel(name = "鏇存敼鐢ㄦ埛")
+    private String updateUser;
+
+    /** 鐘舵�侊紙1鍚堟牸銆�2涓嶅悎鏍硷級 */
+    @Excel(name = "鐘舵��", readConverterExp = "1=鍚堟牸銆�2涓嶅悎鏍�")
+    private String state;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProductSeries(String productSeries) 
+    {
+        this.productSeries = productSeries;
+    }
+
+    public String getProductSeries() 
+    {
+        return productSeries;
+    }
+    public void setScanObject1(String scanObject1) 
+    {
+        this.scanObject1 = scanObject1;
+    }
+
+    public String getScanObject1() 
+    {
+        return scanObject1;
+    }
+    public void setScanObject2(String scanObject2) 
+    {
+        this.scanObject2 = scanObject2;
+    }
+
+    public String getScanObject2() 
+    {
+        return scanObject2;
+    }
+    public void setAxisName(String axisName) 
+    {
+        this.axisName = axisName;
+    }
+
+    public String getAxisName() 
+    {
+        return axisName;
+    }
+    public void setNeckName(String neckName) 
+    {
+        this.neckName = neckName;
+    }
+
+    public String getNeckName() 
+    {
+        return neckName;
+    }
+    public void setTileName(String tileName) 
+    {
+        this.tileName = tileName;
+    }
+
+    public String getTileName() 
+    {
+        return tileName;
+    }
+    public void setAxisParameterNoPosition(Long axisParameterNoPosition) 
+    {
+        this.axisParameterNoPosition = axisParameterNoPosition;
+    }
+
+    public Long getAxisParameterNoPosition() 
+    {
+        return axisParameterNoPosition;
+    }
+    public void setNeckParameterPosition(Long neckParameterPosition) 
+    {
+        this.neckParameterPosition = neckParameterPosition;
+    }
+
+    public Long getNeckParameterPosition() 
+    {
+        return neckParameterPosition;
+    }
+    public void setAxisValue(String axisValue) 
+    {
+        this.axisValue = axisValue;
+    }
+
+    public String getAxisValue() 
+    {
+        return axisValue;
+    }
+    public void setNeckValue(String neckValue) 
+    {
+        this.neckValue = neckValue;
+    }
+
+    public String getNeckValue() 
+    {
+        return neckValue;
+    }
+    public void setTileColor(String tileColor) 
+    {
+        this.tileColor = tileColor;
+    }
+
+    public String getTileColor() 
+    {
+        return tileColor;
+    }
+    public void setCreateUser(String createUser) 
+    {
+        this.createUser = createUser;
+    }
+
+    public String getCreateUser() 
+    {
+        return createUser;
+    }
+    public void setUpdateUser(String updateUser) 
+    {
+        this.updateUser = updateUser;
+    }
+
+    public String getUpdateUser() 
+    {
+        return updateUser;
+    }
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("productSeries", getProductSeries())
+            .append("scanObject1", getScanObject1())
+            .append("scanObject2", getScanObject2())
+            .append("axisName", getAxisName())
+            .append("neckName", getNeckName())
+            .append("tileName", getTileName())
+            .append("axisParameterNoPosition", getAxisParameterNoPosition())
+            .append("neckParameterPosition", getNeckParameterPosition())
+            .append("axisValue", getAxisValue())
+            .append("neckValue", getNeckValue())
+            .append("tileColor", getTileColor())
+            .append("createUser", getCreateUser())
+            .append("createTime", getCreateTime())
+            .append("updateUser", getUpdateUser())
+            .append("updateTime", getUpdateTime())
+            .append("state", getState())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/mapper/DaTileMatchRulesMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/mapper/DaTileMatchRulesMapper.java
new file mode 100644
index 0000000..2a7e0bc
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/mapper/DaTileMatchRulesMapper.java
@@ -0,0 +1,61 @@
+package com.jcdm.main.da.tileMatchRules.mapper;
+
+import java.util.List;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+
+/**
+ * 閰嶇摝瑙勫垯Mapper鎺ュ彛
+ * 
+ * @author jiang
+ * @date 2024-01-24
+ */
+public interface DaTileMatchRulesMapper 
+{
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 閰嶇摝瑙勫垯
+     */
+    public DaTileMatchRules selectDaTileMatchRulesById(Long id);
+
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯鍒楄〃
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 閰嶇摝瑙勫垯闆嗗悎
+     */
+    public List<DaTileMatchRules> selectDaTileMatchRulesList(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 鏂板閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    public int insertDaTileMatchRules(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 淇敼閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    public int updateDaTileMatchRules(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 鍒犻櫎閰嶇摝瑙勫垯
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchRulesById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎閰嶇摝瑙勫垯
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchRulesByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/IDaTileMatchRulesService.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/IDaTileMatchRulesService.java
new file mode 100644
index 0000000..d09a8de
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/IDaTileMatchRulesService.java
@@ -0,0 +1,61 @@
+package com.jcdm.main.da.tileMatchRules.service;
+
+import java.util.List;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+
+/**
+ * 閰嶇摝瑙勫垯Service鎺ュ彛
+ * 
+ * @author jiang
+ * @date 2024-01-24
+ */
+public interface IDaTileMatchRulesService 
+{
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 閰嶇摝瑙勫垯
+     */
+    public DaTileMatchRules selectDaTileMatchRulesById(Long id);
+
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯鍒楄〃
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 閰嶇摝瑙勫垯闆嗗悎
+     */
+    public List<DaTileMatchRules> selectDaTileMatchRulesList(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 鏂板閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    public int insertDaTileMatchRules(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 淇敼閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    public int updateDaTileMatchRules(DaTileMatchRules daTileMatchRules);
+
+    /**
+     * 鎵归噺鍒犻櫎閰嶇摝瑙勫垯
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑閰嶇摝瑙勫垯涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchRulesByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎閰嶇摝瑙勫垯淇℃伅
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteDaTileMatchRulesById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java
new file mode 100644
index 0000000..7331e4b
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java
@@ -0,0 +1,96 @@
+package com.jcdm.main.da.tileMatchRules.service.impl;
+
+import java.util.List;
+import com.jcdm.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.jcdm.main.da.tileMatchRules.mapper.DaTileMatchRulesMapper;
+import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
+import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
+
+/**
+ * 閰嶇摝瑙勫垯Service涓氬姟灞傚鐞�
+ * 
+ * @author jiang
+ * @date 2024-01-24
+ */
+@Service
+public class DaTileMatchRulesServiceImpl implements IDaTileMatchRulesService 
+{
+    @Autowired
+    private DaTileMatchRulesMapper daTileMatchRulesMapper;
+
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 閰嶇摝瑙勫垯
+     */
+    @Override
+    public DaTileMatchRules selectDaTileMatchRulesById(Long id)
+    {
+        return daTileMatchRulesMapper.selectDaTileMatchRulesById(id);
+    }
+
+    /**
+     * 鏌ヨ閰嶇摝瑙勫垯鍒楄〃
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 閰嶇摝瑙勫垯
+     */
+    @Override
+    public List<DaTileMatchRules> selectDaTileMatchRulesList(DaTileMatchRules daTileMatchRules)
+    {
+        return daTileMatchRulesMapper.selectDaTileMatchRulesList(daTileMatchRules);
+    }
+
+    /**
+     * 鏂板閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDaTileMatchRules(DaTileMatchRules daTileMatchRules)
+    {
+        daTileMatchRules.setCreateTime(DateUtils.getNowDate());
+        return daTileMatchRulesMapper.insertDaTileMatchRules(daTileMatchRules);
+    }
+
+    /**
+     * 淇敼閰嶇摝瑙勫垯
+     * 
+     * @param daTileMatchRules 閰嶇摝瑙勫垯
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDaTileMatchRules(DaTileMatchRules daTileMatchRules)
+    {
+        daTileMatchRules.setUpdateTime(DateUtils.getNowDate());
+        return daTileMatchRulesMapper.updateDaTileMatchRules(daTileMatchRules);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎閰嶇摝瑙勫垯
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑閰嶇摝瑙勫垯涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTileMatchRulesByIds(Long[] ids)
+    {
+        return daTileMatchRulesMapper.deleteDaTileMatchRulesByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎閰嶇摝瑙勫垯淇℃伅
+     * 
+     * @param id 閰嶇摝瑙勫垯涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDaTileMatchRulesById(Long id)
+    {
+        return daTileMatchRulesMapper.deleteDaTileMatchRulesById(id);
+    }
+}
diff --git a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
index 39d1b06..6495b9d 100644
--- a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
+++ b/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">
diff --git a/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml b/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml
new file mode 100644
index 0000000..3de08c8
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/da/tileMatchRules/DaTileMatchRulesMapper.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jcdm.main.da.tileMatchRules.mapper.DaTileMatchRulesMapper">
+    
+    <resultMap type="DaTileMatchRules" id="DaTileMatchRulesResult">
+        <result property="id"    column="id"    />
+        <result property="productSeries"    column="product_series"    />
+        <result property="scanObject1"    column="scan_object1"    />
+        <result property="scanObject2"    column="scan_object2"    />
+        <result property="axisName"    column="axis_name"    />
+        <result property="neckName"    column="neck_name"    />
+        <result property="tileName"    column="tile_name"    />
+        <result property="axisParameterNoPosition"    column="axis_parameter_no_position"    />
+        <result property="neckParameterPosition"    column="neck_parameter_position"    />
+        <result property="axisValue"    column="axis_value"    />
+        <result property="neckValue"    column="neck_value"    />
+        <result property="tileColor"    column="tile_color"    />
+        <result property="createUser"    column="create_user"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateUser"    column="update_user"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="state"    column="state"    />
+    </resultMap>
+
+    <sql id="selectDaTileMatchRulesVo">
+        select id, product_series, scan_object1, scan_object2, axis_name, neck_name, tile_name, axis_parameter_no_position, neck_parameter_position, axis_value, neck_value, tile_color, create_user, create_time, update_user, update_time, state from da_tile_match_rules
+    </sql>
+
+    <select id="selectDaTileMatchRulesList" parameterType="DaTileMatchRules" resultMap="DaTileMatchRulesResult">
+        <include refid="selectDaTileMatchRulesVo"/>
+        <where>  
+            <if test="productSeries != null  and productSeries != ''"> and product_series = #{productSeries}</if>
+            <if test="scanObject1 != null  and scanObject1 != ''"> and scan_object1 = #{scanObject1}</if>
+            <if test="scanObject2 != null  and scanObject2 != ''"> and scan_object2 = #{scanObject2}</if>
+            <if test="axisName != null  and axisName != ''"> and axis_name like concat('%', #{axisName}, '%')</if>
+            <if test="neckName != null  and neckName != ''"> and neck_name like concat('%', #{neckName}, '%')</if>
+            <if test="tileName != null  and tileName != ''"> and tile_name like concat('%', #{tileName}, '%')</if>
+            <if test="axisParameterNoPosition != null "> and axis_parameter_no_position = #{axisParameterNoPosition}</if>
+            <if test="neckParameterPosition != null "> and neck_parameter_position = #{neckParameterPosition}</if>
+            <if test="axisValue != null  and axisValue != ''"> and axis_value = #{axisValue}</if>
+            <if test="neckValue != null  and neckValue != ''"> and neck_value = #{neckValue}</if>
+            <if test="tileColor != null  and tileColor != ''"> and tile_color = #{tileColor}</if>
+            <if test="createUser != null  and createUser != ''"> and create_user = #{createUser}</if>
+            <if test="updateUser != null  and updateUser != ''"> and update_user = #{updateUser}</if>
+            <if test="state != null  and state != ''"> and state = #{state}</if>
+        </where>
+    </select>
+    
+    <select id="selectDaTileMatchRulesById" parameterType="Long" resultMap="DaTileMatchRulesResult">
+        <include refid="selectDaTileMatchRulesVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDaTileMatchRules" parameterType="DaTileMatchRules" useGeneratedKeys="true" keyProperty="id">
+        insert into da_tile_match_rules
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="productSeries != null">product_series,</if>
+            <if test="scanObject1 != null">scan_object1,</if>
+            <if test="scanObject2 != null">scan_object2,</if>
+            <if test="axisName != null">axis_name,</if>
+            <if test="neckName != null">neck_name,</if>
+            <if test="tileName != null">tile_name,</if>
+            <if test="axisParameterNoPosition != null">axis_parameter_no_position,</if>
+            <if test="neckParameterPosition != null">neck_parameter_position,</if>
+            <if test="axisValue != null">axis_value,</if>
+            <if test="neckValue != null">neck_value,</if>
+            <if test="tileColor != null">tile_color,</if>
+            <if test="createUser != null">create_user,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateUser != null">update_user,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="state != null">state,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="productSeries != null">#{productSeries},</if>
+            <if test="scanObject1 != null">#{scanObject1},</if>
+            <if test="scanObject2 != null">#{scanObject2},</if>
+            <if test="axisName != null">#{axisName},</if>
+            <if test="neckName != null">#{neckName},</if>
+            <if test="tileName != null">#{tileName},</if>
+            <if test="axisParameterNoPosition != null">#{axisParameterNoPosition},</if>
+            <if test="neckParameterPosition != null">#{neckParameterPosition},</if>
+            <if test="axisValue != null">#{axisValue},</if>
+            <if test="neckValue != null">#{neckValue},</if>
+            <if test="tileColor != null">#{tileColor},</if>
+            <if test="createUser != null">#{createUser},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateUser != null">#{updateUser},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="state != null">#{state},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDaTileMatchRules" parameterType="DaTileMatchRules">
+        update da_tile_match_rules
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="productSeries != null">product_series = #{productSeries},</if>
+            <if test="scanObject1 != null">scan_object1 = #{scanObject1},</if>
+            <if test="scanObject2 != null">scan_object2 = #{scanObject2},</if>
+            <if test="axisName != null">axis_name = #{axisName},</if>
+            <if test="neckName != null">neck_name = #{neckName},</if>
+            <if test="tileName != null">tile_name = #{tileName},</if>
+            <if test="axisParameterNoPosition != null">axis_parameter_no_position = #{axisParameterNoPosition},</if>
+            <if test="neckParameterPosition != null">neck_parameter_position = #{neckParameterPosition},</if>
+            <if test="axisValue != null">axis_value = #{axisValue},</if>
+            <if test="neckValue != null">neck_value = #{neckValue},</if>
+            <if test="tileColor != null">tile_color = #{tileColor},</if>
+            <if test="createUser != null">create_user = #{createUser},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateUser != null">update_user = #{updateUser},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="state != null">state = #{state},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDaTileMatchRulesById" parameterType="Long">
+        delete from da_tile_match_rules where id = #{id}
+    </delete>
+
+    <delete id="deleteDaTileMatchRulesByIds" parameterType="String">
+        delete from da_tile_match_rules where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js b/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js
new file mode 100644
index 0000000..6baf4e4
--- /dev/null
+++ b/jcdm-ui/src/api/main/bs/tileMatchRules/tileMatchRules.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ閰嶇摝瑙勫垯鍒楄〃
+export function listTileMatchRules(query) {
+  return request({
+    url: '/da/tileMatchRules/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ閰嶇摝瑙勫垯璇︾粏
+export function getTileMatchRules(id) {
+  return request({
+    url: '/da/tileMatchRules/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板閰嶇摝瑙勫垯
+export function addTileMatchRules(data) {
+  return request({
+    url: '/da/tileMatchRules',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼閰嶇摝瑙勫垯
+export function updateTileMatchRules(data) {
+  return request({
+    url: '/da/tileMatchRules',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎閰嶇摝瑙勫垯
+export function delTileMatchRules(id) {
+  return request({
+    url: '/da/tileMatchRules/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js b/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
index ea0aaca..57673db 100644
--- a/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
+++ b/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({
diff --git a/jcdm-ui/src/views/dashboard/PanelGroup.vue b/jcdm-ui/src/views/dashboard/PanelGroup.vue
index dbeb718..5400808 100644
--- a/jcdm-ui/src/views/dashboard/PanelGroup.vue
+++ b/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>
diff --git a/jcdm-ui/src/views/index.vue b/jcdm-ui/src/views/index.vue
index 727f870..c0abca2 100644
--- a/jcdm-ui/src/views/index.vue
+++ b/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;
 
diff --git a/jcdm-ui/src/views/main/da/tileMatchRules/index.vue b/jcdm-ui/src/views/main/da/tileMatchRules/index.vue
new file mode 100644
index 0000000..7c97ea1
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/tileMatchRules/index.vue
@@ -0,0 +1,473 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form-item label="浜у搧绯诲垪" prop="productSeries">
+          <el-input
+            v-model="queryParams.productSeries"
+            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"
+            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"
+            placeholder="璇疯緭鍏ョ姸鎬�"
+            clearable
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+        <el-form-item style="float: right">
+          <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-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+      <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="['da:tileMatchRules: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="['da:tileMatchRules: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="['da:tileMatchRules: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="['da:tileMatchRules:export']"
+          >瀵煎嚭</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+
+      <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="浜у搧绯诲垪" align="center" prop="productSeries">
+
+        </el-table-column>
+        <el-table-column label="鎵爜瀵硅薄1" align="center" prop="scanObject1" width="100">
+
+        </el-table-column>
+        <el-table-column label="鎵爜瀵硅薄2" align="center" prop="scanObject2" width="100">
+
+        </el-table-column>
+        <el-table-column label="杞村悕绉�" align="center" prop="axisName">
+
+        </el-table-column>
+        <el-table-column label="棰堝悕绉�" align="center" prop="neckName">
+
+        </el-table-column>
+        <el-table-column label="鐡﹀悕绉�" align="center" prop="tileName">
+
+        </el-table-column>
+        <el-table-column label="杞村弬鏁颁綅缃�" align="center" prop="axisParameterNoPosition" width="100">
+
+        </el-table-column>
+        <el-table-column label="棰堝弬鏁颁綅缃�" align="center" prop="neckParameterPosition" width="100">
+
+        </el-table-column>
+        <el-table-column label="杞村��" align="center" prop="axisValue">
+
+        </el-table-column>
+        <el-table-column label="棰堝��" align="center" prop="neckValue">
+
+        </el-table-column>
+        <el-table-column label="鐡﹂鑹�" align="center" prop="tileColor">
+
+        </el-table-column>
+<!--        <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="state">
+
+        </el-table-column>
+        <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              type="success"
+              plain
+              style="width: 72px"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['da:tileMatchRules:edit']"
+            >淇敼</el-button>
+            <el-button
+              size="mini"
+              type="danger"
+              plain
+              style="width: 72px"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['da:tileMatchRules:remove']"
+            >鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀归厤鐡﹁鍒欏璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="浜у搧绯诲垪" prop="productSeries">
+          <el-input v-model="form.productSeries" placeholder="璇疯緭鍏ヤ骇鍝佺郴鍒�" />
+        </el-form-item>
+        <el-form-item label="鎵爜瀵硅薄1" prop="scanObject1">
+          <el-input v-model="form.scanObject1" placeholder="璇疯緭鍏ユ壂鐮佸璞�1" />
+        </el-form-item>
+        <el-form-item label="鎵爜瀵硅薄2" prop="scanObject2">
+          <el-input v-model="form.scanObject2" placeholder="璇疯緭鍏ユ壂鐮佸璞�2" />
+        </el-form-item>
+        <el-form-item label="杞村悕绉�" prop="axisName">
+          <el-input v-model="form.axisName" placeholder="璇疯緭鍏ヨ酱鍚嶇О" />
+        </el-form-item>
+        <el-form-item label="棰堝悕绉�" prop="neckName">
+          <el-input v-model="form.neckName" placeholder="璇疯緭鍏ラ鍚嶇О" />
+        </el-form-item>
+        <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>
+        <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="璇疯緭鍏ヨ酱鍊�" />
+        </el-form-item>
+        <el-form-item label="棰堝��" prop="neckValue">
+          <el-input v-model="form.neckValue" placeholder="璇疯緭鍏ラ鍊�" />
+        </el-form-item>
+        <el-form-item label="鐡﹂鑹�" prop="tileColor">
+          <el-input v-model="form.tileColor" placeholder="璇疯緭鍏ョ摝棰滆壊" />
+        </el-form-item>
+        <el-form-item label="鍒涘缓鐢ㄦ埛" prop="createUser">
+          <el-input v-model="form.createUser" placeholder="璇疯緭鍏ュ垱寤虹敤鎴�" />
+        </el-form-item>
+        <el-form-item label="鏇存敼鐢ㄦ埛" prop="updateUser">
+          <el-input v-model="form.updateUser" placeholder="璇疯緭鍏ユ洿鏀圭敤鎴�" />
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="state">
+          <el-input v-model="form.state" placeholder="璇疯緭鍏ョ姸鎬�" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules";
+
+export default {
+  name: "TileMatchRules",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 閰嶇摝瑙勫垯琛ㄦ牸鏁版嵁
+      tileMatchRulesList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        productSeries: null,
+        scanObject1: null,
+        scanObject2: null,
+        axisName: null,
+        neckName: null,
+        tileName: null,
+        axisParameterNoPosition: null,
+        neckParameterPosition: null,
+        axisValue: null,
+        neckValue: null,
+        tileColor: null,
+        createUser: null,
+        updateUser: null,
+        state: null
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ閰嶇摝瑙勫垯鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listTileMatchRules(this.queryParams).then(response => {
+        this.tileMatchRulesList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        productSeries: null,
+        scanObject1: null,
+        scanObject2: null,
+        axisName: null,
+        neckName: null,
+        tileName: null,
+        axisParameterNoPosition: null,
+        neckParameterPosition: null,
+        axisValue: null,
+        neckValue: null,
+        tileColor: null,
+        createUser: null,
+        createTime: null,
+        updateUser: null,
+        updateTime: null,
+        state: null
+      };
+      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.titleName = "娣诲姞閰嶇摝瑙勫垯";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTileMatchRules(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼閰嶇摝瑙勫垯";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateTileMatchRules(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTileMatchRules(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎閰嶇摝瑙勫垯缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+        return delTileMatchRules(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('da/tileMatchRules/export', {
+        ...this.queryParams
+      }, `tileMatchRules_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3