home.vue 147 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221
  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 ">
  18. <div class="threelist">
  19. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist" :key="'Role' + index"
  20. :class="{ activeOrange: active == 'Role' + index }"
  21. @click="clickgeometry($event, index, 'Role' + index, item.titlie)">
  22. <el-image :src="getImgPath(item.url)" fit="cover" />
  23. <span>{{ item.titlie }}</span>
  24. </div>
  25. </div>
  26. </div> -->
  27. <!-- <div class="item2 margr" @click="clickgeometry($event, index, 'Role-' + '2', undmodel)">
  28. <el-image :src="getImgPath('tow1.png')" fit="cover" />
  29. <span>{{ f4ce }}</span>
  30. <el-select v-model="f4ce" class="no-border headersele" :suffix-icon="CaretBottom">
  31. <el-option v-for="item in optiongroup1" :key="item.value" :label="item.label" :value="item.value">
  32. </el-option>
  33. </el-select>
  34. </div> -->
  35. <div class="listitem lbg_color3 bkcolor3 threelist">
  36. <div class="item2 margr" @click="clickgeometry($event, index, 'Role-' + '2', undmodel)">
  37. <el-image :src="getImgPath('tow1.png')" fit="cover" />
  38. <span>{{ f4ce }}</span>
  39. <el-select v-model="f4ce" class="no-border headersele" :suffix-icon="CaretBottom">
  40. <el-option v-for="item in optiongroup1" :key="item.value" :label="item.label" :value="item.value">
  41. </el-option>
  42. </el-select>
  43. </div>
  44. <div class="item2 margr" @click="clickgeometry($event, index, 'Role-' + '1', modelban)">
  45. <el-image :src="getImgPath('tow2.png')" fit="cover" />
  46. <span>{{ modelban }}</span>
  47. <el-select v-model="modelban" class="no-border headersele" :suffix-icon="CaretBottom">
  48. <el-option-group v-for="group in optiongroup" :key="group.label" :label="group.label">
  49. <el-option v-for="item in group.options" :key="item.value" :label="item.label"
  50. :value="item.value" />
  51. </el-option-group>
  52. </el-select>
  53. </div>
  54. <div class="item2 margr" @click="clickgeometry($event, index, 'Role-' + '2', undmodel)">
  55. <el-image :src="getImgPath('tow3.png')" fit="cover" />
  56. <span>{{ undmodel }}</span>
  57. <el-select v-model="undmodel" class="no-border headersele" :suffix-icon="CaretBottom">
  58. <el-option v-for="item in options4" :key="item.value" :label="item.label" :value="item.value">
  59. <div style="display: flex; align-items: center;">
  60. <img :src="item.icon" style="width: 20px; height: 20px; margin-right: 10px;" />
  61. <span>{{ item.label }}</span>
  62. </div>
  63. </el-option>
  64. </el-select>
  65. </div>
  66. </div>
  67. <!-- -->
  68. <div class="listitem lbg_color3 bkcolor3 ">
  69. <div class="threelist">
  70. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist1" :key="'Role1' + index"
  71. :class="{ activeOrange: active == 'Role1' + index }"
  72. @click="clickgeometry($event, index, 'Role1' + index, item.titlie)">
  73. <el-image :src="getImgPath(item.url)" fit="cover" />
  74. <span>{{ item.titlie }}</span>
  75. </div>
  76. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist11" :key="'Role11' + index"
  77. :class="{ activeOrange: active == 'Role11' + index }"
  78. @click="clickgeometry($event, index, 'Role11' + index, item.titlie)">
  79. <el-image :src="getImgPath(item.url)" fit="cover" />
  80. <el-color-picker v-model="color1" @change="colorpicker()"
  81. :class="{ 'is-show-panel': showTrigger }" />
  82. <span>{{ item.titlie }}</span>
  83. </div>
  84. </div>
  85. </div>
  86. <!-- -->
  87. <div class="listitem lbg_color3 bkcolor3 ">
  88. <div class="threelist">
  89. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist2" :key="'Role2' + index"
  90. :class="{ activeOrange: active == 'Role2' + index }"
  91. @click="clickgeometry($event, index, 'Role2' + index, item.titlie)">
  92. <el-image :src="getImgPath(item.url)" fit="cover" />
  93. <span>{{ item.titlie }}</span>
  94. </div>
  95. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist22" :key="'Role22' + index"
  96. :class="{ activeOrange: active == 'Role22' + index }"
  97. @click="clickgeometry($event, index, 'Role22' + index, item.titlie)">
  98. <el-image :src="getImgPath(item.url)" fit="cover" />
  99. <el-color-picker v-model="colortier" color-format="rgba" show-alpha @change="colorpickertier()"
  100. :class="{ 'is-show-panel': showTrigger }" />
  101. <span>{{ item.titlie }}</span>
  102. </div>
  103. </div>
  104. </div>
  105. <!-- -->
  106. <div class="listitem lbg_color3 bkcolor3 ">
  107. <div class="threelist">
  108. <div class="item2 floatitem wentsd" v-for="(item, index) in Rolelist3" :key="'Role3' + index"
  109. :class="{ activeOrange: active == 'Role3' + index }"
  110. @click="clickgeometry($event, index, 'Role3' + index, item.titlie)">
  111. <el-image :src="getImgPath(item.url)" fit="cover" />
  112. <span>{{ item.titlie }}</span>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </el-tab-pane>
  118. <el-tab-pane label="优化运行" name="Three">
  119. <div class="imgzong">
  120. <div class="listitem lbg_color3 bkcolor3 threelist">
  121. <div class="item2 floatitem" v-for="(item, index) in Threelist" :key="'Three-' + index"
  122. :class="{ activeOrange: active == 'Three-' + index }"
  123. @click="clickgeometry($event, index, 'Three-' + index, item.titlie)">
  124. <el-image :src="getImgPath(item.url)" fit="cover" />
  125. <span>{{ item.titlie }}</span>
  126. </div>
  127. </div>
  128. <!-- <div class="listitem lbg_color3 bkcolor3" v-for="(item, index) in Threelist1" :key="'Three1-' + index"
  129. :class="{ activeOrange: active == 'Three1' + index }"
  130. @click="clickgeometry($event, index, 'Three1' + index,item.titlie )">
  131. <div class="item2 ">
  132. <el-image :src="getImgPath(item.url)" fit="cover" />
  133. <span>{{ item.titlie }}</span>
  134. </div>
  135. </div> -->
  136. <div class="listitem lbg_color3 bkcolor3 ">
  137. <div class="threelist">
  138. <div class="item2 floatitem wentsd1" v-for="(item, index) in Threelist1" :key="'Three1' + index"
  139. :class="{ activeOrange: active == 'Three1' + index }"
  140. @click="clickgeometry($event, index, 'Three1' + index, item.titlie)">
  141. <el-image :src="getImgPath(item.url)" fit="cover" />
  142. <span>{{ item.titlie }}</span>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </el-tab-pane>
  148. <el-tab-pane label="可视化" name="Config">
  149. <div class="imgzong">
  150. <!-- <button @click="etImgPath()"></button> -->
  151. <div class="listitem lbg_color3 bkcolor3 threelist" v-for="(item, index) in question" :key="'Config-' + index"
  152. :class="{ activeOrange: active == 'Config-' + index }"
  153. @click="clickgeometry($event, index, 'Config-' + index, item.titlie)">
  154. <div class="item2 ">
  155. <el-image :src="getImgPath(item.url)" fit="cover" />
  156. <span>{{ item.titlie }}</span>
  157. </div>
  158. </div>
  159. </div>
  160. </el-tab-pane>
  161. <el-tab-pane label="数据库管理" name="Seven">
  162. <div class="imgzong">
  163. <div class="listitem lbg_color3 bkcolor3 threelist" v-for="(item, index) in Sevenlist" :key="'Seven' + index"
  164. :class="{ activeOrange: active == 'Seven' + index }"
  165. @click="clickgeometry($event, index, 'Seven' + index, item.titlie)">
  166. <div class="item2 ">
  167. <el-image :src="getImgPath(item.url)" fit="cover" />
  168. <span>{{ item.titlie }}</span>
  169. </div>
  170. </div>
  171. </div>
  172. </el-tab-pane>
  173. <el-tab-pane label="帮助" name="eight">
  174. <div class="imgzong">
  175. <div class="listitem lbg_color3 bkcolor3 threelist" v-for="(item, index) in eightlist" :key="'eight' + index"
  176. :class="{ activeOrange: active == 'eight' + index }"
  177. @click="clickgeometry($event, index, 'eight' + index, item.titlie)">
  178. <div class="item2 ">
  179. <el-image :src="getImgPath(item.url)" fit="cover" />
  180. <span>{{ item.titlie }}</span>
  181. </div>
  182. </div>
  183. </div>
  184. </el-tab-pane>
  185. </el-tabs>
  186. </div>
  187. <!-- 新建任务 -->
  188. <el-dialog v-model="dialog.newdialog" v-if="tabactive == '新建任务'" align-center :modal="false"
  189. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  190. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  191. class="dialog_class bgcolor tianjia">
  192. <template #header="{ titleId, titleClass }">
  193. <div class="my-header ">
  194. <el-image :src="getImgPath('s0.png')" fit="contain"></el-image>
  195. <h4 :id="titleId" :class="titleClass">新建任务</h4>
  196. </div>
  197. </template>
  198. <div>
  199. <el-form>
  200. <el-form-item label="任务编号:" :label-width="formLabelWidth6">
  201. <el-input v-model="name" maxlength="18"
  202. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  203. placeholder="请输入" />
  204. </el-form-item>
  205. <el-form-item label="任务名称:" :label-width="formLabelWidth6">
  206. <el-input v-model="name" maxlength="18"
  207. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  208. placeholder="请输入" />
  209. </el-form-item>
  210. <el-form-item label="任务类型:" :label-width="formLabelWidth6">
  211. <el-input v-model="name" maxlength="18"
  212. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  213. placeholder="请输入" />
  214. </el-form-item>
  215. <el-form-item label="备注:" :label-width="formLabelWidth6">
  216. <el-input v-model="name" maxlength="18" type="textarea"
  217. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  218. placeholder="请输入" />
  219. </el-form-item>
  220. </el-form>
  221. </div>
  222. <template #footer>
  223. <div class="dialog-footer">
  224. <el-button @click="dialog.newdialog = false">取消</el-button>
  225. <el-button type="primary" @click="dialog.newdialog = false">
  226. 确定
  227. </el-button>
  228. </div>
  229. </template>
  230. </el-dialog>
  231. <!-- 问题设定 -->
  232. <el-dialog v-model="dialog.setdialog" v-if="tabactive == '问题设定'" align-center :modal="false"
  233. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  234. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  235. class="dialog_class bgcolor tianjia">
  236. <template #header="{ titleId, titleClass }">
  237. <div class="my-header ">
  238. <el-image :src="getImgPath('q0.png')" fit="contain"></el-image>
  239. <h4 :id="titleId" :class="titleClass">问题设定</h4>
  240. </div>
  241. </template>
  242. <div class="numberinput">
  243. <el-form>
  244. <el-form-item label="目标函数个数:" :label-width="formLabelWidth1">
  245. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  246. </el-form-item>
  247. <el-form-item label="建立代理模型约束个数:" :label-width="formLabelWidth1">
  248. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  249. </el-form-item>
  250. <el-form-item label="不建立代理模型约束个数:" :label-width="formLabelWidth1">
  251. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  252. </el-form-item>
  253. </el-form>
  254. </div>
  255. <template #footer>
  256. <div class="dialog-footer">
  257. <el-button @click="dialog.setdialog = false">取消</el-button>
  258. <el-button type="primary" @click="dialog.setdialog = false">
  259. 确定
  260. </el-button>
  261. </div>
  262. </template>
  263. </el-dialog>
  264. <!-- 外形参数化 -->
  265. <el-dialog v-model="dialog.parameter" v-if="tabactive == 'Task-11'" align-center :modal="false"
  266. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  267. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  268. class="dialog_class bgcolor tianjia sel">
  269. <template #header="{ titleId, titleClass }">
  270. <div class="my-header ">
  271. <el-image :src="getImgPath('t0.png')" fit="contain"></el-image>
  272. <h4 :id="titleId" :class="titleClass">外形参数化</h4>
  273. </div>
  274. </template>
  275. <div class="numberinput">
  276. <el-form>
  277. <el-form-item label="参数化方法:" :label-width="formLabelWidth6">
  278. <el-select v-model="canshu" :suffix-icon="CaretBottom" placeholder="请选择">
  279. <el-option v-for="item in canshulist" :key="item.value" :label="item.label" :value="item.value">
  280. </el-option>
  281. </el-select>
  282. </el-form-item>
  283. </el-form>
  284. </div>
  285. <template #footer>
  286. <div class="dialog-footer">
  287. <el-button @click="dialog.parameter = false">取消</el-button>
  288. <el-button type="primary" @click="dialog.parameter = false">
  289. 确定
  290. </el-button>
  291. </div>
  292. </template>
  293. </el-dialog>
  294. <!-- 代理模型 -->
  295. <el-dialog v-model="dialog.agency" v-if="tabactive == '代理模型'" align-center :modal="false"
  296. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  297. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  298. class="dialog_class bgcolor tianjia sel">
  299. <template #header="{ titleId, titleClass }">
  300. <div class="my-header ">
  301. <el-image :src="getImgPath('t2.png')" fit="contain"></el-image>
  302. <h4 :id="titleId" :class="titleClass">代理模型</h4>
  303. </div>
  304. </template>
  305. <div class="numberinput">
  306. <el-form>
  307. <el-form-item label="代理模型类型:" :label-width="formLabelWidth2">
  308. <el-select v-model="agval" :suffix-icon="CaretBottom" placeholder="请选择">
  309. <el-option v-for="item in agelist" :key="item.value" :label="item.label" :value="item.value">
  310. </el-option>
  311. </el-select>
  312. </el-form-item>
  313. <el-form-item label="设计空间类型:" :label-width="formLabelWidth2">
  314. <el-select v-model="agval1" :suffix-icon="CaretBottom" placeholder="请选择">
  315. <el-option v-for="item in agelist1" :key="item.value" :label="item.label" :value="item.value">
  316. </el-option>
  317. </el-select>
  318. </el-form-item>
  319. <el-form-item label="试验设计方法:" :label-width="formLabelWidth2">
  320. <el-select v-model="agval2" :suffix-icon="CaretBottom" placeholder="请选择">
  321. <el-option v-for="item in agelist2" :key="item.value" :label="item.label" :value="item.value">
  322. </el-option>
  323. </el-select>
  324. </el-form-item>
  325. <el-form-item label="初始样本点数:" :label-width="formLabelWidth2">
  326. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  327. </el-form-item>
  328. </el-form>
  329. </div>
  330. <template #footer>
  331. <div class="dialog-footer">
  332. <el-button @click="dialog.agency = false">取消</el-button>
  333. <el-button type="primary" @click="dialog.agency = false">
  334. 确定
  335. </el-button>
  336. </div>
  337. </template>
  338. </el-dialog>
  339. <!-- 终止条件 -->
  340. <el-dialog v-model="dialog.enddialog" v-if="tabactive == '终止条件 '" align-center :modal="false"
  341. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  342. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  343. class="dialog_class bgcolor tianjia sel">
  344. <template #header="{ titleId, titleClass }">
  345. <div class="my-header ">
  346. <el-image :src="getImgPath('t4.png')" fit="contain"></el-image>
  347. <h4 :id="titleId" :class="titleClass">终止条件</h4>
  348. </div>
  349. </template>
  350. <div class="numberinput">
  351. <el-form>
  352. <el-form-item label="EI最小值:" :label-width="formLabelWidth1">
  353. <el-input v-model="name" maxlength="18"
  354. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  355. placeholder="请输入" />
  356. </el-form-item>
  357. <el-form-item label="目标函数收敛误差:" :label-width="formLabelWidth1">
  358. <el-input v-model="name" maxlength="18"
  359. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  360. placeholder="请输入" />
  361. </el-form-item>
  362. <el-form-item label="优化解收敛精度:" :label-width="formLabelWidth1">
  363. <el-input v-model="name" maxlength="18"
  364. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  365. placeholder="请输入" />
  366. </el-form-item>
  367. <el-form-item label="真实函数约束精度:" :label-width="formLabelWidth1">
  368. <el-input v-model="name" maxlength="18"
  369. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  370. placeholder="请输入" />
  371. </el-form-item>
  372. <el-form-item label="代理模型约束精度:" :label-width="formLabelWidth1">
  373. <el-input v-model="name" maxlength="18"
  374. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  375. placeholder="请输入" />
  376. </el-form-item>
  377. </el-form>
  378. </div>
  379. <template #footer>
  380. <div class="dialog-footer">
  381. <el-button @click="dialog.enddialog = false">取消</el-button>
  382. <el-button type="primary" @click="dialog.enddialog = false">
  383. 确定
  384. </el-button>
  385. </div>
  386. </template>
  387. </el-dialog>
  388. <!-- 优化算法 -->
  389. <!-- <el-dialog v-model="dialog.sufun" v-if="tabactive == '优化算法'" align-center :modal="false"
  390. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  391. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  392. class="dialog_class sel bgcolor tianjia sel">
  393. <template #header="{ titleId, titleClass }">
  394. <div class="my-header ">
  395. <el-image :src="getImgPath('Framem.png')" fit="contain"></el-image>
  396. <h4 :id="titleId" :class="titleClass">优化算法</h4>
  397. </div>
  398. </template>
  399. <div class="numberinput">
  400. <div>
  401. <el-form-item label="优化算法" :label-width="formLabelWidth1">
  402. <el-select v-model="youhua.algorithm" :suffix-icon="CaretBottom" placeholder="请选择">
  403. <el-option v-for="item in yslist" :key="item.value" :label="item.label" :value="item.value">
  404. </el-option>
  405. </el-select>
  406. </el-form-item>
  407. <el-form-item label="种群规模:" :label-width="formLabelWidth1">
  408. <el-input-number v-model="youhua.popsize" :min="1" :max="10" controls-position="right" />
  409. </el-form-item>
  410. <el-form-item label="进化代数:" :label-width="formLabelWidth1">
  411. <el-input-number v-model="youhua.epoch" :min="1" :max="10" controls-position="right" />
  412. </el-form-item>
  413. <el-form-item label="交叉概率:" :label-width="formLabelWidth1">
  414. <el-input-number v-model="youhua.probcrossover" :min="1" :max="10" controls-position="right" />
  415. </el-form-item>
  416. <el-form-item label="变异概率:" :label-width="formLabelWidth1">
  417. <el-input-number v-model="youhua.probmut" :min="1" :max="10" controls-position="right" />
  418. </el-form-item>
  419. <el-form-item label="交叉算子:" :label-width="formLabelWidth1">
  420. <el-select v-model="youhua.proboperator" :suffix-icon="CaretBottom" placeholder="请选择">
  421. <el-option v-for="item in addlist2" :key="item.value" :label="item.label" :value="item.value">
  422. </el-option>
  423. </el-select>
  424. </el-form-item>
  425. <el-form-item label="竞赛规模:" :label-width="formLabelWidth1">
  426. <el-input-number v-model="youhua.probscale" :min="1" :max="10" controls-position="right" />
  427. </el-form-item>
  428. <el-form-item label="保留优选策略:" :label-width="formLabelWidth1">
  429. <el-select v-model="youhua.strategy" :suffix-icon="CaretBottom" placeholder="请选择">
  430. <el-option v-for="item in addlist3" :key="item.value" :label="item.label" :value="item.value">
  431. </el-option>
  432. </el-select>
  433. </el-form-item>
  434. <el-form-item label="变异算子选择:" :label-width="formLabelWidth1">
  435. <el-select v-model="youhua.operator" :suffix-icon="CaretBottom" placeholder="请选择">
  436. <el-option v-for="item in addlist4" :key="item.value" :label="item.label" :value="item.value">
  437. </el-option>
  438. </el-select>
  439. </el-form-item>
  440. <el-form-item label="GPU" :label-width="formLabelWidth1">
  441. <el-select v-model="youhua.gpu" :suffix-icon="CaretBottom" placeholder="请选择">
  442. <el-option v-for="item in addlist8" :key="item.value" :label="item.label" :value="item.value">
  443. </el-option>
  444. </el-select>
  445. </el-form-item>
  446. </div>
  447. </div>
  448. <template #footer>
  449. <div class="dialog-footer">
  450. <el-button @click="dialog.sufun = false">取消</el-button>
  451. <el-button type="primary" @click="dialog.sufun = false">
  452. 确定
  453. </el-button>
  454. </div>
  455. </template>
  456. </el-dialog> -->
  457. <!-- 加点方法 -->
  458. <el-dialog v-model="dialog.addfun" v-if="tabactive == '加点方法'" align-center :modal="false"
  459. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  460. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="480"
  461. class="dialog_class sel bgcolor tianjia sel">
  462. <template #header="{ titleId, titleClass }">
  463. <div class="my-header ">
  464. <el-image :src="getImgPath('t3.png')" fit="contain"></el-image>
  465. <h4 :id="titleId" :class="titleClass">加点方法</h4>
  466. </div>
  467. </template>
  468. <div class="numberinput">
  469. <el-form>
  470. <el-form-item label="最大样本点数:" :label-width="formLabelWidth1">
  471. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  472. </el-form-item>
  473. <el-form-item label="加点准则:" :label-width="formLabelWidth1">
  474. <el-select v-model="addval" :suffix-icon="CaretBottom" placeholder="请选择">
  475. <el-option v-for="item in addlist" :key="item.value" :label="item.label" :value="item.value">
  476. </el-option>
  477. </el-select>
  478. </el-form-item>
  479. <el-form-item label="单次迭代新增样本点数:" :label-width="formLabelWidth1">
  480. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  481. </el-form-item>
  482. <el-form-item label="约束处理方法:" :label-width="formLabelWidth1">
  483. <el-select v-model="addval1" :suffix-icon="CaretBottom" placeholder="请选择">
  484. <el-option v-for="item in addlist1" :key="item.value" :label="item.label" :value="item.value">
  485. </el-option>
  486. </el-select>
  487. </el-form-item>
  488. </el-form>
  489. </div>
  490. <template #footer>
  491. <div class="dialog-footer">
  492. <el-button @click="dialog.addfun = false">取消</el-button>
  493. <el-button type="primary" @click="dialog.addfun = false">
  494. 确定
  495. </el-button>
  496. </div>
  497. </template>
  498. </el-dialog>
  499. <!-- 任务管理 -->
  500. <el-dialog v-model="dialog.task" v-if="tabactive == '任务管理'" align-center :modal="false"
  501. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  502. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="800px"
  503. class="dialog_class bgcolor tianjia">
  504. <template #header="{ titleId, titleClass }">
  505. <div class="my-header ">
  506. <el-image :src="getImgPath('s11.png')" fit="contain"></el-image>
  507. <h4 :id="titleId" :class="titleClass">任务管理</h4>
  508. </div>
  509. </template>
  510. <div>
  511. <el-table :data="tasktable" stripe style="width: 100%">
  512. <el-table-column prop="id" label="任务编号" />
  513. <el-table-column prop="name" label="任务名称" />
  514. <el-table-column prop="state" label="任务类型" />
  515. <el-table-column prop="time" label="备注" />
  516. </el-table>
  517. <div class="sev_ruwu sev">
  518. <div class="disflex">
  519. <el-form-item label="关键字:">
  520. <el-select v-model="seval4" :suffix-icon="CaretBottom" placeholder="请选择">
  521. <el-option v-for="item in sevlist" :key="item.value" :label="item.label" :value="item.value">
  522. </el-option>
  523. </el-select>
  524. </el-form-item>
  525. <el-input v-model="name" maxlength="18"
  526. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  527. placeholder="请输入" />
  528. <el-button class="btncolor">查询</el-button>
  529. <el-button class="btncolor">添加</el-button>
  530. <el-button class="btncolor">删除</el-button>
  531. <el-button class="btncolor">提交</el-button>
  532. </div>
  533. </div>
  534. </div>
  535. <template #footer>
  536. <div class="dialog-footer">
  537. <el-button @click="dialog.task = false">取消</el-button>
  538. <el-button type="primary" @click="dialog.task = false">
  539. 确定
  540. </el-button>
  541. </div>
  542. </template>
  543. </el-dialog>
  544. <!-- 任务检索 -->
  545. <el-dialog v-model="dialog.guanli" v-if="tabactive == '任务检索'" align-center :modal="false"
  546. :close-on-click-modal="true" :append-to-body="true" draggable :fullscreen="false"
  547. :modal-append-to-body="false" modal-class="summary-dlg" :before-close="handleClose" width="800px"
  548. class="dialog_class bgcolor tianjia">
  549. <template #header="{ titleId, titleClass }">
  550. <div class="my-header ">
  551. <el-image :src="getImgPath('s11.png')" fit="contain"></el-image>
  552. <h4 :id="titleId" :class="titleClass">任务检索</h4>
  553. </div>
  554. </template>
  555. <div>
  556. <div class="sev_ruwu">
  557. <div class="disflex">
  558. <el-form-item label="关键字:">
  559. <el-select v-model="seval4" :suffix-icon="CaretBottom" placeholder="请选择">
  560. <el-option v-for="item in sevlist" :key="item.value" :label="item.label" :value="item.value">
  561. </el-option>
  562. </el-select>
  563. </el-form-item>
  564. <el-input v-model="name" maxlength="18"
  565. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  566. placeholder="请输入关键字" />
  567. <el-checkbox class="magright" label="范围" v-model="checkbox" />
  568. <el-button class="btncolor">查询</el-button>
  569. </div>
  570. </div>
  571. <el-table :data="tasktable" stripe style="width: 100%">
  572. <el-table-column prop="id" label="任务编号" />
  573. <el-table-column prop="name" label="任务名称" />
  574. <el-table-column prop="state" label="任务类型" />
  575. <el-table-column prop="time" label="备注" />
  576. </el-table>
  577. </div>
  578. <template #footer>
  579. <div class="dialog-footer">
  580. <el-button @click="dialog.guanli = false">取消</el-button>
  581. <el-button type="primary" @click="dialog.guanli = false">
  582. 确定
  583. </el-button>
  584. </div>
  585. </template>
  586. </el-dialog>
  587. <!-- 优化器 -->
  588. <el-dialog v-model="dialog.optimizer" align-center :modal="false" :close-on-click-modal="false"
  589. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  590. :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel">
  591. <template #header="{ titleId, titleClass }">
  592. <div class="my-header ">
  593. <el-image :src="getImgPath('t2.png')" fit="contain"></el-image>
  594. <h4 :id="titleId" :class="titleClass">优化器</h4>
  595. </div>
  596. </template>
  597. <div class="numberinput lefttext">
  598. <el-form>
  599. <span>代理模型</span>
  600. <el-form-item label="代理模型类型:" :label-width="formLabelWidth1">
  601. <el-select v-model="agval" :suffix-icon="CaretBottom" placeholder="请选择">
  602. <el-option v-for="item in agelist" :key="item.value" :label="item.label" :value="item.value">
  603. </el-option>
  604. </el-select>
  605. </el-form-item>
  606. <el-form-item label="设计空间类型:" :label-width="formLabelWidth1">
  607. <el-select v-model="agval1" :suffix-icon="CaretBottom" placeholder="请选择">
  608. <el-option v-for="item in agelist1" :key="item.value" :label="item.label" :value="item.value">
  609. </el-option>
  610. </el-select>
  611. </el-form-item>
  612. <el-form-item label="试验设计方法:" :label-width="formLabelWidth1">
  613. <el-select v-model="agval2" :suffix-icon="CaretBottom" placeholder="请选择">
  614. <el-option v-for="item in agelist2" :key="item.value" :label="item.label" :value="item.value">
  615. </el-option>
  616. </el-select>
  617. </el-form-item>
  618. <el-form-item label="初始样本点数:" :label-width="formLabelWidth1">
  619. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  620. </el-form-item>
  621. <span>加点准则</span>
  622. <el-form-item label="最大样本点数:" :label-width="formLabelWidth1">
  623. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  624. </el-form-item>
  625. <el-form-item label="加点准则:" :label-width="formLabelWidth1">
  626. <el-select v-model="addval" :suffix-icon="CaretBottom" placeholder="请选择">
  627. <el-option v-for="item in addlist" :key="item.value" :label="item.label" :value="item.value">
  628. </el-option>
  629. </el-select>
  630. </el-form-item>
  631. <el-form-item label="单次迭代新增样本点数:" :label-width="formLabelWidth1">
  632. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  633. </el-form-item>
  634. <el-form-item label="约束处理方法:" :label-width="formLabelWidth1">
  635. <el-select v-model="addval1" :suffix-icon="CaretBottom" placeholder="请选择">
  636. <el-option v-for="item in addlist1" :key="item.value" :label="item.label" :value="item.value">
  637. </el-option>
  638. </el-select>
  639. </el-form-item>
  640. <span>优化算法</span>
  641. <el-form-item label="优化算法:" :label-width="formLabelWidth1">
  642. <el-select v-model="ys" :suffix-icon="CaretBottom" placeholder="请选择">
  643. <el-option v-for="item in yslist" :key="item.value" :label="item.label" :value="item.value">
  644. </el-option>
  645. </el-select>
  646. </el-form-item>
  647. <el-form-item label="种群规模:" :label-width="formLabelWidth1">
  648. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  649. </el-form-item>
  650. <el-form-item label="最大迭代次数:" :label-width="formLabelWidth1">
  651. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  652. </el-form-item>
  653. <el-form-item label="交叉概率:" :label-width="formLabelWidth1">
  654. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  655. </el-form-item>
  656. <el-form-item label="变异概率:" :label-width="formLabelWidth1">
  657. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  658. </el-form-item>
  659. <el-form-item label="交叉算子:" :label-width="formLabelWidth1">
  660. <el-select v-model="addval2" :suffix-icon="CaretBottom" placeholder="请选择">
  661. <el-option v-for="item in addlist2" :key="item.value" :label="item.label" :value="item.value">
  662. </el-option>
  663. </el-select>
  664. </el-form-item>
  665. <el-form-item label="竞赛规模:" :label-width="formLabelWidth1">
  666. <el-input-number v-model="num" :min="1" :max="10" controls-position="right" />
  667. </el-form-item>
  668. <el-form-item label="保留优选策略:" :label-width="formLabelWidth1">
  669. <el-select v-model="addval3" :suffix-icon="CaretBottom" placeholder="请选择">
  670. <el-option v-for="item in addlist3" :key="item.value" :label="item.label" :value="item.value">
  671. </el-option>
  672. </el-select>
  673. </el-form-item>
  674. <el-form-item label="变异算子选择:" :label-width="formLabelWidth1">
  675. <el-select v-model="addval4" :suffix-icon="CaretBottom" placeholder="请选择">
  676. <el-option v-for="item in addlist4" :key="item.value" :label="item.label" :value="item.value">
  677. </el-option>
  678. </el-select>
  679. </el-form-item>
  680. <el-form-item label="precision:" :label-width="formLabelWidth1">
  681. <el-select v-model="addval7" :suffix-icon="CaretBottom" placeholder="请选择">
  682. <el-option v-for="item in addlist7" :key="item.value" :label="item.label" :value="item.value">
  683. </el-option>
  684. </el-select>
  685. </el-form-item>
  686. <el-form-item label="GPU" :label-width="formLabelWidth1">
  687. <el-select v-model="addval8" :suffix-icon="CaretBottom" placeholder="请选择">
  688. <el-option v-for="item in addlist8" :key="item.value" :label="item.label" :value="item.value">
  689. </el-option>
  690. </el-select>
  691. </el-form-item>
  692. </el-form>
  693. </div>
  694. <template #footer>
  695. <div class="dialog-footer">
  696. <el-button @click="dialog.optimizer = false">取消</el-button>
  697. <el-button type="primary" @click="dialog.optimizer = false">
  698. 确定
  699. </el-button>
  700. </div>
  701. </template>
  702. </el-dialog>
  703. <!-- Xfiol改版后的 -->
  704. <el-dialog v-model="dialog.Xfiol" align-center :modal="false" :close-on-click-modal="false"
  705. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false"
  706. modal-class="summary-dlg2 summary-dlg" :before-close="handleClose" width="675"
  707. class="dialog_class bgcolor tianjia colortext sel">
  708. <template #header="{ titleId, titleClass }">
  709. <div class="my-header ">
  710. <el-image :src="getImgPath('xuek9.png')" fit="contain"></el-image>
  711. <h4 :id="titleId" :class="titleClass">Xfoil</h4>
  712. </div>
  713. </template>
  714. <Xfoil ref="Xfoilref"/>
  715. <template #footer>
  716. <div class="dialog-footer">
  717. <!-- <el-button type="info" @click="newxfoil">新建 </el-button> -->
  718. <el-button type="info" @click="dialog.Xfiol = false">取消</el-button>
  719. <el-button type="primary" @click="xfoilok();dialog.Xfiol = false">
  720. 确定
  721. </el-button>
  722. </div>
  723. </template>
  724. </el-dialog>
  725. <!-- 列表 -->
  726. <el-dialog v-model="dialog.listdialog" align-center :modal="false" :close-on-click-modal="false"
  727. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  728. :before-close="handleClose" width="537" class="dialog_style sel" style="max-height: 70%;">
  729. <template #header="{ titleId, titleClass }">
  730. <div class="my-header ">
  731. <h4 :id="titleId" :class="titleClass">列表</h4>
  732. </div>
  733. </template>
  734. <div>
  735. <ListSE />
  736. <!-- <el-form>
  737. <el-form-item label="设计集:" >
  738. <el-select v-model="listval" :suffix-icon="CaretBottom" placeholder="请选择">
  739. <el-option v-for="item in listoptions" :key="item.value" :label="item.label" :value="item.value">
  740. </el-option>
  741. </el-select>
  742. </el-form-item>
  743. <el-form-item label="选择要在表中显示的一个或者多个变量和响应" >
  744. </el-form-item>
  745. <el-card shadow="hover" style="width: 100%">
  746. <el-checkbox-group v-model="listcbval">
  747. <el-checkbox v-for="item in Listcheckbox" :key="item.value" :label="item.value" style="display: block">{{ item.label }}</el-checkbox>
  748. </el-checkbox-group>
  749. </el-card>
  750. </el-form> -->
  751. </div>
  752. <template #footer>
  753. <div class="dialog-footer">
  754. <el-button @click="dialog.listdialog = false">取消</el-button>
  755. <el-button type="primary" @click="dialog.listdialog = false">
  756. 确定
  757. </el-button>
  758. </div>
  759. </template>
  760. </el-dialog>
  761. <!-- 散点图 -->
  762. <el-dialog v-model="dialog.scatterdialog" align-center :modal="false" :close-on-click-modal="false"
  763. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  764. :before-close="handleClose" width="500" class="dialog_style bgcolor tianjia sel" style="max-height: 70%;">
  765. <template #header="{ titleId, titleClass }">
  766. <div class="my-header ">
  767. <h4 :id="titleId" :class="titleClass">散点图</h4>
  768. </div>
  769. </template>
  770. <div>
  771. <ListSE />
  772. </div>
  773. <template #footer>
  774. <div class="dialog-footer">
  775. <el-button @click="dialog.scatterdialog = false">取消</el-button>
  776. <el-button type="primary" @click="dialog.scatterdialog = false">
  777. 确定
  778. </el-button>
  779. </div>
  780. </template>
  781. </el-dialog>
  782. <!-- 折线图 -->
  783. <el-dialog v-model="dialog.echartLinedialog" align-center :modal="false" :close-on-click-modal="false"
  784. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  785. :before-close="handleClose" width="500" class="dialog_style bgcolor tianjia sel" style="max-height: 70%;">
  786. <template #header="{ titleId, titleClass }">
  787. <div class="my-header ">
  788. <h4 :id="titleId" :class="titleClass">折线图</h4>
  789. </div>
  790. </template>
  791. <div>
  792. <ListSE />
  793. </div>
  794. <template #footer>
  795. <div class="dialog-footer">
  796. <el-button @click="dialog.echartLinedialog = false">取消</el-button>
  797. <el-button type="primary" @click="dialog.echartLinedialog = false">
  798. 确定
  799. </el-button>
  800. </div>
  801. </template>
  802. </el-dialog>
  803. <!-- 帕雷托图 -->
  804. <el-dialog v-model="dialog.paretodialog" align-center :modal="false" :close-on-click-modal="false"
  805. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  806. :before-close="handleClose" width="500" class="dialog_style bgcolor tianjia sel" style="max-height: 70%;">
  807. <template #header="{ titleId, titleClass }">
  808. <div class="my-header ">
  809. <h4 :id="titleId" :class="titleClass">帕雷托图</h4>
  810. </div>
  811. </template>
  812. <div>
  813. <el-form>
  814. <el-form-item label="选择在X轴显示的一个变量和响应" >
  815. </el-form-item>
  816. <el-card>
  817. <el-checkbox-group v-model="paretocbval">
  818. <el-checkbox v-for="item in paretocheckbox" :key="item.value" :label="item.value" style="display: block">{{ item.label }}</el-checkbox>
  819. </el-checkbox-group>
  820. </el-card>
  821. <el-form-item label="选择在Y轴显示的一个变量和响应" >
  822. </el-form-item>
  823. <el-card shadow="hover" style="width: 100%">
  824. <el-checkbox-group v-model="paretocbval">
  825. <el-checkbox v-for="item in paretocheckbox" :key="item.value" :label="item.value" style="display: block">{{ item.label }}</el-checkbox>
  826. </el-checkbox-group>
  827. </el-card>
  828. </el-form>
  829. </div>
  830. <template #footer>
  831. <div class="dialog-footer">
  832. <el-button @click="dialog.paretodialog = false">取消</el-button>
  833. <el-button type="primary" @click="dialog.paretodialog = false">
  834. 确定
  835. </el-button>
  836. </div>
  837. </template>
  838. </el-dialog>
  839. <!-- 云图/等值线图 -->
  840. <el-dialog v-model="dialog.clouddialog" align-center :modal="false" :close-on-click-modal="false"
  841. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  842. :before-close="handleClose" width="800" class="dialog_style bgcolor tianjia sel" style="max-height: 70%;">
  843. <template #header="{ titleId, titleClass }">
  844. <div class="my-header ">
  845. <h4 :id="titleId" :class="titleClass">云图/等值线显示</h4>
  846. </div>
  847. </template>
  848. <div>
  849. <div class="cloudbox">
  850. <el-row gutter="20">
  851. <el-col :span="2"></el-col>
  852. <el-col v-for="(item,index) in cloudbtnbox" :key="index" :span="4">
  853. <el-button style="width: 100%;" @click="openSeconddialog(item.btnname)">
  854. <el-image :src="getImgPath(item.url)" alt="img" fit="cover" style="width: 20px;margin-right: 4px;" />
  855. {{ item.btnname }}
  856. </el-button>
  857. </el-col>
  858. </el-row>
  859. </div>
  860. <div style="height: 300px;">
  861. </div>
  862. </div>
  863. </el-dialog>
  864. <!-- 云图二级弹窗 -->
  865. <el-dialog v-model="seconddialogshow"
  866. align-center
  867. :modal="false"
  868. :close-on-click-modal="false"
  869. :append-to-body="true"
  870. draggable
  871. :fullscreen="false"
  872. :modal-append-to-body="false"
  873. modal-class="summary-dlg"
  874. :before-close="handleClose"
  875. width="600"
  876. class="dialog_class bgcolor tianjia"
  877. >
  878. <template #header="{ titleId, titleClass }">
  879. <div class="my-header">
  880. <h4 :id="titleId" :class="titleClass">{{ cloudsedtitle }}</h4>
  881. </div>
  882. </template>
  883. <cloudsecond :activesd="activesd"/>
  884. <template #footer>
  885. <div class="dialog-footer">
  886. <el-button @click="seconddialogshow = false">取消</el-button>
  887. <el-button type="primary" @click="seconddialogshow = false">
  888. 确定
  889. </el-button>
  890. </div>
  891. </template>
  892. </el-dialog>
  893. <!-- 查看报告 -->
  894. <el-dialog v-model="dialog.lookover" align-center :modal="false" :close-on-click-modal="false"
  895. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlgPdf"
  896. :before-close="handleClose" width="580px" height="800px">
  897. <template #header="{ titleId, titleClass }">
  898. <div class="my-header ">
  899. <el-image :src="getImgPath('k8.png')" fit="contain"></el-image>
  900. <h4 :id="titleId" :class="titleClass">查看报告:</h4>
  901. </div>
  902. </template>
  903. <pdfReportView/>
  904. <!-- <div class="numberinput lefttext">
  905. <el-form>
  906. <el-image :src="getImgPath('baog.png')" fit="contain"></el-image>
  907. </el-form>
  908. </div> -->
  909. <template #footer>
  910. <div class="dialog-footer">
  911. <el-button @click="dialog.lookover = false">取消</el-button>
  912. <el-button type="primary" @click="dialog.lookover = false">
  913. 确定
  914. </el-button>
  915. </div>
  916. </template>
  917. </el-dialog>
  918. <!-- 导出报告 -->
  919. <el-dialog v-model="dialog.exportreport" align-center :modal="false" :close-on-click-modal="false"
  920. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  921. :before-close="handleClose" width="600" class="dialog_class bgcolor tianjia sel" style="max-height: 70%;">
  922. <template #header="{ titleId, titleClass }">
  923. <div class="my-header ">
  924. <h4 :id="titleId" :class="titleClass">导出报告:</h4>
  925. </div>
  926. </template>
  927. <Exreport />
  928. <template #footer>
  929. <div class="dialog-footer">
  930. <el-button @click="dialog.exportreport = false">取消</el-button>
  931. <el-button type="primary" @click="dialog.exportreport = false">
  932. 确定
  933. </el-button>
  934. </div>
  935. </template>
  936. </el-dialog>
  937. <!-- 气动分析Xfoil、ADflow -->
  938. <el-dialog v-model="dialog.XfAD" align-center :modal="false" :close-on-click-modal="false"
  939. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  940. :before-close="handleClose" width="860" class="dialog_class bgcolor tianjia sel colortext">
  941. <template #header="{ titleId, titleClass }">
  942. <div class="my-header ">
  943. <!-- <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image> -->
  944. <h4 :id="titleId" :class="titleClass">气动分析</h4>
  945. </div>
  946. </template>
  947. <div class="numberinput lefttext ">
  948. <el-form>
  949. <el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick3">
  950. <el-tab-pane label="Xfoil" name="Xfoil">
  951. <Xfoil ref="Xfoilref"/>
  952. </el-tab-pane>
  953. <!-- ADflow -->
  954. <el-tab-pane label="ADflow" name="ADflow">
  955. <ADflow ref="ADflowref"/>
  956. </el-tab-pane>
  957. </el-tabs>
  958. </el-form>
  959. </div>
  960. <template #footer>
  961. <div class="dialog-footer">
  962. <el-button @click="dialog.XfAD = false">取消</el-button>
  963. <el-button type="primary" @click="getXfoilAdflowsave(activeadf);dialog.XfAD = false;">
  964. 确定
  965. </el-button>
  966. </div>
  967. </template>
  968. </el-dialog>
  969. <!-- CST -->
  970. <el-dialog v-model="dialog.CSTt" align-center :modal="false" :close-on-click-modal="false"
  971. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  972. :before-close="handleClose" width="840" class="dialog_class bgcolor colortext tianjia sel">
  973. <template #header="{ titleId, titleClass }">
  974. <div class="my-header ">
  975. <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image>
  976. <h4 :id="titleId" :class="titleClass">CST</h4>
  977. </div>
  978. </template>
  979. <csts ref="Cstref"/>
  980. <template #footer>
  981. <div class="dialog-footer">
  982. <el-button @click="dialog.CSTt = false">取消</el-button>
  983. <el-button type="primary" @click="cstok()">
  984. 确定
  985. </el-button>
  986. </div>
  987. </template>
  988. </el-dialog>
  989. <!-- FFD -->
  990. <el-dialog v-model="dialog.ffdt" align-center :modal="false" :close-on-click-modal="false"
  991. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  992. :before-close="handleClose" width="730" class="dialog_class bgcolor colortext tianjia sel">
  993. <template #header="{ titleId, titleClass }">
  994. <div class="my-header ">
  995. <el-image :src="getImgPath('ffd.png')" fit="contain"></el-image>
  996. <h4 :id="titleId" :class="titleClass">FFD</h4>
  997. </div>
  998. </template>
  999. <ffds ref="Ffdref"/>
  1000. <template #footer>
  1001. <div class="dialog-footer">
  1002. <el-button @click="dialog.ffdt = false">取消</el-button>
  1003. <el-button type="primary" @click="ffdok()">
  1004. 确定
  1005. </el-button>
  1006. </div>
  1007. </template>
  1008. </el-dialog>
  1009. <!-- 气动分析CST、FFD -->
  1010. <el-dialog v-model="dialog.cstffd" align-center :modal="false" :close-on-click-modal="false"
  1011. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1012. :before-close="handleClose" width="1000" class="dialog_class bgcolor tianjia sel colortext">
  1013. <template #header="{ titleId, titleClass }">
  1014. <div class="my-header ">
  1015. <h4 :id="titleId" :class="titleClass">参数化</h4>
  1016. </div>
  1017. </template>
  1018. <div class="numberinput lefttext ">
  1019. <el-form>
  1020. <!-- CST -->
  1021. <el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick2">
  1022. <el-tab-pane label="CST" name="CST">
  1023. <csts ref="Cstref"/>
  1024. </el-tab-pane>
  1025. <!-- FFD -->
  1026. <el-tab-pane label="FFD" name="FFD">
  1027. <ffds ref="Ffdref"/>
  1028. </el-tab-pane>
  1029. </el-tabs>
  1030. </el-form>
  1031. </div>
  1032. <template #footer>
  1033. <div class="dialog-footer">
  1034. <el-button @click="dialog.cstffd = false">取消</el-button>
  1035. <el-button type="primary" @click="getCstFfdsave(activeadf);dialog.cstffd = false">
  1036. 确定
  1037. </el-button>
  1038. </div>
  1039. </template>
  1040. </el-dialog>
  1041. <!-- TACS -->
  1042. <el-dialog v-model="dialog.Taxs" align-center :modal="false" :close-on-click-modal="false"
  1043. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1044. :before-close="handleClose" width="700" class="dialog_class bgcolor tianjia sel colortext ">
  1045. <template #header="{ titleId, titleClass }">
  1046. <div class="my-header ">
  1047. <!-- <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image> -->
  1048. <h4 :id="titleId" :class="titleClass">TACS</h4>
  1049. </div>
  1050. </template>
  1051. <TACS />
  1052. <template #footer>
  1053. <div class="dialog-footer">
  1054. <el-button @click="dialog.Taxs = false">取消</el-button>
  1055. <el-button type="primary">
  1056. 确定
  1057. </el-button>
  1058. </div>
  1059. </template>
  1060. </el-dialog>
  1061. <!-- 优化器 -->
  1062. <el-dialog v-model="dialog.optgroup" align-center :modal="false" :close-on-click-modal="false"
  1063. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1064. :before-close="handleClose" width="700" class="dialog_class bgcolor tianjia sel colortext">
  1065. <template #header="{ titleId, titleClass }">
  1066. <div class="my-header ">
  1067. <h4 :id="titleId" :class="titleClass">优化器</h4>
  1068. </div>
  1069. </template>
  1070. <div class="numberinput lefttext ">
  1071. <el-form>
  1072. <el-tabs tab-position="left" class="demo-tabs" v-model="activeadf" @tab-click="adfhandleClick">
  1073. <!-- 代理优化器 -->
  1074. <el-tab-pane label="代理优化器" name="代理优化器">
  1075. <Doptimize ref='Doptimizeref'/>
  1076. </el-tab-pane>
  1077. <!-- 进步优化器 -->
  1078. <el-tab-pane label="进化优化器" name="进化优化器">
  1079. <Joptimize ref='Joptimizeref'/>
  1080. </el-tab-pane>
  1081. <!-- 梯度优化器 -->
  1082. <el-tab-pane label="梯度优化器" name="梯度优化器">
  1083. <Toptimize ref='Toptimizeref'/>
  1084. </el-tab-pane>
  1085. </el-tabs>
  1086. </el-form>
  1087. </div>
  1088. <template #footer>
  1089. <div class="dialog-footer">
  1090. <el-button @click="dialog.optgroup = false">取消</el-button>
  1091. <el-button type="primary" @click="getSave(activeadf);dialog.optgroup = false">
  1092. 确定
  1093. </el-button>
  1094. </div>
  1095. </template>
  1096. </el-dialog>
  1097. <!-- 单独的进步优化器 -->
  1098. <el-dialog v-model="dialog.jboptimizer" align-center :modal="false" :close-on-click-modal="false"
  1099. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1100. :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel colortext">
  1101. <template #header="{ titleId, titleClass }">
  1102. <div class="my-header ">
  1103. <el-image :src="getImgPath('t2.png')" fit="contain"></el-image>
  1104. <h4 :id="titleId" :class="titleClass">优化算法:</h4>
  1105. </div>
  1106. </template>
  1107. <Joptimize ref='Joptimizeref'/>
  1108. <template #footer>
  1109. <div class="dialog-footer">
  1110. <el-button @click="dialog.jboptimizer = false">取消</el-button>
  1111. <el-button type="primary" @click="getaddsave(); dialog.jboptimizer = false">
  1112. 确定
  1113. </el-button>
  1114. </div>
  1115. </template>
  1116. </el-dialog>
  1117. <!-- 单独的代理优化器 -->
  1118. <el-dialog v-model="dialog.dboptimizer" align-center :modal="false" :close-on-click-modal="false"
  1119. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1120. :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel colortext">
  1121. <template #header="{ titleId, titleClass }">
  1122. <div class="my-header ">
  1123. <!-- <el-image :src="getImgPath('t2.png')" fit="contain"></el-image> -->
  1124. <h4 :id="titleId" :class="titleClass">代理优化器</h4>
  1125. </div>
  1126. </template>
  1127. <Doptimize ref="Doptimizeref"/>
  1128. <template #footer>
  1129. <div class="dialog-footer">
  1130. <el-button @click="dialog.dboptimizer = false">取消</el-button>
  1131. <el-button type="primary" @click="getDaddsave(); dialog.dboptimizer = false">
  1132. 确定
  1133. </el-button>
  1134. </div>
  1135. </template>
  1136. </el-dialog>
  1137. <!-- 单独的梯度优化器 -->
  1138. <el-dialog v-model="dialog.tboptimizer" align-center :modal="false" :close-on-click-modal="false"
  1139. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1140. :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel colortext">
  1141. <template #header="{ titleId, titleClass }">
  1142. <div class="my-header ">
  1143. <!-- <el-image :src="getImgPath('t2.png')" fit="contain"></el-image> -->
  1144. <h4 :id="titleId" :class="titleClass">梯度优化器:</h4>
  1145. </div>
  1146. </template>
  1147. <Toptimize ref="Toptimizeref"/>
  1148. <template #footer>
  1149. <div class="dialog-footer">
  1150. <el-button @click="dialog.tboptimizer = false">取消</el-button>
  1151. <el-button type="primary" @click="getTaddsave(); dialog.tboptimizer = false">
  1152. 确定
  1153. </el-button>
  1154. </div>
  1155. </template>
  1156. </el-dialog>
  1157. <!-- 单独的ADflow -->
  1158. <el-dialog v-model="dialog.isADflow" align-center :modal="false" :close-on-click-modal="false"
  1159. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1160. :before-close="handleClose" width="630" class="dialog_class bgcolor tianjia sel colortext">
  1161. <template #header="{ titleId, titleClass }">
  1162. <div class="my-header ">
  1163. <!-- <el-image :src="getImgPath('t2.png')" fit="contain"></el-image> -->
  1164. <h4 :id="titleId" :class="titleClass">ADflow</h4>
  1165. </div>
  1166. </template>
  1167. <ADflow ref="ADflowref"/>
  1168. <template #footer>
  1169. <div class="dialog-footer">
  1170. <el-button @click="dialog.isADflow = false">取消</el-button>
  1171. <el-button type="primary" @click=" adflowok();dialog.isADflow = false">
  1172. 确定
  1173. </el-button>
  1174. </div>
  1175. </template>
  1176. </el-dialog>
  1177. <!-- Python -->
  1178. <el-dialog v-model="dialog.Pythonshow" align-center :modal="false" :close-on-click-modal="false"
  1179. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1180. :before-close="handleClose" width="700" class="dialog_class bgcolor colortext tianjia sel">
  1181. <template #header="{ titleId, titleClass }">
  1182. <div class="my-header ">
  1183. <!-- <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image> -->
  1184. <h4 :id="titleId" :class="titleClass">Python</h4>
  1185. </div>
  1186. </template>
  1187. <div class="footerp" style="height:500px;padding:15px">
  1188. <div>
  1189. <!-- <el-input
  1190. v-model="textarea1"
  1191. style="width: 100%"
  1192. :autosize="{ minRows: 2, maxRows: 4 }"
  1193. type="textarea"
  1194. placeholder="Please input"
  1195. /> -->
  1196. <PythonEdit :value="textarea1" language="python" @change="handleEditorChange"/>
  1197. </div>
  1198. <div class="pythfoter">
  1199. <div class="span active" >
  1200. <el-image :src="xin" fit="contain"></el-image>
  1201. <span>信息栏 </span></div>
  1202. <el-input
  1203. v-model="textarea2"
  1204. style="width: 100%"
  1205. :autosize="{ minRows: 2, maxRows: 4 }"
  1206. type="textarea"
  1207. placeholder="Please input"
  1208. />
  1209. </div>
  1210. </div>
  1211. <template #footer>
  1212. <div class="dialog-footer">
  1213. <el-button @click="dialog.Pythonshow = false">检查</el-button>
  1214. <el-button type="primary" @click="pythonSubmit(); dialog.Pythonshow = false">
  1215. 保存
  1216. </el-button>
  1217. </div>
  1218. </template>
  1219. </el-dialog>
  1220. <!-- FSI -->
  1221. <el-dialog v-model="dialog.fsidialog" align-center :modal="false" :close-on-click-modal="false"
  1222. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1223. :before-close="handleClose" width="670" class="dialog_class bgcolor tianjia sel colortext">
  1224. <template #header="{ titleId, titleClass }">
  1225. <div class="my-header ">
  1226. <!-- <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image> -->
  1227. <h4 :id="titleId" :class="titleClass">FUM to FEM</h4>
  1228. </div>
  1229. </template>
  1230. <FSI ref="Fsiref"/>
  1231. <template #footer>
  1232. <div class="dialog-footer">
  1233. <el-button @click="dialog.fsidialog = false">取消</el-button>
  1234. <el-button type="primary" @click=" dialog.fsidialog = false">
  1235. 确定
  1236. </el-button>
  1237. </div>
  1238. </template>
  1239. </el-dialog>
  1240. <!-- Flight -->
  1241. <el-dialog v-model="dialog.flightdialog" align-center :modal="false" :close-on-click-modal="false"
  1242. :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
  1243. :before-close="handleClose" width="630" class="dialog_class bgcolor tianjia sel colortext">
  1244. <template #header="{ titleId, titleClass }">
  1245. <div class="my-header ">
  1246. <!-- <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image> -->
  1247. <h4 :id="titleId" :class="titleClass">Flight</h4>
  1248. </div>
  1249. </template>
  1250. <Flight ref="Flightref"/>
  1251. <template #footer>
  1252. <div class="dialog-footer">
  1253. <el-button @click="dialog.flightdialog = false">取消</el-button>
  1254. <el-button type="primary" @click=" dialog.flightdialog = false">
  1255. 确定
  1256. </el-button>
  1257. </div>
  1258. </template>
  1259. </el-dialog>
  1260. <!-- 内容区 -->
  1261. <div class="main mianflex">
  1262. <!--left菜单栏 -->
  1263. <Sidebar ref="Sidebarref" />
  1264. <!-- 放图形 -->
  1265. <div class="main_container">
  1266. <div class="main_model">
  1267. <div class="jindutiao" v-show="progressshow">
  1268. <!-- <el-progress :text-inside="true" :stroke-width="26" :percentage="70" /> -->
  1269. <div class="demo-progress">
  1270. <el-progress :percentage="percentage" :stroke-width="15" :color="customColors">
  1271. <template #default="{ percentage }">
  1272. <span class="percentage-value">当前进度:{{ percentage }}%</span>
  1273. </template>
  1274. </el-progress>
  1275. <!-- <button @click="tbn">点我</button> -->
  1276. </div>
  1277. </div>
  1278. <div class="main_model" v-show='flowshow'>
  1279. <vuefindex ref="vuefval" :Xfiol="dialog.Xfiol" :jboptimizer="dialog.jboptimizer"
  1280. :optimizer="dialog.optimizer" @optimizerfalse="optimizerfalse($event)"></vuefindex>
  1281. </div>
  1282. <div class="maxh221">
  1283. <!-- 中间部分 -->
  1284. <!-- 列表监控 -->
  1285. <div class="conter_mian classtable " v-show="jiankong" style="width:100%; height: 100%;">
  1286. <el-table :data="tableDatalieb" border style="display: flex; flex: 1; overflow: auto; height: 100%;" >
  1287. <el-table-column type="index" label="编号" width="150"></el-table-column>
  1288. <el-table-column v-for="(header, index) in tableHeaders" :key="index" :prop="header.prop"
  1289. :label="header.label" >
  1290. </el-table-column>
  1291. </el-table>
  1292. </div>
  1293. <!-- 曲线监控 -->
  1294. <div class="conter_mian classtable " v-if="echartshow" style="width:100%; height: 100%;">
  1295. <!-- <el-form-item label="" >
  1296. <el-select v-model="quval" :suffix-icon="CaretBottom" placeholder="请选择">
  1297. <el-option v-for="item in quxian" :key="item.value" :label="item.label" :value="item.value">
  1298. </el-option>
  1299. </el-select>
  1300. </el-form-item> -->
  1301. <optmonitor ref="optmonitor1" :echartdata="echartdata" :selval="quval" :curvedata="curvedata" />
  1302. </div>
  1303. <!-- 过程监控 -->
  1304. <div class="conter_mian classtable conter_flex" v-if="echartshow2" style="width:100%; height: 100%;">
  1305. <div class="echart_left ech">
  1306. <processMonitor1 ref="processMonitor1ref" :echartdata="echartdata" :selval="quval" :curvedata="curvedata"/>
  1307. </div>
  1308. <div class="echart_right ech">
  1309. <processMonitor2 ref="processMonitor2ref" :echartdata="echartdata" :selval="quval" :curvedata="curvedata"/>
  1310. </div>
  1311. </div>
  1312. <!-- 可视化开始 -->
  1313. <div class="conter_mian classtable echartcont" v-show="echartzongshow">
  1314. <echartarea ref="arearef" v-show="areashow" :areashow="areashow"/>
  1315. <bargraph ref="bargraphref" v-show="bargraphshow" :bargraphshow="bargraphshow"/>
  1316. <echartLine ref="echartLineref" v-show="echartLineshow" :echartLineshow="echartLineshow"/>
  1317. <BarChart ref="BarChartref" v-show="BarChartshow" :BarChartshow="BarChartshow"/>
  1318. <scatter ref="scatterref" v-show="scattershow" :scattershow="scattershow"/>
  1319. <radar ref="radarref" v-show="radarshow" :radarshow="radarshow"/>
  1320. <pie ref="pieref" v-show="pieshow" :pieshow="pieshow" />
  1321. <pareto ref="paretoref" v-show="paretoshow" :paretoshow="paretoshow" />
  1322. </div>
  1323. <!-- 可视化结束 -->
  1324. <!-- 右侧边栏开始 -->
  1325. <!-- 结束 -->
  1326. </div>
  1327. <el-footer class="femFooter">
  1328. <div class="gooterpading">
  1329. <div class="footerTitle el-tag--primary">
  1330. <div>
  1331. <div class="span" v-for="(tab, index) in tabs" :key="index" :class="{ 'active': activeIndex === index }"
  1332. @click="xxclick(index)">
  1333. <el-image :src="tab.img" fit="contain"></el-image>
  1334. <span>{{ tab.name }} </span></div>
  1335. </div>
  1336. <div>
  1337. <!-- <li
  1338. class="exloadbox"
  1339. v-show="elodingfalse"
  1340. >
  1341. <span>正在求解中</span>
  1342. <i class="el-icon-loading"></i>
  1343. </li> -->
  1344. <!-- <li>
  1345. <span >清空</span>
  1346. </li> -->
  1347. <li>
  1348. <span @click="footerShows('foot')">&#9650;&#9660;</span>
  1349. </li>
  1350. </div>
  1351. </div>
  1352. <div v-if="footerShow">
  1353. <div class="footerTextBox" v-if="activeIndex == 0">
  1354. <el-input class="footerText" type="textarea" id="textarea_id" v-model="logs"></el-input>
  1355. </div>
  1356. <div class="youhualog" v-if="activeIndex == 1">
  1357. <ul>
  1358. <li v-for="(tab, index) in listli" :key="index" :class="{ 'active2': activeIndex2 === index }"
  1359. @click="issueclick(index)">
  1360. <el-image v-if="activeIndex2 === index" :src="tab.isimg" fit="contain"></el-image>
  1361. <el-image v-else :src="tab.noimg" fit="contain"></el-image>
  1362. {{ tab.name }}</li>
  1363. </ul>
  1364. <div class="footer-content">
  1365. <div class="eldesign classtable" v-if="activeIndex2 == 0">
  1366. <el-table :data="designtable" border style="width: 100%" height="100">
  1367. <el-table-column type="index" label="编号" width="70" />
  1368. <el-table-column prop="name" label="变量名称">
  1369. <template #default="{ row }">
  1370. <el-input v-model="row.name" @change="handleEdit(row)" />
  1371. </template>
  1372. </el-table-column>
  1373. <el-table-column prop="upper" label="上限值">
  1374. <template #default="{ row }">
  1375. <el-input type="text" v-model.Number="row.upper" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
  1376. @change="handleEdit(row)" />
  1377. </template>
  1378. </el-table-column>
  1379. <el-table-column prop="lower" label="下限值">
  1380. <template #default="{ row }">
  1381. <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
  1382. @change="handleEdit(row)" />
  1383. </template>
  1384. </el-table-column>
  1385. <el-table-column prop="reference" label="基准值" width="100">
  1386. <template #default="{ row }">
  1387. <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
  1388. @change="handleEdit(row)" />
  1389. </template>
  1390. </el-table-column>
  1391. <el-table-column prop="remark" label="说明">
  1392. <template #default="{ row }">
  1393. <el-input v-model="row.remark" @change="handleEdit(row)" />
  1394. </template>
  1395. </el-table-column>
  1396. <el-table-column label="操作" width="140">
  1397. <template #default="scope">
  1398. <el-button size="small" type="danger"
  1399. @click.stop="sjdelete(scope.$index, scope.row)">删除</el-button>
  1400. </template>
  1401. </el-table-column>
  1402. </el-table>
  1403. </div>
  1404. <div class="elconstraint classtable" v-if="activeIndex2 == 1">
  1405. <el-table :data="tableData" stripe style="width: 100%" height="100">
  1406. <el-table-column type="index" label="编号" width="100" />
  1407. <el-table-column prop="name" label="约束名称">
  1408. <template #default="{ row }">
  1409. <el-input v-model="row.name" @change="handleEdit(row)" />
  1410. </template>
  1411. </el-table-column>
  1412. <!-- <el-table-column prop="con" label="约束关系">
  1413. <template v-slot="scope">
  1414. <el-select class="no-border " v-model.number="scope.row.con" :suffix-icon="CaretBottom"
  1415. placeholder="请选择">
  1416. <el-option v-for="item in options3" :key="item.value" :label="item.label"
  1417. :value="item.value">
  1418. </el-option>
  1419. </el-select>
  1420. </template>
  1421. </el-table-column> -->
  1422. <el-table-column prop="reference" label="约束基准值">
  1423. <template #default="{ row }">
  1424. <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
  1425. @change="handleEdit(row)" />
  1426. </template>
  1427. </el-table-column>
  1428. <el-table-column prop="upper" label="上限值">
  1429. <template #default="{ row }">
  1430. <el-input v-model.Number="row.upper"
  1431. oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
  1432. @change="handleEdit(row)" />
  1433. </template>
  1434. </el-table-column>
  1435. <el-table-column prop="lower" label="下限值">
  1436. <template #default="{ row }">
  1437. <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.-]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^-(?=\.)/, '')"
  1438. @change="handleEdit(row)" />
  1439. </template>
  1440. </el-table-column>
  1441. <el-table-column label="操作" width="140">
  1442. <template #default="scope">
  1443. <el-button size="small" type="danger"
  1444. @click.stop="ysdelete(scope.$index, scope.row)">删除</el-button>
  1445. </template>
  1446. </el-table-column>
  1447. </el-table>
  1448. </div>
  1449. <div class="eloptimize classtable" v-if="activeIndex2 == 2">
  1450. <el-table :data="eloptimize" stripe style="width: 100%" height="100">
  1451. <el-table-column type="index" label="编号" width="70" />
  1452. <!-- <el-table-column prop="qi" label="启用" width="70">
  1453. <template v-slot="scope">
  1454. <el-checkbox :label="false" v-model="scope.row.qi" />
  1455. </template>
  1456. </el-table-column> -->
  1457. <!-- <el-table-column prop="data" label="目标类型" width="120">
  1458. <template v-slot="scope">
  1459. <el-select v-model="scope.row.device" class="no-border " :suffix-icon="CaretBottom" placeholder="请选择">
  1460. <el-option
  1461. v-for="item in options"
  1462. :key="item.value"
  1463. :label="item.label"
  1464. :value="item.value">
  1465. </el-option>
  1466. </el-select>
  1467. </template>
  1468. </el-table-column> -->
  1469. <el-table-column prop="name" label="目标名称">
  1470. <template #default="{ row }">
  1471. <el-input v-model="row.name" />
  1472. </template>
  1473. </el-table-column>
  1474. <el-table-column prop="optdir" label="优化方向">
  1475. <template v-slot="scope">
  1476. <el-select class="no-border " v-model="scope.row.optdir" :suffix-icon="CaretBottom"
  1477. placeholder="请选择">
  1478. <el-option v-for="item in options1" :key="item.value" :label="item.label"
  1479. :value="item.value">
  1480. </el-option>
  1481. </el-select>
  1482. </template>
  1483. </el-table-column>
  1484. <el-table-column prop="weight" label="权重系数">
  1485. <template #default="{ row }">
  1486. <el-input v-model.Number="row.weight" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
  1487. @change="handleEdit(row)" />
  1488. </template>
  1489. </el-table-column>
  1490. <!-- <el-table-column prop="scaling" label="数据缩放">
  1491. <template v-slot="scope">
  1492. <el-checkbox :false-label="0" :true-label="1" v-model="scope.row.scaling" />
  1493. </template>
  1494. </el-table-column>
  1495. <el-table-column prop="factor" label="缩放因子">
  1496. <template #default="{ row }">
  1497. <el-input v-model.number="row.factor" oninput="value=value.replace(/^|[^0-9]/g,'')"
  1498. @change="handleEdit(row)" />
  1499. </template>
  1500. </el-table-column> -->
  1501. <el-table-column prop="reference" label="约束基准值">
  1502. <template #default="{ row }">
  1503. <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
  1504. @change="handleEdit(row)" />
  1505. </template>
  1506. </el-table-column>
  1507. <el-table-column prop="remark" label="说明">
  1508. <template #default="{ row }">
  1509. <el-input v-model="row.remark" @change="handleEdit(row)" />
  1510. </template>
  1511. </el-table-column>
  1512. <el-table-column label="操作" width="140">
  1513. <template #default="scope">
  1514. <el-button size="small" type="danger"
  1515. @click.stop="mbdelete(scope.$index, scope.row)">删除</el-button>
  1516. </template>
  1517. </el-table-column>
  1518. </el-table>
  1519. </div>
  1520. </div>
  1521. <div class="dibu">
  1522. <div class="footer-add">
  1523. <div class="sev_ruwu">
  1524. <div class="disflex ">
  1525. <el-form-item label="新增变量数:">
  1526. <el-input v-model="tableval" maxlength="18"
  1527. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
  1528. placeholder="请输入关键字" /> </el-form-item>
  1529. <el-button class="btncolor">导入</el-button>
  1530. <el-button class="btncolor" @click="onAddItem">新增</el-button>
  1531. <el-button class="btncolor" @click="onokItem">确认</el-button>
  1532. </div>
  1533. </div>
  1534. </div>
  1535. </div>
  1536. </div>
  1537. </div>
  1538. <div class="pading_foter">
  1539. </div>
  1540. </div>
  1541. </el-footer>
  1542. </div>
  1543. </div>
  1544. </div>
  1545. </div>
  1546. </el-main>
  1547. </el-container>
  1548. </div>
  1549. </template>
  1550. <script setup>
  1551. import { ref, onMounted, reactive, provide, nextTick } from "vue";
  1552. import { RouterView, RouterLink, useRouter, useRoute } from "vue-router"
  1553. import myheader from "@/components/header.vue"
  1554. import { request, uploadFile } from "@/utils/request";
  1555. import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
  1556. import { Edit, CaretBottom } from '@element-plus/icons-vue'
  1557. // import '@/utils/flexible'
  1558. import s0 from "@/assets/img/s0.png"
  1559. import gc1 from "@/assets/img/gc1.png"
  1560. import gc2 from "@/assets/img/gc2.png"
  1561. import gc3 from "@/assets/img/gc3.png"
  1562. import wen from "@/assets/img/wen.png"
  1563. import q2 from "@/assets/img/q2.png"
  1564. import f21 from "@/assets/img/f21.png"
  1565. import f22 from "@/assets/img/f22.png"
  1566. import f41 from "@/assets/img/f41.png"
  1567. import xin from "@/assets/img/xin.png"
  1568. import xin2 from "@/assets/img/xin2.png"
  1569. import s from "@/assets/img/s.png"
  1570. import y from "@/assets/img/y.png"
  1571. import y2 from "@/assets/img/y2.png"
  1572. import nos from "@/assets/img/nos.png"
  1573. import zy from "@/assets/img/zy.png"
  1574. import zy2 from "@/assets/img/zy2.png"
  1575. import xuek10 from '@/assets/flowimg/xuek10.png'
  1576. import xuek11 from '@/assets/flowimg/xuek11.png'
  1577. import xuek12 from '@/assets/flowimg/xuek12.png'
  1578. import optmonitor from './echart/optimize_monitor.vue'
  1579. import processMonitor1 from "./echart/process-monitor1.vue"
  1580. import processMonitor2 from "./echart/process-monitor2.vue"
  1581. import echartindex from './echart/index.vue'
  1582. import sixtop from './echart/six_top.vue'
  1583. import sixbottom from './echart/six_bottom.vue'
  1584. import sixindex from './demo/index.vue'
  1585. import sixchine from './demo/chine.vue'
  1586. import vuefindex from './vuetree/index.vue'
  1587. import Sidebar from './vuetree/Sidebar.vue'
  1588. // 可视化echart
  1589. import echartarea from './echart/area.vue'
  1590. import bargraph from './echart/bargraph.vue'
  1591. import echartLine from './echart/echartLine.vue'
  1592. import BarChart from './echart/BarChart.vue'
  1593. import scatter from './echart/scatter.vue'
  1594. import radar from './echart/radar.vue'
  1595. import pie from './echart/pie.vue'
  1596. import pareto from './echart/pareto.vue'
  1597. import Doptimize from './titlecomponent/Doptimize.vue'
  1598. import Joptimize from './titlecomponent/Joptimize.vue'
  1599. import Toptimize from './titlecomponent/Toptimize.vue'
  1600. import ADflow from './titlecomponent/ADflow.vue'
  1601. import Xfoil from './titlecomponent/Xfoil.vue'
  1602. import csts from './titlecomponent/csts.vue'
  1603. import ffds from './titlecomponent/ffds.vue'
  1604. import cloudsecond from "./titlecomponent/Cloudsecond.vue";
  1605. import FSI from './titlecomponent/FSI.vue'
  1606. import Flight from './titlecomponent/Flight.vue'
  1607. import ListSE from "./titlecomponent/ListSE.vue";
  1608. import TACS from "./titlecomponent/TACS.vue";
  1609. import fileUploads from './components/fileuploads.vue'
  1610. import Exreport from "./titlecomponent/Exreport.vue";
  1611. import PythonEdit from '@/components/PythonEditor/index.vue'; // python编辑器
  1612. import pdfReportView from '@/components/pdfReportView/index.vue'; //报告查看
  1613. let Sidebarref = ref();
  1614. let resource=ref(0);
  1615. let cstnum=ref('');
  1616. let textarea2=ref()
  1617. let textarea1 = ref(`import os
  1618. import numpy as np
  1619. from surromdao.solver import BaseSolver
  1620. class Branin(BaseSolver):
  1621. def __init__(self, filename=os.path):
  1622. super().__init__(filename)
  1623. def compute(self, xdict):
  1624. x = np.zeros(2)
  1625. # x[0] = xdict['x1']
  1626. # x[1] = xdict['x2']`);
  1627. let Cstref = ref();
  1628. let Ffdref = ref();
  1629. let Xfoilref = ref();
  1630. let ADflowref = ref();
  1631. let Joptimizeref=ref();
  1632. let Doptimizeref=ref();
  1633. let Toptimizeref=ref();
  1634. let Fsiref=ref();
  1635. let Flightref=ref();
  1636. let f4ce = ref("优化问题组件");
  1637. let modelban = ref("学科分析组件");
  1638. let undmodel=ref('优化器组件');
  1639. let optiongroup1 = ref([
  1640. { label: '优化问题', value: '优化问题' }
  1641. ])
  1642. let options4 = ref([
  1643. { label: '进化优化器', value: '进化优化器', icon:xuek10 },
  1644. { label: '代理优化器', value: '代理优化器', icon:xuek11 },
  1645. { label: '梯度优化器', value: '梯度优化器', icon:xuek12 },
  1646. ])
  1647. let formLabelWidth3=ref(100)
  1648. let formLabelWidth200=ref(200)
  1649. let tablecstHeaders=ref([]);
  1650. let treeitem = ref({});
  1651. let treeitem2 = ref({});
  1652. let treeitem3 = ref({});
  1653. let percentage = ref(70);
  1654. let progressshow = ref(false);
  1655. let flowshow = ref(true);
  1656. let jiankong = ref(false);
  1657. let echartshow = ref(false);
  1658. let echartshow2 = ref(false);
  1659. let areashow = ref(false);
  1660. let echartLineshow = ref(false);
  1661. let BarChartshow = ref(false);
  1662. let bargraphshow = ref(false);
  1663. let scattershow = ref(false);
  1664. let radarshow = ref(false);
  1665. let pieshow = ref(false);
  1666. let paretoshow = ref(false);
  1667. let bargraphref = ref();
  1668. let echartLineref = ref();
  1669. let BarChartref = ref();
  1670. let radarref = ref();
  1671. let pieref = ref();
  1672. let paretoref = ref();
  1673. let scatterref = ref();
  1674. let echartzongshow = ref(false);
  1675. const router = useRouter();
  1676. const route = useRoute();
  1677. let youhua = ref({
  1678. algorithm: 'GA',
  1679. popsize: 100,
  1680. epoch: 100,
  1681. probcrossover: 0.1,
  1682. probmut: 0.1,
  1683. proboperator: 'SBX交叉',
  1684. probscale: 1,
  1685. strategy: '最佳保留策略',
  1686. operator: '倒位变异',
  1687. gpu: 'YES'
  1688. })
  1689. let echartdata = ref(null);
  1690. let optmonitor1 = ref();
  1691. let processMonitor1ref = ref()
  1692. let processMonitor2ref = ref()
  1693. let arearef = ref();
  1694. let tableHeaders = ref([
  1695. { label: '参数1', prop: 'value1' },
  1696. { label: '参数2', prop: 'value2' },
  1697. { label: '参数3', prop: 'value3' },
  1698. { label: '参数4', prop: 'value4' },
  1699. { label: '参数5', prop: 'value5' },
  1700. ])
  1701. let varsobj = ref({});
  1702. let valsobj = ref({});
  1703. let tabarr = ref([]);
  1704. let arrobj = ref([]);
  1705. let tableDatalieb = ref([
  1706. { value1: '0.00', value2: '0.00', value3:'0.00', value4:'0.00', value5:'0.00'},
  1707. { value1: '0.00', value2: '0.00', value3:'0.00', value4:'0.00', value5:'0.00'},
  1708. { value1: '0.00', value2: '0.00', value3:'0.00', value4:'0.00', value5:'0.00'},
  1709. { value1: '0.00', value2: '0.00', value3:'0.00', value4:'0.00', value5:'0.00'},
  1710. { value1: '0.00', value2: '0.00', value3:'0.00', value4:'0.00', value5:'0.00'},
  1711. ])
  1712. let curvedata = ref('');
  1713. let websock = ref(null);
  1714. let times = ref({
  1715. lockReconnect: false, //是否真正建立连接
  1716. timeout: 28 * 1000, //30秒一次心跳
  1717. timeoutObj: null, //心跳倒计时
  1718. serverTimeoutObj: null, //
  1719. timeoutnum: null, //断开重连倒计时
  1720. })
  1721. let input3=ref()
  1722. let eid = ref('');//进步优化器的eid
  1723. let logs = ref("");
  1724. let pid = ref("");
  1725. let fid = ref('');
  1726. let conid = ref('');
  1727. let tableval = ref();
  1728. let vuefval = ref();
  1729. let elodingfalse = ref(false);
  1730. let footerShow = ref(true);
  1731. let zhixing = ref('Rosenbrock');
  1732. let tabName = ref("one")
  1733. const tabs = [{
  1734. name:'信息栏',
  1735. img:xin,
  1736. },{
  1737. name:'优化问题',
  1738. img:xin2,
  1739. }]
  1740. const listli=[{
  1741. name:'设计变量',
  1742. noimg:nos,
  1743. isimg:s
  1744. },{
  1745. name:'约束条件',
  1746. noimg:y2,
  1747. isimg:zy2
  1748. },
  1749. {
  1750. name:'优化目标',
  1751. noimg:y,
  1752. isimg:zy
  1753. }
  1754. ]
  1755. const xfoil = ['输入', '执行', '输出'];
  1756. const newxfoil = ['输入参数', '输出参数', '中间参数'];
  1757. let srtable = ref([]);
  1758. let radio1=ref(0);
  1759. let srnewtable = ref([
  1760. {
  1761. date: '2016-05-04',
  1762. name: 'Aleyna Kutzner',
  1763. },
  1764. {
  1765. date: '2016-05-03',
  1766. name: 'Helen Jacobi',
  1767. },
  1768. ]);
  1769. let scnewtable = ref([
  1770. {
  1771. date: '2016-05-04',
  1772. name: 'Aleyna Kutzner',
  1773. con:-1
  1774. },
  1775. {
  1776. date: '2016-05-03',
  1777. name: 'Helen Jacobi',
  1778. con:1
  1779. },
  1780. ]);
  1781. let sctable = ref([]);
  1782. // let quxian=ref([{
  1783. // val:'1',name:"设计变量",
  1784. // val:'2',name:"约束条件",
  1785. // val:'3',name:"约束条件",
  1786. // }])
  1787. // let quval=ref('1')
  1788. let currentTab=ref(0);
  1789. // let tabslist = ref([
  1790. // { id: '0', name: '来流参数' },
  1791. // { id: '1', name: '设置参数' },
  1792. // { id: '2', name: '分析参数' },
  1793. // ])
  1794. let yslist = ref([
  1795. { label: 'GA', value: 'GA' },
  1796. { label: 'PSO', value: 'PSO' },
  1797. { label: 'NSGA2', value: 'NSGA2' },
  1798. ])
  1799. let lailiutable=ref([
  1800. {
  1801. data: 1,
  1802. name: '结构质量',
  1803. con:-1
  1804. },
  1805. {
  1806. data: 23,
  1807. name: 'KS失效',
  1808. con:1
  1809. },
  1810. {
  1811. data: 0.0,
  1812. name: '最大变形',
  1813. con: -1
  1814. }
  1815. ])
  1816. let quxian = ref([
  1817. { label: '设计变量', value: '设计变量' },
  1818. { label: '约束条件', value: '约束条件' },
  1819. { label: '目标函数', value: '目标函数' },
  1820. ])
  1821. let quval = ref("")
  1822. const activeIndex = ref(0);
  1823. const activeIndex2 = ref(0);
  1824. const activeIndex3 = ref(0);
  1825. const color1 = ref('');
  1826. const colortier = ref('rgba(16, 185, 129, 0.5)');
  1827. let showTrigger = ref(false);
  1828. let activeadf=ref('Xfoil');
  1829. const datatree = ref([
  1830. {
  1831. id: 1,
  1832. label: '工程',
  1833. children: [
  1834. {
  1835. id: '1-1',
  1836. label: '优化问题',
  1837. img: gc1,
  1838. },
  1839. {
  1840. id: '1-2',
  1841. label: '分析流程',
  1842. img: gc2,
  1843. },
  1844. {
  1845. id: '1-3',
  1846. label: '优化器',
  1847. img: gc3
  1848. },
  1849. ],
  1850. },
  1851. ])
  1852. let options1 = ref([
  1853. { label: '最大化', value: -1 },
  1854. { label: '最小化', value: 1 },
  1855. ])
  1856. let options2 = ref([
  1857. { label: '升力系数', value: '升力系数' },
  1858. { label: '翼型面积', value: '翼型面积' },
  1859. ])
  1860. let options3 = ref([
  1861. { label: '大于', value: -1 },
  1862. { label: '小于', value: 1 },
  1863. ])
  1864. let shuxingopt = ref([
  1865. { label: '约束条件', value: -1 },
  1866. { label: '优化目标', value: 1 },
  1867. ])
  1868. let defaultExpandedArr = ref([]);
  1869. const defaultProps = {
  1870. children: 'children',
  1871. label: 'label',
  1872. }
  1873. let svarlist = ref('');
  1874. let conlist = ref('');
  1875. let funlist = ref('');
  1876. let looktext=ref('');
  1877. // treeData.value.forEach((item) => {
  1878. // defaultExpandedArr.value.push(item.id);
  1879. // });
  1880. const activeName = ref('Role')
  1881. const activeName1 = ref('message')
  1882. let active = ref('');
  1883. let tabactive = ref("");
  1884. let checkbox = ref(false)
  1885. let formLabelWidth6 = ref(100)
  1886. let formLabelWidth1 = ref(170)
  1887. let formLabelWidth2 = ref(130)
  1888. let canshu = ref();
  1889. let question = ref([
  1890. { url: 'kk1.png', titlie: "列表" },
  1891. { url: 'kk2.png', titlie: "散点图" },
  1892. { url: 'kk4.png', titlie: "折线图" },
  1893. { url: 'kk8.png', titlie: "帕雷托图" },
  1894. { url: 'kk3.png', titlie: "面积图" },
  1895. { url: 'kk5.png', titlie: "柱状图" },
  1896. { url: 'k3.png', titlie: "饼状图" },
  1897. { url: 'kk6.png', titlie: "横条图" },
  1898. { url: 'kk7.png', titlie: "雷达图" },
  1899. { url: 'kk9.png', titlie: "云图/等值线" },
  1900. { url: 'kk10.png', titlie: "查看报告" },
  1901. { url: 'kk11.png', titlie: "导出报告" },
  1902. ])
  1903. let roletion = ref([
  1904. { url: 'f41.png', titlie: "测试函数模板" },
  1905. { url: 'r1.png', titlie: "工程优化模板" },
  1906. { url: 'r2.png', titlie: "自定义" },
  1907. ])
  1908. let tasktion = ref([
  1909. { url: 't0.png', titlie: "外形参数化" },
  1910. ])
  1911. let Rolelist = ref([
  1912. { url: 'tow1.png', titlie: "优化问题组件" },
  1913. { url: 'tow2.png', titlie: "学科分析组件" },
  1914. { url: 'tow3.png', titlie: "优化器组件" },
  1915. ])
  1916. let Rolelist1 = ref([
  1917. { url: 'l1.png', titlie: "逻辑流连线" },
  1918. { url: 'l2.png', titlie: "数据流连线" },
  1919. ])
  1920. let Rolelist11 = ref([{ url: 'w6.png', titlie: "选择连线颜色" }])
  1921. let Rolelist2 = ref([
  1922. { url: 'cai1.png', titlie: "模块组合" },
  1923. { url: 'cai2.png', titlie: "模块拆分" },
  1924. ])
  1925. let Rolelist22 = ref([{ url: 'w9.png', titlie: "选择图框颜色" }])
  1926. let Rolelist3 = ref([
  1927. { url: 'w10.png', titlie: "添加注释" },
  1928. ])
  1929. let Threelist = ref([
  1930. { url: 'you1.png', titlie: "开始" },
  1931. { url: 'you2.png', titlie: "暂停" },
  1932. { url: 'you3.png', titlie: "续算" },
  1933. { url: 'tts.png', titlie: "结束" },
  1934. ])
  1935. let Threelist1 = ref([
  1936. { url: 'yh1.png', titlie: "列表监控" },
  1937. { url: 'yh2.png', titlie: "曲线监控" },
  1938. { url: 'yh3.png', titlie: "过程监控" },
  1939. ])
  1940. let Sevenlist = ref([
  1941. { url: 'rr2.png', titlie: '任务检索' },
  1942. { url: 'rr1.png', titlie: '任务管理' },
  1943. { url: 'rr3.png', titlie: '备份' },
  1944. ])
  1945. let eightlist = ref([
  1946. { url: 'e1.png', titlie: '用户手册' },
  1947. { url: 'e2.png', titlie: '帮助文档' },
  1948. { url: 'e3.png', titlie: '关于软件' },
  1949. ])
  1950. let canshulist = ref([
  1951. { label: 'CST参数化', value: 'CST参数化' },
  1952. { label: 'FFD参数化', value: 'FFD参数化' },
  1953. ])
  1954. let sevlist = ref([
  1955. { label: '任务编号', value: '任务编号' },
  1956. { label: '任务名称', value: '任务名称' },
  1957. { label: '任务类型', value: '任务类型' },
  1958. { label: '创建时间', value: '创建时间' },
  1959. ])
  1960. let seval4 = ref('任务名称');
  1961. let agelist = ref([
  1962. { label: 'Kriging模型', value: 'Kriging模型' },
  1963. { label: '相关函数类型', value: '相关函数类型' },
  1964. { label: '超参数优化方法', value: '超参数优化方法' },
  1965. { label: 'Hooke Jeeves方法循环次数', value: 'Hooke Jeeves方法循环次数' },
  1966. ])
  1967. let agval = ref("Kriging模型")
  1968. let agval1 = ref("固定设计空间")
  1969. let agval2 = ref("拉丁超立方")
  1970. let agelist1 = ref([
  1971. { label: '固定设计空间', value: '固定设计空间' },
  1972. ])
  1973. let agelist2 = ref([
  1974. { label: '拉丁超立方', value: '拉丁超立方' },
  1975. ])
  1976. let addval = ref("EI + MSP")
  1977. let addlist = ref([
  1978. { label: 'EI + MSP', value: 'EI + MSP' },
  1979. ])
  1980. let addval1 = ref("概率相乘法")
  1981. let addlist1 = ref([
  1982. { label: '概率相乘法', value: '概率相乘法' },
  1983. ])
  1984. let addval2 = ref("SBX交叉")
  1985. let addlist2 = ref([
  1986. { label: 'SBX交叉', value: 'SBX交叉' },
  1987. ])
  1988. let addval3 = ref("最佳保留策略")
  1989. let ys = ref("GA")
  1990. let addlist3 = ref([
  1991. { label: '最佳保留策略', value: '最佳保留策略' },
  1992. ])
  1993. let addval4 = ref("倒位变异")
  1994. let addlist4 = ref([
  1995. { label: '倒位变异', value: '倒位变异' },
  1996. ])
  1997. let addval7 = ref("1e-7")
  1998. let addlist7 = ref([
  1999. { label: '1e-7', value: '1e-7' },
  2000. ])
  2001. let addval8 = ref("NO")
  2002. let addlist8 = ref([
  2003. { label: 'YES', value: 'YES' },
  2004. { label: 'NO', value: 'NO' },
  2005. ])
  2006. let paretocbval = ref([])
  2007. let paretocheckbox = ref([
  2008. {label:'-cl',value:'-cl'},
  2009. {label:'cd',value:'cd'},
  2010. ])
  2011. let cloudbtnbox = ref([
  2012. {url:'meshFile.png',btnname:'文件选择'},
  2013. {url:'yu.png',btnname:'域'},
  2014. {url:'kk9.png',btnname:'云图'},
  2015. {url:'seka.png',btnname:'色卡'},
  2016. {url:'dengzx.png',btnname:'等值线'},
  2017. ])
  2018. let dialog = ref({
  2019. newdialog: false,
  2020. setdialog: false,
  2021. targetdialog: false,
  2022. design: false,
  2023. constraint: false,
  2024. parameter: false,
  2025. agency: false,
  2026. optimizer: false,
  2027. jboptimizer: false,
  2028. dboptimizer: false,
  2029. tboptimizer: false,
  2030. isADflow:false,
  2031. lookover:false,
  2032. exportreport:false,
  2033. Xfiol: false,
  2034. tidu:false,
  2035. CSTt:false,
  2036. ffdt:false,
  2037. XfAD:false,
  2038. cstffd:false,
  2039. Taxs:false,
  2040. enddialog: false,
  2041. addfun: false,
  2042. sufun: false,
  2043. task: false,
  2044. guanli: false,
  2045. optgroup:false,
  2046. Pythonshow:false,
  2047. listdialog:false,
  2048. scatterdialog:false,
  2049. echartLinedialog:false,
  2050. paretodialog:false,
  2051. clouddialog:false,
  2052. fsidialog:false,
  2053. flightdialog:false,
  2054. })
  2055. // let columns=ref[{
  2056. // columns: [
  2057. // { label: '上表面', prop: 'sbiao' },
  2058. // { label: '下表面', prop: 'xbiao' },
  2059. // // 动态添加更多列
  2060. // ]
  2061. // }]
  2062. let options = ref([
  2063. { label: '升阻比', value: '升阻比' },
  2064. { label: 'RCS', value: 'RCS' },
  2065. ])
  2066. let tasklist = ref([
  2067. { label: '气动', value: '气动' },
  2068. { label: '结构', value: '结构' },
  2069. { label: '隐身', value: '隐身' },
  2070. { label: '噪声', value: '噪声' },
  2071. ])
  2072. const optiongroup = [
  2073. {
  2074. label: '大飞机',
  2075. options: [
  2076. {
  2077. value: '气动优化',
  2078. label: '气动优化',
  2079. },
  2080. {
  2081. value: '气弹优化',
  2082. label: '气弹优化',
  2083. },
  2084. ],
  2085. },
  2086. {
  2087. label: '直升机',
  2088. options: [
  2089. {
  2090. value: '气动优化1',
  2091. label: '气动优化',
  2092. },
  2093. {
  2094. value: '气弹优化2',
  2095. label: '气弹优化',
  2096. },
  2097. {
  2098. value: '气动噪声优化',
  2099. label: '气动噪声优化',
  2100. },
  2101. ],
  2102. },
  2103. ]
  2104. const eloptimize = ref([])
  2105. const tableData = ref([])
  2106. const designtable = ref([])
  2107. const tasktable = ref([
  2108. // {
  2109. // id: "01",
  2110. // time: '2016-05-03',
  2111. // name: '升阻比',
  2112. // state: '增大',
  2113. // },
  2114. // {
  2115. // id: "02",
  2116. // time: '2016-05-03',
  2117. // name: '升阻比',
  2118. // state: '增大',
  2119. // },
  2120. ])
  2121. const customColors = [
  2122. { color: '#f56c6c', percentage: 20 },
  2123. { color: '#f56c6c', percentage: 40 },
  2124. { color: '#5cb87a', percentage: 60 },
  2125. { color: '#5cb87a', percentage: 80 },
  2126. { color: '#5cb87a', percentage: 100 },
  2127. ]
  2128. let name = ref("1")
  2129. let num = ref(1)
  2130. const getImgPath = (url) => {
  2131. return new URL(`../assets/img/${url}`, import.meta.url).href
  2132. }
  2133. onMounted(() => {
  2134. //console.log( Sidebarref.value.datatree);
  2135. setTimeout(function () {
  2136. init();
  2137. initWebSocket();
  2138. logsget();
  2139. // vuefval.value.getroter()
  2140. }, 1500);
  2141. // childfun();
  2142. });
  2143. const sjdelete = (index, row) => {
  2144. console.log(index);
  2145. designtable.value.splice(index, 1)
  2146. }
  2147. const ysdelete = (index, row) => {
  2148. tableData.value.splice(index, 1)
  2149. }
  2150. const mbdelete = (index, row) => {
  2151. eloptimize.value.splice(index, 1)
  2152. }
  2153. // 初始值
  2154. const init = () => {
  2155. pid.value = route.query.pid;
  2156. console.log(route.query.pid);
  2157. }
  2158. const handleClick = (tab, event) => {
  2159. console.log('标签页:',tab.props.name);
  2160. tabactive.value = tab.props.name;
  2161. if (tabactive.value == 'User') {
  2162. router.replace({ path: '/' })
  2163. } else {
  2164. }
  2165. if (tabactive.value == 'Role') {
  2166. flowshow.value = true;
  2167. console.log(11111)
  2168. } else {
  2169. flowshow.value = false;
  2170. console.log(flowshow.value)
  2171. }
  2172. ifjiankong();
  2173. dialogcolse()
  2174. // 可视化标签页
  2175. if (tabactive.value == 'Config') {
  2176. echartzongshow.value = true;
  2177. curveLine();
  2178. } else {
  2179. echartzongshow.value = false;
  2180. }
  2181. }
  2182. //表格点击事件
  2183. const handleEdit = (row) => {
  2184. // console.log('编辑后的数据:', row);
  2185. // 在这里处理数据保存逻辑,例如发送请求到后端更新数据
  2186. };
  2187. const footerClick = (tab, event) => {
  2188. }
  2189. // 关闭所有弹窗
  2190. const dialogcolse = () => {
  2191. dialog.value.newdialog = false;
  2192. dialog.value.setdialog = false;
  2193. dialog.value.targetdialog = false;
  2194. dialog.value.design = false;
  2195. dialog.value.constraint = false;
  2196. dialog.value.parameter = false;
  2197. dialog.value.agency = false;
  2198. dialog.value.addfun = false;
  2199. dialog.value.sufun = false;
  2200. dialog.value.enddialog = false;
  2201. dialog.value.task = false;
  2202. dialog.value.guanli = false;
  2203. }
  2204. // Tree的点击事件
  2205. const handleNodeClick = (data) => {
  2206. console.log(data)
  2207. tabactive.value = data.label;
  2208. dialogbolen();
  2209. }
  2210. const optimizerfalse = (val) => {
  2211. console.log('双击',val);
  2212. if (val == '优化器') {
  2213. // dialog.value.optimizer = true;
  2214. activeadf.value='代理优化器';
  2215. initoptimize();
  2216. dialog.value.optgroup = true;
  2217. } else if (val == '参数化') {
  2218. activeadf.value='CST';
  2219. initcstffds();
  2220. dialog.value.cstffd = true;
  2221. }else if (val == '气动分析') {
  2222. activeadf.value='Xfoil'
  2223. intxfoiladflow();
  2224. dialog.value.XfAD = true;
  2225. } else if (val == '进化优化器') {
  2226. activeadf.value='进化优化器';
  2227. dialog.value.jboptimizer = true;
  2228. nextTick(() => {
  2229. // 确保 ref 已经初始化
  2230. if (Joptimizeref.value) {
  2231. // 调用 Joptimize 的 getoptimize 方法
  2232. Joptimizeref.value.getoptimize(pid.value);
  2233. }
  2234. });
  2235. } else if (val == '代理优化器') {
  2236. activeadf.value='代理优化器';
  2237. // dialog.value.optgroup = true;
  2238. dialog.value.dboptimizer = true;
  2239. nextTick(() => {
  2240. // 确保 ref 已经初始化
  2241. if (Doptimizeref.value) {
  2242. Doptimizeref.value.getDoptimize(pid.value);
  2243. }
  2244. });
  2245. }
  2246. // else if (val == 'Xfiol' || val == 'Rosenbrock') {
  2247. // importget();
  2248. // dialog.value.Xfiol = true;
  2249. // }
  2250. else if(val == '梯度优化器'){
  2251. activeadf.value='梯度优化器';
  2252. dialog.value.tboptimizer = true;
  2253. nextTick(() => {
  2254. // 确保 ref 已经初始化
  2255. if (Toptimizeref.value) {
  2256. Toptimizeref.value.getToptimize(pid.value);
  2257. }
  2258. });
  2259. }else if(val == 'CST'){
  2260. /// dialog.value.CSTt = true;
  2261. activeadf.value='CST';
  2262. dialog.value.CSTt = true;
  2263. nextTick(() => {
  2264. // 确保 ref 已经初始化
  2265. if (Cstref.value) {
  2266. Cstref.value.getcst(pid.value);
  2267. }
  2268. });
  2269. }else if(val == 'FFD'){
  2270. /// dialog.value.CSTt = true;
  2271. activeadf.value='FFD';
  2272. dialog.value.ffdt = true;
  2273. nextTick(() => {
  2274. // 确保 ref 已经初始化
  2275. if (Ffdref.value) {
  2276. Ffdref.value.getffds(pid.value);
  2277. }
  2278. });
  2279. }
  2280. else if(val == 'ADflow'){
  2281. // adfhandleClick();
  2282. activeadf.value='ADflow';
  2283. dialog.value.isADflow = true;
  2284. nextTick(() => {
  2285. // 确保 ref 已经初始化
  2286. if (ADflowref.value) {
  2287. ADflowref.value.getadflow(pid.value);
  2288. }
  2289. });
  2290. }else if(val == 'Xfoil'){
  2291. // activeadf.value='Xfiol';
  2292. dialog.value.Xfiol = true;
  2293. nextTick(() => {
  2294. // 确保 ref 已经初始化
  2295. if (Xfoilref.value) {
  2296. Xfoilref.value.getxfoil(pid.value);
  2297. }
  2298. });
  2299. }else if(val == 'TACS'){
  2300. dialog.value.Taxs = true;
  2301. }else if(val == '模版'){
  2302. dialog.value.optgroup = true;
  2303. activeadf.value='代理优化器';
  2304. }else if(val == 'Python'){
  2305. dialog.value.Pythonshow = true;
  2306. initPython();
  2307. }else if(val == 'FUM to FEM'){
  2308. dialog.value.fsidialog = true;
  2309. }else if(val == 'Flight'){
  2310. dialog.value.flightdialog = true;
  2311. }
  2312. else {
  2313. dialog.value.optimizer = false;
  2314. dialog.value.jboptimizer = false;
  2315. dialog.value.Xfiol = false;
  2316. dialog.value.lookover = false;
  2317. dialog.value.tidu = false;
  2318. dialog.value.CSTt = false;
  2319. dialog.value.XfAD = false;
  2320. dialog.value.cstffd = false;
  2321. dialog.value.Pythonshow = false;
  2322. dialog.value.fsidialog = false;
  2323. dialog.value.flightdialog = false;
  2324. }
  2325. }
  2326. // 优化器窗口初始化
  2327. const initoptimize = () => {
  2328. const params1 = {
  2329. transCode:'MDO0018',
  2330. pid: pid.value,
  2331. }
  2332. const params2 = {
  2333. transCode:'MDO0031',
  2334. pid: pid.value,
  2335. }
  2336. const params3 = {
  2337. transCode:'MDO0033',
  2338. pid: pid.value,
  2339. }
  2340. Promise.all([
  2341. request(params1),
  2342. request(params2),
  2343. request(params3)
  2344. ]).then(([res1, res2, res3]) => {
  2345. console.log('1:', res1.checked);
  2346. console.log('2:', res2.checked);
  2347. console.log('3:', res3.checked);
  2348. if(res1.hasOwnProperty('eid')){
  2349. Joptimizeref.value.getoptimizeAssign(res1);
  2350. }else if(res3.hasOwnProperty('grid')){
  2351. Toptimizeref.value.getToptimizeAssign(res3);
  2352. }else if(res2.hasOwnProperty('suid')){
  2353. Doptimizeref.value.getDoptimizeAssign(res2);
  2354. }
  2355. // 根据返回值来设置 activeadf
  2356. if (res1.checked === 1) {
  2357. activeadf.value = '进化优化器';
  2358. } else if (res2.checked === 1) {
  2359. activeadf.value = '代理优化器';
  2360. } else if (res3.checked === 1) {
  2361. activeadf.value = '梯度优化器';
  2362. }
  2363. console.log('Updated activeadf:', activeadf.value);
  2364. }).catch((err) => {
  2365. console.error('请求失败:', err);
  2366. });
  2367. }
  2368. // CST/FFD窗口初始化
  2369. const initcstffds = () => {
  2370. const params1 = {
  2371. transCode:'MDO0040',
  2372. pid: pid.value,
  2373. }
  2374. const params2 = {
  2375. transCode:'MDO0043',
  2376. pid: pid.value,
  2377. }
  2378. Promise.all([
  2379. request(params1),
  2380. request(params2),
  2381. ]).then(([res1, res2]) => {
  2382. console.log('1:', res1.checked);
  2383. console.log('2:', res2.checked);
  2384. if(res1.hasOwnProperty('cstid')){
  2385. Cstref.value.getcstAssign(res1);
  2386. }else if(res2.hasOwnProperty("ffdid")){
  2387. Ffdref.value.getffdsAssign(res2);
  2388. }
  2389. // 根据返回值来设置 activeadf
  2390. if (res1.checked === 1) {
  2391. activeadf.value = 'CST';
  2392. } else if (res2.checked === 1) {
  2393. activeadf.value = 'FFD';
  2394. }
  2395. console.log('Updated activeadf:', activeadf.value);
  2396. }).catch((err) => {
  2397. console.error('请求失败:', err);
  2398. });
  2399. }
  2400. // Xfoil/ADflow窗口初始化
  2401. const intxfoiladflow = () => {
  2402. const params1 = {
  2403. transCode:'MDO0046',
  2404. pid: pid.value,
  2405. }
  2406. const params2 = {
  2407. transCode:'MDO0049',
  2408. pid: pid.value,
  2409. }
  2410. Promise.all([
  2411. request(params1),
  2412. request(params2),
  2413. ]).then(([res1, res2]) => {
  2414. console.log('1:', res1.checked);
  2415. console.log('2:', res2.checked);
  2416. if(res1.hasOwnProperty("xfid")){
  2417. Xfoilref.value.getxfoilAssign(res1);
  2418. }else if(res2.hasOwnProperty("adid")){
  2419. ADflowref.value.getadflowAssign(res2);
  2420. }
  2421. // 根据返回值来设置 activeadf
  2422. if (res1.checked === 1) {
  2423. activeadf.value = 'Xfoil';
  2424. } else if (res2.checked === 1) {
  2425. activeadf.value = 'ADflow';
  2426. }
  2427. console.log('Updated activeadf:', activeadf.value);
  2428. }).catch((err) => {
  2429. console.error('请求失败:', err);
  2430. });
  2431. }
  2432. // Python窗口初始化
  2433. const initPython = () => {
  2434. console.log('Pythonchushihua');
  2435. const param = {
  2436. transCode: 'MDO0036',
  2437. pid: pid.value,
  2438. };
  2439. request(param).then((res) => {
  2440. console.log('Python:', res);
  2441. // 判断 res.ptython 是否为空,若不为空则赋值
  2442. if (res.ptython) {
  2443. textarea1.value = res.ptython;
  2444. }
  2445. }).catch((err) => {
  2446. console.error('请求失败:', err);
  2447. });
  2448. };
  2449. // Python确认按钮提交
  2450. const pythonSubmit = () => {
  2451. console.log('Python确认按钮提交');
  2452. const param = {
  2453. transCode:'MDO0037',
  2454. pid: pid.value,
  2455. python: textarea1.value,
  2456. }
  2457. request(param).then((res) => {
  2458. console.log('Python确认按钮提交:', res);
  2459. }).catch((err) => {
  2460. console.error('请求失败:', err);
  2461. });
  2462. }
  2463. // python处理编辑器内容变化的方法
  2464. const handleEditorChange = (value) => {
  2465. console.log('Editor content changed in parent component:', value);
  2466. };
  2467. // 模块选择
  2468. const clickgeometry = (e, index, key, name) => {
  2469. console.log(key);
  2470. console.log('模块选择:',name);
  2471. tabactive.value = name;
  2472. dialogbolen();
  2473. }
  2474. const dialogbolen = () => {
  2475. switch (tabactive.value) {
  2476. case "新建任务":
  2477. dialog.value.newdialog = true;
  2478. break;
  2479. case "问题设定":
  2480. dialog.value.setdialog = true;
  2481. break;
  2482. case "优化目标":
  2483. dialog.value.targetdialog = true;
  2484. break;
  2485. case "设计变量":
  2486. dialog.value.design = true;
  2487. break;
  2488. case "约束条件":
  2489. dialog.value.constraint = true;
  2490. break;
  2491. case "外形参数化":
  2492. dialog.value.parameter = true;
  2493. break;
  2494. case "代理模型":
  2495. dialog.value.agency = true;
  2496. break;
  2497. case "加点方法":
  2498. dialog.value.addfun = true;
  2499. break;
  2500. case "优化算法":
  2501. dialog.value.sufun = true;
  2502. break;
  2503. case "终止条件":
  2504. dialog.value.enddialog = true;
  2505. break;
  2506. case "任务管理":
  2507. dialog.value.task = true;
  2508. break;
  2509. case "任务检索":
  2510. dialog.value.guanli = true;
  2511. break;
  2512. case "选择连线颜色":
  2513. showTrigger.value = true;
  2514. break;
  2515. case "逻辑流连线":
  2516. vuefval.value.linestrokeWidth(1);
  2517. break;
  2518. case "数据流连线":
  2519. vuefval.value.linestrokeWidth(3);
  2520. break;
  2521. case "模块组合":
  2522. vuefval.value.bgcolorfunc(colortier.value);
  2523. vuefval.value.onSelection();
  2524. break;
  2525. case "开始":
  2526. // optmonitor1.value.echatinit();
  2527. // processMonitor1ref.value.echatinit();
  2528. // processMonitor1ref.value.echatinit();
  2529. runok();
  2530. break;
  2531. case "列表监控":
  2532. ifjiankong()
  2533. break;
  2534. case "曲线监控":
  2535. ifjiankong()
  2536. curveLine();
  2537. break;
  2538. case "过程监控":
  2539. ifjiankong()
  2540. break;
  2541. case "列表":
  2542. echatsfunc();
  2543. dialog.value.listdialog = true;
  2544. break;
  2545. case "面积图":
  2546. echatsfunc();
  2547. break;
  2548. case "饼状图":
  2549. echatsfunc();
  2550. break;
  2551. case "柱状图":
  2552. echatsfunc();
  2553. break;
  2554. case "折线图":
  2555. dialog.value.echartLinedialog = true;
  2556. echatsfunc();
  2557. break;
  2558. case "散点图":
  2559. // logsget();
  2560. dialog.value.scatterdialog = true;
  2561. echatsfunc();
  2562. break;
  2563. case "横条图":
  2564. echatsfunc();
  2565. break;
  2566. case "雷达图":
  2567. //logsget();
  2568. echatsfunc();
  2569. break;
  2570. case "帕雷托图":
  2571. dialog.value.paretodialog = true;
  2572. echatsfunc();
  2573. break;
  2574. case "云图/等值线":
  2575. dialog.value.clouddialog = true;
  2576. break;
  2577. case "查看报告":
  2578. echatsfunc();
  2579. dialog.value.lookover = true;
  2580. break;
  2581. case "导出报告":
  2582. dialog.value.exportreport = true;
  2583. break;
  2584. default:
  2585. }
  2586. }
  2587. // 可视化清空
  2588. const echartclear = () => {
  2589. arearef.value.echatinit();
  2590. bargraphref.value.echatinit();
  2591. echartLineref.value.echatinit();
  2592. BarChartref.value.echatinit();
  2593. radarref.value.echatinit();
  2594. scatterref.value.echatinit();
  2595. pieref.value.echatinit();
  2596. paretoref.value.echatinit();
  2597. }
  2598. const echatsfunc = () => {
  2599. //echartzongshow.value=true;
  2600. // echartclear();
  2601. switch (tabactive.value) {
  2602. case "面积图":
  2603. areashow.value = true;
  2604. bargraphshow.value = false;
  2605. echartLineshow.value = false;
  2606. BarChartshow.value = false;
  2607. radarshow.value = false;
  2608. scattershow.value = false;
  2609. pieshow = false;
  2610. paretoshow =false;
  2611. break;
  2612. case "柱状图":
  2613. areashow.value = false;
  2614. bargraphshow.value = true;
  2615. echartLineshow.value = false;
  2616. BarChartshow.value = false;
  2617. radarshow.value = false;
  2618. scattershow.value = false;
  2619. pieshow = false;
  2620. paretoshow = false;
  2621. break;
  2622. case "饼状图":
  2623. areashow.value = false;
  2624. bargraphshow.value = false;
  2625. echartLineshow.value = false;
  2626. BarChartshow.value = false;
  2627. radarshow.value = false;
  2628. scattershow.value = false;
  2629. pieshow = true;
  2630. paretoshow = false;
  2631. break;
  2632. case "折线图":
  2633. areashow.value = false;
  2634. bargraphshow.value = false;
  2635. echartLineshow.value = true;
  2636. BarChartshow.value = false;
  2637. radarshow.value = false;
  2638. scattershow.value = false;
  2639. pieshow = false;
  2640. paretoshow = false;
  2641. break;
  2642. case "散点图":
  2643. areashow.value = false;
  2644. bargraphshow.value = false;
  2645. echartLineshow.value = false;
  2646. BarChartshow.value = false;
  2647. radarshow.value = false;
  2648. scattershow.value = true;
  2649. pieshow = false;
  2650. paretoshow = false;
  2651. break
  2652. case "横条图":
  2653. areashow.value = false;
  2654. bargraphshow.value = false;
  2655. echartLineshow.value = false;
  2656. BarChartshow.value = true;
  2657. radarshow.value = false;
  2658. scattershow.value = false;
  2659. pieshow = false;
  2660. paretoshow = false;
  2661. break
  2662. case "雷达图":
  2663. areashow.value = false;
  2664. bargraphshow.value = false;
  2665. echartLineshow.value = false;
  2666. BarChartshow.value = false;
  2667. radarshow.value = true;
  2668. scattershow.value = false;
  2669. pieshow = false;
  2670. paretoshow = false;
  2671. break
  2672. case "帕雷托图":
  2673. areashow.value = false;
  2674. bargraphshow.value = false;
  2675. echartLineshow.value = false;
  2676. BarChartshow.value = false;
  2677. radarshow.value = false;
  2678. scattershow.value = false;
  2679. pieshow = false;
  2680. paretoshow = true;
  2681. break
  2682. default:
  2683. areashow.value = false;
  2684. bargraphshow.value = false;
  2685. echartLineshow.value = false;
  2686. BarChartshow.value = false;
  2687. radarshow.value = false;
  2688. scattershow.value = false;
  2689. pieshow = false;
  2690. paretoshow = false;
  2691. break
  2692. }
  2693. }
  2694. // 可视化结束
  2695. // ||activeName.value=='Three'&&tabactive.value=='开始'
  2696. const ifjiankong = () => {
  2697. if (activeName.value == 'Three' && tabactive.value == '列表监控' || activeName.value == 'Three' && tabactive.value == '开始') {
  2698. jiankong.value = true;
  2699. } else {
  2700. jiankong.value = false;
  2701. }
  2702. if (activeName.value == 'Three' && tabactive.value == '曲线监控' ) {
  2703. echartshow.value = true;
  2704. } else {
  2705. echartshow.value = false;
  2706. }
  2707. if (activeName.value == 'Three' && tabactive.value == '过程监控' ) {
  2708. echartshow2.value = true;
  2709. } else {
  2710. echartshow2.value = false;
  2711. }
  2712. }
  2713. // 求解
  2714. const runok = () => {
  2715. const params = {
  2716. transCode: 'MDO0039',
  2717. pid: pid.value,
  2718. }
  2719. request(params)
  2720. .then((res) => {
  2721. logs.value = '';
  2722. arrobj.value = [];
  2723. tabarr.value = [];
  2724. tableDatalieb.value = [];
  2725. tableHeaders.value = [];
  2726. ElMessage({
  2727. message: "开始运行",
  2728. type: 'success',
  2729. })
  2730. })
  2731. .catch((err) => {
  2732. ElMessage.error(err.returnMsg)
  2733. })
  2734. }
  2735. //曲线监控
  2736. const curveLine = () => {
  2737. const params = {
  2738. transCode: 'MDO0021',
  2739. pid: pid.value,
  2740. }
  2741. request(params)
  2742. .then((res) => {
  2743. curvedata.value = JSON.stringify(res.rows);
  2744. // console.log(curvedata.value);
  2745. // optmonitor1.value.getshuju(curvedata.value);
  2746. // optmonitor1.value.getsockechart();
  2747. arearef.value.getsockechart(curvedata.value);
  2748. bargraphref.value.getsockechart(curvedata.value);
  2749. echartLineref.value.getsockechart(curvedata.value);
  2750. BarChartref.value.getsockechart(curvedata.value);
  2751. radarref.value.getsockechart(curvedata.value);
  2752. scatterref.value.getsockechart(curvedata.value);
  2753. pieref.value.getsockechart(curvedata.value);
  2754. paretoref.value.getsockechart(curvedata.value);
  2755. // optmonitor1.value.getecharts();
  2756. })
  2757. .catch((err) => {
  2758. ElMessage.error(err.returnMsg)
  2759. })
  2760. }
  2761. //进化优化器
  2762. //选择颜色改变线的颜色
  2763. const colorpicker = (e) => {
  2764. console.log("color change:",vuefval.value);
  2765. vuefval.value.changeAllEdgesColor(color1.value);
  2766. }
  2767. //选择颜色改变tuceng的颜色
  2768. const colorpickertier = (e) => {
  2769. //vuefval.value.changeAllEdgesColor(color1.value);
  2770. vuefval.value.bgcolorfunc(colortier.value);
  2771. }
  2772. const deviceSelectChange = () => {
  2773. }
  2774. const handleClose = (done) => {
  2775. console.log(111)
  2776. dialog.value.newdialog = false;
  2777. done();
  2778. };
  2779. const targetclick = () => {
  2780. console.log(tableData.value)
  2781. }
  2782. // 模块组合
  2783. const modelgroup=()=>{
  2784. }
  2785. //新增
  2786. const onAddItem = () => {
  2787. let tablevalnum = Number(tableval.value) > 1 ? Number(tableval.value) : 1
  2788. if (activeIndex2.value == 0) {
  2789. for (let i = 0; i < tablevalnum; i++) {
  2790. designtable.value.push({
  2791. name: `x${i + 1}`,
  2792. upper: null,
  2793. lower: null,
  2794. reference: null,
  2795. remark: ''
  2796. })
  2797. }
  2798. } else if (activeIndex2.value == 1) {
  2799. for (let i = 0; i < tablevalnum; i++) {
  2800. tableData.value.push({
  2801. name: `g${i + 1}`,
  2802. con: -1,
  2803. reference: null,
  2804. upper: 0,
  2805. lower: 0,
  2806. })
  2807. }
  2808. } else if (activeIndex2.value == 2) {
  2809. for (let i = 0; i < tablevalnum; i++) {
  2810. eloptimize.value.push({
  2811. name: `c${i + 1}`,
  2812. optdir: 1,
  2813. weight: 0,
  2814. scaling: 0,
  2815. factor: 0,
  2816. reference: null,
  2817. remark: '',
  2818. })
  2819. }
  2820. }
  2821. }
  2822. const xxclick = (index) => {
  2823. activeIndex.value = index
  2824. if (activeIndex.value == 0) {
  2825. } else if (activeIndex.value == 1) {
  2826. getissue();
  2827. }
  2828. }
  2829. //底部优化问题
  2830. const issueclick = (index) => {
  2831. activeIndex2.value = index;
  2832. if (activeIndex2.value == 0) {
  2833. getissue();
  2834. } else if (activeIndex2.value == 1) {
  2835. getyueshu();
  2836. } else if (activeIndex2.value == 2) {
  2837. getmub();
  2838. }
  2839. }
  2840. //设计变量查询
  2841. const getissue = () => {
  2842. //let childernarr=[];
  2843. const params = {
  2844. transCode: 'MDO0022',
  2845. pid: pid.value,
  2846. }
  2847. request(params)
  2848. .then((res) => {
  2849. if (res.rows.length === 0) {
  2850. } else {
  2851. let item1 = {
  2852. id: "1-1-" + 1,
  2853. label: '设计变量',
  2854. img: q2,
  2855. children: []
  2856. }
  2857. let arr = Sidebarref.value.datatree[0].children[0].children;
  2858. let result = arr.find(element => element.id === item1.id);
  2859. console.log(result);
  2860. if (!result) {
  2861. Sidebarref.value.datatree[0].children[0].children.push(item1);
  2862. }
  2863. let childernarr=Sidebarref.value.datatree[0].children[0].children
  2864. Sidebarref.value.datatree[0].children[0].children.forEach((item,index)=>{
  2865. if(item.label=='设计变量'){
  2866. Sidebarref.value.datatree[0].children[0].children[index].children=[];
  2867. }
  2868. })
  2869. res.rows = res.rows.map((item, index) => {
  2870. item.lower = Number(item.lower); // 将属性转换为数字
  2871. item.upper = Number(item.upper);
  2872. item.reference = Number(item.reference);
  2873. treeitem.value = {
  2874. id: "1-1-1-" + index,
  2875. label: item.name,
  2876. img: f21,
  2877. }
  2878. // console.log(Sidebarref.value.datatree[0].children[0].children[0].children)
  2879. childernarr.forEach((item,index)=>{
  2880. if(item.label=='设计变量'){
  2881. let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem.value);
  2882. }
  2883. })
  2884. return item;
  2885. })
  2886. designtable.value = res.rows;
  2887. }
  2888. })
  2889. .catch((err) => {
  2890. ElMessage.error(err.returnMsg)
  2891. })
  2892. // }
  2893. // })
  2894. }
  2895. //约束条件查询
  2896. const getyueshu = () => {
  2897. const params = {
  2898. transCode: 'MDO0023',
  2899. pid: pid.value,
  2900. }
  2901. request(params)
  2902. .then((res) => {
  2903. if (res.rows.length === 0) {
  2904. } else {
  2905. let item2 = {
  2906. id: "1-2-" + 2,
  2907. label: '约束条件',
  2908. img: f22,
  2909. children: []
  2910. }
  2911. let arr = Sidebarref.value.datatree[0].children[0].children;
  2912. let result = arr.find(element => element.id === item2.id);
  2913. if (!result) {
  2914. Sidebarref.value.datatree[0].children[0].children.push(item2);
  2915. }
  2916. Sidebarref.value.datatree[0].children[0].children.forEach((item, index) => {
  2917. if (item.label == '约束条件') {
  2918. Sidebarref.value.datatree[0].children[0].children[index].children = [];
  2919. }
  2920. });
  2921. let childernarr = Sidebarref.value.datatree[0].children[0].children;
  2922. res.rows = res.rows.map((item, index) => {
  2923. // 确保转换为数字
  2924. item.con = Number(item.con);
  2925. item.reference = Number(item.reference);
  2926. item.upper = Number(item.upper); // 添加对 upper 的处理
  2927. item.lower = Number(item.lower); // 添加对 lower 的处理
  2928. console.log('item:', item);
  2929. treeitem2.value = {
  2930. id: "1-2-2-" + index,
  2931. label: item.name,
  2932. img: f21,
  2933. }
  2934. childernarr.forEach((item, index) => {
  2935. if (item.label == '约束条件') {
  2936. let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem2.value);
  2937. }
  2938. });
  2939. return item;
  2940. });
  2941. tableData.value = res.rows; // 更新表格数据
  2942. }
  2943. })
  2944. .catch((err) => {
  2945. ElMessage.error(err.returnMsg);
  2946. })
  2947. }
  2948. //目标函数查询
  2949. const getmub = () => {
  2950. const params = {
  2951. transCode: 'MDO0024',
  2952. pid: pid.value,
  2953. }
  2954. request(params)
  2955. .then((res) => {
  2956. if (res.rows.length === 0) {
  2957. } else {
  2958. let item2 = {
  2959. id: "1-3-" + 3,
  2960. label: '目标函数',
  2961. img: f41,
  2962. children: []
  2963. }
  2964. let arr = Sidebarref.value.datatree[0].children[0].children;
  2965. let result = arr.find(element => element.id === item2.id);
  2966. if (!result) {
  2967. Sidebarref.value.datatree[0].children[0].children.push(item2);
  2968. }
  2969. Sidebarref.value.datatree[0].children[0].children.forEach((item,index)=>{
  2970. if(item.label=='目标函数'){
  2971. Sidebarref.value.datatree[0].children[0].children[index].children=[];
  2972. }
  2973. })
  2974. let childernarr=Sidebarref.value.datatree[0].children[0].children
  2975. res.rows = res.rows.map((item, index) => {
  2976. item.optdir = Number(item.optdir); // 将id属性转换为数字
  2977. item.weight = Number(item.weight);
  2978. item.scaling = Number(item.scaling);
  2979. item.factor = Number(item.factor);
  2980. item.reference = Number(item.reference);
  2981. item.remark = item.remark;
  2982. treeitem3.value = {
  2983. id: "1-3-3-" + index,
  2984. label: item.name,
  2985. img: f21,
  2986. }
  2987. childernarr.forEach((item,index)=>{
  2988. if(item.label=='目标函数'){
  2989. let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem3.value);
  2990. }
  2991. })
  2992. // console.log(11111)
  2993. // let addnode = Sidebarref.value.datatree[0].children[0].children[3].children.push(treeitem3.value);
  2994. return item;
  2995. })
  2996. eloptimize.value = res.rows;
  2997. }
  2998. })
  2999. .catch((err) => {
  3000. ElMessage.error(err.returnMsg)
  3001. })
  3002. }
  3003. //对象数组转化字符串
  3004. const getarr = (name, arrays) => {
  3005. console.log(arrays)
  3006. for (let i = 0; i < arrays.length; i++) {
  3007. let arr = [];
  3008. let att = [];
  3009. for (const key in arrays[i]) {
  3010. if (arrays[i].hasOwnProperty(key)) {
  3011. arr.push(arrays[i][key]);
  3012. }
  3013. }
  3014. for (let j = 0; j < arr.length; j++) {
  3015. if (typeof arr[j] === 'string' && arr[j] == "") {
  3016. console.log(11111)
  3017. arr[j] = " ";
  3018. }
  3019. }
  3020. if (arrays[i].hasOwnProperty('pid') == true) {
  3021. att = arr.slice(1, -1);
  3022. } else {
  3023. att = arr;
  3024. }
  3025. const valuesWithSemiColons = att.join(',');
  3026. name += valuesWithSemiColons + ';';
  3027. }
  3028. console.log('conlist',name)
  3029. return name;
  3030. }
  3031. const convertToStringArray = (result, Data) => {
  3032. console.log('Data:', Data);
  3033. result = Data.map(row => {
  3034. // 获取每一列的数据,排除带有 'id' 的字段
  3035. return Object.keys(row)
  3036. .filter(key => !key.includes('id')) // 过滤掉包含 'id' 的字段
  3037. .map(key => {
  3038. const value = row[key];
  3039. return (value === null || value === undefined || value === '') ? ' ' : value; // 处理 null、undefined 和空字符串
  3040. })
  3041. .join(','); // 将每个字段的值用逗号连接
  3042. }).join(';');
  3043. return result;
  3044. }
  3045. //保存优化问题
  3046. const onokItem = () => {
  3047. console.log(activeIndex2.value);
  3048. if (activeIndex2.value == 0) {
  3049. svarlist.value = '';
  3050. console.log("designtable:",designtable.value)
  3051. svarlist.value = convertToStringArray(svarlist.value, designtable.value)
  3052. devise();
  3053. } else if (activeIndex2.value == 1) {
  3054. conlist.value = '';
  3055. console.log("tabledata:",tableData.value)
  3056. conlist.value = convertToStringArray(conlist.value, tableData.value)
  3057. restrain();
  3058. } else if (activeIndex2.value == 2) {
  3059. funlist.value = '';
  3060. console.log("eloptimize:",eloptimize.value)
  3061. funlist.value = convertToStringArray(funlist.value, eloptimize.value)
  3062. funlistaa();
  3063. }
  3064. }
  3065. //设计变量的添加
  3066. const devise = () => {
  3067. const params = {
  3068. transCode: 'MDO0008',
  3069. pid: pid.value,
  3070. varlist: svarlist.value
  3071. }
  3072. request(params)
  3073. .then((res) => {
  3074. ElMessage({
  3075. message: res.returnMsg,
  3076. type: 'success',
  3077. })
  3078. getissue();
  3079. })
  3080. .catch((err) => {
  3081. ElMessage.error(err.returnMsg)
  3082. })
  3083. }
  3084. //约束的添加restrain
  3085. const restrain = () => {
  3086. const params = {
  3087. transCode: 'MDO0009',
  3088. pid: pid.value,
  3089. conlist: conlist.value
  3090. }
  3091. request(params)
  3092. .then((res) => {
  3093. ElMessage({
  3094. message: res.returnMsg,
  3095. type: 'success',
  3096. })
  3097. getyueshu();
  3098. })
  3099. .catch((err) => {
  3100. ElMessage.error(err.returnMsg)
  3101. })
  3102. }
  3103. //优化目标接口
  3104. const funlistaa = () => {
  3105. const params = {
  3106. transCode: 'MDO0010',
  3107. pid: pid.value,
  3108. funlist: funlist.value
  3109. }
  3110. request(params)
  3111. .then((res) => {
  3112. ElMessage({
  3113. message: res.returnMsg,
  3114. type: 'success',
  3115. })
  3116. getmub();
  3117. })
  3118. .catch((err) => {
  3119. ElMessage.error(err.returnMsg)
  3120. })
  3121. }
  3122. //初始化
  3123. const initialize = () => {
  3124. const params = {
  3125. transCode: 'MDO0011',
  3126. pid: pid.value,
  3127. }
  3128. request(params)
  3129. .then((res) => {
  3130. // ElMessage({
  3131. // message: res.returnMsg,
  3132. // type: 'success',
  3133. // })
  3134. importget();
  3135. })
  3136. .catch((err) => {
  3137. ElMessage.error(err.returnMsg)
  3138. })
  3139. }
  3140. // new输入参数
  3141. const changecheck = (val,row) => {
  3142. console.log(val);
  3143. console.log(row);
  3144. }
  3145. //输入参数查询
  3146. const importget = () => {
  3147. const params = {
  3148. transCode: 'MDO0012',
  3149. pid: pid.value,
  3150. }
  3151. request(params)
  3152. .then((res) => {
  3153. srtable.value = res.rows;
  3154. })
  3155. .catch((err) => {
  3156. ElMessage.error(err.returnMsg)
  3157. })
  3158. }
  3159. //输入保存
  3160. const susave = (index, row) => {
  3161. console.log(row);
  3162. const params = {
  3163. transCode: 'MDO0013',
  3164. pid: pid.value,
  3165. inid: row.inid,
  3166. vid: row.vid,
  3167. enable: row.enable,
  3168. name: row.name,
  3169. v1: row.v1,
  3170. v2: row.v2
  3171. }
  3172. request(params)
  3173. .then((res) => {
  3174. ElMessage({
  3175. message: '保存成功',
  3176. type: 'success',
  3177. })
  3178. })
  3179. .catch((err) => {
  3180. ElMessage.error(err.returnMsg)
  3181. })
  3182. }
  3183. // 输入的删除
  3184. const sudelete = (index, row) => {
  3185. if (row.hasOwnProperty('outid') == false) {
  3186. srtable.value.splice(index, 1)
  3187. } else {
  3188. const params = {
  3189. transCode: 'MDO0014',
  3190. inid: row.inid,
  3191. }
  3192. request(params)
  3193. .then((res) => {
  3194. importget();
  3195. ElMessage({
  3196. message: " 删除成功",
  3197. type: 'success',
  3198. })
  3199. })
  3200. .catch((err) => {
  3201. ElMessage.error(err.returnMsg)
  3202. })
  3203. }
  3204. }
  3205. //输入输出的新建
  3206. const newxfiol = () => {
  3207. if (activeIndex3.value == 0) {
  3208. srtable.value.push({
  3209. name: "",
  3210. v1: '0',
  3211. v2: '0',
  3212. enable: '0'
  3213. })
  3214. } else if (activeIndex3.value == 2) {
  3215. sctable.value.push({
  3216. name: "",
  3217. v1: '',
  3218. v2: '',
  3219. enable: '0'
  3220. })
  3221. }
  3222. }
  3223. // 点击掉查询接口
  3224. const dianjia = (index) => {
  3225. activeIndex3.value = index;
  3226. if (activeIndex3.value == 0) {
  3227. importget()
  3228. } else if (activeIndex3.value == 2) {
  3229. console.log(11111)
  3230. exportget();
  3231. }
  3232. }
  3233. //输出参数查询
  3234. const exportget = () => {
  3235. const params = {
  3236. transCode: 'MDO0015',
  3237. pid: pid.value,
  3238. }
  3239. request(params)
  3240. .then((res) => {
  3241. sctable.value = res.rows;
  3242. })
  3243. .catch((err) => {
  3244. ElMessage.error(err.returnMsg)
  3245. })
  3246. }
  3247. // 输出保存
  3248. const scsave = (index, row) => {
  3249. if (row.hasOwnProperty('fid') == true) {
  3250. fid.value = row.fid;
  3251. }
  3252. if (row.hasOwnProperty('conid') == true) {
  3253. conid.value = row.conid;
  3254. }
  3255. const params = {
  3256. transCode: 'MDO0016',
  3257. pid: pid.value,
  3258. outid: row.outid,
  3259. fid: fid.value,
  3260. conid: conid.value,
  3261. enable: row.enable,
  3262. name: row.name,
  3263. v1: row.v1,
  3264. v2: row.v2
  3265. }
  3266. request(params)
  3267. .then((res) => {
  3268. ElMessage({
  3269. message: '保存成功',
  3270. type: 'success',
  3271. })
  3272. exportget();
  3273. })
  3274. .catch((err) => {
  3275. ElMessage.error(err.returnMsg)
  3276. })
  3277. }
  3278. //输出删除scdelete
  3279. const scdelete = (index, row) => {
  3280. console.log(row);
  3281. if (row.hasOwnProperty('outid') == false) {
  3282. sctable.value.splice(index, 1)
  3283. } else {
  3284. const params = {
  3285. transCode: 'MDO0017',
  3286. outid: row.outid,
  3287. }
  3288. request(params)
  3289. .then((res) => {
  3290. exportget();
  3291. ElMessage({
  3292. message: " 删除成功",
  3293. type: 'success',
  3294. })
  3295. })
  3296. .catch((err) => {
  3297. ElMessage.error(err.returnMsg)
  3298. })
  3299. }
  3300. }
  3301. // 表格
  3302. function tablefun(vals) {
  3303. let arrtable = vals;
  3304. //console.log(arrtable);
  3305. let obj2 = {}
  3306. let heaarr = arrobj.value[0].vars.split(",");
  3307. //let heaarr=['x1', 'x2', 'x3', 'x4', 'x5', 'f1']
  3308. tableHeaders.value = [];
  3309. heaarr.forEach(function (item) {
  3310. let obj = { label: item, prop: item }; // 创建新对象
  3311. tableHeaders.value.push(obj);
  3312. });
  3313. let result = heaarr.map((key, index) => {
  3314. return { [key]: arrtable[index] };
  3315. });
  3316. const mergedObject = result.reduce((accumulator, currentValue) => {
  3317. return { ...accumulator, ...currentValue };
  3318. }, {});
  3319. tableDatalieb.value.push(mergedObject);
  3320. }
  3321. //获取日志
  3322. const logsget = () => {
  3323. const params = {
  3324. transCode: 'MDO0025',
  3325. pid: pid.value,
  3326. }
  3327. request(params)
  3328. .then((res) => {
  3329. // 去除空行
  3330. logs.value = res.logs.split('\n').filter(line => line.trim() !== '').join('\n');
  3331. const results = extractBracesContent(logs.value);
  3332. for (let i = 0; i < results.length; i++) {
  3333. arrobj.value.push(results[i]);
  3334. let vals = (results[i].vals).split(" ");
  3335. tablefun(vals);
  3336. let echarr = [];
  3337. echarr.push(results[i])
  3338. optmonitor1.value.getsockechart(echarr);
  3339. processMonitor1ref.value.getsockechart(echarr);
  3340. processMonitor2ref.value.getsockechart(echarr);
  3341. // arearef.value.getsockechart(echarr);
  3342. // bargraphref.value.getsockechart(echarr);
  3343. // echartLineref.value.getsockechart(echarr);
  3344. // BarChartref.value.getsockechart(echarr);
  3345. // radarref.value.getsockechart(echarr);
  3346. // scatterref.value.getsockechart(echarr);
  3347. }
  3348. })
  3349. .catch((err) => {
  3350. ElMessage.error(err.returnMsg)
  3351. })
  3352. }
  3353. // 字符串截取
  3354. function extractBracesContent(str) {
  3355. const objectRegex = /\{[^}]+\}/g; // 匹配大括号对象
  3356. const matches = str.match(objectRegex);
  3357. if (!matches) return [];
  3358. return matches.map(match => {
  3359. try {
  3360. return JSON.parse(match);
  3361. } catch (e) {
  3362. console.error('Failed to parse object:', match);
  3363. return null;
  3364. }
  3365. }).filter(Boolean); // 过滤掉解析失败的对象
  3366. }
  3367. function convertToPercentage(number) {
  3368. return (number * 100);
  3369. }
  3370. //websockct的连接
  3371. function initWebSocket() {
  3372. //初始化weosocket
  3373. // const wsuri = "ws://192.168.0.43:8087//websocket?projectId="+this.pid; ws://192.168.0.131/diswebsocket?projectId=5
  3374. // const wsurl = "ws://192.168.108:8188//websocket?projectId=" + pid.value;
  3375. const wsurl = import.meta.env.VITE_WEBSOCKET_URL + pid.value;
  3376. // const wsurl =
  3377. // "ws://" +
  3378. // process.env.VUE_APP_BASE_websokt +
  3379. // "/diswebsocket?projectId=" +'5'
  3380. // aid.value;
  3381. websock = new WebSocket(wsurl);
  3382. websock.onopen = websocketonopen;
  3383. websock.onmessage = websocketonmessage;
  3384. websock.onerror = websocketonerror;
  3385. websock.onclose = websocketclose;
  3386. }
  3387. // Websoket连接成功事件
  3388. const websocketonopen = (res) => {
  3389. console.log("WebSocket连接成功", res);
  3390. console.log()
  3391. start();
  3392. };
  3393. // Websoket接收消息事件
  3394. const websocketonmessage = (res) => {
  3395. arrobj.value = [];
  3396. if (res.data.indexOf('{') !== -1) {
  3397. progressshow.value = true;
  3398. // return (number * 100) + '%';
  3399. // =(Number(JSON.parse(res.data).step))* 100;
  3400. let step = Number(JSON.parse(res.data).step);
  3401. percentage.value = Number((step / 20) * 100);
  3402. console.log(percentage.value);
  3403. //percentage.value = convertToPercentage((Number(JSON.parse(res.data).step)));
  3404. echartdata.value = res.data;
  3405. arrobj.value.push(JSON.parse(res.data));
  3406. let vals = (JSON.parse(res.data).vals).split(" ");
  3407. tablefun(vals);
  3408. optmonitor1.value.getsockechart(arrobj.value);
  3409. processMonitor1ref.getsockechart(arrobj.value);
  3410. processMonitor2ref.getsockechart(arrobj.value);
  3411. arearef.value.getsockechart(arrobj.value);
  3412. bargraphref.value.getsockechart(arrobj.value);
  3413. echartLineref.value.getsockechart(arrobj.value);
  3414. BarChartref.value.getsockechart(arrobj.value);
  3415. radarref.value.getsockechart(arrobj.value);
  3416. scatterref.value.getsockechart(arrobj.value);
  3417. pieref.value.getsockechart(arrobj.value);
  3418. paretoref.value.getsockechart(arrobj.value);
  3419. } else {
  3420. if (res.data.indexOf('——成功') !== -1) {
  3421. const timer = setTimeout(function () {
  3422. progressshow.value = false;
  3423. console.log('关闭定时器')
  3424. }, 10000)
  3425. // console.log(22222)
  3426. // clearTimeout(timer);
  3427. }
  3428. if (res.data.indexOf('msg=heartChec') == -1) {
  3429. // 去除空行
  3430. const cleanedLog = res.data.split('\n').filter(line => line.trim() !== '').join('\n');
  3431. logs.value = logs.value + '\n' + cleanedLog;
  3432. let textarea = document.getElementById("textarea_id");
  3433. textarea.scrollTop = textarea.scrollHeight;
  3434. }
  3435. }
  3436. reset();
  3437. };
  3438. // Websoket连接错误事件
  3439. const websocketonerror = (res) => {
  3440. console.log("连接错误", res);
  3441. websock.close();
  3442. reconnect();
  3443. };
  3444. // Websoket断开事件
  3445. const websocketclose = (res) => {
  3446. console.log("断开连接", res);
  3447. };
  3448. // 创建 websocket 的实例
  3449. // 心跳包
  3450. const reconnect = () => {
  3451. if (times.value.lockReconnect) return;
  3452. times.value.lockReconnect = true;
  3453. //没连接上会一直重连,设置延迟避免请求过多
  3454. times.value.timeoutnum && clearTimeout(times.value.timeoutnum);
  3455. times.value.timeoutnum = setTimeout(function () {
  3456. //新连接
  3457. initWebSocket();
  3458. times.value.lockReconnect = false;
  3459. }, 10000);
  3460. }
  3461. const reset = () => {
  3462. //重置心跳
  3463. clearTimeout(times.value.timeoutObj);
  3464. clearTimeout(times.value.serverTimeoutObj);
  3465. start();
  3466. }
  3467. const start = () => {
  3468. //开启心跳
  3469. times.value.timeoutObj && clearTimeout(times.value.timeoutObj);
  3470. times.value.serverTimeoutObj && clearTimeout(times.value.serverTimeoutObj);
  3471. times.value.timeoutObj = setTimeout(function () {
  3472. //这里发送一个心跳,后端收到后,返回一个心跳消息
  3473. if (websock.readyState == 1) {
  3474. //如果连接正常
  3475. websock.send("heartCheck");
  3476. } else {
  3477. //否则重连
  3478. reconnect();
  3479. }
  3480. times.value.serverTimeoutObj = setTimeout(function () {
  3481. // 超时关闭
  3482. websock.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
  3483. }, times.value.timeout);
  3484. }, times.value.timeout);
  3485. }
  3486. // 日志框
  3487. // 日志的文本框
  3488. const footerShows = (evt) => {
  3489. if (evt == "claer") {
  3490. logs.value = "";
  3491. } else {
  3492. footerShow.value = !footerShow.value;
  3493. }
  3494. }
  3495. // watch(() =>echartdata.value, (newValue, oldValue) => {
  3496. // // 这里处理 echartData 变化的逻辑
  3497. // console.log('echartData changed:', newValue);
  3498. // // console.log(optmonitor1.value);
  3499. // });
  3500. // 选项卡
  3501. const selectTab=(index)=>{
  3502. currentTab.value = index;
  3503. }
  3504. const adfhandleClick=(tab,event)=>{
  3505. console.log('表单切换',tab.props.label);
  3506. activeadf.value=tab.props.label;
  3507. if(tab.props.name === '进化优化器'){
  3508. nextTick(() => {
  3509. // 确保 ref 已经初始化
  3510. if (Joptimizeref.value) {
  3511. // 调用 Joptimize 的 getoptimize 方法
  3512. Joptimizeref.value.getoptimize(pid.value);
  3513. }
  3514. });
  3515. }else if(tab.props.name === '代理优化器'){
  3516. nextTick(() => {
  3517. // 确保 ref 已经初始化
  3518. if (Doptimizeref.value) {
  3519. Doptimizeref.value.getDoptimize(pid.value);
  3520. }
  3521. });
  3522. }else if(tab.props.name === '梯度优化器'){
  3523. nextTick(() => {
  3524. // 确保 ref 已经初始化
  3525. if (Toptimizeref.value) {
  3526. Toptimizeref.value.getToptimize(pid.value);
  3527. }
  3528. });
  3529. }
  3530. }
  3531. const getaddsave = () => {
  3532. if (Joptimizeref.value && typeof Joptimizeref.value.getaddsave === 'function') {
  3533. Joptimizeref.value.getaddsave();
  3534. }
  3535. }
  3536. const getDaddsave = () => {
  3537. if (Doptimizeref.value && typeof Doptimizeref.value.getaddDsave === 'function') {
  3538. Doptimizeref.value.getaddDsave();
  3539. }
  3540. }
  3541. const getTaddsave = () => {
  3542. if (Toptimizeref.value && typeof Toptimizeref.value.getaddTsave === 'function') {
  3543. Toptimizeref.value.getaddTsave();
  3544. }
  3545. }
  3546. const getSave = (ref) => {
  3547. if (ref == '进化优化器'){
  3548. getaddsave();
  3549. }else if(ref == '代理优化器'){
  3550. getDaddsave();
  3551. }else if(ref == '梯度优化器'){
  3552. getTaddsave();
  3553. }
  3554. }
  3555. // 参数化
  3556. const adfhandleClick2=(tab,event)=>{
  3557. console.log('表单切换',tab.props.label);
  3558. activeadf.value=tab.props.label;
  3559. if(tab.props.name === 'CST'){
  3560. nextTick(() => {
  3561. // 确保 ref 已经初始化
  3562. if (Cstref.value) {
  3563. Cstref.value.getcst(pid.value);
  3564. }
  3565. });
  3566. }else if(tab.props.name === 'FFD'){
  3567. nextTick(() => {
  3568. // 确保 ref 已经初始化
  3569. if (Ffdref.value) {
  3570. Ffdref.value.getffds(pid.value);
  3571. }
  3572. });
  3573. }
  3574. }
  3575. // 单独cst保存
  3576. const cstok=()=>{
  3577. // cstnum.value='';
  3578. if(Cstref.value){
  3579. Cstref.value.getcstsave();
  3580. }
  3581. dialog.value.CSTt = false;
  3582. }
  3583. // 单独ffd保存
  3584. const ffdok=()=>{
  3585. if(Ffdref.value){
  3586. Ffdref.value.getffdsave();
  3587. }
  3588. dialog.value.ffdt = false;
  3589. }
  3590. // cstffd保存
  3591. const getCstFfdsave = (activeadf) => {
  3592. if (activeadf == 'CST') {
  3593. cstok();
  3594. } else if (activeadf == 'FFD') {
  3595. ffdok();
  3596. }
  3597. }
  3598. const adfhandleClick3=(tab,event)=>{
  3599. console.log('表单切换',tab.props.label);
  3600. activeadf.value=tab.props.label;
  3601. if(tab.props.name === 'Xfoil'){
  3602. nextTick(() => {
  3603. // 确保 ref 已经初始化
  3604. if (Xfoilref.value) {
  3605. console.log('pid-0:',pid.value)
  3606. Xfoilref.value.getxfoil(pid.value);
  3607. }
  3608. });
  3609. }else if(tab.props.name === 'ADflow'){
  3610. nextTick(() => {
  3611. // 确保 ref 已经初始化
  3612. if (ADflowref.value) {
  3613. ADflowref.value.getadflow(pid.value);
  3614. }
  3615. });
  3616. }
  3617. }
  3618. // xfoil保存
  3619. const xfoilok=()=>{
  3620. if(Xfoilref.value){
  3621. Xfoilref.value.getxfoilsave();
  3622. }
  3623. }
  3624. // adflow保存
  3625. const adflowok=()=>{
  3626. if(ADflowref.value){
  3627. ADflowref.value.getadflowsave();
  3628. }
  3629. }
  3630. // xfoiladflow保存
  3631. const getXfoilAdflowsave = (activeadf) => {
  3632. if (activeadf == 'Xfoil') {
  3633. xfoilok();
  3634. } else if (activeadf == 'ADflow') {
  3635. adflowok();
  3636. }
  3637. }
  3638. // 云图打开二级弹窗
  3639. let seconddialogshow = ref(false)
  3640. let activesd = ref ({
  3641. fileselect:false,
  3642. domain:false,
  3643. cloud:false,
  3644. colorchart:false,
  3645. isoline:false
  3646. })
  3647. let cloudsedtitle = ref('')
  3648. const openSeconddialog = (name) => {
  3649. // 设置 activesd 中的值来控制不同内容的显示
  3650. activesd.value.fileselect = false;
  3651. activesd.value.domain = false;
  3652. activesd.value.cloud = false;
  3653. activesd.value.colorchart = false;
  3654. activesd.value.isoline = false;
  3655. switch (name) {
  3656. case '文件选择':
  3657. activesd.value.fileselect = true;
  3658. cloudsedtitle.value = "文件选择";
  3659. break;
  3660. case '域':
  3661. activesd.value.domain = true;
  3662. cloudsedtitle.value = "域";
  3663. break;
  3664. case '云图':
  3665. activesd.value.cloud = true;
  3666. cloudsedtitle.value = "云图";
  3667. break;
  3668. case '色卡':
  3669. activesd.value.colorchart = true;
  3670. cloudsedtitle.value = "色卡";
  3671. break;
  3672. case '等值线':
  3673. activesd.value.isoline = true;
  3674. cloudsedtitle.value = "等值线";
  3675. break;
  3676. default:
  3677. break;
  3678. }
  3679. seconddialogshow.value = true
  3680. };
  3681. </script>
  3682. <style lang="scss" scoped>
  3683. .conter_flex {
  3684. display: flex;
  3685. .ech {
  3686. flex: 1;
  3687. }
  3688. }
  3689. //有子节点 且未展开
  3690. .left_main_content :deep(.el-icon svg) {
  3691. display: block;
  3692. }
  3693. .footerTitle {
  3694. display: flex;
  3695. justify-content: space-between;
  3696. padding: 5px 0px;
  3697. font-size: 20px;
  3698. height: 32px !important;
  3699. z-index: 99;;
  3700. // border-radius: 5px 5px 0px 0px;
  3701. // overflow: hidden;
  3702. border-top: 1px solid #B3B3B3;
  3703. border-bottom: 1px solid #B3B3B3;
  3704. }
  3705. .footerTitle .el-image{
  3706. width:24px;
  3707. }
  3708. .footerTitle div {
  3709. display: flex;
  3710. justify-content:center ;
  3711. align-items: center;
  3712. font-size: 14px;
  3713. }
  3714. .kongzhit {
  3715. position: absolute;
  3716. bottom: 0;
  3717. width: 100%;
  3718. }
  3719. .footerTitle p {
  3720. margin: 0;
  3721. }
  3722. .footerTitle .span {
  3723. width: 150px;
  3724. height: 32px;
  3725. line-height: 40px;
  3726. cursor: default;
  3727. position: relative;
  3728. font-size: 14px;
  3729. color: #333333;
  3730. font-family: 'Source Sans-Regular';
  3731. }
  3732. .footerTitle .span span{
  3733. padding-left:8px
  3734. }
  3735. .footerText .el-textarea__inner {
  3736. width: 100%;
  3737. height: 178px !important;
  3738. border: 0;
  3739. font-size: 12px;
  3740. color: #333;
  3741. padding: 2px;
  3742. box-shadow:none;
  3743. }
  3744. .custom-button{
  3745. color: #333333;
  3746. background-color: #DCEAFF;
  3747. border: 1px solid #2267B1 ;
  3748. }
  3749. //没有子节点
  3750. </style>
  3751. <style>
  3752. .wentsd {
  3753. padding: 0 8px;
  3754. }
  3755. /* .el-treeicon .el-tree-node__expand-icon.is-leaf{
  3756. display: none !important;
  3757. } */
  3758. .custom-text {
  3759. font-family: 'Source Sans-Regular';
  3760. font-size: 16px;
  3761. color: rgba(51, 51, 51, 1);
  3762. line-height: 24px;
  3763. text-align: left;
  3764. font-style: normal;
  3765. text-transform: none;
  3766. padding-left: 8px;
  3767. }
  3768. .el-tree .el-tree-node__children .custom-text {
  3769. font-family: 'Source Sans-Regular';
  3770. font-size: 14px;
  3771. /* 这里设置为20px,你可以根据需求调整大小 */
  3772. color: rgba(51, 51, 51, 0.8);
  3773. }
  3774. /* .el-tree .el-tree-node.is-current>.el-tree-node__content img{
  3775. display: none;
  3776. } */
  3777. .custom-tree {
  3778. overflow: auto;
  3779. }
  3780. .custom-tree1>.el-tree-node>.el-tree-node__content>div img {
  3781. display: none;
  3782. /* 隐藏一级节点复选框 */
  3783. }
  3784. .footerTitle {
  3785. background: #eee;
  3786. border-radius: 0px 0px 0px 0px;
  3787. }
  3788. .footer-tab .el-tabs__item {
  3789. color: #333333;
  3790. }
  3791. .footerTitle .active {
  3792. background-color: #fff;
  3793. border-left:1px solid #B3B3B3;
  3794. border-right:1px solid #B3B3B3;
  3795. border-bottom:4px solid #fff;
  3796. }
  3797. .footerTitle .active::before{
  3798. content: "";
  3799. display: block;
  3800. width: 100%;
  3801. height: 2px;
  3802. background: #2267B1;
  3803. border-radius: 0px 0px 0px 0px;
  3804. top: 0px;
  3805. position: absolute;
  3806. }
  3807. .footerTitle .active::after{
  3808. content: "";
  3809. display: block;
  3810. width: 100%;
  3811. height:7px;
  3812. background: #fff;
  3813. border-radius: 0px 0px 0px 0px;
  3814. bottom: 0px;
  3815. position: absolute;
  3816. }
  3817. .youhualog {
  3818. width: 100%;
  3819. height: 195px;
  3820. overflow-y: auto;
  3821. background: #fff;
  3822. }
  3823. .youhualog .active2 {
  3824. color: #2267B1;
  3825. }
  3826. .youhualog ul {
  3827. width:504px;
  3828. display: flex;
  3829. }
  3830. .youhualog ul li {
  3831. font-family: 'Source Sans-Regular';
  3832. flex: 1;
  3833. border-left: 1px solid #B3B3B3;
  3834. font-size: 14px;
  3835. height: 32px;
  3836. /* line-height: 40px; */
  3837. width: 168px;
  3838. display: flex;
  3839. justify-content: center;
  3840. align-items: center;
  3841. }
  3842. .footer-content {
  3843. /* // padding: 15px 24px; */
  3844. padding: 5px;
  3845. border: 1px solid #B3B3B3;
  3846. margin-right: 119px;
  3847. }
  3848. .footer-add {
  3849. width: 530px;
  3850. }
  3851. .dibu {
  3852. margin-top: 5px;
  3853. display: flex;
  3854. justify-content: flex-end;
  3855. height: 35px;
  3856. overflow: hidden;
  3857. }
  3858. .dibu .el-input__wrapper {
  3859. width: 226px;
  3860. }
  3861. .dibu .btncolor {
  3862. margin-top: 2px;
  3863. height: 27px;
  3864. background: #FFFFFF;
  3865. box-shadow: 0px 2px 2px 0px #B3B3B3;
  3866. border-radius: 0px 0px 0px 0px;
  3867. border: 1px solid #B3B3B3;
  3868. }
  3869. .classtable .el-table td.el-table__cell div .el-input__wrapper {
  3870. box-shadow: none !important;
  3871. padding: 0;
  3872. }
  3873. .classtable .el-table .el-table__cell {
  3874. padding: 0;
  3875. }
  3876. .gooterpading {
  3877. /* border: 1px solid #2267B1; */
  3878. }
  3879. .classtable .el-table th .cell {
  3880. background: #fff;
  3881. line-height: 31px;
  3882. }
  3883. .classtable .el-table td.el-table__cell, .classtable .el-table th.el-table__cell{
  3884. color: #333333;
  3885. font-size: 16px;
  3886. font-family: 'Source Sans Pro-Regular';
  3887. }
  3888. .classtable .el-table td.el-table__cell div {
  3889. height: 31px;
  3890. overflow: hidden;
  3891. display: flex;
  3892. align-items: center; /* 垂直居中 */
  3893. }
  3894. .classtable .el-table td.el-table__cell,
  3895. .el-table th.el-table__cell.is-leaf,
  3896. .eldesign {
  3897. /* border: 1px solid #000000; */
  3898. }
  3899. /* .el-color-picker__trigger {
  3900. //display: none;
  3901. } */
  3902. /* 使颜色选择器的触发器可点击,但不显示 */
  3903. .el-color-picker__trigger.is-show-panel {
  3904. display: block;
  3905. }
  3906. .conter_mian {
  3907. padding: 1px;
  3908. }
  3909. .summary-dlg2 .el-dialog__body {
  3910. padding: 0;
  3911. }
  3912. .summary-dlg .el-dialog__wrapper {
  3913. pointer-events: none;
  3914. }
  3915. .summary-dlg .el-dialog {
  3916. pointer-events: auto;
  3917. }
  3918. .summary-dlgPdf .el-dialog__body{
  3919. padding: 5px;
  3920. }
  3921. .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
  3922. background-color: #fff;
  3923. }
  3924. .youhualog1 {
  3925. position: relative;
  3926. }
  3927. .chushij {
  3928. position: absolute;
  3929. right: 13px;
  3930. top: 5px;
  3931. }
  3932. .jindutiao {
  3933. padding: 0 0 2px 0px;
  3934. background: #9FCDFF;
  3935. }
  3936. .jindutiao .demo-progress {
  3937. width: 80%;
  3938. }
  3939. .jindutiao .percentage-value {
  3940. font-size: 13px;
  3941. }
  3942. .cstleft{
  3943. width:50%;
  3944. flex: 1;
  3945. }
  3946. .XFpdding{
  3947. /* height: 425px; */
  3948. }
  3949. .dialog_class {
  3950. color: #333333;
  3951. font-size: 16px;
  3952. font-family: 'Source Sans Pro-Regular';
  3953. }
  3954. </style>