liuqiao 8 ヶ月 前
コミット
423174b229

+ 18 - 0
src/style/style.css

@@ -1651,6 +1651,24 @@ z-index: 1;
    display: flex;
    align-items: center;
 }
+.logs_pading h4{
+  position:relative;
+}
+.logs_pading .el-progress__text{
+  min-width: 33px !important;
+  text-align: right;
+}
+.lookdiv{
+  text-align: left;
+}
+.lookrz{
+  /* position: absolute; */
+  right: 0px;
+  top: 10px;
+  color: #00FFF0;
+  cursor: pointer;
+
+}
 .timers .logimg span{
   font-family: 'YouShe';
   margin-top: 6px;

+ 98 - 18
src/view/InfoDialoges.vue

@@ -248,16 +248,31 @@
                                         <div class="btn" :class="{chuactive: isActive === 3}" @click="changeClass(3)" ><span class="spantext" >停止计算</span></div>
                                         <div class="btn"  :class="{chuactive: isActive === 2}" @click="changeClass(2)"><span class="spantext" @click="calculate();">开始计算</span></div>
                                     </div>
-
-                                    <div class=" logs" >
+                                    <div class=" logs">
                                         <div class="logs_pading">
-                                            <h4>模拟日志</h4>
-                                            <div class="footerTextBox">
+                                            <h4>模拟日志
+                                               
+                                            </h4>
+                                            <div class="lookdiv"><span class="lookrz" @click="lookclick()">{{looktxt }}</span></div>
+                                            <el-progress :percentage="percentage" />
+                                            <div class="footerTextBox" v-show="rizhishow" >
                                                 <el-input class="footerText" type="textarea" id="textarea_id"
                                                     v-model="rizhi.logs"></el-input>
                                             </div>
                                         </div>
                                     </div>
+                                    <!-- <div class=" logs" >
+                                        <div class="logs_pading">
+                                            <h4>模拟日志
+                                                <span></span>
+                                            </h4>
+                                            <el-progress :percentage="percentage" />
+                                            <div class="footerTextBox">
+                                                <el-input class="footerText" type="textarea" id="textarea_id"
+                                                    v-model="rizhi.logs"></el-input>
+                                            </div>
+                                        </div>
+                                    </div> -->
                                 </el-form>
 
                             </div>
@@ -347,8 +362,12 @@
 
                                     <div class=" logs">
                                         <div class="logs_pading">
-                                            <h4>模拟日志</h4>
-                                            <div class="footerTextBox">
+                                            <h4>模拟日志
+                                               
+                                            </h4>
+                                            <div class="lookdiv"><span class="lookrz" @click="lookclick()">{{looktxt }}</span></div>
+                                            <el-progress :percentage="percentage" />
+                                            <div class="footerTextBox" v-show="rizhishow" >
                                                 <el-input class="footerText" type="textarea" id="textarea_id"
                                                     v-model="rizhi.logs"></el-input>
                                             </div>
@@ -453,6 +472,8 @@ import { vtkmodel } from "@/control/vtkModel.js";
 import emitter from "@/utils/emitter";
 import { useRoute } from 'vue-router';
 const route = useRoute();
+let percentage=ref(0)
+//const format = (percentage) => (percentage === 100 ? 'Full' : `${percentage}%`)
 const changeModel= ()=>  {
   vtkmodel.clearJgAddMode();
   vtkmodel.renderWindow.render();
@@ -609,6 +630,8 @@ let tuiyanobj5 = ref({
 let tableobj = ref({});
 let coolactiveName = ref(["1", "2"]);
 let newlog = ref("");
+let looktxt=ref("查看日志");
+let rizhishow=ref(false);
 let rizhi = ref({
     top: "50px",
     logs: '',
@@ -1023,14 +1046,10 @@ const initial = () => {
 
 }
 const addinitial=()=>{
-    console.log(classradio.value);
     if (classradio.value == "Fire") {
         tuiyanobj2.value.pickertime = inititimeDefaultal();
         tuiyanobj2.value.acctime = inititimeDefaultal();
-        tuiyanobj2.value.cocodes = options.value[0].code;
-        tuiyanobj2.value.coids=options.value[0].coid;
         tuiyanobj.value = { ...tuiyanobj2.value }
-        console.log( tuiyanobj.value)
         arrvalue.value=tuiyanobj.value.cocodes.split(',');
         value.value=arrvalue.value; 
             value.value=[];
@@ -1051,7 +1070,7 @@ const addinitial=()=>{
         tuiyanobj.value ={ ...tuiyanobj4.value }
         arrvalue.value=tuiyanobj.value.cocodes.split(',');
         value.value=arrvalue.value; 
-            value.value=[];
+        value.value=[];
             for (let i = 0; i <options.value.length; i++){
               for (let j = 0; j < arrvalue.value.length; j++){
             if(options.value[i].code==arrvalue.value[j]){
@@ -1059,14 +1078,10 @@ const addinitial=()=>{
             }
               }
            }
-    
     }else if(classradio.value == "Gass1"){
         tuiyanobj5.value.pickertime = inititimeDefaultal();
         tuiyanobj5.value.acctime = inititimeDefaultal();
-        tuiyanobj5.value.cocodes = options.value[0].code;
-        tuiyanobj5.value.coids=options.value[0].coid;
         tuiyanobj.value ={ ...tuiyanobj5.value }
-        console.log( tuiyanobj.value);
         arrvalue.value=tuiyanobj.value.cocodes.split(',');
         value.value=arrvalue.value; 
             value.value=[];
@@ -1106,6 +1121,8 @@ const selectchange = (val) => {
 }
 //推演的开始计算
 const calculate = () => {
+    percentage.value=0;
+    ElMessage.success('开始计算中....')
     vtkmodel.clearJgAddMode();
      vtkmodel.renderWindow.render();
     rizhi.value.logs='';
@@ -1137,8 +1154,18 @@ const projectsSelectionSelect = () => {
 }
 // 日志获取
 function getthislog(val) {
+   // console.log(val);
     if (val.includes("msg=heartCheck")) {
     } else {
+         if(val.includes("%")){
+            if(val.includes("100%")){
+                percentage.value=100;  
+            }else{
+            let nums=extractPercentage(val);
+                let num=parseFloat(nums);
+                percentage.value=num;  
+            }        
+    }
         newlog.value = newlog.value + "\n" + val;
         rizhi.value.logs = newlog.value;
       
@@ -1158,15 +1185,58 @@ async function fetchFileContent() {
     await request(params)
         .then((res) => {
             if (res.returnCode == "000000000") {
-                  getthislog(res.logs);
+                  let arr = res.logs.split('Calculating................................');   
+                  for(let i=1;i<arr.length;i++){
+                   let nums1= arr[i].replace(/(\r\n|\n|\r)/gm, "");
+                  if(nums1.indexOf("100%")>1){
+                    console.log(111)
+                   var index1 = nums1.indexOf("100%");
+                   var result = nums1.substring(index1, index1 + "100%".length);
+                   arr[i]=result;
+                  }
+                      let nums= extractNumberBeforePercent(arr[i]);
+                    let num=parseFloat(nums);
+                    if(arr[i].includes("%")){
+                        percentage.value=num;
+                    }
+                }  
+                if(res.logs.includes('求解——————————————————成功')){
+                        percentage.value=100;
+                    }else{
+                      
+                    }
+                    newlog.value = newlog.value + "\n" + res.logs;
+                    rizhi.value.logs = newlog.value;
+                 
             } else {
+                
+                percentage.value=0;
                 ElMessage({
                     message: res.returnMsg,
                     type: "error",
                 });
             }
         })
-        .catch((err) => { });
+        .catch((err) => {
+            percentage.value=0;
+         });
+}
+// 百分号截取
+
+function extractPercentage(str) {
+    const lastIndex = str.lastIndexOf("..");
+            if (lastIndex === -1) {
+            return null; // 没有找到".."
+        }
+       const numberPattern = (/^[\d.]+%?/);
+        const match = str.slice(lastIndex + 2).match(numberPattern);
+        return match ? match[0] : null; // 返回数字或null
+
+}
+
+function extractNumberBeforePercent(str) {
+  const match = str.match(/^[\d.]+%?/);
+  return match ? match[0].replace(/%$/, '') : null;
 }
 // 日志
 function initWebSocket() {
@@ -1197,12 +1267,15 @@ const websocketonmessage = (res) => {
        // rewu()
      emit('websockfrist');
     }
+    // if(rval.includes("100%")){ 
+    //     emit('websockfrist');
+    // }
  reset();
 };
 // Websoket连接错误事件
 const websocketonerror = (res) => {
     console.log("连接错误", res);
-    initWebSocket();
+   // initWebSocket();
   
 };
 // Websoket断开事件
@@ -1248,6 +1321,13 @@ const start = () => {
         }, times.value.timeout);
     }, times.value.timeout);
 }
+const lookclick=()=>{
+    rizhishow.value=!rizhishow.value;
+    looktxt.value=rizhishow.value?'收起日志':'查看日志'
+
+   // rizhishow.value =true;
+
+}
 // 组件被销毁之前,清空 sock 对象
 onBeforeUnmount(() => {
     // 关闭连接

+ 3 - 1
src/view/appmian.vue

@@ -311,7 +311,9 @@ const childfun = () => {
   indexchange(indexref.value.btnindex);
   if(classradio.value=='Gass'){
     sourcedis.value.Gassgetdata(aid.value);
-  }else{
+  }else if(classradio.value=='Gass1'){
+    sourcedis.value.yiweiget(aid.value);
+  } else{
     sourcedis.value.getrequest(aid.value);
    setTimeout(() => {
     sourcedis.value.handledisaster(aid.value);

+ 12 - 15
src/view/components/InfoDisaster.vue

@@ -1810,16 +1810,12 @@ const accident3 = (key) => {
       sour.value.Gass = false;
       sour.value.collGass1=false
       Fengmenref.value.getquery(aid.value);
-  
-     // handledisaster(aid.value);
     } else if (props.classradio == "Water") {
      
       sour.value.collwater = true;
       sour.value.collfire = false;
       sour.value.Gass = false;
       sour.value.collGass1=false
-     
-     // handledisaster(aid.value);
     }else if(props.classradio == "Gass"){
       sour.value.collwater = false;
       sour.value.collfire = false;
@@ -1830,7 +1826,7 @@ const accident3 = (key) => {
       sour.value.collfire = false;
       sour.value.Gass = false;
       sour.value.collGass1=true;
-      yiweiget()
+      //yiweiget()
     }
   } else {
     sour.value.collwater = false;
@@ -1855,8 +1851,7 @@ const Dclick = () => {
 };
 //灾情源查询列表
 const handledisaster = (aidval) => {
-  vtkmodel.delSoures();
-  console.log('执行aid',aidval);
+ vtkmodel.delSoures();
   aid.value = aidval;
   const params = {
     transCode: "D00005",
@@ -1874,7 +1869,6 @@ const handledisaster = (aidval) => {
       } else {
         tableDatawat.value = res.rows;
       }
-     
        tableobj.value={};
     })
     .catch((err) => {
@@ -1961,7 +1955,6 @@ const handleEditfire = () => {
     //   waaddshow.value=false;
   } else {
   }
-  //handledisaster(aid.value);
 };
 //灾情源删除
 const handleDelete = (val) => {
@@ -2367,7 +2360,7 @@ const handlook=(data)=>{
 }
 // // 瓦斯爆炸区域查询
 const wsblastget=()=>{
-
+  vtkmodel.delSoures();
   const params = {
     transCode: "D10023",
     gid: wasi.value.gid,
@@ -2379,6 +2372,7 @@ const wsblastget=()=>{
       wasi.value.blastdata={};
       if(res.rows!=[]){
        // vtkmodel.delSoures();
+       console.log(res.rows);
       res.rows.forEach((item,index)=>{
         vtkmodel.addSoures(item.pid,item.ssite)
         vtkmodel.addSoures(item.pid,item.esite)
@@ -2915,8 +2909,9 @@ const delline=()=>{
 }
 //一维查询
 
-const yiweiget=()=>{
-
+const yiweiget=(aidval)=>{
+  aid.value=aidval;
+  vtkmodel.delSoures();
   const params = {
     transCode:"D30001",
     aid: aid.value,
@@ -2928,9 +2923,11 @@ const yiweiget=()=>{
 
       if(res.row!=[]){
        // vtkmodel.delSoures();
+       console.log( res.row)
         res.row.forEach((item,index)=>{
         vtkmodel.addSoures(item.pid,item.ssite)
         vtkmodel.addSoures(item.pid,item.esite)
+    
      
       })
       }
@@ -3003,7 +3000,7 @@ const yehandleEdit=()=>{
         message:  tishi.value+"一维灾情源成功",
         type: "success",
       });
-      yiweiget();
+      yiweiget(aid.value);
       sdialog.value.yiweidialog=false;
       dialogtrue.value.timintclaer();
     })
@@ -3036,7 +3033,7 @@ console.log(yiweiobj.value.nreobj);
         message: "删除成功",
         type: "success",
       });
-      yiweiget()
+      yiweiget(aid.value)
     })
     .catch((err) => {
       ElMessage.error(err.returnMsg);
@@ -3047,7 +3044,7 @@ console.log(yiweiobj.value.nreobj);
 onMounted(() => {
   
 });
-defineExpose({ sour, accident3, handledisaster,changeModel,Gassgetdata,getrequest,});
+defineExpose({ sour, accident3, handledisaster,changeModel,Gassgetdata,getrequest,yiweiget});
 </script>
 
 

+ 4 - 2
src/view/index/first-left.vue

@@ -423,6 +423,8 @@ await request(params)
       if(res.state=='1'){
       //  vtkmodel.clearModeAddJg(); //隐藏模版显示结果
       job.value = res;
+      sessionStorage.setItem('acctime',res.acctime);
+     // console.log(1111)
        getMonitor();
       vtkmodel.clearModeAddJg();
       reddate(new Date());
@@ -430,9 +432,9 @@ await request(params)
       jgSelect1();
       firstshow.value=true;
       endtime.value= Number(res.totaltime)/Number(res.reportstep);
-      sessionStorage.setItem(res.acctime);
+  
       // oldtime.value=res.acctime;
-       console.log(res.acctime)
+
     }else if(res.state=='-1'){
       firstshow.value=false;
       // ElMessage({

+ 2 - 1
src/view/index/htmldialog.vue

@@ -127,7 +127,8 @@ const getdatahtml = (val) => {
       "SO2": "二氧化硫(ppm)", 
       "H2S": "硫化氢(%)",
       "Flow":"流量(m³/s)",
-      "Height":"高(m)"
+      "Height":"高(m)",
+      "CH4":"甲烷(ppm)",
       };
   if(props.classradio=='Water'){
     water.value = Number(val[0].value) / 4;