infotrack2.vue 21 KB

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