Sfoglia il codice sorgente

柯赛看板调整--增加各车间进度

xiaost 7 mesi fa
parent
commit
1427b96054

+ 8 - 4
src/assets/scss/indexcompare.scss

@@ -125,15 +125,19 @@
 
     .body-box {
       margin-top: 10px;
-      display: flex;
-      flex-direction: column;
+      display: grid;
+      grid-template-columns: 1fr 1fr;
+      .left-box {
+        display: flex;
+        flex-direction: column;
+      }
 
       //下方区域的布局
      /* .content-box {
         display: grid;
         grid-template-columns: 1.5fr 1.3fr 1.2fr;
       }*/
-      .content-box {
+     /* .content-box {
         display: grid;
         grid-template-columns:  1.2fr 1.1fr 1fr;
       }
@@ -143,7 +147,7 @@
        // margin-top: 10px;
         display: grid;
         grid-template-columns: 1fr ;
-      }
+      }*/
     }
   }
 }

+ 184 - 0
src/components/comparechart/leftdown1Chart/chart.vue

@@ -0,0 +1,184 @@
+<template>
+  <div>
+    <!-- 当日工段投产良率 -->
+    <Echart
+        :options="options"
+        id="leftdown1Chart"
+        height="400px"
+        width="100%"
+        ref="column-board"
+    ></Echart>
+  </div>
+</template>
+
+<script>
+import Echart from '@/common/echart'
+export default {
+  data () {
+    return {
+      options:{
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          }
+        },
+        legend: {
+          textStyle: {
+            fontSize: 18
+          },
+          itemWidth: 29,
+          itemHeight: 19
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        xAxis: [
+          {
+            type: 'category',
+            data:[],
+            axisLabel: {
+              fontSize: 16,
+              fontWeight: "bold"
+            }
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+          },
+          {
+            type: 'value',
+            name: '',
+            min: 0,
+            max: 100,
+            interval: 20,
+            axisLabel: {
+              formatter: '{value}%',
+              fontSize: 16
+            },
+            nameTextStyle: {
+              fontSize: 20
+            },
+          }
+        ],
+        series: [
+          {
+            name: '已保养',
+            type: 'bar',
+            barWidth: 20,
+            stack: 'Ad',
+            emphasis: {
+              focus: 'series'
+            },
+            data:[],
+            itemStyle: {
+              color: '#9FE6B8'  //fac858
+            },
+          },
+          {
+            name: '未保养',
+            type: 'bar',
+            stack: 'Ad',
+            barWidth: 10,
+            data:[],
+            emphasis: {
+              focus: 'series'
+            },
+            itemStyle: {
+              color: '#FFE900'  //fac858
+            },
+
+          },
+          {
+            name: '完成比例%',
+            type: 'line',
+            data:[],
+            yAxisIndex: 1,
+            tooltip: {
+              valueFormatter: function (value) {
+                return value + '%';
+              }
+            },
+            itemStyle: {
+              normal: {
+                barBorderRadius: 5,
+                color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  { offset: 0, color: "rgba(0,161,26,0.8)" },
+                  { offset: 0.2, color: "rgba(0,161,26,0.5)" },
+                  { offset: 1, color: "rgba(0,161,26,0.2)" }
+                ])
+              }
+            },
+            emphasis: {
+              focus: 'series'
+            }
+          }
+        ]
+      },
+    };
+  },
+  components: {
+    Echart, //子组件
+  },
+  props: {
+    cdata: {
+      type: Object,
+      default: () => ({})
+    },
+  },
+
+  mounted() {
+    this.getdata();
+    this.refreshdata();
+  },
+  methods: {
+    refreshdata() {
+      setInterval(() => {
+        this.getdata(); //获取-数据
+      }, 10000);
+    },
+    async getdata() {
+      this.options.xAxis[0].data = [];
+      this.options.series[0].data = [];
+      this.options.series[1].data =[];
+      this.options.series[2].data = [];
+
+      await this.$http.get("kanban/datalist.action?caller=KB!ALLWC!DEVICEDATA&_noc=1&page=1&pageSize=100&condition=1=1")
+          .then((result)=>{
+                let dataList = JSON.parse(result.data.data);
+                let xAxis0 = new Array();
+                let series0 = new Array();
+                let series1 = new Array();
+                let series2 = new Array();
+                for (let index = 0; index < dataList.length; index++) {
+                  const element = dataList[index];
+                  //车间
+                  xAxis0.push(element.v_wccode);
+                  /*if(index%2 == 0) {
+                    xAxis0.push(element.v_wccode);
+                  }else{
+                    xAxis0.push('\n'+element.v_wccode);
+                  }*/
+                  //已保养
+                  series0.push(element.v_havebyqty);
+                  //未保养
+                  series1.push(element.v_unbyqty);
+                  //完成比例
+                  series2.push(element.v_okrate);
+                }
+                this.options.xAxis[0].data = xAxis0;
+                this.options.series[0].data = series0;
+                this.options.series[1].data = series1;
+                this.options.series[2].data = series2;
+              },(result)=>{
+                console.error(result)
+              }
+          );
+    }
+  }
+}
+</script>

+ 40 - 0
src/components/comparechart/leftdown1Chart/index.vue

