瀏覽代碼

BUG修改

tangjunhao 7 月之前
父節點
當前提交
a0015edb13
共有 4 個文件被更改,包括 151 次插入100 次删除
  1. 73 29
      src/views/home.vue
  2. 35 32
      src/views/titlecomponent/Xfoil.vue
  3. 38 34
      src/views/titlecomponent/csts.vue
  4. 5 5
      src/views/titlecomponent/ffds.vue

+ 73 - 29
src/views/home.vue

@@ -1175,7 +1175,7 @@
             <div class="numberinput lefttext ">
               <el-form>
               <!-- CST -->
-              <el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick">
+              <el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick2">
               <el-tab-pane label="CST" name="CST">
                 <csts ref="Cstref"/>
               </el-tab-pane>
@@ -1189,7 +1189,7 @@
             <template #footer>
               <div class="dialog-footer">
                 <el-button @click="dialog.cstffd = false">取消</el-button>
-                <el-button type="primary" @click="ok()">
+                <el-button type="primary" @click="getCstFfdsave(activeadf);dialog.cstffd = false">
                   确定
                 </el-button>
               </div>
@@ -1581,13 +1581,13 @@
                               </el-table-column>
                               <el-table-column prop="upper" label="上限值">
                                 <template #default="{ row }">
-                                  <el-input type="text" v-model.Number="row.upper" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
+                                  <el-input type="text" v-model.Number="row.upper" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
                                     @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')"
+                                  <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1640,13 +1640,13 @@
                                 <template #default="{ row }">
                                   <el-input v-model.Number="row.upper" 
                                     
-                                    oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
+                                  oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
                                     @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')"
