From 31127ef63da3af7511a3b06eb2eaa87238f245da Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期二, 05 三月 2024 10:07:44 +0800
Subject: [PATCH] 1.本地看板开发、发布

---
 src/views/kanbanManager/ckgl.vue |  506 +++++++++++--------
 src/permission.js                |    2 
 vue.config.js                    |    2 
 src/api/kanbanManager.js         |   24 
 src/views/kanbanManager/cj.vue   |   96 ++-
 src/views/kanbanManager/zhkb.vue |  204 ++-----
 src/utils/myEcharts.js           |  726 ++++++++++++---------------
 7 files changed, 770 insertions(+), 790 deletions(-)

diff --git a/src/api/kanbanManager.js b/src/api/kanbanManager.js
index 33786f3..c258dc4 100644
--- a/src/api/kanbanManager.js
+++ b/src/api/kanbanManager.js
@@ -53,3 +53,27 @@
     params: data
   })
 }
+// 浠撳簱鐪嬫澘,宸︿笂浜у搧寰呭叆搴撳垪琛�
+export function WareHouseTopLeftData() {
+  return request({
+    url: 'KanBanManagerent/WareHouseTopLeftData',
+    method: 'get'
+  })
+}
+
+// 浠撳簱鐪嬫澘,宸︿笅浜у搧寰呭彂璐у垪琛�
+export function WareHouseTopBottomData() {
+  return request({
+    url: 'KanBanManagerent/WareHouseTopBottomData',
+    method: 'get'
+  })
+}
+
+// 浠撳簱鐪嬫澘,鍙充笂鎴愬搧搴撱�佸崐鎴愬搧搴搕op5搴撳瓨鎺掕
+export function WareHouseRightTopData() {
+  return request({
+    url: 'KanBanManagerent/WareHouseRightTopData',
+    method: 'get'
+  })
+}
+
diff --git a/src/permission.js b/src/permission.js
index ad087ea..3b56f37 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -9,7 +9,7 @@
 
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
-const whiteList = ['/login', '/zhkb', '/cj'] // no redirect whitelist
+const whiteList = ['/login', '/zhkb', '/cj', '/ckgl'] // no redirect whitelist
 
 router.beforeEach(async(to, from, next) => {
   // start progress bar
diff --git a/src/utils/myEcharts.js b/src/utils/myEcharts.js
index d577d03..a85280e 100644
--- a/src/utils/myEcharts.js
+++ b/src/utils/myEcharts.js
@@ -1872,7 +1872,7 @@
       containLabel: true
     },
     title: {
-      text: '鍚勮溅闂村綋鏈堣鍗曟暟/鍏ュ簱鏁伴噺',
+      text: '杩戜竴鍛ㄨ鍗曟暟/鍏ュ簱鏁伴噺',
       left: '50%',
       top: '0%',
       textAlign: 'center',
@@ -2308,7 +2308,8 @@
     // tooltip: {},
     title: {
       show: show,
-      text: '鍚勮溅闂翠笉鑹秼鍔�',
+      text: '',
+      // text: '鍚勮溅闂翠笉鑹秼鍔�',
       left: '50%',
       top: '3%',
       textAlign: 'center',
@@ -2322,7 +2323,7 @@
     grid: {
       left: '2%',
       right: '2%',
-      bottom: '15%',
+      bottom: '5%',
       top: '20%',
       containLabel: true
     },
@@ -2400,7 +2401,7 @@
     ],
     series: [
       {
-        name: legendData[0],
+        name: '',
         type: 'line',
         // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
         // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
@@ -2445,200 +2446,200 @@
         //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
         //   }
         // },
-        data: yData[0]
-      },
-      {
-        name: legendData[1],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ff3000' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ff3000'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ff3000'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[1]
-      },
-      {
-        name: legendData[2],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ffa800' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ffa800'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ffa800'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[2]
-      },
-      {
-        name: legendData[3],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ffee00' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ffee00'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ffee00'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[3]
-      },
-      {
-        name: legendData[4],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ff5b00' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ff5b00'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ff5b00'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[4]
+        data: yData
       }
+      // {
+      //   name: legendData[1],
+      //   type: 'line',
+      //   // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+      //   // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+      //   showAllSymbol: true,
+      //   symbol: 'emptyCircle',
+      //   symbolSize: 6,
+      //   lineStyle: {
+      //     normal: {
+      //       color: '#ff3000' // 绾挎潯棰滆壊
+      //     },
+      //     borderColor: '#ff3000'
+      //   },
+      //   label: {
+      //     show: true,
+      //     position: 'top',
+      //     textStyle: {
+      //       fontSize: 16,
+      //       color: '#fff'
+      //     }
+      //   },
+      //   itemStyle: {
+      //     normal: {
+      //       color: '#ff3000'
+      //     }
+      //   },
+      //   tooltip: {
+      //     show: false
+      //   },
+      //   // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+      //   //   normal: {
+      //   //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+      //   //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //   //       offset: 0,
+      //   //       color: 'rgba(0,154,120,1)'
+      //   //     },
+      //   //     {
+      //   //       offset: 1,
+      //   //       color: 'rgba(0,0,0, 0)'
+      //   //     }
+      //   //     ], false),
+      //   //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+      //   //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+      //   //   }
+      //   // },
+      //   data: yData[1]
+      // },
+      // {
+      //   name: legendData[2],
+      //   type: 'line',
+      //   // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+      //   // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+      //   showAllSymbol: true,
+      //   symbol: 'emptyCircle',
+      //   symbolSize: 6,
+      //   lineStyle: {
+      //     normal: {
+      //       color: '#ffa800' // 绾挎潯棰滆壊
+      //     },
+      //     borderColor: '#ffa800'
+      //   },
+      //   label: {
+      //     show: true,
+      //     position: 'top',
+      //     textStyle: {
+      //       fontSize: 16,
+      //       color: '#fff'
+      //     }
+      //   },
+      //   itemStyle: {
+      //     normal: {
+      //       color: '#ffa800'
+      //     }
+      //   },
+      //   tooltip: {
+      //     show: false
+      //   },
+      //   // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+      //   //   normal: {
+      //   //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+      //   //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //   //       offset: 0,
+      //   //       color: 'rgba(0,154,120,1)'
+      //   //     },
+      //   //     {
+      //   //       offset: 1,
+      //   //       color: 'rgba(0,0,0, 0)'
+      //   //     }
+      //   //     ], false),
+      //   //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+      //   //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+      //   //   }
+      //   // },
+      //   data: yData[2]
+      // },
+      // {
+      //   name: legendData[3],
+      //   type: 'line',
+      //   // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+      //   // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+      //   showAllSymbol: true,
+      //   symbol: 'emptyCircle',
+      //   symbolSize: 6,
+      //   lineStyle: {
+      //     normal: {
+      //       color: '#ffee00' // 绾挎潯棰滆壊
+      //     },
+      //     borderColor: '#ffee00'
+      //   },
+      //   label: {
+      //     show: true,
+      //     position: 'top',
+      //     textStyle: {
+      //       fontSize: 16,
+      //       color: '#fff'
+      //     }
+      //   },
+      //   itemStyle: {
+      //     normal: {
+      //       color: '#ffee00'
+      //     }
+      //   },
+      //   tooltip: {
+      //     show: false
+      //   },
+      //   // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+      //   //   normal: {
+      //   //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+      //   //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //   //       offset: 0,
+      //   //       color: 'rgba(0,154,120,1)'
+      //   //     },
+      //   //     {
+      //   //       offset: 1,
+      //   //       color: 'rgba(0,0,0, 0)'
+      //   //     }
+      //   //     ], false),
+      //   //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+      //   //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+      //   //   }
+      //   // },
+      //   data: yData[3]
+      // },
+      // {
+      //   name: legendData[4],
+      //   type: 'line',
+      //   // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+      //   // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+      //   showAllSymbol: true,
+      //   symbol: 'emptyCircle',
+      //   symbolSize: 6,
+      //   lineStyle: {
+      //     normal: {
+      //       color: '#ff5b00' // 绾挎潯棰滆壊
+      //     },
+      //     borderColor: '#ff5b00'
+      //   },
+      //   label: {
+      //     show: true,
+      //     position: 'top',
+      //     textStyle: {
+      //       fontSize: 16,
+      //       color: '#fff'
+      //     }
+      //   },
+      //   itemStyle: {
+      //     normal: {
+      //       color: '#ff5b00'
+      //     }
+      //   },
+      //   tooltip: {
+      //     show: false
+      //   },
+      //   // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+      //   //   normal: {
+      //   //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+      //   //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //   //       offset: 0,
+      //   //       color: 'rgba(0,154,120,1)'
+      //   //     },
+      //   //     {
+      //   //       offset: 1,
+      //   //       color: 'rgba(0,0,0, 0)'
+      //   //     }
+      //   //     ], false),
+      //   //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+      //   //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+      //   //   }
+      //   // },
+      //   data: yData[4]
+      // }
     ]
   }
 }
