infotrack2.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  1. <template>
  2. <div class="track-info">
  3. <div class="form-info">
  4. <div class="work-flow">
  5. <div class="work-flow-line"></div>
  6. <div :class="['work-flow-item', item.name == statu(form) ? 'active' : '']" v-for="(item, i) in svgarr" :key="i">
  7. <div class="work-flow-icon-item">
  8. <div class="work-flow-icon-o"></div>
  9. <div class="work-flow-icon-i"></div>
  10. <span class="svg-icon">
  11. <SvgIcon :svgid="item.svg"></SvgIcon>
  12. </span>
  13. </div>
  14. <div class="work-flow-text">{{ item.name }}</div>
  15. </div>
  16. </div>
  17. <div class="form-body">
  18. <el-form ref="form" :model="form" label-width="120px">
  19. <el-row>
  20. <el-col :span="12">
  21. <el-form-item label="风场:">
  22. <el-input v-model="form.wpName" placeholder="风场名称" readonly></el-input>
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="12">
  26. <el-form-item label="风机:">
  27. <el-input v-model="form.wtId" placeholder="风机名称" readonly></el-input>
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. <el-row>
  32. <el-col :span="12">
  33. <el-form-item label="推荐检修时间:">
  34. <el-input v-model="form.tjss" placeholder="推荐检修时间" readonly></el-input>
  35. <!-- <el-date-picker v-model="form.tjjxsj" type="datetime" placeholder="推荐检修时间" popper-class="date-select"></el-date-picker> -->
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="12">
  39. <el-form-item label="预计检修风速:">
  40. <el-input v-model="form.tjfs" placeholder="预计检修风速" readonly></el-input>
  41. </el-form-item>
  42. </el-col>
  43. </el-row>
  44. <el-row>
  45. <el-col :span="24">
  46. <el-form-item label="推荐理由:">
  47. <el-input type="textarea" resize="none" :rows="3" v-model="form.description" placeholder="推荐理由"
  48. readonly></el-input>
  49. </el-form-item>
  50. </el-col>
  51. </el-row>
  52. <el-row>
  53. <el-col :span="12">
  54. <el-form-item label="下单时间:">
  55. <el-input v-model="form.prodtdepttime" placeholder="下单时间" readonly></el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="12">
  59. <el-form-item label="主要负责人:">
  60. <el-input v-model="form.workleader" placeholder="主要负责人" readonly></el-input>
  61. </el-form-item>
  62. </el-col>
  63. </el-row>
  64. <el-row>
  65. <el-col :span="12">
  66. <el-form-item label="出发时间:">
  67. <el-input v-model="form.departuretime" placeholder="出发时间" readonly></el-input>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="12">
  71. <el-form-item label="到达时间:">
  72. <el-input v-model="form.arrivaltime" placeholder="到达时间" readonly></el-input>
  73. </el-form-item>
  74. </el-col>
  75. </el-row>
  76. <el-row>
  77. <el-col :span="24">
  78. <el-form-item label="排查方法:">
  79. <el-input type="textarea" resize="none" :rows="3" v-model="form.gzpc" placeholder="排查方法" readonly></el-input>
  80. </el-form-item>
  81. </el-col>
  82. </el-row>
  83. <el-row>
  84. <el-col :span="24">
  85. <el-form-item label="处理方法:">
  86. <el-input type="textarea" resize="none" :rows="3" v-model="form.repairedcomment" placeholder="处理方法"
  87. readonly></el-input>
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. <el-row>
  92. <el-col :span="12">
  93. <el-form-item label="消缺时间:">
  94. <el-input v-model="form.repairedtime" placeholder="消缺时间" readonly></el-input>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="12">
  98. <el-form-item label="故障时长:">
  99. <el-input v-model="form.degradebugtype" placeholder="故障时长" readonly></el-input>
  100. </el-form-item>
  101. </el-col>
  102. </el-row>
  103. <el-row>
  104. <el-col :span="12">
  105. <el-form-item label="验收人:">
  106. <el-input v-model="form.checkdeptlabornum" placeholder="验收人" readonly></el-input>
  107. </el-form-item>
  108. </el-col>
  109. <el-col :span="12">
  110. <el-form-item label="验收时间:">
  111. <el-input v-model="form.checktime" placeholder="验收时间" readonly></el-input>
  112. </el-form-item>
  113. </el-col>
  114. </el-row>
  115. <el-row>
  116. <el-col :span="24">
  117. <el-form-item label="验收意见:">
  118. <el-input type="textarea" resize="none" :rows="3" v-model="form.checkdeptopinion" placeholder="验收意见"
  119. readonly></el-input>
  120. </el-form-item>
  121. </el-col>
  122. </el-row>
  123. </el-form>
  124. </div>
  125. </div>
  126. <div class="evaluate">
  127. <div class="white">评价</div>
  128. <div class="evaluate-item" :class="(form.rwfpsc > form.rwfppjsc ? ' warColor' : '')">
  129. <div class="evaluate-label">任务分配时长</div>
  130. <el-input v-model="form.rwfpsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  131. <div class="evaluate-unit">min</div>
  132. </div>
  133. <div class="evaluate-item">
  134. <div class="evaluate-label">任务分配平均时长</div>
  135. <el-input v-model="form.rwfppjsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  136. <div class="evaluate-unit">min</div>
  137. </div>
  138. <div class="evaluate-item" :class="(form.ddxcsc > form.ddxcpjsc ? ' warColor' : '')">
  139. <div class="evaluate-label">到达现场时长</div>
  140. <el-input v-model="form.ddxcsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  141. <div class="evaluate-unit">min</div>
  142. </div>
  143. <div class="evaluate-item">
  144. <div class="evaluate-label">到达现场平均时长</div>
  145. <el-input v-model="form.ddxcpjsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  146. <div class="evaluate-unit">min</div>
  147. </div>
  148. <div class="evaluate-item" :class="(form.qxclsc > form.qxclpjsc ? ' warColor' : '')">
  149. <div class="evaluate-label">缺陷处理时长</div>
  150. <el-input v-model="form.qxclsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  151. <div class="evaluate-unit">min</div>
  152. </div>
  153. <div class="evaluate-item">
  154. <div class="evaluate-label">缺陷处理平均时长</div>
  155. <el-input v-model="form.qxclpjsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  156. <div class="evaluate-unit">min</div>
  157. </div>
  158. <div class="evaluate-item" :class="(form.yssc > form.yspjsc ? ' warColor' : '')">
  159. <div class="evaluate-label">验收时长</div>
  160. <el-input v-model="form.yssc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  161. <div class="evaluate-unit">min</div>
  162. </div>
  163. <div class="evaluate-item">
  164. <div class="evaluate-label">验收平均时长</div>
  165. <el-input v-model="form.yspjsc" style="width: 62px;text-align: center;" placeholder="" readonly></el-input>
  166. <div class="evaluate-unit">min</div>
  167. </div>
  168. </div>
  169. <div class="tabs">
  170. <div class="tab-box">
  171. <div class="tab-item" v-for="(tab, index) of tabs" :key="index" :class="{ active: activeTab == index }" @click="selectTab(tab,index)">
  172. <span class="svg-icon svg-icon-md" :class="activeTab == index ? 'svg-icon-green' : 'svg-icon-write'">
  173. <SvgIcon :svgid="tab.icon"></SvgIcon>
  174. </span>
  175. <span>{{ tab.text }}</span>
  176. </div>
  177. </div>
  178. </div>
  179. <defect-elimination-tracking ref="det" :show="false" :formdata="formdata"></defect-elimination-tracking>
  180. <div class="dialog-box">
  181. <el-dialog title="消缺历史" v-model="dialogVisible" width="1200px" height='800px' custom-class="modal"
  182. :close-on-click-modal="false">
  183. <div class="diamain">
  184. <div class="left">
  185. <el-tree :data="data" :props="defaultProps" node-key="id" :default-expand-all="true" custom-class="modal"
  186. @node-click="handleNodeClick"></el-tree>
  187. </div>
  188. <div class="right">
  189. <div class="table-box">
  190. <ComTable :data="tableData" height="700px"></ComTable>
  191. </div>
  192. </div>
  193. </div>
  194. </el-dialog>
  195. </div>
  196. <el-dialog title="查看监控视频" v-model="videoBoxShow" width="80%" height='800px' custom-class="modal"
  197. :close-on-click-modal="true">
  198. <video class="videoPlayer" id="videoPlayer" muted autoplay webkit-playsinline playsinline></video>
  199. </el-dialog>
  200. <el-dialog title="GIS地貌" v-model="gisBoxShow" width="80%" custom-class="modal gisBox" :close-on-click-modal="true">
  201. <iframe width="100%" height="100%" src="http://10.155.32.4:8070/gisweb/ditujiankang.html?LAT=106.23507&LNG=38.48989&userid=1500" sryle="width:100%;height:100%;"></iframe>
  202. </el-dialog>
  203. </div>
  204. </template>
  205. <script>
  206. import ComTable from "@com/coms/table/table.vue";
  207. import SvgIcon from "@com/coms/icon/svg-icon.vue";
  208. import DefectEliminationTracking from "../HealthControl/defect-elimination-tracking.vue"; //手环监控
  209. import $ from 'jquery';
  210. export default {
  211. components: {
  212. SvgIcon, ComTable,
  213. DefectEliminationTracking,
  214. },
  215. props: {
  216. formdata: Object,
  217. },
  218. data () {
  219. return {
  220. gisBoxShow: false,
  221. videoBoxShow: false,
  222. location: '',
  223. tableData: {
  224. column: [
  225. {
  226. name: "消缺描述",
  227. field: "xqms",
  228. is_light: false
  229. },
  230. {
  231. name: "消缺人员",
  232. field: "xqry",
  233. is_light: false
  234. },
  235. {
  236. name: "消缺时间",
  237. field: "xqsj",
  238. is_light: false
  239. },
  240. {
  241. name: "更换部件",
  242. field: "ghbj",
  243. is_light: false
  244. },
  245. {
  246. name: "更换原因",
  247. field: "ghyy",
  248. is_light: false
  249. },
  250. {
  251. name: "更换数量",
  252. field: "ghsl",
  253. is_light: false
  254. },
  255. ],
  256. data: [],
  257. },
  258. data: [{
  259. label: '一级 1',
  260. children: [{
  261. label: '二级 1-1',
  262. children: [{
  263. label: '三级 1-1-1'
  264. }]
  265. }]
  266. }, {
  267. label: '一级 2',
  268. children: [{
  269. label: '二级 2-1',
  270. children: [{
  271. label: '三级 2-1-1'
  272. }]
  273. }, {
  274. label: '二级 2-2',
  275. children: [{
  276. label: '三级 2-2-1'
  277. }]
  278. }]
  279. }, {
  280. label: '一级 3',
  281. children: [{
  282. label: '二级 3-1',
  283. children: [{
  284. label: '三级 3-1-1'
  285. }]
  286. }, {
  287. label: '二级 3-2',
  288. children: [{
  289. label: '三级 3-2-1'
  290. }]
  291. }]
  292. }],
  293. defaultProps: {
  294. children: 'children',
  295. label: 'label'
  296. },
  297. dialogVisible: false,
  298. tabs: [
  299. {
  300. icon: "svg-gis",
  301. text: "GIS地貌",
  302. },
  303. {
  304. icon: "svg-jkp",
  305. text: "手环监控",
  306. },
  307. {
  308. icon: "svg-jk",
  309. text: "监控视频",
  310. },
  311. {
  312. icon: "svg-jk",
  313. text: "消缺历史",
  314. },
  315. ],
  316. activeTab: 0,
  317. svgarr: [
  318. {
  319. svg: "svg-qx-warn",
  320. name: "流程未启动",
  321. },
  322. {
  323. svg: "svg-qx-down",
  324. name: "消缺单已下达",
  325. },
  326. {
  327. svg: "svg-qx-hour-hand",
  328. name: "消缺单处理中",
  329. },
  330. {
  331. svg: "svg-对",
  332. name: "消缺完成",
  333. },
  334. {
  335. svg: "svg-qx-flag",
  336. name: "消缺验收",
  337. },
  338. ],
  339. form: {
  340. wtId: "",
  341. wpId: "",
  342. wpName: "",
  343. tjyy: "",
  344. tjss: null,
  345. tjfs: null,
  346. bugnum: null,
  347. workgroup1: null,
  348. findlabornum: null,
  349. reportlabornum: null,
  350. description: null,
  351. departuretime: null,
  352. arrivaltime: null,
  353. prodtdeptopinion: null,
  354. workleader: null,
  355. repairedtime: null,
  356. repairedcomment: null,
  357. unresolvedbug: null,
  358. checktime: null,
  359. degradebugtype: null,
  360. repairdeptbugtype1: null,
  361. checkdeptlabornum: null,
  362. status: null,
  363. gzpc: null,
  364. gzjx: null,
  365. prodtdepttime: null,
  366. checkdeptopinion: null
  367. },
  368. videoConfigHost: '10.155.32.4:9984', // 视频 host
  369. // videoConfigHost: 'localhost:9984', // 视频 host
  370. videoConfigToken: 'stream-1', // 视频 token
  371. videoConfigStreamprofile: 'Profile_1', // 视频流文件
  372. videoPlayer: null // 视频播放实例
  373. };
  374. },
  375. created () {
  376. this.setData();
  377. },
  378. updated () {
  379. this.setData();
  380. },
  381. onmounted () {
  382. this.cancelPlay();
  383. },
  384. // 函数
  385. methods: {
  386. setData () {
  387. this.form = this.formdata;
  388. this.form.tjss = this.form.tjss
  389. ? new Date(this.form.tjss).formatDate("yyyy-MM-dd hh:mm:ss")
  390. : null;
  391. this.form.prodtdepttime = this.form.prodtdepttime
  392. ? new Date(this.form.prodtdepttime).formatDate("yyyy-MM-dd hh:mm:ss")
  393. : null;
  394. this.form.departuretime = this.form.departuretime
  395. ? new Date(this.form.departuretime).formatDate("yyyy-MM-dd hh:mm:ss")
  396. : null;
  397. this.form.arrivaltime = this.form.arrivaltime
  398. ? new Date(this.form.arrivaltime).formatDate("yyyy-MM-dd hh:mm:ss")
  399. : null;
  400. this.form.repairedtime = this.form.repairedtime
  401. ? new Date(this.form.repairedtime).formatDate("yyyy-MM-dd hh:mm:ss")
  402. : null;
  403. this.form.checktime = this.form.checktime
  404. ? new Date(this.form.checktime).formatDate("yyyy-MM-dd hh:mm:ss")
  405. : null;
  406. },
  407. handleNodeClick (data) {
  408. this.location = data.id
  409. this.searchTab(data.id)
  410. },
  411. DateformatDate (val) {
  412. return new Date(val).formatDate("yyyy-MM-dd hh:mm:ss");
  413. },
  414. showDet () {
  415. this.$refs.det.show();
  416. },
  417. statu (data) {
  418. if (null != data.checktime) {
  419. return "消缺验收";
  420. } else if (
  421. "等待运行验收" == data.status ||
  422. data.status == "集控中心修改检修时间" ||
  423. null != data.repairedtime
  424. ) {
  425. return "消缺完成";
  426. } else if (null != data.departuretime || null != data.arrivaltime) {
  427. return "消缺单处理中";
  428. } else if (
  429. "风机工作票已批准" == data.status ||
  430. data.status == "开风机工作票"
  431. ) {
  432. return "消缺单已下达";
  433. } else if (
  434. null == data.status ||
  435. data.status == "流程未启动" ||
  436. data.status == "流程未启用"
  437. ) {
  438. return "流程未启动";
  439. } else {
  440. return "流程未启动";
  441. }
  442. },
  443. async searchH () {
  444. const { data } = await this.API.requestData({
  445. method: "POST",
  446. subUrl: "/recommen/findLocationTreeByWtId",
  447. data: {
  448. wtId: this.form.wtId,
  449. },
  450. })
  451. this.dialogVisible = true
  452. this.data = data.data
  453. this.location = data.data[0].id
  454. this.searchTab()
  455. },
  456. async searchTab () {
  457. const { data } = await this.API.requestData({
  458. method: "POST",
  459. subUrl: "/recommen/findWobugeqByLocation",
  460. data: {
  461. tablepar: {
  462. pageNum: 1,
  463. pageSize: 10,
  464. },
  465. location: this.location
  466. },
  467. })
  468. this.tableData.data = data.data
  469. },
  470. showVideoBox () {
  471. this.videoBoxShow = true;
  472. this.$nextTick(() => {
  473. this.listenEvent();
  474. this.resetVideo();
  475. });
  476. },
  477. // 销毁播放实例
  478. cancelPlay () {
  479. $('.videoPlayer').attr('poster', "").attr('src', "");
  480. this.videoPlayer && this.videoPlayer.disconnect() && (this.videoPlayer = null);
  481. },
  482. // 监听视频被暂停和被播放
  483. listenEvent () {
  484. let that = this;
  485. //判断设备
  486. if (H5siOS() === true || H5sSafariBrowser() === true) {
  487. $('.videoPlayer').prop('controls', true);
  488. }
  489. //如果是暂停状态,就让它开始;如果是开始就让他暂停。每次开始之前都先清空参数
  490. $('.videoPlayer').on('click', function () {
  491. if ($(this).get(0).paused) {
  492. that.resetVideo();
  493. } else {
  494. that.videoPlayer.disconnect();
  495. $(this).get(0).pause();
  496. this.BASE.showMsg({
  497. type: "success",
  498. msg: "暂停播放"
  499. });
  500. }
  501. });
  502. },
  503. // 重置视频播放状态
  504. resetVideo () {
  505. this.$nextTick(() => {
  506. let videoConfig = {
  507. videoid: 'videoPlayer',//跟上面video标签的id一致
  508. protocol: 'http:', //'http:' or 'https:'
  509. host: this.videoConfigHost, //'localhost:8080'自己内部的网址
  510. rootpath: '/', // '/' or window.location.pathname
  511. token: this.videoConfigToken,//可变参数
  512. // streamprofile: this.videoConfigStreamprofile, // {string} - stream profile, main/sub or other predefine transcoding profile
  513. hlsver: 'v1', //v1 is for ts, v2 is for fmp4
  514. session: 'e312287e-d809-4b4b-a5d6-336e5006199f' //session got from login可变参数
  515. };
  516. this.cancelPlay();
  517. this.videoPlayer = new H5sPlayerRTC(videoConfig);
  518. this.videoPlayer.connect();
  519. this.BASE.showMsg({
  520. type: "success",
  521. msg: "播放组件初始化中...请稍后..."
  522. });
  523. });
  524. },
  525. selectTab: function (tab, index) {
  526. this.activeTab = index;
  527. if (index === 0) {
  528. this.gisBoxShow = true;
  529. } else if (index == 1) {
  530. this.showDet();
  531. } else if (index === 2) {
  532. this.showVideoBox();
  533. }
  534. if (tab.text == '消缺历史') {
  535. this.searchH()
  536. }
  537. },
  538. },
  539. };
  540. </script>
  541. <style lang="less">
  542. .diamain {
  543. width: 100%;
  544. height: 700px;
  545. overflow: hidden;
  546. display: flex;
  547. justify-content: space-between;
  548. .left {
  549. width: 30%;
  550. overflow-y: auto;
  551. }
  552. .right {
  553. width: 68%;
  554. }
  555. }
  556. .track-info {
  557. display: flex;
  558. .form-info {
  559. flex: 0 0 720px;
  560. .work-flow {
  561. height: 132px;
  562. width: 100%;
  563. background: fade(@gray, 20);
  564. margin-bottom: 8px;
  565. padding: 26px 69px;
  566. display: flex;
  567. position: relative;
  568. .work-flow-line {
  569. position: absolute;
  570. width: 600px;
  571. height: 4px;
  572. left: calc(50% - 300px);
  573. top: calc(50% - 11px);
  574. background: @green;
  575. }
  576. .work-flow-item {
  577. flex: 1;
  578. display: flex;
  579. flex-direction: column;
  580. align-items: center;
  581. justify-content: center;
  582. &.active {
  583. .work-flow-icon-item {
  584. .work-flow-icon-o {
  585. border: 1px solid @green;
  586. opacity: 0.4;
  587. }
  588. .work-flow-icon-i {
  589. border: 2px solid @green;
  590. background: linear-gradient(
  591. to bottom,
  592. #1f2b2b 0%,
  593. #1f2b2b 20%,
  594. @green 100%
  595. );
  596. }
  597. .svg-icon {
  598. svg {
  599. use {
  600. fill: @green;
  601. }
  602. }
  603. }
  604. }
  605. .work-flow-text {
  606. color: @green;
  607. }
  608. }
  609. .work-flow-icon-item {
  610. width: 60px;
  611. height: 60px;
  612. position: relative;
  613. .work-flow-icon-o {
  614. position: absolute;
  615. top: 0;
  616. left: 0;
  617. width: 60px;
  618. height: 60px;
  619. border-radius: 50%;
  620. border: 1px solid #b3bdc0;
  621. opacity: 0.4;
  622. }
  623. .work-flow-icon-m {
  624. position: absolute;
  625. top: 1px;
  626. left: 1px;
  627. width: 59px;
  628. height: 59px;
  629. border-radius: 50%;
  630. border: 4px solid #212b2b;
  631. }
  632. .work-flow-icon-i {
  633. position: absolute;
  634. top: 5px;
  635. left: 5px;
  636. width: 50px;
  637. height: 50px;
  638. border-radius: 50%;
  639. border: 2px solid #606769;
  640. background: linear-gradient(
  641. to bottom,
  642. #1f2b2b 0%,
  643. #1f2b2b 20%,
  644. #606769 100%
  645. );
  646. }
  647. .svg-icon {
  648. position: absolute;
  649. width: 26px;
  650. height: 26px;
  651. top: calc(50% - 10px);
  652. left: calc(50% - 13px);
  653. svg {
  654. width: 26px;
  655. height: 26px;
  656. use {
  657. fill: @gray-l;
  658. }
  659. }
  660. }
  661. }
  662. .work-flow-text {
  663. color: @gray-l;
  664. margin-top: 8px;
  665. font-size: @fontsize-s;
  666. }
  667. }
  668. }
  669. }
  670. .evaluate {
  671. flex: 0 0 240px;
  672. margin-left: 30px;
  673. .evaluate-item {
  674. display: flex;
  675. justify-content: space-between;
  676. align-items: center;
  677. margin-top: 8px;
  678. .el-input__inner {
  679. text-align: center;
  680. }
  681. .evaluate-label {
  682. width: 120px;
  683. text-align: right;
  684. }
  685. .evaluate-label,
  686. .evaluate-unit {
  687. font-size: @fontsize;
  688. color: @gray-l;
  689. }
  690. .input-number {
  691. display: inline-block;
  692. width: 62px;
  693. margin: 0 16px;
  694. }
  695. }
  696. }
  697. .tabs {
  698. flex: 0 0 200px;
  699. height: 619px;
  700. margin-left: 20px;
  701. border-left: 1px solid #53626833;
  702. .tab-box {
  703. margin: 1.852vh 2.778vh;
  704. display: inline-block;
  705. z-index: 2;
  706. position: relative;
  707. margin: 26px 0 0 20px;
  708. .tab-item {
  709. display: flex;
  710. align-items: center; // justify-content: center;
  711. font-size: @fontsize-l;
  712. cursor: pointer; // width: 120px;
  713. padding: 8px;
  714. margin-bottom: 16px;
  715. &.active {
  716. color: @green;
  717. position: relative;
  718. background-image: @greenLinearTop;
  719. &::after {
  720. content: '';
  721. position: absolute;
  722. width: 100%;
  723. height: 5px;
  724. border: 1px solid @green;
  725. border-top: 0;
  726. left: 0;
  727. bottom: 0;
  728. box-sizing: border-box;
  729. }
  730. }
  731. .svg-icon {
  732. margin-right: 16px;
  733. }
  734. }
  735. }
  736. }
  737. }
  738. .videoPlayer {
  739. width: 100%;
  740. height: 100%;
  741. object-fit: contain;
  742. cursor: pointer;
  743. }
  744. </style>
  745. <style lang="less">
  746. .evaluate {
  747. .evaluate-item {
  748. .el-input__inner {
  749. padding: 0 15px;
  750. text-align: center;
  751. }
  752. }
  753. .evaluate-item.warColor {
  754. .el-input__inner {
  755. color: #f25656;
  756. }
  757. }
  758. }
  759. .gisBox {
  760. .el-dialog__body {
  761. height: 600px;
  762. }
  763. }
  764. </style>