index.vue 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650
  1. <template>
  2. <div class="scal">
  3. <div class="toolbar-part-detail lbg_color1 el-tag--primary">
  4. <!-- <div class="toolbar-content"> -->
  5. <!-- <div class="imgcontent">
  6. </div> -->
  7. <div v-if="value2=='HCFDLab'">
  8. <hcfd
  9. ref="hcfd"
  10. :objopp="objopp"
  11. :ytdata="ytdata"
  12. :vectorparam="vectorparam"
  13. :pid="pid"
  14. :objcheck="objcheck"
  15. @fun="fun()"
  16. @chaild='chaild()'
  17. @changelines="changelines()"
  18. @linezhexian="linezhexian()"
  19. :elodingfalse="elodingfalse"
  20. @exlodingfalse="exlodingfalse"
  21. :femnum="femnum"
  22. ></hcfd>
  23. </div>
  24. <div v-else-if="value2=='FEMLab(结构力学)'">
  25. <fem
  26. ref="fem"
  27. :femnum="femnum"
  28. :logs='logs'
  29. @getthislog='getthislog'
  30. :pid="pid"
  31. @exlodingfalse="exlodingfalse"
  32. :objcheck="objcheck"
  33. ></fem>
  34. </div>
  35. <div v-else-if="value2=='FEMLab(结构力学)版本2'">
  36. <fem2
  37. ref="fem2"
  38. :femnum="femnum"
  39. :logs='logs'
  40. :pid="pid"
  41. ></fem2>
  42. </div>
  43. <div
  44. class="adi"
  45. v-else
  46. >
  47. <el-tabs
  48. :tab-position="tabPosition"
  49. v-model="activeName"
  50. type="card"
  51. @tab-click="handleClick"
  52. >
  53. <el-tab-pane
  54. label="几何建模"
  55. name="one"
  56. >
  57. <geometry></geometry>
  58. </el-tab-pane>
  59. <el-tab-pane
  60. label="网格划分"
  61. name="two"
  62. >
  63. <meshindex></meshindex>
  64. </el-tab-pane>
  65. <el-tab-pane
  66. label="几何与单元属性"
  67. name="three"
  68. >
  69. <Geometryandclass></Geometryandclass>
  70. </el-tab-pane>
  71. <el-tab-pane
  72. label="材料属性"
  73. name="four"
  74. >
  75. <Materials></Materials>
  76. </el-tab-pane>
  77. <el-tab-pane
  78. label="接触与连接"
  79. name="five"
  80. >
  81. <touch></touch>
  82. </el-tab-pane>
  83. <el-tab-pane
  84. label="初始条件"
  85. name="six"
  86. >
  87. <initial></initial>
  88. </el-tab-pane>
  89. <el-tab-pane
  90. label="边界条件"
  91. name="seven"
  92. >
  93. <boundary></boundary>
  94. </el-tab-pane>
  95. <el-tab-pane
  96. label="网格自适应"
  97. name="eight"
  98. >
  99. <Meshauto></Meshauto>
  100. </el-tab-pane>
  101. <el-tab-pane
  102. label="载荷工况"
  103. name="nine"
  104. >
  105. <loadcase></loadcase>
  106. </el-tab-pane>
  107. <el-tab-pane
  108. label="作业任务"
  109. name="ten"
  110. >
  111. <zuoye></zuoye>
  112. </el-tab-pane>
  113. <el-tab-pane
  114. label="结果查看"
  115. name="eleven"
  116. >
  117. <result></result>
  118. </el-tab-pane>
  119. <el-tab-pane
  120. label="工具箱"
  121. name="twelve"
  122. >
  123. <toolindex></toolindex>
  124. </el-tab-pane>
  125. <el-tab-pane
  126. label="操作"
  127. name="thirteen"
  128. >
  129. <caozuo></caozuo>
  130. </el-tab-pane>
  131. </el-tabs>
  132. </div>
  133. <div class="textselsect">
  134. <el-select
  135. v-model="value0"
  136. placeholder="请选择"
  137. >
  138. <el-option
  139. v-for="item in options0"
  140. :key="item.value"
  141. :label="item.label"
  142. :value="item.value"
  143. >
  144. </el-option>
  145. </el-select>
  146. <el-select
  147. v-model="value2"
  148. placeholder="请选择"
  149. @change="solverchange"
  150. >
  151. <el-option
  152. v-for="item in options2"
  153. :key="item.value"
  154. :label="item.label"
  155. :value="item.value"
  156. >
  157. </el-option>
  158. </el-select>
  159. </div>
  160. </div>
  161. <div class="content">
  162. <transition name="slide-fade">
  163. <div
  164. class="left lbg_color3 el-menu"
  165. v-show="showtrue"
  166. style="padding:0;"
  167. >
  168. <el-tabs
  169. v-model="activeName1"
  170. type="card"
  171. @tab-click="handleClick"
  172. >
  173. <el-tab-pane
  174. label="模型导航"
  175. name="first"
  176. >
  177. <!-- @node-click="handleNodeClick1" -->
  178. <el-tree
  179. :data="data"
  180. class="my-tree"
  181. show-checkbox
  182. node-key="id"
  183. :default-expanded-keys="[1,2]"
  184. :default-checked-keys="[13]"
  185. :props="defaultProps"
  186. @check="handleNodeClick"
  187. ref="tree"
  188. ></el-tree>
  189. </el-tab-pane>
  190. <el-tab-pane
  191. label="动态菜单"
  192. name="second"
  193. >
  194. <div class="dongtia dialog_color selecr">
  195. <el-form>
  196. <el-form-item>
  197. <el-select
  198. v-model="zjhval"
  199. placeholder="请选择"
  200. >
  201. <el-option
  202. v-for="item in zjhlist"
  203. :key="item.value"
  204. :label="item.label"
  205. :value="item.value"
  206. >
  207. </el-option>
  208. </el-select>
  209. </el-form-item>
  210. <el-form-item>
  211. <el-select
  212. v-model="zjhval1"
  213. placeholder="请选择"
  214. >
  215. <el-option
  216. v-for="item in zjhlist1"
  217. :key="item.value"
  218. :label="item.label"
  219. :value="item.value"
  220. >
  221. </el-option>
  222. </el-select>
  223. </el-form-item>
  224. <div class="leftsearch">
  225. <el-input
  226. placeholder="请输入内容"
  227. v-model="input3"
  228. class="input-with-select"
  229. >
  230. <el-button
  231. slot="append"
  232. icon="el-icon-search"
  233. ></el-button>
  234. </el-input>
  235. </div>
  236. </el-form>
  237. </div>
  238. </el-tab-pane>
  239. </el-tabs>
  240. </div>
  241. </transition>
  242. <div class="right lbg_color2 ">
  243. <!-- <div class="part-panel-collapse-handle lbg_color3 el-tag--primary " @click="showtrue=!showtrue">
  244. <i class="el-icon-arrow-down"></i>
  245. </div> -->
  246. <el-container class="beij-container">
  247. <el-container>
  248. <el-main
  249. ref="main3d"
  250. :class="headMenu_2Show?'maxh400':'maxh221'"
  251. style="padding:0;"
  252. >
  253. <tool1
  254. @startimg="startimg"
  255. @fun="fun"
  256. :monitorHCFD="monitorHCFD"
  257. @changehcfd="changehcfd"
  258. ></tool1>
  259. <!-- 加载折线图 -->
  260. <echartsHFCD
  261. ref="monitor"
  262. v-if="femnum=='HCFDLab'"
  263. @statechange='statechange'
  264. @getthislog='getthislog'
  265. @restimeyear='restimeyear'
  266. :projectId='pid'
  267. :nmlsteps="Number(numsteps)"
  268. ></echartsHFCD>
  269. <!-- 加载图片 -->
  270. <TFileStream
  271. :projectId='pid'
  272. ref="TFileStream"
  273. ></TFileStream>
  274. </el-main>
  275. <!-- <div class="kongzhit"> -->
  276. <div class="footerTitle el-tag--primary">
  277. <div>{{ $t("FEM.other.console") }}
  278. <p
  279. class="restime"
  280. v-show="elodingfalse"
  281. style=" margin-left: 50px; font-size:14px"
  282. >剩余时长:{{restime}}</p>
  283. </div>
  284. <div>
  285. <li
  286. class="exloadbox"
  287. v-show="elodingfalse"
  288. >
  289. <span>正在求解中</span>
  290. <i class="el-icon-loading"></i>
  291. </li>
  292. <li>
  293. <span @click="footerShows('claer')">清空</span>
  294. </li>
  295. <!-- <li>
  296. <span @click="exlodingfalse(false)">按钮</span>
  297. </li> -->
  298. <li>
  299. <span @click="footerShows('foot')">&#9650;&#9660;</span>
  300. </li>
  301. </div>
  302. </div>
  303. <el-footer
  304. class="femFooter"
  305. v-if="footerShow"
  306. >
  307. <div class="footerTextBox">
  308. <el-input
  309. class="footerText"
  310. type="textarea"
  311. id="textarea_id"
  312. v-model="logs"
  313. ></el-input>
  314. </div>
  315. </el-footer>
  316. <!-- </div> -->
  317. </el-container>
  318. </el-container>
  319. </div>
  320. </div>
  321. </div>
  322. </template>
  323. <script>
  324. //图片引入
  325. import tl1 from "@/assets/icon/axislegend.png";
  326. import tl2 from "@/assets/icon/zoomtowindow.png";
  327. import tl3 from "@/assets/icon/defaultmousecontrol.png";
  328. import tl4 from "@/assets/icon/u3884.png";
  329. import tl5 from "@/assets/icon/16.png";
  330. import tl6 from "@/assets/icon/pan.png";
  331. import tl7 from "@/assets/icon/u3871.png";
  332. import tl8 from "@/assets/icon/u3879.png";
  333. import tl9 from "@/assets/icon/u9872.png";
  334. import tl10 from "@/assets/icon/view_front.png";
  335. import tl11 from "@/assets/icon/view_back.png";
  336. import tl12 from "@/assets/icon/view_top.png";
  337. import tl13 from "@/assets/icon/view_bottom.png";
  338. import tl14 from "@/assets/icon/view_left.png";
  339. import tl15 from "@/assets/icon/view_right.png";
  340. import tl16 from "@/assets/icon/view_isometric.png";
  341. // 引入组件
  342. import { request, getImage } from "@/utils/request";
  343. import { Message, MessageBox } from "element-ui";
  344. import geometry from "./geometry/index.vue";
  345. import meshindex from "./meshindex/index.vue";
  346. import Geometryandclass from "./Geometryandclass/index.vue";
  347. import Materials from "./Materials/index.vue";
  348. import touch from "./touch/index.vue";
  349. import initial from "./initial/index.vue";
  350. import boundary from "./boundary/index.vue";
  351. import Meshauto from "./Meshauto/index.vue";
  352. import loadcase from "./loadcase/index.vue";
  353. import zuoye from "./zuoye/index.vue";
  354. import result from "./result/index.vue";
  355. import toolindex from "./tool/index.vue";
  356. import caozuo from "./caozuo/index.vue";
  357. import hcfd from "./HCFDLab/index.vue";
  358. import fem from "./FEMLab/fem.vue";
  359. import fem2 from "./FemLab2_0/index.vue";
  360. import echartsHFCD from "./HCFDLab/echartsHFCD.vue";
  361. import { number } from "echarts/lib/export";
  362. import TFileStream from "./compoents/TFileStreamhcfd.vue";
  363. import tool1 from "./compoents/tool1.vue";
  364. import { clear } from "echarts/lib/util/throttle";
  365. export default {
  366. components: {
  367. geometry,
  368. meshindex,
  369. Geometryandclass,
  370. Materials,
  371. touch,
  372. initial,
  373. boundary,
  374. Meshauto,
  375. loadcase,
  376. zuoye,
  377. echartsHFCD,
  378. result,
  379. caozuo,
  380. toolindex,
  381. hcfd,
  382. fem,
  383. TFileStream,
  384. tool1,
  385. fem2,
  386. },
  387. data() {
  388. return {
  389. //几何参数
  390. checkIdArr:[],
  391. objcheck:{
  392. pointsFlag:false,
  393. curvesFlag:true,
  394. surFacesFlag:false,
  395. },
  396. checkkey:[],
  397. // 心跳包的参数
  398. websock: null, //建立连接
  399. lockReconnect: false, //是否真正建立连接
  400. timeout: 28 * 1000, //30秒一次心跳
  401. timeoutObj: null, //心跳倒计时
  402. serverTimeout0bj: null, //
  403. timeoutnum: null, //断开重连倒计时
  404. tl1,
  405. tl2,
  406. tl3,
  407. tl4,
  408. tl5,
  409. tl6,
  410. tl7,
  411. tl8,
  412. tl9,
  413. tl10,
  414. tl11,
  415. tl12,
  416. tl13,
  417. tl14,
  418. tl15,
  419. tl16,
  420. ytdata: {},
  421. vectorparam: {},
  422. selectval: "HCFDLab",
  423. statecustom: "0", //自定义求解状态
  424. active: "",
  425. restime: "",
  426. logmatter:'',
  427. monitorHCFD: false,
  428. footerShow: true,
  429. headMenu_2Show: false,
  430. elodingfalse: false,
  431. numsteps: "",
  432. logs: "欢迎来到adi平台",
  433. newlog: "",
  434. toollist: [
  435. { icon: tl1, titlie: "坐标轴" },
  436. { icon: tl2, titlie: "缩放" },
  437. ],
  438. toollist2: [
  439. { icon: tl3, titlie: "默认鼠标控制" },
  440. { icon: tl4, titlie: "缩小到窗口" },
  441. { icon: tl5, titlie: "轨道" },
  442. { icon: tl6, titlie: "pan" },
  443. { icon: tl7, titlie: "zoom" },
  444. ],
  445. toollist3: [
  446. { icon: tl8, titlie: "点击选择" },
  447. { icon: tl9, titlie: "点击选择窗口" },
  448. ],
  449. toollist4: [
  450. { icon: tl10, titlie: "前" },
  451. { icon: tl11, titlie: "后" },
  452. { icon: tl12, titlie: "上" },
  453. { icon: tl13, titlie: "底" },
  454. { icon: tl14, titlie: "左" },
  455. { icon: tl15, titlie: "右" },
  456. { icon: tl16, titlie: "等角" },
  457. ],
  458. data: [
  459. {
  460. id: 1,
  461. label: "HCFDLab",
  462. children: [
  463. {
  464. id: 4,
  465. label: "Geometry",
  466. children: [{
  467. id: 12,
  468. label: 'points'
  469. }, {
  470. id: 13,
  471. label: 'Curves'
  472. }, {
  473. id: 14,
  474. label: 'Surfaces'
  475. }
  476. ],
  477. },
  478. {
  479. id: 5,
  480. label: "Mesh",
  481. },
  482. {
  483. id: 6,
  484. label: "Parts",
  485. },
  486. {
  487. id: 7,
  488. label: "Custom Control",
  489. children: [
  490. {
  491. id: 15,
  492. label: "Surface Control",
  493. },
  494. {
  495. id: 16,
  496. label: "Curves Control",
  497. },
  498. {
  499. id: 17,
  500. label: "Volume Control",
  501. },
  502. ],
  503. },
  504. {
  505. id: 8,
  506. label: "Physics",
  507. },
  508. {
  509. id: 9,
  510. label: "Solution",
  511. },
  512. {
  513. id: 10,
  514. label: "Jobs",
  515. },
  516. { id: 11,
  517. label: "Results",
  518. },
  519. ],
  520. },
  521. {
  522. label: "网格(20)",
  523. children: [
  524. {
  525. label: "节点",
  526. },
  527. {
  528. label: "表格",
  529. },
  530. ],
  531. },
  532. {
  533. label: "材料",
  534. },
  535. {
  536. label: "接触体",
  537. },
  538. {
  539. label: "接触关系",
  540. },
  541. ],
  542. defaultProps: {
  543. children: "children",
  544. label: "label",
  545. },
  546. // current:0,
  547. pid: "",
  548. solverConfigid: "",
  549. activeName: "one",
  550. activeName1: "first",
  551. objopp: "",
  552. femnum: "",
  553. tab: [
  554. { index: 0, name: "几何建模" },
  555. { index: 1, name: "网格划分" },
  556. { index: 2, name: "几何与单元属性" },
  557. { index: 3, name: "材料属性" },
  558. { index: 4, name: "接触与连接" },
  559. { index: 5, name: "初始条件" },
  560. { index: 6, name: " 边界条件" },
  561. { index: 7, name: "网格自适应" },
  562. { index: 8, name: "载荷工况" },
  563. { index: 9, name: "作业任务" },
  564. { index: 10, name: "结果查看" },
  565. { index: 11, name: " 工具箱" },
  566. ],
  567. tabPosition: "top",
  568. showtrue: true,
  569. drawer: true,
  570. direction: "rtl",
  571. options: [
  572. { value: "0", label: "FEMLab(结构力学)" },
  573. { value: "1", label: "MPMLab(结构力学)" },
  574. { value: "3", label: "Bladesign(结构力学)" },
  575. { value: "4", label: "Marc(结构力学)" },
  576. { value: "5", label: "Abaqus(结构力学)" },
  577. { value: "6", label: "Natran(结构力学)" },
  578. { value: "7", label: "ANSYS-FLUENT(结构力学)" },
  579. { value: "8", label: "STAR_CCM(流体力学)" },
  580. { value: "9", label: "Pointwise(流体力学)" },
  581. { value: "10", label: "ANSYS_ICEMCFD(流体力学)" },
  582. ],
  583. options1: [
  584. { value: "0", label: "结构分析" },
  585. { value: "1", label: "传热分析" },
  586. { value: "2", label: "热/电耦合" },
  587. { value: "3", label: "电/热耦合" },
  588. { value: "4", label: "电/热/力耦合" },
  589. { value: "5", label: "静电场分析" },
  590. { value: "6", label: "静电场/结构耦合" },
  591. { value: "7", label: "压力分析" },
  592. { value: "8", label: "热/压力" },
  593. { value: "9", label: "声场分析" },
  594. { value: "10", label: "声场/结构耦合" },
  595. { value: "11", label: "静磁场分析" },
  596. { value: "12", label: "静磁/热" },
  597. { value: "13", label: "静磁/结构" },
  598. { value: "14", label: "电磁场分析" },
  599. { value: "15", label: "电磁/热" },
  600. { value: "16", label: "电磁/热/结构" },
  601. { value: "17", label: "流体分析" },
  602. { value: "18", label: "流体/传热" },
  603. { value: "19", label: "流固耦合分析" },
  604. { value: "20", label: "流体/传热/结构耦合分析" },
  605. { value: "21", label: "轴承分析" },
  606. { value: "22", label: "扩散分析" },
  607. { value: "23", label: "扩散/热分析" },
  608. { value: "24", label: "扩散结构分析" },
  609. { value: "25", label: "土壤分析" },
  610. ],
  611. value1: "0",
  612. options0: [{ value: "ADI.SimWork", label: "ADI.SimWork" }],
  613. value0: "ADI.SimWork",
  614. options2: [
  615. { value: "HCFDLab", label: "HCFDLab" },
  616. { value: "FEMLab(结构力学)", label: "FEMLab(结构力学)" },
  617. { value: "FEMLab(结构力学)版本2", label: "FEMLab(结构力学)版本2" },
  618. { value: "adi", label: "adi" },
  619. ],
  620. value2: "HCFDLab",
  621. zjhlist: [
  622. { value: "0", label: "全部" },
  623. { value: "1", label: "表格" },
  624. { value: "2", label: "几何特征" },
  625. { value: "3", label: "材料" },
  626. { value: "4", label: "接触体" },
  627. { value: "5", label: "接触关系" },
  628. { value: "6", label: "接触表" },
  629. { value: "7", label: "焊接路径" },
  630. { value: "8", label: "焊缝" },
  631. { value: "9", label: "初始条件" },
  632. { value: "10", label: "边界条件" },
  633. { value: "11", label: "分工情况" },
  634. { value: "12", label: "分析任务" },
  635. { value: "13", label: "集合" },
  636. ],
  637. zjhval: "0",
  638. zjhlist1: [
  639. { value: "0", label: "全部" },
  640. { value: "1", label: "表格1" },
  641. { value: "2", label: "表格2" },
  642. ],
  643. zjhval1: "0",
  644. input3: "",
  645. };
  646. },
  647. created() {
  648. this.pid = this.$route.query.pid;
  649. this.init();
  650. },
  651. beforeDestroy() {
  652. this.websock.close();
  653. // 清除时间
  654. clearTimeout(this.timeoutObj);
  655. clearTimeout(this.serverTimeoutObj);
  656. },
  657. // destroyed() {
  658. // this.websock.close();
  659. // //this.websock=null;
  660. // //console.log( this.websock.close());
  661. // // 清除时间
  662. // clearTimeout(this.timeoutObj);
  663. // clearTimeout(this.serverTimeoutObj);
  664. // },
  665. destroyed() {
  666. if(this.websock!=null){
  667. this.websock.close();
  668. clearTimeout(this.timeoutObj);
  669. clearTimeout(this.serverTimeoutObj);
  670. console.log("关闭了websocket")
  671. }
  672. },
  673. mounted() {
  674. let curcolor = this.$store.state.themecolor;
  675. this.classH2 = "custome-" + curcolor;
  676. },
  677. methods: {
  678. // 子组件调用子组件的方法
  679. chaild(img) {
  680. this.$refs.TFileStream.fetchData(img, "1");
  681. },
  682. //折线图
  683. changelines(val) {
  684. let _this = this;
  685. let vals = JSON.parse(val);
  686. if (vals.lineType == "Line") {
  687. this.$set(this.$refs.monitor.option, "type", "Line");
  688. this.linezhexian(vals.linevalue);
  689. } else {
  690. this.$set(this.$refs.monitor.option, "type", "Point");
  691. this.linezhexian(vals.pointvalue);
  692. }
  693. },
  694. //
  695. linezhexian(num) {
  696. this.$set(
  697. this.$refs.monitor.option.plotOptions.series,
  698. "lineWidth",
  699. Number(num)
  700. );
  701. this.$refs.monitor.newHighcharts("highcharts", this.$refs.monitor.option);
  702. },
  703. meshclick(e, index, key) {
  704. let that = this;
  705. that.active = key;
  706. switch (key) {
  707. case "tl1-0":
  708. break;
  709. case "tl1-1":
  710. break;
  711. case "tl2-0":
  712. break;
  713. case "tl2-1":
  714. break;
  715. case "tl2-2":
  716. break;
  717. case "tl2-3":
  718. break;
  719. case "tl2-4":
  720. break;
  721. case "tl3-0":
  722. break;
  723. case "tl3-1":
  724. break;
  725. case "tl4-0":
  726. break;
  727. case "tl4-1":
  728. break;
  729. case "tl4-2":
  730. break;
  731. case "tl4-3":
  732. break;
  733. case "tl4-4":
  734. break;
  735. case "tl4-5":
  736. break;
  737. case "tl4-6":
  738. break;
  739. }
  740. },
  741. exlodingfalse(res) {
  742. this.footerShows("claer");
  743. this.elodingfalse =res;
  744. console.log(this.elodingfalse)
  745. },
  746. hide() {
  747. this.showtrue = !this.showtrue;
  748. },
  749. handleClick(tab, event) {},
  750. init() {
  751. this.pid = this.$route.query.pid;
  752. // this.pid='31f117acb7e74232a3267b091391eab2';
  753. this.solverchange1("HCFDLab", "");
  754. },
  755. //项目求解查询
  756. pojectquery() {},
  757. solverchange1(val, canshu) {
  758. let that = this;
  759. this.femnum = val;
  760. const params = {
  761. transCode: "C00003",
  762. pid: this.pid,
  763. company: this.value0,
  764. solverModel: this.value2,
  765. };
  766. sessionStorage.setItem("params", JSON.stringify(params));
  767. request(params).then((res) => {
  768. if (res.returnCode == "000000000") {
  769. this.objopp = res.parameterObj;
  770. let datas = res;
  771. if (val == "HCFDLab") {
  772. this.$nextTick(() => {
  773. this.logs = "HCFDLab";
  774. this.$refs.hcfd.hcfdchange(
  775. this.objopp,
  776. res.solverConfigid,
  777. datas
  778. );
  779. this.solverConfigid = res.solverConfigid;
  780. let data = JSON.parse(this.objopp);
  781. this.numsteps = data.nmlParam.steps;
  782. this.state = datas.state;
  783. if (canshu == "") {
  784. setTimeout(function () {
  785. that.initWebSocket();
  786. // this.startimg("init",'loaddata');
  787. }, 300);
  788. setTimeout(function () {
  789. that.startimg("init", "loaddata");
  790. }, 1000);
  791. }
  792. });
  793. } else if (val == "FEMLab(结构力学)") {
  794. let data = res;
  795. this.logs = "FEMLab(结构力学)";
  796. this.$refs.fem.femchange(
  797. res.parameterObj,
  798. res.solverConfigid,
  799. data
  800. );
  801. this.$refs.TFileStream.imgtupian = false;
  802. this.$refs.monitor.container_show = false;
  803. this.solverConfigid = res.solverConfigid;
  804. if (canshu == "") {
  805. this.startimg("init", "loaddata");
  806. }
  807. }
  808. }
  809. });
  810. },
  811. solverchange(val) {
  812. let that = this;
  813. this.femnum = val;
  814. this.selectval = val;
  815. const params = {
  816. transCode: "C00003",
  817. pid: this.pid,
  818. company: this.value0,
  819. solverModel: this.value2,
  820. };
  821. sessionStorage.setItem("params", JSON.stringify(params));
  822. request(params)
  823. .then((res) => {
  824. if (res.returnCode == "000000000") {
  825. let datas = res;
  826. this.objopp = res.parameterObj;
  827. if (val == "HCFDLab") {
  828. this.$nextTick(() => {
  829. this.logs = "HCFDLab";
  830. this.state = datas.state;
  831. this.$refs.hcfd.hcfdchange(
  832. this.objopp,
  833. res.solverConfigid,
  834. datas.state
  835. );
  836. this.solverConfigid = res.solverConfigid;
  837. let data = JSON.parse(this.objopp);
  838. this.numsteps = data.nmlParam.steps;
  839. this.exlodingfalse(false);
  840. this.startimg("init", "loaddata");
  841. that.$refs.monitor.container_show = true;
  842. });
  843. } else if (val == "FEMLab(结构力学)") {
  844. let data = res;
  845. this.$refs.fem.femchange(
  846. res.parameterObj,
  847. res.solverConfigid,
  848. data
  849. );
  850. this.solverConfigid = res.solverConfigid;
  851. this.logs = "FEMLab(结构力学)";
  852. this.startimg("init", "loaddata");
  853. this.$refs.monitor.container_show = false;
  854. this.$refs.TFileStream.imgtupian = false;
  855. } else {
  856. }
  857. } else {
  858. }
  859. })
  860. .catch((err) => {});
  861. },
  862. // 状态
  863. statechange(val) {
  864. this.statecustom = val;
  865. },
  866. // 调用求解过程日志
  867. fun() {
  868. this.logs = "";
  869. this.newlog = "";
  870. let funbool= this.$refs.hcfd.funbool;
  871. if(funbool==true){
  872. this.$refs.hcfd.funbool=false;
  873. this.$refs.monitor.getwebsocket();
  874. }
  875. this.$refs.monitor.container_show = true;
  876. this.monitorHCFD = this.$refs.monitor.container_show;
  877. this.$refs.TFileStream.imgtupian = false;
  878. // if (this.statecustom == "1") {
  879. // Message({
  880. // type: "warning",
  881. // message: "运行中不能点击",
  882. // });
  883. // } else {
  884. // if (this.state == "1") {
  885. // //this.$refs.monitor.getwebsocket();
  886. // } else {
  887. // // this.$refs.hcfd.hcfdrun();
  888. // }
  889. // this.$refs.monitor.container_show = true;
  890. // this.monitorHCFD = this.$refs.monitor.container_show;
  891. // this.$refs.TFileStream.imgtupian = false;
  892. // }
  893. },
  894. funagain() {
  895. // if (this.elodingfalse == true) {
  896. // Message({
  897. // type: "warning",
  898. // message: "运行中不能点击",
  899. // });
  900. // } else {
  901. this.$refs.monitor.getwebsocket();
  902. this.$refs.monitor.container_show = true;
  903. this.monitorHCFD = this.$refs.monitor.container_show;
  904. this.$refs.TFileStream.imgtupian = false;
  905. // }
  906. },
  907. // 工具栏的显示隐藏
  908. changehcfd(pare) {
  909. this.logs = "";
  910. this.newlog = "";
  911. if (this.statecustom == "1") {
  912. Message({
  913. type: "warning",
  914. message: "运行中不能点击",
  915. });
  916. } else {
  917. this.$refs.monitor.getwebsocket();
  918. this.$refs.TFileStream.imgtupian = false;
  919. this.$refs.monitor.container_show = pare;
  920. }
  921. },
  922. // 日志的文本框
  923. footerShows(evt) {
  924. if (evt == "claer") {
  925. this.logs = "";
  926. this.newlog = "";
  927. } else {
  928. this.footerShow = !this.footerShow;
  929. }
  930. },
  931. //日志
  932. getthislog(log,newoldSolver) {
  933. this.newlog =this.newlog + "\n" +log ;
  934. this.logs = this.newlog;
  935. let logs = this.logs;
  936. this.$nextTick(() => {
  937. let textarea=document.getElementById("textarea_id");
  938. textarea.scrollTop=textarea.scrollHeight;
  939. })
  940. if (logs.indexOf('Solver end') >= 0) {
  941. this.elodingfalse = false;
  942. this.isSolverEnd = true;
  943. this.statecustom = "0";
  944. }
  945. // if (endvew.includes("oldSolver end")){//newoldSolver.includes("oldSolver end"
  946. // this.statecustom = "0";
  947. // }
  948. },
  949. // 剩余时间
  950. restimeyear(time) {
  951. this.restime = time;
  952. },
  953. //开起loading
  954. loadingopen() {
  955. const loading = this.$loading({
  956. lock: true,
  957. text: "Loading",
  958. spinner: "el-icon-loading",
  959. background: "rgba(0, 0, 0, 0.7)",
  960. });
  961. return loading;
  962. },
  963. // 关闭lodind
  964. loadingend(loading) {
  965. loading.close();
  966. },
  967. startimg(action, action2) {
  968. let params = {
  969. transCode: "AFT001", // 服务器渲染实例接口创建推流
  970. pid: this.pid,
  971. solverConfigId: this.solverConfigid,
  972. action: action,
  973. paramJson: "",
  974. };
  975. this.loading = true;
  976. request(params)
  977. .then((res) => {
  978. if (res.returnCode == "000000000") {
  979. this.startimgloaddata(action2);
  980. } else {
  981. }
  982. })
  983. .catch((err) => {
  984. this.loadingend(this.loadingopen());
  985. });
  986. },
  987. startimgloaddata(action) {
  988. let that = this;
  989. let params = {
  990. transCode: "AFT001", // 服务器渲染实例接口创建推流
  991. pid: this.pid,
  992. solverConfigId: this.solverConfigid,
  993. action: action,
  994. paramJson: "",
  995. };
  996. this.loading = true;
  997. request(params)
  998. .then((res) => {})
  999. .catch((err) => {
  1000. this.loadingend(this.loadingopen());
  1001. });
  1002. },
  1003. // 心跳包
  1004. reconnect() {
  1005. var that = this;
  1006. if (that.lockReconnect) return;
  1007. that.lockReconnect = true;
  1008. //没连接上会一直重连,设置延迟避免请求过多
  1009. that.timeoutnum && clearTimeout(that.timeoutnum);
  1010. that.timeoutnum = setTimeout(function () {
  1011. //新连接
  1012. that.initWebSocket();
  1013. that.lockReconnect = false;
  1014. }, 10000);
  1015. },
  1016. reset() {
  1017. //重置心跳
  1018. var that = this;
  1019. clearTimeout(this.timeoutObj);
  1020. clearTimeout(this.serverTimeoutObj);
  1021. that.start();
  1022. },
  1023. start() {
  1024. //开启心跳
  1025. var self = this;
  1026. self.timeoutObj && clearTimeout(self.timeoutObj);
  1027. self.serverTimeoutObj && clearTimeout(self.serverTimeoutObj);
  1028. self.timeoutObj = setTimeout(function () {
  1029. //这里发送一个心跳,后端收到后,返回一个心跳消息
  1030. if (self.websock.readyState == 1) {
  1031. //如果连接正常
  1032. self.websock.send("heartCheck");
  1033. } else {
  1034. //否则重连
  1035. self.reconnect();
  1036. }
  1037. self.serverTimeoutObj = setTimeout(function () {
  1038. // 超时关闭
  1039. self.websock.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
  1040. }, self.timeout);
  1041. }, this.timeout);
  1042. },
  1043. // },
  1044. // // 文件渲染websoket图片的渲染
  1045. initWebSocket() {
  1046. //初始化weosocket
  1047. // const wsuri = "ws://192.168.0.43:8087//websocket?projectId="+this.pid;
  1048. const wsuri =
  1049. "ws://" +
  1050. process.env.VUE_APP_BASE_websokt +
  1051. "/websocket?projectId=" +
  1052. this.pid;
  1053. this.websock = new WebSocket(wsuri);
  1054. this.websock.onmessage = this.websocketonmessage;
  1055. this.websock.onopen = this.websocketonopen;
  1056. this.websock.onerror = this.websocketonerror;
  1057. this.websock.onclose = this.websocketclose;
  1058. },
  1059. websocketonopen(e) {
  1060. //连接建立之后执行send方法发送数据
  1061. // this.startimg("init",'loaddata');
  1062. this.start();
  1063. },
  1064. websocketonerror() {
  1065. //连接建立失败重连
  1066. this.websock.close();
  1067. this.reconnect();
  1068. },
  1069. websocketonmessage(e) {
  1070. //数据接收
  1071. this.reset();
  1072. try {
  1073. let eadata = e.data;
  1074. if (eadata.indexOf("heartCheck") != -1) {
  1075. } else if (JSON.parse(e.data).action == "animation") {
  1076. let rdata = JSON.parse(e.data);
  1077. let srtpnum = Number(rdata.step) / 10;
  1078. if (this.selectval == "HCFDLab") {
  1079. this.$refs.hcfd.percentage = srtpnum;
  1080. } else {
  1081. this.$refs.fem.percentage = srtpnum;
  1082. }
  1083. } else {
  1084. // this.loadingopen();
  1085. // let eadata=e.data
  1086. var rdata = JSON.parse(e.data);
  1087. console.log(rdata);
  1088. if(rdata.action== "meshSplit"){
  1089. this.logmatter=this.logmatter+"\n" +rdata.log
  1090. this.logs=this.logmatter;
  1091. this.$nextTick(() => {
  1092. let textarea=document.getElementById("textarea_id");
  1093. textarea.scrollTop=textarea.scrollHeight;
  1094. })
  1095. }else{
  1096. this.loadingopen();
  1097. if (rdata.hasOwnProperty("img")) {
  1098. //this.loadingopen();
  1099. this.$refs.TFileStream.imgtupian = true;
  1100. this.$refs.TFileStream.fetchData(rdata, null);
  1101. this.$refs.monitor.container_show = false;
  1102. this.loadingend(this.loadingopen());
  1103. }
  1104. // HCFD云图的参数返回 存储
  1105. let rdataparamJson = JSON.parse(rdata.paramJson);
  1106. if (rdataparamJson.hasOwnProperty("Error")) {
  1107. Message({
  1108. type: "Error",
  1109. message: "Error:" + rdataparamJson.Error,
  1110. });
  1111. this.loadingend(this.loadingopen());
  1112. }
  1113. if (this.selectval == "HCFDLab") {
  1114. if (rdata.action == "ResultImport") {
  1115. let data = JSON.parse(rdata.paramJson);
  1116. if (data.msgType == "contour_param") {
  1117. //sessionStorage.setItem("ytdata",JSON.stringify(data));
  1118. this.$refs.hcfd.outlinedata(JSON.stringify(data));
  1119. this.ytdata = rdata;
  1120. }
  1121. if (data.msgType == "line_param") {
  1122. this.$refs.hcfd.outlinedata(JSON.stringify(data));
  1123. }
  1124. if (data.msgType == "vector_param") {
  1125. sessionStorage.setItem("vectorparam", JSON.stringify(data));
  1126. this.vectorparam = rdata;
  1127. this.$refs.hcfd.vectordata(JSON.stringify(data));
  1128. }
  1129. if (data.msgType == "stream_param") {
  1130. this.$refs.hcfd.streamdata(JSON.stringify(data));
  1131. }
  1132. if (data.msgType == "solidsurface_param") {
  1133. }
  1134. if (data.msgType == "animation_param") {
  1135. this.$refs.hcfd.zoomanimation(JSON.stringify(data));
  1136. }
  1137. } else if (rdata.action == "LineDisplay") {
  1138. this.ytdata = rdata;
  1139. } else if (rdata.action == "SliceDisplayAdd") {
  1140. let dataslicedisplay = JSON.parse(rdata.paramJson);
  1141. if (
  1142. dataslicedisplay == null ||
  1143. JSON.stringify(dataslicedisplay) == "{}"
  1144. ) {
  1145. } else {
  1146. if (dataslicedisplay.msgType == "addPage_slice_param") {
  1147. sessionStorage.setItem(
  1148. "dataslicedisplay",
  1149. JSON.stringify(rdata.paramJson)
  1150. );
  1151. this.$refs.hcfd.addparam();
  1152. }
  1153. }
  1154. } else if (rdata.action == "SliceDisplayUpdate") {
  1155. let datadisplayupdate = JSON.parse(rdata.paramJson);
  1156. if (
  1157. datadisplayupdate == null ||
  1158. JSON.stringify(datadisplayupdate) == "{}"
  1159. ) {
  1160. } else {
  1161. sessionStorage.setItem(
  1162. "updateparam",
  1163. JSON.stringify(rdata.paramJson)
  1164. );
  1165. this.$refs.hcfd.updataparam();
  1166. }
  1167. } else {
  1168. }
  1169. } else if (this.selectval == "FEMLab(结构力学)") {
  1170. if (rdata.action == "ResultImport") {
  1171. let data = JSON.parse(rdata.paramJson);
  1172. if (data.msgType == "contour_param") {
  1173. this.$refs.fem.outlinedata(JSON.stringify(data));
  1174. }
  1175. if (data.msgType == "line_param") {
  1176. this.$refs.fem.outlinedata(JSON.stringify(data));
  1177. }
  1178. if (data.msgType == "vector_param") {
  1179. sessionStorage.setItem("vectorparam", JSON.stringify(data));
  1180. this.vectorparam = rdata;
  1181. }
  1182. if (data.msgType == "stream_param") {
  1183. this.$refs.fem.streamdata(JSON.stringify(data));
  1184. }
  1185. if (data.msgType == "solidsurface_param") {
  1186. this.$refs.fem.colorval(JSON.stringify(data));
  1187. }
  1188. if (data.msgType == "animation_param") {
  1189. this.$refs.fem.zoomanimation(JSON.stringify(data));
  1190. }
  1191. } else if (rdata.action == "LineDisplay") {
  1192. this.ytdata = rdata;
  1193. } else if (rdata.action == "SliceDisplayAdd") {
  1194. let dataslicedisplay = JSON.parse(rdata.paramJson);
  1195. if (
  1196. dataslicedisplay == null ||
  1197. JSON.stringify(dataslicedisplay) == "{}"
  1198. ) {
  1199. } else {
  1200. if (dataslicedisplay.msgType == "addPage_slice_param") {
  1201. sessionStorage.setItem(
  1202. "dataslicedisplay",
  1203. JSON.stringify(rdata.paramJson)
  1204. );
  1205. this.$refs.fem.femaddparam();
  1206. }
  1207. }
  1208. } else if (rdata.action == "SliceDisplayUpdate") {
  1209. let datadisplayupdate = JSON.parse(rdata.paramJson);
  1210. if (
  1211. datadisplayupdate == null ||
  1212. JSON.stringify(datadisplayupdate) == "{}"
  1213. ) {
  1214. } else {
  1215. this.$refs.fem.updataparam(JSON.stringify(rdata.paramJson));
  1216. }
  1217. } else {
  1218. }
  1219. } else {
  1220. console.log(rdataparamJson);
  1221. }
  1222. return true;
  1223. }
  1224. }
  1225. }catch (error) {
  1226. // this.loadingend(this.loadingopen());
  1227. return false;
  1228. }
  1229. },
  1230. websocketsend(Data) {
  1231. //数据发送
  1232. this.websock.send(Data);
  1233. },
  1234. websocketclose(e) {
  1235. //关闭
  1236. ///this.websock.close();
  1237. //this.loadingend(this.loadingopen());
  1238. //this.reconnect();
  1239. },
  1240. getafl(action,paramJson){
  1241. let that = this;
  1242. let params = {
  1243. transCode: "AFT001", // 服务器渲染实例接口创建推流
  1244. pid: this.pid,
  1245. solverConfigId: this.solverConfigid,
  1246. action: action,
  1247. paramJson: paramJson
  1248. };
  1249. request(params)
  1250. .then((res) => {})
  1251. .catch((err) => {
  1252. // Message({
  1253. // type: "info",
  1254. // message: "请上传文件",
  1255. // });
  1256. });
  1257. },
  1258. handleNodeClick(data, checked, indeterminate){
  1259. this.checkIdArr = this.$refs.tree.getCheckedKeys();
  1260. if(this.checkIdArr.includes(12)){
  1261. this.objcheck.pointsFlag=true;
  1262. }else {
  1263. this.objcheck.pointsFlag=false;
  1264. }
  1265. if(this.checkIdArr.includes(13)){
  1266. this.objcheck.curvesFlag=true;
  1267. }else{
  1268. this.objcheck.curvesFlag=false;
  1269. }
  1270. if(this.checkIdArr.includes(14)){
  1271. this.objcheck.surFacesFlag=true;
  1272. }else {
  1273. this.objcheck.surFacesFlag=false;
  1274. }
  1275. this.getafl('geometryFileShow',JSON.stringify(this.objcheck));
  1276. },
  1277. getCheckedNodes(obj,a){
  1278. // console.log(this.$refs.tree.setCheckedKeys([3]))
  1279. },
  1280. // getMenuAllCheckedKeys(){
  1281. // let checkedKeys=this.$refs.tree.getMenuAllCheckedKeys();
  1282. // console.log(checkedKeys);
  1283. // }
  1284. },
  1285. };
  1286. </script>
  1287. <style lang="scss">
  1288. @import "@/styles/variables.scss";
  1289. @import "@/styles/mixin.scss";
  1290. .scal {
  1291. .toolbar-part-detail {
  1292. // background-color: #757070;
  1293. .toolbar-content {
  1294. padding: 5px;
  1295. border-top: 1px solid #999;
  1296. // border-bottom:1px solid #999;
  1297. .imgcontent {
  1298. display: flex;
  1299. .item {
  1300. padding-right: 5px;
  1301. }
  1302. }
  1303. }
  1304. }
  1305. .toolmain {
  1306. width: 100%;
  1307. height: 32px;
  1308. overflow: hidden;
  1309. }
  1310. html,
  1311. body {
  1312. width: 100%;
  1313. height: 100%;
  1314. }
  1315. .el-tabs__content {
  1316. padding: 0 5px;
  1317. }
  1318. .content {
  1319. display: flex;
  1320. height: 100%;
  1321. position: relative;
  1322. .left {
  1323. width: 200px;
  1324. height: 100%;
  1325. flex-direction: column;
  1326. padding: 15px;
  1327. position: relative;
  1328. height: calc(100vh - 179px);
  1329. z-index: 10;
  1330. }
  1331. .part-panel-collapse-handle {
  1332. position: absolute;
  1333. // right: -56px;
  1334. left: -38px;
  1335. top: 44%;
  1336. width: 94px;
  1337. height: 0;
  1338. cursor: pointer;
  1339. text-align: center;
  1340. border-width: 0 20px 18px;
  1341. line-height: 18px;
  1342. border-style: none solid solid;
  1343. transform: rotateZ(90deg);
  1344. font-size: 19px;
  1345. }
  1346. .lbg_color3 i:before {
  1347. transform: rotateZ(0);
  1348. }
  1349. .right {
  1350. padding: 0;
  1351. flex: 1;
  1352. // height: 100%;
  1353. position: relative;
  1354. }
  1355. .imgcontent img {
  1356. font-size: 16px;
  1357. }
  1358. .slide-fade-enter-active {
  1359. transition: all 0.3s ease;
  1360. }
  1361. }
  1362. .tablist {
  1363. border-bottom: 1px solid #999;
  1364. padding: 3px 0;
  1365. }
  1366. .tablist .tabitem {
  1367. color: #b6b6b6;
  1368. font-size: 16px;
  1369. padding-right: 5px;
  1370. cursor: pointer;
  1371. &.current {
  1372. color: #fff;
  1373. }
  1374. }
  1375. .el-tabs--bottom .el-tabs__header.is-bottom {
  1376. margin: 0;
  1377. }
  1378. .el-tabs__header {
  1379. margin: 0;
  1380. }
  1381. .imgcontent {
  1382. padding: 0 15px;
  1383. }
  1384. .el-tabs__item {
  1385. height: 30px;
  1386. line-height: 30px;
  1387. padding: 0 8px;
  1388. font-size: 12px;
  1389. }
  1390. // .imgzong{
  1391. // display: flex;
  1392. // padding-top: 4px;
  1393. // flex-wrap:wrap;
  1394. // .el-image{
  1395. // width: 30px;
  1396. // }
  1397. // }
  1398. .toolmain .imgzong .item1 {
  1399. padding-right: 4px;
  1400. padding: 0px 4px;
  1401. }
  1402. .imgzong .item1 {
  1403. padding-right: 4px;
  1404. padding: 4px 4px;
  1405. }
  1406. .shu {
  1407. padding: 4px 10px;
  1408. color: #666;
  1409. }
  1410. .el-tabs__item {
  1411. height: 30px;
  1412. line-height: 30px;
  1413. padding: 0 6px;
  1414. color: #b6b6b6;
  1415. font-size: 15px;
  1416. }
  1417. }
  1418. .maxh221 {
  1419. max-height: calc(100vh - 76px);
  1420. }
  1421. .maxh400 {
  1422. max-height: calc(100vh - 410px);
  1423. }
  1424. .beij-container {
  1425. width: 100%;
  1426. height: 100%;
  1427. background-color: #fff;
  1428. // background: linear-gradient(180deg, #ccd3e2 0%, rgba(255, 255, 255, 0) 100%);
  1429. }
  1430. .el-footer {
  1431. padding: 0;
  1432. height: 149px;
  1433. overflow-y: auto;
  1434. }
  1435. .footerTitle {
  1436. display: flex;
  1437. justify-content: space-between;
  1438. padding: 5px 20px;
  1439. font-size: 20px;
  1440. height: 25px !important;
  1441. z-index: 99;
  1442. }
  1443. .footerTitle div {
  1444. display: flex;
  1445. justify-content: space-around;
  1446. align-items: center;
  1447. font-size: 14px;
  1448. }
  1449. .kongzhit{
  1450. position: absolute;
  1451. bottom: 0;
  1452. width: 100%;
  1453. }
  1454. .footerTitle p {
  1455. margin: 0;
  1456. }
  1457. .footerTitle span {
  1458. padding: 5px 10px;
  1459. cursor: default;
  1460. }
  1461. .femFooter {
  1462. height: 160px !important;
  1463. padding: 0;
  1464. position: relative;
  1465. }
  1466. .footerText .el-textarea__inner {
  1467. width: 100%;
  1468. height: 160px !important;
  1469. border: 0;
  1470. font-size: 12px;
  1471. color: #333;
  1472. padding: 2px;
  1473. padding-bottom: 20px;
  1474. }
  1475. </style>
  1476. <style>
  1477. /* .left {
  1478. display: none;
  1479. } */
  1480. .selecr .el-form-item__label {
  1481. line-height: 36px;
  1482. }
  1483. .item1 .el-image {
  1484. width: 30px;
  1485. cursor: pointer;
  1486. }
  1487. .el-tabs--border-card {
  1488. background-color: none;
  1489. }
  1490. .baoshi {
  1491. margin-top: 4px;
  1492. color: #b6b6b6;
  1493. }
  1494. .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
  1495. background-color: #757070;
  1496. }
  1497. .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
  1498. border-top: 1px solid #757070;
  1499. border-bottom: none;
  1500. border-top: 1px solid transparent;
  1501. }
  1502. .part-panel-collapse-handle {
  1503. border-color: transparent transparent #6f6f6f;
  1504. }
  1505. .el-dialog__header {
  1506. padding: 15px 20px 10px;
  1507. background: #757070;
  1508. color: #fff;
  1509. }
  1510. .el-button--primary {
  1511. background: #757070;
  1512. border-color: #757070;
  1513. }
  1514. .textselsect {
  1515. position: absolute;
  1516. z-index: 9;
  1517. top: 0;
  1518. right: 7px;
  1519. z-index: 9;
  1520. height: 30px;
  1521. overflow: hidden;
  1522. }
  1523. .dialoglocation {
  1524. position: absolute;
  1525. top: -15vh;
  1526. }
  1527. .el-dialog__wrapper {
  1528. top: 15vh;
  1529. }
  1530. .el-tree,
  1531. .dongtia {
  1532. background: none;
  1533. color: #b6b6b6;
  1534. margin-top: 15px;
  1535. }
  1536. .itemimg1 {
  1537. padding: 4px;
  1538. }
  1539. .itemimg1 .item1 .el-image {
  1540. width: 20px;
  1541. height: 20px;
  1542. }
  1543. /* .my-tree .el-tree-node__children .el-tree-node__content .el-checkbox{
  1544. display: inline-block;
  1545. } */
  1546. /* .my-tree .el-tree-node__content label.el-checkbox,.my-tree .el-tree-node__children .el-checkbox .el-checkbox__inner,
  1547. .my-tree .el-tree-node__content .el-checkbox .el-checkbox__inner
  1548. {
  1549. display: none;
  1550. }
  1551. .my-tree .el-tree-node__children label.el-checkbox{
  1552. display: inline-block;
  1553. margin-left: -17px;
  1554. }
  1555. .my-tree .el-tree-node__children label.el-checkbox {
  1556. display: inline-block;
  1557. margin-left: -5px;
  1558. }
  1559. .my-tree .el-tree-node__children .el-tree-node .is-leaf + .el-checkbox .el-checkbox__inner {
  1560. display: inline-block;
  1561. }
  1562. .my-tree .el-checkbox .el-checkbox__inner{
  1563. display: inline-block;
  1564. } */
  1565. .el-tree .el-tree-node .el-tree-node__children .el-tree-node:first-of-type .el-tree-node__children .el-tree-node .el-tree-node__content label.el-checkbox{
  1566. display: inline-block;
  1567. }
  1568. </style>
  1569. <style lang="scss" scoped>
  1570. /deep/.my-tree {
  1571. .el-tree-node__content label.el-checkbox {
  1572. display: none;
  1573. }
  1574. .el-tree-node__children label.el-checkbox {
  1575. margin-left: -5px;
  1576. }
  1577. .el-tree-node {
  1578. .is-leaf + .el-checkbox .el-checkbox__inner {
  1579. display: inline-block;
  1580. }
  1581. .el-checkbox .el-checkbox__inner {
  1582. display: none;
  1583. }
  1584. }
  1585. }
  1586. /deep/.toolbar-part-detail {
  1587. position: relative;
  1588. }
  1589. .el-form-item {
  1590. margin-bottom: 5px;
  1591. }
  1592. /deep/.left .el-tabs__item {
  1593. padding: 0 19.4px !important;
  1594. // box-shadow: 0 8px 0 0 #479a48,0 10px 5px 0 rgba(0,0,0,0.5);
  1595. box-shadow: 0 10px 5px 0 rgba(0, 0, 0, 0.2);
  1596. }
  1597. /deep/.left .is-scrollable {
  1598. padding: 0;
  1599. }
  1600. /deep/ .left .el-tabs__nav-next,
  1601. .left .el-tabs__nav-prev {
  1602. display: none;
  1603. }
  1604. /deep/ .left .el-tabs__nav-prev {
  1605. display: none;
  1606. }
  1607. // /deep/ .el-radio+.el-radio{
  1608. // margin: 0;
  1609. // }
  1610. // /deep/ .el-checkbox+.el-checkbox{
  1611. // margin: 0;
  1612. // }
  1613. /deep/.leftsearch .el-button {
  1614. background-color: #fff;
  1615. }
  1616. </style>