new-map
parent
797449b43f
commit
c2b1e0e861
|
|
@ -3,16 +3,17 @@
|
||||||
<template #title>
|
<template #title>
|
||||||
<div class="text-18px font-extrabold">{{ title }}</div>
|
<div class="text-18px font-extrabold">{{ title }}</div>
|
||||||
</template>
|
</template>
|
||||||
<template #extra>普润镇桔博园-设备间旁边</template>
|
<template #extra></template>
|
||||||
<div ref="chartRef" :style="{ width, height }"></div>
|
<div ref="chartRef" :style="{ width, height }"></div>
|
||||||
</Card>
|
</Card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Card } from 'ant-design-vue';
|
import dayjs from 'dayjs'
|
||||||
import { Ref, ref, watch } from 'vue';
|
import { Card } from 'ant-design-vue'
|
||||||
import { useECharts } from '/@/hooks/web/useECharts';
|
import { Ref, ref, watch, computed } from 'vue'
|
||||||
import echarts from '/@/utils/lib/echarts';
|
import { useECharts } from '/@/hooks/web/useECharts'
|
||||||
|
import echarts from '/@/utils/lib/echarts'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
loading: Boolean,
|
loading: Boolean,
|
||||||
title: {
|
title: {
|
||||||
|
|
@ -27,77 +28,104 @@
|
||||||
type: String as PropType<string>,
|
type: String as PropType<string>,
|
||||||
default: '300px',
|
default: '300px',
|
||||||
},
|
},
|
||||||
});
|
data: {
|
||||||
const chartRef = ref<HTMLDivElement | null>(null);
|
type: Object as PropType<object>,
|
||||||
const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
|
default: () => {},
|
||||||
|
},
|
||||||
|
company: {
|
||||||
|
type: String as PropType<string>,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
time: {
|
||||||
|
type: Object as PropType<object>,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const format = computed(() => {
|
||||||
|
if (props.time) {
|
||||||
|
const start_time = dayjs(props.time?.[0]).format('YYYY-MM-DD')
|
||||||
|
const end_time = dayjs(props.time?.[1]).format('YYYY-MM-DD')
|
||||||
|
if (start_time === end_time) return 'HH:mm'
|
||||||
|
}
|
||||||
|
if (props.company === 'day') return 'HH:mm'
|
||||||
|
return 'YYYY-MM-DD'
|
||||||
|
})
|
||||||
|
const chartRef = ref<HTMLDivElement | null>(null)
|
||||||
|
const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>)
|
||||||
watch(
|
watch(
|
||||||
() => props.loading,
|
() => props.data,
|
||||||
() => {
|
(e) => {
|
||||||
if (props.loading) {
|
if (e) {
|
||||||
return;
|
setOptions({
|
||||||
}
|
tooltip: {
|
||||||
setOptions({
|
trigger: 'axis',
|
||||||
tooltip: {
|
axisPointer: {
|
||||||
trigger: 'axis',
|
|
||||||
axisPointer: {
|
|
||||||
lineStyle: {
|
|
||||||
width: 1,
|
|
||||||
color: '#019680',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
type: 'category',
|
|
||||||
data: [...new Array(18)].map((_item, index) => `${index + 6}:00`),
|
|
||||||
axisTick: {
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
axisLine: {
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
yAxis: [
|
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
axisTick: {
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
splitLine: {
|
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
type: 'dashed',
|
width: 1,
|
||||||
|
color: '#019680',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
xAxis: {
|
||||||
grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },
|
type: 'category',
|
||||||
series: [
|
data: Object.keys(e).map((e) => dayjs(e).format(format.value)),
|
||||||
{
|
axisTick: {
|
||||||
smooth: true,
|
show: false,
|
||||||
data: [11, 22, 40, 18, 3, 55, 66, 33, 14, 30, 66, 44, 22, 11, 40, 20, 50, 33, 22, 11],
|
|
||||||
type: 'line',
|
|
||||||
areaStyle: {
|
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
||||||
{
|
|
||||||
offset: 0,
|
|
||||||
color: '#d7f3f2',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
offset: 1,
|
|
||||||
color: '#ebf9f9',
|
|
||||||
},
|
|
||||||
]),
|
|
||||||
},
|
},
|
||||||
itemStyle: {
|
axisLine: {
|
||||||
color: '#5ab1ef',
|
show: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
yAxis: [
|
||||||
});
|
{
|
||||||
|
type: 'value',
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true },
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
smooth: true,
|
||||||
|
data: Object.values(e),
|
||||||
|
type: 'line',
|
||||||
|
areaStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: '#d7f3f2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: '#ebf9f9',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5ab1ef',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
dataZoom: [
|
||||||
|
{
|
||||||
|
type: 'inside', //slider表示有滑动块的,inside表示内置的
|
||||||
|
show: false,
|
||||||
|
xAxisIndex: 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
},
|
},
|
||||||
);
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
||||||
|
|
@ -146,12 +146,13 @@
|
||||||
Row,
|
Row,
|
||||||
Col,
|
Col,
|
||||||
RadioGroup,
|
RadioGroup,
|
||||||
RadioButton,
|
Radio,
|
||||||
RangePicker,
|
RangePicker,
|
||||||
Button,
|
Button,
|
||||||
message,
|
message,
|
||||||
} from 'ant-design-vue'
|
} from 'ant-design-vue'
|
||||||
import type { FormInstance } from 'ant-design-vue'
|
import type { FormInstance } from 'ant-design-vue'
|
||||||
|
const RadioButton = Radio.Button
|
||||||
const [registerDrawer, { openDrawer }] = useDrawer()
|
const [registerDrawer, { openDrawer }] = useDrawer()
|
||||||
const formRef = ref<FormInstance>()
|
const formRef = ref<FormInstance>()
|
||||||
const formState = reactive({
|
const formState = reactive({
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue