TACS.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. <template>
  2. <div class="XFpdding" style="height: 550px;">
  3. <ul>
  4. <li
  5. class="item"
  6. v-for="(tab, index) in tabslist2"
  7. :key="index"
  8. :class="{ active: currentTab2 === index }"
  9. @click="selectTab2(index)"
  10. >
  11. {{ tab.name }}
  12. </li>
  13. </ul>
  14. <!-- 网格文件 -->
  15. <!-- 执行 -->
  16. <div
  17. class="classtable"
  18. style="margin-top: 10px; "
  19. v-if="currentTab2 == '0'"
  20. >
  21. <el-form label-position="left">
  22. <el-form-item label="网格文件:" :label-width="formLabelWidth120">
  23. <el-input v-model="tacsFilename">
  24. <template #append>
  25. <fileUploads
  26. :projectId="125"
  27. solverType="exampleSolver"
  28. accept=""
  29. upId="uniqueId1"
  30. :imgSrc="tacsfileSrc"
  31. name="点击选择文件"
  32. />
  33. </template>
  34. </el-input>
  35. </el-form-item>
  36. </el-form>
  37. <div style="flex-grow: 1"></div>
  38. </div>
  39. <!-- 设置参数 -->
  40. <div
  41. class="classtable"
  42. style="margin-top: 10px;"
  43. v-show="currentTab2 == '2'"
  44. >
  45. <el-form-item label="分析对象名称:" :label-width="formLabelWidth1">
  46. <el-input
  47. v-model="tacsvalue.objname"
  48. :step="100"
  49. :min="0"
  50. :max="1000"
  51. controls-position="right"
  52. />
  53. </el-form-item>
  54. <el-collapse v-model="TACSactiveNames">
  55. <el-collapse-item title="材料属性" name="1">
  56. <template #title>
  57. <span class="collapse-title">材料属性</span>
  58. </template>
  59. <el-form-item label="材料密度:" :label-width="formLabelWidth1">
  60. <el-input
  61. v-model="tacsvalue.density"
  62. :step="100"
  63. :min="0"
  64. :max="1000"
  65. controls-position="right"
  66. />
  67. </el-form-item>
  68. <el-form-item label="杨氏模量:" :label-width="formLabelWidth1">
  69. <el-input
  70. v-model="tacsvalue.ysml"
  71. :step="100"
  72. :min="0"
  73. :max="1000"
  74. controls-position="right"
  75. />
  76. </el-form-item>
  77. <el-form-item label="泊松比:" :label-width="formLabelWidth1">
  78. <el-input
  79. v-model="tacsvalue.ratio"
  80. :step="100"
  81. :min="0"
  82. :max="1000"
  83. controls-position="right"
  84. />
  85. </el-form-item>
  86. <el-form-item label="屈服应力:" :label-width="formLabelWidth1">
  87. <el-input
  88. v-model="tacsvalue.stress"
  89. :step="100"
  90. :min="0"
  91. :max="1000"
  92. controls-position="right"
  93. />
  94. </el-form-item>
  95. <el-form-item label="启用FFD参数化:" :label-width="formLabelWidth1">
  96. <el-radio-group v-model="tacsvalue.radio">
  97. <el-radio label="1">是</el-radio>
  98. <el-radio label="0">否</el-radio>
  99. </el-radio-group>
  100. </el-form-item>
  101. </el-collapse-item>
  102. <el-collapse-item title="收敛选项" name="2">
  103. <template #title>
  104. <span class="collapse-title">收敛选项</span>
  105. </template>
  106. <el-form-item label="绝对收敛参数:" :label-width="formLabelWidth1">
  107. <el-input
  108. v-model="tacsvalue.absolute "
  109. :step="100"
  110. :min="0"
  111. :max="1000"
  112. controls-position="right"
  113. />
  114. </el-form-item>
  115. <el-form-item label="相对收敛参数:" :label-width="formLabelWidth1">
  116. <el-input
  117. v-model="tacsvalue.relative "
  118. :step="100"
  119. :min="0"
  120. :max="1000"
  121. controls-position="right"
  122. />
  123. </el-form-item>
  124. </el-collapse-item>
  125. </el-collapse>
  126. </div>
  127. <!-- 结构参数 v-show="currentTab=='0'"-->
  128. <div v-show="currentTab2 == '1'">
  129. <div class="eldesign classtable" style="margin-top: 10px">
  130. <el-table
  131. :data="TACSlailiutable"
  132. border
  133. style="width: 100%; "
  134. >
  135. <el-table-column label="启用">
  136. <el-table-column type="index" width="70" label="编号">
  137. </el-table-column>
  138. </el-table-column>
  139. <el-table-column>
  140. <template v-slot:header>
  141. <!-- 表头显示复选框 -->
  142. <el-checkbox
  143. :false-label="'-1'"
  144. :true-label="'1'"
  145. :label="false"
  146. v-model="thcheckbox"
  147. />
  148. </template>
  149. <el-table-column prop="data" label="厚度分布" width="100">
  150. <template #default="{ row }">
  151. <el-input v-model.number="row.data" />
  152. </template>
  153. </el-table-column>
  154. </el-table-column>
  155. <el-table-column>
  156. <el-table-column prop="con" label=""> </el-table-column>
  157. </el-table-column>
  158. </el-table>
  159. </div>
  160. </div>
  161. <!-- 分析参数 v-show="currentTab=='0'"-->
  162. <div v-show="currentTab2 == '3'">
  163. <div class="eldesign classtable" style="margin-top: 10px">
  164. <el-table
  165. :data="TACSfenxitable"
  166. border
  167. style="width: 100%; "
  168. :header-cell-class-name="headerCellClassName"
  169. >
  170. <el-table-column type="index" width="70" label="编号" />
  171. <el-table-column prop="name" label="参数名称">
  172. <!-- <template #default="{ row }">
  173. <el-input v-model="row.name" @change="handleEdit(row)" />
  174. </template> -->
  175. </el-table-column>
  176. <el-table-column prop="value" label="参数值">
  177. <template #default="{ row }">
  178. <el-input v-model.number="row.value" @change="handleEdit(row)" />
  179. </template>
  180. </el-table-column>
  181. <el-table-column prop="flag" label="启用" width="100">
  182. <template v-slot="scope">
  183. <el-checkbox
  184. :false-label="'-1'"
  185. :true-label="'1'"
  186. :label="false"
  187. v-model="scope.row.flag"
  188. />
  189. </template>
  190. </el-table-column>
  191. </el-table>
  192. </div>
  193. </div>
  194. </div>
  195. </template>
  196. <script setup>
  197. import { ref, onMounted, reactive, provide, nextTick } from "vue"
  198. import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
  199. import { Edit, CaretBottom } from "@element-plus/icons-vue"
  200. import fileUploads from '../components/fileuploads.vue'
  201. let formLabelWidth1 = ref(170)
  202. let formLabelWidth120 = ref(120)
  203. let currentTab2=ref(0);
  204. let tabslist2= ref([
  205. { id: '0', name: '网格文件' },
  206. { id: '1', name: '结构参数' },
  207. { id: '2', name: '设置参数' },
  208. { id: '3', name: '分析参数' },
  209. ])
  210. const tacsfileSrc = new URL('@/assets/flowimg/ffdFileSave.png', import.meta.url).href;
  211. let TACSactiveNames = ref(['1','2']);
  212. let tacsvalue = ref({
  213. objname:'CRM',
  214. density:'2780.0',
  215. ysml:'73.1e9',
  216. ratio:'0.33',
  217. stress:'262.0e6',
  218. radio:'1',
  219. absolute:'1e3',
  220. relative:'1e3'
  221. })
  222. let thcheckbox = ref('1')
  223. let tacsFilename = ref('UCRM_wing.xml.bdf')
  224. let TACSlailiutable=ref([
  225. {
  226. data: '0.995208',
  227. con: ''
  228. },
  229. {
  230. data: '0.992144',
  231. con: ''
  232. },
  233. {
  234. data: '0.988525',
  235. con: ''
  236. },
  237. {
  238. data: '0.984251',
  239. con: ''
  240. },
  241. {
  242. data: '0.979202',
  243. con: ''
  244. },
  245. {
  246. data: '0.973236',
  247. con: ''
  248. },
  249. {
  250. data: '0.966186',
  251. con: ''
  252. },
  253. {
  254. data: '0.957851',
  255. con: ''
  256. },
  257. {
  258. data: '',
  259. con: ''
  260. },
  261. {
  262. data: '',
  263. con: ''
  264. },
  265. {
  266. data: '',
  267. con: ''
  268. },
  269. ])
  270. let TACSfenxitable=ref([
  271. {
  272. name: '结构质量',
  273. value: 13972.2123,
  274. flag:'1'
  275. },
  276. {
  277. name: 'KS聚合应力',
  278. value: 0.3337,
  279. flag:'1'
  280. },
  281. {
  282. name: '最大变形',
  283. value: 0.0,
  284. flag: '1'
  285. }
  286. ])
  287. const selectTab2=(index)=>{
  288. currentTab2.value = index;
  289. }
  290. const headerCellClassName = ({ column }) => {
  291. // console.log('列:',column.property)
  292. if (column.property === 'name') {
  293. console.log('yanse',column.property)
  294. return 'header-blue';
  295. } else if (column.property === 'value') {
  296. return 'header-green';
  297. } else if (column.property === 'flag') {
  298. return 'header-yellow';
  299. }
  300. return '';
  301. };
  302. </script>
  303. <style scoped lang="scss">
  304. :deep(.collapse-title) {
  305. flex: 1 0 90%;
  306. order: 1;
  307. text-align: left;
  308. }
  309. :deep(.collapse-title) .el-collapse-item__header {
  310. flex: 1 0 auto;
  311. order: -1;
  312. }
  313. </style>