|  | @@ -4,13 +4,13 @@
 | 
	
		
			
				|  |  |      <div>
 | 
	
		
			
				|  |  |      <div class="echartitem">
 | 
	
		
			
				|  |  |        <!-- <h3 class="selcal">{{ props.selval }}</h3> -->
 | 
	
		
			
				|  |  | -        <div id="line"  ref="myChart" style="width: 100%;height:400px;"></div>
 | 
	
		
			
				|  |  | +        <div id="line"  ref="chartContainer"  style="width:100%;height:400px;"></div>
 | 
	
		
			
				|  |  |          <h3 class="diedai">迭代次数</h3>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |    </template>
 | 
	
		
			
				|  |  |    <script setup>
 | 
	
		
			
				|  |  | -  import { ref, onMounted, reactive,markRaw, inject} from "vue";
 | 
	
		
			
				|  |  | +  import { ref, onMounted, reactive,markRaw, inject,watch} from "vue";
 | 
	
		
			
				|  |  |  import { RouterView, RouterLink } from "vue-router"
 | 
	
		
			
				|  |  |  import { request, uploadFile } from "@/utils/request";
 | 
	
		
			
				|  |  |  import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
 | 
	
	
		
			
				|  | @@ -38,62 +38,73 @@ curvedata:{
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |    let emit = defineEmits(['',])
 | 
	
		
			
				|  |  |  onMounted(() => {
 | 
	
		
			
				|  |  | -    chartDom.value = document.getElementById('line');
 | 
	
		
			
				|  |  | -    myChart.value = echarts.init(chartDom.value);
 | 
	
		
			
				|  |  | +  //var chartDom = document.getElementById('line');
 | 
	
		
			
				|  |  | +  //chartContainer.value.style.width=window.innerWidth-220+'px';
 | 
	
		
			
				|  |  | + // console.log( chartContainer.value.style.width);
 | 
	
		
			
				|  |  | +    myChart.value = echarts.init(chartContainer.value);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    linechart();
 | 
	
		
			
				|  |  | +    setTimeout(function(){
 | 
	
		
			
				|  |  | +      window.addEventListener("resize",function() {
 | 
	
		
			
				|  |  | +    // chartContainer.value.style.width='';
 | 
	
		
			
				|  |  | +      myChart.value.resize();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    },1000)
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +    // window.onresize = function() {
 | 
	
		
			
				|  |  | +    //         // 让图表自适应大小
 | 
	
		
			
				|  |  | +    //         myChart.value.resize();
 | 
	
		
			
				|  |  | +    //     };
 | 
	
		
			
				|  |  |    //  myChart.value = echarts.init(myChart.value);
 | 
	
		
			
				|  |  |    //myChart.value= echarts.init(chartContainer.value as HTMLElement)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    linechart();
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  |    })
 | 
	
		
			
				|  |  |    //初始化
 | 
	
		
			
				|  |  |    const echatinit=()=>{
 | 
	
		
			
				|  |  |    convergeDate.value=[];
 | 
	
		
			
				|  |  |    series.value=[];
 | 
	
		
			
				|  |  | +  xdata.value=[];
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  // 从websocket取数据
 | 
	
		
			
				|  |  | -const getsockechart=()=>{
 | 
	
		
			
				|  |  | -  console.log(1113333)
 | 
	
		
			
				|  |  | -  // 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);
 | 
	
		
			
				|  |  | -  //   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)
 | 
	
		
			
				|  |  | -  //   }
 | 
	
		
			
				|  |  | -  //   console.log(33333)
 | 
	
		
			
				|  |  | -  //   //myChart.value.setOption(option.value);
 | 
	
		
			
				|  |  | -  //   myChart.value.setOption({
 | 
	
		
			
				|  |  | -  //     legend: {
 | 
	
		
			
				|  |  | -  //           data:vars.value
 | 
	
		
			
				|  |  | -  //       },
 | 
	
		
			
				|  |  | -  //     xAxis:{
 | 
	
		
			
				|  |  | -  //       data:  xdata.value,
 | 
	
		
			
				|  |  | -  //     },
 | 
	
		
			
				|  |  | -  //     series: series.value
 | 
	
		
			
				|  |  | -  //   });
 | 
	
		
			
				|  |  | -  //   //linechart();
 | 
	
		
			
				|  |  | -  //   console.log(series.value);
 | 
	
		
			
				|  |  | +const getsockechart=(data)=>{
 | 
	
		
			
				|  |  | +  curvedata.value=data;
 | 
	
		
			
				|  |  | +  series.value=[];
 | 
	
		
			
				|  |  | +  let rows=curvedata.value;
 | 
	
		
			
				|  |  | +  console.log(rows);
 | 
	
		
			
				|  |  | +  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.value.setOption({
 | 
	
		
			
				|  |  | +      legend: {
 | 
	
		
			
				|  |  | +            data:vars.value
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      xAxis:{
 | 
	
		
			
				|  |  | +        data:  xdata.value,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      series: series.value
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +   // linechart();
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // 数据转化
 | 
	
		
			
				|  |  | +  // 数据转化废弃
 | 
	
		
			
				|  |  |   const getshuju=(data)=>{
 | 
	
		
			
				|  |  |    curvedata.value=data;
 | 
	
		
			
				|  |  |    convergeDate.value=[];
 | 
	
	
		
			
				|  | @@ -109,6 +120,7 @@ const getsockechart=()=>{
 | 
	
		
			
				|  |  |         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]);
 | 
	
	
		
			
				|  | @@ -120,8 +132,6 @@ const getsockechart=()=>{
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      series.value.push(item)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    console.log(33333)
 | 
	
		
			
				|  |  | -    //myChart.value.setOption(option.value);
 | 
	
		
			
				|  |  |      myChart.value.setOption({
 | 
	
		
			
				|  |  |        legend: {
 | 
	
		
			
				|  |  |              data:vars.value
 | 
	
	
		
			
				|  | @@ -131,7 +141,7 @@ const getsockechart=()=>{
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        series: series.value
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | -    console.log(series.value);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const linechart= ()=>{
 | 
	
	
		
			
				|  | @@ -139,7 +149,7 @@ const getsockechart=()=>{
 | 
	
		
			
				|  |  |    //  let  myChart= echarts.init(chartDom);
 | 
	
		
			
				|  |  |  option.value = {
 | 
	
		
			
				|  |  |            tooltip: {
 | 
	
		
			
				|  |  | -          trigger: "item",
 | 
	
		
			
				|  |  | +          trigger: "axis",//item
 | 
	
		
			
				|  |  |            backgroundColor: "rgba(0,0,0,.6)",
 | 
	
		
			
				|  |  |            borderColor: "rgba(147, 235, 248, .8)",
 | 
	
		
			
				|  |  |            textStyle: {
 | 
	
	
		
			
				|  | @@ -191,19 +201,22 @@ option.value = {
 | 
	
		
			
				|  |  |          series:series.value
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          option.value && myChart.value.setOption(option.value);
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  |          window.onresize = function() {
 | 
	
		
			
				|  |  | -            myChart.value.resize()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +            // 让图表自适应大小
 | 
	
		
			
				|  |  | +            myChart.value.resize();
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // 监听数据变化,重绘图表
 | 
	
		
			
				|  |  | -watch(series, () => {
 | 
	
		
			
				|  |  | -  linechart();
 | 
	
		
			
				|  |  | -}, { deep: true });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    defineExpose({linechart,getshuju,getsockechart});
 | 
	
		
			
				|  |  | +// 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,getshuju,getsockechart,echatinit});
 | 
	
		
			
				|  |  |    </script>
 | 
	
		
			
				|  |  |    <style lang="scss" scoped>
 | 
	
		
			
				|  |  |    .selcal{
 |