update chart
This commit is contained in:
parent
f66b3a8a7a
commit
43a6f59afe
@ -19,6 +19,10 @@ const props = defineProps({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
displayPlaceholder: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
@ -54,7 +58,10 @@ onMounted(() => {
|
|||||||
<div class="chart rate-chart">
|
<div class="chart rate-chart">
|
||||||
<div ref="rateChartRef" class="chart-container"></div>
|
<div ref="rateChartRef" class="chart-container"></div>
|
||||||
|
|
||||||
<div :class="['fake-chart-title', isOnlyChild ? 'is-only-child' : '']">
|
<div
|
||||||
|
v-if="!displayPlaceholder"
|
||||||
|
:class="['fake-chart-title', isOnlyChild ? 'is-only-child' : '']"
|
||||||
|
>
|
||||||
<span class="integer-part">{{ rate[0] }}.</span>
|
<span class="integer-part">{{ rate[0] }}.</span>
|
||||||
<span class="decimal-part">{{ rate[1] }}%</span>
|
<span class="decimal-part">{{ rate[1] }}%</span>
|
||||||
</div>
|
</div>
|
||||||
@ -62,11 +69,11 @@ onMounted(() => {
|
|||||||
<div class="text-intro">
|
<div class="text-intro">
|
||||||
<div class="text-intro__item">
|
<div class="text-intro__item">
|
||||||
<span class="legend-box green"></span>
|
<span class="legend-box green"></span>
|
||||||
<span>当前成品率: {{ props.rawData.nowYield }}%</span>
|
<span>当前成品率: {{ props.rawData?.nowYield ?? 0 }}%</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-intro__item">
|
<div class="text-intro__item">
|
||||||
<span class="legend-box blue"></span>
|
<span class="legend-box blue"></span>
|
||||||
<span>目标成品率: {{ props.rawData.targetYield }}%</span>
|
<span>目标成品率: {{ props.rawData?.targetYield ?? 0 }}%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -79,6 +86,7 @@ onMounted(() => {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chart-placeholder,
|
||||||
.chart-container {
|
.chart-container {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
width: 320px;
|
width: 320px;
|
||||||
|
@ -15,12 +15,17 @@ const props = defineProps({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
displayPlaceholder: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const chart = ref(null);
|
const chart = ref(null);
|
||||||
const yieldChartRef = ref(null);
|
const yieldChartRef = ref(null);
|
||||||
|
|
||||||
function reInitChart() {
|
function reInitChart() {
|
||||||
|
if (props.displayPlaceholder) return;
|
||||||
if (chart.value) chart.value.dispose();
|
if (chart.value) chart.value.dispose();
|
||||||
const _chart = echarts.init(yieldChartRef.value);
|
const _chart = echarts.init(yieldChartRef.value);
|
||||||
_chart.setOption(getOptions(props.rawData));
|
_chart.setOption(getOptions(props.rawData));
|
||||||
@ -34,14 +39,15 @@ onMounted(() => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="chart yield-chart">
|
<div class="chart yield-chart">
|
||||||
<div ref="yieldChartRef" class="chart-container"></div>
|
<div v-if="displayPlaceholder" class="chart-placeholder"></div>
|
||||||
|
<div v-else ref="yieldChartRef" class="chart-container"></div>
|
||||||
<div class="text-intro">
|
<div class="text-intro">
|
||||||
<div class="text-intro__item">
|
<div class="text-intro__item">
|
||||||
<span class="legend-box green"></span>
|
<span class="legend-box green"></span>
|
||||||
<span>当前产量: {{ rawData.nowProduction }}片</span>
|
<span>当前产量: {{ rawData?.nowProduction ?? 0 }}片</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-intro__item">
|
<div v-if="!displayPlaceholder" class="text-intro__item">
|
||||||
<span>目标产量: {{ rawData.targetProduction }}片</span>
|
<span>目标产量: {{ rawData?.targetProduction ?? 0 }}片</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -54,6 +60,7 @@ onMounted(() => {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chart-placeholder,
|
||||||
.chart-container {
|
.chart-container {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
width: 320px;
|
width: 320px;
|
||||||
|
@ -128,10 +128,11 @@ const targetSerie = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default (data) => {
|
export default (data) => {
|
||||||
dataSerie.data[0].value = data.nowYield;
|
title.subtext = data?.nowYield == null ? "" : "当前成品率\u2002";
|
||||||
dataSerie.data[1].value = 100 - data.nowYield;
|
dataSerie.data[0].value = data?.nowYield ?? 0;
|
||||||
targetSerie.data[0].value = data.targetYield;
|
dataSerie.data[1].value = 100 - (data?.nowYield ?? 0);
|
||||||
targetSerie.data[1].value = 100 - data.targetYield;
|
targetSerie.data[0].value = data?.targetYield ?? 0;
|
||||||
|
targetSerie.data[1].value = 100 - (data?.targetYield ?? 0);
|
||||||
return {
|
return {
|
||||||
tooltip,
|
tooltip,
|
||||||
title,
|
title,
|
||||||
|
@ -25,15 +25,9 @@ store.$subscribe((mutation, state) => {
|
|||||||
if (chart.value) chart.value.dispose();
|
if (chart.value) chart.value.dispose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hourData.value = (state.data2?.lineHourList ?? [
|
hourData.value = (state.data2?.lineHourList ?? []).map((item, index) => ({
|
||||||
// { lineName: '001', hour: '00:00', num: 10 },
|
|
||||||
// { lineName: '002', hour: '00:20', num: 20 },
|
|
||||||
// { lineName: '003', hour: '00:30', num: 30 },
|
|
||||||
// { lineName: '004', hour: '00:40', num: 14 },
|
|
||||||
// { lineName: '005', hour: '00:50', num: 50 },
|
|
||||||
]).map((item, index) => ({
|
|
||||||
id: `${item.lineName}_${index}`,
|
id: `${item.lineName}_${index}`,
|
||||||
hour: item.hour || '__',
|
hour: item.hour || "__",
|
||||||
data: item.num || 0,
|
data: item.num || 0,
|
||||||
}));
|
}));
|
||||||
setupChart();
|
setupChart();
|
||||||
@ -46,7 +40,7 @@ function setupChart() {
|
|||||||
chartSetup(
|
chartSetup(
|
||||||
chart.value,
|
chart.value,
|
||||||
hourData.value.map((item) => item.hour),
|
hourData.value.map((item) => item.hour),
|
||||||
hourData.value.map((item) => item.num)
|
hourData.value.map((item) => item.data)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -102,13 +102,16 @@ function loadData(dailyTarget) {
|
|||||||
></div>
|
></div>
|
||||||
<p v-show="!show" class="empty-data-hint">暂无数据</p> -->
|
<p v-show="!show" class="empty-data-hint">暂无数据</p> -->
|
||||||
<div class="container-body__h-full">
|
<div class="container-body__h-full">
|
||||||
<yield-chart v-if="displayProductionChart" :raw-data="websocketData" />
|
<yield-chart
|
||||||
|
:display-placeholder="!displayProductionChart"
|
||||||
|
:raw-data="websocketData"
|
||||||
|
/>
|
||||||
<rate-chart
|
<rate-chart
|
||||||
v-if="displayRateChart"
|
:display-placeholder="!displayRateChart"
|
||||||
:raw-data="websocketData"
|
:raw-data="websocketData"
|
||||||
:isOnlyChild="!displayProductionChart"
|
:isOnlyChild="!displayProductionChart"
|
||||||
/>
|
/>
|
||||||
<p
|
<!-- <p
|
||||||
v-if="!displayProductionChart && !displayRateChart"
|
v-if="!displayProductionChart && !displayRateChart"
|
||||||
style="
|
style="
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -121,7 +124,7 @@ function loadData(dailyTarget) {
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
暂无数据
|
暂无数据
|
||||||
</p>
|
</p> -->
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user