tangjunhao 3 ay önce
ebeveyn
işleme
082a863270

+ 2 - 2
src/views/home.vue

@@ -2721,10 +2721,10 @@ const pythonSubmit = () => {
 
 
 
-let MathFuncxinjian = ref(false)
+let MathFuncxinjian = ref(true)
 const MathFunctabchange = (val) => {
   // console.log('MathFunctabchange:',val);
-  if(val == '2'){
+  if(val == '2' || val == '0'){
     MathFuncxinjian.value = true;
   }else{
     MathFuncxinjian.value = false;

+ 18 - 2
src/views/titlecomponent/MathFunc.vue

@@ -65,7 +65,6 @@
               <el-checkbox
                 :false-label="0"
                 :true-label="1"
-                
                 v-model="scope.row.flag"
               />
             </template>
@@ -161,6 +160,24 @@ let formLabelWidth1 = ref(100)
 let code = ref('')
 let name = ref('')
 
+// 监听 outParams 的变化
+watch(
+  outParams,
+  (newParams) => {
+    // 生成新的 equation 内容
+    let newEquation = ``;
+
+    // 遍历 outParams,添加 name = {name} 到 equation
+    newParams.forEach(param => {
+      newEquation += `${param.name} = \n`;
+    });
+
+    // 更新 equation 的值
+    equation.value = newEquation;
+  },
+  { deep: true }  // 深度监听,确保数组内部变化也能触发
+);
+
 const mathfuncnew = () => {
   // console.log('新建')
   xinjiandialog.value = true;
@@ -306,7 +323,6 @@ const getmathfuncsave = (id,nowid) => {
         message: '保存成功',
         type: 'success',
       })
-      getmathfunc(pid.value, wid.value);
   })
   .catch((err) => {
       ElMessage.error('保存失败')

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

@@ -396,19 +396,19 @@ let outParams=ref([
     code:'mass',
     name: '结构质量',
     value: 13972.2123,
-    flag:'1'
+    flag: 1
   },
   {
     code:'ks_vmfailure',
     name: 'KS聚合应力',
     value: 0.3337,
-    flag:'1'
+    flag: 1
   },
   {
     code:'maxdeform',
     name: '最大变形',
     value: 0.0,
-    flag: '1'
+    flag: 1
   },
 ])
 

+ 38 - 264
src/views/vuetree/index.vue

@@ -96,93 +96,6 @@
         </div>
       </template>
       <div style="margin-top: 5px;padding: 10px 35px;">
-        <!-- <div v-if="datacontent === '1'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="youhuaFFDtable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" ></el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '2'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="youhuaCSTtable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" ></el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '3'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="ADflowyouhuatable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" show-overflow-tooltip></el-table-column>
-            <el-table-column prop="steamtype">
-              <template #default="{ row }">
-                <el-select v-model="row.steamtype">
-                  <el-option 
-                  v-for="item in steamtypeoptions"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                  />
-                </el-select>
-              </template>
-            </el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
         <linetablecard v-if="datacontent === '1'"
           v-model:check-all="checkAll"
           v-model:table-data="youhuaFFDtable"
@@ -251,180 +164,6 @@
           :is-indeterminate="isIndeterminate"
           @check-flag-change="handlecheckFlagchange"
         />
-        <!-- <div v-if="datacontent === '4'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="Xfoilyouhuatable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" show-overflow-tooltip></el-table-column>
-            <el-table-column prop="steamtype">
-              <template #default="{ row }">
-                <el-select v-model="row.steamtype">
-                  <el-option 
-                  v-for="item in steamtypeoptions"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                  />
-                </el-select>
-              </template>
-            </el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '5'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="ADflowMathfunctable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" show-overflow-tooltip></el-table-column>
-            <el-table-column prop="steamtype">
-              <template #default="{ row }">
-                <el-select v-model="row.steamtype">
-                  <el-option 
-                  v-for="item in steamtypeoptions"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                  />
-                </el-select>
-              </template>
-            </el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '6'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="TacsMathFunctable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" show-overflow-tooltip></el-table-column>
-            <el-table-column prop="steamtype">
-              <template #default="{ row }">
-                <el-select v-model="row.steamtype">
-                  <el-option 
-                  v-for="item in steamtypeoptions"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                  />
-                </el-select>
-              </template>
-            </el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '7'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="youhuaTACStable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" ></el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-        <!-- <div v-if="datacontent === '8'">
-          <el-card :shadow="none" style="min-height: 240px; max-height: 480px;">
-          <el-checkbox v-model="checkAll" 
-          :indeterminate="isIndeterminate"
-          @change="handlecheckAllchange">全选</el-checkbox>
-          <div class="eldesign classtable">
-            <el-table :data="MathFuncyouhuatable" border :show-header="false">
-            <el-table-column
-              type="index"
-              label=""
-            ></el-table-column>
-            <el-table-column prop="steamflag" width="55">
-              <template #default="{ row }">
-                <el-checkbox
-                :false-label="0"
-                :true-label="1" 
-                v-model="row.steamflag" 
-                @change="handlecheckFlagchange"></el-checkbox>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="" show-overflow-tooltip></el-table-column>
-            <el-table-column prop="steamtype">
-              <template #default="{ row }">
-                <el-select v-model="row.steamtype">
-                  <el-option 
-                  v-for="item in steamtypeoptions"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                  />
-                </el-select>
-              </template>
-            </el-table-column>
-            </el-table>
-          </div>
-          </el-card>
-        </div> -->
-
       </div>
       <template #footer>
         <div class="dialog-footer">
@@ -980,7 +719,38 @@ const handleCstid = (cstidFromB) => {
   noid.value.data.cstid = cstid.value;
 };
 
+// 用于自动mathfunc的mfcid
+const handlegetMfcid = ({id,nowid}) => {
+  getMfcid(id,nowid);
+}
+
+let equation = ref(`import os
+import numpy as np
+from surromdao.solver import BaseSolver
+
+class Branin(BaseSolver):
+    def __init__(self, filename=os.path):
+        super().__init__(filename)
 
+    def compute(self, xdict):
+        x = np.zeros(2)
+        # x[1] = x[2]`);
+
+const getMfcid = (id,nowid) => {
+  const params = {
+    transCode: "MDO0064",
+    pid: id,
+    wid: nowid,
+    equation: equation.value
+  };
+  request(params).then((res) => {
+    // console.log("获取mfcid成功", res.mfcid);
+    mfcid.value = res.mfcid;
+  })
+  .catch((err) => {
+      console.log("获取mfcid失败", err);
+    })
+}
 
 let datacontent = ref('')
 // 判定是哪种线段
@@ -1040,20 +810,22 @@ function onEdgeDoubleClick(e) {
   }else if ( qidian === 'ADflow' && zhongdian ==='MathFunc' ) {
     datacontent.value = '5';
     adid.value = e.edge.sourceNode.data.adid;
+    mfcid.value = e.edge.targetNode.data.mfcid || mfcid.value;
     if(adid.value&&mfcid.value) {
       querydataFlow(adid,3);
       dataflowshow.value = true;
     }else{
-      ElMessage.error('ADflow或MathFunc未初始化!')
+      ElMessage.error('ADflow未初始化!')
     }
   }else if ( qidian === 'TACS' && zhongdian ==='MathFunc' ) {
     datacontent.value = '6';
     tacsid.value = e.edge.sourceNode.data.tacsid;
+    mfcid.value = e.edge.targetNode.data.mfcid || mfcid.value;
     if(tacsid.value&&mfcid.value) {
       querydataFlow(tacsid,3);
       dataflowshow.value = true;
     }else{
-      ElMessage.error('TACS或MathFunc未初始化!')
+      ElMessage.error('TACS未初始化!')
     }
   }else if( youhualist.includes(qidian) && zhongdian ==='TACS') {
     datacontent.value = '7';
@@ -1066,7 +838,7 @@ function onEdgeDoubleClick(e) {
     // dataflowshow.value = true;
   }else if( qidian ==='MathFunc' && youhualist.includes(zhongdian)) {
     datacontent.value = '8';
-    mfcid.value = e.edge.sourceNode.data.mfcid;
+    mfcid.value = e.edge.sourceNode.data.mfcid || mfcid.value;
     if(mfcid.value) {
       querydataFlow(mfcid,2);
       dataflowshow.value = true;
@@ -1616,6 +1388,7 @@ onMounted(() => {
   emitter.on("tacsidFromTACS", handleTacsid);
   emitter.on("ffdidFromFfd", handleFfdid);
   emitter.on("cstidFromCst", handleCstid);
+  emitter.on("getMfcid",handlegetMfcid);
 });
 
 const cleanEdgeselect = () => {
@@ -1649,6 +1422,7 @@ onUnmounted(() => {
   emitter.off("tacsidFromTACS", handleTacsid);
   emitter.off("ffdidFromFfd", handleFfdid);
   emitter.off("cstidFromCst", handleCstid);
+  emitter.off("getMfcid",handlegetMfcid);
 });
 
 

+ 6 - 0
src/views/vuetree/useDnD.js

@@ -3,6 +3,7 @@ import { useVueFlow,Position,MarkerType} from '@vue-flow/core';
 import { ref, watch } from 'vue'
 import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
 import { request, uploadFile } from "@/utils/request"
+import emitter from "@/utils/emitter"
 import gc1 from '@/assets/flowimg/gc1.png'
 import gc2 from '@/assets/flowimg/gc2.png'
 import gc3 from '@/assets/flowimg/gc3.png'
@@ -132,6 +133,11 @@ const saveflow = async (pid, wid, uid, type, fromuid, touid) => {
 
   try {
     const res = await request(params);
+    if (uid.includes('MathFunc')) {
+      console.log("pid:", pid);
+      console.log("wid:", res.wid);
+      emitter.emit("getMfcid", { id: pid, nowid: res.wid });
+    }
     return res.wid;
   } catch (err) {
     ElMessage.error(err.returnMsg);