tangjunhao 6 meses atrás
pai
commit
e84e6ebd02

+ 5 - 3
src/style/index.css

@@ -194,6 +194,7 @@ body{
 }
 .el-form-item__label{
   color: #333333;
+  padding: 0;
     font-size: 14px;
     line-height: 30px;
 letter-spacing: 1px;
@@ -314,7 +315,7 @@ position: relative;
   }
   .btncolor{
     background-color: #F5FAFF !important;
-    width: 150px !important;
+    /* width: 150px !important; */
   }
   .left_main_content{
     width: 195px;
@@ -731,9 +732,10 @@ height: 30px;
   border-bottom: 2px solid #FFD153 !important;
 }
 
-.el-card__body {
+.el-card {
   border-radius: 0px 0px 0px 0px;
-  border: 1px solid #B3B3B3;
+  border: 1px solid #B3B3B3 !important;
+  overflow: auto;
 }
 
 .dialog_style {

+ 93 - 51
src/views/home.vue

@@ -1421,19 +1421,19 @@
                               </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').replace(/^-(?=\.)/, '')"
+                                  <el-input type="text" v-model="row.upper" 
                                     @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').replace(/^-(?=\.)/, '')"
+                                  <el-input v-model="row.lower"  
                                     @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')"
+                                  <el-input v-model="row.reference" 
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1472,21 +1472,19 @@
                               </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')"
+                                  <el-input v-model="row.reference" 
                                     @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').replace(/^-(?=\.)/, '')"
+                                  <el-input v-model="row.upper" 
                                     @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').replace(/^-(?=\.)/, '')"
+                                  <el-input v-model="row.lower"
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1521,7 +1519,7 @@
                               </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, '').replace(/(\..*?)\..*/g, '$1')"
+                                  <el-input v-model="row.weight" 
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -1539,7 +1537,7 @@
                               </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')"
+                                  <el-input v-model="row.reference" 
                                     @change="handleEdit(row)" />
                                 </template>
                               </el-table-column>
@@ -2266,16 +2264,23 @@ const handleClick = (tab, event) => {
   }
 }
 
