浏览代码

Merge branch 'master' of http://adicom-hxx.natapp1.cc/CQ_ADI/airoptweb

lichunyang 5 月之前
父节点
当前提交
8d3b379dab
共有 89 个文件被更改,包括 972 次插入394 次删除
  1. 二进制
      dist/assets/MSYH-d79c55e6.TTC
  2. 二进制
      dist/assets/MSYHBD-4508821b.TTC
  3. 二进制
      dist/assets/MSYHL-7e9bdf90.TTC
  4. 1 1
      dist/assets/cssMode-76b1f802.js
  5. 1 1
      dist/assets/delete-32206d80.js
  6. 0 0
      dist/assets/delete-45fe0240.css
  7. 0 0
      dist/assets/delete-c44b0073.css
  8. 0 0
      dist/assets/demo-469a1978.js
  9. 0 0
      dist/assets/demo-c87f031c.js
  10. 0 0
      dist/assets/f41-07db5828.js
  11. 1 1
      dist/assets/f41-3ff5b14d.css
  12. 0 0
      dist/assets/f41-bd699bfa.js
  13. 1 1
      dist/assets/freemarker2-a7dd1321.js
  14. 1 1
      dist/assets/handlebars-cad3db32.js
  15. 1 0
      dist/assets/header-0236da72.css
  16. 0 0
      dist/assets/header-5327a542.js
  17. 0 1
      dist/assets/header-792950ce.css
  18. 0 0
      dist/assets/home-3422a361.css
  19. 0 0
      dist/assets/home-de7ab582.css
  20. 0 0
      dist/assets/home-e907ab67.js
  21. 1 1
      dist/assets/html-57e68a2e.js
  22. 1 1
      dist/assets/htmlMode-f985337d.js
  23. 0 0
      dist/assets/index-4050af60.css
  24. 0 0
      dist/assets/index-6140cd5d.js
  25. 0 0
      dist/assets/index-9a985e92.js
  26. 0 0
      dist/assets/index-a134c2f2.js
  27. 0 0
      dist/assets/index-a2711452.css
  28. 0 0
      dist/assets/index-d9da558f.js
  29. 1 1
      dist/assets/javascript-3d6de4c8.js
  30. 1 1
      dist/assets/jsonMode-fadd87df.js
  31. 1 1
      dist/assets/liquid-8fed08ae.js
  32. 1 1
      dist/assets/mdx-7564ee71.js
  33. 0 0
      dist/assets/newfile-16630cde.js
  34. 0 0
      dist/assets/newfile-88f8523b.js
  35. 1 0
      dist/assets/newfile-c82ecca7.css
  36. 0 1
      dist/assets/newfile-fad98ce2.css
  37. 0 0
      dist/assets/openpage-90318067.js
  38. 1 0
      dist/assets/openpage-cab1d739.css
  39. 0 1
      dist/assets/openpage-d0500907.css
  40. 0 0
      dist/assets/openpage-d23384d2.js
  41. 1 1
      dist/assets/python-e1a6f58d.js
  42. 1 1
      dist/assets/querylist-8905b4d8.css
  43. 5 0
      dist/assets/querylist-9533ff8c.js
  44. 0 5
      dist/assets/querylist-a4ddce5f.js
  45. 1 1
      dist/assets/razor-ccb05066.js
  46. 0 0
      dist/assets/request-e7f5eb15.js
  47. 0 1
      dist/assets/savefile-3ba19d9d.js
  48. 1 0
      dist/assets/savefile-c493eb18.js
  49. 二进制
      dist/assets/surromdao-66a16cb6.png
  50. 1 1
      dist/assets/tsMode-4ba979e0.js
  51. 1 1
      dist/assets/typescript-29ac52d2.js
  52. 0 0
      dist/assets/vue-flow-background-6bbcfde0.js
  53. 0 0
      dist/assets/vue-flow-core-a2cfc8b4.js
  54. 1 1
      dist/assets/xml-2521c41e.js
  55. 1 1
      dist/assets/yaml-4c8b9318.js
  56. 2 2
      dist/index.html
  57. 1 1
      src/App.vue
  58. 二进制
      src/assets/fonts/MSYH.TTC
  59. 二进制
      src/assets/fonts/MSYHBD.TTC
  60. 二进制
      src/assets/fonts/MSYHL.TTC
  61. 24 1
      src/assets/fonts/fonts.css
  62. 1 1
      src/components/header.vue
  63. 32 28
      src/style/index.css
  64. 3 3
      src/views/echart/BarChart.vue
  65. 3 3
      src/views/echart/area.vue
  66. 3 3
      src/views/echart/echartLine.vue
  67. 3 3
      src/views/echart/optimize_monitor.vue
  68. 3 3
      src/views/echart/pareto.vue
  69. 1 1
      src/views/echart/pie.vue
  70. 5 5
      src/views/echart/process-monitor1.vue
  71. 5 5
      src/views/echart/process-monitor2.vue
  72. 3 3
      src/views/echart/scatter.vue
  73. 170 104
      src/views/home.vue
  74. 13 9
      src/views/home/newfile.vue
  75. 30 7
      src/views/home/querylist.vue
  76. 4 3
      src/views/openpage.vue
  77. 90 27
      src/views/titlecomponent/ADflow.vue
  78. 9 8
      src/views/titlecomponent/Cloudsecond.vue
  79. 12 4
      src/views/titlecomponent/Doptimize.vue
  80. 1 1
      src/views/titlecomponent/Flight.vue
  81. 12 4
      src/views/titlecomponent/Joptimize.vue
  82. 13 5
      src/views/titlecomponent/Toptimize.vue
  83. 22 11
      src/views/titlecomponent/Xfoil.vue
  84. 14 6
      src/views/titlecomponent/csts.vue
  85. 129 69
      src/views/titlecomponent/ffds.vue
  86. 1 1
      src/views/vueflow/main.css
  87. 255 40
      src/views/vuetree/index.vue
  88. 1 1
      src/views/vuetree/main.css
  89. 80 5
      src/views/vuetree/useDnD.js

二进制
dist/assets/MSYH-d79c55e6.TTC


二进制
dist/assets/MSYHBD-4508821b.TTC


二进制
dist/assets/MSYHL-7e9bdf90.TTC


+ 1 - 1
dist/assets/cssMode-2b65762e.js → dist/assets/cssMode-76b1f802.js

@@ -1,4 +1,4 @@
-import{m as tt}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as tt}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/delete-67ef9f49.js → dist/assets/delete-32206d80.js

@@ -1 +1 @@
-import{r as s}from"./index-206341c5.js";const a=s(!1),o=s("");let r;function i(){return{isVisible:a,message:o,resolve:e=>{r&&r(e)}}}function l(){return{confirm(e){return a.value=!0,o.value=e,new Promise(t=>{r=t})}}}export{l as a,i as u};
+import{r as s}from"./index-d9da558f.js";const a=s(!1),o=s("");let r;function i(){return{isVisible:a,message:o,resolve:e=>{r&&r(e)}}}function l(){return{confirm(e){return a.value=!0,o.value=e,new Promise(t=>{r=t})}}}export{l as a,i as u};

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/delete-45fe0240.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/delete-c44b0073.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/demo-469a1978.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/demo-c87f031c.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/f41-07db5828.js


+ 1 - 1
dist/assets/f41-9875a326.css → dist/assets/f41-3ff5b14d.css

@@ -1 +1 @@
-.selcal[data-v-f2f47eed]{position:absolute;top:37%;width:26px;color:#000;font-size:14px;font-weight:700;left:5px}.diedai[data-v-f2f47eed]{color:#000;font-size:14px;padding-bottom:20px;font-weight:700}.boy[data-v-6f6a5acf]{font-size:24px;color:red}.color[data-v-9ca4274c]{font-size:24px;color:#00f}
+.selcal[data-v-51ce846c]{position:absolute;top:37%;width:26px;color:#000;font-size:14px;font-weight:700;left:5px}.diedai[data-v-51ce846c]{color:#000;font-size:14px;padding-bottom:20px;font-weight:700}.boy[data-v-6f6a5acf]{font-size:24px;color:red}.color[data-v-9ca4274c]{font-size:24px;color:#00f}

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/f41-bd699bfa.js


+ 1 - 1
dist/assets/freemarker2-94f3c31b.js → dist/assets/freemarker2-a7dd1321.js

@@ -1,4 +1,4 @@
-import{m as F}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as F}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/handlebars-363d9d25.js → dist/assets/handlebars-cad3db32.js

@@ -1,4 +1,4 @@
-import{m as l}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as l}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 0
dist/assets/header-0236da72.css

@@ -0,0 +1 @@
+.ve_menu_logo[data-v-44b11747]{width:100%;height:32px;background-color:#2267b1;overflow:hidden;padding:0 10px}.ve_menu_logo .ve_logo_img[data-v-44b11747]{height:100%;text-align:center;display:inline-block;box-sizing:border-box;vertical-align:middle}.ve_menu_logo .ve_logo_title[data-v-44b11747]{overflow:hidden;text-overflow:ellipsis;display:inline-block;margin:0;font-size:18px;vertical-align:middle;color:#fff;font-family:Microsoft YaHei}

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/header-5327a542.js


+ 0 - 1
dist/assets/header-792950ce.css

@@ -1 +0,0 @@
-.ve_menu_logo[data-v-a50ce81a]{width:100%;height:32px;background-color:#2267b1;overflow:hidden;padding:0 10px}.ve_menu_logo .ve_logo_img[data-v-a50ce81a]{height:100%;text-align:center;display:inline-block;box-sizing:border-box;vertical-align:middle}.ve_menu_logo .ve_logo_title[data-v-a50ce81a]{overflow:hidden;text-overflow:ellipsis;display:inline-block;margin:0;font-size:18px;vertical-align:middle;color:#fff;font-family:Source Sans-Regular}

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/home-3422a361.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/home-de7ab582.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/home-e907ab67.js


+ 1 - 1
dist/assets/html-066ca111.js → dist/assets/html-57e68a2e.js

@@ -1,4 +1,4 @@
-import{m as s}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as s}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/htmlMode-ec805b70.js → dist/assets/htmlMode-f985337d.js

@@ -1,4 +1,4 @@
-import{m as ft}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as ft}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-4050af60.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-6140cd5d.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-9a985e92.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-a134c2f2.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-a2711452.css


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/index-d9da558f.js


+ 1 - 1
dist/assets/javascript-57b0b6c0.js → dist/assets/javascript-3d6de4c8.js

@@ -1,4 +1,4 @@
-import{conf as t,language as e}from"./typescript-604c34f5.js";import"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{conf as t,language as e}from"./typescript-29ac52d2.js";import"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/jsonMode-e5c58ad0.js → dist/assets/jsonMode-fadd87df.js

@@ -1,4 +1,4 @@
-import{m as Lt}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as Lt}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/liquid-5f9a2191.js → dist/assets/liquid-8fed08ae.js

@@ -1,4 +1,4 @@
-import{m as d}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as d}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/mdx-f0efe7e6.js → dist/assets/mdx-7564ee71.js

@@ -1,4 +1,4 @@
-import{m as p}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as p}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/newfile-16630cde.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/newfile-88f8523b.js


+ 1 - 0
dist/assets/newfile-c82ecca7.css

