index.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089
  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 ref="hcfd" :objopp="objopp" :ytdata="ytdata" :vectorparam="vectorparam" :pid="pid" @fun="fun()" @changelines="changelines()" @linezhexian="linezhexian()" :elodingfalse="elodingfalse" @exlodingfalse="exlodingfalse" :femnum="femnum"></hcfd>
  9. </div>
  10. <div v-else-if="value2=='FEMLab(结构力学)'">
  11. <fem ref="fem" :femnum="femnum" :logs='logs' @getthislog='getthislog' :pid="pid" @exlodingfalse="exlodingfalse" ></fem>
  12. </div>
  13. <div v-else-if="value2=='FEMLab(结构力学)版本2'">
  14. <fem2 ref="fem2" :femnum="femnum" :logs='logs' :pid="pid" ></fem2>
  15. </div>
  16. <div class="adi" v-else>
  17. <el-tabs :tab-position="tabPosition" v-model="activeName" type="card" @tab-click="handleClick">
  18. <el-tab-pane label="几何建模" name="one"><geometry></geometry></el-tab-pane>
  19. <el-tab-pane label="网格划分" name="two"> <meshindex></meshindex></el-tab-pane>
  20. <el-tab-pane label="几何与单元属性" name="three"> <Geometryandclass></Geometryandclass></el-tab-pane>
  21. <el-tab-pane label="材料属性" name="four"> <Materials></Materials></el-tab-pane>
  22. <el-tab-pane label="接触与连接" name="five"><touch></touch></el-tab-pane>
  23. <el-tab-pane label="初始条件" name="six"> <initial></initial></el-tab-pane>
  24. <el-tab-pane label="边界条件" name="seven"> <boundary></boundary></el-tab-pane>
  25. <el-tab-pane label="网格自适应" name="eight"> <Meshauto></Meshauto> </el-tab-pane>
  26. <el-tab-pane label="载荷工况" name="nine"> <loadcase></loadcase></el-tab-pane>
  27. <el-tab-pane label="作业任务" name="ten"> <zuoye></zuoye></el-tab-pane>
  28. <el-tab-pane label="结果查看" name="eleven"> <result></result></el-tab-pane>
  29. <el-tab-pane label="工具箱" name="twelve"><toolindex></toolindex></el-tab-pane>
  30. <el-tab-pane label="操作" name="thirteen"><caozuo ></caozuo></el-tab-pane>
  31. </el-tabs>
  32. </div>
  33. <div class="textselsect">
  34. <el-select v-model="value0" placeholder="请选择">
  35. <el-option
  36. v-for="item in options0"
  37. :key="item.value"
  38. :label="item.label"
  39. :value="item.value">
  40. </el-option>
  41. </el-select>
  42. <el-select v-model="value2" placeholder="请选择" @change="solverchange">
  43. <el-option
  44. v-for="item in options2"
  45. :key="item.value"
  46. :label="item.label"
  47. :value="item.value">
  48. </el-option>
  49. </el-select>
  50. </div>
  51. </div>
  52. <div class="content">
  53. <transition name="slide-fade">
  54. <div class="left lbg_color3 el-menu" v-show="showtrue" style="padding:0;">
  55. <el-tabs v-model="activeName1" type="card" @tab-click="handleClick">
  56. <el-tab-pane label="模型导航" name="first">
  57. <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  58. </el-tab-pane>
  59. <el-tab-pane label="动态菜单" name="second">
  60. <div class="dongtia dialog_color selecr">
  61. <el-form>
  62. <el-form-item >
  63. <el-select v-model="zjhval" placeholder="请选择">
  64. <el-option
  65. v-for="item in zjhlist"
  66. :key="item.value"
  67. :label="item.label"
  68. :value="item.value"
  69. >
  70. </el-option>
  71. </el-select>
  72. </el-form-item>
  73. <el-form-item>
  74. <el-select v-model="zjhval1" placeholder="请选择">
  75. <el-option
  76. v-for="item in zjhlist1"
  77. :key="item.value"
  78. :label="item.label"
  79. :value="item.value"
  80. >
  81. </el-option>
  82. </el-select>
  83. </el-form-item>
  84. <div class="leftsearch">
  85. <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
  86. <el-button slot="append" icon="el-icon-search"></el-button>
  87. </el-input>
  88. </div>
  89. </el-form>
  90. </div>
  91. </el-tab-pane>
  92. </el-tabs>
  93. </div>
  94. </transition>
  95. <div class="right lbg_color2 ">
  96. <!-- <div class="part-panel-collapse-handle lbg_color3 el-tag--primary " @click="showtrue=!showtrue">
  97. <i class="el-icon-arrow-down"></i>
  98. </div> -->
  99. <el-container class="beij-container">
  100. <el-container>
  101. <el-main ref="main3d" :class="headMenu_2Show?'maxh400':'maxh221'" style="padding:0">
  102. <tool1 @startimg="startimg" :monitorHCFD="monitorHCFD" @changehcfd="changehcfd"></tool1>
  103. <!-- 加载折线图 -->
  104. <echartsHFCD ref="monitor" v-if="femnum=='HCFDLab'" @getthislog='getthislog' @restimeyear='restimeyear' :projectId='pid' :nmlsteps="Number(numsteps)"></echartsHFCD>
  105. <!-- 加载图片 -->
  106. <TFileStream :projectId='pid' ref="TFileStream" ></TFileStream>
  107. </el-main>
  108. <div class="footerTitle el-tag--primary">
  109. <div>{{ $t("FEM.other.console") }}
  110. <p class="restime" v-show="elodingfalse" style=" margin-left: 50px; font-size:14px">剩余时长:{{restime}}</p>
  111. </div>
  112. <div>
  113. <li class="exloadbox" v-show="elodingfalse" >
  114. <span>正在求解中</span>
  115. <i class="el-icon-loading"></i>
  116. </li>
  117. <li>
  118. <span @click="footerShows('claer')">清空</span>
  119. </li>
  120. <li>
  121. <span @click="footerShows('foot')">&#9650;&#9660;</span>
  122. </li>
  123. </div>
  124. </div>
  125. <el-footer class="femFooter" v-if="footerShow">
  126. <div class="footerTextBox">
  127. <el-input
  128. class="footerText"
  129. type="textarea"
  130. v-model="logs"
  131. ></el-input>
  132. </div>
  133. </el-footer>
  134. </el-container>
  135. </el-container>
  136. </div>
  137. </div>
  138. </div>
  139. </template>
  140. <script>
  141. //图片引入
  142. import tl1 from '@/assets/icon/axislegend.png'
  143. import tl2 from '@/assets/icon/zoomtowindow.png'
  144. import tl3 from '@/assets/icon/defaultmousecontrol.png'
  145. import tl4 from '@/assets/icon/u3884.png'
  146. import tl5 from '@/assets/icon/16.png'
  147. import tl6 from '@/assets/icon/pan.png'
  148. import tl7 from '@/assets/icon/u3871.png'
  149. import tl8 from '@/assets/icon/u3879.png'
  150. import tl9 from '@/assets/icon/u9872.png'
  151. import tl10 from '@/assets/icon/view_front.png'
  152. import tl11 from '@/assets/icon/view_back.png'
  153. import tl12 from '@/assets/icon/view_top.png'
  154. import tl13 from '@/assets/icon/view_bottom.png'
  155. import tl14 from '@/assets/icon/view_left.png'
  156. import tl15 from '@/assets/icon/view_right.png'
  157. import tl16 from '@/assets/icon/view_isometric.png'
  158. // 引入组件
  159. import { request, getImage } from '@/utils/request'
  160. import { Message, MessageBox } from "element-ui";
  161. import geometry from './geometry/index.vue'
  162. import meshindex from './meshindex/index.vue'
  163. import Geometryandclass from './Geometryandclass/index.vue'
  164. import Materials from './Materials/index.vue'
  165. import touch from './touch/index.vue'
  166. import initial from './initial/index.vue'
  167. import boundary from './boundary/index.vue'
  168. import Meshauto from './Meshauto/index.vue'
  169. import loadcase from './loadcase/index.vue'
  170. import zuoye from './zuoye/index.vue'
  171. import result from './result/index.vue'
  172. import toolindex from './tool/index.vue'
  173. import caozuo from './caozuo/index.vue'
  174. import hcfd from './HCFDLab/index.vue'
  175. import fem from './FEMLab/fem.vue'
  176. import fem2 from './FemLab2_0/index.vue'
  177. import echartsHFCD from "./HCFDLab/echartsHFCD.vue";
  178. import { number } from 'echarts/lib/export'
  179. import TFileStream from "./compoents/TFileStreamhcfd.vue";
  180. import tool1 from "./compoents/tool1.vue";
  181. export default {
  182. components:{geometry,meshindex,Geometryandclass,Materials,touch,initial,boundary,Meshauto,loadcase,zuoye,echartsHFCD,result,caozuo,toolindex,hcfd,fem,TFileStream,tool1,fem2},
  183. data() {
  184. return {
  185. tl1,tl2,tl3,tl4,tl5,tl6,tl7,tl8,tl9,tl10,
  186. tl11,tl12,tl13,tl14,tl15,tl16,
  187. ytdata:{},
  188. vectorparam:{},
  189. active:'',
  190. restime:'',
  191. monitorHCFD:false,
  192. footerShow:true,
  193. headMenu_2Show:false,
  194. elodingfalse:false,
  195. numsteps:'',
  196. logs: "欢迎来到adi平台",
  197. newlog:'',
  198. toollist:[
  199. { icon:tl1, titlie:'坐标轴'},
  200. { icon:tl2, titlie:'缩放'},
  201. ],
  202. toollist2:[
  203. { icon:tl3, titlie:'默认鼠标控制'},
  204. { icon:tl4, titlie:'缩小到窗口'},
  205. { icon:tl5, titlie:'轨道'},
  206. { icon:tl6, titlie:'pan'},
  207. { icon:tl7, titlie:'zoom'},
  208. ],
  209. toollist3:[
  210. { icon:tl8, titlie:'点击选择'},
  211. { icon:tl9, titlie:'点击选择窗口'},
  212. ],
  213. toollist4:[
  214. { icon:tl10, titlie:'前'},
  215. { icon:tl11, titlie:'后'},
  216. { icon:tl12, titlie:'上'},
  217. { icon:tl13, titlie:'底'},
  218. { icon:tl14, titlie:'左'},
  219. { icon:tl15, titlie:'右'},
  220. { icon:tl16, titlie:'等角'},
  221. ],
  222. data: [{
  223. label: '几何(33)',
  224. children: [{
  225. label: '几何点(17)',
  226. children: [{
  227. label: '三级 1-1-1'
  228. }]
  229. },
  230. {
  231. label: '曲线(17)',
  232. children: [{
  233. label: '三级 1-1-1'
  234. }]
  235. },
  236. ]
  237. }, {
  238. label: '网格(20)',
  239. children: [{
  240. label: '节点',
  241. }, {
  242. label: '表格',
  243. }]
  244. }, {
  245. label: '材料',
  246. },
  247. {
  248. label: '接触体',
  249. },
  250. {
  251. label: '接触关系',
  252. },
  253. ],
  254. defaultProps: {
  255. children: 'children',
  256. label: 'label'
  257. },
  258. // current:0,
  259. pid:'',
  260. solverConfigid:'',
  261. activeName: 'one',
  262. activeName1:'first',
  263. objopp:'',
  264. femnum:'',
  265. tab:[
  266. {index:0,name:"几何建模"},
  267. {index:1,name:"网格划分"},
  268. {index:2,name:"几何与单元属性"},
  269. {index:3,name:"材料属性"},
  270. {index:4,name:"接触与连接"},
  271. {index:5,name:"初始条件"},
  272. {index:6,name:" 边界条件"},
  273. {index:7,name:"网格自适应"},
  274. {index:8,name:"载荷工况"},
  275. {index:9,name:"作业任务"},
  276. {index:10,name:"结果查看"},
  277. {index:11,name:" 工具箱"},
  278. ],
  279. tabPosition: 'top',
  280. showtrue:true,
  281. drawer: true,
  282. direction: 'rtl',
  283. options:[
  284. {value: '0',label: 'FEMLab(结构力学)'},
  285. { value: '1',label: 'MPMLab(结构力学)'},
  286. { value: '3',label: 'Bladesign(结构力学)'},
  287. {value: '4',label: 'Marc(结构力学)'},
  288. { value: '5',label: 'Abaqus(结构力学)'},
  289. { value: '6',label: 'Natran(结构力学)'},
  290. { value: '7', label: 'ANSYS-FLUENT(结构力学)'},
  291. {value: '8',label: 'STAR_CCM(流体力学)'},
  292. {value: '9', label: 'Pointwise(流体力学)' },
  293. {value: '10',label: 'ANSYS_ICEMCFD(流体力学)' }
  294. ],
  295. options1:[
  296. {value: '0',label: '结构分析'},
  297. { value: '1',label: '传热分析'},
  298. {value: '2',label: '热/电耦合'},
  299. { value: '3',label: '电/热耦合'},
  300. {value: '4',label: '电/热/力耦合'},
  301. { value: '5',label: '静电场分析'},
  302. {value: '6',label: '静电场/结构耦合'},
  303. { value: '7',label: '压力分析'},
  304. {value: '8',label: '热/压力'},
  305. { value: '9',label: '声场分析'},
  306. {value: '10',label: '声场/结构耦合'},
  307. { value: '11',label: '静磁场分析'},
  308. {value: '12',label: '静磁/热'},
  309. { value: '13',label: '静磁/结构'},
  310. {value: '14',label: '电磁场分析'},
  311. { value: '15',label: '电磁/热'},
  312. {value: '16',label: '电磁/热/结构'},
  313. { value: '17',label: '流体分析'},
  314. {value: '18',label: '流体/传热'},
  315. { value: '19',label: '流固耦合分析'},
  316. {value: '20',label: '流体/传热/结构耦合分析'},
  317. { value: '21',label: '轴承分析'},
  318. {value: '22',label: '扩散分析'},
  319. { value: '23',label: '扩散/热分析'},
  320. {value: '24',label: '扩散结构分析'},
  321. { value: '25',label: '土壤分析'},
  322. ],
  323. value1:'0',
  324. options0:[
  325. {value: 'ADI.SimWork',label: 'ADI.SimWork'},
  326. ],
  327. value0:'ADI.SimWork',
  328. options2:[
  329. {value: 'HCFDLab',label: 'HCFDLab'},
  330. { value: 'FEMLab(结构力学)',label: 'FEMLab(结构力学)'},
  331. { value: 'FEMLab(结构力学)版本2',label: 'FEMLab(结构力学)版本2'},
  332. { value: 'adi',label: 'adi'},
  333. ],
  334. value2:'HCFDLab',
  335. zjhlist:[
  336. {value: '0',label: '全部'},
  337. { value: '1',label: '表格'},
  338. { value: '2',label: '几何特征'},
  339. { value: '3',label: '材料'},
  340. {value: '4',label: '接触体'},
  341. { value: '5',label: '接触关系'},
  342. { value: '6',label: '接触表'},
  343. { value: '7',label: '焊接路径'},
  344. { value: '8',label: '焊缝'},
  345. { value: '9',label: '初始条件'},
  346. {value: '10',label: '边界条件'},
  347. { value: '11',label: '分工情况'},
  348. { value: '12',label: '分析任务'},
  349. { value: '13',label: '集合'}
  350. ],
  351. zjhval:'0',
  352. zjhlist1:[
  353. {value: '0',label: '全部'},
  354. { value: '1',label: '表格1'},
  355. { value: '2',label: '表格2'},
  356. ],
  357. zjhval1:'0',
  358. input3:"",
  359. }
  360. },
  361. created(){
  362. this.pid=this.$route.query.pid;
  363. this.init();
  364. },
  365. mounted(){
  366. let curcolor = this.$store.state.themecolor;
  367. this.classH2 = 'custome-' + curcolor;
  368. },
  369. methods:{
  370. //折线图
  371. changelines(val){
  372. let _this=this;
  373. let vals=JSON.parse(val)
  374. console.log(vals)
  375. if(vals.lineType=='Line'){
  376. this.$set( this.$refs.monitor.option, "type",'Line' );
  377. this.linezhexian(vals.linevalue);
  378. }else{
  379. this.$set( this.$refs.monitor.option, "type","Point" );
  380. this.linezhexian(vals.pointvalue);
  381. }
  382. },
  383. //
  384. linezhexian(num){
  385. this.$set( this.$refs.monitor.option.plotOptions.series, "lineWidth", Number(num));
  386. this.$refs.monitor.newHighcharts("highcharts",this.$refs.monitor.option);
  387. },
  388. meshclick(e,index,key){
  389. let that=this;
  390. that.active=key;
  391. console.log(key);
  392. switch(key){
  393. case 'tl1-0':
  394. break;
  395. case 'tl1-1':
  396. break;
  397. case 'tl2-0':
  398. break;
  399. case 'tl2-1':
  400. break;
  401. case 'tl2-2':
  402. break;
  403. case 'tl2-3':
  404. break;
  405. case 'tl2-4':
  406. break;
  407. case'tl3-0':
  408. break;
  409. case'tl3-1':
  410. break;
  411. case'tl4-0':
  412. break;
  413. case'tl4-1':
  414. break;
  415. case'tl4-2':
  416. break;
  417. case'tl4-3':
  418. break;
  419. case'tl4-4':
  420. break;
  421. case'tl4-5':
  422. break;
  423. case'tl4-6':
  424. break;
  425. }
  426. },
  427. exlodingfalse(res){
  428. this.elodingfalse=res;
  429. },
  430. handleNodeClick(data) {
  431. console.log(data);
  432. },
  433. hide(){
  434. this.showtrue=!this.showtrue;
  435. },
  436. handleClick(tab, event) {
  437. },
  438. init(){
  439. this.pid=this.$route.query.pid;
  440. // this.pid='31f117acb7e74232a3267b091391eab2';
  441. this.solverchange1('HCFDLab');
  442. },
  443. //项目求解查询
  444. pojectquery(){
  445. },
  446. solverchange1(val){
  447. console.log(val)
  448. let that=this;
  449. this.femnum=val;
  450. const params = {
  451. transCode: 'C00003',
  452. pid:this.pid,
  453. company:this.value0,
  454. solverModel:this.value2
  455. }
  456. sessionStorage.setItem('params',JSON.stringify(params))
  457. request(params)
  458. .then((res) => {
  459. if(res.returnCode=='000000000'){
  460. this.objopp=res.parameterObj;
  461. let datas=res;
  462. if(val=='HCFDLab'){
  463. this.$nextTick(()=>{
  464. this.logs='HCFDLab';
  465. this.$refs.hcfd.hcfdchange(this.objopp,res.solverConfigid,datas);
  466. this.solverConfigid=res.solverConfigid;
  467. let data= JSON.parse(this.objopp);
  468. this.numsteps=data.nmlParam.steps;
  469. this.state=datas.state;
  470. setTimeout(function(){
  471. that.initWebSocket();
  472. },500)
  473. })
  474. }else if(val=='FEMLab(结构力学)'){
  475. let data=res;
  476. this.logs='FEMLab(结构力学)';
  477. this.$refs.fem.femchange(res.parameterObj,res.solverConfigid,data);
  478. this.$refs.TFileStream.imgtupian=false;
  479. this.$refs.monitor.container_show=false;
  480. // }
  481. }else{
  482. }
  483. }else{
  484. }
  485. })
  486. .catch((err) => {
  487. })
  488. },
  489. solverchange(val){
  490. let that=this;
  491. this.femnum=val;
  492. const params = {
  493. transCode: 'C00003',
  494. pid:this.pid,
  495. company:this.value0,
  496. solverModel:this.value2
  497. }
  498. sessionStorage.setItem('params',JSON.stringify(params))
  499. request(params)
  500. .then((res) => {
  501. if(res.returnCode=='000000000'){
  502. let datas=res;
  503. this.objopp=res.parameterObj;
  504. if(val=='HCFDLab'){
  505. this.$nextTick(()=>{
  506. this.logs='HCFDLab'
  507. this.state=datas.state;
  508. this.$refs.hcfd.hcfdchange(this.objopp,res.solverConfigid,datas.state);
  509. this.solverConfigid=res.solverConfigid;
  510. let data= JSON.parse(this.objopp);
  511. this.numsteps=data.nmlParam.steps;
  512. this.exlodingfalse(false)
  513. that.$refs.TFileStream.imgtupian=true;
  514. that.$refs.monitor.container_show=true;
  515. })
  516. }else if(val=='FEMLab(结构力学)'){
  517. let data=res;
  518. this.logs='FEMLab(结构力学)';
  519. this.$refs.fem.femchange(res.parameterObj,res.solverConfigid,data);
  520. that.$refs.TFileStream.imgtupian=false;
  521. that.$refs.monitor.container_show=false;
  522. }else{
  523. }
  524. }else{
  525. }
  526. })
  527. .catch((err) => {
  528. })
  529. },
  530. // 调用求解过程日志
  531. fun(){
  532. if( this.state=='1'){
  533. console.log(111)
  534. this.$refs.monitor.getwebsocket();
  535. }else{
  536. this.$refs.hcfd.hcfdrun();
  537. }
  538. this.$refs.monitor.container_show=true;
  539. this.monitorHCFD=this.$refs.monitor.container_show
  540. this.$refs.TFileStream.imgtupian=false;
  541. },
  542. funagain(){
  543. this.$refs.monitor.getwebsocket();
  544. this.$refs.monitor.container_show=true;
  545. this.monitorHCFD=this.$refs.monitor.container_show
  546. this.$refs.TFileStream.imgtupian=false;
  547. },
  548. // 工具栏的显示隐藏
  549. changehcfd(pare){
  550. this.$refs.monitor.getwebsocket();
  551. this.$refs.TFileStream.imgtupian=false;
  552. this.$refs.monitor.container_show=pare;
  553. },
  554. // 日志的文本框
  555. footerShows(evt) {
  556. if(evt=='claer'){
  557. this.logs='';
  558. }else{
  559. this.footerShow=!this.footerShow
  560. }
  561. },
  562. //日志
  563. getthislog(log){
  564. this.newlog = log+"\n"+this.newlog;
  565. this.logs=this.newlog;
  566. if ( this.logs.indexOf("newSolver end") >= 0) {
  567. this.elodingfalse=false;
  568. this.isSolverEnd = true;
  569. }
  570. },
  571. // 剩余时间
  572. restimeyear(time){
  573. this.restime=time;
  574. },
  575. //开起loading
  576. loadingopen(){
  577. const loading = this.$loading({
  578. lock: true,
  579. text: 'Loading',
  580. spinner: 'el-icon-loading',
  581. background: 'rgba(0, 0, 0, 0.7)'
  582. });
  583. return loading;
  584. },
  585. // 关闭lodind
  586. loadingend(loading){
  587. loading.close()
  588. },
  589. // 文件渲染之前的动作
  590. startimg(action,action2){
  591. let params = {
  592. transCode: "AFT001",// 服务器渲染实例接口创建推流
  593. pid:this.pid,
  594. solverConfigId: this.solverConfigid,
  595. action:action,
  596. paramJson:"",
  597. };
  598. this.loading = true;
  599. request(params)
  600. .then((res) => {
  601. this.logs='HCFD'
  602. if(res.returnCode=='000000000'){
  603. this.startimgloaddata(action2)
  604. }else{
  605. }
  606. })
  607. .catch((err) => {
  608. this.loadingend(this.loadingopen());
  609. });
  610. },
  611. startimgloaddata(action){
  612. let that=this;
  613. let params = {
  614. transCode: "AFT001",// 服务器渲染实例接口创建推流
  615. pid:this.pid,
  616. solverConfigId: this.solverConfigid,
  617. action:action,
  618. paramJson:"",
  619. };
  620. this.loading = true;
  621. request(params)
  622. .then((res) => {
  623. })
  624. .catch((err) => {
  625. this.loadingend(this.loadingopen());
  626. });
  627. },
  628. // // 文件渲染websoket图片的渲染
  629. initWebSocket(){ //初始化weosocket
  630. const wsuri = "ws://192.168.0.43:8087//websocket?projectId="+this.pid;
  631. this.websock = new WebSocket(wsuri);
  632. this.websock.onmessage = this.websocketonmessage;
  633. this.websock.onopen = this.websocketonopen;
  634. this.websock.onerror = this.websocketonerror;
  635. this.websock.onclose = this.websocketclose;
  636. },
  637. websocketonopen(e){ //连接建立之后执行send方法发送数据
  638. this.startimg("init",'loaddata');
  639. },
  640. websocketonerror(){//连接建立失败重连
  641. this.websock.close()
  642. },
  643. websocketonmessage(e){ //数据接收
  644. this.loadingopen();
  645. // setTimeout(() => {
  646. // this.loadingend(this.loadingopen());
  647. // // loading.close();
  648. // }, 3000);
  649. console.log(e);
  650. // if(e==){
  651. // }else{
  652. // setTimeout(() => {
  653. // this.loadingend(this.loadingopen());
  654. // // loading.close();
  655. // }, 3000);
  656. // }
  657. try{
  658. const redata = JSON.parse(e.data);
  659. if(redata.hasOwnProperty("img")){
  660. if(redata.img=''||redata.img==null||redata.img==undefined||redata.img==false){
  661. console.log(11111)
  662. }else{
  663. console.log(2222)
  664. }
  665. this.$refs.TFileStream.imgtupian=true;
  666. this.$refs.TFileStream.fetchData(redata);
  667. this.$refs.monitor.container_show=false;
  668. }
  669. // 云图的参数返回 存储
  670. console.log(redata);
  671. if(redata.action=='ResultImport'){
  672. let data=JSON.parse(redata.paramJson);
  673. if(data.msgType=="contour_param"){
  674. sessionStorage.setItem("ytdata",JSON.stringify(data));
  675. this.ytdata=redata;
  676. }
  677. if(data.msgType=='line_param'){
  678. sessionStorage.setItem("ytdata",JSON.stringify(data));
  679. this.ytdata=redata;
  680. }
  681. if(data.msgType=='vector_param'){
  682. sessionStorage.setItem("vectorparam",JSON.stringify(data));
  683. this.vectorparam=redata;
  684. }
  685. if(data.msgType=='stream_param'){
  686. this.$refs.hcfd.streamdata(JSON.stringify(data))
  687. }
  688. }else if(redata.action=='LineDisplay'){
  689. console.log(redata)
  690. this.ytdata=redata;
  691. }else if(redata.action=='SliceDisplayAdd'){
  692. let dataslicedisplay=JSON.parse(redata.paramJson);
  693. if(dataslicedisplay==null||JSON.stringify(dataslicedisplay)=='{}'){
  694. }else{
  695. if(dataslicedisplay.msgType=='addPage_slice_param'){
  696. sessionStorage.setItem("dataslicedisplay",JSON.stringify(redata.paramJson));
  697. this.$refs.hcfd.addparam();
  698. }
  699. }
  700. }else if(redata.action=='SliceDisplayUpdate'){
  701. let datadisplayupdate=JSON.parse(redata.paramJson);
  702. console.log(datadisplayupdate)
  703. if(datadisplayupdate==null||JSON.stringify(datadisplayupdate)=='{}'){
  704. }else{
  705. sessionStorage.setItem("updateparam",JSON.stringify(redata.paramJson));
  706. this.$refs.hcfd.updataparam();
  707. }
  708. }else if(redata.action=='StreamDisplayCreate'){
  709. let streamError=JSON.parse(redata.paramJson)
  710. if(streamError.hasOwnProperty('Error')){
  711. this.loadingend(this.loadingopen());
  712. }
  713. }
  714. return true;
  715. }catch(error){
  716. this.loadingend(this.loadingopen());
  717. return false;
  718. }
  719. },
  720. websocketsend(Data){//数据发送
  721. this.websock.send(Data);
  722. },
  723. websocketclose(e){ //关闭
  724. Message({
  725. type: "error",
  726. message: "websock断开连接",
  727. });
  728. this.loadingend(this.loadingopen());
  729. },
  730. }
  731. }
  732. </script>
  733. <style lang="scss">
  734. @import '@/styles/variables.scss';
  735. @import '@/styles/mixin.scss';
  736. .scal{
  737. .toolbar-part-detail{
  738. // background-color: #757070;
  739. .toolbar-content{
  740. padding: 5px;
  741. border-top:1px solid #999;
  742. // border-bottom:1px solid #999;
  743. .imgcontent{
  744. display: flex;
  745. .item{
  746. padding-right: 5px;
  747. }
  748. }
  749. }
  750. }
  751. .toolmain{
  752. width: 100%;
  753. height:32px;
  754. overflow: hidden;
  755. }
  756. html,body{
  757. width: 100%;
  758. height: 100%;
  759. }
  760. .el-tabs__content{
  761. padding: 0 5px;
  762. }
  763. .content{
  764. display: flex;
  765. height: 100%;
  766. position: relative;
  767. .left{
  768. width: 200px;
  769. height: 100%;
  770. flex-direction: column;
  771. padding: 15px;
  772. position: relative;
  773. height: 88vh;
  774. z-index: 10;
  775. }
  776. .part-panel-collapse-handle {
  777. position: absolute;
  778. // right: -56px;
  779. left: -38px;
  780. top: 44%;
  781. width: 94px;
  782. height: 0;
  783. cursor: pointer;
  784. text-align: center;
  785. border-width: 0 20px 18px;
  786. line-height: 18px;
  787. border-style: none solid solid;
  788. transform: rotateZ(
  789. 90deg);
  790. font-size: 19px;
  791. }
  792. .lbg_color3 i:before{
  793. transform: rotateZ(
  794. 0);
  795. }
  796. .right{
  797. padding:0;
  798. flex: 1;
  799. // height: 100%;
  800. position: relative;
  801. }
  802. .imgcontent img{
  803. font-size: 16px;
  804. }
  805. .slide-fade-enter-active {
  806. transition: all .3s ease;
  807. }
  808. }
  809. .tablist{
  810. border-bottom:1px solid #999;
  811. padding: 3px 0;
  812. }
  813. .tablist .tabitem{
  814. color: #b6b6b6;
  815. font-size: 16px;
  816. padding-right: 5px;
  817. cursor: pointer;
  818. &.current{
  819. color: #Fff ;
  820. }
  821. }
  822. .el-tabs--bottom .el-tabs__header.is-bottom{
  823. margin: 0;
  824. }
  825. .el-tabs__header{
  826. margin: 0;
  827. }
  828. .imgcontent{
  829. padding: 0 15px;
  830. }
  831. .el-tabs__item{
  832. height: 30px;
  833. line-height: 30px;
  834. padding: 0 8px;
  835. font-size: 12px;
  836. }
  837. // .imgzong{
  838. // display: flex;
  839. // padding-top: 4px;
  840. // flex-wrap:wrap;
  841. // .el-image{
  842. // width: 30px;
  843. // }
  844. // }
  845. .toolmain .imgzong .item1{
  846. padding-right: 4px;
  847. padding: 0px 4px ;
  848. }
  849. .imgzong .item1{
  850. padding-right: 4px;
  851. padding: 4px 4px ;
  852. }
  853. .shu{
  854. padding: 4px 10px;
  855. color: #666;
  856. }
  857. .el-tabs__item{
  858. height: 30px;
  859. line-height: 30px;
  860. padding: 0 6px;
  861. color:#b6b6b6;
  862. font-size:15px;
  863. }
  864. }
  865. .maxh221{
  866. max-height: calc(100vh - 76px);
  867. }
  868. .maxh400{
  869. max-height: calc(100vh - 410px);
  870. }
  871. .beij-container {
  872. width: 100%;
  873. height: 100%;
  874. background-color: #fff;
  875. // background: linear-gradient(180deg, #ccd3e2 0%, rgba(255, 255, 255, 0) 100%);
  876. }
  877. .el-footer {
  878. padding: 0;
  879. height: 149px;
  880. overflow-y: auto;
  881. }
  882. .footerTitle {
  883. display: flex;
  884. justify-content: space-between;
  885. padding: 5px 20px;
  886. font-size: 20px;
  887. height: 30px !important;
  888. z-index: 99;
  889. }
  890. .footerTitle div {
  891. display: flex;
  892. justify-content: space-around;
  893. align-items: center;
  894. }
  895. .footerTitle p {
  896. margin: 0;
  897. }
  898. .footerTitle span {
  899. padding: 5px 10px;
  900. cursor: default;
  901. }
  902. .femFooter{
  903. height: 135px !important;
  904. padding: 0;
  905. position: relative;
  906. }
  907. .footerText .el-textarea__inner{
  908. width: 100%;
  909. height: 135px !important;
  910. border: 0;
  911. font-size: 12px;
  912. color: #333;
  913. padding: 2px;
  914. }
  915. </style>
  916. <style>
  917. .left{
  918. display: none;
  919. }
  920. .selecr .el-form-item__label{
  921. line-height: 36px;
  922. }
  923. .item1 .el-image{
  924. width: 30px;
  925. cursor: pointer;
  926. }
  927. .el-tabs--border-card{
  928. background-color: none;
  929. }
  930. .baoshi{
  931. margin-top: 4px;
  932. color: #b6b6b6;
  933. }
  934. .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{
  935. background-color: #757070;
  936. }
  937. .el-tabs--card>.el-tabs__header .el-tabs__item.is-active{
  938. border-top:1px solid #757070;
  939. border-bottom:none;
  940. border-top: 1px solid transparent;
  941. }
  942. .part-panel-collapse-handle {
  943. border-color: transparent transparent #6f6f6f;
  944. }
  945. .el-dialog__header{
  946. padding: 15px 20px 10px;
  947. background: #757070;
  948. color: #fff
  949. }
  950. .el-button--primary{
  951. background: #757070;
  952. border-color: #757070;
  953. }
  954. .textselsect{
  955. position: absolute;
  956. z-index: 9;
  957. top: 0;
  958. right: 7px;
  959. z-index: 9;
  960. height: 30px;
  961. overflow: hidden;
  962. }
  963. .dialoglocation{
  964. position: absolute;
  965. top: -15vh;
  966. }
  967. .el-dialog__wrapper{
  968. top: 15vh;
  969. }
  970. .el-tree,.dongtia{
  971. background: none;
  972. color: #b6b6b6;
  973. margin-top: 15px;
  974. }
  975. .itemimg1{
  976. padding: 4px;
  977. }
  978. .itemimg1 .item1 .el-image{
  979. width: 20px;
  980. height: 20px;
  981. }
  982. </style>
  983. <style lang="scss" scoped>
  984. /deep/.toolbar-part-detail{
  985. position: relative;
  986. }
  987. .el-form-item{
  988. margin-bottom: 5px;
  989. }
  990. /deep/.left .el-tabs__item{
  991. padding: 0 19.4px !important;
  992. // box-shadow: 0 8px 0 0 #479a48,0 10px 5px 0 rgba(0,0,0,0.5);
  993. box-shadow: 0 10px 5px 0 rgba(0,0,0,0.2);
  994. }
  995. /deep/.left .is-scrollable {
  996. padding:0;
  997. }
  998. /deep/ .left .el-tabs__nav-next,.left .el-tabs__nav-prev{
  999. display: none;
  1000. }
  1001. /deep/ .left .el-tabs__nav-prev{
  1002. display: none;
  1003. }
  1004. // /deep/ .el-radio+.el-radio{
  1005. // margin: 0;
  1006. // }
  1007. // /deep/ .el-checkbox+.el-checkbox{
  1008. // margin: 0;
  1009. // }
  1010. /deep/.leftsearch .el-button {
  1011. background-color: #fff;
  1012. }
  1013. </style>