home.vue 169 KB

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