@@ -2786,200 +2787,9 @@
         //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
         //   }
         // },
-        data: yData[0]
-      },
-      {
-        name: legendData[1],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ff3000' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ff3000'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ff3000'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[1]
-      },
-      {
-        name: legendData[2],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ffa800' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ffa800'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ffa800'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[2]
-      },
-      {
-        name: legendData[3],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ffee00' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ffee00'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ffee00'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[3]
-      },
-      {
-        name: legendData[4],
-        type: 'line',
-        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
-        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
-        showAllSymbol: true,
-        symbol: 'emptyCircle',
-        symbolSize: 6,
-        lineStyle: {
-          normal: {
-            color: '#ff5b00' // 绾挎潯棰滆壊
-          },
-          borderColor: '#ff5b00'
-        },
-        label: {
-          show: true,
-          position: 'top',
-          textStyle: {
-            fontSize: 16,
-            color: '#fff'
-          }
-        },
-        itemStyle: {
-          normal: {
-            color: '#ff5b00'
-          }
-        },
-        tooltip: {
-          show: false
-        },
-        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
-        //   normal: {
-        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
-        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-        //       offset: 0,
-        //       color: 'rgba(0,154,120,1)'
-        //     },
-        //     {
-        //       offset: 1,
-        //       color: 'rgba(0,0,0, 0)'
-        //     }
-        //     ], false),
-        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
-        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
-        //   }
-        // },
-        data: yData[4]
+        data: yData
       }
+
     ]
   }
 }
@@ -3122,3 +2932,139 @@
 
   return option
 }
+
+export function zhkb04(dataX, dataY) {
+  const option = {
+    backgroundColor: 'transparent',
+    // tooltip: {
+    //   trigger: 'axis',
+    //   axisPointer: {
+    //     type: 'shadow'
+    //   }
+    // },
+    grid: {
+      left: '2%',
+      right: '2%',
+      bottom: '5%',
+      top: '20%',
+      containLabel: true
+    },
+    xAxis: [{
+      type: 'category',
+      data: dataX,
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      }
+    }],
+    yAxis: [
+      {
+        // max: 800,
+        boundaryGap: false,
+        splitNumber: 4,
+        type: 'value',
+        axisLabel: {
+          textStyle: {
+            fontSize: 18,
+            color: colorX
+          }
+        },
+        // name: '鍗�',
+        // nameTextStyle: {
+        //   color: colorY,
+        //   fontSize: 14,
+        //   lineHeight: 20
+        // },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisTick: {
+          show: true
+        }
+      }
+    ],
+    series: [{
+      type: 'bar',
+      data: dataY,
+      barWidth: '20px',
+      itemStyle: {
+        normal: {
+          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+            offset: 0,
+            color: 'rgba(0,244,255,1)' // 0% 澶勭殑棰滆壊
+          }, {
+            offset: 1,
+            color: 'rgba(0,77,167,1)' // 100% 澶勭殑棰滆壊
+          }], false),
+          barBorderRadius: [30, 30, 0, 0],
+          shadowColor: 'rgba(0,160,221,1)',
+          shadowBlur: 4
+        }
+      },
+      label: {
+        normal: {
+          show: true,
+          lineHeight: 30,
+          width: 80,
+          height: 30,
+          backgroundColor: 'rgba(0,160,221,0.1)',
+          borderRadius: 200,
+          position: ['-8', '-60'],
+          distance: 1,
+          formatter: [
+            '    {d|鈼弣',
+            ' {a|{c}}     \n',
+            '    {b|}'
+          ].join(','),
+          rich: {
+            d: {
+              color: '#3CDDCF'
+            },
+            a: {
+              color: '#fff',
+              align: 'center',
+              fontSize: '18'
+            },
+            b: {
+              width: 1,
+              height: 30,
+              borderWidth: 1,
+              borderColor: '#234e6c',
+              align: 'left'
+            }
+          }
+        }
+      }
+    }]
+  }
+  return option
+}
diff --git a/src/views/kanbanManager/cj.vue b/src/views/kanbanManager/cj.vue
index d312daf..39484e1 100644
--- a/src/views/kanbanManager/cj.vue
+++ b/src/views/kanbanManager/cj.vue
@@ -6,11 +6,11 @@
 
       <div class="kb_header">
         <div class="kb_headTime" style="top: 35px;left:  20px">
-          <span>姘稿悍甯傚法绔嬮槻鎶ょ敤鍝佹湁闄愬叕鍙�</span>
+          <span>娴欐睙绫宠埅绉戞妧鏈夐檺鍏徃</span>
         </div>
 
