|  | @@ -1347,6 +1347,7 @@
 | 
	
		
			
				|  |  |              <div class="right_container">
 | 
	
		
			
				|  |  |                <div class="main_model">
 | 
	
		
			
				|  |  |                  <div class="jindutiao" v-show="progressshow">
 | 
	
		
			
				|  |  | +                  <!-- 进度条 -->
 | 
	
		
			
				|  |  |                    <span style="width: 150px;">运行进度</span>
 | 
	
		
			
				|  |  |                    <!-- <el-progress :text-inside="true" :stroke-width="26" :percentage="70" /> -->
 | 
	
		
			
				|  |  |                    <div class="demo-progress">
 | 
	
	
		
			
				|  | @@ -1750,7 +1751,8 @@ let tablecstHeaders=ref([]);
 | 
	
		
			
				|  |  |  let treeitem = ref({});
 | 
	
		
			
				|  |  |  let treeitem2 = ref({});
 | 
	
		
			
				|  |  |  let treeitem3 = ref({});
 | 
	
		
			
				|  |  | -let percentage = ref(70);
 | 
	
		
			
				|  |  | +let percentage = ref(0);
 | 
	
		
			
				|  |  | +let percentageTotalstep = ref(100);
 | 
	
		
			
				|  |  |  let progressshow = ref(false);
 | 
	
		
			
				|  |  |  let flowshow = ref(true);
 | 
	
		
			
				|  |  |  let jiankong = ref(false);
 | 
	
	
		
			
				|  | @@ -2251,9 +2253,14 @@ onMounted(() => {
 | 
	
		
			
				|  |  |      // vuefval.value.getroter()
 | 
	
		
			
				|  |  |    }, 1500);
 | 
	
		
			
				|  |  |    // childfun();
 | 
	
		
			
				|  |  | +  emitter.on("stepfromyouhuaqi",handlePercentage);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +onUnmounted(() => {
 | 
	
		
			
				|  |  | +  emitter.off("stepfromyouhuaqi", handlePercentage);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const sjdelete = (index, row) => {
 | 
	
		
			
				|  |  |    console.log(index);
 | 
	
		
			
				|  |  |    designtable.value.splice(index, 1)
 | 
	
	
		
			
				|  | @@ -3980,6 +3987,11 @@ function convertToPercentage(number) {
 | 
	
		
			
				|  |  |    return (number * 100);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +const handlePercentage = (val) => {
 | 
	
		
			
				|  |  | +  console.log("步数设置:",val),
 | 
	
		
			
				|  |  | +  percentageTotalstep.value = val;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  //websockct的连接
 | 
	
		
			
				|  |  |  function initWebSocket() {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -4016,8 +4028,10 @@ const websocketonmessage = (res) => {
 | 
	
		
			
				|  |  |      // 解析 WebSocket 接收到的消息数据
 | 
	
		
			
				|  |  |      let parsedData = JSON.parse(res.data);
 | 
	
		
			
				|  |  |      let step = Number(parsedData.step);
 | 
	
		
			
				|  |  | +    console.log('步数:',step)
 | 
	
		
			
				|  |  |      if(parsedData.type === 1){
 | 
	
		
			
				|  |  | -      percentage.value = Math.round((step / 30) * 100);
 | 
	
		
			
				|  |  | +      console.log('总步数:',percentageTotalstep.value)
 | 
	
		
			
				|  |  | +      percentage.value = Math.round((step / percentageTotalstep.value) * 100);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      console.log("进度:", percentage.value);
 | 
	
	
		
			
				|  | @@ -4036,17 +4050,14 @@ const websocketonmessage = (res) => {
 | 
	
		
			
				|  |  |        processMonitor2ref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | -    // optmonitor1.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // processMonitor1ref.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // processMonitor2ref.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // arearef.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // bargraphref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // echartLineref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // BarChartref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // radarref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // scatterref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // pieref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | -    // paretoref.value.getsockechart(arrobj.value);
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 新增:记录结构化 JSON 数据到日志
 | 
	
		
			
				|  |  | +    const cleanedJsonLog = res.data.split('\n').filter(line => line.trim() !== '').join('\n');
 | 
	
		
			
				|  |  | +    logs.value = logs.value + '\n' + cleanedJsonLog;
 | 
	
		
			
				|  |  | +    // 自动滚动日志到底部
 | 
	
		
			
				|  |  | +    let textarea = document.getElementById("textarea_id");
 | 
	
		
			
				|  |  | +    textarea.scrollTop = textarea.scrollHeight;
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      if (res.data.indexOf('——成功') !== -1) {
 | 
	
		
			
				|  |  |        const timer = setTimeout(function () {
 |