趋势图

97 阅读1分钟
<template>
    <div v-if="dialogShow" class="wrap" ref="dialog">
        <!-- 趋势图 -->
        <!-- 这里不传也可以模拟 -->
        <chart :optionsData="resData" :title_name="title_name" :colorData="colorData" :gradeDate="gradeDate" :starttime="starttime" :endtime="endtime"></chart>
    </div>
</template>
<script setup>
// script里面加setup,组件无需注册,无需return
// 趋势图
import { defineComponent, ref, reactive, onMounted, onBeforeUnmount, computed, inject } from 'vue';
import chart from '../com/Chart/index.vue'
import { ewsData } from '/@/api/station/data'; //接口
import { useTrendreviewStore, } from '/@/store/modules/trendreview';
import { storeToRefs } from 'pinia';
import { awaitWrap } from '/@/utils/asycnUtil';
import dayjs from 'dayjs';

const dialog = ref();
const isClickDialog = ref(false);
const gradeDate = ref('2022-06-10');
const dialogShow = ref(true);
const title_name = ref('EWS评分');
let timer;
// ecahrts数据,父组件传数据,子组件处理数据
// const resData = ref([
//     { 
//         id: 1, 
//         name: '4:00 AM', 
//         value: 1,  //数据结构改变
//         gradeTime: "2022-06 7:48:54 PM", //数据结构改变 
//          这里
//         data: [
                // ['gradeTime', 'value']
//         ]
//         detail: [
//             { item_name: 'RR', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' },
//             { item_name: '意识(AVPU)', item_value: '清醒' }
//         ] 
//     },
//     { 
//         id: 2, 
//         name: '8:00 AM', 
//         value: 3, 
//         gradeTime: "2022-06 7:50:54 PM", 
//         detail: [
//             { item_name: 'R1', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' }, 
//             { item_name: '意识(AVPU)', item_value: '不清晰' }
//         ] 
//     },
//     { 
//         id: 3, 
//         name: '12:00 AM', 
//         value: 4, 
//         gradeTime: "2022-06 7:52:54 PM", 
//         detail:[
//             { item_name: 'R2', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' }, 
//             { item_name: '意识(AVPU)', item_value: '模糊' }
//         ]  
//     },
//     { 
//         id: 4, 
//         name: '16:00 PM', 
//         value: 5, 
//         gradeTime: "2022-06 7:54:54 PM", 
//         detail: [
//             { item_name: 'R3', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' }, 
//             { item_name: '意识(AVPU)', item_value: '无反应' }
//         ] 
//     },
//     { 
//         id: 5, 
//         name: '20:00 PM', 
//         value: 9, 
//         gradeTime: "2022-06 7:56:54 PM", 
//         detail: [
//             { item_name: 'R4', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' }, 
//             { item_name: '意识(AVPU)', item_value: '哈哈哈哈' }
//         ] 
//     },
//     { 
//         id: 6, 
//         name: '24:00 PM', 
//         value: 13, 
//         gradeTime: "2022-06 7:58:54 PM", 
//         detail: [
//             { item_name: 'R5', item_value: '85' },
//             { item_name: 'TEMP', item_value: '20' },
//             { item_name: 'BP-S', item_value: '20'},
//             { item_name: 'HR', item_value: '20' }, 
//             { item_name: '意识(AVPU)', item_value: '嘿嘿嘿' }
//         ] 
//     },
// ]);
const resData = ref([]);
// echarts根据y值范围设置不同颜色
const colorData = ref([
    {area: [0, 1], color: 'white'},
    {area: [1, 5], color: 'green'},
    {area: [5, 7], color: 'yellow'},
    {area: [7, 14], color: 'red'},
])
onMounted(() => {
    getData();
    // ref = dialog 监听到有click事件、关闭窗口
    // dialog.value.addEventListener('click',(e) => {
    //     isClickDialog.value = true
    // })
    // const stopTime = 3000000;
    // timer = setTimeout(() => {
    //     if(!isClickDialog.value){
    //         dialogShow.value = false;
    //         clearTimeout(timer);
    //     }
    // } ,stopTime)
})
// 清除定时器
// onBeforeUnmount(() => {
//     clearTimeout(timer);
// })

// ewsData请求所需要的传参
const useTrendreview = useTrendreviewStore()
const bedInfo = inject('bedInfo')
let type = [
    {
        name: 'MWES',
        value: 0
    },
    {
        name: 'NEWS',
        value: 1
    },
    {
        name: 'NEWS2',
        value: 2
    }
]
const bedArr = bedInfo.bedItem
const queryData = {
    bedno: bedArr.bedno,
    deptid: bedArr.belongdepartmentid,
    type: 2,
}

// 需要传给子组件,必须定义ref
const starttime = ref('');
const endtime = ref('');
// 请求接口数据
async function getData() {
    try {
        let {data} = await ewsData (queryData);
        // 获取起始时间
        starttime.value = data[0].starttime;
        endtime.value = data[0].endtime;
        // 根据data的格式,解析成需要的格式
        resData.value = data.map((item,index) => {
            return {
                id:index + 1,
                data: [item.scoretime, item.score],
                value: item.score,
                gradeTime: item.scoretime,
                detail:item.patEWSItems.map((el, i) => {
                    const flag = [0,3,7].includes(i);
                    if(flag){
                        el.range = el.scorename
                    }
                    return {item_name:el.item,item_value:el.range?el.range+'':'- -'}
                })
            }
        });
    } catch (error) {
        console.log(error || '操作失败');
    }
}
</script>
<style lang="less" scoped>
    .wrap {
        
    }
</style>