home.vue 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734
  1. <template>
  2. <div class="common-layout">
  3. <el-container>
  4. <el-header>
  5. <myheader />
  6. </el-header>
  7. <el-main>
  8. <div class="main_container padding_gg">
  9. <div class="heder_tabs">
  10. <el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
  11. <!-- 开始 -->
  12. <el-tab-pane label="首页" name="User">
  13. <!-- <router-link to="/"> </router-link> -->
  14. </el-tab-pane>
  15. <el-tab-pane label="问题设定" name="Role">
  16. <div class="imgzong Role">
  17. <!-- <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in Rolelist" :key="'Role-' + index"
  18. :class="{ activeOrange: active == 'Role-' + index }"
  19. @click="clickgeometry($event, index, 'Role-' + index,item.titlie )">
  20. <div class="item2 ">
  21. <el-image :src="getImgPath(item.url)" fit="cover" />
  22. <span>{{ item.titlie }}</span>
  23. </div>
  24. </div> -->
  25. <div class="listitem lbg_color3 bkcolor3 ">
  26. <div class="threelist">
  27. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist" :key="'Role' + index"
  28. :class="{ activeOrange: active == 'Role' + index }"
  29. @click="clickgeometry($event, index, 'Role' + index, item.titlie)">
  30. <el-image :src="getImgPath(item.url)" fit="cover" />
  31. <span>{{ item.titlie }}</span>
  32. </div>
  33. </div>
  34. </div>
  35. <!-- -->
  36. <div class="listitem lbg_color3 bkcolor3 ">
  37. <div class="threelist">
  38. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist1" :key="'Role1' + index"
  39. :class="{ activeOrange: active == 'Role1' + index }"
  40. @click="clickgeometry($event, index, 'Role1' + index, item.titlie)">
  41. <el-image :src="getImgPath(item.url)" fit="cover" />
  42. <span>{{ item.titlie }}</span>
  43. </div>
  44. </div>
  45. </div>
  46. <!-- -->
  47. <div class="listitem lbg_color3 bkcolor3 ">
  48. <div class="threelist">
  49. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist2" :key="'Role2' + index"
  50. :class="{ activeOrange: active == 'Role2' + index }"
  51. @click="clickgeometry($event, index, 'Role2' + index, item.titlie)">
  52. <el-image :src="getImgPath(item.url)" fit="cover" />
  53. <span>{{ item.titlie }}</span>
  54. </div>
  55. </div>
  56. </div>
  57. <!-- -->
  58. <div class="listitem lbg_color3 bkcolor3 ">
  59. <div class="threelist">
  60. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist3" :key="'Role3' + index"
  61. :class="{ activeOrange: active == 'Role3' + index }"
  62. @click="clickgeometry($event, index, 'Role3' + index, item.titlie)">
  63. <el-image :src="getImgPath(item.url)" fit="cover" />
  64. <span>{{ item.titlie }}</span>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </el-tab-pane>
  70. <el-tab-pane label="优化运行" name="Three">
  71. <div class="imgzong">
  72. <div class="listitem lbg_color3 bkcolor3 threelist" >
  73. <div class="item2 floatitem" v-for="(item, index) in Threelist" :key="'Three-' + index"
  74. :class="{ activeOrange: active == 'Three-' + index }"
  75. @click="clickgeometry($event, index, 'Three-' + index,item.titlie )">
  76. <el-image :src="getImgPath(item.url)" fit="cover" />
  77. <span>{{ item.titlie }}</span>
  78. </div>
  79. </div>
  80. <!-- <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in Threelist1" :key="'Three1-' + index"
  81. :class="{ activeOrange: active == 'Three1' + index }"
  82. @click="clickgeometry($event, index, 'Three1' + index,item.titlie )">
  83. <div class="item2 ">
  84. <el-image :src="getImgPath(item.url)" fit="cover" />
  85. <span>{{ item.titlie }}</span>
  86. </div>
  87. </div> -->
  88. <div class="listitem lbg_color3 bkcolor3 ">
  89. <div class="threelist">
  90. <div class="item2 floatitem wentsd1" v-for="(item, index) in Threelist1" :key="'Three1' + index"
  91. :class="{ activeOrange: active == 'Three1' + index }"
  92. @click="clickgeometry($event, index, 'Three1' + index, item.titlie)">
  93. <el-image :src="getImgPath(item.url)" fit="cover" />
  94. <span>{{ item.titlie }}</span>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. </el-tab-pane>
  100. <el-tab-pane label="可视化" name="Config">
  101. <div class="imgzong">
  102. <!-- <button @click="etImgPath()"></button> -->
  103. <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in question" :key="'Config-' + index"
  104. :class="{ activeOrange: active == 'Config-' + index }"
  105. @click="clickgeometry($event, index, 'Config-' + index,item.titlie )">
  106. <div class="item2 ">
  107. <el-image :src="getImgPath(item.url)" fit="cover" />
  108. <span>{{ item.titlie }}</span>
  109. </div>
  110. </div>
  111. </div>
  112. </el-tab-pane>
  113. <el-tab-pane label="数据库管理" name="Seven">
  114. <div class="imgzong">
  115. <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in Sevenlist" :key="'Seven' + index"
  116. :class="{ activeOrange: active == 'Seven' + index }"
  117. @click="clickgeometry($event, index, 'Seven' + index,item.titlie )">
  118. <div class="item2 ">
  119. <el-image :src="getImgPath(item.url)" fit="cover" />
  120. <span>{{ item.titlie }}</span>
  121. </div>
  122. </div>
  123. </div>
  124. </el-tab-pane>
  125. <el-tab-pane label="帮助" name="eight">
  126. <div class="imgzong">
  127. <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in eightlist" :key="'eight' + index"
  128. :class="{ activeOrange: active == 'eight' + index }"
  129. @click="clickgeometry($event, index, 'eight' + index,item.titlie )">
  130. <div class="item2 ">
  131. <el-image :src="getImgPath(item.url)" fit="cover" />
  132. <span>{{ item.titlie }}</span>
  133. </div>
  134. </div>
  135. </div>
  136. </el-tab-pane>
  137. </el-tabs>
  138. </div>
  139. <!-- 新建任务 -->
  140. <el-dialog v-model="dialog.newdialog"
  141. v-if="tabactive=='新建任务'"
  142. align-center :modal="false" :close-on-click-modal="true"
  143. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  144. :before-close="handleClose" width="480" class="dialog_class bgcolor tianjia">
  145. <template #header="{ titleId, titleClass }">
  146. <div class="my-header ">
  147. <el-image :src="getImgPath('s0.png')" fit="contain"></el-image>
  148. <h4 :id="titleId" :class="titleClass">新建任务</h4>
  149. </div>
  150. </template>
  151. <div>
  152. <el-form>
  153. <el-form-item label="任务编号:" :label-width="formLabelWidth6">
  154. <el-input v-model="name" maxlength="18"
  155. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  156. placeholder="请输入" />
  157. </el-form-item>
  158. <el-form-item label="任务名称:" :label-width="formLabelWidth6">
  159. <el-input v-model="name" maxlength="18"
  160. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  161. placeholder="请输入" />
  162. </el-form-item>
  163. <el-form-item label="任务类型:" :label-width="formLabelWidth6">
  164. <el-input v-model="name" maxlength="18"
  165. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  166. placeholder="请输入" />
  167. </el-form-item>
  168. <el-form-item label="备注:" :label-width="formLabelWidth6">
  169. <el-input v-model="name" maxlength="18" type="textarea"
  170. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  171. placeholder="请输入" />
  172. </el-form-item>
  173. </el-form>
  174. </div>
  175. <template #footer>
  176. <div class="dialog-footer">
  177. <el-button @click="dialog.newdialog = false">取消</el-button>
  178. <el-button type="primary" @click="dialog.newdialog = false">
  179. 确定
  180. </el-button>
  181. </div>
  182. </template>
  183. </el-dialog>
  184. <!-- 问题设定 -->
  185. <el-dialog v-model="dialog.setdialog"
  186. v-if="tabactive=='问题设定'"
  187. align-center :modal="false" :close-on-click-modal="true"
  188. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  189. :before-close="handleClose" width="480" class="dialog_class bgcolor tianjia">
  190. <template #header="{ titleId, titleClass }">
  191. <div class="my-header ">
  192. <el-image :src="getImgPath('q0.png')" fit="contain"></el-image>
  193. <h4 :id="titleId" :class="titleClass">问题设定</h4>
  194. </div>
  195. </template>
  196. <div class="numberinput">
  197. <el-form>
  198. <el-form-item label="目标函数个数:" :label-width="formLabelWidth1">
  199. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  200. </el-form-item>
  201. <el-form-item label="建立代理模型约束个数:" :label-width="formLabelWidth1">
  202. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  203. </el-form-item>
  204. <el-form-item label="不建立代理模型约束个数:" :label-width="formLabelWidth1">
  205. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  206. </el-form-item>
  207. </el-form>
  208. </div>
  209. <template #footer>
  210. <div class="dialog-footer">
  211. <el-button @click="dialog.setdialog = false">取消</el-button>
  212. <el-button type="primary" @click="dialog.setdialog = false">
  213. 确定
  214. </el-button>
  215. </div>
  216. </template>
  217. </el-dialog>
  218. <!-- 外形参数化 -->
  219. <el-dialog v-model="dialog.parameter"
  220. v-if="tabactive=='Task-11'"
  221. align-center :modal="false" :close-on-click-modal="true"
  222. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  223. :before-close="handleClose" width="480" class="dialog_class bgcolor tianjia sel">
  224. <template #header="{ titleId, titleClass }">
  225. <div class="my-header ">
  226. <el-image :src="getImgPath('t0.png')" fit="contain"></el-image>
  227. <h4 :id="titleId" :class="titleClass">外形参数化</h4>
  228. </div>
  229. </template>
  230. <div class="numberinput">
  231. <el-form>
  232. <el-form-item label="参数化方法:" :label-width="formLabelWidth6">
  233. <el-select v-model="canshu" :suffix-icon="CaretBottom" placeholder="请选择">
  234. <el-option
  235. v-for="item in canshulist"
  236. :key="item.value"
  237. :label="item.label"
  238. :value="item.value">
  239. </el-option>
  240. </el-select>
  241. </el-form-item>
  242. </el-form>
  243. </div>
  244. <template #footer>
  245. <div class="dialog-footer">
  246. <el-button @click="dialog.parameter = false">取消</el-button>
  247. <el-button type="primary" @click="dialog.parameter = false">
  248. 确定
  249. </el-button>
  250. </div>
  251. </template>
  252. </el-dialog>
  253. <!-- 代理模型 -->
  254. <el-dialog v-model="dialog.agency"
  255. v-if="tabactive=='代理模型'"
  256. align-center :modal="false" :close-on-click-modal="true"
  257. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  258. :before-close="handleClose" width="480" class="dialog_class bgcolor tianjia sel">
  259. <template #header="{ titleId, titleClass }">
  260. <div class="my-header ">
  261. <el-image :src="getImgPath('t2.png')" fit="contain"></el-image>
  262. <h4 :id="titleId" :class="titleClass">代理模型</h4>
  263. </div>
  264. </template>
  265. <div class="numberinput">
  266. <el-form>
  267. <el-form-item label="代理模型类型:" :label-width="formLabelWidth2">
  268. <el-select v-model="agval" :suffix-icon="CaretBottom" placeholder="请选择">
  269. <el-option
  270. v-for="item in agelist"
  271. :key="item.value"
  272. :label="item.label"
  273. :value="item.value">
  274. </el-option>
  275. </el-select>
  276. </el-form-item>
  277. <el-form-item label="设计空间类型:" :label-width="formLabelWidth2">
  278. <el-select v-model="agval1" :suffix-icon="CaretBottom" placeholder="请选择">
  279. <el-option
  280. v-for="item in agelist1"
  281. :key="item.value"
  282. :label="item.label"
  283. :value="item.value">
  284. </el-option>
  285. </el-select>
  286. </el-form-item>
  287. <el-form-item label="试验设计方法:" :label-width="formLabelWidth2">
  288. <el-select v-model="agval2" :suffix-icon="CaretBottom" placeholder="请选择">
  289. <el-option
  290. v-for="item in agelist2"
  291. :key="item.value"
  292. :label="item.label"
  293. :value="item.value">
  294. </el-option>
  295. </el-select>
  296. </el-form-item>
  297. <el-form-item label="初始样本点数:" :label-width="formLabelWidth2">
  298. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  299. </el-form-item>
  300. </el-form>
  301. </div>
  302. <template #footer>
  303. <div class="dialog-footer">
  304. <el-button @click="dialog.agency = false">取消</el-button>
  305. <el-button type="primary" @click="dialog.agency = false">
  306. 确定
  307. </el-button>
  308. </div>
  309. </template>
  310. </el-dialog>
  311. <!-- 终止条件 -->
  312. <el-dialog v-model="dialog.enddialog"
  313. v-if="tabactive=='终止条件 '"
  314. align-center :modal="false" :close-on-click-modal="true"
  315. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  316. :before-close="handleClose" width="480" class="dialog_class bgcolor tianjia sel">
  317. <template #header="{ titleId, titleClass }">
  318. <div class="my-header ">
  319. <el-image :src="getImgPath('t4.png')" fit="contain"></el-image>
  320. <h4 :id="titleId" :class="titleClass">终止条件</h4>
  321. </div>
  322. </template>
  323. <div class="numberinput">
  324. <el-form>
  325. <el-form-item label="EI最小值:" :label-width="formLabelWidth1">
  326. <el-input v-model="name" maxlength="18"
  327. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  328. placeholder="请输入" />
  329. </el-form-item>
  330. <el-form-item label="目标函数收敛误差:" :label-width="formLabelWidth1">
  331. <el-input v-model="name" maxlength="18"
  332. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  333. placeholder="请输入" />
  334. </el-form-item>
  335. <el-form-item label="优化解收敛精度:" :label-width="formLabelWidth1">
  336. <el-input v-model="name" maxlength="18"
  337. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  338. placeholder="请输入" />
  339. </el-form-item>
  340. <el-form-item label="真实函数约束精度:" :label-width="formLabelWidth1">
  341. <el-input v-model="name" maxlength="18"
  342. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  343. placeholder="请输入" />
  344. </el-form-item>
  345. <el-form-item label="代理模型约束精度:" :label-width="formLabelWidth1">
  346. <el-input v-model="name" maxlength="18"
  347. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  348. placeholder="请输入" />
  349. </el-form-item>
  350. </el-form>
  351. </div>
  352. <template #footer>
  353. <div class="dialog-footer">
  354. <el-button @click="dialog.enddialog = false">取消</el-button>
  355. <el-button type="primary" @click="dialog.enddialog = false">
  356. 确定
  357. </el-button>
  358. </div>
  359. </template>
  360. </el-dialog>
  361. <!-- 优化算法 -->
  362. <el-dialog v-model="dialog.sufun"
  363. v-if="tabactive=='优化算法'"
  364. align-center :modal="false" :close-on-click-modal="true"
  365. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  366. :before-close="handleClose" width="480" class="dialog_class sel bgcolor tianjia sel">
  367. <template #header="{ titleId, titleClass }">
  368. <div class="my-header ">
  369. <el-image :src="getImgPath('Framem.png')" fit="contain"></el-image>
  370. <h4 :id="titleId" :class="titleClass">优化算法</h4>
  371. </div>
  372. </template>
  373. <div class="numberinput">
  374. <!-- class="border2" -->
  375. <div>
  376. <!-- <div class="title2">GA遗传算法</div> -->
  377. <el-form-item label="优化算法" :label-width="formLabelWidth1">
  378. <el-select v-model="ys" :suffix-icon="CaretBottom" placeholder="请选择">
  379. <el-option
  380. v-for="item in yslist"
  381. :key="item.value"
  382. :label="item.label"
  383. :value="item.value">
  384. </el-option>
  385. </el-select>
  386. </el-form-item>
  387. <el-form-item label="种群规模:" :label-width="formLabelWidth1">
  388. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  389. </el-form-item>
  390. <el-form-item label="最大进化代数:" :label-width="formLabelWidth1">
  391. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  392. </el-form-item>
  393. <el-form-item label="交叉概率:" :label-width="formLabelWidth1">
  394. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  395. </el-form-item>
  396. <el-form-item label="变异概率:" :label-width="formLabelWidth1">
  397. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  398. </el-form-item>
  399. <el-form-item label="交叉算子:" :label-width="formLabelWidth1">
  400. <el-select v-model="addval2" :suffix-icon="CaretBottom" placeholder="请选择">
  401. <el-option
  402. v-for="item in addlist2"
  403. :key="item.value"
  404. :label="item.label"
  405. :value="item.value">
  406. </el-option>
  407. </el-select>
  408. </el-form-item>
  409. <el-form-item label="竞赛规模:" :label-width="formLabelWidth1">
  410. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  411. </el-form-item>
  412. <el-form-item label="保留优选策略:" :label-width="formLabelWidth1">
  413. <el-select v-model="addval3" :suffix-icon="CaretBottom" placeholder="请选择">
  414. <el-option
  415. v-for="item in addlist3"
  416. :key="item.value"
  417. :label="item.label"
  418. :value="item.value">
  419. </el-option>
  420. </el-select>
  421. </el-form-item>
  422. <el-form-item label="变异算子选择:" :label-width="formLabelWidth1">
  423. <el-select v-model="addval4" :suffix-icon="CaretBottom" placeholder="请选择">
  424. <el-option
  425. v-for="item in addlist4"
  426. :key="item.value"
  427. :label="item.label"
  428. :value="item.value">
  429. </el-option>
  430. </el-select>
  431. </el-form-item>
  432. <el-form-item label="precision:" :label-width="formLabelWidth1">
  433. <el-select v-model="addval7" :suffix-icon="CaretBottom" placeholder="请选择">
  434. <el-option
  435. v-for="item in addlist7"
  436. :key="item.value"
  437. :label="item.label"
  438. :value="item.value">
  439. </el-option>
  440. </el-select>
  441. </el-form-item>
  442. <el-form-item label="GPU" :label-width="formLabelWidth1">
  443. <el-select v-model="addval8" :suffix-icon="CaretBottom" placeholder="请选择">
  444. <el-option
  445. v-for="item in addlist8"
  446. :key="item.value"
  447. :label="item.label"
  448. :value="item.value">
  449. </el-option>
  450. </el-select>
  451. </el-form-item>
  452. </div>
  453. </div>
  454. <template #footer>
  455. <div class="dialog-footer">
  456. <el-button @click="dialog.sufun = false">取消</el-button>
  457. <el-button type="primary" @click="dialog.sufun = false">
  458. 确定
  459. </el-button>
  460. </div>
  461. </template>
  462. </el-dialog>
  463. <!-- 加点方法 -->
  464. <el-dialog v-model="dialog.addfun"
  465. v-if="tabactive=='加点方法'"
  466. align-center :modal="false" :close-on-click-modal="true"
  467. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  468. :before-close="handleClose" width="480" class="dialog_class sel bgcolor tianjia sel">
  469. <template #header="{ titleId, titleClass }">
  470. <div class="my-header ">
  471. <el-image :src="getImgPath('t3.png')" fit="contain"></el-image>
  472. <h4 :id="titleId" :class="titleClass">加点方法</h4>
  473. </div>
  474. </template>
  475. <div class="numberinput">
  476. <el-form>
  477. <el-form-item label="最大样本点数:" :label-width="formLabelWidth1">
  478. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  479. </el-form-item>
  480. <el-form-item label="加点准则:" :label-width="formLabelWidth1">
  481. <el-select v-model="addval" :suffix-icon="CaretBottom" placeholder="请选择">
  482. <el-option
  483. v-for="item in addlist"
  484. :key="item.value"
  485. :label="item.label"
  486. :value="item.value">
  487. </el-option>
  488. </el-select>
  489. </el-form-item>
  490. <el-form-item label="单次迭代新增样本点数:" :label-width="formLabelWidth1">
  491. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  492. </el-form-item>
  493. <el-form-item label="约束处理方法:" :label-width="formLabelWidth1">
  494. <el-select v-model="addval1" :suffix-icon="CaretBottom" placeholder="请选择">
  495. <el-option
  496. v-for="item in addlist1"
  497. :key="item.value"
  498. :label="item.label"
  499. :value="item.value">
  500. </el-option>
  501. </el-select>
  502. </el-form-item>
  503. </el-form>
  504. </div>
  505. <template #footer>
  506. <div class="dialog-footer">
  507. <el-button @click="dialog.addfun = false">取消</el-button>
  508. <el-button type="primary" @click="dialog.addfun = false">
  509. 确定
  510. </el-button>
  511. </div>
  512. </template>
  513. </el-dialog>
  514. <!-- 任务管理 -->
  515. <el-dialog v-model="dialog.task"
  516. v-if="tabactive=='任务管理'"
  517. align-center :modal="false" :close-on-click-modal="true"
  518. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  519. :before-close="handleClose" width="800px" class="dialog_class bgcolor tianjia">
  520. <template #header="{ titleId, titleClass }">
  521. <div class="my-header ">
  522. <el-image :src="getImgPath('s11.png')" fit="contain"></el-image>
  523. <h4 :id="titleId" :class="titleClass">任务管理</h4>
  524. </div>
  525. </template>
  526. <div>
  527. <el-table :data="tasktable" stripe style="width: 100%">
  528. <el-table-column prop="id" label="任务编号" />
  529. <el-table-column prop="name" label="任务名称" />
  530. <el-table-column prop="state" label="任务类型"/>
  531. <el-table-column prop="time" label="备注" />
  532. </el-table>
  533. <div class="sev_ruwu sev">
  534. <div class="disflex">
  535. <el-form-item label="关键字:">
  536. <el-select v-model="seval4" :suffix-icon="CaretBottom" placeholder="请选择">
  537. <el-option
  538. v-for="item in sevlist"
  539. :key="item.value"
  540. :label="item.label"
  541. :value="item.value">
  542. </el-option>
  543. </el-select>
  544. </el-form-item>
  545. <el-input v-model="name" maxlength="18"
  546. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  547. placeholder="请输入" />
  548. <el-button class="btncolor">查询</el-button>
  549. <el-button class="btncolor">添加</el-button>
  550. <el-button class="btncolor">删除</el-button>
  551. <el-button class="btncolor">提交</el-button>
  552. </div>
  553. </div>
  554. </div>
  555. <template #footer>
  556. <div class="dialog-footer">
  557. <el-button @click="dialog.task = false">取消</el-button>
  558. <el-button type="primary" @click="dialog.task = false">
  559. 确定
  560. </el-button>
  561. </div>
  562. </template>
  563. </el-dialog>
  564. <!-- 任务检索 -->
  565. <el-dialog v-model="dialog.guanli"
  566. v-if="tabactive=='任务检索'"
  567. align-center :modal="false" :close-on-click-modal="true"
  568. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  569. :before-close="handleClose" width="800px" class="dialog_class bgcolor tianjia">
  570. <template #header="{ titleId, titleClass }">
  571. <div class="my-header ">
  572. <el-image :src="getImgPath('s11.png')" fit="contain"></el-image>
  573. <h4 :id="titleId" :class="titleClass">任务检索</h4>
  574. </div>
  575. </template>
  576. <div>
  577. <div class="sev_ruwu">
  578. <div class="disflex">
  579. <el-form-item label="关键字:">
  580. <el-select v-model="seval4" :suffix-icon="CaretBottom" placeholder="请选择">
  581. <el-option
  582. v-for="item in sevlist"
  583. :key="item.value"
  584. :label="item.label"
  585. :value="item.value">
  586. </el-option>
  587. </el-select>
  588. </el-form-item>
  589. <el-input v-model="name" maxlength="18"
  590. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  591. placeholder="请输入关键字" />
  592. <el-checkbox class="magright" label="范围" v-model="checkbox" />
  593. <el-button class="btncolor">查询</el-button>
  594. </div>
  595. </div>
  596. <el-table :data="tasktable" stripe style="width: 100%">
  597. <el-table-column prop="id" label="任务编号" />
  598. <el-table-column prop="name" label="任务名称" />
  599. <el-table-column prop="state" label="任务类型"/>
  600. <el-table-column prop="time" label="备注" />
  601. </el-table>
  602. </div>
  603. <template #footer>
  604. <div class="dialog-footer">
  605. <el-button @click="dialog.guanli = false">取消</el-button>
  606. <el-button type="primary" @click="dialog.guanli = false">
  607. 确定
  608. </el-button>
  609. </div>
  610. </template>
  611. </el-dialog>
  612. <!-- 优化器 -->
  613. <el-dialog v-model="dialog.optimizer"
  614. align-center :modal="false" :close-on-click-modal="true"
  615. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  616. :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel">
  617. <template #header="{ titleId, titleClass }">
  618. <div class="my-header ">
  619. <el-image :src="getImgPath('t2.png')" fit="contain"></el-image>
  620. <h4 :id="titleId" :class="titleClass">优化器</h4>
  621. </div>
  622. </template>
  623. <div class="numberinput lefttext">
  624. <el-form >
  625. <span>代理模型</span>
  626. <el-form-item label="代理模型类型:" :label-width="formLabelWidth2">
  627. <el-select v-model="agval" :suffix-icon="CaretBottom" placeholder="请选择">
  628. <el-option
  629. v-for="item in agelist"
  630. :key="item.value"
  631. :label="item.label"
  632. :value="item.value">
  633. </el-option>
  634. </el-select>
  635. </el-form-item>
  636. <el-form-item label="设计空间类型:" :label-width="formLabelWidth2">
  637. <el-select v-model="agval1" :suffix-icon="CaretBottom" placeholder="请选择">
  638. <el-option
  639. v-for="item in agelist1"
  640. :key="item.value"
  641. :label="item.label"
  642. :value="item.value">
  643. </el-option>
  644. </el-select>
  645. </el-form-item>
  646. <el-form-item label="试验设计方法:" :label-width="formLabelWidth2">
  647. <el-select v-model="agval2" :suffix-icon="CaretBottom" placeholder="请选择">
  648. <el-option
  649. v-for="item in agelist2"
  650. :key="item.value"
  651. :label="item.label"
  652. :value="item.value">
  653. </el-option>
  654. </el-select>
  655. </el-form-item>
  656. <el-form-item label="初始样本点数:" :label-width="formLabelWidth2">
  657. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  658. </el-form-item>
  659. <span>加点方法</span>
  660. <el-form-item label="最大样本点数:" :label-width="formLabelWidth2">
  661. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  662. </el-form-item>
  663. <el-form-item label="加点准则:" :label-width="formLabelWidth2">
  664. <el-select v-model="addval" :suffix-icon="CaretBottom" placeholder="请选择">
  665. <el-option
  666. v-for="item in addlist"
  667. :key="item.value"
  668. :label="item.label"
  669. :value="item.value">
  670. </el-option>
  671. </el-select>
  672. </el-form-item>
  673. <el-form-item label="单次迭代新增样本点数:" :label-width="formLabelWidth1">
  674. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  675. </el-form-item>
  676. <el-form-item label="约束处理方法:" :label-width="formLabelWidth2">
  677. <el-select v-model="addval1" :suffix-icon="CaretBottom" placeholder="请选择">
  678. <el-option
  679. v-for="item in addlist1"
  680. :key="item.value"
  681. :label="item.label"
  682. :value="item.value">
  683. </el-option>
  684. </el-select>
  685. </el-form-item>
  686. <el-form-item label="优化算法" :label-width="formLabelWidth2">
  687. <el-select v-model="ys" :suffix-icon="CaretBottom" placeholder="请选择">
  688. <el-option
  689. v-for="item in yslist"
  690. :key="item.value"
  691. :label="item.label"
  692. :value="item.value">
  693. </el-option>
  694. </el-select>
  695. </el-form-item>
  696. <el-form-item label="种群规模:" :label-width="formLabelWidth2">
  697. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  698. </el-form-item>
  699. <el-form-item label="最大进化代数:" :label-width="formLabelWidth2">
  700. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  701. </el-form-item>
  702. <el-form-item label="交叉概率:" :label-width="formLabelWidth2">
  703. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  704. </el-form-item>
  705. <el-form-item label="变异概率:" :label-width="formLabelWidth2">
  706. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  707. </el-form-item>
  708. <el-form-item label="交叉算子:" :label-width="formLabelWidth2">
  709. <el-select v-model="addval2" :suffix-icon="CaretBottom" placeholder="请选择">
  710. <el-option
  711. v-for="item in addlist2"
  712. :key="item.value"
  713. :label="item.label"
  714. :value="item.value">
  715. </el-option>
  716. </el-select>
  717. </el-form-item>
  718. <el-form-item label="竞赛规模:" :label-width="formLabelWidth2">
  719. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  720. </el-form-item>
  721. <el-form-item label="保留优选策略:" :label-width="formLabelWidth2">
  722. <el-select v-model="addval3" :suffix-icon="CaretBottom" placeholder="请选择">
  723. <el-option
  724. v-for="item in addlist3"
  725. :key="item.value"
  726. :label="item.label"
  727. :value="item.value">
  728. </el-option>
  729. </el-select>
  730. </el-form-item>
  731. <el-form-item label="变异算子选择:" :label-width="formLabelWidth2">
  732. <el-select v-model="addval4" :suffix-icon="CaretBottom" placeholder="请选择">
  733. <el-option
  734. v-for="item in addlist4"
  735. :key="item.value"
  736. :label="item.label"
  737. :value="item.value">
  738. </el-option>
  739. </el-select>
  740. </el-form-item>
  741. <el-form-item label="precision:" :label-width="formLabelWidth2">
  742. <el-select v-model="addval7" :suffix-icon="CaretBottom" placeholder="请选择">
  743. <el-option
  744. v-for="item in addlist7"
  745. :key="item.value"
  746. :label="item.label"
  747. :value="item.value">
  748. </el-option>
  749. </el-select>
  750. </el-form-item>
  751. <el-form-item label="GPU" :label-width="formLabelWidth2">
  752. <el-select v-model="addval8" :suffix-icon="CaretBottom" placeholder="请选择">
  753. <el-option
  754. v-for="item in addlist8"
  755. :key="item.value"
  756. :label="item.label"
  757. :value="item.value">
  758. </el-option>
  759. </el-select>
  760. </el-form-item>
  761. </el-form>
  762. </div>
  763. <template #footer>
  764. <div class="dialog-footer">
  765. <el-button @click="dialog.optimizer = false">取消</el-button>
  766. <el-button type="primary" @click="dialog.optimizer = false">
  767. 确定
  768. </el-button>
  769. </div>
  770. </template>
  771. </el-dialog>
  772. <!-- 内容区 -->
  773. <div class="main mianflex">
  774. <!--left菜单栏 -->
  775. <Sidebar />
  776. <!-- 放图形 -->
  777. <div class="main_container">
  778. <div class="main_model">
  779. <vuefindex :optimizer="dialog.optimizer" @optimizerfalse="optimizerfalse()"></vuefindex>
  780. <div class="maxh221">
  781. <!-- 右侧边栏开始 -->
  782. <!-- 优化监控echarts -->
  783. <div class="opt_moitor" v-if="tabactive=='优化监控'">
  784. <optmonitor />
  785. </div>
  786. <div class="opt_moitor" v-if="tabactive=='可视化'">
  787. <sixtop />
  788. <sixbottom/>
  789. </div>
  790. <!-- 结束 -->
  791. </div>
  792. <el-footer
  793. class="femFooter"
  794. >
  795. <div class="gooterpading">
  796. <div class="footerTitle el-tag--primary">
  797. <div >
  798. <span v-for="(tab, index) in tabs" :key="index" :class="{ 'active': activeIndex === index }"
  799. @click="activeIndex = index">{{ tab }}</span>
  800. </div>
  801. <div>
  802. <li
  803. class="exloadbox"
  804. v-show="elodingfalse"
  805. >
  806. <span>正在求解中</span>
  807. <i class="el-icon-loading"></i>
  808. </li>
  809. <li>
  810. <span >清空</span>
  811. </li>
  812. <li>
  813. <span @click="footerShows('foot')">&#9650;&#9660;</span>
  814. </li>
  815. </div>
  816. </div>
  817. <div v-if="footerShow">
  818. <div class="footerTextBox" v-if="activeIndex==0">
  819. <el-input
  820. class="footerText"
  821. type="textarea"
  822. id="textarea_id"
  823. v-model="logs"
  824. ></el-input>
  825. </div>
  826. <div class="youhualog" v-if="activeIndex==1">
  827. <ul>
  828. <li v-for="(tab, index) in listli" :key="index" :class="{ 'active2': activeIndex2 === index }"
  829. @click="activeIndex2 = index">{{ tab }}</li>
  830. </ul>
  831. <div class="footer-content">
  832. <div class="eldesign" v-if="activeIndex2==0">
  833. <el-table :data="designtable" border style="width: 100%">
  834. <el-table-column type="index" label="编号" width="70" />
  835. <el-table-column prop="name" label="变量名称">
  836. <template #default="{ row }">
  837. <el-input v-model="row.name" @change="handleEdit(row)" />
  838. </template>
  839. </el-table-column>
  840. <el-table-column prop="date" label="变量类型">
  841. <template #default="{ row }">
  842. <el-input v-model="row.date" @change="handleEdit(row)" />
  843. </template>
  844. </el-table-column>
  845. <el-table-column prop="name" label="上限值">
  846. <template #default="{ row }">
  847. <el-input v-model="row.name" @change="handleEdit(row)" />
  848. </template>
  849. </el-table-column>
  850. <el-table-column prop="q" label="权重系数">
  851. <template #default="{ row }">
  852. <el-input v-model="row.q" @change="handleEdit(row)" />
  853. </template>
  854. </el-table-column>
  855. <el-table-column prop="cai" label="基准值" width="100">
  856. <template #default="{ row }">
  857. <el-input v-model="row.cai" @change="handleEdit(row)" />
  858. </template>
  859. </el-table-column>
  860. <el-table-column prop="yin" label="下限值">
  861. <template #default="{ row }">
  862. <el-input v-model="row.yin" @change="handleEdit(row)" />
  863. </template>
  864. </el-table-column>
  865. </el-table>
  866. </div>
  867. <div class="elconstraint" v-if="activeIndex2==1">
  868. <el-table :data="tableData" stripe style="width: 100%">
  869. <el-table-column type="index" label="编号" width="100" />
  870. <el-table-column prop="data" label="约束类型" >
  871. <template v-slot="scope">
  872. <el-select v-model="scope.row.device" class="no-border " :suffix-icon="CaretBottom" placeholder="请选择">
  873. <el-option
  874. v-for="item in options2"
  875. :key="item.value"
  876. :label="item.label"
  877. :value="item.value">
  878. </el-option>
  879. </el-select>
  880. </template>
  881. </el-table-column>
  882. <el-table-column prop="name" label="约束关系" >
  883. <template v-slot="scope">
  884. <el-select class="no-border " v-model="scope.row.z" :suffix-icon="CaretBottom" placeholder="请选择">
  885. <el-option
  886. v-for="item in options3"
  887. :key="item.value"
  888. :label="item.label"
  889. :value="item.value">
  890. </el-option>
  891. </el-select>
  892. </template>
  893. </el-table-column>
  894. <el-table-column prop="address" label="约束基准值">
  895. <template #default="{ row }">
  896. <el-input v-model="row.address" @change="handleEdit(row)" />
  897. </template>
  898. </el-table-column>
  899. </el-table>
  900. </div>
  901. <div class="eloptimize" v-if="activeIndex2==2">
  902. <el-table :data="eloptimize" stripe style="width: 100%">
  903. <el-table-column type="index" label="编号" width="70" />
  904. <el-table-column prop="qi" label="启用" width="70">
  905. <template v-slot="scope">
  906. <el-checkbox :label="false" v-model="scope.row.qi" />
  907. </template>
  908. </el-table-column>
  909. <el-table-column prop="data" label="目标类型" width="120">
  910. <template v-slot="scope">
  911. <el-select v-model="scope.row.device" class="no-border " :suffix-icon="CaretBottom" placeholder="请选择">
  912. <el-option
  913. v-for="item in options"
  914. :key="item.value"
  915. :label="item.label"
  916. :value="item.value">
  917. </el-option>
  918. </el-select>
  919. </template>
  920. </el-table-column>
  921. <el-table-column prop="name" label="优化方向" width="100">
  922. <template v-slot="scope">
  923. <el-select class="no-border " v-model="scope.row.z" :suffix-icon="CaretBottom" placeholder="请选择">
  924. <el-option
  925. v-for="item in options1"
  926. :key="item.value"
  927. :label="item.label"
  928. :value="item.value">
  929. </el-option>
  930. </el-select>
  931. </template>
  932. </el-table-column>
  933. <el-table-column prop="q" label="权重系数">
  934. <template #default="{ row }">
  935. <el-input v-model="row.q" @change="handleEdit(row)" />
  936. </template>
  937. </el-table-column>
  938. <el-table-column prop="cai" label="采用基准翼型数据缩放" width="180">
  939. <template v-slot="scope">
  940. <el-checkbox :label="scope.row.qi?'采用':'不采用'" v-model="scope.row.qi" />
  941. </template>
  942. </el-table-column>
  943. <el-table-column prop="yin" label="缩放因子">
  944. <template #default="{ row }">
  945. <el-input v-model="row.yin" @change="handleEdit(row)" />
  946. </template>
  947. </el-table-column>
  948. <el-table-column prop="address" label="备注" width="200">
  949. <template #default="{ row }">
  950. <el-input v-model="row.address" @change="handleEdit(row)" />
  951. </template>
  952. </el-table-column>
  953. </el-table>
  954. </div>
  955. </div>
  956. <div class="dibu">
  957. <div class="footer-add">
  958. <div class="sev_ruwu">
  959. <div class="disflex ">
  960. <el-form-item label="新增变量数:">
  961. <el-input v-model="tableval" maxlength="18"
  962. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  963. placeholder="请输入关键字" /> </el-form-item>
  964. <el-button class="btncolor">导入</el-button>
  965. <el-button class="btncolor" @click="onAddItem">新增</el-button>
  966. <el-button class="btncolor">确认</el-button>
  967. </div>
  968. </div>
  969. </div>
  970. </div>
  971. </div>
  972. </div>
  973. <div class="pading_foter">
  974. </div>
  975. </div>
  976. </el-footer>
  977. </div>
  978. </div>
  979. </div>
  980. </div>
  981. </el-main>
  982. </el-container>
  983. </div>
  984. </template>
  985. <script setup>
  986. import { ref, onMounted, reactive, } from "vue";
  987. import { RouterView, RouterLink,useRouter } from "vue-router"
  988. import myheader from "@/components/header.vue"
  989. import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
  990. import { Edit,CaretBottom } from '@element-plus/icons-vue'
  991. // import '@/utils/flexible'
  992. import s0 from "@/assets/img/s0.png"
  993. import gc1 from "@/assets/img/gc1.png"
  994. import gc2 from "@/assets/img/gc2.png"
  995. import gc3 from "@/assets/img/gc3.png"
  996. import wen from "@/assets/img/wen.png"
  997. import optmonitor from './echart/optimize_monitor.vue'
  998. import sixtop from './echart/six_top.vue'
  999. import sixbottom from './echart/six_bottom.vue'
  1000. import sixindex from './demo/index.vue'
  1001. import sixchine from './demo/chine.vue'
  1002. import vuefindex from './vuetree/index.vue'
  1003. import Sidebar from './vuetree/Sidebar.vue'
  1004. const router = useRouter();
  1005. let logs=ref("");
  1006. let tableval=ref();
  1007. let elodingfalse=ref(false);
  1008. let footerShow=ref(false);
  1009. let tabName=ref("one")
  1010. const tabs = ['信息栏', '优化问题'];
  1011. const listli = ['设计变量', '约束条件', '优化目标'];
  1012. const activeIndex = ref(0);
  1013. const activeIndex2 = ref(0);
  1014. const datatree = ref([
  1015. {
  1016. id:1,
  1017. label: '工程',
  1018. children: [
  1019. {
  1020. id:'1-1',
  1021. label: '优化问题',
  1022. img:gc1,
  1023. },
  1024. {
  1025. id:'1-2',
  1026. label: '分析流程',
  1027. img:gc2,
  1028. },
  1029. {
  1030. id:'1-3',
  1031. label: '优化器',
  1032. img:gc3
  1033. },
  1034. ],
  1035. },
  1036. ])
  1037. let options1=ref([
  1038. { label: '增大', value: '增大' },
  1039. { label: '减小', value: '减小' },
  1040. ])
  1041. let options2=ref([
  1042. { label: '升力系数', value: '升力系数' },
  1043. { label: '翼型面积', value: '翼型面积' },
  1044. ])
  1045. let options3=ref([
  1046. { label: '大于', value: '大于' },
  1047. { label: '小于', value: '小于' },
  1048. ])
  1049. const datatree1 = ref([
  1050. {
  1051. id:2,
  1052. label: '优化问题组件',
  1053. img:'',
  1054. children: [
  1055. {
  1056. id:'2_1',
  1057. label: '优化问题',
  1058. img:"wen.png",
  1059. },
  1060. ],
  1061. },
  1062. {
  1063. id:3,
  1064. label: '学科分析组件',
  1065. img:'',
  1066. children: [
  1067. {
  1068. id:'3-1',
  1069. label: 'CATIA',
  1070. img:'xuek1.png',
  1071. },
  1072. {
  1073. id:'3-2',
  1074. label: 'Excel',
  1075. img:'xuek2.png',
  1076. },
  1077. {
  1078. id:'3-3',
  1079. label: 'Feko',
  1080. img:'xuek3.png'
  1081. },
  1082. {
  1083. id:'3-4',
  1084. label: 'Fluent',
  1085. img:'xuek4.png',
  1086. },
  1087. {
  1088. id:'3-5',
  1089. label: 'HCFD',
  1090. img:'xuek5.png',
  1091. },
  1092. {
  1093. id:'3-6',
  1094. label: 'Matlab',
  1095. img:"xuek6.png"
  1096. },
  1097. {
  1098. id:'3-7',
  1099. label: 'Nastran',
  1100. img:'xuek7.png',
  1101. },
  1102. {
  1103. id:'3-8',
  1104. label: 'Python',
  1105. img:'xuek8.png',
  1106. },
  1107. {
  1108. id:'3-9',
  1109. label: 'AirfoilAero',
  1110. img:'xuek9.png'
  1111. },
  1112. ],
  1113. },
  1114. {
  1115. id:4,
  1116. label: '优化器组件',
  1117. img:'',
  1118. children: [
  1119. {
  1120. id:'4-1',
  1121. label: '进化优化器',
  1122. img:'youh1.png',
  1123. },
  1124. {
  1125. id:'4-2',
  1126. label: '代理优化器',
  1127. img:'youh2.png',
  1128. },
  1129. {
  1130. id:'4-3',
  1131. label: '梯度优化器',
  1132. img:'youh3.png',
  1133. },
  1134. ],
  1135. },
  1136. ])
  1137. let defaultExpandedArr=ref([]);
  1138. const defaultProps = {
  1139. children: 'children',
  1140. label: 'label',
  1141. }
  1142. // treeData.value.forEach((item) => {
  1143. // defaultExpandedArr.value.push(item.id);
  1144. // });
  1145. const activeName = ref('Role')
  1146. const activeName1 = ref('message')
  1147. let active = ref('');
  1148. let tabactive=ref("");
  1149. let checkbox=ref(false)
  1150. let formLabelWidth6 = ref(100)
  1151. let formLabelWidth1 = ref(200)
  1152. let formLabelWidth2 = ref(130)
  1153. let canshu=ref();
  1154. let question = ref([
  1155. { url: 'k1.png', titlie: "面积图" },
  1156. { url: 'k2.png', titlie: "柱状图" },
  1157. { url: 'k3.png', titlie: "饼状图" },
  1158. { url: 'k4.png', titlie: "折线图" },
  1159. { url: 'k5.png', titlie: "散点图" },
  1160. { url: 'k6.png', titlie: "横条图" },
  1161. { url: 'k7.png', titlie: "雷达图" },
  1162. { url: 'k8.png', titlie: "查看报告" },
  1163. { url: 'k9.png', titlie: "导出报告" },
  1164. ])
  1165. let roletion = ref([
  1166. { url: 'f41.png', titlie: "测试函数模板" },
  1167. { url: 'r1.png', titlie: "工程优化模板" },
  1168. { url: 'r2.png', titlie: "自定义" },
  1169. ])
  1170. let tasktion = ref([
  1171. { url: 't0.png', titlie: "外形参数化" },
  1172. ])
  1173. let Rolelist=ref([
  1174. { url: 'w1.png', titlie: "优化问题组件" },
  1175. { url: 'w2.png', titlie: "学科分析组件" },
  1176. { url: 'w3.png', titlie: "优化器组件" },
  1177. ])
  1178. let Rolelist1=ref([
  1179. { url: 'w4.png', titlie: "逻辑流连线" },
  1180. { url: 'w5.png', titlie: "数据流连线" },
  1181. { url: 'w6.png', titlie: "选择连线颜色" },
  1182. ])
  1183. let Rolelist2=ref([
  1184. { url: 'w7.png', titlie: "模块组合" },
  1185. { url: 'w8.png', titlie: "模块拆分" },
  1186. { url: 'w9.png', titlie: "选择图框颜色" },
  1187. ])
  1188. let Rolelist3=ref([
  1189. { url: 'w10.png', titlie: "添加注释" },
  1190. ])
  1191. let Threelist = ref([
  1192. { url: 'tt.png', titlie: "开始" },
  1193. { url: 'tt1.png', titlie: "暂停" },
  1194. { url: 'tt2.png', titlie: "续算" },
  1195. { url: 'tts.png', titlie: "结束" },
  1196. ])
  1197. let Threelist1 = ref([
  1198. { url: 'yh1.png', titlie: "列表监控" },
  1199. { url: 'yh2.png', titlie: "曲线监控" },
  1200. { url: 'yh3.png', titlie: "过程监控" },
  1201. ])
  1202. let Sevenlist = ref([
  1203. { url: 's11.png', titlie: '任务管理' },
  1204. { url: 's12.png', titlie: '任务检索' },
  1205. { url: 's13.png', titlie: '备份与恢复' },
  1206. ])
  1207. let eightlist = ref([
  1208. { url: 'e1.png', titlie: '快速入门' },
  1209. { url: 'e2.png', titlie: '帮助文档' },
  1210. { url: 'e3.png', titlie: '关于软件' },
  1211. ])
  1212. let canshulist = ref([
  1213. { label: 'CST参数化', value: 'CST参数化' },
  1214. { label: 'FFD参数化', value: 'FFD参数化' },
  1215. ])
  1216. let sevlist = ref([
  1217. { label: '任务编号', value: '任务编号' },
  1218. { label: '任务名称', value: '任务名称' },
  1219. { label: '任务类型', value: '任务类型' },
  1220. { label: '创建时间', value: '创建时间' },
  1221. ])
  1222. let seval4=ref('任务名称');
  1223. let agelist = ref([
  1224. { label: 'Kriging模型', value: 'Kriging模型' },
  1225. { label: '相关函数类型', value: '相关函数类型' },
  1226. { label: '超参数优化方法', value: '超参数优化方法' },
  1227. { label: 'Hooke Jeeves方法循环次数', value: 'Hooke Jeeves方法循环次数' },
  1228. ])
  1229. let agval=ref("Kriging模型")
  1230. let agval1=ref("固定设计空间")
  1231. let agval2=ref("拉丁超立方")
  1232. let agelist1 = ref([
  1233. { label: '固定设计空间', value: '固定设计空间' },
  1234. ])
  1235. let agelist2 = ref([
  1236. { label: '拉丁超立方', value: '拉丁超立方' },
  1237. ])
  1238. let addval=ref("EI + MSP")
  1239. let addlist = ref([
  1240. { label: 'EI + MSP', value: 'EI + MSP' },
  1241. ])
  1242. let yslist = ref([
  1243. { label: 'GA遗传算法', value: 'GA遗传算法' },
  1244. { label: 'PSO', value: 'PSO' },
  1245. ])
  1246. let addval1=ref("概率相乘法")
  1247. let addlist1 = ref([
  1248. { label: '概率相乘法', value: '概率相乘法' },
  1249. ])
  1250. let addval2=ref("SBX交叉")
  1251. let addlist2 = ref([
  1252. { label: 'SBX交叉', value: 'SBX交叉' },
  1253. ])
  1254. let addval3=ref("最佳保留策略")
  1255. let ys=ref("GA遗传算法")
  1256. let addlist3 = ref([
  1257. { label: '最佳保留策略', value: '最佳保留策略' },
  1258. ])
  1259. let addval4=ref("倒位变异")
  1260. let addlist4 = ref([
  1261. { label: '倒位变异', value: '倒位变异' },
  1262. ])
  1263. let addval7=ref("1e-7")
  1264. let addlist7 = ref([
  1265. { label: '1e-7', value: '1e-7' },
  1266. ])
  1267. let addval8=ref("YES")
  1268. let addlist8 = ref([
  1269. { label: 'YES', value: 'YES' },
  1270. ])
  1271. let dialog = ref({
  1272. newdialog: false,
  1273. setdialog: false,
  1274. targetdialog: false,
  1275. design:false,
  1276. constraint:false,
  1277. parameter:false,
  1278. agency:false,
  1279. optimizer:false,
  1280. enddialog:false,
  1281. addfun:false,
  1282. sufun:false,
  1283. task:false,
  1284. guanli:false,
  1285. })
  1286. let options=ref([
  1287. { label: '升阻比', value: '升阻比' },
  1288. { label: 'RCS', value: 'RCS' },
  1289. ])
  1290. let tasklist=ref([
  1291. { label: '气动', value: '气动' },
  1292. { label: '结构', value: '结构' },
  1293. { label: '隐身', value: '隐身' },
  1294. { label: '噪声', value: '噪声' },
  1295. ])
  1296. const optiongroup = [
  1297. {
  1298. label: '大飞机',
  1299. options: [
  1300. {
  1301. value: '气动优化',
  1302. label: '气动优化',
  1303. },
  1304. {
  1305. value: '气弹优化',
  1306. label: '气弹优化',
  1307. },
  1308. ],
  1309. },
  1310. {
  1311. label: '直升机',
  1312. options: [
  1313. {
  1314. value: '气动优化1',
  1315. label: '气动优化',
  1316. },
  1317. {
  1318. value: '气弹优化2',
  1319. label: '气弹优化',
  1320. },
  1321. {
  1322. value: '气动噪声优化',
  1323. label: '气动噪声优化',
  1324. },
  1325. ],
  1326. },
  1327. ]
  1328. const eloptimize = ref([
  1329. {
  1330. qi:"false",
  1331. date: '2016-05-03',
  1332. device: '升阻比',
  1333. z: '增大',
  1334. q:1.0,
  1335. cai:false,
  1336. yin:1.0,
  1337. address:'serrrrrrr'
  1338. }
  1339. ])
  1340. const tableData = ref([
  1341. {
  1342. device: '升阻比',
  1343. z: '增大',
  1344. address:'serrrrrrr'
  1345. },
  1346. ])
  1347. const designtable = ref([
  1348. {
  1349. name:"false",
  1350. date: '2016-05-03',
  1351. device: '升阻比',
  1352. z: '增大',
  1353. q:1.0,
  1354. cai:'false',
  1355. yin:1.0,
  1356. address:'serrrrrrr'
  1357. },
  1358. ])
  1359. const tasktable = ref([
  1360. {
  1361. id:"01",
  1362. time: '2016-05-03',
  1363. name: '升阻比',
  1364. state: '增大',
  1365. },
  1366. {
  1367. id:"02",
  1368. time: '2016-05-03',
  1369. name: '升阻比',
  1370. state: '增大',
  1371. },
  1372. ])
  1373. let name = ref("1")
  1374. let num = ref(1)
  1375. const getImgPath = (url) => {
  1376. return new URL(`../assets/img/${url}`, import.meta.url).href
  1377. }
  1378. const handleClick = (tab, event) => {
  1379. console.log(tab.props.name);
  1380. tabactive.value=tab.props.name;
  1381. if(tabactive.value=='User'){
  1382. router.replace({ path: '/' })
  1383. }
  1384. dialogcolse()
  1385. }
  1386. //表格点击事件
  1387. const handleEdit = (row) => {
  1388. console.log('编辑后的数据:', row);
  1389. // 在这里处理数据保存逻辑,例如发送请求到后端更新数据
  1390. };
  1391. const footerClick = (tab, event) => {
  1392. }
  1393. // 关闭所有弹窗
  1394. const dialogcolse=()=>{
  1395. dialog.value.newdialog = false;
  1396. dialog.value.setdialog = false;
  1397. dialog.value.targetdialog = false;
  1398. dialog.value.design = false;
  1399. dialog.value.constraint = false;
  1400. dialog.value.parameter = false;
  1401. dialog.value.agency = false;
  1402. dialog.value.addfun = false;
  1403. dialog.value.sufun = false;
  1404. dialog.value.enddialog = false;
  1405. dialog.value.task = false;
  1406. dialog.value.guanli = false;
  1407. }
  1408. // Tree的点击事件
  1409. const handleNodeClick = (data) => {
  1410. console.log(data)
  1411. tabactive.value=data.label;
  1412. dialogbolen();
  1413. }
  1414. const optimizerfalse=(val)=>{
  1415. console.log(11111)
  1416. dialog.value.optimizer=true;
  1417. console.log(dialog.value.optimizer);
  1418. }
  1419. // 模块选择
  1420. const clickgeometry = (e, index, key,name) => {
  1421. console.log(key);
  1422. console.log(name);
  1423. tabactive.value=name;
  1424. dialogbolen();
  1425. }
  1426. const dialogbolen=()=>{
  1427. switch (tabactive.value) {
  1428. case "新建任务":
  1429. dialog.value.newdialog = true;
  1430. break;
  1431. case "问题设定":
  1432. dialog.value.setdialog = true;
  1433. break;
  1434. case "优化目标":
  1435. dialog.value.targetdialog = true;
  1436. break;
  1437. case "设计变量":
  1438. dialog.value.design = true;
  1439. break;
  1440. case "约束条件":
  1441. dialog.value.constraint = true;
  1442. break;
  1443. case "外形参数化":
  1444. dialog.value.parameter = true;
  1445. break;
  1446. case "代理模型":
  1447. dialog.value.agency = true;
  1448. break;
  1449. case "加点方法":
  1450. dialog.value.addfun = true;
  1451. break;
  1452. case "优化算法":
  1453. dialog.value.sufun = true;
  1454. break;
  1455. case "终止条件":
  1456. dialog.value.enddialog = true;
  1457. break;
  1458. case "任务管理":
  1459. dialog.value.task = true;
  1460. break;
  1461. case "任务检索":
  1462. dialog.value.guanli = true;
  1463. break;
  1464. default:
  1465. console.log(1111)
  1466. }
  1467. }
  1468. const deviceSelectChange = () => {
  1469. }
  1470. const handleClose = (done) => {
  1471. console.log(111)
  1472. dialog.value.newdialog = false;
  1473. done();
  1474. };
  1475. const targetclick=()=>{
  1476. console.log(tableData.value)
  1477. }
  1478. //新增
  1479. const onAddItem=()=>{
  1480. let tablevalnum=Number(tableval.value)
  1481. if(activeIndex2.value==0){
  1482. for (let i = 0; i < tablevalnum; i++) {
  1483. designtable.value.push({
  1484. name:"",
  1485. date: '',
  1486. device: '',
  1487. z: '',
  1488. q:'',
  1489. cai:'',
  1490. yin:'',
  1491. address:''
  1492. })
  1493. }
  1494. } else if(activeIndex2.value==1){
  1495. for (let i = 0; i < tablevalnum; i++) {
  1496. tableData .value.push({
  1497. device: '升阻比',
  1498. z: '增大',
  1499. address:''
  1500. })
  1501. }
  1502. }else if(activeIndex2.value==2){
  1503. for (let i = 0; i < tablevalnum; i++) {
  1504. eloptimize.value.push( {
  1505. qi:"false",
  1506. date: '2016-05-03',
  1507. device: '升阻比',
  1508. z: '增大',
  1509. q:1.0,
  1510. cai:false,
  1511. yin:1.0,
  1512. address:'serrrrrrr'
  1513. })
  1514. }
  1515. }
  1516. }
  1517. // 日志框
  1518. // 日志的文本框
  1519. const footerShows=(evt)=>{
  1520. if (evt == "claer") {
  1521. logs.value = "";
  1522. } else {
  1523. footerShow.value = !footerShow.value;
  1524. }
  1525. }
  1526. </script>
  1527. <style lang="scss" scoped>
  1528. //有子节点 且未展开
  1529. .left_main_content :deep(.el-icon svg) {
  1530. display: block;
  1531. }
  1532. .footerTitle {
  1533. display: flex;
  1534. justify-content: space-between;
  1535. padding: 5px 20px;
  1536. font-size: 20px;
  1537. height: 25px !important;
  1538. z-index: 99;;
  1539. border-radius: 5px 5px 0px 0px;
  1540. overflow: hidden;
  1541. }
  1542. .footerTitle div {
  1543. display: flex;
  1544. justify-content: space-around;
  1545. align-items: center;
  1546. font-size: 14px;
  1547. }
  1548. .kongzhit{
  1549. position: absolute;
  1550. bottom: 0;
  1551. width: 100%;
  1552. }
  1553. .footerTitle p {
  1554. margin: 0;
  1555. }
  1556. .footerTitle span {
  1557. padding: 5px 10px;
  1558. cursor: default;
  1559. }
  1560. .footerText .el-textarea__inner {
  1561. width: 100%;
  1562. height: 135px!important;
  1563. border: 0;
  1564. font-size: 12px;
  1565. color: #333;
  1566. padding: 2px;
  1567. }
  1568. //没有子节点
  1569. </style>
  1570. <style>
  1571. .wentsd{
  1572. padding:0 8px;
  1573. }
  1574. .el-treeicon .el-tree-node__expand-icon.is-leaf{
  1575. display: none !important;
  1576. }
  1577. .custom-text{
  1578. font-family: Inter, Inter;
  1579. font-weight: 600;
  1580. font-size: 16px;
  1581. color: #383838;
  1582. line-height: 24px;
  1583. text-align: left;
  1584. font-style: normal;
  1585. text-transform: none;
  1586. }
  1587. .el-tree .el-tree-node__children .custom-text{
  1588. font-size: 13px; /* 这里设置为20px,你可以根据需求调整大小 */
  1589. font-weight: 400;
  1590. }
  1591. /* .el-tree .el-tree-node.is-current>.el-tree-node__content img{
  1592. display: none;
  1593. } */
  1594. .custom-tree1 > .el-tree-node > .el-tree-node__content >div img{
  1595. display: none; /* 隐藏一级节点复选框 */
  1596. }
  1597. .footerTitle{
  1598. background: #9FCDFF;
  1599. border-radius: 0px 0px 0px 0px;
  1600. }
  1601. .footer-tab .el-tabs__item{
  1602. color: #383838;
  1603. }
  1604. .footerTitle .active {
  1605. background-color: #f0f0f0;
  1606. }
  1607. .youhualog{
  1608. width: 100%;
  1609. height: 178px;
  1610. overflow-y: auto;
  1611. background: #fff;
  1612. }
  1613. .youhualog .active2 {
  1614. background-color: #f0f0f0;
  1615. }
  1616. .youhualog ul{
  1617. width: 320px;
  1618. display: flex;
  1619. }
  1620. .youhualog ul li{
  1621. flex: 1;
  1622. background: #DFDFDF ;
  1623. border: 1px solid #2267B1;
  1624. font-size: 14px;
  1625. }
  1626. .footer-content{
  1627. padding: 15px 24px;
  1628. border: 1px solid #2267B1;
  1629. margin-right: 119px;
  1630. }
  1631. .footer-add{
  1632. width: 530px;
  1633. }
  1634. .dibu{
  1635. margin-top: 10px;
  1636. display: flex;
  1637. justify-content: flex-end;
  1638. }
  1639. .dibu .el-input__wrapper{
  1640. width: 226px;
  1641. }
  1642. .dibu .btncolor{
  1643. margin-top: 2px;
  1644. height: 27px;
  1645. background: #FFFFFF;
  1646. box-shadow: 0px 2px 2px 0px #2267B1;
  1647. border-radius: 0px 0px 0px 0px;
  1648. border: 1px solid #2267B1;
  1649. }
  1650. .el-table td.el-table__cell div .el-input__wrapper{
  1651. box-shadow: none !important;
  1652. padding: 0;
  1653. }
  1654. .el-table .el-table__cell{
  1655. padding: 0;
  1656. }
  1657. .gooterpading{
  1658. border: 1px solid #2267B1;
  1659. }
  1660. .el-table th .cell{
  1661. background:#D8D8D8;
  1662. }
  1663. .el-table .cell{
  1664. font-size: 12px;
  1665. }
  1666. .el-table td.el-table__cell div{
  1667. height: 24px;
  1668. overflow: hidden;
  1669. }
  1670. .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf,.eldesign{
  1671. border: 1px solid #000000;
  1672. }
  1673. </style>