-const handleInput = (value, row) => {
-  // 如果输入是 'none',允许通过
-  if (value === 'none') {
-    row.lower = 'none';
-  } else {
-    // 否则只允许数字、小数点和负号
-    const sanitizedValue = value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '');
-    row.lower = sanitizedValue;
-  }
-};
+const validateInput = (row)  => {
+    // 允许输入 None / none / 负数 / 小数
+    if (/^(none|None|-?\d*\.?\d*)$/.test(row.upper)) {
+      row.upper = row.upper; // 允许输入
+    } else {
+      row.upper = row.upper.slice(0, -1); // 删除最后输入的非法字符
+    }
+}
+
+const validateInput1 = (row)  => {
+    // 允许输入 None / none  / 小数
+    if (/^(none|None|\d*\.?\d*)$/.test(row.upper)) {
+      row.upper = row.upper; // 允许输入
+    } else {
+      row.upper = row.upper.slice(0, -1); // 删除最后输入的非法字符
+    }
+}
 
 //表格点击事件
 const handleEdit = (row) => {
@@ -3010,10 +3015,11 @@ const getissue = () => {
       }
         })
         res.rows = res.rows.map((item, index) => {
-          item.lower = Number(item.lower); // 将属性转换为数字
-          item.upper = Number(item.upper);
-          item.reference = Number(item.reference);
-          
+          item.lower = item.lower ?? 'none'
+          item.upper = item.upper ?? 'none'
+          item.reference = item.reference ?? 'none'
+          item.name = item.name ?? 'none'
+          item.remark = item.remark ?? 'none'
 
           treeitem.value = {
             id: "1-1-1-" + index,
@@ -3068,10 +3074,10 @@ const getyueshu = () => {
         let childernarr = Sidebarref.value.datatree[0].children[0].children;
         res.rows = res.rows.map((item, index) => {
           // 确保转换为数字
-          item.con = Number(item.con);
-          item.reference = Number(item.reference);
-          item.upper = Number(item.upper); // 添加对 upper 的处理
-          item.lower = Number(item.lower); // 添加对 lower 的处理
+          item.con = item.con ?? 'none';
+          item.reference = item.reference ?? 'none';
+          item.upper =item.upper ?? 'none';
+          item.lower = item.lower ?? 'none'; 
           console.log('item:', item);
 
           treeitem2.value = {
@@ -3125,12 +3131,13 @@ const getmub = () => {
         })
  let   childernarr=Sidebarref.value.datatree[0].children[0].children
         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.reference = Number(item.reference);
-          item.remark = item.remark;
+          item.optdir = item.optdir ?? 'none'; 
+          item.weight = item.weight ?? 'none';
+          item.scaling = item.scaling ?? 'none';
+          item.factor = item.factor ?? 'none';
+          item.reference = item.reference ?? 'none';
+          item.remark = item.remark ?? 'none';
+          item.name = item.name ?? 'none';
 
           treeitem3.value = {
             id: "1-3-3-" + index,
@@ -3189,15 +3196,50 @@ const getarr = (name, arrays) => {
 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 => {
-        const value = row[key];
-        return (value === null || value === undefined || value === '') ? ' ' : value; // 处理 null、undefined 和空字符串
-      })
-      .join(',');  // 将每个字段的值用逗号连接
-  }).join(';');
+    
+    const vid = row.vid || ' ';
+    const name = row.name || ' ';
+    const upper = row.upper ?? ' ';
+    const lower = row.lower ?? ' ';
+    const reference = row.reference ?? ' ';
+    const remark = row.remark || ' ';
+
+    // 将字段连接为一个以逗号分隔的字符串
+    return `${vid},${name},${upper},${lower},${reference},${remark}`;
+  }).join(';');  // 每行之间用分号分隔
+  return result;
+}
+
+const convertToStringArray1 = (result, Data) => {
+  console.log('Data:', Data);
+  result = Data.map(row => {
+    
+    const conid = row.conid || ' ';
+    const name = row.name || ' ';
+    const upper = row.upper ?? ' ';
+    const lower = row.lower ?? ' ';
+    const reference = row.reference ?? ' ';
+
+    // 将字段连接为一个以逗号分隔的字符串
+    return `${conid},${name},${reference},${upper},${lower}`;
+  }).join(';');  // 每行之间用分号分隔
+  return result;
+}
+
+const convertToStringArray2 = (result, Data) => {
+  console.log('Data:', Data);
+  result = Data.map(row => {
+    
+    const fid = row.fid || ' ';
+    const name = row.name || ' ';
+    const optdir = row.optdir ?? ' ';
+    const weight = row.weight ?? ' ';
+    const reference = row.reference ?? ' ';
+    const remark = row.remark || ' ';
+
+    // 将字段连接为一个以逗号分隔的字符串
+    return `${fid},${name},${optdir},${weight},${reference},${remark}`;
+  }).join(';');  // 每行之间用分号分隔
   return result;
 }
 
@@ -3213,13 +3255,13 @@ const onokItem = () => {
   } else if (activeIndex2.value == 1) {
     conlist.value = '';
     console.log("tabledata:",tableData.value)
-    conlist.value = convertToStringArray(conlist.value, tableData.value)
+    conlist.value = convertToStringArray1(conlist.value, tableData.value)
     restrain();
 
   } else if (activeIndex2.value == 2) {
     funlist.value = '';
     console.log("eloptimize:",eloptimize.value)
-    funlist.value = convertToStringArray(funlist.value, eloptimize.value)
+    funlist.value = convertToStringArray2(funlist.value, eloptimize.value)
     funlistaa();
 
   }
@@ -3228,9 +3270,9 @@ const onokItem = () => {
 //设计变量的添加
 const devise = () => {
   const params = {
-    transCode: 'MDO0008',
+    transCode: 'MDO0054',
     pid: pid.value,
-    varlist: svarlist.value
+    vartr: svarlist.value
   }
   request(params)
     .then((res) => {
@@ -3247,9 +3289,9 @@ const devise = () => {
 //约束的添加restrain
 const restrain = () => {
   const params = {
-    transCode: 'MDO0009',
+    transCode: 'MDO0055',
     pid: pid.value,
-    conlist: conlist.value
+    vartr: conlist.value
   }
   request(params)
     .then((res) => {
@@ -3266,9 +3308,9 @@ const restrain = () => {
 //优化目标接口
 const funlistaa = () => {
   const params = {
-    transCode: 'MDO0010',
+    transCode: 'MDO0056',
     pid: pid.value,
-    funlist: funlist.value
+    vartr: funlist.value
   }
   request(params)
     .then((res) => {

+ 15 - 1
src/views/titlecomponent/ADflow.vue

@@ -350,6 +350,7 @@ import { ref, onMounted, reactive, provide, nextTick } from "vue"
 import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
 import { Edit, CaretBottom, Delete } from "@element-plus/icons-vue"
 import { request, uploadFile } from "@/utils/request"
+import emitter from "@/utils/emitter"
 import fileUploads from "../components/fileuploads.vue";
 import meshFile from "@/assets/img/meshFile.png";
 import inputParams from "@/assets/img/inputParams.png";
@@ -529,7 +530,9 @@ const getadflow = (id) => {
   request(params)
     .then((res) => {
       if (res.hasOwnProperty("adid")) {
-        getadflowAssign(res)
+        getadflowAssign(res);
+        console.log('adid flow:',adid.value)
+        emitter.emit("adidFromadflow", adid);
       }
     })
     .catch((err) => {
@@ -539,6 +542,7 @@ const getadflow = (id) => {
 
 const getadflowAssign = (data) => {
   pid.value = data.pid
+  adid.value = data.adid
   adflowvalue.value.gridfile = data.gridfile
   adflowvalue.value.fid = data.fid
   adflowvalue.value.proname = data.proname
@@ -636,6 +640,16 @@ const getUploadStatus = (newValue) => {
 const fileDel = () => {
 }
 
+onMounted(() => {
+  emitter.on("requestGetadid", getadflow); // 监听事件
+});
+
+onUnmounted(() => {
+  emitter.off("requestGetadid", getadflow); // 解绑事件
+});
+
+
+
 defineExpose({
   getadflow,
   getadflowAssign,

+ 3 - 3
src/views/titlecomponent/Xfoil.vue

@@ -350,7 +350,7 @@ const getxfoilAssign = (data) => {
 }
 
 const getxfoilsave = () => {
-  console.log("pid:",pid.value);
+  // console.log("pid:",pid.value);
   const params = {
     transCode: "MDO0047",
     pid: pid.value,
@@ -377,11 +377,11 @@ const getxfoilsave = () => {
 
 
 onMounted(() => {
-  mitts.on("requestGetxfid", getxfoil); // 监听事件
+  emitter.on("requestGetxfid", getxfoil); // 监听事件
 });
 
 onUnmounted(() => {
-  mitts.off("requestGetxfoil", getxfoil); // 解绑事件
+  emitter.off("requestGetxfid", getxfoil); // 解绑事件
 });
 
 

+ 67 - 8
src/views/vuetree/index.vue

@@ -529,7 +529,7 @@ let youhuaCSTtable = ref([
 
 let steamtypeoptions = ref([
   { label:'约束条件', value:1 },
-  { label:'优化目标', value:1 }
+  { label:'优化目标', value:2 }
 ])
 
 let ADflowyouhuatable = ref([
@@ -540,12 +540,12 @@ let ADflowyouhuatable = ref([
 ])
 
 let Xfoilyouhuatable = ref([
-  { code:'', name:'升力系数Cl', comtype:2 , steamflag:1, steamtype:1 },
-  { code:'', name:'阻力系数Cd', comtype:2 , steamflag:1, steamtype:1 },
-  { code:'', name:'压阻力系数Cdp', comtype:2 , steamflag:1, steamtype:1 },
-  { code:'', name:'力矩系数Cm', comtype:2 , steamflag:1, steamtype:1 },
-  { code:'', name:'上表面转换点位置xtr-upper', comtype:2 , steamflag:1, steamtype:1 },
-  { code:'', name:'下表面转换点位置xtr-lower', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'升力系数Cl', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'阻力系数Cd', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'压阻力系数Cdp', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'力矩系数Cm', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'上表面转换点位置xtr-upper', comtype:2 , steamflag:1, steamtype:1 },
+  // { code:'', name:'下表面转换点位置xtr-lower', comtype:2 , steamflag:1, steamtype:1 },
 ])
 
 let checkAll = ref(false);
@@ -581,24 +581,33 @@ const confirmselection=()=>{
   console.log('xuanzhongshuju:',checkedData);
   console.log('seledge:',seledge.value);
   seledge.value.label=checkedData.join('\n');
+  if(datacontent.value === '4') {
+    dataFlowsave();
+  }
+  
   dataflowshow.value = false;
 }
 
 
 
 const xfid = ref('')
+const adid = ref('')
 // 监听组件xfoil返回的xfid
 const handleXfid = (xfidFromB) => {
   xfid.value = xfidFromB.value;
 };
 
+const handleAdid = (adidFromB) => {
+  adid.value = adidFromB.value;
+}
+
 
 let datacontent = ref('')
 function onEdgeDoubleClick(e) {
   
   console.log('Edge Double Click', e)
   seledge.value = e.edge;
-  dataflowshow.value = true
+  // dataflowshow.value = true
   console.log('qidian:',e.edge.sourceNode.data.name);
   console.log('zhongdian:',e.edge.targetNode.data.name);
   let qidian = e.edge.sourceNode.data.name;
@@ -606,16 +615,27 @@ function onEdgeDoubleClick(e) {
   let youhualist = ['优化器','代理优化器','进化优化器','梯度优化器'];
   if( youhualist.includes(qidian) && zhongdian ==='FFD' ){
     datacontent.value = '1';
+    dataflowshow.value = true;
   }else if( youhualist.includes(qidian) && zhongdian ==='CST') {
     datacontent.value = '2';
+    dataflowshow.value = true;
   }else if( qidian === 'ADflow' && youhualist.includes(zhongdian) ) {
     datacontent.value = '3';
+    emitter.emit('requestGetadid',pid.value);
+    console.log('adid:',adid.value)
+    if(adid.value) {
+      // querydataFlow(adid);
+      dataflowshow.value = true;
+    }else{
+      ElMessage.error('ADflow未初始化!')
+    }
   }else if ( qidian === 'Xfoil' && youhualist.includes(zhongdian) ) {
     datacontent.value = '4';
     emitter.emit('requestGetxfid',pid.value);
     console.log('xfid:',xfid.value)
     if(xfid.value) {
       querydataFlow(xfid);
+      dataflowshow.value = true;
     }else{
       ElMessage.error('Xfoil未初始化!')
     }
@@ -633,6 +653,23 @@ const querydataFlow = (comid) => {
     pid: pid.value,
     comid: comid.value
   }
+  request(params).then((res) => {
+    if(datacontent.value === '4'){
+      Xfoilyouhuatable.value = res.params;
+      handlecheckFlagchange();
+    }
+    
+  })
+  .catch((err) => {
+      ElMessage.error(err.returnMsg)
+  })
+}
+
+const dataFlowsave = () => {
+  const params = {
+    transCode: "MDO0053",
+    paramstr: convertToStringArray([],Xfoilyouhuatable.value),
+  };
   request(params).then((res) => {
     ElMessage({
         message: res.returnMsg,
@@ -644,7 +681,27 @@ const querydataFlow = (comid) => {
   })
 }
 
+const convertToStringArray = (result, Data) => {
+  console.log('Data:', Data);
 
+  // 安全检查 Data,确保它是一个数组
+  if (!Array.isArray(Data)) {
+    console.error('Data should be an array');
+    return result; // 返回原 result 或者根据需要返回其他默认值
+  }
+
+  result = Data.map(row => {
+    // 获取每一行的 `code`, `name`, `value` 和 `flag`
+    const paramid = row.paramid ?? ' ';
+    const steamflag = row.steamflag ?? '';
+    const steamtype = row.steamtype ?? ' ';
+
+    // 将字段连接为一个以逗号分隔的字符串
+    return `${paramid},${steamflag},${steamtype}`;
+  }).join(';');  // 每行之间用分号分隔
+
+  return result;
+}
 
 
 function logEvent(name, event) {
@@ -851,6 +908,7 @@ onMounted(() => {
   }
 
   emitter.on("xfidFromxfoil", handleXfid);
+  emitter.on("adidFromadflow", handleAdid);
 });
 
 
@@ -858,6 +916,7 @@ onUnmounted(() => {
   emitter.off('child2Data');
 
   emitter.off("xfidFromxfoil", handleXfid);
+  emitter.off("adidFromadflow", handleAdid);
 });