Преглед изворни кода

底栏bug修改,增加接口

tangjunhao пре 7 месеци
родитељ
комит
6ee4709177
3 измењених фајлова са 130 додато и 47 уклоњено
  1. 2 2
      src/style/index.css
  2. 123 43
      src/views/home.vue
  3. 5 2
      src/views/vuetree/index.vue

+ 2 - 2
src/style/index.css

@@ -444,7 +444,7 @@ margin-top: -6px;
 .femFooter {
   position: absolute;
   /* position: fixed; */
-  
+  /* min-height: 230px; */
   width: 100%;
   bottom: 0px;
 }
@@ -454,7 +454,7 @@ margin-top: -6px;
 }
 .footerText .el-textarea__inner{
   width: 100%;
-  height: 130px!important;
+  height: 195px!important;
   border: 0;
   font-size: 12px;
   color: #333;

+ 123 - 43
src/views/home.vue

@@ -1427,7 +1427,7 @@
             <template #footer>
               <div class="dialog-footer">
                 <el-button @click="dialog.Pythonshow = false">检查</el-button>
-                <el-button type="primary">
+                <el-button type="primary" @click="pythonSubmit(); dialog.Pythonshow = false">
                   保存
                 </el-button>
               </div>
@@ -1541,19 +1541,19 @@
                               </el-table-column>
                               <el-table-column prop="upper" label="上限值">
                                 <template #default="{ row }">
-                                  <el-input type="text" v-model="row.upper" oninput="value=value.replace(/^|[^0-9]/g,'')"
+                                  <el-input type="text" v-model.Number="row.upper" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
                               <el-table-column prop="lower" label="下限值">
                                 <template #default="{ row }">
-                                  <el-input v-model.Number="row.lower" oninput="value=value.replace(/^|[^0-9]/g,'')"
+                                  <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
                               <el-table-column prop="reference" label="基准值" width="100">
                                 <template #default="{ row }">
-                                  <el-input v-model.Number="row.reference" oninput="value=value.replace(/^|[^0-9]/g,'')"
+                                  <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1579,7 +1579,7 @@
                                   <el-input v-model="row.name" @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
-                              <el-table-column prop="con" label="约束关系">
+                              <!-- <el-table-column prop="con" label="约束关系">
                                 <template v-slot="scope">
                                   <el-select class="no-border " v-model.number="scope.row.con" :suffix-icon="CaretBottom"
                                     placeholder="请选择">
@@ -1589,10 +1589,24 @@
                                   </el-select>
 
                                 </template>
-                              </el-table-column>
+                              </el-table-column> -->
                               <el-table-column prop="reference" label="约束基准值">
                                 <template #default="{ row }">
-                                  <el-input v-model.Number="row.reference" oninput="value=value.replace(/^|[^0-9]/g,'')"
+                                  <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
+                                    @change="handleEdit(row)" />
+                                </template>
+                              </el-table-column>
+                              <el-table-column prop="upper" label="上限值">
+                                <template #default="{ row }">
+                                  <el-input v-model.Number="row.upper" 
+                                    
+                                    oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
+                                    @change="handleEdit(row)" />
+                                </template>
+                              </el-table-column>
+                              <el-table-column prop="lower" label="下限值">
+                                <template #default="{ row }">
+                                  <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1644,12 +1658,11 @@
                               </el-table-column>
                               <el-table-column prop="weight" label="权重系数">
                                 <template #default="{ row }">
-                                  <el-input v-model.number="row.weight" oninput="value=value.replace(/^|[^0-9]/g,'')"
+                                  <el-input v-model.Number="row.weight" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
-                              <el-table-column prop="scaling" label="数据缩放">
-                                <!-- :label="scope.row.s?'采用':'不采用'" -->
+                              <!-- <el-table-column prop="scaling" label="数据缩放">
                                 <template v-slot="scope">
                                   <el-checkbox :false-label="0" :true-label="1" v-model="scope.row.scaling" />
 
@@ -1660,6 +1673,12 @@
                                   <el-input v-model.number="row.factor" oninput="value=value.replace(/^|[^0-9]/g,'')"
                                     @change="handleEdit(row)" />
                                 </template>
+                              </el-table-column> -->
+                              <el-table-column prop="reference" label="约束基准值">
+                                <template #default="{ row }">
+                                  <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
+                                    @change="handleEdit(row)" />
+                                </template>
                               </el-table-column>
                               <el-table-column prop="remark" label="说明">
                                 <template #default="{ row }">
@@ -1833,7 +1852,7 @@ let times = ref({
   lockReconnect: false, //是否真正建立连接
   timeout: 28 * 1000, //30秒一次心跳
   timeoutObj: null, //心跳倒计时
-  serverTimeout0bj: null, //
+  serverTimeoutObj: null, //
   timeoutnum: null, //断开重连倒计时
 })
 let input3=ref()
@@ -2221,7 +2240,7 @@ const optiongroup = [
   },
 ]
 const eloptimize = ref([])