-        <div class="kb_headTime kb_header_text" style="top: 35px;left:  765px">
-          <span>{{ title }}鏁板瓧鍖栫湅鏉�</span>
+        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
+          <span>瑁呴厤杞﹂棿鏁板瓧鍖栫湅鏉�</span>
         </div>
 
         <div class="kb_headTime" style="top: 35px;right:  25px">
@@ -186,11 +186,42 @@
     }, 1000 * 60 * 120)
   },
   mounted() {
+    // 鐩戝惉缃戠粶鏄惁鍦ㄧ嚎
+    window.addEventListener('online', this.updateOnlineStatus)
+    window.addEventListener('offline', this.updateOnlineStatus)
+    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
+
     this.getAllApi()
   },
+  beforeDestroy() {
+    window.removeEventListener('online', this.updateOnlineStatus)
+    window.removeEventListener('offline', this.updateOnlineStatus)
+  },
   methods: {
+    // 鏇存柊缃戠粶鐘舵��
+    updateOnlineStatus(e) {
+      if (e.isFirst) {
+        // console.log('x')
+      } else {
+        const loading = this.$loading({
+          lock: true,
+          text: '鏂綉浜嗭紝姝e湪鎷煎懡鑱旂綉涓紝璇锋鏌ョ綉缁滄槸鍚︽甯�...',
+          spinner: 'el-icon-loading',
+          customClass: 'osloading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        const { type } = e
+        this.onLine = type === 'online'
+        if (this.onLine) {
+          loading.close()
+          this.$message.success('缃戠粶杩炴帴鎴愬姛锛�')
+        } else {
+          this.$message.error('缃戠粶鎺夌嚎锛岃鍏虫敞缃戠粶鐘舵�侊紒')
+        }
+      }
+    },
     async getWorkShopProduceTopData() {
-      WorkShopProduceTopData({ wkshopcode: this.wkshopcode.join(',') }).then(res => {
+      WorkShopProduceTopData().then(res => {
         this.tableDataCenterTop = res.data
 
         const divData = this.$refs.tableDataLeftCenterRef.bodyWrapper
@@ -199,7 +230,7 @@
           divData.scrollTop += 1
           if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
             divData.scrollTop = 0
-            WorkShopProduceTopData({ wkshopcode: this.wkshopcode.join(',') }).then(res => {
+            WorkShopProduceTopData().then(res => {
               this.tableDataCenterTop = res.data
 
               if (this.tableDataCenterTop.length > 11) {
@@ -208,57 +239,46 @@
               }
             })
           }
-        }, this.tableDataCenterTop.length <= 11 ? 1000 * 15 : 200)
+        }, this.tableDataCenterTop.length <= 11 ? 1000 * 30 : 200)
       })
     },
 
     async getAllApi() {
-      const res = await PrentOrganizationNoCompany()
-      this.wkshopArr = res.data
+      // const res = await PrentOrganizationNoCompany()
+      // this.wkshopArr = res.data
 
-      if (window.location.hash.indexOf('?') !== -1) {
-        const code = window.location.hash.split('?')[1].split('=')[1]
-        this.title = this.wkshopArr.find(i => i.torg_code === code).torg_name
-        this.wkshopcode = [code]
-      }
+      // if (window.location.hash.indexOf('?') !== -1) {
+      //   const code = window.location.hash.split('?')[1].split('=')[1]
+      //   this.title = this.wkshopArr.find(i => i.torg_code === code).torg_name
+      //   this.wkshopcode = [code]
+      // }
+      //
+      // this.wkshopcode.forEach(i => {
+      //   const aa = this.wkshopArr.find(j => j.torg_code === i).torg_name
+      //   this.legendData.push(aa)
+      // })
 
-      this.wkshopcode.forEach(i => {
-        const aa = this.wkshopArr.find(j => j.torg_code === i).torg_name
-        this.legendData.push(aa)
-      })
+      const res4 = await WorkShopProduceBottomLeftData()
+      this.cjzl03_xData = res4.data.map(i => i.click_date)
+      this.cjzl03_yData = res4.data.map(i => i.count)
 
-      const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: this.wkshopcode.join(',') })
-      this.cjzl03_xData = res4.data[this.wkshopcode[0]].map(i => i.click_date)
-      for (const res4Key in res4.data) {
-        if (this.wkshopcode.includes(res4Key)) {
-          const bb = res4.data[res4Key].map(i => i.count)
-          this.cjzl03_yData.push(bb)
-        }
-      }
       loadEcharts('cjzl03', cjzl03_2(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
       setInterval(() => {
-        WorkShopProduceBottomLeftData({ wkshopcode: this.wkshopcode.join(',') }).then(res4 => {
-          this.cjzl03_yData = []
-
-          this.cjzl03_xData = res4.data[this.wkshopcode[0]].map(i => i.click_date)
-          for (const res4Key in res4.data) {
-            if (this.wkshopcode.includes(res4Key)) {
-              const bb = res4.data[res4Key].map(i => i.count)
-              this.cjzl03_yData.push(bb)
-            }
-          }
+        WorkShopProduceBottomLeftData().then(res4 => {
+          this.cjzl03_xData = res4.data.map(i => i.click_date)
+          this.cjzl03_yData = res4.data.map(i => i.count)
           loadEcharts('cjzl03', cjzl03_2(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
         })
       }, 1000 * 50)
 
-      const res5 = await WorkShopProduceBottomRightData({ wkshopcode: 'CJ001' })
+      const res5 = await WorkShopProduceBottomRightData()
       this.RightBottom = res5.data
       if (this.RightBottom.length > 0) {
         loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
       }
 
       setInterval(() => {
-        WorkShopProduceBottomRightData({ wkshopcode: 'CJ001' }).then(res5 => {
+        WorkShopProduceBottomRightData().then(res5 => {
           this.RightBottom = res5.data
           if (this.RightBottom.length > 0) {
             loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
@@ -266,7 +286,7 @@
         })
       }, 1000 * 60)
 
-      this.getWorkShopProduceTopData()
+      await this.getWorkShopProduceTopData()
     },
 
     // 鑾峰彇褰撳墠鏃堕棿
diff --git a/src/views/kanbanManager/ckgl.vue b/src/views/kanbanManager/ckgl.vue
index 1b94f5f..0483999 100644
--- a/src/views/kanbanManager/ckgl.vue
+++ b/src/views/kanbanManager/ckgl.vue
@@ -2,34 +2,29 @@
   <div>
     <div class="kb_dashboard">
 
-      <!--    鏄熺┖鑳屾櫙-->
-      <div ref="starsRef" class="stars">
-        <div v-for="(item, index) in starsCount" :key="index" class="star" />
-      </div>
-
+      <div class="kb_backgroundCustom" />
       <div class="kb_header">
-        <div class="flex_c_c kb_header_text">
-          <div id="topBarLeft" style="width:600px;height:100%" />
-          浠撳簱绠$悊鏁板瓧鍖栫湅鏉�
-          <div id="topBarRight" style="width:600px;height:100%;transform:rotate(180deg);" />
+        <div class="kb_headTime" style="top: 35px;left:  20px">
+          <span>娴欐睙绫宠埅绉戞妧鏈夐檺鍏徃</span>
         </div>
 
-        <div class="kb_headTime" style="left: 85px">
-          <span>娴欐睙鏂板嚡杩暟瀛楃鎶�鑲′唤鏈夐檺鍏徃</span>
+        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
+          <span>浠撳簱绠$悊鏁板瓧鍖栫湅鏉�</span>
         </div>
 
-        <div class="kb_headTime">
+        <div class="kb_headTime" style="top: 35px;right:  25px">
           <span>{{ headTime }}</span>
         </div>
       </div>
-      <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px;height: 980px">
-        <div style="width: 1350px; " class="flex_c_b">
+
+      <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px;height: 950px">
+        <div style="width: 1350px;z-index: 2;margin-top: 50px;" class="flex_c_b">
           <div style="height: 470px;">
             <div class="smallTitle">
               <svg-icon icon-class="cpdrk" class="svg_class" />
               鐢熶骇寰呭叆搴�
             </div>
-            <div class="lineContent horn" style="height: 435px">
+            <div class="lineContent horn" style="height: 410px">
               <el-table
                 ref="tableDataTopRef"
                 :data="tableDataTop"
@@ -37,7 +32,7 @@
                 class="tableData"
                 :header-cell-style="headerCellStyleCenter"
                 :cell-style="cellStyleCenter"
-                height="430"
+                height="405"
               >
                 <el-table-column
                   prop="voucherdate"
@@ -70,41 +65,41 @@
                 <el-table-column
                   prop="saleOrderCode"
                   label="閿�鍞鍗曞彿"
-                  width="200"
+                  width="190"
                 >
                   <template slot-scope="{row}">
                     <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div>
                     <div v-else>/</div>
                   </template>
                 </el-table-column>
-                <el-table-column
-                  prop="materiel_code"
-                  label="浜у搧缂栧彿"
-                  width="136"
-                >
-                  <template slot-scope="{row}">
-                    <div class="ellipsis">{{ row.materiel_code }}</div>
-                  </template>
-                </el-table-column>
+                <!--                <el-table-column-->
+                <!--                  prop="materiel_code"-->
+                <!--                  label="浜у搧缂栧彿"-->
+                <!--                  width="136"-->
+                <!--                >-->
+                <!--                  <template slot-scope="{row}">-->
+                <!--                    <div class="ellipsis">{{ row.materiel_code }}</div>-->
+                <!--                  </template>-->
+                <!--                </el-table-column>-->
                 <el-table-column
                   prop="materiel_name"
                   label="浜у搧鍚嶇О"
-                  width="180"
+                  width="190"
                 >
                   <template slot-scope="{row}">
                     <div class="ellipsis">{{ row.materiel_name }}</div>
                   </template>
                 </el-table-column>
-                <!--                  <el-table-column-->
-                <!--                    prop="specification"-->
-                <!--                    label="瑙勬牸鍨嬪彿"-->
-                <!--                    width="128"-->
-                <!--                  >-->
-                <!--                    <template slot-scope="{row}">-->
-                <!--                      <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>-->
-                <!--                      <div v-else>/</div>-->
-                <!--                    </template>-->
-                <!--                  </el-table-column>-->
+                <el-table-column
+                  prop="specification"
+                  label="瑙勬牸鍨嬪彿"
+                  width="126"
+                >
+                  <template slot-scope="{row}">
+                    <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
+                    <div v-else>/</div>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   prop="stck_name"
                   label="棰勫叆浠撳簱"
@@ -123,7 +118,7 @@
                 <el-table-column
                   prop="totalStockInQuantity"
                   label="宸插叆搴撴暟閲�"
-                  width="100"
+                  width="110"
                 >
                   <template slot-scope="{row}">
                     <div v-if="row.totalStockInQuantity">{{ row.totalStockInQuantity }}</div>
@@ -158,12 +153,12 @@
               </el-table>
             </div>
           </div>
-          <div style="height: 470px;">
+          <div style="height: 470px;margin-top: 30px;">
             <div class="smallTitle">
               <svg-icon icon-class="cpdfh" class="svg_class" />
               浜у搧寰呭彂璐�
             </div>
-            <div class="lineContent horn" style="height: 435px">
+            <div class="lineContent horn" style="height: 410px">
               <el-table
                 ref="tableDataBottomRef"
                 :data="tableDataBottom"
@@ -171,7 +166,7 @@
                 class="tableData"
                 :header-cell-style="headerCellStyleCenter"
                 :cell-style="cellStyleCenter"
-                height="430"
+                height="405"
               >
                 <el-table-column
                   prop="voucherdate"
@@ -192,60 +187,26 @@
                     <div class="ellipsis">{{ row.wo }}</div>
                   </template>
                 </el-table-column>
-                <el-table-column
-                  prop="customename"
-                  label="瀹㈡埛"
-                  width="388"
-                >
-                  <template slot-scope="{row}">
-                    <div v-if="row.customename" class="ellipsis">{{ row.customename }}</div>
-                    <div v-else>/</div>
-                  </template>
-                </el-table-column>
-                <!--                  <el-table-column-->
-                <!--                    prop="username"-->
-                <!--                    label="涓氬姟鍛�"-->
-                <!--                    width="65"-->
-                <!--                  >-->
-                <!--                    <template slot-scope="{row}">-->
-                <!--                      <div v-if="row.username" class="ellipsis">{{ row.username }}</div>-->
-                <!--                      <div v-else>/</div>-->
-                <!--                    </template>-->
-                <!--                  </el-table-column>-->
-                <!--                <el-table-column-->
-                <!--                  prop="SourceVoucherCode"-->
-                <!--                  label="鏉ユ簮鍗曞彿"-->
-                <!--                  width="185"-->
-                <!--                >-->
-                <!--                  <template slot-scope="{row}">-->
-                <!--                    <div v-if="row.SourceVoucherCode" class="ellipsis">{{ row.SourceVoucherCode }}</div>-->
-                <!--                    <div v-else>/</div>-->
-                <!--                  </template>-->
-                <!--                </el-table-column>-->
-                <!--                  <el-table-column-->
-                <!--                    prop="materiel_code"-->
-                <!--                    label="浜у搧缂栧彿"-->
-                <!--                    width="96"-->
-                <!--                  />-->
+
                 <el-table-column
                   prop="materiel_name"
                   label="浜у搧鍚嶇О"
-                  width="200"
+                  width="288"
                 >
                   <template slot-scope="{row}">
                     <div v-if="row.materiel_name" class="ellipsis">{{ row.materiel_name }}</div>
                   </template>
                 </el-table-column>
-                <!--                  <el-table-column-->
-                <!--                    prop="specification"-->
-                <!--                    label="瑙勬牸鍨嬪彿"-->
-                <!--                    width="100"-->
-                <!--                  >-->
-                <!--                    <template slot-scope="{row}">-->
-                <!--                      <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>-->
-                <!--                      <div v-else>/</div>-->
-                <!--                    </template>-->
-                <!--                  </el-table-column>-->
+                <el-table-column
+                  prop="specification"
+                  label="瑙勬牸鍨嬪彿"
+                  width="300"
+                >
+                  <template slot-scope="{row}">
+                    <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
+                    <div v-else>/</div>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   prop="quantity"
                   label="鏁伴噺"
@@ -265,33 +226,14 @@
                     <div v-else>0</div>
                   </template>
                 </el-table-column>
-                <!--                <el-table-column-->
-                <!--                  prop="priuserdefnvc1"-->
-                <!--                  label="妫�楠屾柟寮�"-->
-                <!--                  width="110"-->
-                <!--                >-->
-                <!--                  <template slot-scope="{row}">-->
-                <!--                    <div v-if="row.priuserdefnvc1">{{ row.priuserdefnvc1 }}</div>-->
-                <!--                    <div v-else>/</div>-->
-                <!--                  </template>-->
-                <!--                </el-table-column>-->
-                <!--                <el-table-column-->
-                <!--                  prop="priuserdefnvc2"-->
-                <!--                  label="妫�楠屼汉鍛�"-->
-                <!--                  width="110"-->
-                <!--                >-->
-                <!--                  <template slot-scope="{row}">-->
-                <!--                    <div v-if="row.priuserdefnvc2">{{ row.priuserdefnvc2 }}</div>-->
-                <!--                    <div v-else>/</div>-->
-                <!--                  </template>-->
-                <!--                </el-table-column>-->
+
                 <el-table-column
                   prop="deliveryDate"
                   label="棰勮浜よ揣鏃ユ湡"
                   width="200"
                 >
                   <template slot-scope="{row}">
-                    <div v-if="row.deliveryDate">{{ row.deliveryDate.substring(0,10) }}</div>
+                    <div v-if="row.deliveryDate">{{ row.deliveryDate.substring(0, 10) }}</div>
                     <div v-else>/</div>
                   </template>
                 </el-table-column>
@@ -300,27 +242,57 @@
           </div>
 
         </div>
-        <div style="width: 500px;" class="flex_c_b">
-          <div style="height: 470px;">
+        <div style="width: 500px;z-index: 2;margin-top: 50px;" class="flex_c_b">
+          <div>
             <div class="smallTitle">
               <svg-icon icon-class="ph" class="svg_class" />
-              鍗婃垚鍝併�佷骇鍝佸簱瀛橀噺鎺掕Top5
+              搴撳瓨閲�
             </div>
-            <div class="lineContent horn" style="height: 435px">
-              <div id="bar03" style="width: 100%;height:100%; " />
-              <!--/*              <div id="bar03" style="width: 100%;height:100%;margin-left: -25px;margin-top: -10px" />*/-->
+            <div class="lineContent horn" style="height: 885px">
+              <el-table
+                ref="tableDataRightRef"
+                :data="tableDataRight"
+                style="width: 100%;"
+                class="tableData"
+                :header-cell-style="headerCellStyleCenter"
+                :cell-style="cellStyleCenter"
+                height="870"
+              >
+
+                <el-table-column
+                  prop="FErpCls"
+                  label="绫诲瀷"
+                >
+                  <template slot-scope="{row}">
+                    <div v-if="row.FErpCls" class="ellipsis">{{ row.FErpCls }}</div>
+                    <div v-else>/</div>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="FStockName"
+                  label="浠撳簱"
+                  width="200"
+                >
+                  <template slot-scope="{row}">
+                    <div v-if="row.FStockName" class="ellipsis">{{ row.FStockName }}</div>
+                    <div v-else>/</div>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  prop="FCUUQty"
+                  label="搴撳瓨閲�"
+                >
+                  <template slot-scope="{row}">
+                    <div v-if="row.FCUUQty">{{ row.FCUUQty }}</div>
+                    <div v-else>0</div>
+                  </template>
+                </el-table-column>
+
+              </el-table>
             </div>
           </div>
-          <div style="height: 470px;">
-            <div class="smallTitle">
-              <svg-icon icon-class="ph" class="svg_class" />
-              鍘熸潗鏂欏簱瀛橀噺鎺掕Top5
-            </div>
-            <div class="lineContent horn" style="height: 435px">
-              <div id="bar04" style="width: 100%;height:100%;" />
-              <!--              <div id="bar04" style="width: 100%;height:100%;margin-left: -25px;margin-top: -10px" />-->
-            </div>
-          </div>
+
         </div>
       </div>
 
@@ -332,7 +304,6 @@
 import './kbCommon.css'
 import { bar02, kbTop, loadEcharts } from '@/utils/myEcharts'
 import {
-  WareHouseRightBottomData,
   WareHouseRightTopData,
   WareHouseTopBottomData,
   WareHouseTopLeftData
@@ -354,8 +325,7 @@
 
       tableTopTask: null,
       tableBottomTask: null,
-      echartsRightTop: null,
-      echartsRightBottom: null,
+      tableDataRight: null,
 
       starsCount: 800, // 鏄熸槦鏁伴噺
       distance: 900 // 闂磋窛
@@ -369,7 +339,7 @@
     // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
     setInterval(() => {
       window.location.reload()
-    }, 1000 * 60 * 60 * 10)
+    }, 1000 * 60 * 120)
   },
   mounted() {
     // 鐩戝惉缃戠粶鏄惁鍦ㄧ嚎
@@ -377,12 +347,9 @@
     window.addEventListener('offline', this.updateOnlineStatus)
     this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
 
-    this.getTopBar()
-
     this.getWareHouseTopLeftData()
     this.getWareHouseTopBottomData()
-    this.getEcharts()
-    this.setStarsRef()
+    this.getWareHouseRightTopData()
   },
   beforeDestroy() {
     window.removeEventListener('online', this.updateOnlineStatus)
@@ -411,26 +378,26 @@
         }
       }
     },
-    setStarsRef() {
-      const starNodes = Array.from(this.$refs.starsRef.children)
-      starNodes.forEach(item => {
-        const speed = 0.2 + Math.random() * 1
-        const thisDistance = this.distance + Math.random() * 300
-        item.style.transformOrigin = `0 0 ${thisDistance}px`
-        item.style.transform = `
-        translate3d(0,0,-${thisDistance}px)
-        rotateY(${Math.random() * 360}deg)
-        rotateX(${Math.random() * -50}deg)
-        scale(${speed},${speed})`
-      })
-    },
-    // 鑾峰彇topEcharts
-    getTopBar() {
-      loadEcharts('topBarLeft', kbTop())
-      loadEcharts('topBarRight', kbTop())
-    },
+
     // 鑾峰彇宸︿笂table鏁版嵁
     getWareHouseTopLeftData() {
+      // this.tableDataTop = [
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', wkshp_name: '鍖呰杞﹂棿', saleOrderCode: 'SA230240001', materiel_name: '鍔犲己鐗堢數鍔ㄥ伐鍏�0001', specification: '#U328', stck_name: '鎴愬搧搴�01', quantity: 5000, totalStockInQuantity: 2000, preFinishDate: '2024-03-10' }
+      // ]
+
       WareHouseTopLeftData().then(res => {
         this.tableDataTop = res.data
         // this.number1 = this.tableDataTop.length
@@ -453,11 +420,31 @@
               }
             })
           }
-        }, this.tableDataTop.length <= 10 ? 1000 * 3 : 100)
+        }, this.tableDataTop.length <= 10 ? 1000 * 10 : 100)
       })
     },
     // 鑾峰彇宸︿笅table鏁版嵁
     getWareHouseTopBottomData() {
+      // this.tableDataBottom = [
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-001', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-002', materiel_name: '灞卞湴婊戞澘杞�', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-01', wo: 'WO2024-03-01-003', materiel_name: '鍗囩骇鐗堢増婊戞澘杞�', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-02', wo: 'WO2024-03-01-001', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-02', wo: 'WO2024-03-01-002', materiel_name: '灞卞湴鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-03', wo: 'WO2024-03-01-001', materiel_name: '闆湴鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-03', wo: 'WO2024-03-01-002', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-04', wo: 'WO2024-03-01-001', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-04', wo: 'WO2024-03-01--002', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-05', wo: 'WO2024-03-01-001', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-05', wo: 'WO2024-03-01-002', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-06', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-06', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-07', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-07', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-08', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-08', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' },
+      //   { voucherdate: '2024-03-09', wo: 'WO2024-03-01', materiel_name: '鍔犲己鐗堟粦鏉胯溅', specification: '#80-90', quantity: '1000', saleOutQuantity: '100', deliveryDate: '2024-03-10' }
+      // ]
       WareHouseTopBottomData().then(res => {
         this.tableDataBottom = res.data
         this.number2 = this.tableDataBottom.length
@@ -481,31 +468,60 @@
               }
             })
           }