+                                  <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -2595,6 +2595,9 @@ const initcstffds = () => {
   ]).then(([res1, res2]) => {
     console.log('1:', res1.checked);
     console.log('2:', res2.checked);
+
+    Cstref.value.getcstAssign(res1);
+    Ffdref.value.getffdsAssign(res2);
     
     // 根据返回值来设置 activeadf
     if (res1.checked === 1) {
@@ -3157,23 +3160,7 @@ const getmub = () => {
       ElMessage.error(err.returnMsg)
     })
 }
-const cstok=()=>{
- // cstnum.value='';
- if(Cstref.value){
-  Cstref.value.getcstsave();
-  }
-  dialog.value.CSTt = false;
-
-}
-
-const ffdok=()=>{
 
-   if(Ffdref.value){
-    Ffdref.value.getffdsave();
-    }
-    dialog.value.ffdt = false;
-  
-  }
 //对象数组转化字符串
 const getarr = (name, arrays) => {
   console.log(arrays)
@@ -3205,16 +3192,20 @@ const getarr = (name, arrays) => {
   return name;
 }
 
-const convertToStringArray = (result,Data) => {
+const convertToStringArray = (result, Data) => {
+  console.log('Data:', Data);
   result = Data.map(row => {
     // 获取每一列的数据,排除带有 'id' 的字段
     return Object.keys(row)
       .filter(key => !key.includes('id'))  // 过滤掉包含 'id' 的字段
-      .map(key => row[key] || ' ')      // 获取每个字段的值,空值替换为 ' '
-      .join(',');                          // 将每个字段的值用逗号连接
-  }).join(';');  
-    return result;
-  }
+      .map(key => {
+        const value = row[key];
+        return (value === null || value === undefined || value === '') ? ' ' : value; // 处理 null、undefined 和空字符串
+      })
+      .join(',');  // 将每个字段的值用逗号连接
+  }).join(';');
+  return result;
+}
 
 //保存优化问题
 const onokItem = () => {
@@ -3704,7 +3695,7 @@ const selectTab2=(index)=>{
   currentTab2.value = index;
 }
 const adfhandleClick=(tab,event)=>{
-  console.log(tab.props.label);
+  console.log('表单切换',tab.props.label);
   activeadf.value=tab.props.label;
 
   if(tab.props.name === '进化优化器'){
@@ -3750,6 +3741,7 @@ const getTaddsave = () => {
   }
 }
 
+
 const getSave = (ref) => {
   if (ref == '进化优化器'){
     getaddsave();
@@ -3760,6 +3752,58 @@ const getSave = (ref) => {
   }
 }
 
+// 参数化
+const adfhandleClick2=(tab,event)=>{
+  console.log('表单切换',tab.props.label);
+  activeadf.value=tab.props.label;
+
+  if(tab.props.name === 'CST'){
+    nextTick(() => {
+      // 确保 ref 已经初始化
+      if (Cstref.value) {
+        Cstref.value.getcst(pid.value);
+      }
+    });
+  }else if(tab.props.name === 'FFD'){
+    nextTick(() => {
+      // 确保 ref 已经初始化
+      if (Ffdref.value) {
+        Ffdref.value.getffds(pid.value);
+      }
+    });
+  }
+}
+
+
+// 单独cst保存
+const cstok=()=>{
+ // cstnum.value='';
+ if(Cstref.value){
+  Cstref.value.getcstsave();
+  }
+  dialog.value.CSTt = false;
+
+}
+// 单独ffd保存
+const ffdok=()=>{
+
+   if(Ffdref.value){
+    Ffdref.value.getffdsave();
+    }
+    dialog.value.ffdt = false;
+  
+}
+// cstffd保存
+const getCstFfdsave = (activeadf) => {
+  if (activeadf == 'CST') {
+    cstok();
+  } else if (activeadf == 'FFD') {
+    ffdok();
+  }
+}
+
+
+
 </script>
 <style lang="scss" scoped>
 .conter_flex {

+ 35 - 32
src/views/titlecomponent/Xfoil.vue

@@ -14,25 +14,25 @@
     <!-- 来流参数 -->
     <div v-show="currentTab == '0'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="lailiutable" border style="width: 100%; height: 400px">
-          <el-table-column type="index" width="70" label="编号" />
+        <el-table :data="inParams" border style="width: 100%; height: 400px">
+          <el-table-column prop="code" width="70" label="编号" />
           <el-table-column prop="name" label="参数名称">
             <template #default="{ row }">
-              <el-input v-model="row.name" @change="handleEdit(row)" />
+              <el-input v-model="row.name" />
             </template>
           </el-table-column>
-          <el-table-column prop="data" label="参数值">
+          <el-table-column prop="value" label="参数值">
             <template #default="{ row }">
-              <el-input v-model.number="row.data" @change="handleEdit(row)" />
+              <el-input v-model.number="row.value"  />
             </template>
           </el-table-column>
-          <el-table-column prop="enable" label="启用" width="100">
+          <el-table-column prop="flag" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
                 :false-label="-1"
                 :true-label="1"
                 :label="false"
-                v-model="scope.row.enable"
+                v-model="scope.row.flag"
               />
             </template>
           </el-table-column>
@@ -42,25 +42,25 @@
     <!-- 分析参数 -->
     <div v-show="currentTab == '2'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="fenxtable" border style="width: 100%">
-          <el-table-column type="index" width="70" label="编号" />
+        <el-table :data="outParams" border style="width: 100%">
+          <el-table-column prop="code" width="70" label="编号" />
           <el-table-column prop="name" label="参数名称">
             <template #default="{ row }">
               <el-input v-model="row.name" @change="handleEdit(row)" />
             </template>
           </el-table-column>
-          <el-table-column prop="data" label="参数值">
+          <el-table-column prop="value" label="参数值">
             <template #default="{ row }">
-              <el-input v-model.number="row.data" @change="handleEdit(row)" />
+              <el-input v-model.number="row.value" @change="handleEdit(row)" />
             </template>
           </el-table-column>
-          <el-table-column prop="enable" label="启用" width="100">
+          <el-table-column prop="flag" label="启用" width="100">
             <template v-slot="scope">
               <el-checkbox
                 :false-label="-1"
                 :true-label="1"
                 :label="false"
-                v-model="scope.row.enable"
+                v-model="scope.row.flag"
               />
             </template>
           </el-table-column>
@@ -71,14 +71,14 @@
     <div v-show="currentTab == '1'">
       <div class="eldesign classtable" style="margin-top: 10px">
         <el-form-item label="计算完成:" :label-width="formLabelWidth1">
-          <el-radio-group v-model="resource">
+          <el-radio-group v-model="analyzed">
             <el-radio label="1">是</el-radio>
             <el-radio label="0">否</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="迭代次数:" :label-width="formLabelWidth1">
           <el-input
-            v-model="xfoilvalue.epoch"
+            v-model="xfoilvalue.iter"
             :step="100"
             :min="0"
             :max="1000"
@@ -87,7 +87,7 @@
         </el-form-item>
         <el-form-item label="表面求解点个数:" :label-width="formLabelWidth1">
           <el-input
-            v-model="xfoilvalue.SurfaceSolvePoints"
+            v-model="xfoilvalue.ppar"
             :step="100"
             :min="0"
             :max="1000"
@@ -98,7 +98,7 @@
         <div class="cheinput">
           <el-form-item label="压力分布:" :label-width="formLabelWidth1">
             <el-input
-              v-model="xfoilvalue.PressureDistribution"
+              v-model="xfoilvalue.cpwr"
               :step="100"
               :min="0"
               :max="1000"
@@ -110,7 +110,7 @@
         <div class="cheinput">
           <el-form-item label="翼型坐标:" :label-width="formLabelWidth1">
             <el-input
-              v-model="xfoilvalue.WingCoordinates"
+              v-model="xfoilvalue.yxzb"
               :step="100"
               :min="0"
               :max="1000"
@@ -122,7 +122,7 @@
         <div class="cheinput">
           <el-form-item label="力和力矩:" :label-width="formLabelWidth1">
             <el-input
-              v-model="xfoilvalue.ForceAndMoment"
+              v-model="xfoilvalue.pacc"
               :step="100"
               :min="0"
               :max="1000"
@@ -148,14 +148,14 @@ let currentTab = ref(0)
 let checked1 = ref(true)
 let checked2 = ref(true)
 let checked3 = ref(true)
-let resource = ref('1')
+let analyzed = ref('1')
 
 let xfoilvalue = ref({
-  epoch: 100,
-  SurfaceSolvePoints: 200,
-  PressureDistribution:"op.dat",
-  WingCoordinates:"airfoil.dat",
-  ForceAndMoment:"output.dat"
+  iter: 100,
+  ppar: 200,
+  cpwr:"op.dat",
+  yxzb:"airfoil.dat",
+  pacc:"output.dat"
 })
 
 let tabslist = ref([
@@ -165,21 +165,24 @@ let tabslist = ref([
 ])
 
 
-let lailiutable = ref([
+let inParams = ref([
   {
-    data: 0.1,
+    code: "1",
+    value: 0.1,
     name: "AoA",
-    enable: 1
+    flag: 1
   },
   {
-    data: 0.1,
+    code: "2",
+    value: 0.1,
     name: "Ma",
-    enable: 1
+    flag: 1
   },
   {
-    data: 6.5e6,
+    code: "3",
+    value: 6.5e6,
     name: "Re",
-    enable: 1
+    flag: 1
   }
 ])
 let fenxtable = ref([

+ 38 - 34
src/views/titlecomponent/csts.vue

@@ -189,42 +189,11 @@ const getcst = (id) => {
 
       if (res.hasOwnProperty('cstid')) {
 
-        cstid.value = res.cstid;
-        cstn.value = res.cstn;
-        cstvalue.value.uppern1 = res.uppern1;
-        cstvalue.value.lowern1 = res.lowern1;
-        cstvalue.value.uppern2 = res.uppern2;
-        cstvalue.value.lowern2 = res.lowern2;
-        // upperb.value = res.upperb;
-        // lowerb.value = res.lowerb;
-
-        clickblur(); 
-
-        // 解析 upperb 和 lowerb
-        let upperbValues = res.upperb ? res.upperb.split(",") : [];
-        let lowerbValues = res.lowerb ? res.lowerb.split(",") : [];
+        getcstAssign(res);
         
-        tableDatacst.value.forEach((row, rowIndex) => {
-          if (rowIndex === 0) {
-            // 第一行赋值 upperb
-            tablecstHeaders.value.forEach((header, index) => {
-              if (index < upperbValues.length) {
-                row[header.prop] = upperbValues[index]; // 赋值对应列
-              }
-            });
-          } else if (rowIndex === 1) {
-            // 第二行赋值 lowerb
-            tablecstHeaders.value.forEach((header, index) => {
-              if (index < lowerbValues.length) {
-                row[header.prop] = lowerbValues[index]; // 赋值对应列
-              }
-            });
-          }
-        });
-        // youhua=res;
 
       } else {
-        //  youhua=res;
+        
       }
 
     })
@@ -233,6 +202,41 @@ const getcst = (id) => {
     })
 }
 
+const getcstAssign = (data) => {
+  cstid.value = data.cstid;
+  cstn.value = data.cstn;
+  cstvalue.value.uppern1 = data.uppern1;
+  cstvalue.value.lowern1 = data.lowern1;
+  cstvalue.value.uppern2 = data.uppern2;
+  cstvalue.value.lowern2 = data.lowern2;
+  // upperb.value = data.upperb;
+  // lowerb.value = data.lowerb;
+
+  clickblur(); 
+
+  // 解析 upperb 和 lowerb
+  let upperbValues = data.upperb ? data.upperb.split(",") : [];
+  let lowerbValues = data.lowerb ? data.lowerb.split(",") : [];
+  
+  tableDatacst.value.forEach((row, rowIndex) => {
+    if (rowIndex === 0) {
+      // 第一行赋值 upperb
+      tablecstHeaders.value.forEach((header, index) => {
+        if (index < upperbValues.length) {
+          row[header.prop] = upperbValues[index]; // 赋值对应列
+        }
+      });
+    } else if (rowIndex === 1) {
+      // 第二行赋值 lowerb
+      tablecstHeaders.value.forEach((header, index) => {
+        if (index < lowerbValues.length) {
+          row[header.prop] = lowerbValues[index]; // 赋值对应列
+        }
+      });
+    }
+  });
+}
+
 //cst 保存
 const getcstsave = () => {
   getupperlower();
@@ -260,7 +264,7 @@ const getcstsave = () => {
     })
 }
 
-defineExpose({getcst,getcstsave});
+defineExpose({getcst,getcstAssign,getcstsave});
 
 </script>
 

+ 5 - 5
src/views/titlecomponent/ffds.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="XFpdding">
     <div>
-      <el-form-item label="FFD box:" :label-width="formLabelWidth1">
+      <el-form-item label="FFD box:" >
         <el-input
           v-model="cstnum"
           :max="20"
@@ -20,7 +20,7 @@
         </template>
         </el-input>
       </el-form-item>
-      <el-form-item label="参考坐标系:" :label-width="formLabelWidth1">
+      <el-form-item label="参考坐标系:" >
         <el-radio-group v-model="order">
           <el-radio :value="0" :label="0">x-y-z</el-radio>
           <el-radio :value="1" :label="1">x-z-y</el-radio>
@@ -31,7 +31,7 @@
         </el-radio-group>
       </el-form-item>
     </div>
-    <el-form-item label="控制点数:" :label-width="formLabelWidth1">
+    <el-form-item label="控制点数:" >
       <div style="display: flex">
         <el-input type="text" style="margin-right: 10px" v-model="ffdvalue.nx">
           <!-- <template #prepend>X方向</template> -->
@@ -171,7 +171,7 @@ const initializeTableFromVars = () => {
 
   // 遍历 tableDatacst1 中的每一行
   tableDatacst1.value.forEach(row => {
-    columns.forEach(col => {
+    tablecstHeaders.value.forEach(col => {
       if (index < values.length) {
         // 将解析后的值赋给相应的单元格
         row[col.prop] = values[index] === ' ' ? '' : values[index]; // 空格用空字符串代替
@@ -248,7 +248,7 @@ const getffdsave = () => {
     });
 };
 
-defineExpose({ getffds, getffdsave });
+defineExpose({ getffds,getffdsAssign, getffdsave });
 
 </script>