-let tableData = ref([])
+const tableData = ref([])
 const designtable = ref([])
 const tasktable = ref([
   // {
@@ -2414,6 +2433,7 @@ const optimizerfalse = (val) => {
     activeadf.value='代理优化器';
   }else if(val == 'Python'){
     dialog.value.Pythonshow = true;
+    initPython();
   }
    else {
     dialog.value.optimizer = false;
@@ -2429,6 +2449,7 @@ const optimizerfalse = (val) => {
 
 }
 
+// 优化器窗口初始化
 const initoptimize = () => {
   console.log('优化器chushihua');
   const params1 = {
@@ -2466,6 +2487,34 @@ const initoptimize = () => {
   });
 }
 
+// Python窗口初始化
+const initPython = () => {
+  console.log('Pythonchushihua');
+  const param = {
+    transCode:'MDO0036',
+    pid: pid.value,
+  }
+  request(param).then((res) => {
+    console.log('Python:', res);
+  }).catch((err) => {
+    console.error('请求失败:', err);
+  });
+}
+
+// Python确认按钮提交
+const pythonSubmit = () => {
+  console.log('Python确认按钮提交');
+  const param = {
+    transCode:'MDO0037',
+    pid: pid.value,
+    code: textarea1.value,
+  }
+  request(param).then((res) => {
+    console.log('Python确认按钮提交:', res);
+  }).catch((err) => {
+    console.error('请求失败:', err);
+  });
+}
 
 // 模块选择
 const clickgeometry = (e, index, key, name) => {
@@ -2474,6 +2523,8 @@ const clickgeometry = (e, index, key, name) => {
   tabactive.value = name;
   dialogbolen();
 }
+
+
 const dialogbolen = () => {
   switch (tabactive.value) {
     case "新建任务":
@@ -2739,7 +2790,7 @@ const modelgroup=()=>{
 }
 //新增
 const onAddItem = () => {
-  let tablevalnum = Number(tableval.value)
+  let tablevalnum = Number(tableval.value) > 1 ? Number(tableval.value) : 1
 
   if (activeIndex2.value == 0) {
     for (let i = 0; i < tablevalnum; i++) {
@@ -2757,7 +2808,9 @@ const onAddItem = () => {
       tableData.value.push({
         name: `g${i + 1}`,
         con: -1,
-        reference: ''
+        reference: null,
+        upper: 0,
+        lower: 0,
 
       })
     }
@@ -2769,6 +2822,7 @@ const onAddItem = () => {
         weight: 0,
         scaling: 0,
         factor: 0,
+        reference: null,
         remark: '',
       })
 
@@ -2832,17 +2886,17 @@ const getissue = () => {
           item.lower = Number(item.lower); // 将属性转换为数字
           item.upper = Number(item.upper);
           item.reference = Number(item.reference);
-          //console.log(index);
+          
 
           treeitem.value = {
             id: "1-1-1-" + index,
             label: item.name,
             img: f21,
           }
-          console.log(Sidebarref.value.datatree[0].children[0].children[0].children)
+          // console.log(Sidebarref.value.datatree[0].children[0].children[0].children)
          childernarr.forEach((item,index)=>{
           if(item.label=='设计变量'){
-            let   addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem.value);
+            let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem.value);
           }
          })
          return item;
@@ -2859,7 +2913,6 @@ const getissue = () => {
 }
 //约束条件查询
 const getyueshu = () => {
-
   const params = {
     transCode: 'MDO0023',
     pid: pid.value,
@@ -2879,35 +2932,44 @@ const getyueshu = () => {
         if (!result) {
           Sidebarref.value.datatree[0].children[0].children.push(item2);
         }
-        Sidebarref.value.datatree[0].children[0].children.forEach((item,index)=>{
-          if(item.label=='约束条件'){
-          Sidebarref.value.datatree[0].children[0].children[index].children=[];
+        Sidebarref.value.datatree[0].children[0].children.forEach((item, index) => {
+          if (item.label == '约束条件') {
+            Sidebarref.value.datatree[0].children[0].children[index].children = [];
           }
-        })
-        let   childernarr=Sidebarref.value.datatree[0].children[0].children
+        });
+
+        let childernarr = Sidebarref.value.datatree[0].children[0].children;
         res.rows = res.rows.map((item, index) => {
-          item.con = Number(item.con); // 将id属性转换为数字
+          // 确保转换为数字
+          item.con = Number(item.con);
           item.reference = Number(item.reference);
+          item.upper = Number(item.upper); // 添加对 upper 的处理
+          item.lower = Number(item.lower); // 添加对 lower 的处理
+          console.log('item:', item);
+
           treeitem2.value = {
             id: "1-2-2-" + index,
             label: item.name,
             img: f21,
           }
-    
-          childernarr.forEach((item,index)=>{
-          if(item.label=='约束条件'){
-            let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem2.value);
-     }
-    })
+
+          childernarr.forEach((item, index) => {
+            if (item.label == '约束条件') {
+              let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem2.value);
+            }
+          });
+
           return item;
-        })
-        tableData.value = res.rows;
+        });
+        
+        tableData.value = res.rows; // 更新表格数据
       }
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error(err.returnMsg);
     })
 }
+
 //目标函数查询
 const getmub = () => {
   const params = {
@@ -2938,8 +3000,10 @@ const getmub = () => {
         res.rows = res.rows.map((item, index) => {
           item.optdir = Number(item.optdir); // 将id属性转换为数字
           item.weight = Number(item.weight);
-          item.scaling = Number(item.scaling);
-          item.factor = Number(item.factor);
+          // item.scaling = Number(item.scaling);
+          // item.factor = Number(item.factor);
+          item.reference = Number(item.reference);
+
           treeitem3.value = {
             id: "1-3-3-" + index,
             label: item.name,
@@ -2994,25 +3058,40 @@ const getarr = (name, arrays) => {
     name += valuesWithSemiColons + ';';
 
   }
-  console.log(name)
+  console.log('conlist',name)
   return name;
 }
+
+const convertToStringArray = (result,Data) => {
+  result = Data.map(row => {
+    // 获取每一列的数据,排除带有 'id' 的字段
+    return Object.keys(row)
+      .filter(key => !key.includes('id'))  // 过滤掉包含 'id' 的字段
+      .map(key => row[key] || ' ')      // 获取每个字段的值,空值替换为 ' '
+      .join(',');                          // 将每个字段的值用逗号连接
+  }).join(';');  
+    return result;
+  }
+
 //保存优化问题
 const onokItem = () => {
   console.log(activeIndex2.value);
   if (activeIndex2.value == 0) {
     svarlist.value = '';
-    svarlist.value = getarr(svarlist.value, designtable.value)
+    console.log("designtable:",designtable.value)
+    svarlist.value = convertToStringArray(svarlist.value, designtable.value)
     devise();
 
   } else if (activeIndex2.value == 1) {
     conlist.value = '';
-    conlist.value = getarr(conlist.value, tableData.value)
+    console.log("tabledata:",tableData.value)
+    conlist.value = convertToStringArray(conlist.value, tableData.value)
     restrain();
 
   } else if (activeIndex2.value == 2) {
     funlist.value = '';
-    funlist.value = getarr(funlist.value, eloptimize.value)
+    console.log("eloptimize:",eloptimize.value)
+    funlist.value = convertToStringArray(funlist.value, eloptimize.value)
     funlistaa();
 
   }
@@ -3056,7 +3135,6 @@ const restrain = () => {
       ElMessage.error(err.returnMsg)
     })
 }
-//进度条percentage
 //优化目标接口
 const funlistaa = () => {
   const params = {
@@ -3295,7 +3373,8 @@ const logsget = () => {
   }
   request(params)
     .then((res) => {
-      logs.value = res.logs;
+      // 去除空行
+      logs.value = res.logs.split('\n').filter(line => line.trim() !== '').join('\n');
       const results = extractBracesContent(logs.value);
       for (let i = 0; i < results.length; i++) {
         arrobj.value.push(results[i]);
@@ -3396,8 +3475,9 @@ const websocketonmessage = (res) => {
 
     }
     if (res.data.indexOf('msg=heartChec') == -1) {
-
-      logs.value = logs.value + '"\n"' + res.data;
+      // 去除空行
+      const cleanedLog = res.data.split('\n').filter(line => line.trim() !== '').join('\n');
+      logs.value = logs.value + '\n' + cleanedLog;
       let textarea = document.getElementById("textarea_id");
       textarea.scrollTop = textarea.scrollHeight;
     }

+ 5 - 2
src/views/vuetree/index.vue

@@ -288,7 +288,7 @@ function onNodeDoubleClick(e) {
   }else if(e.node.data.name=="代理优化器"){
     emit('optimizerfalse','代理优化器');
 
-  }else if(e.node.data.name=="Rosenbrock"||e.node.data.name=="Xfiol"){
+  }else if(e.node.data.name=="Xfiol"){
     emit('optimizerfalse','Xfiol');
   }else if(e.node.data.name=="梯度优化器"){
     emit('optimizerfalse','梯度优化器');
@@ -306,11 +306,14 @@ function onNodeDoubleClick(e) {
     emit('optimizerfalse','参数化');
   }else if(e.node.data.name=="气动分析"){
     emit('optimizerfalse','气动分析');
-  }else if(e.node.data.name=="Python"){
+  }else if(onPythonlist.value.some(item => e.node.data.name.includes(item))){
     emit('optimizerfalse','Python');
   }
 
 }
+
+let onPythonlist=ref(['Python','Branin','Rosenbrock','Rastrigin','G9','Forrester']);
+
 // 监听线
 function onEdgeClick(e) {
   Edgeid.value = e.edge.id;