@@ -0,0 +1 @@
+@charset "UTF-8";.collapse-list[data-v-016142f1]{display:flex}.collapse-list .list[data-v-016142f1]{width:110px;height:110px;border:2px solid #71AAFF;display:flex;justify-content:center;align-items:center;text-align:center;margin:0 5px}.hoveredImageContainer[data-v-016142f1]{height:120%;width:120%;position:absolute;display:flex;justify-content:center;align-items:center;left:calc(100% + 0px);top:-15px;z-index:10}.showImgDiv[data-v-016142f1]{padding-top:5px;position:relative}.modelStyle[data-v-016142f1]{font-family:Microsoft YaHei;font-size:12px;color:#333;text-align:center}.custom-collapse .el-collapse-item__header{font-family:Microsoft YaHei;font-weight:500;font-size:14px;color:#1a1a1a;line-height:24px;text-align:left;font-style:normal;text-transform:none}.custom-collapse .el-collapse-item__header{align-items:center;border:none;height:20px;margin:6px 6px 6px 0}.custom-collapse .el-collapse-item__arrow{order:-1;margin-right:5px;margin-left:6px}.custom-collapse .el-collapse-item__wrap,.custom-collapse{border:none}.custom-collapse .el-collapse-item__content{padding-bottom:5px}

+ 0 - 1
dist/assets/newfile-fad98ce2.css

@@ -1 +0,0 @@
-@charset "UTF-8";.collapse-list[data-v-d212cff6]{display:flex}.collapse-list .list[data-v-d212cff6]{width:110px;height:110px;border:2px solid #71AAFF;display:flex;justify-content:center;align-items:center;text-align:center;margin:0 5px}.hoveredImageContainer[data-v-d212cff6]{height:220px;width:180px;position:absolute;left:calc(100% + 5px);top:-10px;z-index:10}.showImgDiv[data-v-d212cff6]{position:relative}.modelStyle[data-v-d212cff6]{font-family:Source Sans Pro-Regular;font-size:12px;color:#333;text-align:center}.custom-collapse .el-collapse-item__header{font-family:Source Sans Pro-Regular;font-weight:500;font-size:14px;color:#1a1a1a;line-height:24px;text-align:left;font-style:normal;text-transform:none}.custom-collapse .el-collapse-item__header{align-items:center;border:none;height:20px;margin:6px 6px 6px 0}.custom-collapse .el-collapse-item__arrow{order:-1;margin-right:5px;margin-left:6px}.custom-collapse .el-collapse-item__wrap,.custom-collapse{border:none}.custom-collapse .el-collapse-item__content{padding-bottom:5px}

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/openpage-90318067.js


+ 1 - 0
dist/assets/openpage-cab1d739.css

@@ -0,0 +1 @@
+.zjmian[data-v-aeab97c0]{padding:10px;text-align:left;color:#ffd153;font-weight:600;font-size:16px}.zjmian span[data-v-aeab97c0]{margin-right:12px}.zjmian .el-image[data-v-aeab97c0]{width:20px;margin-right:8px}.zjmian .el-button[data-v-aeab97c0]{color:#ffd153;background-color:#2267b1;border:none;padding:8px 15px 8px 7px;font-size:18px;font-family:Microsoft YaHei}.ve_logo_img[data-v-aeab97c0]{text-align:center}.user[data-v-aeab97c0]{width:100%;height:calc(100vh - 40px)}.user .container .user-slider[data-v-aeab97c0]{width:190px;height:100%;padding-top:20px}.user-slider .el-menu[data-v-aeab97c0]{border:none}.user-slider .el-menu-item[data-v-aeab97c0]{height:36px;line-height:36px;font-size:16px;text-align:center;color:#b6b6b6}.user-slider .el-menu-item.is-active[data-v-aeab97c0]{color:red;background:#2267B1}.user-slider .menuclass[data-v-aeab97c0]{background-color:#0000}.lbg_color3[data-v-aeab97c0]{background:#2267B1}.border .el-menu[data-v-aeab97c0]{border:none}.border .el-menu .el-menu-item[data-v-aeab97c0]{color:#fff;padding:0 45px!important;font-family:Microsoft YaHei;font-size:16px}.user .container .user-main[data-v-aeab97c0]{width:calc(100% - 190px);height:100%;background:#Fff;padding:10px}.user .container[data-v-aeab97c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%}.user-slider .el-menu-item.is-active[data-v-aeab97c0]{color:#333;background:#ecf5ff}.user-slider .el-menu-item[data-v-aeab97c0]:hover{color:#ffd153}

+ 0 - 1
dist/assets/openpage-d0500907.css

@@ -1 +0,0 @@
-.zjmian[data-v-f1d3fcc5]{padding:10px;text-align:left;color:#ffd153;font-weight:600;font-size:16px}.zjmian span[data-v-f1d3fcc5]{margin-right:12px}.zjmian .el-image[data-v-f1d3fcc5]{width:20px;margin-right:8px}.zjmian .el-button[data-v-f1d3fcc5]{color:#ffd153;background-color:#2267b1;border:none;padding:8px 15px 8px 7px;font-size:18px;font-family:Source Sans Pro-Regular}.ve_logo_img[data-v-f1d3fcc5]{text-align:center}.user[data-v-f1d3fcc5]{width:100%;height:calc(100vh - 40px)}.user .container .user-slider[data-v-f1d3fcc5]{width:190px;height:100%;padding-top:20px}.user-slider .el-menu[data-v-f1d3fcc5]{border:none}.user-slider .el-menu-item[data-v-f1d3fcc5]{height:36px;line-height:36px;font-size:16px;text-align:center;color:#b6b6b6}.user-slider .el-menu-item.is-active[data-v-f1d3fcc5]{color:red;background:#2267B1}.user-slider .menuclass[data-v-f1d3fcc5]{background-color:#0000}.lbg_color3[data-v-f1d3fcc5]{background:#2267B1}.border .el-menu[data-v-f1d3fcc5]{border:none}.border .el-menu .el-menu-item[data-v-f1d3fcc5]{color:#fff;padding:0 45px!important;font-family:Source Sans-Regular;font-size:16px}.user .container .user-main[data-v-f1d3fcc5]{width:calc(100% - 190px);height:100%;background:#Fff;padding:10px}.user .container[data-v-f1d3fcc5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%}.user-slider .el-menu-item.is-active[data-v-f1d3fcc5]{color:#333;background:#ecf5ff}.user-slider .el-menu-item[data-v-f1d3fcc5]:hover{color:#ffd153}

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/openpage-d23384d2.js


+ 1 - 1
dist/assets/python-ae56d9db.js → dist/assets/python-e1a6f58d.js

@@ -1,4 +1,4 @@
-import{m as a}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as a}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/querylist-e4808f15.css → dist/assets/querylist-8905b4d8.css

@@ -1 +1 @@
-@charset "UTF-8";.search-container[data-v-5d5aebfe]{display:flex;align-items:center}.search-input[data-v-5d5aebfe]{width:200px}.search-button[data-v-5d5aebfe]{background-color:#2267b1;margin-left:5px}.input[data-v-5d5aebfe]{width:25%;display:flex;min-width:200px;-webkit-box-sizing:border-box;-webkit-transition:.5s linear;transition:.5s linear;position:relative;box-sizing:border-box;overflow:hidden;color:#fff;border:1px solid #dcdfe6}.input .text[data-v-5d5aebfe]{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-input__inner[data-v-5d5aebfe]{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;height:40px;border:none;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.input .el-button[data-v-5d5aebfe]{display:inline-block;line-height:1;white-space:nowrap;height:40px;cursor:pointer;background:#fff;border:none;border-left:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.elimagetab[data-v-5d5aebfe]{height:90px;display:flex;align-items:center;justify-content:center;overflow:hidden}.elimagetab .el-image[data-v-5d5aebfe]{height:30%;width:auto}
+@charset "UTF-8";.search-container[data-v-935401f0]{display:flex;align-items:center}.search-input[data-v-935401f0]{width:200px}.search-button[data-v-935401f0]{background-color:#2267b1;margin-left:5px}.input[data-v-935401f0]{width:25%;display:flex;min-width:200px;-webkit-box-sizing:border-box;-webkit-transition:.5s linear;transition:.5s linear;position:relative;box-sizing:border-box;overflow:hidden;color:#fff;border:1px solid #dcdfe6}.input .text[data-v-935401f0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-input__inner[data-v-935401f0]{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;height:40px;border:none;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.input .el-button[data-v-935401f0]{display:inline-block;line-height:1;white-space:nowrap;height:40px;cursor:pointer;background:#fff;border:none;border-left:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.elimagetab[data-v-935401f0]{height:90px;display:flex;align-items:center;justify-content:center;overflow:hidden}.elimagetab .el-image[data-v-935401f0]{height:30%;width:auto}

文件差异内容过多而无法显示
+ 5 - 0
dist/assets/querylist-9533ff8c.js


文件差异内容过多而无法显示
+ 0 - 5
dist/assets/querylist-a4ddce5f.js


+ 1 - 1
dist/assets/razor-28265ebd.js → dist/assets/razor-ccb05066.js

@@ -1,4 +1,4 @@
-import{m as s}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as s}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/request-e7f5eb15.js


+ 0 - 1
dist/assets/savefile-3ba19d9d.js

@@ -1 +0,0 @@
-import"./request-37bb4756.js";import{o as t,b as s,F as o,e}from"./index-206341c5.js";const a=e("h3",{class:"opt_tltie"},"保存",-1),l=e("div",null,null,-1),p={__name:"savefile",setup(n){return(_,c)=>(t(),s(o,null,[a,l],64))}};export{p as default};

+ 1 - 0
dist/assets/savefile-c493eb18.js

@@ -0,0 +1 @@
+import"./request-e7f5eb15.js";import{o as t,b as s,F as o,e}from"./index-d9da558f.js";const a=e("h3",{class:"opt_tltie"},"保存",-1),l=e("div",null,null,-1),p={__name:"savefile",setup(n){return(_,c)=>(t(),s(o,null,[a,l],64))}};export{p as default};

二进制
dist/assets/surromdao-66a16cb6.png


+ 1 - 1
dist/assets/tsMode-942d726c.js → dist/assets/tsMode-4ba979e0.js

@@ -1,4 +1,4 @@
-import{t as I,m as N}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{t as I,m as N}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/typescript-604c34f5.js → dist/assets/typescript-29ac52d2.js

@@ -1,4 +1,4 @@
-import{m as a}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as a}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

文件差异内容过多而无法显示
+ 0 - 0
dist/assets/vue-flow-background-6bbcfde0.js


文件差异内容过多而无法显示
+ 0 - 0
dist/assets/vue-flow-core-a2cfc8b4.js


+ 1 - 1
dist/assets/xml-e3d2682b.js → dist/assets/xml-2521c41e.js

@@ -1,4 +1,4 @@
-import{m}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 1 - 1
dist/assets/yaml-824a9819.js → dist/assets/yaml-4c8b9318.js

@@ -1,4 +1,4 @@
-import{m as l}from"./home-0adb1eba.js";import"./f41-07db5828.js";import"./request-37bb4756.js";import"./index-206341c5.js";import"./header-5206830c.js";import"./f22-deb38015.js";import"./vue-flow-core-41470050.js";import"./vue-flow-background-7124fddf.js";/*!-----------------------------------------------------------------------------
+import{m as l}from"./home-e907ab67.js";import"./f41-bd699bfa.js";import"./request-e7f5eb15.js";import"./index-d9da558f.js";import"./header-5327a542.js";import"./f22-deb38015.js";import"./vue-flow-core-a2cfc8b4.js";import"./vue-flow-background-6bbcfde0.js";/*!-----------------------------------------------------------------------------
  * Copyright (c) Microsoft Corporation. All rights reserved.
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
  * Released under the MIT license

+ 2 - 2
dist/index.html

@@ -38,8 +38,8 @@
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
  
     <title></title>
-    <script type="module" crossorigin src="./assets/index-206341c5.js"></script>
-    <link rel="stylesheet" href="./assets/index-4050af60.css">
+    <script type="module" crossorigin src="./assets/index-d9da558f.js"></script>
+    <link rel="stylesheet" href="./assets/index-a2711452.css">
   </head>
   <body>
     <div id="app"></div>

+ 1 - 1
src/App.vue

@@ -7,7 +7,7 @@
 
 <style>
 #app {
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
   color: #2c3e50;

二进制
src/assets/fonts/MSYH.TTC


二进制
src/assets/fonts/MSYHBD.TTC


二进制
src/assets/fonts/MSYHL.TTC


+ 24 - 1
src/assets/fonts/fonts.css

@@ -10,4 +10,27 @@
    /* 对于Black,通常是900  font-weight: 900; */
     font-style: normal;
   }
- 
+ 
+  /* 常规版 - Microsoft YaHei Regular */
+@font-face {
+  font-family: 'Microsoft YaHei';
+  src: url('@/assets/fonts/MSYH.TTC') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+
+/* 加粗版 - Microsoft YaHei Bold */
+@font-face {
+  font-family: 'Microsoft YaHei';
+  src: url('@/assets/fonts/MSYHBD.TTC') format('truetype');
+  font-weight: bold;
+  font-style: normal;
+}
+
+/* 细体版 - Microsoft YaHei Light */
+@font-face {
+  font-family: 'Microsoft YaHei Light';
+  src: url('@/assets/fonts/MSYHL.TTC') format('truetype');
+  font-weight: 300;
+  font-style: normal;
+}

+ 1 - 1
src/components/header.vue

@@ -44,7 +44,7 @@ let title=ref("民用飞机多学科联合优化设计软件");
         font-size: 18px;
         vertical-align: middle;
         color: #fff;
-        font-family: 'Source Sans-Regular';
+        font-family: 'Microsoft YaHei';
         &:hover {
   
         }

+ 32 - 28
src/style/index.css

@@ -70,7 +70,7 @@ img{
 .heder_tabs .el-tabs__item{
     width: 150px;
     height: 31px;
-    font-family: 'Source Sans-Regular';
+    font-family: 'Microsoft YaHei';
 }
 body{
     width: 100%;
@@ -137,7 +137,7 @@ body{
 
 .imgzong .listitem span {
     font-size: 14px;
-    font-family: 'Source Sans-Regular';
+    font-family: 'Microsoft YaHei';
     color: rgba(51, 51, 51, 0.8);
 }
 .el-tabs__header{
@@ -145,9 +145,11 @@ body{
     margin: 0;
 }
 .my-header{
-    line-height: 40px;
+    /* line-height: 40px; */
     height: 40px;
-    text-align: left;
+    /* text-align: left; */
+    display: flex;
+    align-items: center;
 }
 .my-header .el-image{
     width: 28px;
@@ -588,9 +590,9 @@ box-sizing: border-box;
   margin-right: 10px;
 }
 .colortext .el-tabs__item{
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
   font-weight: 400;
-  font-size: 16px;
+  font-size: 14px;
   color: #333333;
   line-height: 23px;
   text-align: left;
@@ -605,7 +607,7 @@ box-sizing: border-box;
 } */
 .colortext .el-tabs--left .el-tabs__header.is-left{
   background: #F4F4F4;
-  height: 459px;
+  height: 440px;
 }
 .colortext .el-tabs--left .el-tabs__active-bar.is-left{
   right: auto;
@@ -634,8 +636,9 @@ ul{
   line-height: 40px;
   float: left;
   color: #333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
+  cursor:default;
 }
 .colortext .XFpdding ul .item.active {
   border-top: 2px solid  #2267B1;;
@@ -647,7 +650,7 @@ ul{
   text-align: left !important;
 }
 .colortext .el-table .cell{
-  font-size: 16px !important;
+  font-size: 14px !important;
   color: #333333;
 }
 .colortext  .el-table .el-table__cell{
@@ -676,7 +679,7 @@ height: 30px;
    background-color:#fafafa; 
    color: #333333;
    font-weight: 400;
-   font-family: 'Source Sans Pro-Regular';
+   font-family: 'Microsoft YaHei';
 }
 .el-table .el-table__row, .el-table .el-table__header-wrapper {
   /* border:1px solid #eee !important;  */
@@ -686,33 +689,33 @@ height: 30px;
   text-align: left !important;
   padding-left: 20px;
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .colortext .classtable .el-collapse-item {
   
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .colortext .classtable .el-collapse-item__header{
   padding-left: 20px;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .colortext .classtable .el-radio__label ,.colortext .classtable span,.colortext .classtable .el-checkbox__label{
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .colortext .el-input__inner {
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .classtable .header-blue {
@@ -741,6 +744,7 @@ height: 30px;
 
 .classtable .el-table__cell div, .classtable .el-table__cell .el-input__inner {
   text-align: center;
+  align-items: center;
 }
 
 
@@ -753,14 +757,14 @@ height: 30px;
 .dialog_style {
   color: #333333;
   font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 
 .dialog_style .el-form-item__label,.dialog_style .el-checkbox__label,
 .dialog_style .el-input__inner{
   color: #333333;
   font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 
 .dialog_style .cloudbox{
@@ -769,7 +773,7 @@ height: 30px;
 
 .dialog_style .cloudbox .el-button{
   color: #333333;
-  font-size: 16px;
+  font-size: 14px;
 }
 
 .el-collapse-item__content {
@@ -780,12 +784,12 @@ height: 30px;
   margin: 0;
 }
 .colortext .el-tabs--left .el-tabs__nav.is-left, .el-tabs--left .el-tabs__nav.is-right, .el-tabs--right .el-tabs__nav.is-left, .el-tabs--right .el-tabs__nav.is-right{
-width: 200px;
+width: 150px;
 }
 .colortext .el-tabs--left .el-tabs__item.is-left, .el-tabs--right .el-tabs__item.is-left {
   justify-content: flex-start;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 .colortext  .el-tabs__nav-wrap::after{
   background-color: #fff;
@@ -824,7 +828,7 @@ width: 200px;
   position: relative;
   font-size: 16px;
   color: #333333;
-  font-family: "Source Sans-Regular";
+  font-family: "Microsoft YaHei";
 }
 .pythfoter .active {
   background-color: #fff;

+ 3 - 3
src/views/echart/BarChart.vue

@@ -28,9 +28,9 @@ let state = reactive({
 })
 const getData = () => {}
 onMounted(() => {
-  var chartDom = document.getElementById("bargraphbar")
-  myChart = echarts.init(chartDom)
-  setOptionfun()
+  // var chartDom = document.getElementById("bargraphbar")
+  // myChart = echarts.init(chartDom)
+  // setOptionfun()
 })
 
 const props = defineProps({

+ 3 - 3
src/views/echart/area.vue

@@ -169,7 +169,7 @@ const setOptionfun = () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       }
     },
     tooltip: {
@@ -207,7 +207,7 @@ const setOptionfun = () => {
         nameTextStyle:{
           fontSize: 16,
           color:'#333333',
-          fontFamily:'Source Sans Pro-Regular'
+          fontFamily:'Microsoft YaHei'
         },
         nameLocation: 'middle',
         data: xdata.value,
@@ -233,7 +233,7 @@ const setOptionfun = () => {
         nameTextStyle:{
           fontSize: 16,
           color:'#333333',
-          fontFamily:'Source Sans Pro-Regular'
+          fontFamily:'Microsoft YaHei'
         },
         nameLocation: 'middle',
         axisLine: {

+ 3 - 3
src/views/echart/echartLine.vue

@@ -160,7 +160,7 @@ const linechart = () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       }
     },
     tooltip: {
@@ -197,7 +197,7 @@ const linechart = () => {
         nameTextStyle:{
           fontSize: 16,
           color:'#333333',
-          fontFamily:'Source Sans Pro-Regular'
+          fontFamily:'Microsoft YaHei'
         },
       nameLocation: 'middle',
       data: xdata.value,
@@ -221,7 +221,7 @@ const linechart = () => {
       nameTextStyle:{
         fontsize:16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation:"middle",
       axisTick: {

+ 3 - 3
src/views/echart/optimize_monitor.vue

@@ -13,7 +13,7 @@
   </div>
 </template>
   <script setup>
-import { ref, onMounted, reactive, markRaw, inject, watch, nextTick,defineExpose } from "vue"
+import { ref, onMounted, reactive, markRaw, inject, watch, nextTick } from "vue"
 import { RouterView, RouterLink } from "vue-router"
 import { request, uploadFile } from "@/utils/request"
 import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
@@ -416,7 +416,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       data: xdata.value,
@@ -441,7 +441,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       axisLine: {

+ 3 - 3
src/views/echart/pareto.vue

@@ -150,7 +150,7 @@ const setOptionfunc = async () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       }
     },
     legend: {
@@ -184,7 +184,7 @@ const setOptionfunc = async () => {
         nameTextStyle:{
           fontSize: 16,
           color:'#333333',
-          fontFamily:'Source Sans Pro-Regular'
+          fontFamily:'Microsoft YaHei'
         },
         nameLocation: 'middle',
         data: xdata.value,
@@ -210,7 +210,7 @@ const setOptionfunc = async () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       axisTick: {

+ 1 - 1
src/views/echart/pie.vue

@@ -143,7 +143,7 @@ const setOptionfun = () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily: "Source Sans Pro-Regular"
+        fontFamily: "Microsoft YaHei"
       }
     },
     tooltip: {

+ 5 - 5
src/views/echart/process-monitor1.vue

@@ -121,7 +121,7 @@ const getsockechart = (data) => {
 
   myChart.setOption({
     legend: {
-      data: [vars[1]],  // 图例数据
+      data: [],  // 图例数据
     },
     xAxis: {
       type: "value",  
@@ -211,7 +211,7 @@ const getshuju = (data) => {
 
   myChart.setOption({
     legend: {
-      data: [vars[1]],  // 图例数据
+      data: [],  // 图例数据
     },
     xAxis: {
       type: "value",  
@@ -240,7 +240,7 @@ const linechart = () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
     },
     tooltip: {
@@ -277,7 +277,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       data: xdata.value,
@@ -301,7 +301,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       axisLine: {

+ 5 - 5
src/views/echart/process-monitor2.vue

@@ -121,7 +121,7 @@ const getsockechart = (data) => {
 
   myChart.setOption({
     legend: {
-      data: [vars[1]],  // 图例数据
+      data: [],  // 图例数据
     },
     xAxis: {
       type: "value",  
@@ -212,7 +212,7 @@ const getshuju = (data) => {
 
   myChart.setOption({
     legend: {
-      data: [vars[1]],  // 图例数据
+      data: [],  // 图例数据
     },
     xAxis: {
       type: "value",  
@@ -241,7 +241,7 @@ const linechart = () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
     },
     tooltip: {
@@ -278,7 +278,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: "middle",
       data: xdata.value,
@@ -302,7 +302,7 @@ const linechart = () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: "middle",
       axisLine: {

+ 3 - 3
src/views/echart/scatter.vue

@@ -152,7 +152,7 @@ const setOptionfunc = async () => {
         color: "#333333",
         fontSize: 16,
         fontWeight: "normal",
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       }
     },
     legend: {
@@ -186,7 +186,7 @@ const setOptionfunc = async () => {
         nameTextStyle:{
           fontSize: 16,
           color:'#333333',
-          fontFamily:'Source Sans Pro-Regular'
+          fontFamily:'Microsoft YaHei'
         },
         nameLocation: 'middle',
         data: xdata.value,
@@ -212,7 +212,7 @@ const setOptionfunc = async () => {
       nameTextStyle:{
         fontSize: 16,
         color:'#333333',
-        fontFamily:'Source Sans Pro-Regular'
+        fontFamily:'Microsoft YaHei'
       },
       nameLocation: 'middle',
       axisTick: {

+ 170 - 104
src/views/home.vue

@@ -721,7 +721,7 @@
           <!-- Xfiol改版后的 -->
           <el-dialog v-model="dialog.Xfiol" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false"
-            modal-class="summary-dlg2 summary-dlg" :before-close="handleClose" width="675"
+            modal-class="summary-dlg2 summary-dlg" :before-close="handleClose" width="540"
             class="dialog_class bgcolor tianjia colortext sel">
 
             <template #header="{ titleId, titleClass }">
@@ -867,7 +867,7 @@
           <!-- 云图/等值线图 -->
           <el-dialog v-model="dialog.clouddialog" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
-            :before-close="handleClose" width="800" class="dialog_style bgcolor tianjia sel cloudChart" style="height: 72%;">
+            :before-close="handleClose" width="700" class="dialog_style bgcolor tianjia sel cloudChart" style="height: 500px;overflow: auto;">
             <template #header="{ titleId, titleClass }">
               <div class="my-header ">
                 <h4 :id="titleId" :class="titleClass">云图/等值线显示</h4>
@@ -885,7 +885,10 @@
                   </el-col>
                 </el-row>
               </div>
-              <cloudChart/>
+              <div style="height: 400px;overflow: auto;">
+                <cloudChart/>
+              </div>
+              
             </div>
           </el-dialog>
           <!-- 云图二级弹窗 -->
@@ -899,8 +902,8 @@
           :modal-append-to-body="false"
           modal-class="summary-dlg"
           :before-close="handleClose"
-          width="600"
-          class="dialog_class bgcolor tianjia"
+          width="500"
+          class="dialog_class bgcolor tianjia "
           
           >
             <template #header="{ titleId, titleClass }">
@@ -967,7 +970,7 @@
           <!-- 气动分析Xfoil、ADflow -->
           <el-dialog v-model="dialog.XfAD" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
-            :before-close="handleClose" width="860" class="dialog_class bgcolor tianjia sel colortext">
+            :before-close="handleClose" width="700" class="dialog_class bgcolor tianjia sel colortext">
 
             <template #header="{ titleId, titleClass }">
               <div class="my-header ">
@@ -1000,7 +1003,7 @@
           <!-- CST -->
           <el-dialog v-model="dialog.CSTt" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
-            :before-close="handleClose" width="840" class="dialog_class bgcolor colortext tianjia sel">
+            :before-close="handleClose" width="730" class="dialog_class bgcolor colortext tianjia sel">
 
             <template #header="{ titleId, titleClass }">
               <div class="my-header ">
@@ -1042,7 +1045,7 @@
              <!-- 气动分析CST、FFD -->
              <el-dialog v-model="dialog.cstffd" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
-            :before-close="handleClose" width="1000" class="dialog_class bgcolor tianjia sel colortext">
+            :before-close="handleClose" width="900" class="dialog_class bgcolor tianjia sel colortext">
 
             <template #header="{ titleId, titleClass }">
               <div class="my-header ">
@@ -1196,7 +1199,7 @@
                  <!-- 单独的ADflow -->
                  <el-dialog v-model="dialog.isADflow" align-center :modal="false" :close-on-click-modal="false"
             :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
-            :before-close="handleClose" width="630" class="dialog_class bgcolor tianjia sel colortext">
+            :before-close="handleClose" width="540" class="dialog_class bgcolor tianjia sel colortext">
 
             <template #header="{ titleId, titleClass }">
               <div class="my-header ">
@@ -1319,8 +1322,7 @@
                   </div>
                 </div>
                 <div class="main_model" v-show='flowshow'>
-                  <vuefindex ref="vuefval" :Xfiol="dialog.Xfiol" :jboptimizer="dialog.jboptimizer"
-                    :optimizer="dialog.optimizer" @optimizerfalse="optimizerfalse($event)"></vuefindex>
+                  <vuefindex ref="vuefval" @optimizerfalse="optimizerfalse($event)"></vuefindex>
                 </div>
                 <div class="maxh221">
                   <!-- 中间部分 -->
@@ -1776,6 +1778,10 @@ let input3=ref()
 let eid = ref('');//进步优化器的eid
 let logs = ref("");
 let pid = ref("");
+let pythonwid = ref();
+let youhuaqiwid = ref();
+let canshuhuawid = ref();
+let qidongyouhuawid = ref();
 let fid = ref('');
 let conid = ref('');
 let tableval = ref();
@@ -2243,6 +2249,7 @@ const handleClick = (tab, event) => {
 
   tabactive.value = tab.props.name;
   if (tabactive.value == 'User') {
+    vuefval.value.logToObject1();
     router.replace({ path: '/' })
   } else {
 
@@ -2316,37 +2323,39 @@ const handleNodeClick = (data) => {
 
 const optimizerfalse = (val) => {
   console.log('双击',val);
-  if (val == '优化器') {
+  const name = val.name;
+  const wid = val.wid;
+  if (name == '优化器') {
     // dialog.value.optimizer = true;
     activeadf.value='代理优化器';
-    initoptimize();
+    initoptimize(wid);
     dialog.value.optgroup = true;
-  } else if (val == '参数化') {
+  } else if (name == '参数化') {
     activeadf.value='CST';
-    initcstffds();
+    initcstffds(wid);
     dialog.value.cstffd = true;
-  }else if (val == '气动分析') {
+  }else if (name == '气动分析') {
     activeadf.value='Xfoil'
-    intxfoiladflow();
+    intxfoiladflow(wid);
     dialog.value.XfAD = true;
-  } else if (val == '进化优化器') {
+  } else if (name == '进化优化器') {
     activeadf.value='进化优化器';
     dialog.value.jboptimizer = true;
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Joptimizeref.value) {
         // 调用 Joptimize 的 getoptimize 方法
-        Joptimizeref.value.getoptimize(pid.value);
+        Joptimizeref.value.getoptimize(pid.value,wid);
       }
     });
-  } else if (val == '代理优化器') {
+  } else if (name == '代理优化器') {
     activeadf.value='代理优化器';
     // dialog.value.optgroup = true;
     dialog.value.dboptimizer = true;
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Doptimizeref.value) {
-        Doptimizeref.value.getDoptimize(pid.value);
+        Doptimizeref.value.getDoptimize(pid.value,wid);
       }
     });
   } 
@@ -2355,67 +2364,67 @@ const optimizerfalse = (val) => {
   //   dialog.value.Xfiol = true;
 
   // }
-  else if(val == '梯度优化器'){
+  else if(name == '梯度优化器'){
     activeadf.value='梯度优化器';
     dialog.value.tboptimizer = true;
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Toptimizeref.value) {
-        Toptimizeref.value.getToptimize(pid.value);
+        Toptimizeref.value.getToptimize(pid.value,wid);
       }
     });
-  }else if(val == 'CST'){
+  }else if(name == 'CST'){
    /// dialog.value.CSTt = true;
     activeadf.value='CST';
     dialog.value.CSTt = true;
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Cstref.value) {
-        Cstref.value.getcst(pid.value);
+        Cstref.value.getcst(pid.value,wid);
       }
     });
-  }else if(val == 'FFD'){
+  }else if(name == 'FFD'){
    /// dialog.value.CSTt = true;
     activeadf.value='FFD';
     dialog.value.ffdt = true;
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Ffdref.value) {
-        Ffdref.value.getffds(pid.value);
+        Ffdref.value.getffds(pid.value,wid);
       }
     });
   }
-  else if(val == 'ADflow'){
+  else if(name == 'ADflow'){
    // adfhandleClick();
    activeadf.value='ADflow';
    dialog.value.isADflow = true;
    nextTick(() => {
       // 确保 ref 已经初始化
       if (ADflowref.value) {
-        ADflowref.value.getadflow(pid.value);
+        ADflowref.value.getadflow(pid.value,wid);
       }
     });
-  }else if(val == 'Xfoil'){
+  }else if(name == 'Xfoil'){
   //  activeadf.value='Xfiol';
    dialog.value.Xfiol = true;
    nextTick(() => {
       // 确保 ref 已经初始化
       if (Xfoilref.value) {
-        Xfoilref.value.getxfoil(pid.value);
+        Xfoilref.value.getxfoil(pid.value,wid);
       }
     });
-  }else if(val == 'TACS'){
+  }else if(name == 'TACS'){
     dialog.value.Taxs = true;
-  }else if(val == '模版'){
+  }else if(name == '模版'){
     dialog.value.optgroup = true;
     activeadf.value='代理优化器';
-  }else if(val == 'Python'){
+  }else if(name == 'Python'){
     dialog.value.Pythonshow = true;
-    initPython();
-  }else if(val == 'FUM to FEM'){
+    initPython(wid);
+  }else if(name == 'FUM to FEM'){
     dialog.value.fsidialog = true;
     
-  }else if(val == 'Flight'){
+  }else if(name == 'Flight'){
     dialog.value.flightdialog = true;
     
   }
@@ -2436,18 +2445,22 @@ const optimizerfalse = (val) => {
 }
 
 // 优化器窗口初始化
-const initoptimize = () => {
+const initoptimize = (nowid) => {
+  youhuaqiwid.value = nowid;
   const params1 = {
     transCode:'MDO0018',
     pid: pid.value,
+    wid: youhuaqiwid.value
   }
   const params2 = {
     transCode:'MDO0031',
     pid: pid.value,
+    wid: youhuaqiwid.value
   }
   const params3 = {
     transCode:'MDO0033',
     pid: pid.value,
+    wid: youhuaqiwid.value
   }
   Promise.all([
     request(params1),
@@ -2486,14 +2499,17 @@ const initoptimize = () => {
 }
 
 // CST/FFD窗口初始化
-const initcstffds = () => {
+const initcstffds = (nowid) => {
+  canshuhuawid.value = nowid;
   const params1 = {
     transCode:'MDO0040',
     pid: pid.value,
+    wid: canshuhuawid.value
   }
   const params2 = {
     transCode:'MDO0043',
     pid: pid.value,
+    wid: canshuhuawid.value
   }
   Promise.all([
     request(params1),
@@ -2521,14 +2537,17 @@ const initcstffds = () => {
 }
 
 // Xfoil/ADflow窗口初始化
-const intxfoiladflow = () => {
+const intxfoiladflow = (nowid) => {
+  qidongyouhuawid.value = nowid;
   const params1 = {
     transCode:'MDO0046',
     pid: pid.value,
+    wid: qidongyouhuawid.value
   }
   const params2 = {
     transCode:'MDO0049',
     pid: pid.value,
+    wid: qidongyouhuawid.value
   }
   Promise.all([
     request(params1),
@@ -2556,11 +2575,13 @@ const intxfoiladflow = () => {
 }
 
 // Python窗口初始化
-const initPython = () => {
+const initPython = (nowid) => {
   console.log('Pythonchushihua');
+  pythonwid.value = nowid;
   const param = {
     transCode: 'MDO0036',
     pid: pid.value,
+    wid: pythonwid.value
   };
   
   request(param).then((res) => {
@@ -2571,7 +2592,7 @@ const initPython = () => {
       textarea1.value = res.ptython;
     }
   }).catch((err) => {
-    console.error('请求失败:', err);
+    console.error('Python内容初始化失败');
   });
 };
 
@@ -2581,12 +2602,16 @@ const pythonSubmit = () => {
   const param = {
     transCode:'MDO0037',
     pid: pid.value,
+    wid: pythonwid.value,
     python: textarea1.value,
   }
   request(param).then((res) => {
-    console.log('Python确认按钮提交:', res);
+    ElMessage({
+        message: '保存成功',
+        type: 'success',
+      })
   }).catch((err) => {
-    console.error('请求失败:', err);
+    ElMessage.error('保存失败')
   });
 }
 
@@ -2979,9 +3004,11 @@ const curveLine2 = () => {
   }
   request(params)
     .then((res) => {
-      curvedata.value = JSON.stringify(res.rows);
-      // console.log(curvedata.value);
-      processMonitor1ref.value.getshuju(curvedata.value);
+      if (res.rows && res.rows.length > 0) {
+        curvedata.value = JSON.stringify(res.rows);
+        // console.log(curvedata.value);
+        processMonitor1ref.value.getshuju(curvedata.value);
+      } 
     })
     .catch((err) => {
       ElMessage.error(err.returnMsg)
@@ -2995,12 +3022,16 @@ const curveLine3 = () => {
   }
   request(params)
     .then((res) => {
-      curvedata.value = JSON.stringify(res.rows);
-      // console.log(curvedata.value);
-      processMonitor2ref.value.getshuju(curvedata.value);
+      // 检查返回的数据是否为空
+      if (res.rows && res.rows.length > 0) {
+        curvedata.value = JSON.stringify(res.rows);
+        // console.log(curvedata.value);
+        processMonitor2ref.value.getshuju(curvedata.value);
+      } 
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      // 错误处理
+      ElMessage.error(err.returnMsg);
     })
 }
 
@@ -3390,13 +3421,13 @@ const devise = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '设计变量保存成功',
         type: 'success',
       })
       getissue();
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('设计变量保存失败')
     })
 }
 //约束的添加restrain
@@ -3409,13 +3440,13 @@ const restrain = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '约束条件保存成功',
         type: 'success',
       })
       getyueshu();
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('约束条件保存失败')
     })
 }
 //优化目标接口
@@ -3428,13 +3459,13 @@ const funlistaa = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '优化目标保存成功',
         type: 'success',
       })
       getmub();
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('优化目标保存失败')
     })
 }
 //初始化
@@ -3890,52 +3921,65 @@ const adfhandleClick=(tab,event)=>{
       // 确保 ref 已经初始化
       if (Joptimizeref.value) {
         // 调用 Joptimize 的 getoptimize 方法
-        Joptimizeref.value.getoptimize(pid.value);
+        Joptimizeref.value.getoptimize(pid.value,youhuaqiwid.value);
       }
     });
   }else if(tab.props.name === '代理优化器'){
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Doptimizeref.value) {
-        Doptimizeref.value.getDoptimize(pid.value);
+        Doptimizeref.value.getDoptimize(pid.value,youhuaqiwid.value);
       }
     });
   }else if(tab.props.name === '梯度优化器'){
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Toptimizeref.value) {
-        Toptimizeref.value.getToptimize(pid.value);
+        Toptimizeref.value.getToptimize(pid.value,youhuaqiwid.value);
       }
     });
   }
 }
 
-const getaddsave = () => {
+const getaddsave = (nowid) => {
   if (Joptimizeref.value && typeof Joptimizeref.value.getaddsave === 'function') {
-    Joptimizeref.value.getaddsave();
+    if(nowid){
+      Joptimizeref.value.getaddsave(pid.value,nowid);
+    }else{
+      Joptimizeref.value.getaddsave(pid.value);
+    }
+    
   }
 }
 
-const getDaddsave = () => {
+const getDaddsave = (nowid) => {
   if (Doptimizeref.value && typeof Doptimizeref.value.getaddDsave === 'function') {
-    Doptimizeref.value.getaddDsave();
+    if(nowid){
+      Doptimizeref.value.getaddDsave(pid.value,nowid);
+    }else{
+      Doptimizeref.value.getaddDsave(pid.value);
+    }
   }
 }
 
-const getTaddsave = () => {
+const getTaddsave = (nowid) => {
   if (Toptimizeref.value && typeof Toptimizeref.value.getaddTsave === 'function') {
-    Toptimizeref.value.getaddTsave();
+    if(nowid){
+      Toptimizeref.value.getaddTsave(pid.value,nowid);
+    }else{
+      Toptimizeref.value.getaddTsave(pid.value);
+    }
   }
 }
 
 
 const getSave = (ref) => {
   if (ref == '进化优化器'){
-    getaddsave();
+    getaddsave(youhuaqiwid.value);
   }else if(ref == '代理优化器'){
-    getDaddsave();
+    getDaddsave(youhuaqiwid.value);
   }else if(ref == '梯度优化器'){
-    getTaddsave();
+    getTaddsave(youhuaqiwid.value);
   }
 }
 
@@ -3948,14 +3992,14 @@ const adfhandleClick2=(tab,event)=>{
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Cstref.value) {
-        Cstref.value.getcst(pid.value);
+        Cstref.value.getcst(pid.value,canshuhuawid.value);
       }
     });
   }else if(tab.props.name === 'FFD'){
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Ffdref.value) {
-        Ffdref.value.getffds(pid.value);
+        Ffdref.value.getffds(pid.value,canshuhuawid.value);
       }
     });
   }
@@ -3963,19 +4007,27 @@ const adfhandleClick2=(tab,event)=>{
 
 
 // 单独cst保存
-const cstok=()=>{
- // cstnum.value='';
- if(Cstref.value){
-  Cstref.value.getcstsave();
+const cstok=(nowid)=>{
+  // cstnum.value='';
+  if(Cstref.value){
+    if(nowid){
+      Cstref.value.getcstsave(pid.value,nowid);
+    }else{
+      Cstref.value.getcstsave(pid.value);
+    }
   }
   dialog.value.CSTt = false;
 
 }
 // 单独ffd保存
-const ffdok=()=>{
+const ffdok=(nowid)=>{
 
    if(Ffdref.value){
-    Ffdref.value.getffdsave();
+    if(nowid){
+      Ffdref.value.getffdsave(pid.value,nowid);
+    }else{
+      Ffdref.value.getffdsave(pid.value);
+    }
     }
     dialog.value.ffdt = false;
   
@@ -3983,9 +4035,9 @@ const ffdok=()=>{
 // cstffd保存
 const getCstFfdsave = (activeadf) => {
   if (activeadf == 'CST') {
-    cstok();
+    cstok(canshuhuawid.value);
   } else if (activeadf == 'FFD') {
-    ffdok();
+    ffdok(canshuhuawid.value);
   }
 }
 
@@ -3997,40 +4049,47 @@ const adfhandleClick3=(tab,event)=>{
     nextTick(() => {
       // 确保 ref 已经初始化
       if (Xfoilref.value) {
-        console.log('pid-0:',pid.value)
-        Xfoilref.value.getxfoil(pid.value);
+        Xfoilref.value.getxfoil(pid.value,qidongyouhuawid.value);
       }
     });
   }else if(tab.props.name === 'ADflow'){
     nextTick(() => {
       // 确保 ref 已经初始化
       if (ADflowref.value) {
-        ADflowref.value.getadflow(pid.value);
+        ADflowref.value.getadflow(pid.value,qidongyouhuawid.value);
       }
     });
   }
 }
 
 // xfoil保存
-const xfoilok=()=>{
+const xfoilok=(nowid)=>{
   if(Xfoilref.value){
-    Xfoilref.value.getxfoilsave();
+    if(nowid){
+      Xfoilref.value.getxfoilsave(pid.value,nowid);
+    }else{
+      Xfoilref.value.getxfoilsave(pid.value);
+    }
   }
 }
 
 // adflow保存
-const adflowok=()=>{
+const adflowok=(nowid)=>{
   if(ADflowref.value){
-    ADflowref.value.getadflowsave();
+    if(nowid){
+      ADflowref.value.getadflowsave(pid.value,nowid);
+    }else{ 
+      ADflowref.value.getadflowsave(pid.value);
+    }
   }
 }
 
 // xfoiladflow保存
 const getXfoilAdflowsave = (activeadf) => {
   if (activeadf == 'Xfoil') {
-    xfoilok();
+    xfoilok(qidongyouhuawid.value);
   } else if (activeadf == 'ADflow') {
-    adflowok();
+    adflowok(qidongyouhuawid.value);
   }
 }
 
@@ -4146,19 +4205,24 @@ const lbjkheaderCellClassName = ({ columnIndex }) => {
 }
 
 .footerTitle .span {
-  width: 150px;
+  width: 130px;
   height: 32px;
   line-height: 40px;
-  padding: 0 20px;
+  padding: 0 10px;
   box-sizing: border-box;
   cursor: default;
   position: relative;
   font-size: 14px;
   color: #333333;
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
+}
+
+.footerTitle .span .el-image {
+  margin-left: 10px;
 }
+
 .footerTitle .span span{
-  padding-left:20px;
+  padding-left:10px;
 }
 .footerText .el-textarea__inner {
   width: 100%;
@@ -4187,7 +4251,7 @@ const lbjkheaderCellClassName = ({ columnIndex }) => {
    display: none !important;
   } */
 .custom-text {
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
   font-size: 16px;
   color: rgba(51, 51, 51, 1);
   line-height: 24px;
@@ -4198,7 +4262,7 @@ const lbjkheaderCellClassName = ({ columnIndex }) => {
 }
 
 .el-tree .el-tree-node__children .custom-text {
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
   font-size: 14px;
   /* 这里设置为20px,你可以根据需求调整大小 */
 color: rgba(51, 51, 51, 0.8);
@@ -4271,21 +4335,22 @@ color: #2267B1;
   align-items: center;
 }
 .youhualog ul li {
-  font-family: 'Source Sans-Regular';
+  font-family: 'Microsoft YaHei';
   /* flex: 1; */
   /* border-left: 1px solid #B3B3B3; */
   font-size: 14px;
   height: 32px;
   /* line-height: 40px; */
-  width: 140px;
+  width: 120px;
   display: flex;
   /* justify-content: center; */
   align-items: center;
   padding:0 10px;
+  cursor: default;
 }
 
 .youhualog ul li span {
-  margin-left: 20px;
+  margin-left: 10px;
 }
 
 .footer-content {
@@ -4319,7 +4384,7 @@ color: #2267B1;
 .dibu .el-form-item_label {
   color: #333333;
   font-size: 14px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 
 .dibu .btncolor {
@@ -4353,21 +4418,22 @@ color: #2267B1;
 
 .classtable .el-table td.el-table__cell, .classtable .el-table th.el-table__cell{
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .footer-content .classtable .el-table td.el-table__cell,.footer-content .classtable .el-table th.el-table__cell {
   color: #333333;
   font-size: 14px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 
 .classtable .el-table td.el-table__cell div {
   height: 31px;
   overflow: hidden;
-  /* display: flex; */
+  display: flex;
   align-items: center; /* 垂直居中 */
+  justify-content: center; /* 水平居中 */
 }
 
 .classtable .el-table td.el-table__cell,
@@ -4433,7 +4499,7 @@ color: #2267B1;
 .jindutiao .percentage-value {
   font-size: 13px;
   color: #333333;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 .cstleft{
   width:50%;
@@ -4447,7 +4513,7 @@ color: #2267B1;
 .dialog_class {
   color: #333333;
   font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 
 </style>

+ 13 - 9
src/views/home/newfile.vue

@@ -79,10 +79,10 @@
 </template>
 <div>
   <el-form-item label="名称:" >
-        <el-input v-model="newfile.name" class="w-50 m-2" placeholder="请输入" />
+        <el-input v-model="newfile.name" class="w-50 m-2" placeholder="请输入" maxlength="100"/>
     </el-form-item>
     <el-form-item label="描述:">
-        <el-input v-model="newfile.remark" class="w-50 m-2" placeholder="请输入" />
+        <el-input v-model="newfile.remark" class="w-50 m-2" placeholder="请输入" maxlength="500"/>
     </el-form-item>
 </div>
     <template #footer>
@@ -249,7 +249,7 @@ const modeladd=()=>{
     request(params)
         .then((res) => {
           ElMessage({
-                  message: res.returnMsg,
+                  message: "工程创建成功!",
                   type: 'success',
               })
               modelflow.value=res;
@@ -286,19 +286,23 @@ const clickimg=(data,index,id)=>{
     }
 }
 .hoveredImageContainer {
-  height: 220px;
-  width: 180px;
+  height: 120%;
+  width: 120%;
   position: absolute;
-  left: calc(100% + 5px); /* 或者调整到合适的距离 */
-  top: -10px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  left: calc(100% + 0px); /* 或者调整到合适的距离 */
+  top: -15px;
   z-index: 10; /* 确保悬浮图片在其他内容之上 */
 }
 
 .showImgDiv {
+  padding-top:5px;
   position: relative; /* 确保 .hoveredImageContainer 相对于 .showImgDiv 定位 */
 }
 .modelStyle{
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
   font-size: 12px;
   color: #333333;
   text-align: center;
@@ -306,7 +310,7 @@ const clickimg=(data,index,id)=>{
 </style>
 <style>
 .custom-collapse .el-collapse-item__header {
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
   font-weight: 500;
   font-size: 14px;
   color: #1A1A1A ;

+ 30 - 7
src/views/home/querylist.vue

@@ -1,11 +1,11 @@
 <template>
     <!-- 打开查询 -->
     <h3 class="opt_tltie"></h3>
-    <div>
+    <div style="width: 100%;height: 100%;overflow: auto;">
         <div class="search-container">
             <el-input
             v-model="gd.searchtag"
-            placeholder="请输入项目名称"
+            placeholder="请输入工程名称"
             class="search-input"
             >
             </el-input>
@@ -13,7 +13,7 @@
         </div>
         <el-table :data="tableData" 
             @row-click="handlerow($event)" 
-            :row-style="{ height: '100px', fontSize: '14px', color: '#1A1A1A', fontWeight: '500',fontFamily: 'Source Sans Pro-Regular'}"
+            :row-style="{ height: '100px', fontSize: '14px', color: '#1A1A1A', fontWeight: '500',fontFamily: 'Microsoft YaHei'}"
             style="width: 100%"
             :header-cell-style="headerCellStyle">
             <el-table-column prop="image" label="模板" width="230">
@@ -41,7 +41,7 @@
             </el-table-column>
             <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
                 <template #default="scope">
-                  <el-button size="small" type="text" icon="el-icon-delete" @click.stop="handdelete(scope.$index, scope.row)">删除</el-button>
+                  <el-button size="small" type="text" icon="el-icon-delete" @click.stop="confirmDelete(scope.$index, scope.row)">删除</el-button>
                 </template>
               </el-table-column>
         </el-table>
@@ -67,7 +67,7 @@
 import { ref, onMounted, reactive, } from "vue";
 import { RouterView, RouterLink,useRouter } from "vue-router"
 import { request, uploadFile } from "@/utils/request";
-import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
+import { ElMessage, ElButton, ElDialog, ElSelect, ElMessageBox } from 'element-plus'
 import { Calendar, Search } from "@element-plus/icons-vue";
 import * as echarts from 'echarts';
 import moment from 'moment';
@@ -107,6 +107,28 @@ const getsensor = () => {
 const searchclick = () => {
     getsensor();
 }
+// 删除提示
+const confirmDelete = (index, row) => {
+  ElMessageBox.confirm(
+    '确定要删除该项吗?删除后不可恢复!',
+    '删除确认',
+    {
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      handdelete(index, row)
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '已取消删除',
+      })
+    })
+}
+
 //删除
 const handdelete=(e,row)=>{
     console.log(row)
@@ -133,14 +155,15 @@ const handleCurrentChange2=(val)=>{
 }
 //点击列表
 const handlerow=(val)=>{
-    router.push({ path: "/home",query:{id:'2',pid:val.pid}});
+    // console.log("val的值:",val)
     sessionStorage.setItem("objlist",JSON.stringify(val));
+    router.push({ path: "/home",query:{id:'2',pid:val.pid}});
 }
 
 const formatDate = datetime => !datetime ? '' : moment(datetime).format('YYYY-MM-DD HH:mm:ss');
 
 const headerCellStyle = () => {
-    return {color: '#1A1A1A', fontFamily: 'Source Sans Pro-Regular', fontWeight: '500'}
+    return {color: '#1A1A1A', fontFamily: 'Microsoft YaHei', fontWeight: '500'}
 }
 </script>
 <style lang="scss" scoped>

+ 4 - 3
src/views/openpage.vue

@@ -67,7 +67,8 @@ const activeIndex=computed(()=>{
 
 const gohome = () => {
   let objlist = JSON.parse(sessionStorage.getItem("objlist"));
-  router.push({path:"/home",query:{pid:objlist.pid}});
+  // console.log("objlist的值:",objlist);
+  router.push({path:"/home",query:{id:'2',pid:objlist.pid}});
 }
 
 </script>
@@ -92,7 +93,7 @@ span{
   border: none;
   padding: 8px 15px 8px 7px;
   font-size: 18px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
 }
 }
 
@@ -135,7 +136,7 @@ span{
   .el-menu-item{
     color: #fff;
     padding: 0 45px !important;
-    font-family: 'Source Sans-Regular';
+    font-family: 'Microsoft YaHei';
     font-size: 16px;
   }
 }

+ 90 - 27
src/views/titlecomponent/ADflow.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="XFpdding">
+  <div class="XFpdding" style="height: 400px">
     <ul>
       <li
         class="item"
@@ -8,7 +8,7 @@
         :class="{ active: currentTab1 === index }"
         @click="selectTab1(index)"
       >
-        <img :src="tab.imgSrc"/>
+        <img :src="tab.imgSrc" style="width: 22px;"/>
         {{ tab.name }}
       </li>
     </ul>
@@ -16,7 +16,7 @@
     <!-- 执行 -->
     <div
       class="eldesign classtable"
-      style="margin-top: 10px;height: 400px;"
+      style="margin-top: 10px;"
       v-if="currentTab1 == '0'"
     >
       <div style="display: flex;flex-direction: column;">
@@ -69,7 +69,7 @@
     <!-- 来流参数 v-show="currentTab=='0'"-->
     <div v-show="currentTab1 == '1'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="inParams" border style="width: 100%; height: 400px" :header-cell-class-name="headerCellClassName">
+        <el-table :data="inParams" border style="width: 100%; " :header-cell-class-name="headerCellClassName">
           <el-table-column type="index" width="70" label="编号" />
           <el-table-column prop="name" label="参数名称">
             <!-- <template #default="{ row }">
@@ -98,13 +98,13 @@
     <!-- 设置参数 -->
 
     <div
-      class="eldesign classtable dlheight"
-      style="margin-top: 10px"
+      class="eldesign classtable"
+      style="margin-top: 10px; height: 340px;overflow: auto;"
       v-show="currentTab1 == '2'"
     >
       <el-form-item label="分析对象:" :label-width="formLabelWidth1">
         <el-select
-          v-model="adflowvalue.anobj"
+          v-model="adflowvalue.proname"
           :suffix-icon="CaretBottom"
           placeholder="请选择"
         >
@@ -272,16 +272,16 @@
         <el-row>
         <el-col :span="12">
           <el-checkbox v-model="cl" :false-label="0"
-          :true-label="1" label="升力系数Cl" size="large" />
+          :true-label="1" label="升力系数Cl" style="height: 32px;" />
           <el-checkbox v-model="resrho" :false-label="0"
-          :true-label="1" label="密度残差Resrho" size="large" />
+          :true-label="1" label="密度残差Resrho" style="height: 32px;" />
       
         </el-col>
         <el-col :span="12">
           <el-checkbox v-model="cd" :false-label="0"
-          :true-label="1" label="阻力系数Cd" size="large" />
+          :true-label="1" label="阻力系数Cd" style="height: 32px;" />
           <el-checkbox v-model="cmz" :false-label="0"
-          :true-label="1" label="力矩系数Cm" size="large" />
+          :true-label="1" label="力矩系数Cm" style="height: 32px;" />
         </el-col>
       </el-row>
       </el-form-item>
@@ -310,16 +310,41 @@
           </el-radio-group>  
       </el-form-item>
       <el-form-item label="输出切面信息:" :label-width="formLabelWidth1">
-          <el-radio-group v-model="radioq">
+          <el-radio-group v-model="writeslicesolution" @change="writeslicesolutionChange">
             <el-radio :value="1" :label="1">是</el-radio>
             <el-radio :value="0" :label="0">否</el-radio>
           </el-radio-group>  
       </el-form-item>
+      <el-form-item v-show="qiemiansetshow" label="切面法相方向:" :label-width="formLabelWidth1">
+        <el-select
+          v-model="spandirection"
+          :suffix-icon="CaretBottom"
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in spandirectionindexlist"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item v-show="qiemiansetshow" label="切面展向位置:" :label-width="formLabelWidth1">
+        <el-input
+          v-model="slices"
+          :step="100"
+          :min="0"
+          :max="1000"
+          controls-position="right"
+          placeholder="多个位置以逗号分隔"
+        />
+      </el-form-item>
     </div>
     <!-- 分析参数 v-show="currentTab=='0'"-->
     <div v-show="currentTab1 == '3'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="outParams" border style="width: 100%; height: 400px" :header-cell-class-name="headerCellClassName">
+        <el-table :data="outParams" border style="width: 100%; " :header-cell-class-name="headerCellClassName">
           <el-table-column type="index" width="70" label="编号" />
           <el-table-column prop="name" label="参数名称" >
           </el-table-column>
@@ -363,17 +388,20 @@ let percentage = ref(0);
 let uploadStatus = ref('');
 let isUploadSuccess = ref(true);
 let formLabelWidth3 = ref(120)
-let formLabelWidth1 = ref(170)
+let formLabelWidth1 = ref(180)
 let formLabelWidth200 = ref(200)
 let currentTab1 = ref(0)
 let pid = ref()
+let wid = ref()
 let adid = ref()
 let resrho = ref(1)
 let cl = ref(1)
 let cd = ref(1)
 let cmz = ref(1)
 let writetecplotsurfacesolution = ref(1)
-let radioq = ref(1)
+let spandirection = ref('x')
+let slices = ref("")
+let writeslicesolution = ref(1)
 let equationtype = ref("RANS")
 let equationtypelist = ref([
   { label: "RANS", value: "RANS" },
@@ -390,6 +418,11 @@ let liftindexlist = ref([
   { label: "y", value: 2 },
   { label: "z", value: 3 }
 ])
+let spandirectionindexlist = ref([
+  { label: "x", value: 'x' },
+  { label: "y", value: 'y' },
+  { label: "z", value: 'z' }
+])
 let inParams = ref([
   {
     code: "mach",
@@ -524,12 +557,12 @@ let outParams2 = ref([
 let adflowvalue = ref({
   gridfile: "",
   fid:'',
-  anobj:'CRM',
+  
   countp:'1',
   NewtonKrylov:1,
   ANK:1,
-  proname: "巡航工况",
-  temperature: 288.15,
+  proname: "CRM",
+  temperature: '288.15',
   length: 1,
   area: 1,
   momx: 0.25,
@@ -538,7 +571,7 @@ let adflowvalue = ref({
   mgcycle: "sg",
   ncycles: 500,
   l2convergence: 1.0e-5,
-  l2convergencecoarse: 1.0e-4
+  l2convergencecoarse: 1.0e-4,
 })
 
 
@@ -572,6 +605,16 @@ const headerCellClassName = ({ column }) => {
   return '';
 };
 
+let qiemiansetshow = ref(true)
+const writeslicesolutionChange = (value) => {
+  if (value === 1) {
+    qiemiansetshow.value = true
+  } else {
+    qiemiansetshow.value = false
+  } 
+}
+
+
 const isairfoilChange = (value) => {
   if (value === 1) {
     outParams.value = outParams1.value
@@ -597,7 +640,10 @@ const convertToStringArray = (result, Data) => {
       row.value === null || row.value === undefined || row.value === ""
         ? " "
         : row.value
-    const flag = row.flag || " "
+    const flag =
+      row.flag === null || row.flag === undefined // 仅在 null 或 undefined 时替换为空格
+        ? " "
+        : row.flag
 
     // 将字段连接为一个以逗号分隔的字符串
     return `${code},${name},${value},${flag}`
@@ -606,22 +652,28 @@ const convertToStringArray = (result, Data) => {
   return result
 }
 
-const getadflow = (id) => {
-  pid.value = id
+const getadflow = (id,nowid) => {
+  pid.value = id;
+  if(nowid){
+    wid.value = nowid;
+  }
+  console.log('getadflow:',pid.value,wid.value)
   const params = {
     transCode: "MDO0049",
-    pid: pid.value
+    pid: pid.value,
+    wid: wid.value
   }
   request(params)
     .then((res) => {
       if (res.hasOwnProperty("adid")) {
         getadflowAssign(res);
+        writeslicesolutionChange(writeslicesolution.value);
         console.log('adid flow:',adid.value)
         emitter.emit("adidFromadflow", adid);
       }
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('ADflow初始化失败')
     })
 }
 
@@ -651,12 +703,20 @@ const getadflowAssign = (data) => {
   adflowvalue.value.l2convergencecoarse = data.l2convergencecoarse
   inParams.value = data.inParams
   outParams.value = data.outParams
+  writeslicesolution.value = data.writeslicesolution
+  spandirection.value = data.spandirection
+  slices.value = data.slices
 }
 
-const getadflowsave = () => {
+const getadflowsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   const params = {
     transCode: "MDO0050",
     pid: pid.value,
+    wid: wid.value,
     gridfile: adflowvalue.value.gridfile,
     fid: adflowvalue.value.fid,
     proname: adflowvalue.value.proname,
@@ -678,6 +738,9 @@ const getadflowsave = () => {
     ncycles: adflowvalue.value.ncycles,
     l2convergence: adflowvalue.value.l2convergence,
     l2convergencecoarse: adflowvalue.value.l2convergencecoarse,
+    writeslicesolution: writeslicesolution.value,
+    spandirection: spandirection.value,
+    slices: slices.value,
     checked: 1,
     inParams: convertToStringArray([], inParams.value),
     outParams: convertToStringArray([], outParams.value)
@@ -685,12 +748,12 @@ const getadflowsave = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '保存成功',
         type: "success"
       })
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('保存失败')
     })
 }
 // 更新文件名

+ 9 - 8
src/views/titlecomponent/Cloudsecond.vue

@@ -2,7 +2,7 @@
   <div class="cloudsecond">
     <!-- 文件选择 -->
     <div v-show="activesd.fileselect">
-      <el-form-item label="添加文件:" :label-width="formLabelWidth1" label-position="left">
+      <el-form-item label="添加文件:" :label-width="formLabelWidth3" label-position="left">
         <el-row style="width: 100%">
             <el-col :span="24">
               <el-input
@@ -71,7 +71,7 @@
       </div>
     </div>
     <!-- 云图 -->
-    <div v-show="activesd.cloud">
+    <div v-show="activesd.cloud" style="height: 450px; overflow: auto;">
       <div>
         <el-collapse v-model="activeNames">
           <el-collapse-item  name="1">
@@ -377,6 +377,7 @@ import { ref, onMounted, reactive, provide, nextTick } from "vue"
 import fileUploads from "../components/fileuploads.vue";
 const meshFileImgSrc = new URL("@/assets/img/open.png", import.meta.url).href;
 
+let formLabelWidth3 = ref(80)
 let formLabelWidth1 = ref(140)
 let formLabelWidth2 = ref(100)
 let cloudFileName = ref('');
@@ -556,8 +557,8 @@ const handleFileUploadSuccess = (data) =>{
 <style>
 .cloudsecond {
   color: #333333;
-  font-size: 16px;
-  font-family: 'Source Sans Pro-Regular';
+  font-size: 14px;
+  font-family: 'Microsoft YaHei';
 }
 
 .tabledomain {
@@ -567,7 +568,7 @@ const handleFileUploadSuccess = (data) =>{
 
 .cloudsecond .el-button, .cloudsecond .el-checkbox__label, .cloudsecond .el-input__inner{
   color: #333333;
-  font-size: 16px;
+  font-size: 14px;
 }
 
 .cloudsecond .el-select {
@@ -575,13 +576,13 @@ const handleFileUploadSuccess = (data) =>{
 }
 
 .cloudsecond .el-form-item__label {
-  font-size: 16px;
+  font-size: 14px;
   color: #333333;
-  font-family: 'Source Sans Pro-Regular' !important;
+  font-family: 'Microsoft YaHei' !important;
 }
 
 .el-collapse-item__header {
-  font-size: 16px;
+  font-size: 14px;
 
   
 }

+ 12 - 4
src/views/titlecomponent/Doptimize.vue

@@ -186,6 +186,7 @@ let youhua = ref({
   pm: 0.05
 })
 let pid = ref();
+let wid = ref();
 let suid = ref();
 let cstnum=ref('');
 let yslist = ref([
@@ -292,11 +293,13 @@ const handlesurromodChange = (val) => {
   }
 }
 
-const getDoptimize = (id) => {
+const getDoptimize = (id,nowid) => {
   pid.value = id;
+  wid.value = nowid;
   const params = {
     transCode: 'MDO0031',
     pid: pid.value,
+    wid: wid.value,
   }
   request(params).then((res) => {
     console.log('chushihua')
@@ -346,10 +349,15 @@ const getDoptimizeAssign = (data) => {
 }
 
 //代理优化器,添加保存
-const getaddDsave = () => {
+const getaddDsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   const params = {
     transCode: 'MDO0032',
     pid: pid.value,
+    wid: wid.value,
     suid: suid.value,
     nsurro:nsurro.value,
     nkriging:n_kriging.value,
@@ -385,12 +393,12 @@ const getaddDsave = () => {
   }
   request(params).then((res) => {
     ElMessage({
-      message: res.returnMsg,
+      message: '保存成功',
       type: 'success'
     })
   })
   .catch((err) => {
-    ElMessage.error(err.returnMsg)
+    ElMessage.error('保存失败')
   })
 }
 defineExpose({

+ 1 - 1
src/views/titlecomponent/Flight.vue

@@ -8,7 +8,7 @@
         :class="{ active: currentTab1 === index }"
         @click="selectTab1(index)"
       >
-        <img :src="tab.imgSrc" style="width: 24px;margin-top: -8px;"/>
+        <img :src="tab.imgSrc" style="width: 22px;"/>
         {{ tab.name }}
       </li>
     </ul>

+ 12 - 4
src/views/titlecomponent/Joptimize.vue

@@ -76,6 +76,7 @@ operator: '倒立变异',
 gpu: 'NO'
 })
 let pid=ref();
+let wid=ref();
 let eid=ref();
 let cstnum=ref('');
 let yslist = ref([
@@ -106,11 +107,13 @@ let addlist8 = ref([
   { label: 'YES', value: 'YES' },
   { label: 'NO', value: 'NO' },
 ])
-const getoptimize = (id) => {
+const getoptimize = (id,nowid) => {
   pid.value=id;
+  wid.value = nowid
   const params = {
     transCode: 'MDO0018',
     pid: pid.value,
+    wid: wid.value
   }
   request(params)
     .then((res) => {
@@ -157,10 +160,15 @@ const getoptimizeAssign = (data) => {
 }
 
 //进化优化器 添加保存
-const getaddsave = () => {
+const getaddsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   const params = {
     transCode: 'MDO0019',
     pid: pid.value,
+    wid: wid.value,
     eid: eid.value,
     algorithm: youhua.value.algorithm,
     popsize: youhua.value.popsize,
@@ -178,12 +186,12 @@ const getaddsave = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '保存成功',
         type: 'success',
       })
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('保存失败')
     })
 }
 defineExpose({getoptimize,getoptimizeAssign,getaddsave});

+ 13 - 5
src/views/titlecomponent/Toptimize.vue

@@ -51,6 +51,7 @@ optimalitytolerance: 1e-4,
 verifylevel: '-1'
 })
 let pid = ref();
+let wid = ref();
 let grid = ref();
 let cstnum=ref('');
 let yslist = ref([
@@ -65,11 +66,13 @@ let tdlist= ref([
 { label: '目标+约束详细验证', value: '3' },
 
 ])
-const getToptimize = (id) => {
+const getToptimize = (id,nowid) => {
   pid.value = id;
+  wid.value = nowid;
   const params = {
     transCode: 'MDO0033',
     pid: pid.value,
+    wid: wid.value,
   }
   request(params).then((res) => {
     if (res.hasOwnProperty('grid')) {
@@ -105,11 +108,16 @@ const getToptimizeAssign = (data) => {
   youhua.value.verifylevel = data.verifylevel;
 }
 
-//代理优化器,添加保存
-const getaddTsave = () => {
+//梯度优化器,添加保存
+const getaddTsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   const params = {
     transCode: 'MDO0034',
     pid: pid.value,
+    wid: wid.value,
     grid: grid.value,
     algorithm: youhua.value.algorithm,
     majoriterationslimit: youhua.value.majoriterationslimit,
@@ -123,12 +131,12 @@ const getaddTsave = () => {
   request(params).then((res) => {
     pid.value = res.pid;
     ElMessage({
-      message: res.returnMsg,
+      message: '保存成功',
       type: 'success'
     })
   })
   .catch((err) => {
-    ElMessage.error(err.returnMsg)
+    ElMessage.error('保存失败')
   })
 }
 defineExpose({

+ 22 - 11
src/views/titlecomponent/Xfoil.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="XFpdding">
+  <div class="XFpdding" style="height: 400px">
     <ul>
       <li
         class="item"
@@ -8,14 +8,14 @@
         :class="{ active: currentTab === index }"
         @click="selectTab(index)"
       >
-        <img :src="tab.imgSrc" style="width: 24px;margin-top: -8px;"/>
+        <img :src="tab.imgSrc" style="width: 22px;"/>
         {{ tab.name }}
       </li>
     </ul>
     <!-- 来流参数 -->
     <div v-show="currentTab == '0'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="inParams" border style="width: 100%; height: 400px" :header-cell-class-name="headerCellClassName">
+        <el-table :data="inParams" border style="width: 100%; " :header-cell-class-name="headerCellClassName">
           <el-table-column type="index" width="70" label="编号"/>
           <!-- <el-table-column prop="code" width="70" label="编码" /> -->
           <el-table-column prop="name" label="参数名称">
@@ -44,10 +44,10 @@
     <!-- 分析参数 -->
     <div v-show="currentTab == '2'">
       <div class="eldesign classtable" style="margin-top: 10px">
-        <el-table :data="outParams" border style="width: 100%;height: 400px" :header-cell-class-name="headerCellClassName">
+        <el-table :data="outParams" border style="width: 100%;" :header-cell-class-name="headerCellClassName">
           <el-table-column type="index" width="70" label="编号" />
           <!-- <el-table-column prop="code" width="70" label="编码" /> -->
-          <el-table-column prop="name" label="参数名称">
+          <el-table-column prop="name" label="参数名称" show-overflow-tooltip>
             <!-- <template #default="{ row }">
               <el-input v-model="row.name" @change="handleEdit(row)" />
             </template> -->
@@ -72,7 +72,7 @@
     </div>
     <!-- 设置参数 -->
     <div v-show="currentTab == '1'">
-      <div class="eldesign classtable" style="margin-top: 10px;height: 400px">
+      <div class="eldesign classtable" style="margin-top: 10px;">
         <el-form-item label="分析对象:" :label-width="formLabelWidth1">
           <el-select
             v-model="xfoilvalue.anobj"
@@ -175,6 +175,7 @@ let checked3 = ref(true)
 let analyzed = ref('1')
 
 let pid = ref()
+let wid = ref()
 let xfid = ref()
 
 let xfoilvalue = ref({
@@ -317,12 +318,17 @@ const convertToStringArray = (result, Data) => {
 }
 
 
-const getxfoil = (id) => {
+const getxfoil = (id,nowid) => {
   pid.value = id;
+  if(nowid){
+    wid.value = nowid;
+  }
+  
   console.log('pid-1:',pid.value)
   const params = {
     transCode: "MDO0046",
     pid: pid.value,
+    wid: wid.value
   };
   request(params).then((res) => {
     if (res.hasOwnProperty("xfid")) {
@@ -331,7 +337,7 @@ const getxfoil = (id) => {
     }
   })
   .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('Xfoil初始化失败')
     })
 }
 
@@ -349,11 +355,16 @@ const getxfoilAssign = (data) => {
   outParams.value = data.outParams;
 }
 
-const getxfoilsave = () => {
+const getxfoilsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   // console.log("pid:",pid.value);
   const params = {
     transCode: "MDO0047",
     pid: pid.value,
+    wid: wid.value,
     iter: xfoilvalue.value.iter,
     ppar: xfoilvalue.value.ppar,
     cpwr: xfoilvalue.value.cpwr,
@@ -366,12 +377,12 @@ const getxfoilsave = () => {
   };
   request(params).then((res) => {
     ElMessage({
-        message: res.returnMsg,
+        message: '保存成功',
         type: 'success',
       })
   })
   .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('保存失败')
     })
 }
 

+ 14 - 6
src/views/titlecomponent/csts.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="XFpdding" style="height: 463px;">
+  <div class="XFpdding" style="height: 400px;">
     <div class="numberinput lefttext">
       <el-form>
         <div>
@@ -107,6 +107,7 @@ let formLabelWidth3 = ref(100)
 let formLabelWidth200 = ref(180)
 let cstn = ref("8")
 let pid = ref("")
+let wid = ref()
 let cstid = ref("")
 let cstvalue = ref({
   uppern1: "0.5",
@@ -194,12 +195,14 @@ const getupperlower = () => {
 
 
 //查询cst 
-const getcst = (id) => {
+const getcst = (id,nowid) => {
   pid.value=id;
+  wid.value = nowid;
   console.log('getcst:',pid.value)
   const params = {
     transCode: 'MDO0040',
     pid: pid.value,
+    wid: wid.value
   }
   request(params)
     .then((res) => {
@@ -215,7 +218,7 @@ const getcst = (id) => {
 
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error("CST初始化失败")
     })
 }
 
@@ -256,11 +259,16 @@ const getcstAssign = (data) => {
 }
 
 //cst 保存
-const getcstsave = () => {
+const getcstsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   getupperlower();
   const params = {
     transCode: 'MDO0041',
     pid: pid.value,
+    wid: wid.value,
     cstn: cstn.value,
     uppern1: cstvalue.value.uppern1,
     lowern1: cstvalue.value.lowern1,
@@ -273,12 +281,12 @@ const getcstsave = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '保存成功',
         type: 'success',
       })
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('保存失败')
     })
 }
 

+ 129 - 69
src/views/titlecomponent/ffds.vue

@@ -1,12 +1,11 @@
 <template>
-  <div class="XFpdding" style="height: 550px">
+  <div class="XFpdding" style="height: 400px;overflow: auto;">
     <div>
       <el-form-item label="FFD包围盒:" :label-width="formLabelWidth1">
         <el-input
           v-model="ffdvalue.fname"
           :max="20"
           controls-position="right"
-          @keydown.enter="keydownenter"
         >
           <template #append>
             <fileUploads
@@ -60,27 +59,28 @@
         </el-col>
       </el-row>
     </el-form-item>
-    <div class="classtable">
+    
+    <div class="classtable" style="margin-top: 20px;">
       <el-table
         :data="tableDatacst1"
-        style="width: 100%"
+        style="width: 100%;margin-bottom: 20px;"
         border
+        
         :header-cell-class-name="headerCellClassName"
       >
-        <el-table-column prop="axis" label="" width="60" />
+        <el-table-column prop="rowname" label="" width="100" />
         <el-table-column
-          v-for="(item, index) in tablecstHeaders"
-          :key="index"
+          v-for="(item,index) in tablecstHeaders" :key="index"
           :prop="item.prop"
-          :label="item.label"
-        >
-          <template #default="{ row }">
+          :label="item.label">
+          <template #default="{ row }"> 
             <el-input v-model="row[item.prop]" />
           </template>
         </el-table-column>
       </el-table>
     </div>
-    <div style="height: 260px">
+
+    <div style="height: 260px; overflow: hidden;">
       <cloudChart :data="xyzData" />
     </div>
   </div>
@@ -98,6 +98,7 @@ let formLabelWidth1 = ref("200")
 let xyzData = ref()
 
 let pid = ref()
+let wid = ref()
 let fid = ref()
 let ffdid = ref()
 let ffdvalue = ref({
@@ -109,30 +110,10 @@ let ffdvalue = ref({
 let order = ref(1)
 let vars = ref()
 let tableDatacst1 = ref([
-  {
-    axis: "Z1",
-    X1: "1",
-    X2: "2",
-    X3: "3",
-    X4: "4",
-    X5: "5",
-    X6: "6",
-    X7: "7",
-    X8: "8",
-    X9: "9"
-  },
-  {
-    axis: "Z2",
-    X1: "1",
-    X2: "2",
-    X3: "3",
-    X4: "4",
-    X5: "5",
-    X6: "6",
-    X7: "7",
-    X8: "8",
-    X9: "9"
-  }
+  { rowname: 'Y1Z1', X1: null, X2: null, X3: null, X4: null, X5: null, X6: null, X7: null, X8: null, X9: null },
+  { rowname: 'Y1Z2', X1: null, X2: null, X3: null, X4: null, X5: null, X6: null, X7: null, X8: null, X9: null },
+  { rowname: 'Y2Z1', X1: null, X2: null, X3: null, X4: null, X5: null, X6: null, X7: null, X8: null, X9: null },
+  { rowname: 'Y2Z2', X1: null, X2: null, X3: null, X4: null, X5: null, X6: null, X7: null, X8: null, X9: null }
 ])
 let tablecstHeaders = ref([
   { prop: "X1", label: "X1" },
@@ -156,15 +137,25 @@ const headerCellClassName = ({ columnIndex }) => {
   return ""
 }
 
+// for (let i = 0; i < yCount; i++) {
+//   for(let j = 0; j< zCount; j++) {
+//     rows.push({
+//     label: `Y${i + 1}Z${j + 1}`,
+//     prop: `Y${i + 1}Z${j + 1}`
+//     })
+//   }
+// }
+
 const generateTable = () => {
   console.log("generateTable")
 
-  // 获取X, Y, Z方向的数值
+  // 获取 X, Y, Z 方向的数值
   const xCount = Number(ffdvalue.value.nx)
   const yCount = Number(ffdvalue.value.ny)
   const zCount = Number(ffdvalue.value.nz)
+  console.log("xCount", xCount, "yCount", yCount, "zCount", zCount)
 
-  // 根据选中的参考坐标系来确定列名和行名
+  // 定义表格的列和行
   let columns = []
   let rows = []
 
@@ -174,62 +165,87 @@ const generateTable = () => {
         label: `X${i + 1}`,
         prop: `X${i + 1}`
       }))
-      rows = Array.from({ length: yCount }, (_, i) => ({
-        label: `Y${i + 1}`,
-        prop: `Y${i + 1}`
-      }))
+      rows = Array.from({ length: yCount * zCount }, (_, index) => {
+        const yIndex = Math.floor(index / zCount)
+        const zIndex = index % zCount
+        return {
+          label: `Y${yIndex + 1}Z${zIndex + 1}`,
+          prop: `Y${yIndex + 1}Z${zIndex + 1}`
+        }
+      })
       break
     case 1: // x-z-y
       columns = Array.from({ length: xCount }, (_, i) => ({
         label: `X${i + 1}`,
         prop: `X${i + 1}`
       }))
-      rows = Array.from({ length: zCount }, (_, i) => ({
-        label: `Z${i + 1}`,
-        prop: `Z${i + 1}`
-      }))
+      rows = Array.from({ length: zCount * yCount }, (_, index) => {
+        const zIndex = Math.floor(index / yCount)
+        const yIndex = index % yCount
+        return {
+          label: `Z${zIndex + 1}Y${yIndex + 1}`,
+          prop: `Z${zIndex + 1}Y${yIndex + 1}`
+        }
+      })
       break
     case 2: // y-x-z
       columns = Array.from({ length: yCount }, (_, i) => ({
         label: `Y${i + 1}`,
         prop: `Y${i + 1}`
       }))
-      rows = Array.from({ length: xCount }, (_, i) => ({
-        label: `X${i + 1}`,
-        prop: `X${i + 1}`
-      }))
+      rows = Array.from({ length: xCount * zCount }, (_, index) => {
+        const xIndex = Math.floor(index / zCount)
+        const zIndex = index % zCount
+        return {
+          label: `X${xIndex + 1}Z${zIndex + 1}`,
+          prop: `X${xIndex + 1}Z${zIndex + 1}`
+        }
+      })
       break
     case 3: // y-z-x
       columns = Array.from({ length: yCount }, (_, i) => ({
         label: `Y${i + 1}`,
         prop: `Y${i + 1}`
       }))
-      rows = Array.from({ length: zCount }, (_, i) => ({
-        label: `Z${i + 1}`,
-        prop: `Z${i + 1}`
-      }))
+      rows = Array.from({ length: zCount * xCount }, (_, index) => {
+        const zIndex = Math.floor(index / xCount)
+        const xIndex = index % xCount
+        return {
+          label: `Z${zIndex + 1}X${xIndex + 1}`,
+          prop: `Z${zIndex + 1}X${xIndex + 1}`
+        }
+      })
       break
     case 4: // z-x-y
       columns = Array.from({ length: zCount }, (_, i) => ({
         label: `Z${i + 1}`,
         prop: `Z${i + 1}`
       }))
-      rows = Array.from({ length: xCount }, (_, i) => ({
-        label: `X${i + 1}`,
-        prop: `X${i + 1}`
-      }))
+      rows = Array.from({ length: xCount * yCount }, (_, index) => {
+        const xIndex = Math.floor(index / yCount)
+        const yIndex = index % yCount
+        return {
+          label: `X${xIndex + 1}Y${yIndex + 1}`,
+          prop: `X${xIndex + 1}Y${yIndex + 1}`
+        }
+      })
       break
     case 5: // z-y-x
       columns = Array.from({ length: zCount }, (_, i) => ({
         label: `Z${i + 1}`,
         prop: `Z${i + 1}`
       }))
-      rows = Array.from({ length: yCount }, (_, i) => ({
-        label: `Y${i + 1}`,
-        prop: `Y${i + 1}`
-      }))
+      rows = Array.from({ length: yCount * xCount }, (_, index) => {
+        const yIndex = Math.floor(index / xCount)
+        const xIndex = index % xCount
+        return {
+          label: `Y${yIndex + 1}X${xIndex + 1}`,
+          prop: `Y${yIndex + 1}X${xIndex + 1}`
+        }
+      })
       break
     default:
+      console.error('无效的 order 值:', order.value)
       break
   }
 
@@ -239,14 +255,51 @@ const generateTable = () => {
   // 生成表格的数据行
   tableDatacst1.value = []
   for (let i = 1; i <= rows.length; i++) {
-    let row = { axis: rows[i - 1].label }
+    let row = { rowname: rows[i - 1].label }
     columns.forEach((column) => {
-      row[column.prop] = null // 每个单元格初始化为空
+      row[column.prop] = 0 // 每个单元格初始化为空
     })
     tableDatacst1.value.push(row)
   }
 }
 
+// const generateTable = () => {
+//   // 获取 X, Y, Z 方向的数值
+//   const xCount = Number(ffdvalue.value.nx);
+//   const yCount = Number(ffdvalue.value.ny);
+//   const zCount = Number(ffdvalue.value.nz);
+
+//   // 计算总行数
+//   const rowCount = xCount * yCount * zCount;
+
+//   // 确定最大维度
+//   const maxCount = Math.max(xCount, yCount, zCount);
+//   let maxAxis = "x";
+//   if (yCount === maxCount) maxAxis = "y";
+//   if (zCount === maxCount) maxAxis = "z";
+
+//   // 清空表格数据
+//   tableDatacst1.value = [];
+
+//   // 循环填充数据
+//   for (let i = 0; i < rowCount; i++) {
+//     // 计算 x, y, z 的索引
+//     const xIndex = i + 1;
+//     const yIndex = i + 1;
+//     const zIndex = i + 1;
+
+//     // 构造 row 数据
+//     const row = {
+//       x: maxAxis === "x" ? xIndex : i < xCount ? xIndex : "/",
+//       y: maxAxis === "y" ? yIndex : i < yCount ? yIndex : "/",
+//       z: maxAxis === "z" ? zIndex : i < zCount ? zIndex : "/",
+//     };
+
+//     // 追加到 table 数据中
+//     tableDatacst1.value.push(row);
+//   }
+// };
+
 const handleFileUploadSuccess = (data) => {
   ffdvalue.value.fname = data.fname
   fid.value = data.bfid
@@ -335,11 +388,13 @@ const initializeTableFromVars = () => {
 }
 
 // ffd查询
-const getffds = (id) => {
-  pid.value = id
+const getffds = (id,nowid) => {
+  pid.value = id;
+  wid.value = nowid;
   const params = {
     transCode: "MDO0043",
-    pid: pid.value
+    pid: pid.value,
+    wid: wid.value
   }
   request(params)
     .then((res) => {
@@ -376,11 +431,16 @@ const getffdsAssign = (data) => {
 }
 
 // ffd保存
-const getffdsave = () => {
+const getffdsave = (id,nowid) => {
+  if(nowid){
+    wid.value = nowid
+  }
+  pid.value = id;
   generateVars()
   const params = {
     transCode: "MDO0044",
     pid: pid.value,
+    wid: wid.value,
     fid: fid.value,
     fname: ffdvalue.value.fname,
     nx: ffdvalue.value.nx,
@@ -393,12 +453,12 @@ const getffdsave = () => {
   request(params)
     .then((res) => {
       ElMessage({
-        message: res.returnMsg,
+        message: '保存成功',
         type: "success"
       })
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error('保存失败')
     })
 }
 

+ 1 - 1
src/views/vueflow/main.css

@@ -12,7 +12,7 @@ body,
 }
 
 #app {
-  text-transform: uppercase;
+  /* text-transform: uppercase; */
   font-family: 'JetBrains Mono', monospace;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;

+ 255 - 40
src/views/vuetree/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <VueFlow ref="vueFlowRef" :nodes="nodes" :edges="edges"  :class="{ dark }"
+  <VueFlow ref="vueFlowRef" v-model:nodes="nodes" v-model:edges="edges"  :class="{ dark }"
     class="basic-flow" 
     style="background-image: url('src/assets/flowimg/surromdao.png'); background-position: center; background-repeat: no-repeat;"
     :default-viewport="{ zoom: 1.5 }" :min-zoom="0.2" :max-zoom="2.5" @drop="onDrop1"
@@ -49,7 +49,7 @@
       <ControlButton title="删除线" @click="removeEdge()">
         <el-icon  :color="iconcolor"><Crop /></el-icon>
       </ControlButton>
-      <ControlButton title="清空全部" @click="removeall()">
+      <ControlButton title="清空全部" @click="confirmDelete()">
         <el-icon :color="iconcolor"><DeleteFilled /></el-icon>
       </ControlButton>
       
@@ -236,7 +236,7 @@
 <script setup>
 import { ref, markRaw,inject } from 'vue'
 import { VueFlow,Panel, useVueFlow, MarkerType} from '@vue-flow/core'
-import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
+import { ElMessage, ElButton, ElDialog, ElSelect, ElMessageBox} from 'element-plus'
 import {
   DocumentDelete,
   Delete,
@@ -267,7 +267,7 @@ import emitter from "@/utils/emitter";
 const dark = ref(false)
 let datatree=ref();
 const route = useRoute();
-const { onInit, onNodeDragStop, onNodeContextMenu, onConnect, addEdges, setViewport, toObject,addNode } = useVueFlow()
+const { onInit, onNodeDragStop, onNodeContextMenu, onConnect, addEdges, setViewport, toObject,addNodes,updateEdgeData } = useVueFlow()
 let vueFlowRef = ref();
 let emit = defineEmits(['optimizerfalse']);
 let mergedObj=ref();
@@ -329,8 +329,16 @@ onNodeContextMenu((e) => {
   changeNameshow.value = true;
 })
 
+// 线的类型 process-逻辑线 data-数据线
+let lineType = ref('process');
+// 线序号
+let linecount = ref(0);
+
 onConnect((connection) => {
-  console.log(connection);
+  console.log('线连接',connection);
+  // 创建唯一的边ID(由源节点和目标节点组成)
+  const edgeId = `${connection.source}-${connection.target}`;
+  connection.id = edgeId;  // 自定义 ID
   connection.type = 'smoothstep';//  smoothstep straight
   connection.markerEnd = MarkerType.ArrowClosed;
   connection.color=linecolor.value;
@@ -338,6 +346,30 @@ onConnect((connection) => {
   connection.style = { strokeWidth:linenum.value ,stroke:linecolor.value};
   addEdges(connection)
   seledge.value=null;
+  
+  linecount.value++;
+  const newName = `Seg${linecount.value}`;
+
+  const sourceNode = vueFlowRef.value.getNode(connection.source);
+  const targetNode = vueFlowRef.value.getNode(connection.target);
+
+  // 调用 saveflow 保存数据并获取 wid
+  saveflow(pid.value, '', newName, lineType.value, sourceNode.data.uid, targetNode.data.uid)
+    .then((wid) => {
+      // 更新连接线的数据
+      const updatedData = {
+        wid: wid,
+        uid: newName,
+        type: lineType.value,
+        fromuid: sourceNode.data.uid,
+        touid: targetNode.data.uid,
+      };
+      updateEdgeData(connection.id, updatedData);
+
+    })
+    .catch((error) => {
+      console.error('保存流程失败:', error);
+    });
 })
 //修改名称
 const handleUpdate = () => {
@@ -352,7 +384,7 @@ const handleUpdate = () => {
 };
 emitter.on('child2Data', data => {
   datatree.value = data;
-  console.log(datatree.value);
+  console.log("datatree的值:",datatree.value);
 })
 
 function onNodeClick(e) {
@@ -444,39 +476,40 @@ function onSelection(){
 
 function onNodeDoubleClick(e) {
   noid.value = e.node;
+  const nowid = e.node.data.wid;
   console.log( e.node.data.name);
   if (e.node.data.name == '优化器') {
-    emit('optimizerfalse','优化器');
+    emit('optimizerfalse',{name:'优化器',wid:nowid});
   }else if(e.node.data.name=="进化优化器"){
-    emit('optimizerfalse','进化优化器');
+    emit('optimizerfalse',{name:'进化优化器',wid:nowid});
 
   }else if(e.node.data.name=="代理优化器"){
-    emit('optimizerfalse','代理优化器');
+    emit('optimizerfalse',{name:'代理优化器',wid:nowid});
 
   }else if(e.node.data.name=="Xfoil"){
-    emit('optimizerfalse','Xfoil');
+    emit('optimizerfalse',{name:'Xfoil',wid:nowid});
   }else if(e.node.data.name=="梯度优化器"){
-    emit('optimizerfalse','梯度优化器');
+    emit('optimizerfalse',{name:'梯度优化器',wid:nowid});
   }else if(e.node.data.name=="CST"){
-    emit('optimizerfalse','CST');
-  }else if(e.node.data.name=="ADflow"){
-    emit('optimizerfalse','ADflow');
+    emit('optimizerfalse',{name:'CST',wid:nowid});
+  }else if(e.node.data.name=="ADflow"|| e.node.data.name=="RAE2822"){
+    emit('optimizerfalse',{name:'ADflow',wid:nowid});
   }else if(e.node.data.name=="FFD"){
-    emit('optimizerfalse','FFD');
+    emit('optimizerfalse',{name:'FFD',wid:nowid});
   }else if(e.node.data.name=="TACS"){
-    emit('optimizerfalse','TACS');
+    emit('optimizerfalse',{name:'TACS',wid:nowid});
   }else if(e.node.data.name=="参数化"){
-    emit('optimizerfalse','参数化');
+    emit('optimizerfalse',{name:'参数化',wid:nowid});
   }else if(e.node.data.name=="气动分析"){
-    emit('optimizerfalse','气动分析');
+    emit('optimizerfalse',{name:'气动分析',wid:nowid});
   }else if(onPythonlist.value.some(item => e.node.data.name.includes(item))){
-    emit('optimizerfalse','Python');
+    emit('optimizerfalse',{name:e.node.data.name,wid:nowid});
   }else if(e.node.data.name=="CATIA"){
-    emit('optimizerfalse','CATIA');
+    emit('optimizerfalse',{name:'CATIA',wid:nowid});
   }else if(e.node.data.name=="FSI"){
-    emit('optimizerfalse','FUM to FEM');
+    emit('optimizerfalse',{name:'FSI',wid:nowid});
   }else if(e.node.data.name=="Flight"){
-    emit('optimizerfalse','Flight');
+    emit('optimizerfalse',{name:'Flight',wid:nowid});
   }
 
 }
@@ -487,6 +520,7 @@ let onPythonlist=ref(['Python','Branin','Rosenbrock','Rastrigin','G9','Forrester
 let previousEdge = null;  // 用于保存上一个选中的边缘
 // 监听线
 function onEdgeClick(e) {
+  console.log('Edge Click', e.edge);
   // 如果已经有选中的边缘
   if (seledge.value) {
     // 恢复上一个选中边缘的样式
@@ -538,7 +572,7 @@ let ADflowyouhuatable = ref([
   { code: "cl", name:'升力系数Cl', comtype:2 , steamflag:1, steamtype:1 },
   { code: "cd", name:'阻力系数Cd', comtype:2 , steamflag:1, steamtype:1 },
   { code: "cm", name:'力矩系数Cm', comtype:2 , steamflag:1, steamtype:1 },
-  { code: " ", name:'体积', comtype:2 , steamflag:1, steamtype:1 },
+  
 ])
 
 let Xfoilyouhuatable = ref([
@@ -585,6 +619,8 @@ const confirmselection=()=>{
   seledge.value.label=checkedData.join('\n');
   if(datacontent.value === '4') {
     dataFlowsave();
+  }else if(datacontent.value === '3') {
+    dataFlowsave2();
   }
   
   dataflowshow.value = false;
@@ -626,7 +662,7 @@ function onEdgeDoubleClick(e) {
     emitter.emit('requestGetadid',pid.value);
     console.log('adid:',adid.value)
     if(adid.value) {
-      // querydataFlow(adid);
+      querydataFlow(adid);
       dataflowshow.value = true;
     }else{
       ElMessage.error('ADflow未初始化!')
@@ -656,6 +692,10 @@ const querydataFlow = (comid) => {
     comid: comid.value
   }
   request(params).then((res) => {
+    if(datacontent.value === '3'){
+      ADflowyouhuatable.value = res.params;
+      handlecheckFlagchange();
+    }
     if(datacontent.value === '4'){
       Xfoilyouhuatable.value = res.params;
       handlecheckFlagchange();
@@ -683,6 +723,23 @@ const dataFlowsave = () => {
   })
 }
 
+const dataFlowsave2 = () => {
+  console.log('ADflowyouhuatable:',ADflowyouhuatable.value);
+  const params = {
+    transCode: "MDO0053",
+    paramstr: convertToStringArray([],ADflowyouhuatable.value),
+  };
+  request(params).then((res) => {
+    ElMessage({
+        message: res.returnMsg,
+        type: 'success',
+      })
+  })
+  .catch((err) => {
+      ElMessage.error(err.returnMsg)
+  })
+}
+
 const convertToStringArray = (result, Data) => {
   console.log('Data:', Data);
 
@@ -740,9 +797,10 @@ onNodeDragStop(({ event, nodes, node }) => {
   console.log('Node Drag Stop', { event, nodes, node })
 })
 
-onConnect((connection) => {
-  addEdges(connection)
-})
+// onConnect((connection) => {
+//   addEdges(connection)
+//   console.log('Connection', connection)
+// })
 function updatePos() {
 
   nodes.value = nodes.value.map((node) => {
@@ -758,7 +816,10 @@ function updatePos() {
 
 function removeEdge(id) {
   id = Edgeid.value;
+  const wid = seledge.value.data.wid;
   vueFlowRef.value.removeEdges(id);
+  deleteflow(wid);
+  seledge.value=null;
   console.log('msg:',datatree.value);
 }
 
@@ -769,8 +830,12 @@ const onDrop1=(event)=>{
 emitter.emit('doSomethingEvent');
 
 }
+
+
 function removeNode(id) {
   id = noid.value.id;
+  const wid = noid.value.data.wid;
+  console.log('removeNodewid:',wid);
 if(datatree.value==undefined){
   if(nodes.value.length>0){
     for (let i = 0; i <nodes.value.length; i++) {
@@ -778,6 +843,7 @@ if(datatree.value==undefined){
           console.log(44444)
           console.log( nodes.value[i]);
           nodes.value.splice(i, 1)
+          deleteflow(wid);
         }
 }
 console.log( nodes.value);
@@ -796,8 +862,10 @@ console.log( nodes.value);
       for (let j = 0; j <datatree.value[0].children[i].children.length; j++) {
         if(id==datatree.value[0].children[i].children[j].id){
          //datatree.value[0].children.splice(datatree.value[0].children[i].children[j], 1); 
-           datatree.value[0].children[i].children.splice(j, 1)
+           datatree.value[0].children[i].children.splice(j, 1);
+           deleteflow(wid);
            vueFlowRef.value.removeNodes(id);
+           removeRelatedEdges(id);
         }
     
   }
@@ -806,20 +874,154 @@ console.log( nodes.value);
 }
 }
 }
-function removeall(){
-  nodes.value=[];
-  edges.value=[];
-  Nested2.value=[];
-  Nested.value=[];
 
-  for (let i = 0; i <datatree.value[0].children.length; i++) {
-      for (let j = 0; j <datatree.value[0].children[i].children.length; j++) {
-        datatree.value[0].children[i].children=[];
+function removeRelatedEdges(nodeId) { 
+  //过滤出与该节点相关的连线
+  const relatedEdges = edges.value.filter(
+    (edge) => edge.source === nodeId || edge.target === nodeId
+  );
+  
+  // 遍历删除关联的连线
+  relatedEdges.forEach((edge) => {
+    if (edge.data && edge.data.wid) {
+      deleteflow(edge.data.wid);
     }
+  });
+}
 
+// 删除提示
+const confirmDelete = () => {
+  ElMessageBox.confirm(
+    '确定要删除全部吗?删除后不可恢复!',
+    '删除确认',
+    {
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      removeall();
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '已取消删除',
+      })
+    })
 }
 
+function removeall() {
+  try {
+    const allnodes = nodes.value;
+    const allEdges = edges.value;
+    for (let i = 0; i < allnodes.length; i++) {
+      if (allnodes[i].data.wid) {
+        deleteflow(allnodes[i].data.wid);
+      }
+    }
+    for (let i = 0; i < allEdges.length; i++) {
+      if (allEdges[i].data.wid) {
+        deleteflow(allEdges[i].data.wid);
+      }
+    }
+
+    nodes.value = []
+    edges.value = []
+    Nested2.value = []
+    Nested.value = []
+
+    // 判断 datatree 是否为空或未定义
+    if (!datatree.value || datatree.value.length === 0 || !datatree.value[0]?.children) {
+      console.warn('datatree 数据为空或未定义')
+      ElMessage({
+        type: 'warning',
+        message: '没有数据可以删除'
+      })
+      return
+    }
+
+    // 清空 datatree 的 children
+    for (let i = 0; i < datatree.value[0].children.length; i++) {
+      if (datatree.value[0]?.children[i]?.children) {
+        datatree.value[0].children[i].children = []
+      }
+    }
+
+    
+  } catch (error) {
+    console.error('删除失败:', error)
+    ElMessage({
+      type: 'error',
+      message: '删除过程中出错'
+    })
+  }
+}
+
+// 流查询
+const queryflow = () => {
+  const params = {
+    transCode: 'MDO0057',
+    pid: pid.value,
+  }
+  request(params)
+  .then((res) => {
+    console.log(res);
+    
+  })
+  .catch((err) => {
+    ElMessage.error(err.returnMsg)
+  })
+}
+
+// 保存流
+const saveflow = async (pid,wid, uid, type, fromuid, touid) => {
+  const params = {
+    transCode: 'MDO0058',
+    pid: pid || '',
+    wid: wid || '', // 流ID
+    uid: uid || '',
+    type: type || '',
+    fromuid: fromuid || '',
+    touid: touid || '',
+  };
+
+  try {
+    // 直接使用 await 等待 request 返回
+    const res = await request(params);
+    return res.wid; // 返回 wid
+  } catch (err) {
+    // 处理错误
+    ElMessage.error(err.returnMsg || '保存流程失败');
+  }
+};
+
+// async function saveFlowExample() {
+//   try {
+//     const wid = await saveflow('flow123', 'user001', 'process', 'fromA', 'toB');
+//     console.log('返回的 wid:', wid);
+//   } catch (err) {
+//     console.error('保存流程失败:', err.message);
+//   }
+// }
+// saveFlowExample();
+
+// 删除流
+const deleteflow = (nowid) => {
+  const params = {
+    transCode: 'MDO0059',
+    wid: nowid,
+  }
+  request(params)
+  .then((res) => {
+    console.log(res);
+  })
+  .catch((err) => {
+    ElMessage.error('删除流程失败')
+  })
 }
+
+
 async  function logToObject1() {
   let obj = { nodes: toObject().nodes,edges:toObject().edges };
   mergedObj.value=JSON.stringify(obj);
@@ -843,7 +1045,20 @@ async  function logToObject1() {
 const addflow = () => {
     const savedObj = JSON.parse(sessionStorage.getItem("objlist"));
     const stypeValue = savedObj ? savedObj.stype : '';
-    console.log(stypeValue);
+
+    // 用于首页主界面切换数据一致
+    const updateobjlist = {
+      pid: pid.value,
+      name: newobj.value.name,
+      remark: newobj.value.description,
+      image: vueflowimg.value,
+      isshare: '1',
+      flow: mergedObj.value,
+      stype: stypeValue,
+    }
+    sessionStorage.setItem("objlist",JSON.stringify(updateobjlist));
+    
+    console.log("打印stypeValue:",stypeValue);
     const params = {
         transCode: 'MDO0002',
         pid: pid.value,
@@ -859,7 +1074,7 @@ const addflow = () => {
         .then((res) => {
             console.log(res);
             ElMessage({
-                  message: res.returnMsg,
+                  message: '工程保存成功',
                   type: 'success',
               })
         })
@@ -990,7 +1205,7 @@ watch(() => seledge.value, (newItems, oldItems) => {
     // seledge.value.style.stroke =  linecolor.value;
   }
     });
-defineExpose({changeAllEdgesColor,linestrokeWidth,getroter,onSelection,bgcolorfunc});
+defineExpose({changeAllEdgesColor,linestrokeWidth,getroter,onSelection,bgcolorfunc,logToObject1});
 </script>
 
 <style>
@@ -1009,7 +1224,7 @@ defineExpose({changeAllEdgesColor,linestrokeWidth,getroter,onSelection,bgcolorfu
   transform:  translateY(-10px); /* 将 label 向上偏移 */
   background: transparent !important;
   font-size: 8px;
-  font-family: 'Source Sans Pro-Regular';
+  font-family: 'Microsoft YaHei';
   color: #333333;
 }
 

+ 1 - 1
src/views/vuetree/main.css

@@ -12,7 +12,7 @@ body,
 }
 
 #app {
-  text-transform: uppercase;
+  /* text-transform: uppercase; */
   font-family: 'JetBrains Mono', monospace;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;

+ 80 - 5
src/views/vuetree/useDnD.js

@@ -1,6 +1,8 @@
 // import { useVueFlow,Position,MarkerType } from '@vue-flow/core';
 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 gc1 from '@/assets/flowimg/gc1.png'
 import gc2 from '@/assets/flowimg/gc2.png'
 import gc3 from '@/assets/flowimg/gc3.png'
@@ -115,6 +117,29 @@ const state = {
   isDragging: ref(false),
 }
 
+// 保存流
+const saveflow = async (pid, wid, uid, type, fromuid, touid) => {
+  const params = {
+    transCode: 'MDO0058',
+    pid: pid || '',
+    wid: wid || '', // 流ID
+    uid: uid || '',
+    type: type || '',
+    fromuid: fromuid || '',
+    touid: touid || '',
+  };
+
+  try {
+    const res = await request(params);
+    return res.wid;
+  } catch (err) {
+    ElMessage.error(err.returnMsg);
+  }
+};
+
+// 用来存储每种组件名称出现次数的对象
+const nameCount = {}
+
 export default function useDragAndDrop() {
   const { draggedType, isDragOver, isDragging } = state
 
@@ -180,14 +205,29 @@ export default function useDragAndDrop() {
    *
    * @param {DragEvent} event
    */
-  function onDrop(event) {
+  async function onDrop(event) {
     const position = screenToFlowCoordinate({
       x: event.clientX,
       y: event.clientY,
     })
 
+    const savedObj = JSON.parse(sessionStorage.getItem("objlist"));
+    console.log('objlist',savedObj);
+    const pid = savedObj.pid;
+    const newwid = '';
+
     const nodeId = getId()
     const image1=imagefun();
+    // 获取当前组件的名称
+    const componentName = image1.name;
+
+    // 如果该组件的名称已存在,给名称添加序号
+    if (!nameCount[componentName]) {
+      nameCount[componentName] = 0;
+    }
+  
+    nameCount[componentName]++; // 增加计数
+    const newName = `${componentName}${nameCount[componentName]}`; // 新的名称加上序号
  
     let snodes=ref([]);
     let sedges=ref([]);
@@ -197,15 +237,50 @@ export default function useDragAndDrop() {
       // const edges = ref([])
 
     }else{
-      snodes.value=[];
-      sedges.value=[];
+      // 创建初始的节点数据,不包含 wid
       const newNode = {
         id: nodeId,
         type: draggedType.value,
         position,
-        data: image1,
-      }
+        data: { ...image1, uid: newName },
+      };
+
       snodes.value.push(newNode)
+
+      // 异步保存数据并更新 wid
+      saveflow(pid, newwid, newName, 'com', '', '').then((wid) => {
+      // 更新节点数据中的 wid
+      newNode.data.wid = wid;
+
+      // 使用 onNodesInitialized 来更新节点数据
+      onNodesInitialized(() => {
+        // 更新节点的其他数据
+        updateNode(nodeId, (node) => ({
+          ...node, 
+          data: {
+            ...node.data,
+            wid: newNode.data.wid,  // 更新节点中的 wid
+          },
+        }));
+      });
+    }).catch((err) => {
+      console.error('保存流程失败:', err.message);
+      ElMessage.error('保存流程失败');
+    });
+
+        // saveflow(pid , savewid, newName, 'com', '', '')
+        // console.log('返回的 wid:', widtemp.value)
+        // const wid = widtemp.value
+        // const uid = newName
+        // // 创建新节点,包含 wid 数据
+        // const newNode = {
+        //   id: nodeId,
+        //   type: draggedType.value,
+        //   position,
+        //   data: { ...image1, wid , uid}, // 将 wid 存入节点数据中
+        // }
+  
+        // snodes.value.push(newNode)
     
     }
     const { off } = onNodesInitialized(() => {

部分文件因为文件数量过多而无法显示