From dd0cc539598b599240ac3d95a74170544ed5741c Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期五, 21 六月 2024 09:51:15 +0800
Subject: [PATCH] Merge branch 'master' of http://www.beijingsoft.cn:9090/r/smart-web
---
src/views/home/widgets/components/mdcRunning.vue | 11 +
src/views/home/widgets/components/mdcEquipmentRun.vue | 315 ++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/home/widgets/index.vue | 1
3 files changed, 325 insertions(+), 2 deletions(-)
diff --git a/src/views/home/widgets/components/mdcEquipmentRun.vue b/src/views/home/widgets/components/mdcEquipmentRun.vue
new file mode 100644
index 0000000..3199004
--- /dev/null
+++ b/src/views/home/widgets/components/mdcEquipmentRun.vue
@@ -0,0 +1,315 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-04-16 15:22:46
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-06-21 01:45:18
+ * @FilePath: /CPSnew/smart-web/src/views/home/widgets/components/mdcDeviceStatus.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+ <el-card shadow="hover" header="璁惧绋煎姩鐜囨帓鍚�" style="height: 100%;" class="running">
+ <div class="running-icon">
+ <el-icon><RefreshLeft /></el-icon>
+ <el-icon @click="showSearch"><Filter /></el-icon>
+ </div>
+ <div class="no-list">{{oeeTitle}}</div>
+ <div :id="'equipment'" style="height:160px;"></div>
+
+ <div class="advance-box" v-show="isSearch">
+ <div class="advance-header">绛涢��
+ <el-icon @click="isSearch = false"><Close /></el-icon>
+ </div>
+ <div class="advance-content">
+ <div>
+ <div>
+ <div class="advance-title">閫夋嫨宸ヤ綅</div>
+ <el-tree-select
+ multiple
+ show-checkbox
+ default-expand-all
+ size="small"
+ @change = "parentIdChange"
+ v-model="search.workStationIdList"
+ clearable
+ node-key="id"
+ placeholder="涓婄骇鑿滃崟"
+ ref="parentTree"
+ :data="parentData"
+ :props="{ label: 'title' }"
+ style="width:80%;"
+ :render-after-expand="false" />
+ </div>
+ <div>
+ <div class="advance-title">閫夋嫨闇�瑕佹帓鍚嶇殑鏃堕棿</div>
+ <el-select v-model="search.timeLevel" size="small" style="width:80%;">
+ <template #prefix><span style="margin-right: 6px;color: #409eff;">杩慛灏忔椂</span></template>
+ <el-option v-for="item in timeLevelList" :key="item.value" :label="item.label" :value="item.value"/>
+ </el-select>
+ </div>
+ <div>
+ <div class="advance-title">閫夋嫨璁惧鎺掑悕</div>
+ <el-select v-model="search.top" size="small" style="width:80%;">
+ <template #prefix><span style="margin-right: 6px;color: #409eff;" placeholder="鎵�鏈�">璁惧TOP</span></template>
+ <el-option v-for="item in topList" :key="item.value" :label="item.label" :value="item.value"/>
+ </el-select>
+ </div>
+ </div>
+ </div>
+ <div style="width: 100%;text-align: right;margin-right: 12px;margin-top: 12px;">
+ <el-button type="primary" @click="serchSubmit">绛涢��</el-button>
+ </div>
+ </div>
+ </el-card>
+
+</template>
+
+<script>
+ import * as echarts from 'echarts';
+ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+ let icons = []
+ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+ icons.push(key)
+ }
+ export default {
+ title: "璁惧绋煎姩鐜囨帓鍚�",
+ icon: "el-icon-data-line",
+ description: "蹇�熸煡鐪嬭澶囩鍔ㄧ巼",
+ data() {
+ return {
+ oeeTitle: "",
+ parentData: {},
+ list: [],
+ timeLevelList: [],
+ topList: [],
+ search: {
+ workStationIdList: [],
+ timeLevel: "",
+ top: ""
+ },
+ isSearch: false,
+ timeLevel: "",
+ top: "",
+ apiResource: {
+ workStationIdList: []
+ },
+ cardData: {},
+ option: {
+ grid: {
+ top: '0',
+ bottom: '0',
+ containLabel: true
+ },
+ yAxis: {
+ type: 'category',
+ data: [],
+ axisLine: {
+ show: false // 闅愯棌y杞磋酱绾�
+ },
+ axisTick: {
+ show: false // 闅愯棌y杞村埢搴︾嚎
+ },
+ splitLine: {
+ show: false // 闅愯棌y杞寸綉鏍肩嚎
+ }
+ },
+ xAxis: {
+ type: 'value',
+ axisLabel: {
+ show: false // 闅愯棌x杞存暟鎹爣绛�
+ }
+ },
+ series: [
+ {
+ data: [3.96, 3.95, 3.93, 3.91, 3.91, 3.9, 3.85],
+ type: 'bar',
+ label: {
+ show: true, // 鏄剧ず鏍囩
+ position: 'right', // 鏍囩浣嶇疆璁剧疆涓烘煴瀛愮殑鍙充晶
+ formatter: function(params) {
+ // 杩斿洖鏁版嵁鍊煎拰鎮ㄦ兂瑕佹坊鍔犵殑瀛楃涓茬殑缁勫悎
+ return params.value + '%'; // 渚嬪锛岃繑鍥� '3.96 鏂囧瓧'
+ }
+ }
+ }
+ ]
+ },
+ }
+ },
+ components: {...ElementPlusIconsVue},
+ mounted() {
+ this.getParentData();
+ var arr = [];
+ for(var i=1;i<=30;i++) {
+ this.timeLevelList.push({value:i,label:i});
+ this.topList.push({value:i,label:i});
+ }
+ },
+ methods: {
+ showSearch() {
+ this.search.timeLevel = this.timeLevel;
+ this.search.top = this.top;
+ this.isSearch = true;
+ },
+ serchSubmit() {
+ this.apiResource = this.search;
+ this.getRunData();
+ },
+ setCurrentKey(v) {
+ if (this.firstWorkKey) return
+ if (v.isWorkstation) {
+ this.firstWorkKey = v.id
+ }
+ },
+ formatData(data, current) {
+ let newData = []
+ if (!current) {
+ newData = data.filter(item => item.parentId == 0).map(v => {
+ //if (!v.isWorkstation) v.disabled = true
+ v.children = this.formatData(data, v).sort((a, b) => {
+ return b.sort - a.sort
+ })
+ this.setCurrentKey(v)
+ return v
+ })
+ } else {
+ let res = data.filter(v => v.parentId == current.id)
+ res = res.map(item => {
+ //if (!item.isWorkstation) item.disabled = true
+ item.children = this.formatData(data, item).sort((a, b) => {
+ return b.sort - a.sort
+ })
+ this.setCurrentKey(item)
+ return item
+ })
+ return res
+ }
+ return newData
+ },
+ getParentData() {
+ this.$HTTP.post('/api/blade-cps/group/groupWorkstation/type', {
+ groupCategory: 1,
+ groupType: "group_workstation"
+ }).then(({ code, data }) => {
+ if (code === 200) {
+ this.data = this.formatData(data)
+ this.$nextTick(() => {
+ this.parentData = this.data;
+ this.getList();
+ })
+ }
+ })
+ },
+ parentIdChange(val) {
+ // var $parentId = this.$refs.parentTree.getCurrentNode().title;
+ // this.formAddMenu.$parentId = $parentId;
+ },
+ getList() {
+ this.cardData = this.$CONFIG.DEFAULT_GRID.data;
+ this.cardData.forEach(item=> {
+ if(item.cardKey == "mdcEquipmentRun") {
+ this.getRunData();
+ }
+ })
+ },
+ getRunData() {
+ var ids = this.extractLastLevelIds(this.parentData);
+ var obj = {
+ timeLevel: 24,
+ top: 7,
+ workStationIdList: ids
+ }
+ this.$HTTP.post(`/api/blade-visual/status/oee-top`,obj).then(res=> {
+ if(res.code == 200) {
+ this.isSearch = false;
+ var recordDom = document.getElementById('equipment');
+ if(res.data.categories.length == 0) return;
+ this.option.yAxis.data = res.data.categories;
+ this.option.series[0].data = res.data.series[0].data;
+ this.oeeTitle = res.data.series[0].name;
+ var myChart = echarts.init(recordDom);
+ myChart.setOption(this.option);
+ }
+ })
+ },
+ goPage(item) {
+
+ },
+ extractLastLevelIds(items, result = []) { //閫掑綊鑾峰彇children鏈�鍚庝竴绾х殑id鐨勬暟缁�
+ items.forEach(item => {
+ // 濡傛灉褰撳墠椤规湁id灞炴�т笖娌℃湁children鎴朿hildren涓虹┖鏁扮粍
+ if (item.id && (!item.children || item.children.length === 0)) {
+ result.push(item.id);
+ }
+
+ // 濡傛灉褰撳墠椤规湁children灞炴�т笖鏄暟缁勶紝鍒欓�掑綊璋冪敤collectIds
+ if (Array.isArray(item.children)) {
+ this.extractLastLevelIds(item.children, result);
+ }
+ });
+
+ // 杩斿洖鏀堕泦鍒扮殑id鏁扮粍
+ return result;
+ },
+ },
+ }
+</script>
+<style scoped>
+ .running /deep/ .el-card__body {
+ padding: 12px 12px 12px;
+ }
+ .running {
+ position: relative;
+ }
+ .running-icon {
+ position: absolute;
+ right: 0;
+ top: 15px;
+ }
+ .running-icon i {
+ font-size: 16px;
+ cursor: pointer;
+ margin-right: 15px;
+ }
+ .no-list {
+ display: flex;
+ justify-content: center;
+ font-weight: 500;
+ font-size: 14px;
+ color: #666;
+ align-items: center;
+ }
+ .advance-box{
+ width: 330px;
+ height: 100%;
+ padding: 15px 16px;
+ border-radius: 2px;
+ box-sizing: border-box;
+ border: 1px solid #ebeef5;
+ position: absolute;
+ right: 0;
+ top: 0;
+ background-color: #fff;
+ }
+ .advance-header {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-weight: 700;
+ font-size: 16px;
+ color: #333;
+ }
+ .advance-header i {
+ cursor: pointer;
+ }
+ .advance-content {
+ height: calc(100% - 54px);
+ overflow: auto;
+ }
+ .advance-title {
+ margin: 20px 0 12px;
+ font-weight: 400;
+ font-size: 14px;
+ color: #666;
+ }
+</style>
\ No newline at end of file
diff --git a/src/views/home/widgets/components/mdcRunning.vue b/src/views/home/widgets/components/mdcRunning.vue
index 8b38032..25eadef 100644
--- a/src/views/home/widgets/components/mdcRunning.vue
+++ b/src/views/home/widgets/components/mdcRunning.vue
@@ -10,7 +10,7 @@
<el-card shadow="hover" header="璁惧杩愯鏃堕暱鎺掑悕" style="height: 100%;" class="running">
<div class="running-icon">
<el-icon><RefreshLeft /></el-icon>
- <el-icon @click="isSearch = true"><Filter /></el-icon>
+ <el-icon @click="showSearch"><Filter /></el-icon>
</div>
<div class="no-list">璁惧杩愯鏃堕暱{{timeLevel}}灏忔椂鍐呭墠{{top}}鍚�</div>
<div :id="'running'" style="height:160px;"></div>
@@ -145,8 +145,14 @@
}
},
methods: {
+ showSearch() {
+ this.search.timeLevel = this.timeLevel;
+ this.search.top = this.top;
+ this.isSearch = true;
+ },
serchSubmit() {
-
+ this.apiResource = this.search;
+ this.getRunData();
},
setCurrentKey(v) {
if (this.firstWorkKey) return
@@ -213,6 +219,7 @@
getRunData() {
this.$HTTP.post(`/api/blade-visual/status/running-top`,this.apiResource).then(res=> {
if(res.code == 200) {
+ this.isSearch = false;
var recordDom = document.getElementById('running');
if(res.data.categories.length == 0) return;
this.option.yAxis.data = res.data.categories;
diff --git a/src/views/home/widgets/index.vue b/src/views/home/widgets/index.vue
index 7f90f83..ead9fad 100644
--- a/src/views/home/widgets/index.vue
+++ b/src/views/home/widgets/index.vue
@@ -111,6 +111,7 @@
this.getWorkbenchCarList();
},
mounted() {
+ console.log(this.allComps,this.element,this.grid.layout)
this.$emit('on-mounted')
},
computed: {
--
Gitblit v1.9.3