2024-01-30 18:08:59 +08:00
|
|
|
|
<!--
|
|
|
|
|
* @Author: zhp
|
|
|
|
|
* @Date: 2024-01-29 16:50:26
|
2024-04-25 10:05:41 +08:00
|
|
|
|
* @LastEditTime: 2024-04-25 09:03:50
|
2024-01-30 18:08:59 +08:00
|
|
|
|
* @LastEditors: zhp
|
|
|
|
|
* @Description:
|
|
|
|
|
-->
|
2024-03-13 14:54:35 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
<template>
|
|
|
|
|
<div id="container" ref="container" class="visual-container" :style="styles">
|
|
|
|
|
<el-row class="container-title" :style="{
|
2023-12-29 09:00:00 +08:00
|
|
|
|
height: 88 + 'px',
|
|
|
|
|
lineHeight: 88 + 'px',
|
|
|
|
|
fontSize: 31 + 'px'
|
|
|
|
|
}">
|
2024-03-13 14:54:35 +08:00
|
|
|
|
<img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.22em" alt="">
|
2023-11-15 09:08:20 +08:00
|
|
|
|
许昌安彩冷端看板
|
2024-01-23 16:22:25 +08:00
|
|
|
|
<h3 class="unit">单位:河南汇融数字科技有限公司</h3>
|
2023-12-19 16:32:12 +08:00
|
|
|
|
<h3 class="time">{{ times }}</h3>
|
2024-03-29 16:56:21 +08:00
|
|
|
|
<!-- <el-button type="text" class="title-button" :style="{ right: 18 + 'px', top: 26 + 'px',fontSize:'32px'}"
|
2024-03-27 17:02:44 +08:00
|
|
|
|
@click="changeFullScreen">
|
2024-03-28 16:48:42 +08:00
|
|
|
|
<svg-icon width="32" height="32" v-if="isFullScreen" icon-class="unFullScreenView" />
|
|
|
|
|
<svg-icon width="32" height="32" v-else icon-class="fullScreenView" />
|
2024-03-29 16:56:21 +08:00
|
|
|
|
</el-button> -->
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</el-row>
|
|
|
|
|
<el-row class="container-main flex-col" type="flex">
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1">
|
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
2024-01-23 16:22:25 +08:00
|
|
|
|
<base-container :title="'切割数据'" :size="'small'" :title-icon="'eqAlarm'">
|
2024-01-16 16:09:52 +08:00
|
|
|
|
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="cutProps"
|
|
|
|
|
:table-data="cutTableDataList" /> -->
|
|
|
|
|
<dv-scroll-board :config="cutConfig" style="width:100%;height:350px" ref='cutScrollBoard' />
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</base-container>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
2024-04-22 17:14:59 +08:00
|
|
|
|
<base-container :show-time="true" :no-content-padding="true" :title="'产量及良率统计'" :size="'small'"
|
2024-01-18 14:10:49 +08:00
|
|
|
|
:title-icon="'energyMonitoring'">
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
|
|
|
|
<top-radio-group />
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
|
2024-04-02 15:01:56 +08:00
|
|
|
|
<div v-if="coldDetData" class="myLegend">
|
2024-04-03 16:01:11 +08:00
|
|
|
|
<div class=" barCircleLegend"></div>
|
|
|
|
|
<div class=" barCircle"></div>
|
|
|
|
|
<h4 class="barText">产线良品率</h4>
|
2024-04-01 09:25:54 +08:00
|
|
|
|
<div class="barLegend"></div>
|
2024-04-03 16:01:11 +08:00
|
|
|
|
<h4 class="barCircleText">产线产量</h4>
|
2024-04-01 09:25:54 +08:00
|
|
|
|
</div>
|
2024-01-05 08:44:31 +08:00
|
|
|
|
<double-y-chart ref="productChart" :id="'doubleYChart'" :name-list="cxNameList" :data-list="cxDataList"
|
|
|
|
|
:height="359" :show-legend="true" />
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</base-container>
|
|
|
|
|
</el-col>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
|
2024-04-22 17:14:59 +08:00
|
|
|
|
<base-container :show-time="true" :no-content-padding="true" :title="'ISRA 缺陷数据'" :size="'small'"
|
|
|
|
|
:title-icon="'scrap'">
|
2024-01-16 16:09:52 +08:00
|
|
|
|
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="ISRATableProps"
|
|
|
|
|
:table-data="ISRAList" /> -->
|
2024-01-29 15:55:16 +08:00
|
|
|
|
<ISRAChart ref="ISRAChart" />
|
|
|
|
|
<!-- <dv-scroll-board :config="ISRAConfig" style="width:100%;height:350px" ref='ISRAScrollBoard' /> -->
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</base-container>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="10" type="flex" class="flex-1">
|
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
2024-04-22 17:14:59 +08:00
|
|
|
|
<base-container :show-time="true" :no-content-padding="true" :height="256" :title="'废片 缺陷数据'"
|
|
|
|
|
:size="'eqStatus'" :title-icon="'scrap'">
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
|
|
|
|
<top-radio-group />
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- <el-row :gutter="9"> -->
|
|
|
|
|
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> -->
|
2024-04-01 09:25:54 +08:00
|
|
|
|
<pile-bar-chart id=" 'one' " style="margin-top: -5px;" ref="firstPileChart" :height="80" />
|
2024-03-29 16:56:21 +08:00
|
|
|
|
<second-pile-bar-chart id=" 'second' " ref="secondPileChart" :height="90" />
|
|
|
|
|
<third-pile-bar-chart id=" 'third' " ref="thirdPileChart" :height="90" />
|
|
|
|
|
<fourth-pile-bar-chart id=" 'fourth' " ref="fourthPileChart" :height="90" />
|
2024-04-01 09:25:54 +08:00
|
|
|
|
<fifth-pile-bar-chart style="margin-top: -5px;" id=" 'fifth' " ref="fifthPileChart" :height="90" />
|
2024-03-27 17:02:44 +08:00
|
|
|
|
<!-- <pile-bar-chart ref="secondPileChart"
|
|
|
|
|
:height="90" />
|
|
|
|
|
<pile-bar-chart ref="thirdPileChart"
|
|
|
|
|
:height="90" />
|
|
|
|
|
<pile-bar-chart ref="fourthPileChart"
|
|
|
|
|
:height="90" />
|
|
|
|
|
<pile-bar-chart ref="fifthPileChart"
|
|
|
|
|
:height="90" /> -->
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<!-- </el-col> -->
|
|
|
|
|
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
|
|
|
|
<base-table3
|
|
|
|
|
:page="2"
|
|
|
|
|
:limit="5"
|
|
|
|
|
|
|
|
|
|
:table-config="qualityTableProps2"
|
|
|
|
|
:table-data="qualityList2"
|
|
|
|
|
/>
|
|
|
|
|
</el-col> -->
|
|
|
|
|
<!-- </el-row> -->
|
|
|
|
|
</base-container>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="14">
|
2024-04-22 17:14:59 +08:00
|
|
|
|
<base-container :show-time="false" :height="318 + 338 + 16" :size="'eqStatus'" :title="'设备状态监控'"
|
|
|
|
|
:title-icon="'eqMonitoring'">
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
|
|
|
|
|
<top-radio-group />
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
|
2024-01-29 15:55:16 +08:00
|
|
|
|
<el-col :span="8" style="">
|
2024-03-28 15:36:39 +08:00
|
|
|
|
<div style="color:rgba(82, 255, 248, 1);font-size:20px;margin: 5px 0 10px 0">熔化风机</div>
|
2024-01-16 16:09:52 +08:00
|
|
|
|
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="EqMonitoringPropsFun"
|
|
|
|
|
:table-data="funList" /> -->
|
2024-01-25 16:10:31 +08:00
|
|
|
|
<dv-scroll-board :config="funConfig" style="width:100%;height:310px" ref='funScrollBoard' />
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</el-col>
|
2024-01-24 17:16:05 +08:00
|
|
|
|
<span class="eqLine"></span>
|
2024-01-29 15:55:16 +08:00
|
|
|
|
<el-col :span="8">
|
2024-03-28 15:36:39 +08:00
|
|
|
|
<div style="color:rgba(82, 255, 248, 1);font-size:20px;margin: 5px 0 10px 0;">退火风机</div>
|
2024-01-16 16:09:52 +08:00
|
|
|
|
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="EqMonitoringPropsFun"
|
|
|
|
|
:table-data="annealFunList" /> -->
|
2024-01-25 16:10:31 +08:00
|
|
|
|
<dv-scroll-board :config="annealFunConfig" style="width:100%;height:310px" ref='annealFunScrollBoard' />
|
2024-01-02 09:20:55 +08:00
|
|
|
|
</el-col>
|
2024-01-24 17:16:05 +08:00
|
|
|
|
<span class="eqLineTwo"></span>
|
2024-01-29 15:55:16 +08:00
|
|
|
|
<el-col :span="8" style="float: right;">
|
2024-03-28 15:36:39 +08:00
|
|
|
|
<div style="color:rgba(82, 255, 248, 1);font-size:20px;margin: 5px 0 10px 0;">产线设备</div>
|
2024-01-16 16:09:52 +08:00
|
|
|
|
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="EqMonitoringProps"
|
|
|
|
|
:table-data="realEqList" /> -->
|
2024-01-25 16:10:31 +08:00
|
|
|
|
<dv-scroll-board :config="realEqConfig" style="width:100%;height:310px" ref='realEqScrollBoard' />
|
2024-01-16 16:09:52 +08:00
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<!-- <double-y-chart :id="'doubleYChart'" :name-list="cxNameList" :data-list="cxDataList" :height="359"
|
|
|
|
|
:show-legend="true" /> -->
|
|
|
|
|
</base-container>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<!-- end -->
|
|
|
|
|
<!-- <el-col :span="16">
|
|
|
|
|
<el-row>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<base-container :height="672">
|
|
|
|
|
<base-video :video-height="624" />
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</base-container>
|
|
|
|
|
</el-col>
|
2023-12-29 09:00:00 +08:00
|
|
|
|
</el-row>
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</el-col>
|
2023-12-29 09:00:00 +08:00
|
|
|
|
-->
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</el-row>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import baseContainer from './components/baseContainer'
|
|
|
|
|
import baseTable1 from './components/baseTable'
|
|
|
|
|
import screenfull from 'screenfull'
|
2023-12-29 09:00:00 +08:00
|
|
|
|
import pileBarChart from './components/pileBarChart'
|
2024-03-27 17:02:44 +08:00
|
|
|
|
import secondPileBarChart from './components/pileBarChart'
|
|
|
|
|
import thirdPileBarChart from './components/pileBarChart'
|
|
|
|
|
import fourthPileBarChart from './components/pileBarChart'
|
|
|
|
|
import fifthPileBarChart from './components/pileBarChart'
|
|
|
|
|
|
2024-01-09 16:25:12 +08:00
|
|
|
|
import colorDiv from './components/colorDiv'
|
2024-01-30 18:08:59 +08:00
|
|
|
|
import moment from "moment";
|
2024-01-17 15:30:47 +08:00
|
|
|
|
import doubleYChart from './components/coldDoubleYChart'
|
2023-12-29 16:29:15 +08:00
|
|
|
|
import { parseTime } from '../core/mixins/code-filter';
|
2024-01-29 15:55:16 +08:00
|
|
|
|
import ISRAChart from './components/ISRAChart.vue';
|
2024-01-30 18:08:59 +08:00
|
|
|
|
import { getDcsMsg, closeDcsMsg } from "./wsInterface"
|
2023-12-29 09:00:00 +08:00
|
|
|
|
import LinearBarChart from './components/linearBarChart'
|
2024-03-26 16:45:16 +08:00
|
|
|
|
import WebSocketHeartbeat from './ws.js';
|
2023-11-15 09:08:20 +08:00
|
|
|
|
export default {
|
|
|
|
|
name: 'ProductionMonitoringCockpit',
|
|
|
|
|
components: {
|
|
|
|
|
baseContainer,
|
|
|
|
|
baseTable1,
|
2023-12-29 09:00:00 +08:00
|
|
|
|
pileBarChart,
|
|
|
|
|
doubleYChart,
|
2024-01-25 16:10:31 +08:00
|
|
|
|
LinearBarChart,
|
2024-03-27 17:02:44 +08:00
|
|
|
|
ISRAChart,
|
|
|
|
|
secondPileBarChart,
|
|
|
|
|
thirdPileBarChart ,
|
|
|
|
|
fourthPileBarChart,
|
|
|
|
|
fifthPileBarChart ,
|
2023-11-15 09:08:20 +08:00
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
beilv2: 1,
|
2023-12-29 09:00:00 +08:00
|
|
|
|
beilv: 1,
|
2023-11-15 09:08:20 +08:00
|
|
|
|
value: 100,
|
2023-12-29 09:00:00 +08:00
|
|
|
|
realEqList:[],
|
|
|
|
|
orderList: [],
|
|
|
|
|
times: '',
|
2024-01-16 16:09:52 +08:00
|
|
|
|
cutConfig: {
|
|
|
|
|
header: ['序号', '产线', '时间', '规格', '良品面积', '废品面积', '良品率'],
|
|
|
|
|
headerBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
oddRowBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
evenRowBGC: 'rgba(14, 32, 62, 0.8)',
|
2024-01-25 16:10:31 +08:00
|
|
|
|
columnWidth: [60,60, 132, 142, 105,105,90],
|
2024-01-16 16:09:52 +08:00
|
|
|
|
align: ['center'],
|
|
|
|
|
data: [],
|
|
|
|
|
// index:true,
|
|
|
|
|
rowNum: 10
|
|
|
|
|
},
|
|
|
|
|
funConfig: {
|
|
|
|
|
header: ['序号', '设备名称', '运行状态'],
|
|
|
|
|
headerBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
oddRowBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
evenRowBGC: 'rgba(14, 32, 62, 0.8)',
|
2024-01-29 15:55:16 +08:00
|
|
|
|
columnWidth: [60, 180, 90],
|
2024-01-16 16:09:52 +08:00
|
|
|
|
align: ['center'],
|
|
|
|
|
data: [],
|
|
|
|
|
// index:true,
|
|
|
|
|
rowNum: 10
|
|
|
|
|
},
|
|
|
|
|
realEqConfig: {
|
2024-01-29 15:55:16 +08:00
|
|
|
|
header: ['序号','设备名称','运行状态'],
|
2024-01-16 16:09:52 +08:00
|
|
|
|
headerBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
oddRowBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
evenRowBGC: 'rgba(14, 32, 62, 0.8)',
|
2024-01-29 15:55:16 +08:00
|
|
|
|
columnWidth: [60, 180, 90],
|
2024-01-16 16:09:52 +08:00
|
|
|
|
align: ['center'],
|
|
|
|
|
data: [],
|
|
|
|
|
// index:true,
|
|
|
|
|
rowNum: 10
|
|
|
|
|
},
|
|
|
|
|
annealFunConfig: {
|
|
|
|
|
header: ['序号', '设备名称', '运行状态'],
|
|
|
|
|
headerBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
oddRowBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
evenRowBGC: 'rgba(14, 32, 62, 0.8)',
|
2024-01-29 15:55:16 +08:00
|
|
|
|
columnWidth: [60, 180, 90],
|
2024-01-16 16:09:52 +08:00
|
|
|
|
align: ['center'],
|
|
|
|
|
data: [],
|
|
|
|
|
// index:true,
|
|
|
|
|
rowNum: 10
|
|
|
|
|
},
|
|
|
|
|
ISRAConfig: {
|
|
|
|
|
header: ['序号', '产线', '时间', '缺陷类型', '缺陷数量', '占比'],
|
|
|
|
|
headerBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
oddRowBGC: 'rgba(32, 55, 96, 0.8)',
|
|
|
|
|
evenRowBGC: 'rgba(14, 32, 62, 0.8)',
|
|
|
|
|
columnWidth: [70, 70, 130, 150, 110, 110,],
|
|
|
|
|
align: ['center'],
|
|
|
|
|
data: [],
|
|
|
|
|
// index:true,
|
|
|
|
|
rowNum: 10
|
|
|
|
|
},
|
2023-12-29 09:00:00 +08:00
|
|
|
|
ISRAList:[],
|
|
|
|
|
EnergyMonitoringNameList: [],
|
|
|
|
|
EnergyMonitoringList: [],
|
|
|
|
|
clientWidth: 0,
|
|
|
|
|
containerWidth: 111111,
|
|
|
|
|
isFullScreen: false,
|
2024-01-02 09:20:55 +08:00
|
|
|
|
cutWsData: {},
|
2024-03-26 16:45:16 +08:00
|
|
|
|
Cutws: undefined,
|
|
|
|
|
funWs: undefined,
|
|
|
|
|
SJGws: undefined,
|
2024-01-02 09:20:55 +08:00
|
|
|
|
funWsData: {},
|
2024-04-02 15:01:56 +08:00
|
|
|
|
coldDetData:[],
|
2024-01-02 09:20:55 +08:00
|
|
|
|
SJGWsData: {},
|
2024-03-26 16:45:16 +08:00
|
|
|
|
cxNameList:[],
|
|
|
|
|
cxDataList:[],
|
2023-12-29 09:00:00 +08:00
|
|
|
|
// orderProcessList: [],
|
|
|
|
|
dateType: '0',
|
2024-01-29 15:55:16 +08:00
|
|
|
|
wsIsOpen:false,
|
2023-12-29 09:00:00 +08:00
|
|
|
|
funList:[],
|
2024-01-02 09:20:55 +08:00
|
|
|
|
annealFunList: [],
|
2023-12-29 09:00:00 +08:00
|
|
|
|
queryParams: {
|
|
|
|
|
pageNo: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
equipmentId: null,
|
|
|
|
|
productionLineId: null,
|
|
|
|
|
},
|
2023-11-15 09:08:20 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
// ...mapGetters(['sidebar']),
|
|
|
|
|
styles() {
|
|
|
|
|
const v = Math.floor(this.value * this.beilv2 * 100) / 10000
|
|
|
|
|
return {
|
|
|
|
|
transform: `scale(${v})`,
|
2023-12-29 09:00:00 +08:00
|
|
|
|
transformOrigin: 'top left'
|
2023-11-15 09:08:20 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
|
|
|
|
watch: {
|
2024-03-28 16:48:42 +08:00
|
|
|
|
isFullScreen:function (val) {
|
2024-03-27 17:02:44 +08:00
|
|
|
|
if (val) {
|
2024-03-28 15:36:39 +08:00
|
|
|
|
const _this = this;
|
|
|
|
|
_this.beilv2 = document.documentElement.clientWidth / 1920
|
|
|
|
|
console.log(_this.beilv2);
|
2024-03-27 17:02:44 +08:00
|
|
|
|
} else {
|
2024-03-28 15:36:39 +08:00
|
|
|
|
const _this = this;
|
|
|
|
|
_this.beilv2 = document.documentElement.clientWidth / 1920
|
2024-03-27 17:02:44 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
2023-12-29 09:00:00 +08:00
|
|
|
|
clientWidth(val) {
|
|
|
|
|
if (!this.timer) {
|
|
|
|
|
this.clientWidth = val
|
|
|
|
|
this.beilv2 = this.clientWidth / 1920
|
|
|
|
|
this.timer = true
|
|
|
|
|
let _this = this
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
_this.timer = false
|
|
|
|
|
}, 500)
|
|
|
|
|
}
|
|
|
|
|
// 这里可以添加修改时的方法
|
|
|
|
|
this.windowWidth(val);
|
|
|
|
|
}
|
|
|
|
|
},
|
2023-11-15 09:08:20 +08:00
|
|
|
|
created() {
|
|
|
|
|
this.init()
|
2024-01-30 18:13:57 +08:00
|
|
|
|
setTimeout(() => {
|
|
|
|
|
window.location.reload()
|
|
|
|
|
}, 86400000)
|
2024-03-28 16:48:42 +08:00
|
|
|
|
// this.getData()
|
2024-04-03 16:01:11 +08:00
|
|
|
|
// this.getReaiData()
|
2023-11-15 09:08:20 +08:00
|
|
|
|
},
|
2024-01-29 15:55:16 +08:00
|
|
|
|
destroyed() {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
this.CutWebsocketClose()
|
2024-01-29 15:55:16 +08:00
|
|
|
|
this.SJGWebsocketClose()
|
2024-03-26 16:45:16 +08:00
|
|
|
|
this.funWebSocketClose()
|
2024-01-29 15:55:16 +08:00
|
|
|
|
if (this.wsIsOpen) {
|
|
|
|
|
closeDcsMsg()
|
|
|
|
|
this.wsIsOpen = false
|
|
|
|
|
console.log('关闭============')
|
|
|
|
|
}
|
|
|
|
|
},
|
2023-11-15 09:08:20 +08:00
|
|
|
|
mounted() {
|
2024-04-01 09:25:54 +08:00
|
|
|
|
this.getProductData()
|
2024-03-27 17:02:44 +08:00
|
|
|
|
// this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
|
|
|
|
|
this.getTimes()
|
|
|
|
|
// console.log(moment(this.logoutTime - 28800000).format('HH:mm:ss'));
|
2023-12-29 16:29:15 +08:00
|
|
|
|
this.funInitWebSocket()
|
2024-01-29 15:55:16 +08:00
|
|
|
|
if (!this.wsIsOpen) {
|
|
|
|
|
getDcsMsg()
|
|
|
|
|
this.wsIsOpen = true
|
|
|
|
|
console.log('开启websocket==========')
|
|
|
|
|
}
|
2023-12-29 16:29:15 +08:00
|
|
|
|
this.CutInitWebSocket()
|
|
|
|
|
this.SJGInitWebSocket()
|
2023-11-15 09:08:20 +08:00
|
|
|
|
const _this = this;
|
|
|
|
|
_this.beilv2 = document.documentElement.clientWidth / 1920
|
|
|
|
|
window.onresize = () => {
|
|
|
|
|
return (() => {
|
|
|
|
|
_this.clientWidth = `${document.documentElement.clientWidth}`
|
|
|
|
|
this.beilv2 = _this.clientWidth / 1920
|
|
|
|
|
})()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
2024-04-01 09:25:54 +08:00
|
|
|
|
getProductData() {
|
|
|
|
|
let nameList = []
|
|
|
|
|
let nameWasteList = []
|
|
|
|
|
let topNameList = []
|
|
|
|
|
let productList = []
|
|
|
|
|
let wasteList = []
|
|
|
|
|
let yieldList = []
|
|
|
|
|
let sumAreaList = []
|
|
|
|
|
// let yieldList = []
|
|
|
|
|
// this.cutTableDataList =
|
2024-04-02 15:01:56 +08:00
|
|
|
|
this.coldDetData = [
|
2024-04-01 09:25:54 +08:00
|
|
|
|
{
|
|
|
|
|
"first": 0.8834,
|
|
|
|
|
"lineName": "Y61",
|
|
|
|
|
"product": 0.8834,
|
|
|
|
|
"productArea": 35069.28,
|
|
|
|
|
"second": 0,
|
|
|
|
|
'sumArea': 38400,
|
|
|
|
|
'wastArea': 3330.72,
|
|
|
|
|
"yield": 0.9133
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"first": 0.847,
|
|
|
|
|
"lineName": "Y62",
|
|
|
|
|
"product": 0.847,
|
|
|
|
|
"productArea": 26765.46,
|
|
|
|
|
"second": 0,
|
|
|
|
|
'sumArea': 1111111,
|
|
|
|
|
'wastArea': 22222,
|
|
|
|
|
"yield": 0.9133
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"first": 0.8668,
|
|
|
|
|
"lineName": "Y63",
|
|
|
|
|
"product": 0.8668,
|
|
|
|
|
"productArea": 26448.46,
|
|
|
|
|
"second": 0,
|
|
|
|
|
'sumArea': 1111111,
|
|
|
|
|
'wastArea': 22222,
|
|
|
|
|
"yield": 0.9133
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"first": 0.9064,
|
|
|
|
|
"lineName": "Y64",
|
|
|
|
|
"product": 0.9064,
|
|
|
|
|
"productArea": 26667.32,
|
|
|
|
|
"second": 0,
|
|
|
|
|
'sumArea': 1111111,
|
|
|
|
|
'wastArea': 22222,
|
|
|
|
|
"yield": 0.9133
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"first": 0.8838,
|
|
|
|
|
"lineName": "Y65",
|
|
|
|
|
"product": 0.8838,
|
|
|
|
|
"productArea": 26554.32,
|
|
|
|
|
"second": 0,
|
|
|
|
|
'sumArea': 1111111,
|
|
|
|
|
'wastArea': 22222,
|
|
|
|
|
"yield": 0.9133
|
|
|
|
|
}
|
|
|
|
|
]
|
2024-04-02 15:01:56 +08:00
|
|
|
|
this.coldDetData.forEach((ele, index) => {
|
2024-04-01 09:25:54 +08:00
|
|
|
|
nameList.push(ele.lineName)
|
|
|
|
|
topNameList.push('产线: ' + ele.lineName + ' ' + '总面积:' + ele.sumArea + '㎡')
|
|
|
|
|
productList.push(ele.productArea)
|
|
|
|
|
wasteList.push(ele.wastArea)
|
2024-04-03 16:01:11 +08:00
|
|
|
|
nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡')
|
2024-04-01 09:25:54 +08:00
|
|
|
|
// yieldList.push({
|
|
|
|
|
// name: '良品',
|
|
|
|
|
// yield:ele.yield
|
|
|
|
|
// })
|
|
|
|
|
sumAreaList.push(ele.sumArea)
|
2024-04-07 16:07:04 +08:00
|
|
|
|
yieldList.push((ele.yield * 100).toFixed(0))
|
2024-04-01 09:25:54 +08:00
|
|
|
|
})
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
|
|
|
|
|
this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
|
|
|
|
|
this.$refs.secondPileChart.initChart(nameList, [topNameList[1]], [nameWasteList[1]], [productList[1]], [wasteList[1]])
|
|
|
|
|
this.$refs.thirdPileChart.initChart(nameList, [topNameList[2]], [nameWasteList[2]], [productList[2]], [wasteList[2]])
|
|
|
|
|
this.$refs.fourthPileChart.initChart(nameList, [topNameList[3]], [nameWasteList[3]], [productList[3]], [wasteList[3]])
|
|
|
|
|
this.$refs.fifthPileChart.initChart(nameList, [topNameList[4]], [nameWasteList[4]], [productList[4]], [wasteList[4]])
|
|
|
|
|
})
|
|
|
|
|
},
|
2024-04-03 16:01:11 +08:00
|
|
|
|
// getReaiData() {
|
|
|
|
|
// let detData = [
|
|
|
|
|
// {
|
|
|
|
|
// name: '1',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '2',
|
|
|
|
|
// run: '未运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '3',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '4',
|
|
|
|
|
// run: '未运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '1',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// ]
|
|
|
|
|
// let arr = []
|
|
|
|
|
// let index = 0
|
|
|
|
|
// for (let i in detData) {
|
|
|
|
|
// index++,
|
|
|
|
|
// arr.push([
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${index || ''}
|
|
|
|
|
// </span>`,
|
|
|
|
|
// // `<span style="color:rgba(255,255,255,0.5)" >${i || ''}
|
|
|
|
|
// // </span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)">${i || ''}</span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)"><div style="${detData[i] == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${detData[i] || ''}</span>`,
|
|
|
|
|
// ])
|
|
|
|
|
// }
|
|
|
|
|
// // this.$nextTick(() => {
|
|
|
|
|
// this.annealFunConfig.data = arr
|
|
|
|
|
// this.$refs['annealFunScrollBoard'].updateRows(arr)
|
|
|
|
|
// // })
|
|
|
|
|
// },
|
|
|
|
|
// getData() {
|
|
|
|
|
// let detData = [
|
|
|
|
|
// {
|
|
|
|
|
// name: '1',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '2',
|
|
|
|
|
// run: '未运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '3',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '4',
|
|
|
|
|
// run: '未运行',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// name: '1',
|
|
|
|
|
// run: '运行',
|
|
|
|
|
// },
|
|
|
|
|
// ]
|
|
|
|
|
// this.realEqList = detData.map((item, index) => [
|
|
|
|
|
// // console.log(item)
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
|
|
|
|
|
// </span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)">${item.name || ''}</span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)"><div style="${item.run == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${item.run || ''}</span>`,
|
|
|
|
|
// ])
|
|
|
|
|
// // this.$nextTick(() => {
|
|
|
|
|
// this.realEqConfig.data = this.realEqList
|
|
|
|
|
// this.$refs['realEqScrollBoard'].updateRows(this.realEqList)
|
|
|
|
|
// // })
|
|
|
|
|
// },
|
2024-01-29 15:55:16 +08:00
|
|
|
|
CutWebsocketClose(e) {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
this.Cutws.ws.onclose = (event) => { console.log(event );}
|
2024-01-29 15:55:16 +08:00
|
|
|
|
},
|
|
|
|
|
SJGWebsocketClose(e) {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
this.SJGws.ws.onclose = (event) => { console.log(event); }
|
2024-01-29 15:55:16 +08:00
|
|
|
|
},
|
2024-03-01 15:27:01 +08:00
|
|
|
|
funWebSocketClose(e) {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
this.funWs.ws.onclose = (event) => { console.log(event); }
|
2024-01-29 15:55:16 +08:00
|
|
|
|
},
|
2024-01-25 16:10:31 +08:00
|
|
|
|
formatTime(time, option) {
|
|
|
|
|
console.log(time);
|
|
|
|
|
const d = new Date(time)
|
|
|
|
|
return (
|
|
|
|
|
d.getMonth() +
|
|
|
|
|
1 +
|
|
|
|
|
'月' +
|
|
|
|
|
d.getDate() +
|
|
|
|
|
'日' +
|
|
|
|
|
d.getHours() +
|
|
|
|
|
'时'
|
|
|
|
|
// +
|
|
|
|
|
// d.getMinutes() +
|
|
|
|
|
// '分'
|
|
|
|
|
)
|
|
|
|
|
// }
|
|
|
|
|
},
|
2023-12-19 16:32:12 +08:00
|
|
|
|
getTimes() {
|
|
|
|
|
setInterval(this.getTimesInterval, 1000);
|
|
|
|
|
},
|
|
|
|
|
getTimesInterval: function () {
|
|
|
|
|
let _this = this;
|
|
|
|
|
let year = new Date().getFullYear(); //获取当前时间的年份
|
|
|
|
|
let month = new Date().getMonth() + 1; //获取当前时间的月份
|
|
|
|
|
let day = new Date().getDate(); //获取当前时间的天数
|
|
|
|
|
let hours = new Date().getHours(); //获取当前时间的小时
|
|
|
|
|
let minutes = new Date().getMinutes(); //获取当前时间的分数
|
|
|
|
|
let seconds = new Date().getSeconds(); //获取当前时间的秒数
|
|
|
|
|
//当小于 10 的是时候,在前面加 0
|
|
|
|
|
if (hours < 10) {
|
|
|
|
|
hours = "0" + hours;
|
|
|
|
|
}
|
|
|
|
|
if (minutes < 10) {
|
|
|
|
|
minutes = "0" + minutes;
|
|
|
|
|
}
|
|
|
|
|
if (seconds < 10) {
|
|
|
|
|
seconds = "0" + seconds;
|
|
|
|
|
}
|
|
|
|
|
//拼接格式化当前时间
|
2024-03-29 16:56:21 +08:00
|
|
|
|
this.times = year + "." + month + "." + day + " " + hours + ":" + minutes + ":" + seconds;
|
2023-12-19 16:32:12 +08:00
|
|
|
|
},
|
2023-12-29 16:29:15 +08:00
|
|
|
|
SJGInitWebSocket() {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
let date = new Date().valueOf()
|
|
|
|
|
const SJGWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=COLD${date}`
|
|
|
|
|
this.SJGws = new WebSocketHeartbeat(SJGWsUrl);
|
|
|
|
|
|
|
|
|
|
// 处理收到的消息
|
|
|
|
|
this.SJGws.ws.onmessage = (event) => {
|
|
|
|
|
this.SJGWsData = event?.data ? JSON.parse(event?.data) : {}
|
|
|
|
|
if (this.SJGWsData.type === 'isra') {
|
|
|
|
|
console.log('222222', this.SJGWsData.detData)
|
|
|
|
|
console.log(this.SJGWsData.detData);
|
|
|
|
|
let chartData = this.SJGWsData.detData.map((item, index) => {
|
|
|
|
|
return {
|
|
|
|
|
name: item.type,
|
|
|
|
|
num: item.num
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.$refs['ISRAChart'].updateChart(chartData)
|
|
|
|
|
} else if (this.SJGWsData.type === 'equipment') {
|
2024-03-26 18:00:49 +08:00
|
|
|
|
this.realEqList = this.SJGWsData.detData.map((item, index) => [
|
2024-03-26 16:45:16 +08:00
|
|
|
|
// console.log(item)
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
|
|
|
|
|
</span>`,
|
2024-03-26 18:00:49 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${item.name || ''}</span>`,
|
2024-03-28 16:48:42 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)"><div style="${item.run == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${item.run || ''}</span>`,
|
2024-03-26 16:45:16 +08:00
|
|
|
|
])
|
|
|
|
|
}
|
|
|
|
|
this.realEqConfig.data = this.realEqList
|
2024-03-29 16:56:21 +08:00
|
|
|
|
// this.$nextTick(() => {
|
2024-03-28 16:48:42 +08:00
|
|
|
|
this.$refs['realEqScrollBoard'].updateRows(this.realEqList)
|
2024-03-29 16:56:21 +08:00
|
|
|
|
// })
|
2024-03-26 16:45:16 +08:00
|
|
|
|
};
|
|
|
|
|
// if (typeof (WebSocket) === 'undefined') {
|
|
|
|
|
// alert('您的浏览器不支持WebSocket')
|
|
|
|
|
// } else {
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.74:48080/websocket/message?userId=EN111'
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
|
|
|
|
|
// let date = new Date().valueOf()
|
|
|
|
|
// const SJGWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=COLD${date}`
|
|
|
|
|
// this.SJGWebsocket = new WebSocket(SJGWsUrl)
|
|
|
|
|
// // 监听 WebSocket 连接
|
|
|
|
|
// this.SJGWebsocket.onopen = this.SJGWebsocketOnOpen
|
|
|
|
|
// // 监听 WebSocket 错误信息
|
|
|
|
|
// this.SJGWebsocket.onerror = this.SJGWebsocketOnError
|
|
|
|
|
// // 监听 WebSocket 消息
|
|
|
|
|
// this.SJGWebsocket.onmessage = this.SJGWebsocketOnMessage
|
|
|
|
|
// // 监听 webSocket 断开信息
|
|
|
|
|
// this.SJGWebsocket.onclose = this.SJGWebsocketClose
|
|
|
|
|
// }
|
2023-12-29 16:29:15 +08:00
|
|
|
|
},
|
|
|
|
|
CutInitWebSocket() {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
let date = new Date().valueOf()
|
2024-01-05 08:44:31 +08:00
|
|
|
|
const cutWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=CUTTING${date}`
|
2024-03-26 16:45:16 +08:00
|
|
|
|
// const SJGWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=COLD${date}`
|
|
|
|
|
this.Cutws = new WebSocketHeartbeat(cutWsUrl);
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
2024-03-26 16:45:16 +08:00
|
|
|
|
// 处理收到的消息
|
|
|
|
|
this.Cutws.ws.onmessage = (event) => {
|
|
|
|
|
console.log(event)
|
|
|
|
|
this.cutWsData = event?.data ? JSON.parse(event?.data) : {}
|
|
|
|
|
if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'table') {
|
|
|
|
|
let cutArr = this.cutWsData.productHourData.map((item, index) => [
|
2024-04-03 16:30:09 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
|
2024-03-26 16:45:16 +08:00
|
|
|
|
</span>`,
|
2024-04-03 16:30:09 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)" >${item.lineName || ''}
|
2024-03-26 16:45:16 +08:00
|
|
|
|
</span>`,
|
2024-04-03 16:30:09 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${this.formatTime(item.time) || ''}</span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${this.getSize(item.size) || ''}</span>`,
|
2024-04-03 16:34:15 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.productArea) + '㎡' || ''}</span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.wasteArea) + '㎡' || ''}</span>`,
|
2024-04-19 16:59:47 +08:00
|
|
|
|
`<div style = "${(item.product * 100).toFixed(0) >= 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>
|
2024-04-25 10:05:41 +08:00
|
|
|
|
<div style = "${(item.product * 100).toFixed(0) <= 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div>`
|
2024-03-26 16:45:16 +08:00
|
|
|
|
])
|
|
|
|
|
this.cutConfig.data = cutArr
|
2024-03-29 16:56:21 +08:00
|
|
|
|
// this.$nextTick(() => {
|
|
|
|
|
this.$refs['cutScrollBoard'].updateRows(cutArr)
|
|
|
|
|
// })
|
|
|
|
|
// this.cutConfig.data = cutArr
|
|
|
|
|
// this.$refs['cutScrollBoard'].updateRows(cutArr)
|
2024-03-26 16:45:16 +08:00
|
|
|
|
} else if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'chart' && this.cutWsData.dateType === 'day') {
|
2024-04-16 13:45:38 +08:00
|
|
|
|
if (this.cutWsData.coldDetData.length !== 0) {
|
|
|
|
|
let nameList = []
|
|
|
|
|
let nameWasteList = []
|
|
|
|
|
let topNameList = []
|
|
|
|
|
let productList = []
|
|
|
|
|
let wasteList = []
|
|
|
|
|
let sumAreaList = []
|
|
|
|
|
let yieldList = []
|
|
|
|
|
this.coldDetData = this.cutWsData.coldDetData
|
|
|
|
|
// this.cutTableDataList =
|
|
|
|
|
this.cutWsData.coldDetData.forEach((ele, index) => {
|
|
|
|
|
nameList.push(ele.lineName)
|
|
|
|
|
topNameList.push('产线: ' + ele.lineName + ' ' + '总面积:' + ele.sumArea + '㎡')
|
|
|
|
|
productList.push(ele.productArea)
|
|
|
|
|
wasteList.push(ele.wastArea)
|
|
|
|
|
nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡')
|
|
|
|
|
sumAreaList.push(ele.sumArea)
|
2024-04-22 17:14:59 +08:00
|
|
|
|
yieldList.push(parseFloat((ele.yield * 100).toFixed(2)))
|
2024-04-16 13:45:38 +08:00
|
|
|
|
})
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
|
|
|
|
|
this.$refs.secondPileChart.initChart(nameList, [topNameList[1]], [nameWasteList[1]], [productList[1]], [wasteList[1]])
|
|
|
|
|
this.$refs.thirdPileChart.initChart(nameList, [topNameList[2]], [nameWasteList[2]], [productList[2]], [wasteList[2]])
|
|
|
|
|
this.$refs.fourthPileChart.initChart(nameList, [topNameList[3]], [nameWasteList[3]], [productList[3]], [wasteList[3]])
|
|
|
|
|
this.$refs.fifthPileChart.initChart(nameList, [topNameList[4]], [nameWasteList[4]], [productList[4]], [wasteList[4]])
|
|
|
|
|
this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
|
|
|
|
|
})
|
|
|
|
|
}
|
2024-03-26 16:45:16 +08:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// if (typeof (WebSocket) === 'undefined') {
|
|
|
|
|
// alert('您的浏览器不支持WebSocket')
|
|
|
|
|
// } else {
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.74:48080/websocket/message?userId=EN111'
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
|
|
|
|
|
// let date = new Date().valueOf()
|
|
|
|
|
// const cutWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=CUTTING${date}`
|
|
|
|
|
|
|
|
|
|
// this.cutWebsocket = new WebSocket(cutWsUrl)
|
|
|
|
|
// // 监听 WebSocket 连接
|
|
|
|
|
// this.cutWebsocket.onopen = this.cutWebsocketOnOpen
|
|
|
|
|
// // 监听 WebSocket 错误信息
|
|
|
|
|
// this.cutWebsocket.onerror = this.cutWebsocketOnError
|
|
|
|
|
// // 监听 WebSocket 消息
|
|
|
|
|
// this.cutWebsocket.onmessage = this.cutWebsocketOnMessage
|
|
|
|
|
// // 监听 webSocket 断开信息
|
|
|
|
|
// this.cutWebsocket.onclose = this.cutWebsocketClose
|
|
|
|
|
// }
|
2023-12-29 09:00:00 +08:00
|
|
|
|
},
|
2023-12-29 16:29:15 +08:00
|
|
|
|
funInitWebSocket() {
|
2024-03-26 16:45:16 +08:00
|
|
|
|
let date = new Date().valueOf()
|
|
|
|
|
const funWsUrl = `ws://10.70.180.10:8081/xc-screen/websocket/${date}`
|
|
|
|
|
this.funWs = new WebSocketHeartbeat(funWsUrl);
|
|
|
|
|
// 处理收到的消息
|
|
|
|
|
this.funWs.ws.onmessage = (event) => {
|
|
|
|
|
this.funWsData = event?.data ? JSON.parse(event?.data) : {}
|
|
|
|
|
// FanInfo
|
|
|
|
|
if (this.funWsData.type === 'AnnealFanInfo') {
|
|
|
|
|
let arr = []
|
|
|
|
|
let index = 0
|
|
|
|
|
for (let i in this.funWsData.data.annealFanInfo) {
|
|
|
|
|
index++,
|
|
|
|
|
arr.push([
|
2024-04-02 14:56:02 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)" >${index || ''}
|
2024-01-16 16:09:52 +08:00
|
|
|
|
</span>`,
|
2024-04-02 14:56:02 +08:00
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${i || ''}
|
|
|
|
|
// </span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${i || ''}</span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)"><div style="${this.funWsData.data.annealFanInfo[i] == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${this.funWsData.data.annealFanInfo[i] || ''}</span>`,
|
2024-03-26 16:45:16 +08:00
|
|
|
|
])
|
|
|
|
|
}
|
|
|
|
|
this.annealFunConfig.data = arr
|
2024-03-29 16:56:21 +08:00
|
|
|
|
// this.$nextTick(() => {
|
|
|
|
|
this.$refs['annealFunScrollBoard'].updateRows(arr)
|
|
|
|
|
// })
|
2024-01-02 09:20:55 +08:00
|
|
|
|
}
|
2024-03-26 16:45:16 +08:00
|
|
|
|
if (this.funWsData.type === 'FanInfo') {
|
|
|
|
|
let arr = []
|
|
|
|
|
let index = 0
|
|
|
|
|
for (let i in this.funWsData.data.fanInfo) {
|
|
|
|
|
index++,
|
|
|
|
|
arr.push([
|
2024-04-02 14:56:02 +08:00
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)" >${index || ''}
|
|
|
|
|
</span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)">${i || ''}</span>`,
|
|
|
|
|
`<span style="color:rgba(255,255,255,0.5)"><div style="${this.funWsData.data.fanInfo[i] == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${this.funWsData.data.fanInfo[i] || ''}</span>`,
|
2024-03-26 16:45:16 +08:00
|
|
|
|
])
|
|
|
|
|
}
|
|
|
|
|
this.funConfig.data = arr
|
2024-03-29 16:56:21 +08:00
|
|
|
|
// this.$nextTick(() => {
|
|
|
|
|
this.$refs['funScrollBoard'].updateRows(arr)
|
|
|
|
|
// })
|
2023-12-29 16:29:15 +08:00
|
|
|
|
}
|
2024-03-26 16:45:16 +08:00
|
|
|
|
};
|
|
|
|
|
// if (typeof (WebSocket) === 'undefined') {
|
|
|
|
|
// alert('您的浏览器不支持WebSocket')
|
|
|
|
|
// } else {
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.74:48080/websocket/message?userId=EN111'
|
|
|
|
|
// // const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
|
|
|
|
|
// let date = new Date().valueOf()
|
|
|
|
|
// const funWsUrl = `ws://10.70.180.10:8081/xc-screen/websocket/${date}`
|
|
|
|
|
// this.funWebsocket = new WebSocket(funWsUrl)
|
|
|
|
|
// // 监听 WebSocket 连接
|
|
|
|
|
// this.funWebsocket.onopen = this.funWebsocketOnOpen
|
|
|
|
|
// // 监听 WebSocket 错误信息
|
|
|
|
|
// this.funWebsocket.onerror = this.funWebsocketOnError
|
|
|
|
|
// // 监听 WebSocket 消息
|
|
|
|
|
// this.funWebsocket.onmessage = this.funWebsocketOnMessage
|
|
|
|
|
// // 监听 webSocket 断开信息
|
|
|
|
|
// this.funWebsocket.onclose = this.funWebsocketClose
|
|
|
|
|
// }
|
2023-12-29 09:00:00 +08:00
|
|
|
|
},
|
2024-04-03 16:01:11 +08:00
|
|
|
|
NumFormat(value) {
|
|
|
|
|
if (!value) return '0.00'
|
|
|
|
|
value = value.toFixed(2)
|
|
|
|
|
var intPart = Math.trunc(value) // 获取整数部分
|
|
|
|
|
// var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 将整数部分逢三一断
|
|
|
|
|
var floatPart = '.00' // 预定义小数部分
|
|
|
|
|
var value2Array = value.split('.')
|
|
|
|
|
// =2表示数据有小数位
|
|
|
|
|
if (value2Array.length === 2) {
|
|
|
|
|
floatPart = value2Array[1].toString() // 拿到小数部分
|
|
|
|
|
if (floatPart.length === 1) {
|
|
|
|
|
return intPart + '.' + floatPart + '0'
|
|
|
|
|
} else {
|
|
|
|
|
return intPart + '.' + floatPart
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return intPart + floatPart
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-03-26 16:45:16 +08:00
|
|
|
|
// funWebsocketOnOpen() {
|
|
|
|
|
// console.log('socket连接成功')
|
|
|
|
|
// this.SJGWebsocket.onmessage()
|
|
|
|
|
// },
|
|
|
|
|
// // 连接建立失败重连
|
|
|
|
|
// funWebsocketOnError(e) {
|
|
|
|
|
// this.funInitWebSocket()
|
|
|
|
|
// },
|
|
|
|
|
// 数据接收
|
|
|
|
|
// funWebsocketOnMessage(e) {
|
|
|
|
|
// this.funWsData = e?.data ? JSON.parse(e?.data) : {}
|
|
|
|
|
// // FanInfo
|
|
|
|
|
// if (this.funWsData.type === 'AnnealFanInfo') {
|
|
|
|
|
// let arr = []
|
|
|
|
|
// let index = 0
|
|
|
|
|
// for (let i in this.funWsData.data.annealFanInfo) {
|
|
|
|
|
// index++,
|
|
|
|
|
// arr.push([
|
|
|
|
|
// `
|
|
|
|
|
// <span style="color:rgba(255,255,255,0.5)" >${index || ''}
|
|
|
|
|
// </span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${i || ''}
|
|
|
|
|
// </span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.annealFanInfo[i] || ''}</span>`,
|
|
|
|
|
// ])
|
|
|
|
|
// }
|
|
|
|
|
// this.annealFunConfig.data = arr
|
|
|
|
|
// this.$refs['annealFunScrollBoard'].updateRows(arr)
|
|
|
|
|
// }
|
|
|
|
|
// if (this.funWsData.type === 'FanInfo') {
|
|
|
|
|
// let arr = []
|
|
|
|
|
// let index = 0
|
|
|
|
|
// for (let i in this.funWsData.data.fanInfo) {
|
|
|
|
|
// index++,
|
|
|
|
|
// arr.push([
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${index || ''}</span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)" >${i || ''}</span>`,
|
|
|
|
|
// `<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.fanInfo[i] || ''}</span>`,
|
|
|
|
|
// ])
|
|
|
|
|
// }
|
|
|
|
|
// this.funConfig.data = arr
|
|
|
|
|
// this.$refs['funScrollBoard'].updateRows(arr)
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// cutWebsocketOnOpen() {
|
|
|
|
|
// console.log('socket连接成功')
|
|
|
|
|
// this.SJGWebsocket.onmessage()
|
|
|
|
|
// },
|
|
|
|
|
// // 连接建立失败重连
|
|
|
|
|
// cutWebsocketOnError(e) {
|
|
|
|
|
// this.CutInitWebSocket()
|
|
|
|
|
// },
|
2024-01-05 08:44:31 +08:00
|
|
|
|
getSize(str) {
|
2024-01-16 16:09:52 +08:00
|
|
|
|
// console.log(str.match(/\d+(\.\d+)?/g))
|
2024-01-05 08:44:31 +08:00
|
|
|
|
let size = str.match(/\d+(\.\d+)?/g).map(ele => {
|
|
|
|
|
return parseFloat(ele)
|
|
|
|
|
})
|
2024-01-16 16:09:52 +08:00
|
|
|
|
// console.log(size[0] + '*' + size[1] + '*' + size[2]);
|
2024-01-05 08:44:31 +08:00
|
|
|
|
return size[0] + '*' + size[1] + '*' + size[2]
|
|
|
|
|
},
|
2023-11-15 09:08:20 +08:00
|
|
|
|
windowWidth(value) {
|
|
|
|
|
this.clientWidth = value
|
2023-11-23 14:32:53 +08:00
|
|
|
|
this.beilv2 = this.clientWidth / 1920
|
2023-11-15 09:08:20 +08:00
|
|
|
|
},
|
|
|
|
|
change() {
|
2024-03-27 17:02:44 +08:00
|
|
|
|
console.log(this.isFullScreen);
|
2023-11-15 09:08:20 +08:00
|
|
|
|
this.isFullScreen = screenfull.isFullscreen
|
|
|
|
|
},
|
|
|
|
|
init() {
|
2024-03-27 17:02:44 +08:00
|
|
|
|
if (screenfull.isEnabled) {
|
2023-11-15 09:08:20 +08:00
|
|
|
|
screenfull.on('change', this.change)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
destroy() {
|
2024-03-27 17:02:44 +08:00
|
|
|
|
if (screenfull.isEnabled) {
|
2023-11-15 09:08:20 +08:00
|
|
|
|
screenfull.off('change', this.change)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
changeFullScreen() {
|
2024-03-28 16:48:42 +08:00
|
|
|
|
// this.containerWidth = 223223223
|
2024-03-27 17:02:44 +08:00
|
|
|
|
if (!screenfull.isEnabled) {
|
2023-11-15 09:08:20 +08:00
|
|
|
|
this.$message({
|
|
|
|
|
message: 'you browser can not work',
|
|
|
|
|
type: 'warning'
|
|
|
|
|
})
|
|
|
|
|
return false
|
|
|
|
|
}
|
2024-03-28 15:36:39 +08:00
|
|
|
|
screenfull.toggle()
|
2023-12-29 09:00:00 +08:00
|
|
|
|
}
|
2023-11-15 09:08:20 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
2024-04-01 09:25:54 +08:00
|
|
|
|
.myLegend{
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: -20px;
|
2024-04-03 16:01:11 +08:00
|
|
|
|
right: 20px;
|
2024-04-01 09:25:54 +08:00
|
|
|
|
font-size: 12px;
|
|
|
|
|
color: rgba(255,255,255,.6);
|
|
|
|
|
.barLegend{
|
|
|
|
|
// float: left;
|
|
|
|
|
background: linear-gradient(#9DD5FF, #1295FF);
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
margin-right: 5px;
|
2024-04-03 16:01:11 +08:00
|
|
|
|
border-radius: 30%;
|
2024-04-01 09:25:54 +08:00
|
|
|
|
}
|
|
|
|
|
.barText{
|
|
|
|
|
// float: right;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
}
|
2024-04-03 16:01:11 +08:00
|
|
|
|
.barCircleLegend{
|
|
|
|
|
width: 15px;
|
|
|
|
|
height: 1px;
|
|
|
|
|
background-color: rgba(255, 209, 96, 1);
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: -4.1715px;
|
|
|
|
|
top: 21.7px;
|
|
|
|
|
}
|
2024-04-01 09:25:54 +08:00
|
|
|
|
.barCircle{
|
2024-04-03 16:01:11 +08:00
|
|
|
|
width: 6px;
|
|
|
|
|
height: 6px;
|
2024-04-01 09:25:54 +08:00
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background-color: rgba(255, 209, 96, 1);
|
|
|
|
|
display: inline-block;
|
2024-04-03 16:01:11 +08:00
|
|
|
|
margin-right: 10px;
|
|
|
|
|
margin-bottom: 1.7px;
|
2024-04-01 09:25:54 +08:00
|
|
|
|
}
|
|
|
|
|
.barCircleText{
|
|
|
|
|
display: inline-block;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-11-15 09:08:20 +08:00
|
|
|
|
.visual-container {
|
|
|
|
|
width: 1920px;
|
|
|
|
|
height: 1080px;
|
|
|
|
|
background: url('../../assets/img/OperationalOverview/back.png') no-repeat;
|
|
|
|
|
background-size: cover;
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
|
|
|
|
// opacity: .8;
|
2023-11-15 09:08:20 +08:00
|
|
|
|
.container-title {
|
|
|
|
|
width: 100%;
|
|
|
|
|
background: url('../../assets/img/OperationalOverview/title.png') no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
2024-01-12 10:00:17 +08:00
|
|
|
|
color: rgba(0, 255, 247, 1);
|
2023-11-15 09:08:20 +08:00
|
|
|
|
text-align: center;
|
2024-03-27 12:01:25 +08:00
|
|
|
|
letter-spacing: 8px;
|
2024-02-01 16:48:58 +08:00
|
|
|
|
word-spacing: 8px;
|
2023-12-29 09:00:00 +08:00
|
|
|
|
.unit {
|
2023-12-19 16:32:12 +08:00
|
|
|
|
position: absolute;
|
2024-03-27 12:01:25 +08:00
|
|
|
|
left: 290px;
|
2023-12-19 16:32:12 +08:00
|
|
|
|
top: 25px;
|
2024-01-12 10:00:17 +08:00
|
|
|
|
color: rgba(255, 255, 255, 0.80);
|
2023-12-19 16:32:12 +08:00
|
|
|
|
font-size: 20px;
|
2024-03-29 16:56:21 +08:00
|
|
|
|
letter-spacing: 1px;
|
2024-03-27 12:01:25 +08:00
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
2023-12-19 16:32:12 +08:00
|
|
|
|
.time {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 1360px;
|
2024-01-12 10:00:17 +08:00
|
|
|
|
color: rgba(255, 255, 255, 0.80);
|
2023-12-19 16:32:12 +08:00
|
|
|
|
top: 25px;
|
|
|
|
|
font-size: 20px;
|
2024-03-29 16:56:21 +08:00
|
|
|
|
letter-spacing: .72px;
|
2023-12-19 16:32:12 +08:00
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
.title-button {
|
2024-01-12 10:00:17 +08:00
|
|
|
|
color: rgba(255, 255, 255, 0.80);
|
2023-11-15 09:08:20 +08:00
|
|
|
|
font-size: 20px;
|
|
|
|
|
position: absolute;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
.container-main {
|
2023-12-29 09:00:00 +08:00
|
|
|
|
padding: 10px;
|
2023-11-15 09:08:20 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.now-team-title {
|
|
|
|
|
margin: 0;
|
|
|
|
|
margin-top: -1em;
|
|
|
|
|
font-size: 1.2em;
|
|
|
|
|
line-height: 2em;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.main-title {
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.now-secondary-title {
|
|
|
|
|
margin: 0;
|
|
|
|
|
font-size: 1em;
|
|
|
|
|
line-height: 2em;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.now-team-content {
|
|
|
|
|
font-size: 3em;
|
|
|
|
|
line-height: 1em;
|
|
|
|
|
color: #52fff1;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-progress-bar__inner {
|
|
|
|
|
background-color: unset;
|
|
|
|
|
background-image: linear-gradient(to right, #4573fe, #47f8dc);
|
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
|
|
|
|
.visual-select {
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 1em;
|
|
|
|
|
top: 2em;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-28 15:36:39 +08:00
|
|
|
|
.screen-btn {
|
|
|
|
|
color: #00fff0;
|
|
|
|
|
font-size: 32px;
|
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
// .container-main {
|
|
|
|
|
// padding: 5px;
|
|
|
|
|
// }
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</style>
|
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
<style lang="scss">
|
2024-01-24 17:16:05 +08:00
|
|
|
|
.eqLine{
|
|
|
|
|
height: 290px;
|
|
|
|
|
width: 1px;
|
|
|
|
|
position: absolute;
|
2024-01-29 15:55:16 +08:00
|
|
|
|
left: 33.8%;
|
2024-01-24 17:16:05 +08:00
|
|
|
|
top: 12%;
|
|
|
|
|
background: linear-gradient(to bottom,rgba(60,
|
|
|
|
|
231,
|
|
|
|
|
255,0), #3CE7FF, rgba(60,
|
|
|
|
|
231,
|
|
|
|
|
255, 0));
|
|
|
|
|
}
|
|
|
|
|
.eqLineTwo {
|
|
|
|
|
height: 290px;
|
|
|
|
|
width: 1px;
|
|
|
|
|
position: absolute;
|
2024-02-21 15:27:09 +08:00
|
|
|
|
left: 66.3%;
|
2024-01-24 17:16:05 +08:00
|
|
|
|
top: 12%;
|
|
|
|
|
background: linear-gradient(to bottom, rgba(60,
|
|
|
|
|
231,
|
|
|
|
|
255, 0), #3CE7FF, rgba(60,
|
|
|
|
|
231,
|
|
|
|
|
255, 0));
|
|
|
|
|
}
|
2023-11-15 09:08:20 +08:00
|
|
|
|
.visual-container {
|
|
|
|
|
::-webkit-scrollbar {
|
|
|
|
|
width: 8px;
|
|
|
|
|
height: 8px;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::-webkit-scrollbar-track-piece {
|
|
|
|
|
background: #1b2b3d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::-webkit-scrollbar-corner {
|
|
|
|
|
background: #1b2b3d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::-webkit-scrollbar-track {
|
|
|
|
|
width: 6px;
|
|
|
|
|
background: #1b2b3d;
|
|
|
|
|
-webkit-border-radius: 2em;
|
|
|
|
|
-moz-border-radius: 2em;
|
|
|
|
|
border-radius: 2em;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
|
|
|
background: rgba($color: #5bc4be, $alpha: 0.7);
|
|
|
|
|
background-clip: padding-box;
|
|
|
|
|
min-height: 28px;
|
|
|
|
|
-webkit-border-radius: 2em;
|
|
|
|
|
-moz-border-radius: 2em;
|
|
|
|
|
border-radius: 2em;
|
|
|
|
|
transition: background-color 0.3s;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
|
|
|
background-color: rgba($color: #5bc4be, $alpha: 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
|
|
|
|
.coldSelect {
|
2023-11-23 14:32:53 +08:00
|
|
|
|
.el-input {
|
2023-12-29 09:00:00 +08:00
|
|
|
|
min-height: 10px;
|
|
|
|
|
}
|
2023-11-15 09:08:20 +08:00
|
|
|
|
|
2024-02-23 16:12:43 +08:00
|
|
|
|
// .el-input__inner {
|
|
|
|
|
// background-color: rgba($color: #31878c, $alpha: 0.29);
|
|
|
|
|
// border: rgba($color: #31878c, $alpha: 0.29);
|
|
|
|
|
// color: aliceblue;
|
|
|
|
|
// }
|
2023-11-15 09:08:20 +08:00
|
|
|
|
|
2023-12-29 09:00:00 +08:00
|
|
|
|
.el-divider--vertical {
|
|
|
|
|
height: 174px;
|
|
|
|
|
width: 1px;
|
|
|
|
|
border: rgba(255, 255, 255, 0.15);
|
|
|
|
|
color: rgba(255, 255, 255, 0.15);
|
|
|
|
|
margin-left: 3em;
|
|
|
|
|
}
|
2023-11-23 14:32:53 +08:00
|
|
|
|
}
|
2024-03-28 15:36:39 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.flex-col {
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.flex-1 {
|
|
|
|
|
flex: 1 1;
|
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
|
|
|
|
.h-full {
|
|
|
|
|
height: calc(100vh - 150px);
|
2023-11-15 09:08:20 +08:00
|
|
|
|
}
|
2023-12-29 09:00:00 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
/* .container-main {
|
|
|
|
|
min-height: calc(100vh - 10em);
|
|
|
|
|
} */
|
2024-01-16 16:09:52 +08:00
|
|
|
|
.orange {
|
|
|
|
|
color: rgba(255, 209, 96, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.white {
|
|
|
|
|
color: rgba(255, 255, 255, 0.5)
|
|
|
|
|
}
|
|
|
|
|
.tooltip {
|
|
|
|
|
position: relative;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
}
|
|
|
|
|
.tooltip .tooltiptext {
|
|
|
|
|
visibility: hidden;
|
|
|
|
|
width: 120px;
|
|
|
|
|
background-color: black;
|
|
|
|
|
color: #fff;
|
|
|
|
|
text-align: center;
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
padding: 5px 0;
|
|
|
|
|
position: absolute;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
bottom: 150%;
|
|
|
|
|
left: 50%;
|
|
|
|
|
margin-left: -60px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tooltip .tooltiptext::after {
|
|
|
|
|
content: "";
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 100%;
|
|
|
|
|
left: 50%;
|
|
|
|
|
margin-left: -5px;
|
|
|
|
|
border-width: 5px;
|
|
|
|
|
border-style: solid;
|
|
|
|
|
border-color: black transparent transparent transparent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tooltip:hover .tooltiptext {
|
|
|
|
|
visibility: visible;
|
|
|
|
|
}
|
2024-03-28 15:36:39 +08:00
|
|
|
|
|
2023-11-15 09:08:20 +08:00
|
|
|
|
</style>
|