|  | @@ -13,7 +13,7 @@
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |    <script setup>
 | 
	
		
			
				|  |  | -import { ref, onMounted, reactive, markRaw, inject, watch, nextTick } from "vue"
 | 
	
		
			
				|  |  | +import { ref, onMounted, reactive, markRaw, inject, watch, nextTick,defineExpose } from "vue"
 | 
	
		
			
				|  |  |  import { RouterView, RouterLink } from "vue-router"
 | 
	
		
			
				|  |  |  import { request, uploadFile } from "@/utils/request"
 | 
	
		
			
				|  |  |  import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
 | 
	
	
		
			
				|  | @@ -32,7 +32,7 @@ let series = ref([
 | 
	
		
			
				|  |  |      data: [20, 10, 40, 30] // y轴对应数据
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  ])
 | 
	
		
			
				|  |  | -let xdata = ref(['0','1.00','2.00','3.00','4.00','5.00','6.00','7.00','8.00'])
 | 
	
		
			
				|  |  | +let xdata = ['0','1.00','2.00','3.00','4.00','5.00','6.00','7.00','8.00']
 | 
	
		
			
				|  |  |  let chartContainer = ref()
 | 
	
		
			
				|  |  |  let myChart
 | 
	
		
			
				|  |  |  let chartDom = ref()
 | 
	
	
		
			
				|  | @@ -64,37 +64,78 @@ const echatinit = () => {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  // 从websocket取数据
 | 
	
		
			
				|  |  |  const getsockechart = (data) => {
 | 
	
		
			
				|  |  | -  curvedata.value = data
 | 
	
		
			
				|  |  | -  series.value = []
 | 
	
		
			
				|  |  | -  let rows = curvedata.value
 | 
	
		
			
				|  |  | +  console.log("曲线数据", data);
 | 
	
		
			
				|  |  | +  curvedata.value = data;
 | 
	
		
			
				|  |  | +  series.value = [];
 | 
	
		
			
				|  |  | +  xdata.value = [];
 | 
	
		
			
				|  |  | +  let rows = curvedata.value;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 清空之前的数据
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  let convergeDate = {
 | 
	
		
			
				|  |  | +    "design_var/upperB": [], // 存储 design_var/upperB 的数据
 | 
	
		
			
				|  |  | +    "design_var/lowerB": []  // 存储 design_var/lowerB 的数据
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 遍历每一行数据
 | 
	
		
			
				|  |  |    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)
 | 
	
		
			
				|  |  | +    let vals = rows[i].vals.split(" "); 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    let upperB = JSON.parse(vals[3]);
 | 
	
		
			
				|  |  | +    let lowerB = JSON.parse(vals[4]); 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    convergeDate["design_var/upperB"].push(...upperB);
 | 
	
		
			
				|  |  | +    convergeDate["design_var/lowerB"].push(...lowerB);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    xdata.value.push(rows[i].step); // 用 `step` 字段的值填充 xdata
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  for (let j = 0; j < vars.value.length; j++) {
 | 
	
		
			
				|  |  | -    let firstColumn = convergeDate.value.map((row) => row[j])
 | 
	
		
			
				|  |  | -    let item = {
 | 
	
		
			
				|  |  | -      name: vars.value[j],
 | 
	
		
			
				|  |  | +  // 为每条曲线分配数据
 | 
	
		
			
				|  |  | +  let upperBData = convergeDate["design_var/upperB"];
 | 
	
		
			
				|  |  | +  let lowerBData = convergeDate["design_var/lowerB"];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 需要知道每条曲线的个数,这里是取每列的长度
 | 
	
		
			
				|  |  | +  let curveCount = upperBData.length / rows.length;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 为每个曲线创建数据
 | 
	
		
			
				|  |  | +  for (let i = 0; i < curveCount; i++) {
 | 
	
		
			
				|  |  | +    let upperBCurveData = [];
 | 
	
		
			
				|  |  | +    let lowerBCurveData = [];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    for (let j = 0; j < rows.length; j++) {
 | 
	
		
			
				|  |  | +      upperBCurveData.push(upperBData[j * curveCount + i]);
 | 
	
		
			
				|  |  | +      lowerBCurveData.push(lowerBData[j * curveCount + i]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 创建曲线数据项
 | 
	
		
			
				|  |  | +    series.value.push({
 | 
	
		
			
				|  |  | +      name: `design_var/upperB${i + 1}`, 
 | 
	
		
			
				|  |  |        type: "line",
 | 
	
		
			
				|  |  |        stack: "Total",
 | 
	
		
			
				|  |  | -      data: firstColumn
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    series.value.push(item)
 | 
	
		
			
				|  |  | +      data: upperBCurveData 
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    series.value.push({
 | 
	
		
			
				|  |  | +      name: `design_var/lowerB${i + 1}`, 
 | 
	
		
			
				|  |  | +      type: "line",
 | 
	
		
			
				|  |  | +      stack: "Total",
 | 
	
		
			
				|  |  | +      data: lowerBCurveData 
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 使用 myChart 设置图表的配置
 | 
	
		
			
				|  |  |    myChart.setOption({
 | 
	
		
			
				|  |  |      legend: {
 | 
	
		
			
				|  |  | -      data: vars.value
 | 
	
		
			
				|  |  | +      data: [...Array(curveCount).keys()].map(i => `design_var/upperB${i + 1}`).concat(
 | 
	
		
			
				|  |  | +        [...Array(curveCount).keys()].map(i => `design_var/lowerB${i + 1}`)
 | 
	
		
			
				|  |  | +      ) // 设置图例数据为曲线名
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      xAxis: {
 | 
	
		
			
				|  |  | -      data: xdata.value
 | 
	
		
			
				|  |  | +      data: xdata 
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    series: series.value
 | 
	
		
			
				|  |  | -  })
 | 
	
		
			
				|  |  | -  // linechart();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +    series: series.value 
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  console.log('XDATAhi大哈办法就是发',xdata.value)
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 数据转化废弃
 | 
	
		
			
				|  |  |  const getshuju = (data) => {
 |