修改样式
This commit is contained in:
@@ -153,7 +153,10 @@ const handlerYAxis = () => {
|
|||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#000',
|
color: '#000',
|
||||||
fontSize: 14
|
fontSize: 14,
|
||||||
|
formatter: function (value) {
|
||||||
|
return value.toFixed(0); // 格式化显示为一位小数
|
||||||
|
}
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
@@ -162,7 +165,8 @@ const handlerYAxis = () => {
|
|||||||
type: 'dashed',
|
type: 'dashed',
|
||||||
opacity: 0.5
|
opacity: 0.5
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
// props.options?.xAxis 是数组还是对象
|
// props.options?.xAxis 是数组还是对象
|
||||||
if (Array.isArray(props.options?.yAxis)) {
|
if (Array.isArray(props.options?.yAxis)) {
|
||||||
@@ -245,11 +249,13 @@ watch(
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.el-button {
|
.el-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0px;
|
right: 0px;
|
||||||
top: -60px;
|
top: -60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.my-chart {
|
.my-chart {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
55
src/utils/echartMethod.ts
Normal file
55
src/utils/echartMethod.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import { install$2 } from 'echarts/types/dist/shared'
|
||||||
|
|
||||||
|
export const yMethod = (arr: any) => {
|
||||||
|
console.log('🚀 ~ yMethod ~ arr:', arr)
|
||||||
|
let interval = 0
|
||||||
|
let maxValue = 0
|
||||||
|
let minValue = 0
|
||||||
|
let max = 0
|
||||||
|
let min = 0
|
||||||
|
maxValue = Math.max(...arr)
|
||||||
|
minValue = Math.min(...arr)
|
||||||
|
|
||||||
|
console.log('🚀 ~ yMethod ~ minValue:', minValue)
|
||||||
|
|
||||||
|
// interval = (maxValue - minValue) / 4
|
||||||
|
// if (maxValue > 1000) {
|
||||||
|
// interval = (Math.ceil(maxValue / 100) * 100 - Math.ceil(minValue / 100) * 100) / 4
|
||||||
|
// min = Math.floor((minValue - interval / 2) / 100) * 100
|
||||||
|
// max = Math.ceil((maxValue + interval / 2) / 100) * 100
|
||||||
|
// min >= 0 ? 0 : ''
|
||||||
|
// } else {
|
||||||
|
// min = Math.floor(minValue - interval / 2)
|
||||||
|
// max = Math.ceil(maxValue + interval / 2)
|
||||||
|
// console.log('🚀 ~ yMethod ~ minValue:', minValue)
|
||||||
|
|
||||||
|
// if (minValue >= 0 && minValue < 10) {
|
||||||
|
// min = 0
|
||||||
|
// }
|
||||||
|
// if (maxValue < 1 && maxValue >= 0) {
|
||||||
|
// max = 1
|
||||||
|
// }
|
||||||
|
// interval = (max - min) / 4
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (interval < 1 && interval > -1) {
|
||||||
|
// interval = 1
|
||||||
|
// }
|
||||||
|
// console.log("🚀 ~ yMethod ~ minValue:", minValue)
|
||||||
|
|
||||||
|
if (maxValue > 1000) {
|
||||||
|
max = Math.ceil(maxValue / 100) * 100
|
||||||
|
min = (Math.floor(minValue / 100) - 1) * 100
|
||||||
|
} else {
|
||||||
|
max = Math.ceil(maxValue / 10) * 10
|
||||||
|
min = Math.floor(minValue / 10) * 10
|
||||||
|
}
|
||||||
|
if (max > 0 && max < 1) {
|
||||||
|
max = 1
|
||||||
|
}
|
||||||
|
// if (min < 0 && min < -1) {
|
||||||
|
// min = -1
|
||||||
|
// }
|
||||||
|
|
||||||
|
return [min, max, interval]
|
||||||
|
}
|
||||||
@@ -39,6 +39,7 @@ import { reactive } from 'vue'
|
|||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import { getDeviceDataTrend } from '@/api/cs-harmonic-boot/datatrend'
|
import { getDeviceDataTrend } from '@/api/cs-harmonic-boot/datatrend'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
|
import { yMethod } from '@/utils/echartMethod'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
detail: anyObj
|
detail: anyObj
|
||||||
@@ -118,6 +119,7 @@ const init = () => {
|
|||||||
res.data.forEach((item: any[]) => {
|
res.data.forEach((item: any[]) => {
|
||||||
arr.push(...item)
|
arr.push(...item)
|
||||||
})
|
})
|
||||||
|
let [min, max, interval] = yMethod(arr.map((item: any) => item.statisticalData))
|
||||||
echartsData.value = {
|
echartsData.value = {
|
||||||
options: {
|
options: {
|
||||||
grid: {
|
grid: {
|
||||||
@@ -183,25 +185,52 @@ const init = () => {
|
|||||||
axisLine: {
|
axisLine: {
|
||||||
show: true
|
show: true
|
||||||
},
|
},
|
||||||
minInterval: 0.1,
|
|
||||||
min: (
|
min: min,
|
||||||
arr
|
max: max,
|
||||||
.map((item: any) => item.statisticalData)
|
// interval:interval,
|
||||||
.sort((a, b) => {
|
splitNumber:5
|
||||||
return a - b
|
// min: 134,
|
||||||
})[0] / 1.2
|
// max: 500,
|
||||||
).toFixed(1),
|
// min: Math.ceil(
|
||||||
max: (
|
// arr
|
||||||
arr
|
// .map((item: any) => item.statisticalData)
|
||||||
.map(item => item.statisticalData)
|
// .sort((a, b) => {
|
||||||
.sort((a, b) => {
|
// return a - b
|
||||||
return b - a
|
// })[0]
|
||||||
})[0] * 1.2
|
// ),
|
||||||
).toFixed(1)
|
// max: Math.floor(
|
||||||
|
// arr
|
||||||
|
// .map(item => item.statisticalData)
|
||||||
|
// .sort((a, b) => {
|
||||||
|
// return b - a
|
||||||
|
// })[0]
|
||||||
|
// ),
|
||||||
|
// interval: (Math.floor(
|
||||||
|
// arr
|
||||||
|
// .map(item => item.statisticalData)
|
||||||
|
// .sort((a, b) => {
|
||||||
|
// return b - a
|
||||||
|
// })[0]
|
||||||
|
// ) - Math.ceil(
|
||||||
|
// arr
|
||||||
|
// .map((item: any) => item.statisticalData)
|
||||||
|
// .sort((a, b) => {
|
||||||
|
// return a - b
|
||||||
|
// })[0]
|
||||||
|
// )) / 5,
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'time'
|
type: 'time',
|
||||||
|
axisLabel: {
|
||||||
|
formatter: {
|
||||||
|
day: '{MM}-{dd}',
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
// data: res.data[0].map((item: any) => {
|
// data: res.data[0].map((item: any) => {
|
||||||
// return item.time
|
// return item.time
|
||||||
// }),
|
// }),
|
||||||
|
|||||||
@@ -4,12 +4,8 @@
|
|||||||
<div class="home_header">
|
<div class="home_header">
|
||||||
<el-form-item label="值类型选择">
|
<el-form-item label="值类型选择">
|
||||||
<el-select @change="changeView" v-model="value" placeholder="请选择值类型">
|
<el-select @change="changeView" v-model="value" placeholder="请选择值类型">
|
||||||
<el-option
|
<el-option v-for="(item, index) in options" :key="index" :label="item.label"
|
||||||
v-for="(item, index) in options"
|
:value="item.value"></el-option>
|
||||||
:key="index"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
@@ -17,29 +13,15 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-tabs class="home_body" type="border-card" v-model="activeName" @tab-click="handleClick">
|
<el-tabs class="home_body" type="border-card" v-model="activeName" @tab-click="handleClick">
|
||||||
<el-tab-pane
|
<el-tab-pane label="瞬时波形" name="ssbx"
|
||||||
label="瞬时波形"
|
:style="'height:' + bxecharts + ';overflow-y: scroll;padding-bottom:200px;'">
|
||||||
name="ssbx"
|
<shushiboxi v-if="isWp && wp && activeName == 'ssbx'" :value="value" :boxoList="boxoList" :wp="wp">
|
||||||
:style="'height:' + bxecharts + ';overflow-y: scroll;padding-bottom:200px;'"
|
</shushiboxi>
|
||||||
>
|
|
||||||
<shushiboxi
|
|
||||||
v-if="isWp && wp && activeName == 'ssbx'"
|
|
||||||
:value="value"
|
|
||||||
:boxoList="boxoList"
|
|
||||||
:wp="wp"
|
|
||||||
></shushiboxi>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane
|
<el-tab-pane label="RMS波形" name="rmsbx"
|
||||||
label="RMS波形"
|
:style="'height:' + bxecharts + ';overflow-y: scroll;padding-bottom:200px;'">
|
||||||
name="rmsbx"
|
<rmsboxi v-if="isWp && wp && activeName == 'rmsbx'" :value="value" :boxoList="boxoList" :wp="wp">
|
||||||
:style="'height:' + bxecharts + ';overflow-y: scroll;padding-bottom:200px;'"
|
</rmsboxi>
|
||||||
>
|
|
||||||
<rmsboxi
|
|
||||||
v-if="isWp && wp && activeName == 'rmsbx'"
|
|
||||||
:value="value"
|
|
||||||
:boxoList="boxoList"
|
|
||||||
:wp="wp"
|
|
||||||
></rmsboxi>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -142,6 +124,7 @@ defineExpose({ getWpData })
|
|||||||
.tab_info {
|
.tab_info {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 450px);
|
height: calc(100vh - 450px);
|
||||||
|
|
||||||
// overflow: auto;
|
// overflow: auto;
|
||||||
// padding-bottom: 20px;
|
// padding-bottom: 20px;
|
||||||
.charts {
|
.charts {
|
||||||
@@ -157,6 +140,7 @@ defineExpose({ getWpData })
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.home_header {
|
.home_header {
|
||||||
// position: absolute;
|
// position: absolute;
|
||||||
// top: -25px;
|
// top: -25px;
|
||||||
@@ -166,10 +150,12 @@ defineExpose({ getWpData })
|
|||||||
height: 50px;
|
height: 50px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.el-select {
|
.el-select {
|
||||||
width: 200px !important;
|
width: 200px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.home_body {
|
.home_body {
|
||||||
// margin-top: 20px;
|
// margin-top: 20px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|||||||
@@ -1,51 +1,37 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="history_header">
|
<div >
|
||||||
<el-form :model="searchForm" class="history_select" id="history_select">
|
<TableHeader :showSearch="false">
|
||||||
|
<template v-slot:select>
|
||||||
|
<!-- <el-form :model="searchForm" class="history_select" id="history_select"> -->
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<DatePicker ref="datePickerRef"></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="统计指标" label-width="80px">
|
<el-form-item label="统计指标" label-width="80px">
|
||||||
<el-select
|
<el-select multiple :multiple-limit="3" collapse-tags collapse-tags-tooltip
|
||||||
multiple
|
v-model="searchForm.index" placeholder="请选择统计指标" @change="onIndexChange($event)">
|
||||||
:multiple-limit="3"
|
<el-option v-for="item in indexOptions" :key="item.id" :label="item.name"
|
||||||
collapse-tags
|
:value="item.id"></el-option>
|
||||||
collapse-tags-tooltip
|
|
||||||
v-model="searchForm.index"
|
|
||||||
placeholder="请选择统计指标"
|
|
||||||
@change="onIndexChange($event)"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in indexOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-for="(item, index) in countData" :key="index">
|
<div v-for="(item, index) in countData" :key="index">
|
||||||
<el-form-item
|
<el-form-item :label="item.name + '谐波次数'" v-if="item.countOptions.length != 0"
|
||||||
:label="item.name + '谐波次数'"
|
label-width="180px">
|
||||||
v-if="item.countOptions.length != 0"
|
|
||||||
label-width="180px"
|
|
||||||
>
|
|
||||||
|
|
||||||
<el-select
|
<el-select v-model="item.count" multiple collapse-tags collapse-tags-tooltip
|
||||||
v-model="item.count"
|
@change="onCountChange($event, index)" placeholder="请选择谐波次数">
|
||||||
multiple
|
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv"
|
||||||
collapse-tags
|
:value="vv"></el-option>
|
||||||
collapse-tags-tooltip
|
|
||||||
@change="onCountChange($event, index)"
|
|
||||||
placeholder="请选择谐波次数"
|
|
||||||
>
|
|
||||||
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv" :value="vv"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
<!-- </el-form> -->
|
||||||
<div class="history_searchBtn">
|
</template>
|
||||||
|
<template #operation>
|
||||||
<el-button type="primary" icon="el-icon-Search" @click="init()">查询</el-button>
|
<el-button type="primary" icon="el-icon-Search" @click="init()">查询</el-button>
|
||||||
</div>
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="history_chart" v-loading="loading">
|
<div class="history_chart" v-loading="loading">
|
||||||
<MyEchart ref="historyChart" :options="echartsData" />
|
<MyEchart ref="historyChart" :options="echartsData" />
|
||||||
@@ -664,6 +650,7 @@ defineExpose({ getTrendRequest })
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.history_header {
|
.history_header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
// flex-wrap: wrap;
|
// flex-wrap: wrap;
|
||||||
#history_select {
|
#history_select {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -672,10 +659,12 @@ defineExpose({ getTrendRequest })
|
|||||||
// overflow-x: auto;
|
// overflow-x: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.el-form-item {
|
.el-form-item {
|
||||||
flex: none !important;
|
flex: none !important;
|
||||||
// max-width: 380px;
|
// max-width: 380px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-select {
|
.el-select {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
@@ -696,7 +685,7 @@ defineExpose({ getTrendRequest })
|
|||||||
|
|
||||||
.history_chart {
|
.history_chart {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh - 450px) !important;
|
height: calc(100vh - 400px) !important;
|
||||||
// flex: 1;
|
// flex: 1;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div :style="{ width: menuCollapse ? '40px' : '280px' }"
|
||||||
:style="{ width: menuCollapse ? '40px' : '280px' }"
|
style="transition: all 0.3s; overflow: hidden; height: 100%">
|
||||||
style="transition: all 0.3s; overflow: hidden; height: 100%"
|
<Icon v-show="menuCollapse" @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
|
||||||
>
|
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 mt20 menu-collapse"
|
||||||
<Icon
|
style="cursor: pointer" />
|
||||||
v-show="menuCollapse"
|
|
||||||
@click="onMenuCollapse"
|
|
||||||
:name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
|
|
||||||
:class="menuCollapse ? 'unfold' : ''"
|
|
||||||
size="18"
|
|
||||||
class="fold ml10 mt20 menu-collapse"
|
|
||||||
style="cursor: pointer"
|
|
||||||
/>
|
|
||||||
<div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1 }">
|
<div class="cn-tree" :style="{ opacity: menuCollapse ? 0 : 1 }">
|
||||||
<div style="display: flex; align-items: center" class="mb10">
|
<div style="display: flex; align-items: center" class="mb10">
|
||||||
<el-input v-model="filterText" placeholder="请输入内容" clearable>
|
<el-input v-model="filterText" placeholder="请输入内容" clearable>
|
||||||
@@ -20,37 +12,18 @@
|
|||||||
<Icon name="el-icon-Search" style="font-size: 16px" />
|
<Icon name="el-icon-Search" style="font-size: 16px" />
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<Icon
|
<Icon @click="onMenuCollapse" :name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
|
||||||
@click="onMenuCollapse"
|
:class="menuCollapse ? 'unfold' : ''" size="18" class="fold ml10 menu-collapse"
|
||||||
:name="menuCollapse ? 'el-icon-Expand' : 'el-icon-Fold'"
|
style="cursor: pointer" />
|
||||||
:class="menuCollapse ? 'unfold' : ''"
|
|
||||||
size="18"
|
|
||||||
class="fold ml10 menu-collapse"
|
|
||||||
style="cursor: pointer"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<el-tree
|
<el-tree style="flex: 1; overflow: auto" :props="defaultProps" highlight-current
|
||||||
style="flex: 1; overflow: auto"
|
:filter-node-method="filterNode" node-key="id" v-bind="$attrs" default-expand-all :data="tree"
|
||||||
:props="defaultProps"
|
ref="treRef" @node-click="clickNode" :expand-on-click-node="false">
|
||||||
highlight-current
|
|
||||||
:filter-node-method="filterNode"
|
|
||||||
node-key="id"
|
|
||||||
v-bind="$attrs"
|
|
||||||
default-expand-all
|
|
||||||
:data="tree"
|
|
||||||
ref="treRef"
|
|
||||||
@node-click="clickNode"
|
|
||||||
:expand-on-click-node="false"
|
|
||||||
>
|
|
||||||
<template #default="{ node, data }">
|
<template #default="{ node, data }">
|
||||||
<span class="custom-tree-node">
|
<span class="custom-tree-node">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<Icon
|
<Icon :name="data.icon" style="font-size: 16px" :style="{ color: data.color }"
|
||||||
:name="data.icon"
|
v-if="data.icon" />
|
||||||
style="font-size: 16px"
|
|
||||||
:style="{ color: data.color }"
|
|
||||||
v-if="data.icon"
|
|
||||||
/>
|
|
||||||
<span>{{ node.label }}</span>
|
<span>{{ node.label }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
@@ -108,11 +81,40 @@ const onMenuCollapse = () => {
|
|||||||
menuCollapse.value = !menuCollapse.value
|
menuCollapse.value = !menuCollapse.value
|
||||||
proxy.eventBus.emit('cnTreeCollapse', menuCollapse)
|
proxy.eventBus.emit('cnTreeCollapse', menuCollapse)
|
||||||
}
|
}
|
||||||
const filterNode = (value: string, data: any) => {
|
const filterNode = (value: string, data: any, node: any) => {
|
||||||
if (!value) return true
|
if (!value) return true
|
||||||
return data.name.includes(value)
|
// return data.name.includes(value)
|
||||||
}
|
if (data.name) {
|
||||||
|
|
||||||
|
return chooseNode(value, data, node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const chooseNode = (value: string, data: any, node: any) => {
|
||||||
|
|
||||||
|
if (data.name.indexOf(value) !== -1) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const level = node.level
|
||||||
|
// 如果传入的节点本身就是一级节点就不用校验了
|
||||||
|
if (level === 1) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// 先取当前节点的父节点
|
||||||
|
let parentData = node.parent
|
||||||
|
// 遍历当前节点的父节点
|
||||||
|
let index = 0
|
||||||
|
while (index < level - 1) {
|
||||||
|
// 如果匹配到直接返回,此处name值是中文字符,enName是英文字符。判断匹配中英文过滤
|
||||||
|
if (parentData.data.name.indexOf(value) !== -1) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// 否则的话再往上一层做匹配
|
||||||
|
parentData = parentData.parent
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
// 没匹配到返回false
|
||||||
|
return false
|
||||||
|
}
|
||||||
/** 树形结构数据 */
|
/** 树形结构数据 */
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
@@ -287,6 +289,7 @@ defineExpose({ treeRef, getPlanData, getTreeList, setCheckedNode })
|
|||||||
.ml10 {
|
.ml10 {
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.add_plan {
|
.add_plan {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -294,21 +297,25 @@ defineExpose({ treeRef, getPlanData, getTreeList, setCheckedNode })
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-tree-node {
|
.custom-tree-node {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.left,
|
.left,
|
||||||
.right {
|
.right {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
span {
|
span {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
a {
|
a {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
|||||||
@@ -22,12 +22,8 @@
|
|||||||
<p>测试项信息</p>
|
<p>测试项信息</p>
|
||||||
</div> -->
|
</div> -->
|
||||||
<el-tabs v-model="activeName" type="border-card" @click="handleClickTabs">
|
<el-tabs v-model="activeName" type="border-card" @click="handleClickTabs">
|
||||||
<el-tab-pane
|
<el-tab-pane v-for="(item, index) in deviceData.records" :label="item.itemName"
|
||||||
v-for="(item, index) in deviceData.records"
|
:name="item.id" :key="index">
|
||||||
:label="item.itemName"
|
|
||||||
:name="item.id"
|
|
||||||
:key="index"
|
|
||||||
>
|
|
||||||
<template #label>
|
<template #label>
|
||||||
<span class="custom-tabs-label">
|
<span class="custom-tabs-label">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
@@ -105,21 +101,10 @@
|
|||||||
<div class="history_header">
|
<div class="history_header">
|
||||||
<el-form :model="searchForm" class="history_select" id="history_select">
|
<el-form :model="searchForm" class="history_select" id="history_select">
|
||||||
<el-form-item label="统计指标" label-width="80px">
|
<el-form-item label="统计指标" label-width="80px">
|
||||||
<el-select
|
<el-select collapse-tags collapse-tags-tooltip v-model="searchForm.index"
|
||||||
collapse-tags
|
placeholder="请选择统计指标" multiple :multiple-limit="3" @change="init()">
|
||||||
collapse-tags-tooltip
|
<el-option v-for="item in indexOptions" :key="item.id" :label="item.name"
|
||||||
v-model="searchForm.index"
|
:value="item.id"></el-option>
|
||||||
placeholder="请选择统计指标"
|
|
||||||
multiple
|
|
||||||
:multiple-limit="3"
|
|
||||||
@change="init()"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in indexOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="值类型">
|
<el-form-item label="值类型">
|
||||||
@@ -129,36 +114,20 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-for="(item, index) in countData" :key="index">
|
<div v-for="(item, index) in countData" :key="index">
|
||||||
<el-form-item
|
<el-form-item :label="item.name + '谐波次数'" label-width="180px"
|
||||||
:label="item.name + '谐波次数'"
|
v-if="item.countOptions.length != 0">
|
||||||
label-width="180px"
|
|
||||||
v-if="item.countOptions.length != 0"
|
|
||||||
>
|
|
||||||
<!-- multiple -->
|
<!-- multiple -->
|
||||||
<el-select
|
<el-select v-model="item.count" collapse-tags collapse-tags-tooltip
|
||||||
v-model="item.count"
|
placeholder="请选择谐波次数" style="width: 100px">
|
||||||
collapse-tags
|
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv"
|
||||||
collapse-tags-tooltip
|
:value="vv"></el-option>
|
||||||
placeholder="请选择谐波次数"
|
|
||||||
style="width: 100px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="vv in item.countOptions"
|
|
||||||
:key="vv"
|
|
||||||
:label="vv"
|
|
||||||
:value="vv"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="统计类型" label-width="80px">
|
<el-form-item label="统计类型" label-width="80px">
|
||||||
<el-select v-model="searchForm.type" placeholder="请选择值类型">
|
<el-select v-model="searchForm.type" placeholder="请选择值类型">
|
||||||
<el-option
|
<el-option v-for="item in typeOptions" :key="item.id" :label="item.name"
|
||||||
v-for="item in typeOptions"
|
:value="item.id"></el-option>
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -505,22 +474,27 @@ const init = () => {
|
|||||||
crossStyle: {
|
crossStyle: {
|
||||||
color: '#999'
|
color: '#999'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
formatter: function (params: any) {
|
||||||
|
let list = params.filter((item, index, self) => {
|
||||||
|
return index === self.findIndex((t) => t.seriesName === item.seriesName);
|
||||||
|
})
|
||||||
|
console.log("🚀 ~ .then ~ list:", list)
|
||||||
|
var res = list[0].name + '<br/>'
|
||||||
|
for (var i = 0, l = list.length; i < l; i++) {
|
||||||
|
list[i].unit =
|
||||||
|
echartsData.value.options.yAxis[
|
||||||
|
echartsData.value.options.series[list[i].seriesIndex].yAxisIndex
|
||||||
|
]?.name
|
||||||
|
res +=
|
||||||
|
list[i].seriesName +
|
||||||
|
' ' +
|
||||||
|
`<div style="width:16px;height:16px;float:left;background:${list[i].color};border-radius:50%;margin:0 5px;margin:0 15px"></div>` +
|
||||||
|
`<div style='float:right;min-width:120px;padding-left:20px;'>${list[i].value} </div><br/>`
|
||||||
|
}
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
// formatter: function (params: any) {
|
|
||||||
// var res = params[0].name + '<br/>'
|
|
||||||
// for (var i = 0, l = params.length; i < l; i++) {
|
|
||||||
// params[i].unit =
|
|
||||||
// echartsData.value.options.yAxis[
|
|
||||||
// echartsData.value.options.series[params[i].seriesIndex].yAxisIndex
|
|
||||||
// ]?.name
|
|
||||||
// res +=
|
|
||||||
// params[i].seriesName +
|
|
||||||
// ' ' +
|
|
||||||
// `<div style="width:16px;height:16px;float:left;background:${params[i].color};border-radius:50%;margin:0 5px;margin:0 15px"></div>` +
|
|
||||||
// `<div style='float:right;min-width:120px;padding-left:20px;'>${params[i].value} ${params[i].unit}</div><br/>`
|
|
||||||
// }
|
|
||||||
// return res
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
// grid: {
|
// grid: {
|
||||||
// left: chartsList.length != 0 ? '5%' : '1%',
|
// left: chartsList.length != 0 ? '5%' : '1%',
|
||||||
@@ -529,32 +503,41 @@ const init = () => {
|
|||||||
// top: '8%',
|
// top: '8%',
|
||||||
// containLabel: true
|
// containLabel: true
|
||||||
// },
|
// },
|
||||||
xAxis: [
|
// xAxis: [
|
||||||
{
|
// {
|
||||||
type: 'time', //category
|
// type: 'time', //category
|
||||||
name: '\n\n\n\n\n时间',
|
// name: '\n\n\n\n\n时间',
|
||||||
|
// axisLabel: {
|
||||||
|
// color: '#A9AEB2',
|
||||||
|
// fontSize: 12,
|
||||||
|
// show: function (index: any, value: any) {
|
||||||
|
// // 检查数据中是否存在这个时间点
|
||||||
|
// // return data.some(item:any => item[0] === value)
|
||||||
|
// },
|
||||||
|
// formatter: {
|
||||||
|
// day: '{MM}-{d}'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// nameTextStyle: {
|
||||||
|
// right: 0
|
||||||
|
// },
|
||||||
|
// data: Array.from(new Set(xAxis)),
|
||||||
|
// axisLine: {
|
||||||
|
// lineStyle: {
|
||||||
|
// color: '#43485E'
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
xAxis: {
|
||||||
|
type: 'time',
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#A9AEB2',
|
|
||||||
fontSize: 12,
|
|
||||||
show: function (index: any, value: any) {
|
|
||||||
// 检查数据中是否存在这个时间点
|
|
||||||
// return data.some(item:any => item[0] === value)
|
|
||||||
},
|
|
||||||
formatter: {
|
formatter: {
|
||||||
day: '{MM}-{d}'
|
day: '{MM}-{dd}',
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nameTextStyle: {
|
|
||||||
right: 0
|
|
||||||
},
|
|
||||||
data: Array.from(new Set(xAxis)),
|
|
||||||
axisLine: {
|
|
||||||
lineStyle: {
|
|
||||||
color: '#43485E'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
yAxis: [
|
yAxis: [
|
||||||
{
|
{
|
||||||
type: 'value',
|
type: 'value',
|
||||||
@@ -652,7 +635,6 @@ const init = () => {
|
|||||||
} else {
|
} else {
|
||||||
vv.yAxisIndex = 0
|
vv.yAxisIndex = 0
|
||||||
}
|
}
|
||||||
//series数据
|
|
||||||
echartsData.value.options.series.push({
|
echartsData.value.options.series.push({
|
||||||
name: vv.phase + '相' + vv.showName,
|
name: vv.phase + '相' + vv.showName,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
@@ -679,6 +661,7 @@ const init = () => {
|
|||||||
// yAxisIndex:0,
|
// yAxisIndex:0,
|
||||||
yAxisIndex: vv.yAxisIndex
|
yAxisIndex: vv.yAxisIndex
|
||||||
})
|
})
|
||||||
|
// console.log("🚀 ~ item.map ~ vv.phase + '相' + vv.showName:", vv.phase + '相' + vv.showName)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
//设置数据项颜色
|
//设置数据项颜色
|
||||||
@@ -694,7 +677,7 @@ const init = () => {
|
|||||||
// item.data = filterArray(item.data)
|
// item.data = filterArray(item.data)
|
||||||
})
|
})
|
||||||
loading.value = false
|
loading.value = false
|
||||||
console.log(echartsData.value.options.series, '++++++++++++++++++++669')
|
console.log(echartsData.value.options.series, '++++++++++++++++++++669', echartsData.value)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
@@ -959,6 +942,7 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
|
||||||
// height: 45px;
|
// height: 45px;
|
||||||
// padding-top: 18px;
|
// padding-top: 18px;
|
||||||
// flex-wrap: wrap;
|
// flex-wrap: wrap;
|
||||||
|
|||||||
Reference in New Issue
Block a user