-        }, this.tableDataBottom.length <= 10 ? 1000 * 3 : 100)
+        }, this.tableDataBottom.length <= 10 ? 1000 * 10 : 100)
       })
     },
-
-    // 鑾峰彇echarts
-    getEcharts() {
+    // 鑾峰彇鍙宠竟table鏁版嵁
+    getWareHouseRightTopData() {
+      // this.tableDataRight = [
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '閲囪喘澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '閲囪喘澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '閲囪喘澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '閲囪喘澶栧崗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' },
+      //   { FErpCls: '鑷埗', FStockName: '浜旈噾绫讳粨搴�01', FCUUQty: '123' }
+      // ]
       WareHouseRightTopData().then(res => {
-        loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
+        this.tableDataRight = res.data
+        this.number2 = this.tableDataRight.length
+        const divData = this.$refs.tableDataRightRef.bodyWrapper
+        // 鎷垮埌鍏冪礌鍚庯紝瀵瑰厓绱犺繘琛屽畾鏃跺鍔犺窛绂婚《閮ㄨ窛绂伙紝瀹炵幇婊氬姩鏁堟灉(姝ら厤缃负姣�100姣绉诲姩1鍍忕礌)
+        // const task = setInterval(() => {
+        this.tableDataRightTask = setInterval(() => {
+          // 鍏冪礌鑷璺濈椤堕儴1鍍忕礌
+          divData.scrollTop += 1
+          // divData.scrollTop += divData.scrollHeight / this.tableData.length
+          // 鍒ゆ柇鍏冪礌鏄惁婊氬姩鍒板簳閮�(鍙楂樺害+璺濈椤堕儴=鏁翠釜楂樺害)
+          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
+            // 閲嶇疆table璺濈椤堕儴璺濈
+            divData.scrollTop = 0
+            WareHouseRightTopData().then(res => {
+              this.tableDataRight = res.data
+              this.number2 = this.tableDataRight.length
+              if (this.tableDataRight.length > 10) {
+                clearInterval(this.tableDataRightTask)
+                this.getWareHouseRightTopData()
+              }
+            })
+          }
+        }, this.tableDataRight.length <= 22 ? 1000 * 10 : 100)
       })
-
-      WareHouseRightBottomData().then(res => {
-        loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
-      })
-
-      this.echartsRightTop = setInterval(() => {
-        WareHouseRightTopData().then(res => {
-          loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
-        })
-      }, 1000 * 15)
-
-      this.echartsRightBottom = setInterval(() => {
-        WareHouseRightBottomData().then(res => {
-          loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
-        })
-      }, 1000 * 15)
     },
     // 鑾峰彇褰撳墠鏃堕棿
     getNowTime() {
@@ -525,8 +541,7 @@
     },
     headerCellStyleCenter() {
       return {
-        // backgroundColor: 'rgb(30 ,33, 46)',
-        backgroundColor: '#000',
+        backgroundColor: 'transparent ',
         padding: '10px 0',
         textAlign: 'center',
         color: '#07acc2',
@@ -536,10 +551,10 @@
     },
     cellStyleCenter() {
       return {
-        padding: '7.5px 0',
+        padding: '7px 0',
         textAlign: 'center',
-        backgroundColor: '#000',
-        color: '#fff',
+        backgroundColor: 'transparent ',
+        color: '#c7e7ff',
         border: 'none',
         fontSize: '18px'
       }
@@ -548,65 +563,126 @@
 }
 </script>
 
-<style scoped lang="scss">
-
-$main_color:#09d8f2;
+<style lang="scss" scoped>
+$main_color: #09d8f2;
 $color01: #00FFFF;
-.tableData{
-  background: #000;
+.tableData {
+  background: transparent;
 }
 
-.el-table__empty-text{
+.el-table::before {
+  height: 0;
+}
+
+.el-table__empty-text {
   color: $main_color;
+}
+
+.tableDataCell {
+  ::v-deep .cell {
+    padding: 0 2px;
+  }
 }
 
 ::v-deep .el-table__body-wrapper::-webkit-scrollbar {
   /* width: 0;瀹藉害涓�0鏆楄棌 */
   width: 0;
+  background: transparent;
 }
 
-::v-deep .el-table::before {
-  height: 0;
+::v-deep .el-table__body-wrapper {
+  background: transparent;
 }
 
-::v-deep .cell {
-  padding: 0 !important;
-  //font-size: 16px;
-  font-size: 18px;
+::v-deep .el-table th,
+::v-deep .el-table tr,
+::v-deep .el-table td {
+  background-color: transparent;
 }
-</style>
 
-<!--鏄熺┖-->
-<style lang="css" scoped>
-@keyframes rotate {
+.all_block01 {
+  width: 237px;
+  height: 180px;
+}
+
+.all_block02 {
+  width: 100%;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.all_block03 {
+  width: 199px;
+  height: 180px;
+}
+
+.all_block04 {
+  width: 100%;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.kb_center_block_children {
+  height: 180px;
+  //border: 1px solid $kbBorderColor;
+  width: 240px;
+  display: flex;
+  z-index: 2;
+  justify-content: space-around;
+  align-items: center;
+  flex-direction: column;
+  margin: 10px;
+  font-size: 22px;
+
+  .box02 {
+    background: url("../../assets/images/box02.png") no-repeat;
+    transform: scale(1.5);
+    width: 145px;
+    height: 84px;
+
+  }
+}
+
+.all_block05 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 60px;
+}
+
+.all_block06 {
+  position: absolute;
+  animation: upDown2 3s ease-in-out infinite;
+  left: 290px;
+}
+
+.all_block07 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 520px;
+}
+
+@keyframes upDown {
   0% {
-    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
+    top: 50px;
+  }
+  50% {
+    top: 100px;
   }
   100% {
-    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
+    top: 50px;
   }
 }
 
-.stars {
-  transform: perspective(500px);
-  transform-style: preserve-3d;
-  position: absolute;
-  perspective-origin: 50% 100%;
-  left: 45%;
-  animation: rotate 90s infinite linear;
-  bottom: 0;
-  z-index: 102;
+@keyframes upDown2 {
+  0% {
+    top: 100px;
+  }
+  50% {
+    top: 50px;
+  }
+  100% {
+    top: 100px;
+  }
 }
 
-.star {
-  width: 2px;
-  height: 2px;
-  /*background: #f7f7b6;*/
-  background: #8edffc;
-  position: absolute;
-  left: 0;
-  top: 0;
-  backface-visibility: hidden;
-  z-index: 102;
-}
 </style>
diff --git a/src/views/kanbanManager/zhkb.vue b/src/views/kanbanManager/zhkb.vue
index 4c34ef1..c302346 100644
--- a/src/views/kanbanManager/zhkb.vue
+++ b/src/views/kanbanManager/zhkb.vue
@@ -6,7 +6,7 @@
 
       <div class="kb_header">
         <div class="kb_headTime" style="top: 35px;left:  20px">
-          <span>姘稿悍甯傚法绔嬮槻鎶ょ敤鍝佹湁闄愬叕鍙�</span>
+          <span>娴欐睙绫宠埅绉戞妧鏈夐檺鍏徃</span>
         </div>
 
         <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
@@ -25,16 +25,16 @@
           <div style="width: 1000px;">
             <div class="smallTitle">
               <svg-icon icon-class="cxjg" class="svg_class" />
-              鐢熶骇璁㈠崟(褰撴湀)
+              鐢熶骇璁㈠崟(杩戜竴鍛�)
             </div>
             <div
               class="lineContent horn"
               style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
             >
               <div style="height: 180px;padding: 10px;display: flex;justify-content: space-around">
-                <div v-for="i in LeftTopData01" :key="i.wkshp_code" class="flex_c_s">
-                  <div class="all_block01 flex_c_s">
-                    <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div>
+                <div v-for="i in LeftTopData01" :key="i.click_date" class="flex_c_s">
+                  <div class="all_block01 flex_c_s" style="width: 134px;">
+                    <div class="flex_c_c all_block02">{{ i.click_date }}</div>
                     <div class="" style="display: flex;justify-content:space-between">
                       <div class="all_block02 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
                       <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>
@@ -102,24 +102,8 @@
               浠撳簱搴撳瓨
             </div>
             <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
-              <div style="display: flex;justify-content: center;position: relative">
-                <div class="kb_center_block_children all_block05">
-                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.Y) }}</div>
-                  <div class="box02" />
-                  <div>鍘熸潗鏂�</div>
-                </div>
-                <div class="kb_center_block_children all_block06">
-                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.B) }}</div>
-                  <div class="box02" />
-                  <div>鍗婃垚鍝�</div>
-                </div>
-                <div class="kb_center_block_children all_block07">
-                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.C) }}</div>
-                  <div class="box02" />
-                  <div>浜ф垚鍝�</div>
-                </div>
+              <div id="zhkb04" class="flex_c_c" style="width: 100%;height:100%" />
 