@@ -0,0 +1,40 @@
+<template>
+  <div>
+    <Chart :cdata="cdata" />
+  </div>
+</template>
+
+<script>
+import Chart from './chart.vue'
+export default {
+  data () {
+    return {
+      cdata: {
+        rateData:[
+        ]
+      }
+    };
+  },
+  components: {
+    Chart,
+  },
+  mounted () {
+
+  },
+  beforeDestroy () {
+    clearInterval(this.timing);
+    clearInterval(this.drawTiming);
+    clearInterval(this.intervalId);
+    this.chart.dispose()
+    this.chart.clear()
+    this.chart=null
+  },
+  methods: {
+    // 根据自己的业务情况修改
+
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 72 - 89
src/components/comparechart/bottom1Chart/chart.vue → src/components/comparechart/leftup1Chart/chart.vue

@@ -1,9 +1,10 @@
 <template>
   <div>
+    <!-- 年度开工率 -->
     <Echart
         :options="options"
-        id="bottom1Chart"
-        height="265px"
+        id="leftup1Chart"
+        height="400px"
         width="100%"
         ref="column-board"
     ></Echart>
@@ -12,11 +13,10 @@
 
 <script>
 import Echart from '@/common/echart'
-//import { formatDate } from '../../../../utils/index.js'
 export default {
   data () {
     return {
-      timing :null,
+      timing: null,
       options:{
         tooltip: {
           trigger: 'axis',
@@ -56,7 +56,7 @@ export default {
           },
           {
             type: 'value',
-            /*name: 'rate',*/
+            name: '',
             min: 0,
             max: 100,
             interval: 20,
@@ -72,9 +72,9 @@ export default {
         ],
         series: [
           {
-            name: '投入',
+            name: '计划数',
             type: 'bar',
-            barWidth: 20,
+            barWidth: 25,
             emphasis: {
               focus: 'series'
             },
@@ -84,14 +84,13 @@ export default {
               position: 'top',
               fontSize:14,
               fontWeight: "bold",
-              color:"inherit",
-              //color:'#2d8cf0',
+              color:  "inherit"
             },
           },
           {
-            name: '产出',
+            name: '达成数',
             type: 'bar',
-            barWidth: 20,
+            barWidth: 25,
             stack: 'Ad',
             emphasis: {
               focus: 'series'
@@ -99,63 +98,46 @@ export default {
             data:[],
             label: {
               show: true,
-              position: 'top',
+              position: 'inside',
               fontSize:14,
               fontWeight: "bold",
-              color:"inherit",
-             // color:'#19be6b',
+              color:'#fff'
             },
           },
           {
             name: '不良',
             type: 'bar',
             stack: 'Ad',
-            barWidth: 20,
+            barWidth: 25,
             data:[],
-            //data: [12, 22, 32, 12, 32, 12, 32],
             emphasis: {
               focus: 'series'
             },
-          },
-          {
-            name: 'UPPH',
-            type: 'bar',
-            barWidth: 20,
-            emphasis: {
-              focus: 'series'
-            },
-            data:[],
             label: {
-              show: true,
+              show: false,
               position: 'top',
               fontSize:14,
-              fontWeight: "bold",
-              color: "#ea7ccc",
+              color:  "inherit"
             },
           },
           {
-            name: '率%',
+            name: '计划达成率%',
             type: 'line',
             data:[],
             yAxisIndex: 1,
-            symbolSize: 4,
-            label: {
-              show: true,
-              position: 'top',
-              color:'#fff'
-            },
+            symbolSize: 8,
             tooltip: {
               valueFormatter: function (value) {
                 return value + '%';
               }
             },
             lineStyle: {
-              width: 3
+              width: 4
             },
             itemStyle: {
               normal: {
                 barBorderRadius: 6,
-                color:  "rgb(59, 162, 114)"
+                color:  "rgba(156,107,211,0.8)"
                 /* color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                    { offset: 0, color: "rgba(156,107,211,0.8)" },
                    { offset: 0.2, color: "rgba(156,107,211,0.5)" },
@@ -165,38 +147,46 @@ export default {
             },
             emphasis: {
               focus: 'series'
-            }
+            },
+            label: {
+              show: true,
+              position: 'top',
+              fontSize:14,
+              fontWeight: "bold",
+              color:'#fff'
+            },
           },
           {
-            name: 'UPH',
+            name: '良率%',
             type: 'line',
+            symbolSize: 8,
             barWidth: 15,
             data:[],
-            //data: [12, 22, 32, 12, 32, 12, 32],
             emphasis: {
               focus: 'series'
-            },lineStyle: {
-              width: 3
             },
-           /* label: {
-              show: true,
-              position: 'top',
-              fontSize:14,
-              fontWeight: "bold",
-              color: "#ea7ccc",
-            },*/
+            lineStyle: {
+              width: 4
+            },
             itemStyle: {
               normal: {
                 barBorderRadius: 6,
-                color: "#ea7ccc",
+                color:  "rgb(174,228,187)"
                 /* color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                    { offset: 0, color: "rgba(156,107,211,0.8)" },
                    { offset: 0.2, color: "rgba(156,107,211,0.5)" },
                    { offset: 1, color: "rgba(156,107,211,0.2)" }
                  ])*/
               }
+            },
+            label: {
+              show: true,
+              position: 'top',
+              fontSize:14,
+              fontWeight: "bold",
+              color:'#fff'
             }
-          },
+          }
         ]
       },
     };
@@ -212,7 +202,6 @@ export default {
   },
 
   mounted() {
-    this.getdata();
     this.refreshdata();
   },
   beforeDestroy () {
@@ -220,15 +209,16 @@ export default {
   },
   methods: {
     refreshdata() {
+      this.getdata();
       this.timing = setInterval(() => {
         this.getdata(); //获取-数据
       }, 30000);
     },
     async getdata() {
-      var caller = 'KB!LongLineHourQTY';
+      var caller = 'KB!ALLWC!MAKEDETAIL';
       await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
         params: {
-          condition:  "V_OUTLINE='"+sessionStorage.getItem('ul_code')+"'",
+          condition: "1=1",
         }
       }).then((result)=>{
             let dataList = JSON.parse(result.data.data);
@@ -238,41 +228,34 @@ export default {
             let series2 = new Array();
             let series3 = new Array();
             let series4 = new Array();
-            let series5 = new Array();
-        var maxnumber=0;
-        for (let index = 0; index < dataList.length; index++) {
-          const element = dataList[index];
-          xAxis0.push(element.v_period);
-          //投入
-          series0.push(element.v_inqty);
-          if(element.v_inqty>maxnumber){
-            maxnumber= element.v_inqty;
-          }
-          //产出
-          series1.push(element.v_outqty);
-          if(element.v_outqty>maxnumber){
-            maxnumber= element.v_outqty;
-          }
-          //不良
-          series2.push(element.v_ngqty);
-          //upph
-          series3.push(element.upph);
-          //良率
-          series4.push(element.v_okrate);
-          //UPH
-          series5.push(element.uph);
-          if(element.uph>maxnumber){
-            maxnumber= element.uph;
-          }
-        }
-        this.options.xAxis[0].data = xAxis0;
-        this.options.series[0].data = series0;
-        this.options.series[1].data = series1;
-        this.options.series[2].data = series2;
-        this.options.series[3].data = series3;
-        this.options.series[4].data = series4;
-        this.options.series[5].data = series5;
-        this.options.yAxis[0].max = (maxnumber*1.2).toFixed();
+            var maxnumber=0;
+            for (let index = 0; index < dataList.length; index++) {
+              const element = dataList[index];
+              xAxis0.push(element.v_wccode);
+              //计划数
+              series0.push(element.v_planqty);
+              if(element.v_planqty>maxnumber){
+                maxnumber= element.v_planqty;
+              }
+              //达成数
+              series1.push(element.v_outqty);
+              if(element.v_outqty>maxnumber){
+                maxnumber= element.v_outqty;
+              }
+              //不良
+              series2.push(element.v_ngqty);
+              //计划达成率
+              series3.push(element.v_finishrate);
+              //良率
+              series4.push(element.v_okrate);
+            }
+            this.options.xAxis[0].data = xAxis0;
+            this.options.series[0].data = series0;
+            this.options.series[1].data = series1;
+            this.options.series[2].data = series2;
+            this.options.series[3].data = series3;
+            this.options.series[4].data = series4;
+            this.options.yAxis[0].max = (maxnumber*1.2).toFixed();
           },(result)=>{
             console.error(result)
           }

+ 1 - 4
src/components/comparechart/bottom1Chart/index.vue → src/components/comparechart/leftup1Chart/index.vue

@@ -30,10 +30,7 @@ export default {
   methods: {
     // 根据自己的业务情况修改
     setData () {
-      for (let i = 0; i < this.cdata.barData.length -1; i++) {
-        let rate = this.cdata.barData[i] / this.cdata.lineData[i];
-        this.cdata.rateData.push(rate.toFixed(2));
-      }
+
     },
   }
 };

+ 0 - 106
src/components/comparechart/up2Chart/index.vue

@@ -1,106 +0,0 @@
-<template>
-    <div>
-        <Echart
-                :options="options"
-                id="up2Chart"
-                height="300px"
-                width="100%"
-        ></Echart>
-    </div>
-</template>
-
-<script>
-    import Echart from '@/common/echart'
-    export default {
-        data() {
-            return {
-                options: {},
-                // 定义颜色
-            }
-        },
-        components: {
-            Echart
-        },
-        props: {
-          bardata: {
-                type: Object,
-                default: () => ({})
-            }
-        },
-        watch: {
-          bardata: {
-                handler(newData) {
-                    this.options = {
-                      tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                          type: 'shadow'
-                        }
-                      },
-                      legend: {
-                        bottom: "90%",
-                        textStyle: {
-                          fontSize: 20
-                        }
-                      },
-                      grid: {
-                          left: '3%',
-                          right: '4%',
-                          bottom: 20,
-                          containLabel: true
-                      },
-                      xAxis: {
-                          type: 'value',
-                          max: newData.max
-                      },
-                      // 下方Y轴
-                      yAxis: {
-                          type:'category',
-                          data:newData.yAxis,
-                          axisLabel: {
-                            fontSize: 25,
-                           // fontWeight: "bold"
-                          }
-                      },
-                      series: [
-                          {
-                              name: '计划数',
-                              type: 'bar',
-                              data: newData.planData,
-                              label: {
-                                show: true,
-                                position: 'right',
-                                fontSize:16,
-                                fontWeight: "bold",
-                                color:  "inherit"
-                              },
-                            barWidth: 16,
-                            itemStyle: {
-                              color: "#ABA5FC"
-                            },
-                          },
-                          {
-                            name: '实际数',
-                            type: 'bar',
-                            data: newData.actData,
-                            label: {
-                              show: true,
-                              position: 'right',
-                              fontSize:16,
-                              fontWeight: "bold",
-                              color:  "inherit"
-                            },
-                            barWidth: 16,
-                            itemStyle: {
-                              color: "#8CF9B8"
-                            },
-                          }
-                      ]
-                    }
-                },
-                immediate: true,
-                deep: true
-            }
-        }
-    }
-</script>

+ 0 - 89
src/components/comparechart/up3Chart/chart.vue

@@ -1,89 +0,0 @@
-<template>
-  <div>
-    <Echart
-      :options="options"
-      id="up3Chart"
-      height="325px"
-      width="100%"
-    ></Echart>
-  </div>
-</template>
-
-<script>
-import Echart from '@/common/echart'
-export default {
-  data () {
-    return {
-      options: {},
-    };
-  },
-  components: {
-    Echart,
-  },
-  props: {
-    cdata: {
-      type: Object,
-      default: () => ({})
-    },
-  },
-  watch: {
-    cdata: {
-      handler (newData) {
-        this.options = {
-          color:newData.color,
-          tooltip: {
-            trigger: "item",
-            formatter: "{b} : {c} ({d}%)"
-          },
-          toolbox: {
-            show: true
-          },
-          calculable: true,
-          legend: {
-            orient: "vertical",
-            icon: "circle",
-           // right: 0,
-           // top: 10,
-            bottom: 20,
-            left: "center",
-            x: "center",
-            data: newData.cdata,
-            textStyle: {
-              color: "#fff",
-              fontSize: 16
-            },
-          },
-          series: [
-            {
-              type: "pie",
-              radius: [15, 60],
-              roseType: "area",
-              center: ["48%", "35%"],
-              data: newData.seriesData,
-              label: {
-                fontSize: 13,
-                width: 120,
-                color:"inherit",
-                show:newData.labelShow,
-              /*  formatter:function(param){
-                  let text = param.data.name;
-                  if (text.length < 8) {
-                    return text ;
-                  } else {
-                    return text.substring(0, 8) + '...' ;
-                  }
-                },*/
-              },
-            }
-          ]
-        }
-      },
-      immediate: true,
-      deep: true
-    }
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-</style>

+ 0 - 110
src/components/comparechart/up3Chart/index.vue

@@ -1,110 +0,0 @@
-<template>
-  <div>
-    <Chart :cdata="cdata" />
-  </div>
-</template>
-
-<script>
-import Chart from './chart.vue';
-import {mapState} from "vuex";
-
-export default {
-  computed: {
-    ...mapState(['factory']),
-  },
-  data () {
-    return {
-      timing :null,
-      color1: [
-        "#f65e2b",
-        "#fb7293",
-        "#f85179",
-        "#f1305e",
-        "#fa0640",
-        "#d5093a",
-        "#ab032d"
-      ],
-      color2:[ "#8CF9B8"],
-      cdata: {
-        xData:[],
-        seriesData:[],
-        labelShow:true,
-        color:this.color1
-      }
-    }
-  },
-  components: {
-    Chart,
-  },
-  mounted () {
-    this.getdata();
-    this.refreshdata();
-  },
-  beforeDestroy () {
-    clearInterval(this.timing);
-    this.chart.dispose()
-    this.chart.clear()
-    this.chart=null
-  },
-  methods: {
-    refreshdata() {
-      this.timing = setInterval(() => {
-        this.getdata(); //获取-数据
-      }, 10000);
-    },
-    async getdata() {
-      //20220211 -+formatDate(new Date()
-      var caller = 'KB!ZZTopFiveBad';
-      await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",
-              {
-                params: {
-                  condition: "1=1"
-                }
-              }).then((result)=>{
-                        let dataList = JSON.parse(result.data.data);
-                        let xData0 = new Array();
-                        let seriesData0 = new Array();
-                        let sum1 = 0;
-                        let totalsum = 0;
-                        for (let index = 0; index < dataList.length; index++) {
-                          const element = dataList[index];
-                          let ob = new Object();
-                          xData0.push(element.mb_badname);
-                          ob.value = element.v_cn;
-                          ob.name = element.mb_badname;
-                          seriesData0.push(ob);
-                          sum1 +=element.v_cn;
-                          totalsum = element.v_sum;
-                        }
-                        if(totalsum-sum1>0){
-                           xData0.push('其它');
-                           let ob = new Object();
-                           ob.value = totalsum-sum1;
-                           ob.name = '其它'||totalsum-sum1||'pcs';
-                           seriesData0.push(ob);
-                       }
-                        if(totalsum == 0){
-                          xData0.push('今日无不良现象');
-                          let ob = new Object();
-                          ob.value = 100;
-                          ob.name = '今日无不良现象';
-                          seriesData0.push(ob);
-                          this.cdata.labelShow = false;
-                          this.cdata.color = this.color2;
-                        }else{
-                          this.cdata.labelShow = true;
-                          this.cdata.color = this.color1;
-                        }
-                       this.cdata.xData = xData0;
-                       this.cdata.seriesData = seriesData0;
-                      },(result)=>{
-                        console.error(result)
-                      }
-              );
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-</style>

+ 21 - 27
src/views/compare/index.vue

@@ -42,13 +42,14 @@
               <span class="react-after"></span>
               <el-dropdown class="dropdown">
                 <span class="el-dropdown-link" ref="echarType">
-                  组装看板<i class="el-icon-arrow-down el-icon--right"></i>&nbsp;&nbsp;&nbsp;&nbsp;
+                  各车间进度<i class="el-icon-arrow-down el-icon--right"></i>&nbsp;&nbsp;&nbsp;&nbsp;
                 </span>
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item class="dropdownitem"><router-link to="total">总看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="prodline">车间看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="quality">品质看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
                  </el-dropdown-menu>
               </el-dropdown>
               <span class="text">&nbsp;&nbsp;&nbsp;&nbsp;</span>
@@ -58,29 +59,24 @@
         </div>
 
         <div class="body-box">
-          <!-- 上面 -->
-          <div class="content-box">
-              <div>
-                <dv-border-box-12 >
-                  <up2 />
-                </dv-border-box-12>
-              </div>
-              <div>
-                <dv-border-box-12>
-                  <up3 />
-                </dv-border-box-12>
-              </div>
+          <div class="left-box">
             <div>
-              <dv-border-box-12>
-                <up4 />
+              <dv-border-box-12 >
+                <leftup1/>
+              </dv-border-box-12>
+            </div>
+            <div>
+              <dv-border-box-12 >
+                <leftdown1/>
               </dv-border-box-12>
             </div>
           </div>
-          <!-- 下面 -->
-          <div class="bottom-box">
-              <dv-border-box-12>
-                <bottom1 />
+          <div class="right-box">
+            <div>
+              <dv-border-box-12 >
+                <right/>
               </dv-border-box-12>
+            </div>
           </div>
         </div>
       </div>
@@ -92,10 +88,9 @@
 import drawMixin from "../../utils/drawMixin";
 import  common  from '../../utils/common';
 import {formatTime} from '../../utils/index.js'
-import up2 from './up2'
-import up3 from './up3.vue'
-import up4 from './up4.vue'
-import bottom1 from './bottom1.vue'
+import leftup1 from './left-up1.vue'
+import leftdown1 from './left-down1.vue'
+import right from './right.vue'
 import {mapMutations, mapState} from "vuex"
 
 export default {
@@ -117,10 +112,9 @@ export default {
     }
   },
   components: {
-    up2,
-    up3,
-    up4,
-    bottom1
+    right,
+    leftdown1,
+    leftup1
   },
   created() {
      this.isFullScreen = document.fullscreenElement;

+ 106 - 0
src/views/compare/left-down1.vue

@@ -0,0 +1,106 @@
+<template>
+  <div id="left-down1">
+    <div class="bg-color-black">
+      <div class="d-flex pt-1 pl-2 jc-center">
+        <span class="text mx-2 fw-b">设备保养执行情况</span>
+      </div>
+      <div class="body-box">
+        <div class="pt-2 chart-container" ref="chartContainer">
+          <LeftDown1Chart />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import LeftDown1Chart from "../../components/comparechart/leftdown1Chart";
+import {mapState} from "vuex";
+import { debounce } from 'lodash';
+
+export default {
+  components: {
+    LeftDown1Chart
+  },
+  computed: {
+    ...mapState(['user','factoryoptions','factory']),
+  },
+  data() {
+    return {
+      timing: null,
+      chartKey: 0, // 用于强制重新渲染图表
+      resizeObserver: null
+    }
+  },
+  mounted() {
+    this.initResizeObserver();
+  },
+  beforeDestroy() {
+    this.cleanup();
+  },
+  methods: {
+    cleanup() {
+      clearInterval(this.timing);
+      if (this.resizeObserver) {
+        this.resizeObserver.disconnect();
+        this.resizeObserver = null;
+      }
+    },
+
+    initResizeObserver() {
+      // 使用防抖函数避免频繁触发
+      const resizeHandler = debounce(() => {
+        this.chartKey += 1; // 强制重新渲染图表
+      }, 300);
+
+      this.resizeObserver = new ResizeObserver(resizeHandler);
+      if (this.$refs.chartContainer) {
+        this.resizeObserver.observe(this.$refs.chartContainer);
+      }
+    },
+
+    refreshdata() {
+
+    },
+
+    async getdata() {
+
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+$box-height: 475px;
+$box-width: 100%;
+#left-down1 {
+  padding: 13px;
+  height: $box-height;
+  width: $box-width;
+  border-radius: 5px;
+
+  .bg-color-black {
+    height: $box-height - 25px;
+    border-radius: 10px;
+    padding: 5px;
+    display: flex;
+    flex-direction: column;
+  }
+  .text {
+    color: #c3cbde;
+    font-size: 25px;
+  }
+  .body-box {
+    border-radius: 10px;
+    overflow: hidden;
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+
+    .chart-container {
+      flex: 1;
+      min-height: 0; // 修复flex布局中的尺寸问题
+    }
+  }
+}
+</style>

+ 106 - 0
src/views/compare/left-up1.vue

@@ -0,0 +1,106 @@
+<template>
+  <div id="left-up1">
+    <div class="bg-color-black">
+      <div class="d-flex pt-1 pl-2 jc-center">
+        <span class=" text mx-2 fw-b">当日生产明细</span>
+      </div>
+      <div class="body-box">
+        <div class="pt-2 chart-container" ref="chartContainer">
+          <LeftUp1Chart />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import LeftUp1Chart from "../../components/comparechart/leftup1Chart";
+import {mapState} from "vuex";
+import { debounce } from 'lodash';
+
+export default {
+  components: {
+    LeftUp1Chart
+  },
+  computed: {
+    ...mapState(['user','factoryoptions','factory']),
+  },
+  data() {
+    return {
+      timing: null,
+      chartKey: 0, // 用于强制重新渲染图表
+      resizeObserver: null
+    }
+  },
+  mounted() {
+    this.initResizeObserver();
+  },
+  beforeDestroy() {
+    this.cleanup();
+  },
+  methods: {
+    cleanup() {
+      clearInterval(this.timing);
+      if (this.resizeObserver) {
+        this.resizeObserver.disconnect();
+        this.resizeObserver = null;
+      }
+    },
+
+    initResizeObserver() {
+      // 使用防抖函数避免频繁触发
+      const resizeHandler = debounce(() => {
+        this.chartKey += 1; // 强制重新渲染图表
+      }, 300);
+
+      this.resizeObserver = new ResizeObserver(resizeHandler);
+      if (this.$refs.chartContainer) {
+        this.resizeObserver.observe(this.$refs.chartContainer);
+      }
+    },
+
+    refreshdata() {
+
+    },
+
+    async getdata() {
+
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+$box-height: 475px;
+$box-width: 100%;
+#left-up1 {
+  padding: 13px;
+  height: $box-height;
+  width: $box-width;
+  border-radius: 5px;
+
+  .bg-color-black {
+    height: $box-height - 25px;
+    border-radius: 10px;
+    padding: 5px;
+    display: flex;
+    flex-direction: column;
+  }
+  .text {
+    color: #c3cbde;
+    font-size: 25px;
+  }
+  .body-box {
+    border-radius: 10px;
+    overflow: hidden;
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+
+    .chart-container {
+      flex: 1;
+      min-height: 0; // 修复flex布局中的尺寸问题
+    }
+  }
+}
+</style>

+ 40 - 53
src/views/compare/bottom1.vue → src/views/compare/right.vue

@@ -1,16 +1,18 @@
 <template>
-  <div id="production-plan" class="plan-container">
-    <div class="plan-header">
-      <div class="header-content">
-        <span class="header-title">产线计划</span>
+  <div id="right" >
+    <div class="bg-color-black">
+      <div class="plan-header">
+        <div class="d-flex pt-1 pl-2 jc-center">
+          <span class="text mx-2 fw-b">各车间达成进度</span>
+        </div>
+      </div>
+      <div class="plan-body">
+        <dv-scroll-board
+            :config="config"
+            ref="scrollBoard"
+            class="scroll-board"
+        />
       </div>
-    </div>
-    <div class="plan-body">
-      <dv-scroll-board
-          :config="config"
-          ref="scrollBoard"
-          class="scroll-board"
-      />
     </div>
   </div>
 </template>
@@ -21,18 +23,18 @@ export default {
   data() {
     return {
       config: {
-        header: ['线别', '销售工单', '业务员', '产品名称', '订单数', '备料状态', '计划完成数量', '完成数量', '完成进度', '提醒事项', '异常事项'],
+        header: ['车间', '计划数', '完成数', '达成比例%'],
         data: [],
-        rowNum: 9,
+        rowNum: 20,
         headerHeight: 35,
         headerBGC: 'rgba(15,19,37,0.1)',
         oddRowBGC: 'rgba(15,19,37,0.1)',
         evenRowBGC: 'rgba(23,28,51,0.1)',
-        columnWidth: [130, 190, 110, 200, 120, 140, 180, 180, 160, 210, 180],
-        align: ['center', 'center', 'left', 'left', 'left', 'left', 'center', 'center', 'center', 'center', 'center']
+        columnWidth: [200, 190, 150],
+        align: ['center', 'center', 'center', 'center']
       },
       refreshInterval: null,
-      apiCaller: 'KB!ZZDayPlan'
+      apiCaller: 'KB!ALLWC!PROCESS'
     }
   },
   mounted() {
@@ -65,7 +67,6 @@ export default {
             condition: "1=1"
           }
         })
-
         this.processResponseData(response.data.data)
       } catch (error) {
         console.error('数据获取失败:', error)
@@ -76,28 +77,18 @@ export default {
       try {
         const dataList = JSON.parse(rawData)
         const formattedData = dataList.map(item => this.formatRowData(item))
-
         this.$refs.scrollBoard.updateRows(formattedData)
       } catch (error) {
         console.error('数据处理失败:', error)
       }
     },
     formatRowData(item) {
-      const rowClass = item.v_remark1 && item.v_remark1 !== "" ? 'colorRed' :
-          item.v_blstatus == '加工中' ? 'colorRemind' : item.v_blstatus == '已完成'?'colorGrass':'colorY';
+      const rowClass = 'colorGrass';
       return [
-        this.createCell(item.v_licode, rowClass),
-        this.createCell(item.v_sacode, rowClass),
-        this.createCell(item.v_seller, rowClass),
-        this.createCell(item.v_jitype, rowClass),
-        this.createCell(item.v_qty, rowClass),
-        this.createCell(item.v_blstatus, rowClass),
-        this.createCell(item.v_planoutqty, rowClass),
+        this.createCell(item.v_wccode, rowClass),
+        this.createCell(item.v_planqty, rowClass),
         this.createCell(item.v_madeqty, rowClass),
-        this.createCell(item.v_madejd, rowClass),
-        this.createCell(item.v_remark, rowClass),
-        this.createCell(item.v_remark1, rowClass),
-        this.createCell(item.v_yc, rowClass)
+        this.createCell(item.v_rate, rowClass)
       ]
     },
 
@@ -109,13 +100,26 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.plan-container {
+$box-height: 950px;
+$box-width: 944px;
+#right {
   padding: 13px;
-  height: 520px;
-  width: 100%;
+  height: $box-height;
+  width: $box-width;
   border-radius: 5px;
+  .bg-color-black {
+    height: $box-height - 25px;
+    border-radius: 10px;
+    padding: 5px;
+    display: flex;
+    flex-direction: column;
+  }
 
   .plan-header {
+    .text {
+      color: #c3cbde;
+      font-size: 25px;
+    }
     .header-content {
       border-radius: 10px;
       padding: 5px;
@@ -123,7 +127,6 @@ export default {
 
       .header-title {
         color: #c3cbde;
-        font-size: 25px;
         font-weight: bold;
         display: flex;
         justify-content: center;
@@ -137,30 +140,14 @@ export default {
     margin-top: 5px;
 
     .scroll-board {
-      height: 470px;
+      height: 920px;
       border-radius: 10px;
 
       ::v-deep .header {
-        font-size: 25px;
+        font-size: 23px;
       }
     }
   }
 }
 
-// 颜色类可以放在全局样式中
-.colorRed {
-  color: #ff4d4f;
-}
-
-.colorRemind {
-  color: #faad14;
-}
-
-.colorGrass {
-  color: #52c41a;
-}
-
-.fs-xxl {
-  font-size: 16px;
-}
 </style>

+ 0 - 147
src/views/compare/up2.vue

@@ -1,147 +0,0 @@
-<template>
-  <div id="up2">
-    <div class="bg-color-black">
-      <div class="d-flex pt-1 pl-2 jc-center">
-        <span class="fs-xxl text mx-2 fw-b">当日工序计划进度</span>
-      </div>
-      <div class="body-box">
-        <div class="pt-2 " >
-          <BarChart :bardata="bardata"  />
-        </div>
-        <div class="d-flex jc-center fs-xl fw-b rate flex-column mt-2">
-          <div>当日已完成比例:{{finishRate}}% </div>
-          <div class="mt-1">当日未达成比例:{{unfinishRate}}%</div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import BarChart from '@/components/zzchart/up2Chart'
-import {mapState} from "vuex";
-
-export default {
-  computed: {
-    ...mapState(['factory']),
-  },
-  data() {
-    return {
-      timing:null,
-      bardata : {
-        planData:[],
-        actData:[],
-        yAxis:[],
-        max : 1000,
-      },
-      finishRate:0,
-      unfinishRate:0,
-    }
-  },
-  components: {BarChart},
-  mounted() {
-    this.refreshdata();
-  },
-  beforeDestroy () {
-    clearInterval(this.timing)
-  },
-  methods: {
-    refreshdata() {
-      this.setdata(); //获取数据
-      this.timing = setInterval(() => {
-        this.setdata(); //获取-主题词
-      }, 10000);
-    },
-
-    async setdata() {
-      //当前工单
-      var caller = 'KB!LongLineLinePlan';
-      await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
-        params: {
-          condition: "V_OUTLINE='组装'" ,
-        }
-      }).then((result)=>{
-            let dataList = JSON.parse(result.data.data);
-            if(dataList.length>0){
-              let yAxis0 = new Array();
-              let series0 = new Array();
-              let series1 = new Array();
-              var maxnumber=0;
-              for (let index = 0; index < dataList.length; index++) {
-                const element = dataList[index];
-                yAxis0.push(element.v_wccode);
-                //计划
-                series0.push(element.v_planqty);
-                if(element.v_planqty>maxnumber){
-                  maxnumber= element.v_planqty;
-                }
-                //实际
-                series1.push(element.v_actqty);
-                if(element.v_actqty>maxnumber){
-                  maxnumber= element.v_actqty;
-                }
-              }
-              this.bardata.planData = series0;
-              this.bardata.actData = series1;
-              this.bardata.yAxis = yAxis0;
-              this.bardata.max = Math.ceil(maxnumber*1.2);
-            }
-          },(result)=>{
-            console.error(result)
-          }
-      );
-
-      this.finishRate = 0;
-      this.unfinishRate = 0;
-      //比例,用的是总看板的达成比例caller,如果不一样,自行修改caller
-      caller = 'KB!TOTALDayMakeRate';
-      await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
-        params: {
-          condition: "V_OUTLINE='组装'"
-        }
-      }).then((result) => {
-            let dataList = JSON.parse(result.data.data);
-            if(dataList.length>0){
-              this.finishRate = dataList[0].finishrate;
-              this.unfinishRate = dataList[0].unfinishrate;
-            }
-          }, (result) => {
-            console.error(result)
-          }
-      );
-
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-$box-height: 430px;
-$box-width: 100%;
-#up2 {
-  padding: 13px;
-  height: $box-height;
-  font-size: 40px;
-  width: $box-width;
-  border-radius: 5px;
-  .bg-color-black {
-    height: $box-height - 25px;
-    //width: $box-width - 10px;
-    border-radius: 10px;
-    padding: 5px ;
-  }
-
-  .text {
-    color: #c3cbde;
-    font-size: 25px;
-  }
-  .body-box {
-    border-radius: 10px;
-    overflow: hidden;
-    .rate{
-      justify-content: center; /* 水平居中 */
-      align-items: center;
-    }
-  }
-}
-</style>

+ 0 - 76
src/views/compare/up3.vue

@@ -1,76 +0,0 @@
-<template>
-  <div id="up3">
-    <div class="bg-color-black">
-      <div class="d-flex pt-2 pl-2 jc-center">
-        <span class="fs-xl text mx-2 fw-b">不良现象TOP5</span>
-      </div>
-      <div >
-        <BadChart />
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import BadChart from '../../components/zzchart/up3Chart'
-import {mapState} from "vuex";
-export default {
-  computed: {
-    ...mapState(['factory']),
-  },
-  data() {
-    return {
-      timing:null,
-    }
-  },
-  components: {
-    BadChart
-  },
-  mounted() {
-    //this.refreshdata()
-  },
-  beforeDestroy () {
-    clearInterval(this.timing)
-  },
-  methods: {
-    refreshdata() {
-      this.getdata(); //获取-数据
-      this.timing = setInterval(() => {
-        this.getdata(); //获取--数据
-      }, 10000);
-    },
-
-    async getdata() {
-
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-$box-height: 430px;
-$box-width: 100%;
-#up3 {
-  padding: 13px;
-  height: $box-height;
-  font-size: 32px;
-  width: $box-width;
-  border-radius: 5px;
-  .bg-color-black {
-    height: $box-height - 25px;
-    border-radius: 10px;
-    padding: 5px;
-  }
-  .dv-dec-3 {
-    position: relative;
-    width: 100px;
-    height: 20px;
-    top: -3px;
-  }
-  .text {
-    color: #f4cc03;
-    font-size: 25px;
-  }
-
-}
-</style>

+ 0 - 189
src/views/compare/up4.vue

@@ -1,189 +0,0 @@
-<template>
-  <div id="up4">
-    <div class="bg-color-black">
-      <div class="d-flex pt-1 pl-2 jc-center">
-        <span class="fs-xxxl text mx-2 fw-b">人员管理</span>
-      </div>
-      <div class="d-flex body-box">
-        <div class="item fs-xxl">
-          <p class="ml-3 colorText fw-b ">组装01生产区域负责人</p>
-          <div class="dv-dig-flop ml-1 mt-2 pl-3 ">
-            <div class = 'ai-center d-flex w-80' >
-              <p>{{ upitem.v_leadname }}</p>
-            </div>
-            <img :src="imgSrc1" class="responsive-img">
-          </div>
-        </div>
-        <div class="item fs-xxl">
-          <p class="ml-3 colorText fw-b ">组装01品质区域负责人</p>
-          <div class="dv-dig-flop ml-1 mt-2 pl-3 ">
-            <div class = 'ai-center d-flex w-80'>
-              <p>{{ upitem.v_quaname }}</p>
-            </div>
-            <img :src="imgSrc2"  class="responsive-img">
-          </div>
-        </div>
-        <div class="item fs-xxl">
-          <p class="ml-3 colorText fw-b ">组装02生产区域负责人</p>
-          <div class="dv-dig-flop ml-1 mt-2 pl-3 ">
-            <div class = 'ai-center d-flex w-80' >
-              <p>{{ upitem.v_leadname2 }}</p>
-            </div>
-            <img :src="imgSrc3" class="responsive-img">
-          </div>
-        </div>
-        <div class="item fs-xxl">
-          <p class="ml-3 colorText fw-b ">组装02品质区域负责人</p>
-          <div class="dv-dig-flop ml-1 mt-2 pl-3 ">
-            <div class = 'ai-center d-flex w-80'>
-              <p>{{ upitem.v_quaname2 }}</p>
-            </div>
-            <img :src="imgSrc4"  class="responsive-img">
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      timing:null,
-      upitem:{},
-      imgSrc1:'',
-      imgSrc2:'',
-      imgSrc3:'',
-      imgSrc4:'',
-    }
-  },
-  components: {},
-  mounted() {
-    this.refreshdata();
-  },
-  beforeDestroy () {
-    clearInterval(this.timing)
-  },
-  methods: {
-    refreshdata() {
-      this.settestdata(); //获取数据
-      this.timing = setInterval(() => {
-        this.settestdata(); //获取-主题词
-      }, 300000);
-    },
-    async settestdata() {
-      //人员管理
-      var caller = 'KB!ZZManInfo';
-      await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
-        params: {
-          condition: "1=1" ,
-        }
-      }).then((result)=>{
-            let dataList = JSON.parse(result.data.data);
-            if(dataList.length>0) {
-              this.upitem = dataList[0];
-              if(null != this.upitem.v_leadimageurl && '' != this.upitem.v_leadimageurl ) {
-                this.fetchImage('imgSrc1',this.upitem.v_leadimageurl);
-                 //this.imgSrc1 = this.$http.defaults.baseURL+"/kanban/download.action?path=D:/PROJECT2/uas-system/out/artifacts/postattach/U001/b2ebddde15d94de680dc6405540f7cb0.png&_noc=1";
-              }
-              if(null != this.upitem.v_quaimageurl && '' != this.upitem.v_quaimageurl) {
-                this.fetchImage('imgSrc2',this.upitem.v_quaimageurl);
-              }
-              if(null != this.upitem.v_leadimageurl && '' != this.upitem.v_leadimageurl2 ) {
-                this.fetchImage('imgSrc3',this.upitem.v_leadimageurl2);
-               }
-              if(null != this.upitem.v_quaimageurl && '' != this.upitem.v_quaimageurl2) {
-                this.fetchImage('imgSrc4',this.upitem.v_quaimageurl2);
-              }
-
-            }else{
-              this.upitem ={},
-              this.imgSrc1 ='';
-              this.imgSrc2 ='';
-              this.imgSrc3 ='';
-              this.imgSrc4 ='';
-            }
-          },(result)=>{
-            console.error(result)
-          }
-      );
-    },
-
-    async fetchImage(param,url) {
-      try {
-        // 假设你已经有了token,并且知道图片的URL
-       let response = await this.$httpImg.get("/kanban/download.action?path="+url+"&_noc=1");
-        if (response.status === 200) {
-          // 创建一个URL,并且使用这个URL作为img的src
-          this[param] = URL.createObjectURL(new Blob([response.data]));
-        }else{
-          this[param] = '';
-        }
-      } catch (error) {
-        console.error('Error fetching image:', error);
-      }
-    },
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-$box-height: 430px;
-$box-width: 100%;
-#up4 {
-  padding: 13px;
-  height: $box-height;
-  font-size: 32px;
-  width: $box-width;
-  border-radius: 5px;
-  .bg-color-black {
-    height: $box-height - 25px;
-    border-radius: 10px;
-    padding: 5px;
-  }
-  .text {
-    color: #c3cbde;
-    font-size: 25px;
-  }
-  .body-box {
-    display: flex;
-    flex-wrap: wrap;
-    margin-bottom: 7px;
-    .item {
-      border-radius: 6px;
-      padding-top: 8px;
-      margin-top: 8px;
-      width: 50%;
-      height: 175px;
-      .dv-dig-flop {
-        width: 100%;
-       // height: 30px;
-       // font-size: 20px;
-        color: #3de7c9;
-        display: flex;
-      //  align-items: center;
-      }
-      .w-80{
-        width : 80px;
-      }
-      .responsive-img {
-        width: 150px; /* 或者指定宽度,如 300px */
-        height: 150px; /* 保持图片的宽高比 */
-        //display: block;
-        margin-left: 20px;
-        //margin-right: 0;
-      }
-      .responsive-img2 {
-        width: 70px; /* 或者指定宽度,如 300px */
-        height: 80px; /* 保持图片的宽高比 */
-        //display: block;
-        margin-left: 20px;
-        //margin-right: 0;
-      }
-    }
-  }
-
-}
-</style>

+ 1 - 1
src/views/login.vue

@@ -221,7 +221,7 @@
         border-radius: 15px;
         background-clip: padding-box;
         margin: 120px auto;
-        width: 350px;
+        width: 380px;
         padding: 15px 35px 15px 35px;
         background: aliceblue;
         border:1px solid blueviolet;

+ 1 - 0
src/views/makeprocess/index.vue

@@ -50,6 +50,7 @@
                   <el-dropdown-item class="dropdownitem"><router-link to="quality">品质看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="zz">组装看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                 </el-dropdown-menu>
               </el-dropdown>
               <span class="text">&nbsp;&nbsp;&nbsp;&nbsp;</span>

+ 1 - 0
src/views/prodline/index.vue

@@ -50,6 +50,7 @@
                   <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="zz">组装看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                  </el-dropdown-menu>
               </el-dropdown>
 

+ 2 - 0
src/views/quality/index.vue

@@ -49,6 +49,8 @@
                     <el-dropdown-item class="dropdownitem"><router-link to="prodline">车间看板</router-link></el-dropdown-item>
                     <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
                     <el-dropdown-item class="dropdownitem"><router-link to="zz">组装看板</router-link></el-dropdown-item>
+                    <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
+                    <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                   </el-dropdown-menu>
               </el-dropdown>
 

+ 2 - 0
src/views/total/index.vue

@@ -49,6 +49,8 @@
                   <el-dropdown-item class="dropdownitem"><router-link to="prodline">车间看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="zz">组装看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                 </el-dropdown-menu>
               </el-dropdown>
               <span class="text">&nbsp;&nbsp;&nbsp;&nbsp;</span>

+ 2 - 0
src/views/warehouse/index.vue

@@ -48,6 +48,8 @@
                     <el-dropdown-item class="dropdownitem"><router-link to="prodline">车间看板</router-link></el-dropdown-item>
                     <el-dropdown-item class="dropdownitem"><router-link to="quality">品质看板</router-link></el-dropdown-item>
                     <el-dropdown-item class="dropdownitem"><router-link to="zz">组装看板</router-link></el-dropdown-item>
+                    <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
+                    <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                   </el-dropdown-menu>
               </el-dropdown>
 

+ 2 - 0
src/views/zz/index.vue

@@ -49,6 +49,8 @@
                   <el-dropdown-item class="dropdownitem"><router-link to="prodline">车间看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="quality">品质看板</router-link></el-dropdown-item>
                   <el-dropdown-item class="dropdownitem"><router-link to="warehouse">仓库看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="makeprocess">生产进度看板</router-link></el-dropdown-item>
+                  <el-dropdown-item class="dropdownitem"><router-link to="compare">各车间进度</router-link></el-dropdown-item>
                  </el-dropdown-menu>
               </el-dropdown>
               <span class="text">&nbsp;&nbsp;&nbsp;&nbsp;</span>