diff --git a/.env.dev b/.env.dev
index d331d5a0..29069178 100644
--- a/.env.dev
+++ b/.env.dev
@@ -1,8 +1,8 @@
###
# @Author: Do not edit
# @Date: 2023-08-29 09:40:39
- # @LastEditTime: 2023-11-11 20:50:30
- # @LastEditors: DY
+ # @LastEditTime: 2023-11-15 09:09:12
+ # @LastEditors: zhp
# @Description:
###
# 开发环境配置
@@ -18,7 +18,7 @@ VUE_APP_TITLE = MES系统
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
# VUE_APP_BASE_API = 'http://192.168.1.49:48080'
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
-VUE_APP_BASE_API = 'http://192.168.0.33:48082'
+VUE_APP_BASE_API = 'http://192.168.4.159:48080'
# VUE_APP_BASE_API = 'http://192.168.1.56:48080'
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
# 路由懒加载
diff --git a/src/api/monitoring/statisticalData.js b/src/api/monitoring/statisticalData.js
index 4f19d699..cdf92812 100644
--- a/src/api/monitoring/statisticalData.js
+++ b/src/api/monitoring/statisticalData.js
@@ -1,7 +1,7 @@
/*
* @Author: zhp
* @Date: 2023-11-07 14:10:18
- * @LastEditTime: 2023-11-07 16:29:55
+ * @LastEditTime: 2023-11-14 14:46:04
* @LastEditors: zhp
* @Description:
*/
diff --git a/src/assets/img/1.jpg b/src/assets/img/1.jpg
new file mode 100644
index 00000000..005bc57c
Binary files /dev/null and b/src/assets/img/1.jpg differ
diff --git a/src/assets/img/OperationalOverview/back.png b/src/assets/img/OperationalOverview/back.png
new file mode 100644
index 00000000..ad2afe91
Binary files /dev/null and b/src/assets/img/OperationalOverview/back.png differ
diff --git a/src/assets/img/OperationalOverview/title.png b/src/assets/img/OperationalOverview/title.png
new file mode 100644
index 00000000..b8a7e9dd
Binary files /dev/null and b/src/assets/img/OperationalOverview/title.png differ
diff --git a/src/assets/img/Toughenedfurnace.png b/src/assets/img/Toughenedfurnace.png
new file mode 100644
index 00000000..80263bd9
Binary files /dev/null and b/src/assets/img/Toughenedfurnace.png differ
diff --git a/src/assets/img/back.jpg b/src/assets/img/back.jpg
new file mode 100644
index 00000000..61df5c8c
Binary files /dev/null and b/src/assets/img/back.jpg differ
diff --git a/src/assets/img/back.png b/src/assets/img/back.png
new file mode 100644
index 00000000..e9d7d397
Binary files /dev/null and b/src/assets/img/back.png differ
diff --git a/src/assets/img/back1.png b/src/assets/img/back1.png
new file mode 100644
index 00000000..8b811db9
Binary files /dev/null and b/src/assets/img/back1.png differ
diff --git a/src/assets/img/bg-bottom-item.png b/src/assets/img/bg-bottom-item.png
new file mode 100644
index 00000000..a45ee8ee
Binary files /dev/null and b/src/assets/img/bg-bottom-item.png differ
diff --git a/src/assets/img/choicepart/ArtManager.png b/src/assets/img/choicepart/ArtManager.png
new file mode 100644
index 00000000..ae319647
Binary files /dev/null and b/src/assets/img/choicepart/ArtManager.png differ
diff --git a/src/assets/img/choicepart/ArticleManager.png b/src/assets/img/choicepart/ArticleManager.png
new file mode 100644
index 00000000..30a1a7e8
Binary files /dev/null and b/src/assets/img/choicepart/ArticleManager.png differ
diff --git a/src/assets/img/choicepart/DataAnalysis.png b/src/assets/img/choicepart/DataAnalysis.png
new file mode 100644
index 00000000..672cc103
Binary files /dev/null and b/src/assets/img/choicepart/DataAnalysis.png differ
diff --git a/src/assets/img/choicepart/EquipmentManager.png b/src/assets/img/choicepart/EquipmentManager.png
new file mode 100644
index 00000000..763e5396
Binary files /dev/null and b/src/assets/img/choicepart/EquipmentManager.png differ
diff --git a/src/assets/img/choicepart/MaterialsManage.png b/src/assets/img/choicepart/MaterialsManage.png
new file mode 100644
index 00000000..d808730d
Binary files /dev/null and b/src/assets/img/choicepart/MaterialsManage.png differ
diff --git a/src/assets/img/choicepart/OperationalOverview.png b/src/assets/img/choicepart/OperationalOverview.png
new file mode 100644
index 00000000..77af0878
Binary files /dev/null and b/src/assets/img/choicepart/OperationalOverview.png differ
diff --git a/src/assets/img/choicepart/WarehouseManager.png b/src/assets/img/choicepart/WarehouseManager.png
new file mode 100644
index 00000000..8f18d70f
Binary files /dev/null and b/src/assets/img/choicepart/WarehouseManager.png differ
diff --git a/src/assets/img/choicepart/basicData.png b/src/assets/img/choicepart/basicData.png
new file mode 100644
index 00000000..f1d1b73d
Binary files /dev/null and b/src/assets/img/choicepart/basicData.png differ
diff --git a/src/assets/img/choicepart/choice-item-back.png b/src/assets/img/choicepart/choice-item-back.png
new file mode 100644
index 00000000..1cddcef5
Binary files /dev/null and b/src/assets/img/choicepart/choice-item-back.png differ
diff --git a/src/assets/img/choicepart/choicepart-back.png b/src/assets/img/choicepart/choicepart-back.png
new file mode 100644
index 00000000..b16893b4
Binary files /dev/null and b/src/assets/img/choicepart/choicepart-back.png differ
diff --git a/src/assets/img/choicepart/energyManage.png b/src/assets/img/choicepart/energyManage.png
new file mode 100644
index 00000000..f1d1b73d
Binary files /dev/null and b/src/assets/img/choicepart/energyManage.png differ
diff --git a/src/assets/img/choicepart/factoryManage.png b/src/assets/img/choicepart/factoryManage.png
new file mode 100644
index 00000000..a804d851
Binary files /dev/null and b/src/assets/img/choicepart/factoryManage.png differ
diff --git a/src/assets/img/choicepart/formManage.png b/src/assets/img/choicepart/formManage.png
new file mode 100644
index 00000000..7c8a3216
Binary files /dev/null and b/src/assets/img/choicepart/formManage.png differ
diff --git a/src/assets/img/choicepart/orderManage.png b/src/assets/img/choicepart/orderManage.png
new file mode 100644
index 00000000..23038d23
Binary files /dev/null and b/src/assets/img/choicepart/orderManage.png differ
diff --git a/src/assets/img/choicepart/packingManage.png b/src/assets/img/choicepart/packingManage.png
new file mode 100644
index 00000000..60ccd89e
Binary files /dev/null and b/src/assets/img/choicepart/packingManage.png differ
diff --git a/src/assets/img/choicepart/qualityManage.png b/src/assets/img/choicepart/qualityManage.png
new file mode 100644
index 00000000..e6680dfa
Binary files /dev/null and b/src/assets/img/choicepart/qualityManage.png differ
diff --git a/src/assets/img/cnbm.png b/src/assets/img/cnbm.png
new file mode 100644
index 00000000..ed7d3fdf
Binary files /dev/null and b/src/assets/img/cnbm.png differ
diff --git a/src/assets/img/empty.png b/src/assets/img/empty.png
new file mode 100644
index 00000000..de349a33
Binary files /dev/null and b/src/assets/img/empty.png differ
diff --git a/src/assets/img/energy.png b/src/assets/img/energy.png
new file mode 100644
index 00000000..cb341110
Binary files /dev/null and b/src/assets/img/energy.png differ
diff --git a/src/assets/img/head-w.png b/src/assets/img/head-w.png
new file mode 100644
index 00000000..85dca606
Binary files /dev/null and b/src/assets/img/head-w.png differ
diff --git a/src/assets/img/head.png b/src/assets/img/head.png
new file mode 100644
index 00000000..0e5d2483
Binary files /dev/null and b/src/assets/img/head.png differ
diff --git a/src/assets/img/jiantou.svg b/src/assets/img/jiantou.svg
new file mode 100644
index 00000000..9652390b
--- /dev/null
+++ b/src/assets/img/jiantou.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/src/assets/img/login-back.jpg b/src/assets/img/login-back.jpg
new file mode 100644
index 00000000..cfed13e1
Binary files /dev/null and b/src/assets/img/login-back.jpg differ
diff --git a/src/assets/img/login-back.png b/src/assets/img/login-back.png
new file mode 100644
index 00000000..a98739e7
Binary files /dev/null and b/src/assets/img/login-back.png differ
diff --git a/src/assets/img/login-new.jpg b/src/assets/img/login-new.jpg
new file mode 100644
index 00000000..b39ac147
Binary files /dev/null and b/src/assets/img/login-new.jpg differ
diff --git a/src/assets/img/login.gif b/src/assets/img/login.gif
new file mode 100644
index 00000000..8c931207
Binary files /dev/null and b/src/assets/img/login.gif differ
diff --git a/src/assets/img/login1.gif b/src/assets/img/login1.gif
new file mode 100644
index 00000000..2ca2b406
Binary files /dev/null and b/src/assets/img/login1.gif differ
diff --git a/src/assets/img/logo.png b/src/assets/img/logo.png
new file mode 100644
index 00000000..9fdd8338
Binary files /dev/null and b/src/assets/img/logo.png differ
diff --git a/src/assets/img/medal/champion.png b/src/assets/img/medal/champion.png
new file mode 100644
index 00000000..38006430
Binary files /dev/null and b/src/assets/img/medal/champion.png differ
diff --git a/src/assets/img/medal/secondPlace.png b/src/assets/img/medal/secondPlace.png
new file mode 100644
index 00000000..425b76c5
Binary files /dev/null and b/src/assets/img/medal/secondPlace.png differ
diff --git a/src/assets/img/medal/thirdPlace.png b/src/assets/img/medal/thirdPlace.png
new file mode 100644
index 00000000..db1d9edc
Binary files /dev/null and b/src/assets/img/medal/thirdPlace.png differ
diff --git a/src/assets/img/status.png b/src/assets/img/status.png
new file mode 100644
index 00000000..283cdd41
Binary files /dev/null and b/src/assets/img/status.png differ
diff --git a/src/assets/img/uploadIcon.png b/src/assets/img/uploadIcon.png
new file mode 100644
index 00000000..fb344f9f
Binary files /dev/null and b/src/assets/img/uploadIcon.png differ
diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss
index 17ef2e4f..d9b3a411 100644
--- a/src/assets/styles/ruoyi.scss
+++ b/src/assets/styles/ruoyi.scss
@@ -104,8 +104,8 @@ h6 {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
- height: 40px;
- font-size: 13px;
+ // height: 40px;
+ // font-size: 13px;
}
}
.el-table__body-wrapper {
diff --git a/src/router/index.js b/src/router/index.js
index 6c36c4b4..b7ea83f8 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -88,6 +88,31 @@ export const constantRoutes = [
// // }
// // ]
// },
+ {
+ path: '/AGVBoard',
+ name: 'AGVBoard',
+ component: Layout,
+ // route level code-splitting
+ // this generates a separate chunk (about.[hash].js) for this route
+ // which is lazy-loaded when the route is visited.
+ component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/AGVBoard.vue')
+ },
+ {
+ path: '/coldBoard',
+ name: 'coldBoard',
+ // route level code-splitting
+ // this generates a separate chunk (about.[hash].js) for this route
+ // which is lazy-loaded when the route is visited.
+ component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/coldBoard.vue')
+ },
+ {
+ path: '/processingBoard',
+ name: 'processingBoard',
+ // route level code-splitting
+ // this generates a separate chunk (about.[hash].js) for this route
+ // which is lazy-loaded when the route is visited.
+ component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/processingBoard.vue')
+ },
{
path: '/user',
component: Layout,
diff --git a/src/views/OperationalOverview/AGVBoard.vue b/src/views/OperationalOverview/AGVBoard.vue
new file mode 100644
index 00000000..5dfda096
--- /dev/null
+++ b/src/views/OperationalOverview/AGVBoard.vue
@@ -0,0 +1,976 @@
+
+
+
+
+
+ 许昌安彩AGV原片周转看板
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ op.name }}
+
+ {{ op.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/coldBoard.vue b/src/views/OperationalOverview/coldBoard.vue
new file mode 100644
index 00000000..1a83f074
--- /dev/null
+++ b/src/views/OperationalOverview/coldBoard.vue
@@ -0,0 +1,1131 @@
+
+
+
+
+ 许昌安彩冷端看板
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/BarChart.vue b/src/views/OperationalOverview/components/BarChart.vue
new file mode 100644
index 00000000..b719d38c
--- /dev/null
+++ b/src/views/OperationalOverview/components/BarChart.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/LineChart.vue b/src/views/OperationalOverview/components/LineChart.vue
new file mode 100644
index 00000000..0b87c726
--- /dev/null
+++ b/src/views/OperationalOverview/components/LineChart.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/LineRadioGroup.vue b/src/views/OperationalOverview/components/LineRadioGroup.vue
new file mode 100644
index 00000000..e69de29b
diff --git a/src/views/OperationalOverview/components/PieChart.vue b/src/views/OperationalOverview/components/PieChart.vue
new file mode 100644
index 00000000..da36e585
--- /dev/null
+++ b/src/views/OperationalOverview/components/PieChart.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue
new file mode 100644
index 00000000..49ef81f1
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue
new file mode 100644
index 00000000..1d5ef821
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue
new file mode 100644
index 00000000..cf643a53
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue
new file mode 100644
index 00000000..84b5976b
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+ {{ scope.row[item.prop] | commonFilter(item.filter) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue
new file mode 100644
index 00000000..eef54784
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue
new file mode 100644
index 00000000..961ab65f
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue b/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue
new file mode 100644
index 00000000..dc3cf0b7
--- /dev/null
+++ b/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue
@@ -0,0 +1,83 @@
+
+
+
+
+ - 开始时间 -
+ 2021.1.26 13:30:21
+
+
+
+ - 班组名称 -
+ 中班执行一组
+
+
+ - 原片投入(片) -
+ 122
+
+
+ - 投入面积(㎡) -
+ 12000
+
+
+
+
+ - 产品规格 -
+ 110
+
+
+ - 执行工单 -
+ 110
+
+
+ - 成品率 -
+ 98.8%
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/SimpleLineChart.vue b/src/views/OperationalOverview/components/SimpleLineChart.vue
new file mode 100644
index 00000000..a62b7157
--- /dev/null
+++ b/src/views/OperationalOverview/components/SimpleLineChart.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/alarmLevel.vue b/src/views/OperationalOverview/components/alarmLevel.vue
new file mode 100644
index 00000000..ec999515
--- /dev/null
+++ b/src/views/OperationalOverview/components/alarmLevel.vue
@@ -0,0 +1,51 @@
+
+
+
+
+ {{ injectData.level }}级
+
+
+
diff --git a/src/views/OperationalOverview/components/baseContainer/index.vue b/src/views/OperationalOverview/components/baseContainer/index.vue
new file mode 100644
index 00000000..09b91e92
--- /dev/null
+++ b/src/views/OperationalOverview/components/baseContainer/index.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/baseContainer1/index.vue b/src/views/OperationalOverview/components/baseContainer1/index.vue
new file mode 100644
index 00000000..78249620
--- /dev/null
+++ b/src/views/OperationalOverview/components/baseContainer1/index.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/baseTable.vue b/src/views/OperationalOverview/components/baseTable.vue
new file mode 100644
index 00000000..52fc5ca8
--- /dev/null
+++ b/src/views/OperationalOverview/components/baseTable.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+ {{ scope.row[item.prop] | commonFilter(item.filter) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/baseVideo.vue b/src/views/OperationalOverview/components/baseVideo.vue
new file mode 100644
index 00000000..64d2403f
--- /dev/null
+++ b/src/views/OperationalOverview/components/baseVideo.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/doubleYChart .vue b/src/views/OperationalOverview/components/doubleYChart .vue
new file mode 100644
index 00000000..3b91bfb8
--- /dev/null
+++ b/src/views/OperationalOverview/components/doubleYChart .vue
@@ -0,0 +1,325 @@
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/linearBarChart.vue b/src/views/OperationalOverview/components/linearBarChart.vue
new file mode 100644
index 00000000..9dea0694
--- /dev/null
+++ b/src/views/OperationalOverview/components/linearBarChart.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/mixins/resize.js b/src/views/OperationalOverview/components/mixins/resize.js
new file mode 100644
index 00000000..234953b1
--- /dev/null
+++ b/src/views/OperationalOverview/components/mixins/resize.js
@@ -0,0 +1,55 @@
+import { debounce } from '@/utils'
+
+export default {
+ data() {
+ return {
+ $_sidebarElm: null,
+ $_resizeHandler: null
+ }
+ },
+ mounted() {
+ this.$_resizeHandler = debounce(() => {
+ if (this.chart) {
+ this.chart.resize()
+ }
+ }, 100)
+ this.$_initResizeEvent()
+ this.$_initSidebarResizeEvent()
+ },
+ beforeDestroy() {
+ this.$_destroyResizeEvent()
+ this.$_destroySidebarResizeEvent()
+ },
+ // to fixed bug when cached by keep-alive
+ // https://github.com/PanJiaChen/vue-element-admin/issues/2116
+ activated() {
+ this.$_initResizeEvent()
+ this.$_initSidebarResizeEvent()
+ },
+ deactivated() {
+ this.$_destroyResizeEvent()
+ this.$_destroySidebarResizeEvent()
+ },
+ methods: {
+ // use $_ for mixins properties
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
+ $_initResizeEvent() {
+ window.addEventListener('resize', this.$_resizeHandler)
+ },
+ $_destroyResizeEvent() {
+ window.removeEventListener('resize', this.$_resizeHandler)
+ },
+ $_sidebarResizeHandler(e) {
+ if (e.propertyName === 'width') {
+ this.$_resizeHandler()
+ }
+ },
+ $_initSidebarResizeEvent() {
+ this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
+ this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
+ },
+ $_destroySidebarResizeEvent() {
+ this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
+ }
+ }
+}
diff --git a/src/views/OperationalOverview/components/nextDay.vue b/src/views/OperationalOverview/components/nextDay.vue
new file mode 100644
index 00000000..ba01a329
--- /dev/null
+++ b/src/views/OperationalOverview/components/nextDay.vue
@@ -0,0 +1,40 @@
+
+
+
+ {{ injectData.nextLong }}
+
+
+
+
diff --git a/src/views/OperationalOverview/components/threeBarChart.vue b/src/views/OperationalOverview/components/threeBarChart.vue
new file mode 100644
index 00000000..43fce6d1
--- /dev/null
+++ b/src/views/OperationalOverview/components/threeBarChart.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/topRadioGroup.vue b/src/views/OperationalOverview/components/topRadioGroup.vue
new file mode 100644
index 00000000..f1339253
--- /dev/null
+++ b/src/views/OperationalOverview/components/topRadioGroup.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/utilChart.vue b/src/views/OperationalOverview/components/utilChart.vue
new file mode 100644
index 00000000..cc1b553a
--- /dev/null
+++ b/src/views/OperationalOverview/components/utilChart.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+ {{ percent }}%
+
+
+
+
+
diff --git a/src/views/OperationalOverview/components/videoFooter.vue b/src/views/OperationalOverview/components/videoFooter.vue
new file mode 100644
index 00000000..d9f3fcb7
--- /dev/null
+++ b/src/views/OperationalOverview/components/videoFooter.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/processingBoard.vue b/src/views/OperationalOverview/processingBoard.vue
new file mode 100644
index 00000000..a499d999
--- /dev/null
+++ b/src/views/OperationalOverview/processingBoard.vue
@@ -0,0 +1,969 @@
+
+
+
+
+
+ 许昌安彩深加工看板
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ op.name }}
+
+ {{ op.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/OperationalOverview/styles/btn.scss b/src/views/OperationalOverview/styles/btn.scss
new file mode 100644
index 00000000..e6ba1a8e
--- /dev/null
+++ b/src/views/OperationalOverview/styles/btn.scss
@@ -0,0 +1,99 @@
+@import './variables.scss';
+
+@mixin colorBtn($color) {
+ background: $color;
+
+ &:hover {
+ color: $color;
+
+ &:before,
+ &:after {
+ background: $color;
+ }
+ }
+}
+
+.blue-btn {
+ @include colorBtn($blue)
+}
+
+.light-blue-btn {
+ @include colorBtn($light-blue)
+}
+
+.red-btn {
+ @include colorBtn($red)
+}
+
+.pink-btn {
+ @include colorBtn($pink)
+}
+
+.green-btn {
+ @include colorBtn($green)
+}
+
+.tiffany-btn {
+ @include colorBtn($tiffany)
+}
+
+.yellow-btn {
+ @include colorBtn($yellow)
+}
+
+.pan-btn {
+ font-size: 14px;
+ color: #fff;
+ padding: 14px 36px;
+ border-radius: 8px;
+ border: none;
+ outline: none;
+ transition: 600ms ease all;
+ position: relative;
+ display: inline-block;
+
+ &:hover {
+ background: #fff;
+
+ &:before,
+ &:after {
+ width: 100%;
+ transition: 600ms ease all;
+ }
+ }
+
+ &:before,
+ &:after {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 2px;
+ width: 0;
+ transition: 400ms ease all;
+ }
+
+ &::after {
+ right: inherit;
+ top: inherit;
+ left: 0;
+ bottom: 0;
+ }
+}
+
+.custom-button {
+ display: inline-block;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: pointer;
+ background: #fff;
+ color: #fff;
+ -webkit-appearance: none;
+ text-align: center;
+ box-sizing: border-box;
+ outline: 0;
+ margin: 0;
+ padding: 10px 15px;
+ font-size: 14px;
+ border-radius: 4px;
+}
diff --git a/src/views/OperationalOverview/styles/element-ui.scss b/src/views/OperationalOverview/styles/element-ui.scss
new file mode 100644
index 00000000..b6edbddf
--- /dev/null
+++ b/src/views/OperationalOverview/styles/element-ui.scss
@@ -0,0 +1,173 @@
+// cover some element-ui styles
+
+.el-breadcrumb__inner,
+.el-breadcrumb__inner a {
+ font-weight: 400 !important;
+}
+
+.el-upload {
+ input[type="file"] {
+ display: none !important;
+ }
+}
+
+.el-upload__input {
+ display: none;
+}
+
+.cell {
+ .el-tag {
+ margin-right: 0px;
+ }
+}
+
+.visual-container {
+ .el-table {
+ .cell {
+ line-height: 1.2em !important;
+ }
+ }
+}
+.app-container {
+ .el-table th>.cell {
+ color: rgb(0, 0, 0,0.85);
+ }
+ .el-table__body tr.current-row>td {
+ background-color: #EAF1FC;
+ }
+
+}
+.el-table--medium th, .el-table--medium td {
+ padding: 5px 0;
+}
+
+::v-deep .el-table__fixed-right {
+ right: 0 !important;
+ height: 100% !important;
+}
+.el-button--mini {
+ padding: 4px 0;
+}
+.small-padding {
+ .cell {
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+}
+
+.fixed-width {
+ .el-button--mini {
+ padding: 7px 10px;
+ min-width: 60px;
+ }
+}
+
+.status-col {
+ .cell {
+ padding: 0 10px;
+ text-align: center;
+
+ .el-tag {
+ margin-right: 0px;
+ }
+ }
+}
+
+.el-button--primary {
+ background-color: #0B58FF !important;
+ border-color: #0B58FF !important;
+}
+// to fixed https://github.com/ElemeFE/element/issues/2461
+.el-dialog {
+ transform: none;
+ left: 0;
+ position: relative;
+ margin: 0 auto;
+ border-radius: 4px;
+}
+
+.el-dialog__header {
+ padding: 12px 24px 8px;
+ border-bottom: 1px solid #E9E9E9;
+ text-align: left;
+}
+
+.el-dialog__title {
+ font-size: 16px;
+ font-weight: 700;
+ color: rgba(0, 0, 0, 0.85);
+}
+
+.el-form-item__label {
+ font-size: 14px;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.65);
+ padding-right: 8px;
+}
+
+.el-dialog__headerbtn {
+ top: 16px;
+ right: 24px;
+}
+
+.el-form-item--medium .el-form-item__label {
+ line-height: 32px;
+}
+
+.el-button--medium {
+ padding: 8px 16px;
+}
+
+.el-select {
+ width: 100%;
+}
+
+.el-switch.is-checked .el-switch__core {
+ background-color: #0B58FF;
+ border-color: #0B58FF;
+}
+
+.el-radio__input.is-checked .el-radio__inner {
+ background-color: #0B58FF;
+ border-color: #0B58FF;
+}
+
+.el-button--text{
+ color:#0B58FF;
+}
+
+.el-tabs__item.is-active {
+ color: #0b58ff;
+}
+
+.el-tooltip__popper.is-dark {
+ max-width: 1100px;
+}
+// refine element ui upload
+.upload-container {
+ .el-upload {
+ width: 100%;
+
+ .el-upload-dragger {
+ width: 100%;
+ height: 200px;
+ }
+ }
+}
+
+// dropdown
+.el-dropdown-menu {
+ a {
+ display: block
+ }
+}
+
+// fix date-picker ui bug in filter-item
+.el-range-editor.el-input__inner {
+ display: inline-flex !important;
+}
+
+// to fix el-date-picker css style
+.el-range-separator {
+ box-sizing: content-box;
+}
diff --git a/src/views/OperationalOverview/styles/element-variables.scss b/src/views/OperationalOverview/styles/element-variables.scss
new file mode 100644
index 00000000..5bdc4dad
--- /dev/null
+++ b/src/views/OperationalOverview/styles/element-variables.scss
@@ -0,0 +1,31 @@
+/**
+* I think element-ui's default theme color is too light for long-term use.
+* So I modified the default color and you can modify it to your liking.
+**/
+
+/* theme color */
+$--color-primary: #1890ff;
+$--color-success: #13ce66;
+$--color-warning: #ffba00;
+$--color-danger: #ff4949;
+// $--color-info: #1E1E1E;
+
+$--button-font-weight: 400;
+
+// $--color-text-regular: #1f2d3d;
+
+$--border-color-light: #dfe4ed;
+$--border-color-lighter: #e6ebf5;
+
+$--table-border: 1px solid #dfe6ec;
+
+/* icon font path, required */
+$--font-path: "~element-ui/lib/theme-chalk/fonts";
+
+@import "~element-ui/packages/theme-chalk/src/index";
+
+// the :export directive is the magic sauce for webpack
+// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
+:export {
+ theme: $--color-primary;
+}
diff --git a/src/views/OperationalOverview/styles/index.scss b/src/views/OperationalOverview/styles/index.scss
new file mode 100644
index 00000000..577e7e66
--- /dev/null
+++ b/src/views/OperationalOverview/styles/index.scss
@@ -0,0 +1,319 @@
+@import './variables.scss';
+@import './mixin.scss';
+@import './transition.scss';
+@import './element-ui.scss';
+@import './sidebar.scss';
+@import './btn.scss';
+
+body {
+ height: 100%;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+}
+
+label {
+ font-weight: 700;
+}
+
+html {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+#app {
+ height: 100%;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+.no-padding {
+ padding: 0px !important;
+}
+
+.padding-content {
+ padding: 4px 0;
+}
+
+a:focus,
+a:active {
+ outline: none;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: none;
+}
+
+div:focus {
+ outline: none;
+}
+
+.fr {
+ float: right;
+}
+
+.fl {
+ float: left;
+}
+
+.pr-5 {
+ padding-right: 5px;
+}
+
+.pl-5 {
+ padding-left: 5px;
+}
+
+.block {
+ display: block;
+}
+
+.pointer {
+ cursor: pointer;
+}
+
+.inlineBlock {
+ display: block;
+}
+
+.clearfix {
+ &:after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+}
+
+aside {
+ background: #eef1f6;
+ padding: 8px 24px;
+ margin-bottom: 20px;
+ border-radius: 2px;
+ display: block;
+ line-height: 32px;
+ font-size: 16px;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ color: #2c3e50;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ a {
+ color: #337ab7;
+ cursor: pointer;
+
+ &:hover {
+ color: rgb(32, 160, 255);
+ }
+ }
+}
+
+//main-container全局样式
+.app-container {
+ margin:0 16px 0;
+ background-color: #fff;
+ border-radius: 4px;
+ padding: 16px 16px 0;
+ height: calc(100vh - 134px);
+ overflow: auto;
+}
+
+.components-container {
+ margin: 30px 50px;
+ position: relative;
+}
+
+// 覆盖原有的分页样式-start
+
+.el-pagination {
+ position: relative;
+}
+
+.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li {
+ background-color: #fff;
+}
+
+.el-pagination__jump {
+ margin-left: 125px;
+}
+
+.el-pagination__sizes {
+ position: absolute;
+ right: 100px;
+}
+
+.el-pagination.is-background .el-pager li:not(.disabled).active {
+ background-color: #0B58FF;
+}
+.el-pagination .el-select .el-input .el-input__inner {
+ height: 22px;
+}
+.el-badge__content {
+ border: none;
+}
+// 覆盖原有的分页样式-end
+
+.text-center {
+ text-align: center
+}
+
+.sub-navbar {
+ height: 50px;
+ line-height: 50px;
+ position: relative;
+ width: 100%;
+ text-align: right;
+ padding-right: 20px;
+ transition: 600ms ease position;
+ background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
+
+ .subtitle {
+ font-size: 20px;
+ color: #fff;
+ }
+
+ &.draft {
+ background: #d0d0d0;
+ }
+
+ &.deleted {
+ background: #d0d0d0;
+ }
+}
+
+.link-type,
+.link-type:focus {
+ color: #337ab7;
+ cursor: pointer;
+
+ &:hover {
+ color: rgb(32, 160, 255);
+ }
+}
+
+.filter-container {
+ padding-bottom: 10px;
+
+ .filter-item {
+ display: inline-block;
+ vertical-align: middle;
+ margin-bottom: 10px;
+ }
+}
+
+//refine vue-multiselect plugin
+.multiselect {
+ line-height: 16px;
+}
+
+.multiselect--active {
+ z-index: 1000 !important;
+}
+
+// 业务代码中
+.content-row {
+ padding: 10px 0;
+}
+
+.el-dialog {
+ width: 1000px;
+}
+.el-dialog__body {
+ padding: 30px 40px;
+}
+
+.el-dialog__wrapper {
+ backdrop-filter: blur(5px);
+}
+
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+ background-color: transparent;
+}
+
+::-webkit-scrollbar-track-piece {
+ background-color:rgba(144,147,153,0);
+}
+
+::-webkit-scrollbar-corner {
+ background-color:rgba(144,147,153,0);
+}
+
+::-webkit-scrollbar-track {
+ width: 6px;
+ background: rgba(144,147,153,0);
+ -webkit-border-radius: 2em;
+ -moz-border-radius: 2em;
+ border-radius: 2em;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: rgba(144,147,153,.5);
+ background-clip: padding-box;
+ min-height: 28px;
+ -webkit-border-radius: 2em;
+ -moz-border-radius: 2em;
+ border-radius: 2em;
+ transition: background-color .3s;
+ cursor: pointer;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background-color: rgba(144,147,153,.3);
+}
+
+// 数据分析单选框样式覆盖
+
+.app-container{
+ .data-analysis-radio{
+ .el-radio-button__inner {
+ border: 0;
+ padding: 7px 0;
+ margin: 0 15px;
+ }
+ .el-radio-button__orig-radio:checked+.el-radio-button__inner{
+ background-color: transparent;
+ color: #606266;
+ box-shadow: 0 0 0 0 transparent;
+ border-bottom: 2px solid #0B58FF;
+ }
+ .el-radio-button:first-child .el-radio-button__inner,
+ .el-radio-button:last-child .el-radio-button__inner {
+ border-radius: 0;
+ }
+ }
+}
+
+.el-table--group, .el-table--border {
+ border: none;
+}
+
+// 全局loading样式覆盖
+.el-loading-mask{
+ z-index: 99999;
+}
+
+
+input::-webkit-input-placeholder {
+ /* WebKit browsers */
+ font-size:12px;
+}
+input::-moz-placeholder {
+ /* Mozilla Firefox 19+ */
+ font-size:12px;
+}
+input:-ms-input-placeholder {
+ font-size:12px;
+}
\ No newline at end of file
diff --git a/src/views/OperationalOverview/styles/mixin.scss b/src/views/OperationalOverview/styles/mixin.scss
new file mode 100644
index 00000000..06fa0612
--- /dev/null
+++ b/src/views/OperationalOverview/styles/mixin.scss
@@ -0,0 +1,66 @@
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+@mixin scrollBar {
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+}
+
+@mixin relative {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+@mixin pct($pct) {
+ width: #{$pct};
+ position: relative;
+ margin: 0 auto;
+}
+
+@mixin triangle($width, $height, $color, $direction) {
+ $width: $width/2;
+ $color-border-style: $height solid $color;
+ $transparent-border-style: $width solid transparent;
+ height: 0;
+ width: 0;
+
+ @if $direction==up {
+ border-bottom: $color-border-style;
+ border-left: $transparent-border-style;
+ border-right: $transparent-border-style;
+ }
+
+ @else if $direction==right {
+ border-left: $color-border-style;
+ border-top: $transparent-border-style;
+ border-bottom: $transparent-border-style;
+ }
+
+ @else if $direction==down {
+ border-top: $color-border-style;
+ border-left: $transparent-border-style;
+ border-right: $transparent-border-style;
+ }
+
+ @else if $direction==left {
+ border-right: $color-border-style;
+ border-top: $transparent-border-style;
+ border-bottom: $transparent-border-style;
+ }
+}
diff --git a/src/views/OperationalOverview/styles/sidebar.scss b/src/views/OperationalOverview/styles/sidebar.scss
new file mode 100644
index 00000000..4c2691e4
--- /dev/null
+++ b/src/views/OperationalOverview/styles/sidebar.scss
@@ -0,0 +1,209 @@
+#app {
+
+ .main-container {
+ min-height: 100%;
+ transition: margin-left .28s;
+ // margin-left: $sideBarWidth;
+ position: relative;
+ }
+
+ .sidebar-container {
+ transition: width 0.28s;
+ // width: $sideBarWidth !important;
+ // background-color: $menuBg;
+ height: 100%;
+ position: fixed;
+ font-size: 0px;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1001;
+ overflow: hidden;
+
+ // reset element-ui css
+ .horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
+ }
+
+ .scrollbar-wrapper {
+ overflow-x: hidden !important;
+ }
+
+ .el-scrollbar__bar.is-vertical {
+ right: 0px;
+ }
+
+ .el-scrollbar {
+ height: 100%;
+ }
+
+ &.has-logo {
+ .el-scrollbar {
+ height: calc(100% - 50px);
+ }
+ }
+
+ .is-horizontal {
+ display: none;
+ }
+
+ a {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ }
+
+ .svg-icon {
+ margin-right: 16px;
+ }
+
+ .el-menu {
+ border: none;
+ height: 100%;
+ width: 100% !important;
+ }
+
+ // menu hover
+ .submenu-title-noDropdown,
+ .el-submenu__title {
+ &:hover {
+ // background-color: $menuHover !important;
+ }
+ }
+
+ .is-active>.el-submenu__title {
+ // color: $subMenuActiveText !important;
+ }
+
+ & .nest-menu .el-submenu>.el-submenu__title,
+ & .el-submenu .el-menu-item {
+ // min-width: $sideBarWidth !important;
+ // background-color: $subMenuBg !important;
+
+ &:hover {
+ // background-color: $subMenuHover !important;
+ }
+ }
+ }
+
+ .hideSidebar {
+ .sidebar-container {
+ width: 54px !important;
+ }
+
+ .main-container {
+ margin-left: 54px;
+ }
+
+ .submenu-title-noDropdown {
+ padding: 0 !important;
+ position: relative;
+
+ .el-tooltip {
+ padding: 0 !important;
+
+ .svg-icon {
+ margin-left: 20px;
+ }
+ }
+ }
+
+ .el-submenu {
+ overflow: hidden;
+
+ &>.el-submenu__title {
+ padding: 0 !important;
+
+ .svg-icon {
+ margin-left: 20px;
+ }
+
+ .el-submenu__icon-arrow {
+ display: none;
+ }
+ }
+ }
+
+ .el-menu--collapse {
+ .el-submenu {
+ &>.el-submenu__title {
+ &>span {
+ height: 0;
+ width: 0;
+ overflow: hidden;
+ visibility: hidden;
+ display: inline-block;
+ }
+ }
+ }
+ }
+ }
+
+ .el-menu--collapse .el-menu .el-submenu {
+ // min-width: $sideBarWidth !important;
+ }
+
+ // mobile responsive
+ .mobile {
+ .main-container {
+ margin-left: 0px;
+ }
+
+ .sidebar-container {
+ transition: transform .28s;
+ // width: $sideBarWidth !important;
+ }
+
+ &.hideSidebar {
+ .sidebar-container {
+ pointer-events: none;
+ transition-duration: 0.3s;
+ // transform: translate3d(-$sideBarWidth, 0, 0);
+ }
+ }
+ }
+
+ .withoutAnimation {
+
+ .main-container,
+ .sidebar-container {
+ transition: none;
+ }
+ }
+}
+
+// when menu collapsed
+.el-menu--vertical {
+ &>.el-menu {
+ .svg-icon {
+ margin-right: 16px;
+ }
+ }
+
+ .nest-menu .el-submenu>.el-submenu__title,
+ .el-menu-item {
+ &:hover {
+ // you can use $subMenuHover
+ // background-color: $menuHover !important;
+ }
+ }
+
+ // the scroll bar appears when the subMenu is too long
+ >.el-menu--popup {
+ max-height: 100vh;
+ overflow-y: auto;
+
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+ }
+}
diff --git a/src/views/OperationalOverview/styles/transition.scss b/src/views/OperationalOverview/styles/transition.scss
new file mode 100644
index 00000000..4cb27cc8
--- /dev/null
+++ b/src/views/OperationalOverview/styles/transition.scss
@@ -0,0 +1,48 @@
+// global transition css
+
+/* fade */
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.28s;
+}
+
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+/* fade-transform */
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all .5s;
+}
+
+.fade-transform-enter {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+
+.fade-transform-leave-to {
+ opacity: 0;
+ transform: translateX(30px);
+}
+
+/* breadcrumb transition */
+.breadcrumb-enter-active,
+.breadcrumb-leave-active {
+ transition: all .5s;
+}
+
+.breadcrumb-enter,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(20px);
+}
+
+.breadcrumb-move {
+ transition: all .5s;
+}
+
+.breadcrumb-leave-active {
+ position: absolute;
+}
diff --git a/src/views/OperationalOverview/styles/variables.scss b/src/views/OperationalOverview/styles/variables.scss
new file mode 100644
index 00000000..e96d9af7
--- /dev/null
+++ b/src/views/OperationalOverview/styles/variables.scss
@@ -0,0 +1,35 @@
+// base color
+$blue:#324157;
+$light-blue:#3A71A8;
+$red:#C03639;
+$pink: #E65D6E;
+$green: #30B08F;
+$tiffany: #4AB7BD;
+$yellow:#FEC171;
+$panGreen: #30B08F;
+
+// sidebar
+$menuText:#bfcbd9;
+$menuActiveText:#409EFF;
+$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
+
+$menuBg:#304156;
+$menuHover:#263445;
+
+$subMenuBg:#0B253F;
+$subMenuHover:#001528;
+
+$sideBarWidth: 248px;
+
+// the :export directive is the magic sauce for webpack
+// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
+:export {
+ menuText: $menuText;
+ menuActiveText: $menuActiveText;
+ subMenuActiveText: $subMenuActiveText;
+ // menuBg: $menuBg;
+ menuHover: $menuHover;
+ subMenuBg: $subMenuBg;
+ subMenuHover: $subMenuHover;
+ sideBarWidth: $sideBarWidth;
+}
diff --git a/src/views/quality/base/qualityScrapDet/index.vue b/src/views/quality/base/qualityScrapDet/index.vue
index 82467b0e..6e9276aa 100644
--- a/src/views/quality/base/qualityScrapDet/index.vue
+++ b/src/views/quality/base/qualityScrapDet/index.vue
@@ -43,9 +43,9 @@ import basicPage from '../../../core/mixins/basic-page';
import { parseTime } from '../../../core/mixins/code-filter';
import {
getQualityScrapDetPage,
- deleteQualityScrapDet
+ deleteQualityScrapDet,
} from '@/api/base/qualityScrapDet';
-
+import { getList, } from "@/api/base/qualityScrapType";
const tableProps = [
{
prop: 'createTime',
@@ -98,10 +98,18 @@ export default {
formConfig: [
{
type: 'input',
- label: '批次名',
- placeholder: '批次名',
- param: 'name',
- },
+ label: '报废原因',
+ placeholder: '报废原因',
+ param: 'content',
+ },
+ {
+ type: 'select',
+ label: '报废类型',
+ selectOptions: [],
+ labelField: 'name',
+ valueField: 'id',
+ param: 'typeId',
+ },
{
type: 'button',
btnName: '查询',
@@ -124,7 +132,10 @@ export default {
components: {
AddOrUpdate,
},
- created() {},
+ created() { },
+ mounted () {
+ this.getDict();
+ },
methods: {
// 获取数据列表
getDataList() {
@@ -134,13 +145,19 @@ export default {
this.listQuery.total = response.data.total;
this.dataListLoading = false;
});
+ },
+ async getDict() {
+ // 物料列表
+ const res = await getList();
+ this.formConfig[1].selectOptions = res.data;
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
- this.listQuery.name = val.name ? val.name : undefined;
+ this.listQuery.content = val.content ? val.content : undefined;
+ this.listQuery.typeId = val.typeId ? val.typeId : undefined;
this.getDataList();
break;
case 'reset':
diff --git a/src/views/quality/base/qualityScrapType/index.vue b/src/views/quality/base/qualityScrapType/index.vue
index 156ab946..6d638e83 100644
--- a/src/views/quality/base/qualityScrapType/index.vue
+++ b/src/views/quality/base/qualityScrapType/index.vue
@@ -98,8 +98,8 @@ export default {
formConfig: [
{
type: 'input',
- label: '批次名',
- placeholder: '批次名',
+ label: '报废类型',
+ placeholder: '报废类型',
param: 'name',
},
{
diff --git a/src/views/quality/monitoring/currentData/index.vue b/src/views/quality/monitoring/currentData/index.vue
index c6231efc..36ed989a 100644
--- a/src/views/quality/monitoring/currentData/index.vue
+++ b/src/views/quality/monitoring/currentData/index.vue
@@ -9,12 +9,18 @@
+ 产品名:{{ productDetail.name }} 产品规格:{{ productDetail.specifications }}
+
+
工单:{{ list[index].workOrderName }}
+
+
+
-
+
@@ -49,7 +55,7 @@ import {
// import Editor from '@/components/Editor';
import moment from 'moment';
// import DialogForm from './dialogForm.vue';
-
+import * as echarts from 'echarts';
// import basicPageMixin from '@/mixins/lb/basicPageMixin';
export default {
name: 'statisticalData',
@@ -61,6 +67,12 @@ export default {
return {
list: [],
dynamicProps: [],
+ downProps: [],
+ downList: [],
+ productDetail: {
+ name: null,
+ specifications:null,
+ },
activeName: 'table',
searchBarFormConfig: [
// {
@@ -202,19 +214,19 @@ export default {
return [
{
// width: 160,
- prop: 'inspectionContent',
- label: '检测内容',
+ prop: 'workOrderName',
+ label: '工单名',
},
...this.dynamicProps,
{
// width: 128,
prop: 'sumInput',
- label: '检测类型总数',
+ label: '上片总数',
},
{
// width: 128,
- prop: 'scrapRatio',
- label: '比例(%)',
+ prop: 'sumOutput',
+ label: '下片总数',
// subcomponent: {
// name: 'TextOnly',
// props: {
@@ -259,7 +271,61 @@ export default {
}
this.getList()
},
- methods: {
+ methods: {
+ handleTabClick() {
+ if (this.activeName === 'chart') {
+ var chartDom = document.getElementById('main');
+ var myChart = echarts.init(chartDom);
+ var option;
+ let arrXAxis = []
+ this.list.forEach((ele) => {
+ arrXAxis.push(ele.workOrderName)
+ })
+ this.downList.forEach((ele) => {
+ ele.forEach((item) => {
+ if (ele.length !==0 && item.productionline) {
+ arrXAxis.push('产线' + item.productionline)
+
+ }
+ })
+ })
+ let arrYAxis = []
+ this.list.forEach((ele) => {
+ // console.log(ele);
+ arrYAxis.push(ele.sumInput)
+ })
+ this.downList.forEach((ele) => {
+ ele.forEach((item) => {
+ console.log(item);
+ // if (ele.length !== 0 && item.productionline) {
+ arrYAxis.push(item.sumInput)
+ // }
+ })
+ })
+ // console.log(arrXAxis);
+ option = {
+ xAxis: {
+ type: 'category',
+ data: arrXAxis
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: arrYAxis,
+ type: 'bar',
+ showBackground: true,
+ backgroundStyle: {
+ color: 'rgba(180, 180, 180, 0.2)'
+ }
+ }
+ ]
+ };
+
+ option && myChart.setOption(option);
+ }
+ },
/** 获取搜索栏的产线列表 */
// async getDict() {
// const res = await getProductList()
@@ -297,31 +363,71 @@ export default {
/** 查询列表 */
async getDataList() {
this.loading = true;
- // 执行查询
+ // 执行查询
+ this.downProps= []
const res = await getInspectionData(this.queryParams)
console.log(res);
- this.dynamicProps = this.filterNameData(res.data[0].upPart)
+ this.productDetail.name = res.data[0].productName
+ this.productDetail.specifications = res.data[0].specifications
+ // this.productName = res.data[0].productName
+ this.dynamicProps = this.filterNameData(res.data[0].upPart.nameData)
console.log(this.dynamicProps)
this.list = this.filterData(res.data[0].upPart.data)
- console.log(this.list);
- },
- filterNameData(upData) {
- console.log(upData);
- // upData.forEach((ele) => {
- const ndSet = new Set();
- upData.nameData.forEach((nd) => {
- ndSet.add(nd.name);
- });
- return Array.from(ndSet.values())
- .sort()
- .map((name) => ({
- prop: name,
- label: name,
- }));
- // })
+ console.log(this.list)
+ res.data[0].downPart.forEach((ele) => {
+ // console.log(ele.data);
+ let arr = this.downFilterNameData(ele.nameData)
+ if (arr.length !== 0) {
+ let propArr = [{
+ // width: 160,
+ prop: 'inspectionContent',
+ label: '检测内容',
+ },
+ ...arr,
+ {
+ // width: 128,
+ prop: 'sumInput',
+ label: '原片总数',
+ },
+ {
+ // width: 128,
+ prop: 'sumScrap',
+ label: '未通过检测总数',
+ },
+ {
+ // width: 128,
+ prop: 'scrapRatio',
+ label: '报废比例',
+ }]
+ this.downProps.push(propArr)
+ }
+ // this.downProps = []
+ })
+ res.data[0].downPart.forEach((ele) => {
+ // console.log(ele.data);
+ let arr =this.downFilterData(ele.data)
+ if (arr.length !== 0) {
+ this.downList.push(arr)
+ }
+ // this.downProps = []
+ })
+ // console.log(this.downList);
},
- filterData(data) {
+ downFilterNameData(nameData) {
+ const ndSet = new Set();
+ nameData.forEach((nd) => {
+ ndSet.add(nd.name);
+ });
+ return Array.from(ndSet.values())
+ .sort()
+ .map((name) => ({
+ prop: name,
+ label: name,
+ }));
+ // })
+ },
+ downFilterData(data) {
return data.map((item) => {
const { data: innerData } = item;
const keyValuePairs = {};
@@ -333,6 +439,39 @@ export default {
...keyValuePairs,
sumInput: item.sumInput,
scrapRatio: item.scrapRatio,
+ sumScrap: item.sumScrap
+ };
+ });
+ },
+ filterNameData(nameData) {
+ // console.log(upData);
+ // upData.forEach((ele) => {
+ const ndSet = new Set();
+
+ nameData.forEach((nd) => {
+ ndSet.add(nd.name);
+ });
+ return Array.from(ndSet.values())
+ .sort()
+ .map((name) => ({
+ prop: name,
+ label: name,
+ }));
+ // })
+ },
+ filterData(data) {
+ return data.map((item) => {
+ const { data: innerData } = item;
+ const keyValuePairs = {};
+ innerData.map((d) => {
+ keyValuePairs[d.dynamicName] = d.dynamicValue;
+ });
+ return {
+ inspectionContent: item.inspectionContent,
+ workOrderName: item.workOrderName,
+ ...keyValuePairs,
+ sumInput: item.sumInput,
+ sumOutput: item.sumOutput,
};
});
},
@@ -456,5 +595,24 @@ export default {
height: 36px;
}
}
+.blue-title {
+ position: relative;
+ padding: 4px 0;
+ padding-left: 12px;
+ font-size: 14px;
+ color: #606266;
+ font-weight: 700;
+ margin-bottom: 12px;
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 6px;
+ height: 16px;
+ width: 4px;
+ border-radius: 1px;
+ background: #0b58ff;
+ }
+}
diff --git a/src/views/quality/monitoring/deviceParameters/index.vue b/src/views/quality/monitoring/deviceParameters/index.vue
index 0c30de48..1146b523 100644
--- a/src/views/quality/monitoring/deviceParameters/index.vue
+++ b/src/views/quality/monitoring/deviceParameters/index.vue
@@ -15,7 +15,7 @@
">
- {{ currentFactory?.label || '点我选择工厂' }}
+ {{ currentFactory?.label || '点我选择设备' }}