-              </div>
             </div>
           </div>
         </div>
@@ -130,14 +114,13 @@
 
 <script>
 import './kbCommon.css'
-import { loadEcharts, all01, all02, cjzl03 } from '@/utils/myEcharts'
+import { loadEcharts, all01, all02, cjzl03, zhkb04 } from '@/utils/myEcharts'
 import {
   WorkShopCompreLeftTop,
   WorkShopCompreRightBottom,
   WorkShopCompreRightTop,
   WorkShopProduceBottomLeftData
 } from '@/api/kanbanManager'
-import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
 
 export default {
   name: 'Cjsc',
@@ -168,157 +151,88 @@
     }, 1000 * 60 * 120)
   },
   mounted() {
+    // 鐩戝惉缃戠粶鏄惁鍦ㄧ嚎
+    window.addEventListener('online', this.updateOnlineStatus)
+    window.addEventListener('offline', this.updateOnlineStatus)
+    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
+
     this.getAllApi()
   },
+  beforeDestroy() {
+    window.removeEventListener('online', this.updateOnlineStatus)
+    window.removeEventListener('offline', this.updateOnlineStatus)
+  },
   methods: {
+    // 鏇存柊缃戠粶鐘舵��
+    updateOnlineStatus(e) {
+      if (e.isFirst) {
+        // console.log('x')
+      } else {
+        const loading = this.$loading({
+          lock: true,
+          text: '鏂綉浜嗭紝姝e湪鎷煎懡鑱旂綉涓紝璇锋鏌ョ綉缁滄槸鍚︽甯�...',
+          spinner: 'el-icon-loading',
+          customClass: 'osloading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        const { type } = e
+        this.onLine = type === 'online'
+        if (this.onLine) {
+          loading.close()
+          this.$message.success('缃戠粶杩炴帴鎴愬姛锛�')
+        } else {
+          this.$message.error('缃戠粶鎺夌嚎锛岃鍏虫敞缃戠粶鐘舵�侊紒')
+        }
+      }
+    },
     async getAllApi() {
-      const res = await PrentOrganizationNoCompany()
-      this.wkshopArr = res.data
+      const res2 = await WorkShopCompreLeftTop()
+      this.LeftTopData01 = res2.data.LeftTop
+      this.LeftTopData02 = res2.data.LeftBottom
 
-      const temp = ['00401', '00402', '00501']
-
-      temp.forEach(i => {
-        const aa = this.wkshopArr.find(j => j.torg_code === i).torg_name
-        this.legendData.push(aa)
-      })
-
-      const res2 = await WorkShopCompreLeftTop({ wkshopcode: temp.join(',') })
-      for (const res2Key in res2.data.LeftTop) {
-        const data = {
-          good_qty: 0,
-          plan_qty: 0,
-          wkshp_code: '',
-          wkshp_name: ''
-        }
-        if (temp.includes(res2Key)) {
-          data.good_qty = res2.data.LeftTop[res2Key][0].good_qty
-          data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty
-          data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code
-          data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
-          this.LeftTopData01.push(data)
-        }
-      }
-      for (const res2Key in res2.data.LeftBottom) {
-        const data = {
-          quantity: 0,
-          wkshp_code: '',
-          wkshp_name: ''
-        }
-        if (temp.includes(res2Key)) {
-          data.quantity = res2.data.LeftBottom[res2Key][0].quantity
-          data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty
-          data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code
-          data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
-          this.LeftTopData02.push(data)
-        }
-      }
-      loadEcharts('all01', all01(this.legendData, this.LeftTopData02))
+      loadEcharts('all01', all01(res2.data.LeftTop.map(i => i.click_date), this.LeftTopData02))
 
       setInterval(() => {
-        WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }).then(res2 => {
-          this.LeftTopData01 = []
-          this.LeftTopData02 = []
-          for (const res2Key in res2.data.LeftTop) {
-            const data = {
-              good_qty: 0,
-              plan_qty: 0,
-              wkshp_code: '',
-              wkshp_name: ''
-            }
-            if (temp.includes(res2Key)) {
-              data.good_qty = res2.data.LeftTop[res2Key][0].good_qty
-              data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty
-              data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code
-              data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
-              this.LeftTopData01.push(data)
-            }
-          }
-          for (const res2Key in res2.data.LeftBottom) {
-            const data = {
-              quantity: 0,
-              wkshp_code: '',
-              wkshp_name: ''
-            }
-            if (temp.includes(res2Key)) {
-              data.quantity = res2.data.LeftBottom[res2Key][0].quantity
-              data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty
-              data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code
-              data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
-              this.LeftTopData02.push(data)
-            }
-          }
-          loadEcharts('all01', all01(this.legendData, this.LeftTopData02))
+        WorkShopCompreLeftTop().then(res2 => {
+          this.LeftTopData01 = res2.data.LeftTop
+          this.LeftTopData02 = res2.data.LeftBottom
+          loadEcharts('all01', all01(res2.data.LeftTop.map(i => i.click_date), this.LeftTopData02))
         })
       }, 1000 * 30)
 
       const res3 = await WorkShopCompreRightTop()
-      res3.data.RightTop.forEach(i => {
-        this.RightTopData01.push({
-          Quarter: i.Quarter,
-          quantity: i.quantity,
-          ouquantity: i.ouquantity
-        })
-      })
-      res3.data.RightBottom.forEach(i => {
-        this.RightTopData02.push({
-          Month: i.Month + '鏈�',
-          quantity: i.quantity,
-          ouquantity: i.ouquantity
-        })
-      })
+      this.RightTopData01 = res3.data.RightTop
+      this.RightTopData02 = res3.data.RightBottom
       loadEcharts('all02', all02(this.RightTopData02))
       setInterval(() => {
         WorkShopCompreRightTop().then(res3 => {
-          this.RightTopData01 = []
-          this.RightTopData02 = []
-          res3.data.RightTop.forEach(i => {
-            this.RightTopData01.push({
-              Quarter: i.Quarter,
-              quantity: i.quantity,
-              ouquantity: i.ouquantity
-            })
-          })
-          res3.data.RightBottom.forEach(i => {
-            this.RightTopData02.push({
-              Month: i.Month + '鏈�',
-              quantity: i.quantity,
-              ouquantity: i.ouquantity
-            })
-          })
+          this.RightTopData01 = res3.data.RightTop
+          this.RightTopData02 = res3.data.RightBottom
           loadEcharts('all02', all02(this.RightTopData02))
         })
       }, 1000 * 40)
 
-      const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.join(',') })
-      this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date)
-      for (const res4Key in res4.data) {
-        if (temp.includes(res4Key)) {
-          const bb = res4.data[res4Key].map(i => i.count)
-          this.cjzl03_yData.push(bb)
-        }
-      }
+      const res4 = await WorkShopProduceBottomLeftData()
+      this.cjzl03_xData = res4.data.map(i => i.click_date)
+      this.cjzl03_yData = res4.data.map(i => i.count)
+
       loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
       setInterval(() => {
-        WorkShopProduceBottomLeftData({ wkshopcode: temp.join(',') }).then(res4 => {
-          this.cjzl03_yData = []
-
-          this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date)
-          for (const res4Key in res4.data) {
-            if (temp.includes(res4Key)) {
-              const bb = res4.data[res4Key].map(i => i.count)
-              this.cjzl03_yData.push(bb)
-            }
-          }
+        WorkShopProduceBottomLeftData().then(res4 => {
+          this.cjzl03_xData = res4.data.map(i => i.click_date)
+          this.cjzl03_yData = res4.data.map(i => i.count)
           loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
         })
       }, 1000 * 50)
 
       const res5 = await WorkShopCompreRightBottom()
       this.RightBottom = res5.data
+      loadEcharts('zhkb04', zhkb04(this.RightBottom.map(i => i.Type), this.RightBottom.map(i => i.Qty)))
 
       setInterval(() => {
         WorkShopCompreRightBottom().then(res5 => {
           this.RightBottom = res5.data
+          loadEcharts('zhkb04', zhkb04(this.RightBottom.map(i => i.Type), this.RightBottom.map(i => i.Qty)))
         })
       }, 1000 * 60)
     },
diff --git a/vue.config.js b/vue.config.js
index d03b185..eb8073e 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -52,7 +52,7 @@
     },
     proxy: {
       [process.env.VUE_APP_BASE_API]: {
-        target: 'http://121.196.36.24:8030', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
+        target: 'http://192.168.1.190:8000', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
         // target: 'http://122.227.18.22:8000', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
         changeOrigin: true, // 璇锋眰璺ㄥ煙鏃讹紝闇� 閰嶇疆姝ら」
         pathRewrite: { // 璺緞閲嶅啓,鏇挎崲target涓殑璇锋眰鍦板潃

--
Gitblit v1.9.3