wujingjing
2024-11-27 5228bb30bb0f8ac4f45f9270d3d3e69977b9f08f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<template>
    <el-dialog
        :destroy-on-close="true"
        v-model="isShow"
        draggable
        :close-on-click-modal="false"
        :title="chartValues?.title"
        v-if="computedIsDialog"
    >
        <RecordSet :chartHeight="computedHeight" ref="recordSetRef" :data="chartValues">
            <TimeRange ref="timeRangeRef" v-model="queryRange" class="flex-0 m-1" @change="timeRangeChange" />
            <List class="flex-0 m-1" v-model="stepTime" :data="listData" @change="selectStepChange" />
        </RecordSet>
    </el-dialog>
    <div v-else v-show="isShow">
        <RecordSet :chartHeight="computedHeight" ref="recordSetRef" :data="chartValues">
            <TimeRange ref="timeRangeRef" v-model="queryRange" class="flex-0 m-1" @change="timeRangeChange" />
            <List class="flex-0 m-1" v-model="stepTime" :data="listData" @change="selectStepChange" />
        </RecordSet>
    </div>
</template>
 
<script setup lang="ts">
import { computed, nextTick, ref, watch } from 'vue';
import RecordSet from './RecordSet.vue';
import List from './components/List.vue';
import TimeRange from './components/TimeRange.vue';
import { queryScadaTimeValues } from '/@/api/ai/chat';
import { formatDate } from '/@/utils/formatTime';
import { useCompRef } from '/@/utils/types';
import { getRecentDateRange } from '/@/utils/util';
 
const props = defineProps(['otype', 'oname', 'indexName', 'isDialog', 'height']);
// SDVAL_FULL_FLOW true 25 DEV_FLOW_W
 
const computedIsDialog = computed(() => props.isDialog ?? true);
const computedHeight = computed(() => props.height ?? '30rem');
 
const isShow = defineModel({
    type: Boolean,
});
 
const recordSetRef = useCompRef(RecordSet);
const timeRangeRef = useCompRef(TimeRange);
 
const listData = {
    list: [
        { title: '5分钟', value: '5 minutes' },
        { title: '10分钟', value: '10 minutes' },
        { title: '半小时', value: '30 minutes' },
        { title: '1小时', value: '1 hours' },
        { title: '1天', value: '1 days' },
    ],
    type: 'list',
    title: '时长',
    value: '5 minutes',
} as any;
 
const queryRange = ref<string[]>(null);
const timeRangeChange = (val) => {
    setChartData();
};
 
const selectStepChange = (val) => {
    setChartData();
};
const stepTime = ref('5 minutes');
const chartValues = ref(null);
const setChartData = async () => {
    const res = await queryScadaTimeValues({
        // 设备类型
        ptype: props.otype,
        // 设备名称
        pname: props.oname,
        otype: props.indexName,
        start_time: timeRangeRef.value.formatDateValue[0],
        end_time: timeRangeRef.value.formatDateValue[1],
        step_time: stepTime.value,
    });
    chartValues.value = res.values;
    chartValues.value.chart = 'single_line';
    nextTick(() => {
        setTimeout(() => {
            if (recordSetRef.value.isMultiCompare) {
                recordSetRef.value.handleData();
                recordSetRef.value.handleMultiCompare();
            } else {
                recordSetRef.value.drawChart();
            }
        }, 0);
    });
};
 
watch(
    () => isShow.value,
    (val) => {
        if (!val) {
            return;
        }
        queryRange.value = getRecentDateRange(1).map((item) => formatDate(item));
        nextTick(() => {
            setChartData();
        });
    }
);
</script>
<style scoped lang="scss"></style>