|
@@ -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) => {
|