|  | @@ -1,228 +1,250 @@
 | 
											
												
													
														|  |  <template>
 |  |  <template>
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    <!-- 折线图 -->
 |  | 
 | 
											
												
													
														|  | -        <div>
 |  | 
 | 
											
												
													
														|  | -        <div class="echartitem">
 |  | 
 | 
											
												
													
														|  | -          <!-- <h3 class="selcal">{{ props.selval }}</h3> -->
 |  | 
 | 
											
												
													
														|  | -            <div id="line2"  ref="chartContainer"  style="width:100%;height:500px;"></div>
 |  | 
 | 
											
												
													
														|  | -        </div>
 |  | 
 | 
											
												
													
														|  | -        </div>
 |  | 
 | 
											
												
													
														|  | -      </template>
 |  | 
 | 
											
												
													
														|  | 
 |  | +  <!-- 折线图 -->
 | 
											
												
													
														|  | 
 |  | +  <div style="width: 100%; height: 100%">
 | 
											
												
													
														|  | 
 |  | +    <div class="echartitem" style="width: 100%; height: 100%">
 | 
											
												
													
														|  | 
 |  | +      <!-- <h3 class="selcal">{{ props.selval }}</h3> -->
 | 
											
												
													
														|  | 
 |  | +      <div
 | 
											
												
													
														|  | 
 |  | +        id="line2"
 | 
											
												
													
														|  | 
 |  | +        ref="chartContainer"
 | 
											
												
													
														|  | 
 |  | +        style="width: 100%; height: 100%"
 | 
											
												
													
														|  | 
 |  | +      ></div>
 | 
											
												
													
														|  | 
 |  | +    </div>
 | 
											
												
													
														|  | 
 |  | +  </div>
 | 
											
												
													
														|  | 
 |  | +</template>
 | 
											
												
													
														|  |        <script setup>
 |  |        <script setup>
 | 
											
												
													
														|  | -      import { ref, onMounted, reactive,markRaw, inject,watch,nextTick} from "vue";
 |  | 
 | 
											
												
													
														|  | -    import { RouterView, RouterLink } from "vue-router"
 |  | 
 | 
											
												
													
														|  | -    import { request, uploadFile } from "@/utils/request";
 |  | 
 | 
											
												
													
														|  | -    import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
 |  | 
 | 
											
												
													
														|  | -    import * as echarts from 'echarts'
 |  | 
 | 
											
												
													
														|  | -    let vars=ref([]);
 |  | 
 | 
											
												
													
														|  | -    let vals=ref([]);
 |  | 
 | 
											
												
													
														|  | -    let series=ref([]);
 |  | 
 | 
											
												
													
														|  | -    let xdata=ref([]);
 |  | 
 | 
											
												
													
														|  | -    let chartContainer=ref(null);
 |  | 
 | 
											
												
													
														|  | -    let myChart;
 |  | 
 | 
											
												
													
														|  | -    let chartDom=ref()
 |  | 
 | 
											
												
													
														|  | -    let option=ref(null);
 |  | 
 | 
											
												
													
														|  | -    let convergeDate=ref([]);
 |  | 
 | 
											
												
													
														|  | -    let curvedata=ref('')  
 |  | 
 | 
											
												
													
														|  | -    let state = reactive({
 |  | 
 | 
											
												
													
														|  | -    instance: null,
 |  | 
 | 
											
												
													
														|  | -    })
 |  | 
 | 
											
												
													
														|  | -    const props = defineProps({
 |  | 
 | 
											
												
													
														|  | -      echartdata: {
 |  | 
 | 
											
												
													
														|  | -      type: String,
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -    curvedata:{
 |  | 
 | 
											
												
													
														|  | -      type: String,
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -    })
 |  | 
 | 
											
												
													
														|  | -    onMounted(() => {
 |  | 
 | 
											
												
													
														|  | -     chartContainer.value.style.width=window.innerWidth-220+'px';       
 |  | 
 | 
											
												
													
														|  | -        myChart = echarts.init(chartContainer.value);
 |  | 
 | 
											
												
													
														|  | -        linechart();
 |  | 
 | 
											
												
													
														|  | -          window.addEventListener("resize",function() {
 |  | 
 | 
											
												
													
														|  | -            chartContainer.value.style.width='';
 |  | 
 | 
											
												
													
														|  | -          myChart.resize();
 |  | 
 | 
											
												
													
														|  | -    })
 |  | 
 | 
											
												
													
														|  | -         })
 |  | 
 | 
											
												
													
														|  | -      //初始化
 |  | 
 | 
											
												
													
														|  | -      const echatinit=()=>{
 |  | 
 | 
											
												
													
														|  | -      convergeDate.value=[];
 |  | 
 | 
											
												
													
														|  | -      series.value=[];
 |  | 
 | 
											
												
													
														|  | -      xdata.value=[];
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    // 从websocket取数据
 |  | 
 | 
											
												
													
														|  | -    // const getsockechart=(data)=>{
 |  | 
 | 
											
												
													
														|  | -    //   curvedata.value=data;
 |  | 
 | 
											
												
													
														|  | -    //   series.value=[];
 |  | 
 | 
											
												
													
														|  | -    //   let rows=curvedata.value;
 |  | 
 | 
											
												
													
														|  | -    //   for(let i=0;i<rows.length;i++){
 |  | 
 | 
											
												
													
														|  | -        
 |  | 
 | 
											
												
													
														|  | -    //        vars.value=(rows[i].vars).split(",");
 |  | 
 | 
											
												
													
														|  | -    //        vals.value=(rows[i].vals).split(" ");
 |  | 
 | 
											
												
													
														|  | -    //        let data= vals.value.map((str) => Number(str));
 |  | 
 | 
											
												
													
														|  | -    //        convergeDate.value.push(data);
 |  | 
 | 
											
												
													
														|  | -    //        xdata.value.push(rows[i].step);
 |  | 
 | 
											
												
													
														|  | -    //     }
 |  | 
 | 
											
												
													
														|  | -    //     for(let j=0;j<vars.value.length;j++){
 |  | 
 | 
											
												
													
														|  | -    //   let firstColumn=(convergeDate.value.map((row) => row[j]));
 |  | 
 | 
											
												
													
														|  | -    //          let item= {
 |  | 
 | 
											
												
													
														|  | -    //       name:vars.value[j] ,
 |  | 
 | 
											
												
													
														|  | -    //       type: 'line',
 |  | 
 | 
											
												
													
														|  | -    //       stack: 'Total',
 |  | 
 | 
											
												
													
														|  | -    //       data: firstColumn
 |  | 
 | 
											
												
													
														|  | -    //     }
 |  | 
 | 
											
												
													
														|  | -    //     series.value.push(item)
 |  | 
 | 
											
												
													
														|  | -    //     }
 |  | 
 | 
											
												
													
														|  | -    //     myChart.setOption({
 |  | 
 | 
											
												
													
														|  | -    //       legend: {
 |  | 
 | 
											
												
													
														|  | -    //             data:vars.value
 |  | 
 | 
											
												
													
														|  | -    //         },
 |  | 
 | 
											
												
													
														|  | -    //       xAxis:{
 |  | 
 | 
											
												
													
														|  | -    //         data:  xdata.value,
 |  | 
 | 
											
												
													
														|  | -    //       },
 |  | 
 | 
											
												
													
														|  | -    //       series: series.value
 |  | 
 | 
											
												
													
														|  | -    //     });
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { ref, onMounted, reactive, markRaw, inject, watch, nextTick } from "vue"
 | 
											
												
													
														|  | 
 |  | +import { RouterView, RouterLink } from "vue-router"
 | 
											
												
													
														|  | 
 |  | +import { request, uploadFile } from "@/utils/request"
 | 
											
												
													
														|  | 
 |  | +import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
 | 
											
												
													
														|  | 
 |  | +import * as echarts from "echarts"
 | 
											
												
													
														|  | 
 |  | +let vars = ref([])
 | 
											
												
													
														|  | 
 |  | +let vals = ref([])
 | 
											
												
													
														|  | 
 |  | +let series = ref([])
 | 
											
												
													
														|  | 
 |  | +let xdata = ref([])
 | 
											
												
													
														|  | 
 |  | +let chartContainer = ref(null)
 | 
											
												
													
														|  | 
 |  | +let myChart
 | 
											
												
													
														|  | 
 |  | +let chartDom = ref()
 | 
											
												
													
														|  | 
 |  | +let option = ref(null)
 | 
											
												
													
														|  | 
 |  | +let convergeDate = ref([])
 | 
											
												
													
														|  | 
 |  | +let curvedata = ref("")
 | 
											
												
													
														|  | 
 |  | +let state = reactive({
 | 
											
												
													
														|  | 
 |  | +  instance: null
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +const props = defineProps({
 | 
											
												
													
														|  | 
 |  | +  echartdata: {
 | 
											
												
													
														|  | 
 |  | +    type: String
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  curvedata: {
 | 
											
												
													
														|  | 
 |  | +    type: String
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  echartLineshow: {
 | 
											
												
													
														|  | 
 |  | +    type: Boolean,
 | 
											
												
													
														|  | 
 |  | +    default: false
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +onMounted(() => {
 | 
											
												
													
														|  | 
 |  | +  chartContainer.value.style.width = window.innerWidth - 220 + "px"
 | 
											
												
													
														|  | 
 |  | +  myChart = echarts.init(chartContainer.value)
 | 
											
												
													
														|  | 
 |  | +  linechart()
 | 
											
												
													
														|  | 
 |  | +  myChart.resize();
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -     
 |  | 
 | 
											
												
													
														|  | -    // } 
 |  | 
 | 
											
												
													
														|  | -    
 |  | 
 | 
											
												
													
														|  | -    const getsockechart=(data)=>{
 |  | 
 | 
											
												
													
														|  | -  curvedata.value=data;
 |  | 
 | 
											
												
													
														|  | -  convergeDate.value=[];
 |  | 
 | 
											
												
													
														|  | -  series.value=[];
 |  | 
 | 
											
												
													
														|  | -  xdata.value=[];
 |  | 
 | 
											
												
													
														|  | -    let rows=JSON.parse(curvedata.value);
 |  | 
 | 
											
												
													
														|  | -  let num=0;
 |  | 
 | 
											
												
													
														|  | -    for(let i=0;i<rows.length;i++){
 |  | 
 | 
											
												
													
														|  | -      num+=1;
 |  | 
 | 
											
												
													
														|  | -       vars.value=(rows[i].vars).split(",");
 |  | 
 | 
											
												
													
														|  | -       vals.value=(rows[i].vals).split(" ");
 |  | 
 | 
											
												
													
														|  | -       let data= vals.value.map((str) => Number(str));
 |  | 
 | 
											
												
													
														|  | -       convergeDate.value.push(data);
 |  | 
 | 
											
												
													
														|  | -       xdata.value.push(num);
 |  | 
 | 
											
												
													
														|  | 
 |  | +// 监听 scattershow 变化
 | 
											
												
													
														|  | 
 |  | +watch(
 | 
											
												
													
														|  | 
 |  | +  () => props.echartLineshow,
 | 
											
												
													
														|  | 
 |  | +  (newValue) => {
 | 
											
												
													
														|  | 
 |  | +    if (newValue) {
 | 
											
												
													
														|  | 
 |  | +      nextTick(() => {
 | 
											
												
													
														|  | 
 |  | +        const chartDom = chartContainer.value
 | 
											
												
													
														|  | 
 |  | +        if (chartDom) {
 | 
											
												
													
														|  | 
 |  | +          myChart = echarts.init(chartDom)
 | 
											
												
													
														|  | 
 |  | +          myChart.resize() // 手动调整图表大小
 | 
											
												
													
														|  | 
 |  | +          linechart()// 设置图表配置
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      })
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    console.log(convergeDate.value);
 |  | 
 | 
											
												
													
														|  | -   // console.log( convergeDate.value);
 |  | 
 | 
											
												
													
														|  | -    for(let j=0;j<vars.value.length;j++){
 |  | 
 | 
											
												
													
														|  | -     let firstColumn=  convergeDate.value.map(row => row[j]);
 |  | 
 | 
											
												
													
														|  | -            let item= {
 |  | 
 | 
											
												
													
														|  | -      name:vars.value[j] ,
 |  | 
 | 
											
												
													
														|  | -      type: 'line',
 |  | 
 | 
											
												
													
														|  | -      stack: 'Total',
 |  | 
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  { immediate: true }
 | 
											
												
													
														|  | 
 |  | +)
 | 
											
												
													
														|  | 
 |  | +//初始化
 | 
											
												
													
														|  | 
 |  | +const echatinit = () => {
 | 
											
												
													
														|  | 
 |  | +  convergeDate.value = []
 | 
											
												
													
														|  | 
 |  | +  series.value = []
 | 
											
												
													
														|  | 
 |  | +  xdata.value = []
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 从websocket取数据
 | 
											
												
													
														|  | 
 |  | +// const getsockechart=(data)=>{
 | 
											
												
													
														|  | 
 |  | +//   curvedata.value=data;
 | 
											
												
													
														|  | 
 |  | +//   series.value=[];
 | 
											
												
													
														|  | 
 |  | +//   let rows=curvedata.value;
 | 
											
												
													
														|  | 
 |  | +//   for(let i=0;i<rows.length;i++){
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +//        vars.value=(rows[i].vars).split(",");
 | 
											
												
													
														|  | 
 |  | +//        vals.value=(rows[i].vals).split(" ");
 | 
											
												
													
														|  | 
 |  | +//        let data= vals.value.map((str) => Number(str));
 | 
											
												
													
														|  | 
 |  | +//        convergeDate.value.push(data);
 | 
											
												
													
														|  | 
 |  | +//        xdata.value.push(rows[i].step);
 | 
											
												
													
														|  | 
 |  | +//     }
 | 
											
												
													
														|  | 
 |  | +//     for(let j=0;j<vars.value.length;j++){
 | 
											
												
													
														|  | 
 |  | +//   let firstColumn=(convergeDate.value.map((row) => row[j]));
 | 
											
												
													
														|  | 
 |  | +//          let item= {
 | 
											
												
													
														|  | 
 |  | +//       name:vars.value[j] ,
 | 
											
												
													
														|  | 
 |  | +//       type: 'line',
 | 
											
												
													
														|  | 
 |  | +//       stack: 'Total',
 | 
											
												
													
														|  | 
 |  | +//       data: firstColumn
 | 
											
												
													
														|  | 
 |  | +//     }
 | 
											
												
													
														|  | 
 |  | +//     series.value.push(item)
 | 
											
												
													
														|  | 
 |  | +//     }
 | 
											
												
													
														|  | 
 |  | +//     myChart.setOption({
 | 
											
												
													
														|  | 
 |  | +//       legend: {
 | 
											
												
													
														|  | 
 |  | +//             data:vars.value
 | 
											
												
													
														|  | 
 |  | +//         },
 | 
											
												
													
														|  | 
 |  | +//       xAxis:{
 | 
											
												
													
														|  | 
 |  | +//         data:  xdata.value,
 | 
											
												
													
														|  | 
 |  | +//       },
 | 
											
												
													
														|  | 
 |  | +//       series: series.value
 | 
											
												
													
														|  | 
 |  | +//     });
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +const getsockechart = (data) => {
 | 
											
												
													
														|  | 
 |  | +  curvedata.value = data
 | 
											
												
													
														|  | 
 |  | +  convergeDate.value = []
 | 
											
												
													
														|  | 
 |  | +  series.value = []
 | 
											
												
													
														|  | 
 |  | +  xdata.value = []
 | 
											
												
													
														|  | 
 |  | +  let rows = JSON.parse(curvedata.value)
 | 
											
												
													
														|  | 
 |  | +  let num = 0
 | 
											
												
													
														|  | 
 |  | +  for (let i = 0; i < rows.length; i++) {
 | 
											
												
													
														|  | 
 |  | +    num += 1
 | 
											
												
													
														|  | 
 |  | +    vars.value = rows[i].vars.split(",")
 | 
											
												
													
														|  | 
 |  | +    vals.value = rows[i].vals.split(" ")
 | 
											
												
													
														|  | 
 |  | +    let data = vals.value.map((str) => Number(str))
 | 
											
												
													
														|  | 
 |  | +    convergeDate.value.push(data)
 | 
											
												
													
														|  | 
 |  | +    xdata.value.push(num)
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +  console.log(convergeDate.value)
 | 
											
												
													
														|  | 
 |  | +  // console.log( convergeDate.value);
 | 
											
												
													
														|  | 
 |  | +  for (let j = 0; j < vars.value.length; j++) {
 | 
											
												
													
														|  | 
 |  | +    let firstColumn = convergeDate.value.map((row) => row[j])
 | 
											
												
													
														|  | 
 |  | +    let item = {
 | 
											
												
													
														|  | 
 |  | +      name: vars.value[j],
 | 
											
												
													
														|  | 
 |  | +      type: "line",
 | 
											
												
													
														|  | 
 |  | +      stack: "Total",
 | 
											
												
													
														|  |        data: firstColumn
 |  |        data: firstColumn
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      series.value.push(item)
 |  |      series.value.push(item)
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    myChart.setOption({
 |  | 
 | 
											
												
													
														|  | -      legend: {
 |  | 
 | 
											
												
													
														|  | -            data:vars.value
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -      xAxis:{
 |  | 
 | 
											
												
													
														|  | -        data:  xdata.value,
 |  | 
 | 
											
												
													
														|  | -      },
 |  | 
 | 
											
												
													
														|  | -      series: series.value
 |  | 
 | 
											
												
													
														|  | -    });
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | -      const linechart= ()=>{
 |  | 
 | 
											
												
													
														|  | -    option.value = {
 |  | 
 | 
											
												
													
														|  | -      title: {
 |  | 
 | 
											
												
													
														|  | -    text: '折线图'
 |  | 
 | 
											
												
													
														|  | -  },
 |  | 
 | 
											
												
													
														|  | -              tooltip: {
 |  | 
 | 
											
												
													
														|  | -              trigger: "axis",//item
 |  | 
 | 
											
												
													
														|  | -              backgroundColor: "rgba(0,0,0,.6)",
 |  | 
 | 
											
												
													
														|  | -              borderColor: "rgba(147, 235, 248, .8)",
 |  | 
 | 
											
												
													
														|  | -              textStyle: {
 |  | 
 | 
											
												
													
														|  | -                color: "#FFF",
 |  | 
 | 
											
												
													
														|  | -              },
 |  | 
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            legend: {
 |  | 
 | 
											
												
													
														|  | -                data:vars.value
 |  | 
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            grid: {
 |  | 
 | 
											
												
													
														|  | -                show: false,
 |  | 
 | 
											
												
													
														|  | -                left: '3%',
 |  | 
 | 
											
												
													
														|  | -                right: '4%',
 |  | 
 | 
											
												
													
														|  | -                bottom: '3%',
 |  | 
 | 
											
												
													
														|  | -                containLabel: true
 |  | 
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            toolbox: {
 |  | 
 | 
											
												
													
														|  | -                feature: {
 |  | 
 | 
											
												
													
														|  | -                saveAsImage: {}
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            xAxis: {
 |  | 
 | 
											
												
													
														|  | -                type: 'category',
 |  | 
 | 
											
												
													
														|  | -                boundaryGap: false,
 |  | 
 | 
											
												
													
														|  | -                data:  xdata.value,
 |  | 
 | 
											
												
													
														|  | -                axisLine: {//X轴线
 |  | 
 | 
											
												
													
														|  | -                show: true, 
 |  | 
 | 
											
												
													
														|  | -                lineStyle: {
 |  | 
 | 
											
												
													
														|  | -                    color: '#000', // 线的颜色
 |  | 
 | 
											
												
													
														|  | -                    width: 2, // 线宽
 |  | 
 | 
											
												
													
														|  | -                    type: 'solid' // 线的类型,默认为实线,可选:'solid', 'dashed', 'dotted'
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -                },
 |  | 
 | 
											
												
													
														|  | -                splitLine: {
 |  | 
 | 
											
												
													
														|  | -                show: true // 如果不需要网格线,可以设置为 false
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            yAxis: {
 |  | 
 | 
											
												
													
														|  | -                type: 'value',
 |  | 
 | 
											
												
													
														|  | -                axisLine: {//Y轴线
 |  | 
 | 
											
												
													
														|  | -                show: true, 
 |  | 
 | 
											
												
													
														|  | -                lineStyle: {
 |  | 
 | 
											
												
													
														|  | -                    color: '#000', // 线的颜色
 |  | 
 | 
											
												
													
														|  | -                    width: 2, // 线宽
 |  | 
 | 
											
												
													
														|  | -                    type: 'solid' // 线的类型,默认为实线,可选:'solid', 'dashed', 'dotted'
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  myChart.setOption({
 | 
											
												
													
														|  | 
 |  | +    legend: {
 | 
											
												
													
														|  | 
 |  | +      data: vars.value
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  | -            },
 |  | 
 | 
											
												
													
														|  | -            series:series.value
 |  | 
 | 
											
												
													
														|  | -            };
 |  | 
 | 
											
												
													
														|  | -            option.value && myChart.setOption(option.value);
 |  | 
 | 
											
												
													
														|  | -            window.onresize = function() {
 |  | 
 | 
											
												
													
														|  | -                // 让图表自适应大小
 |  | 
 | 
											
												
													
														|  | -                myChart.resize();
 |  | 
 | 
											
												
													
														|  | -            };
 |  | 
 | 
											
												
													
														|  | 
 |  | +    xAxis: {
 | 
											
												
													
														|  | 
 |  | +      data: xdata.value
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    series: series.value
 | 
											
												
													
														|  | 
 |  | +  })
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const linechart = () => {
 | 
											
												
													
														|  | 
 |  | +  option.value = {
 | 
											
												
													
														|  | 
 |  | +    title: {
 | 
											
												
													
														|  | 
 |  | +      text: "折线图"
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    tooltip: {
 | 
											
												
													
														|  | 
 |  | +      trigger: "axis", //item
 | 
											
												
													
														|  | 
 |  | +      backgroundColor: "rgba(0,0,0,.6)",
 | 
											
												
													
														|  | 
 |  | +      borderColor: "rgba(147, 235, 248, .8)",
 | 
											
												
													
														|  | 
 |  | +      textStyle: {
 | 
											
												
													
														|  | 
 |  | +        color: "#FFF"
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    legend: {
 | 
											
												
													
														|  | 
 |  | +      data: vars.value
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    grid: {
 | 
											
												
													
														|  | 
 |  | +      show: false,
 | 
											
												
													
														|  | 
 |  | +      left: "3%",
 | 
											
												
													
														|  | 
 |  | +      right: "4%",
 | 
											
												
													
														|  | 
 |  | +      bottom: "3%",
 | 
											
												
													
														|  | 
 |  | +      containLabel: true
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    toolbox: {
 | 
											
												
													
														|  | 
 |  | +      feature: {
 | 
											
												
													
														|  | 
 |  | +        saveAsImage: {}
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    xAxis: {
 | 
											
												
													
														|  | 
 |  | +      type: "category",
 | 
											
												
													
														|  | 
 |  | +      boundaryGap: false,
 | 
											
												
													
														|  | 
 |  | +      data: xdata.value,
 | 
											
												
													
														|  | 
 |  | +      axisLine: {
 | 
											
												
													
														|  | 
 |  | +        //X轴线
 | 
											
												
													
														|  | 
 |  | +        show: true,
 | 
											
												
													
														|  | 
 |  | +        lineStyle: {
 | 
											
												
													
														|  | 
 |  | +          color: "#000", // 线的颜色
 | 
											
												
													
														|  | 
 |  | +          width: 2, // 线宽
 | 
											
												
													
														|  | 
 |  | +          type: "solid" // 线的类型,默认为实线,可选:'solid', 'dashed', 'dotted'
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      splitLine: {
 | 
											
												
													
														|  | 
 |  | +        show: true // 如果不需要网格线,可以设置为 false
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    yAxis: {
 | 
											
												
													
														|  | 
 |  | +      type: "value",
 | 
											
												
													
														|  | 
 |  | +      axisLine: {
 | 
											
												
													
														|  | 
 |  | +        //Y轴线
 | 
											
												
													
														|  | 
 |  | +        show: true,
 | 
											
												
													
														|  | 
 |  | +        lineStyle: {
 | 
											
												
													
														|  | 
 |  | +          color: "#000", // 线的颜色
 | 
											
												
													
														|  | 
 |  | +          width: 2, // 线宽
 | 
											
												
													
														|  | 
 |  | +          type: "solid" // 线的类型,默认为实线,可选:'solid', 'dashed', 'dotted'
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        // 监听数据变化,重绘图表
 |  | 
 | 
											
												
													
														|  | -      //   watch( myChart.value, () => {
 |  | 
 | 
											
												
													
														|  | -      //     console.log(11111)
 |  | 
 | 
											
												
													
														|  | -      //     window.onresize = function() {
 |  | 
 | 
											
												
													
														|  | -      //           // 让图表自适应大小
 |  | 
 | 
											
												
													
														|  | -      //           myChart.value.resize();
 |  | 
 | 
											
												
													
														|  | -      //       };
 |  | 
 | 
											
												
													
														|  | -      // });
 |  | 
 | 
											
												
													
														|  | -      //window.addEventListener('resize', handleResize);
 |  | 
 | 
											
												
													
														|  | -    // watch(series, () => {
 |  | 
 | 
											
												
													
														|  | -    //   linechart();
 |  | 
 | 
											
												
													
														|  | -    // }, { deep: true });
 |  | 
 | 
											
												
													
														|  | -        // watch(() =>props.echartdata, (newValue, oldValue) => {
 |  | 
 | 
											
												
													
														|  | -        //   // 这里处理 echartData 变化的逻辑
 |  | 
 | 
											
												
													
														|  | -        //   console.log(11111)
 |  | 
 | 
											
												
													
														|  | -        //   console.log('echartData changed:', newValue);
 |  | 
 | 
											
												
													
														|  | -        // //  console.log(optmonitor1.value);
 |  | 
 | 
											
												
													
														|  | -        // }, {deep: true ,immediate: true });
 |  | 
 | 
											
												
													
														|  | -        defineExpose({linechart,getsockechart,echatinit});
 |  | 
 | 
											
												
													
														|  | -      </script>
 |  | 
 | 
											
												
													
														|  | -      <style lang="scss" scoped>
 |  | 
 | 
											
												
													
														|  | -      .selcal{
 |  | 
 | 
											
												
													
														|  | -        position: absolute;
 |  | 
 | 
											
												
													
														|  | -        top: 37%;
 |  | 
 | 
											
												
													
														|  | -        width: 26px;
 |  | 
 | 
											
												
													
														|  | -        color: #000;
 |  | 
 | 
											
												
													
														|  | -        font-size: 14px;
 |  | 
 | 
											
												
													
														|  | -        font-weight: bold;
 |  | 
 | 
											
												
													
														|  | -        left: 5px
 |  | 
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | -     .diedai{
 |  | 
 | 
											
												
													
														|  | -      color: #000;
 |  | 
 | 
											
												
													
														|  | -      font-size: 14px;
 |  | 
 | 
											
												
													
														|  | -      padding-bottom: 20px;
 |  | 
 | 
											
												
													
														|  | -      font-weight: bold;
 |  | 
 | 
											
												
													
														|  | -     }
 |  | 
 | 
											
												
													
														|  | -      </style>
 |  | 
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    series: series.value
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +  option.value && myChart.setOption(option.value)
 | 
											
												
													
														|  | 
 |  | +  window.onresize = function () {
 | 
											
												
													
														|  | 
 |  | +    // 让图表自适应大小
 | 
											
												
													
														|  | 
 |  | +    myChart.resize()
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 监听数据变化,重绘图表
 | 
											
												
													
														|  | 
 |  | +//   watch( myChart.value, () => {
 | 
											
												
													
														|  | 
 |  | +//     console.log(11111)
 | 
											
												
													
														|  | 
 |  | +//     window.onresize = function() {
 | 
											
												
													
														|  | 
 |  | +//           // 让图表自适应大小
 | 
											
												
													
														|  | 
 |  | +//           myChart.value.resize();
 | 
											
												
													
														|  | 
 |  | +//       };
 | 
											
												
													
														|  | 
 |  | +// });
 | 
											
												
													
														|  | 
 |  | +//window.addEventListener('resize', handleResize);
 | 
											
												
													
														|  | 
 |  | +// watch(series, () => {
 | 
											
												
													
														|  | 
 |  | +//   linechart();
 | 
											
												
													
														|  | 
 |  | +// }, { deep: true });
 | 
											
												
													
														|  | 
 |  | +// watch(() =>props.echartdata, (newValue, oldValue) => {
 | 
											
												
													
														|  | 
 |  | +//   // 这里处理 echartData 变化的逻辑
 | 
											
												
													
														|  | 
 |  | +//   console.log(11111)
 | 
											
												
													
														|  | 
 |  | +//   console.log('echartData changed:', newValue);
 | 
											
												
													
														|  | 
 |  | +// //  console.log(optmonitor1.value);
 | 
											
												
													
														|  | 
 |  | +// }, {deep: true ,immediate: true });
 | 
											
												
													
														|  | 
 |  | +defineExpose({ linechart, getsockechart, echatinit })
 | 
											
												
													
														|  | 
 |  | +</script>
 | 
											
												
													
														|  | 
 |  | +      <style lang="scss" scoped>
 | 
											
												
													
														|  | 
 |  | +.selcal {
 | 
											
												
													
														|  | 
 |  | +  position: absolute;
 | 
											
												
													
														|  | 
 |  | +  top: 37%;
 | 
											
												
													
														|  | 
 |  | +  width: 26px;
 | 
											
												
													
														|  | 
 |  | +  color: #000;
 | 
											
												
													
														|  | 
 |  | +  font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +  font-weight: bold;
 | 
											
												
													
														|  | 
 |  | +  left: 5px;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +.diedai {
 | 
											
												
													
														|  | 
 |  | +  color: #000;
 | 
											
												
													
														|  | 
 |  | +  font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +  padding-bottom: 20px;
 | 
											
												
													
														|  | 
 |  | +  font-weight: bold;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +</style>
 | 
											
												
													
														|  |       
 |  |       
 | 
											
												
													
														|  |        
 |  |        
 |