robot.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <template>
  2. <div class="robot">
  3. <div class="flex">
  4. <div class="left">
  5. <!-- 人脸识别 -->
  6. <div class="box">
  7. <div class="tab-t">
  8. <div class="tab-title">人脸识别记录</div>
  9. </div>
  10. <div class="box-content">
  11. <div>
  12. <img class="img-size" src="../../assets/u525.png" alt="">
  13. </div>
  14. <div class="person-text">
  15. <p>识别时间:{{dateValue}}</p>
  16. <p>识别地点:1栋3单元 </p>
  17. <p>姓名:张一力</p>
  18. <p>职位:饲养员</p>
  19. <p>体温:36.6℃</p>
  20. </div>
  21. </div>
  22. </div>
  23. <!-- 机器人操控 -->
  24. <div class="control">
  25. <div class="tab-t">
  26. <div class="tab-title">机器人操控</div>
  27. </div>
  28. <div class="box-content">
  29. <div class="control-left">
  30. <img class="img-position img-top" @click="onDirection(1)" src="../../assets/u532.svg" alt="">
  31. <img class="img-position img-right" @click="onDirection(4)" src="../../assets/u532.svg" alt="">
  32. <img class="img-position img-bottom" @click="onDirection(2)" src="../../assets/u532.svg" alt="">
  33. <img class="img-position img-left" @click="onDirection(3)" src="../../assets/u532.svg" alt="">
  34. <button class="button button-red" @click="stop">停止</button>
  35. </div>
  36. <div class="control-right">
  37. <div>
  38. <button class="button button-green" @click="start">自动</button>
  39. <button class="button button-blue">拉近</button>
  40. </div>
  41. <div>
  42. <button class="button button-gray" @click="operation">手动</button>
  43. <button class="button button-blue">拉远</button>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. <!-- 报警信息 -->
  49. <div class="box box_height">
  50. <div class="tab-t">
  51. <div class="tab-title">报警信息</div>
  52. </div>
  53. <div class="call-text">
  54. <p class="call-detail" v-for="(item, i) in arr" :key="i">
  55. <span>{{item.date}}</span>
  56. <span style="padding-left: 15px;">{{item.position}}</span>
  57. <span style="padding-left: 15px;">{{item.asl}}</span>
  58. </p>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="right">
  63. <div class="container">
  64. <div class="container-left">
  65. <div class="line1">
  66. <div class="today">{{date}}</div>
  67. <div class="test">机器人巡查</div>
  68. </div>
  69. <div class="container-content">
  70. <div class="line2">
  71. <select name="1" class="select-robot">
  72. <option value ="1">1号机器人(巡查中-1栋)</option>
  73. <option value ="2">2号机器人(充电中)</option>
  74. <option value="3">3号机器人(故障)</option>
  75. </select>
  76. </div>
  77. <div class="container-video">
  78. <video src="../../assets/robot.mp4" controls style="width: 785px; height: 430px;">您的浏览器暂不支持Video播放</video>
  79. </div>
  80. </div>
  81. </div>
  82. <div class="container-right">
  83. <!-- 温度统计图 -->
  84. <div class="wrapper">
  85. <div class="tab-t">
  86. <div class="tab-title">温度走势图</div>
  87. </div>
  88. <div class="wrapper-content">
  89. <div ref="chartRight1" style="width: 100%; height: 100%"></div>
  90. </div>
  91. </div>
  92. <!-- 湿度统计图 -->
  93. <div class="wrapper">
  94. <div class="tab-t">
  95. <div class="tab-title">湿度走势图</div>
  96. </div>
  97. <div class="wrapper-content">
  98. <div ref="chartRight2" style="width: 100%; height: 100%"></div>
  99. </div>
  100. </div>
  101. <!-- 温度统计图 -->
  102. <div class="wrapper">
  103. <div class="tab-t">
  104. <div class="tab-title">氨气浓度走势图</div>
  105. </div>
  106. <div class="wrapper-content">
  107. <div ref="chartRight3" style="width: 100%; height: 100%"></div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <div class="robot-path">
  113. <div class="robot-title">机器人实时路线</div>
  114. <!-- canvas画图 -->
  115. <div class="robot-canvas">
  116. <robot-canvas ref="rb_canvas"></robot-canvas>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. </template>
  123. <script>
  124. import utils from '../../utils/utils';
  125. import RobotCanvas from '../../components/robotCanvas';
  126. export default {
  127. name: "robot",
  128. components: {
  129. RobotCanvas
  130. },
  131. data() {
  132. return {
  133. optionsWd: {
  134. tooltip: {
  135. trigger: 'axis',
  136. axisPointer: {
  137. animation: false
  138. }
  139. },
  140. xAxis: [
  141. {
  142. type: 'category',
  143. boundaryGap: false,
  144. axisLine: {onZero: true},
  145. data: [],
  146. name: '时间',
  147. nameTextStyle: {
  148. color: '#ffffff',
  149. },
  150. axisLabel: {
  151. color: '#ffffff'
  152. },
  153. axisLine: {
  154. lineStyle: {
  155. color: '#ffffff'
  156. }
  157. }
  158. },
  159. ],
  160. yAxis: [
  161. {
  162. name: '摄氏度:℃',
  163. type: 'value',
  164. max: 35,
  165. nameTextStyle: {
  166. color: '#ffffff'
  167. },
  168. axisLabel: {
  169. color: '#ffffff'
  170. },
  171. axisLine: {
  172. lineStyle: {
  173. color: '#ffffff'
  174. }
  175. }
  176. },
  177. ],
  178. series: [
  179. {
  180. name: '摄氏度:℃',
  181. type: 'line',
  182. symbolSize: 8,
  183. hoverAnimation: false,
  184. data: [15, 20, 20, 21, 22, 26, 24, 28, 25, 26, 21, 22, 23, 24, 26, 26, 26, 24, 25, 22, 20, 19, 18, 25, 26, 27, 26, 25, 25, 21,
  185. 20, 21, 20, 22, 23, 25, 24, 26, 28, 27, 26, 24, 21, 20, 24, 24, 25, 28
  186. ]
  187. },
  188. ]
  189. },
  190. optionsSd: {
  191. tooltip: {
  192. trigger: 'axis',
  193. axisPointer: {
  194. animation: false
  195. }
  196. },
  197. xAxis: [
  198. {
  199. type: 'category',
  200. boundaryGap: false,
  201. axisLine: {onZero: true},
  202. data: ['00:00', '00:30', '01:00', '01:30', "02:00", "02:30", "03:00", "03:30", "04:00", "04:30","05:00","05:30","06:00","06:30","07:00",
  203. "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30",
  204. "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00",
  205. "22:30", "23:00", "23:30"
  206. ],
  207. name: '时间',
  208. nameTextStyle: {
  209. color: '#ffffff',
  210. },
  211. axisLabel: {
  212. color: '#ffffff'
  213. },
  214. axisLine: {
  215. lineStyle: {
  216. color: '#ffffff'
  217. }
  218. }
  219. },
  220. ],
  221. yAxis: [
  222. {
  223. name: 'RH',
  224. type: 'value',
  225. max: 100,
  226. nameTextStyle: {
  227. color: '#ffffff'
  228. },
  229. axisLabel: {
  230. color: '#ffffff'
  231. },
  232. axisLine: {
  233. lineStyle: {
  234. color: '#ffffff'
  235. }
  236. }
  237. },
  238. ],
  239. series: [
  240. {
  241. name: 'RH',
  242. type: 'line',
  243. symbolSize: 8,
  244. hoverAnimation: false,
  245. data: [70, 80, 75, 60, 52, 76, 84, 88, 75, 66, 71, 72, 73, 74, 76, 76, 67, 74, 75, 72, 80, 79, 78, 75, 76, 77, 67, 75, 85, 71,
  246. 70, 71, 70, 72, 73, 75, 74, 76, 78, 77, 76, 74, 71, 70, 74, 74, 77, 78
  247. ]
  248. },
  249. ]
  250. },
  251. optionsAq: {
  252. tooltip: {
  253. trigger: 'axis',
  254. axisPointer: {
  255. animation: false
  256. }
  257. },
  258. xAxis: [
  259. {
  260. type: 'category',
  261. boundaryGap: false,
  262. axisLine: {onZero: true},
  263. data: ['00:00', '00:30', '01:00', '01:30', "02:00", "02:30", "03:00", "03:30", "04:00", "04:30","05:00","05:30","06:00","06:30","07:00",
  264. "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30",
  265. "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00",
  266. "22:30", "23:00", "23:30"
  267. ],
  268. name: '时间',
  269. nameTextStyle: {
  270. color: '#ffffff',
  271. },
  272. axisLabel: {
  273. color: '#ffffff'
  274. },
  275. axisLine: {
  276. lineStyle: {
  277. color: '#ffffff'
  278. }
  279. }
  280. },
  281. ],
  282. yAxis: [
  283. {
  284. name: 'mg/m³',
  285. type: 'value',
  286. max: 5,
  287. nameTextStyle: {
  288. color: '#ffffff'
  289. },
  290. axisLabel: {
  291. color: '#ffffff'
  292. },
  293. axisLine: {
  294. lineStyle: {
  295. color: '#ffffff'
  296. }
  297. }
  298. },
  299. ],
  300. series: [
  301. {
  302. name: 'mg/m³',
  303. type: 'line',
  304. symbolSize: 8,
  305. hoverAnimation: false,
  306. data: [
  307. 0.5, 1.2, 2.8, 3, 2.1, 2.4, 2.3, 1.2, 1.1, 1, 0.8, 2.1, 2.2, 2.3, 2.4, 2.7, 2.1, 1.5, 1.4, 2.3, 2.4, 1.1, 1.2, 1.3, 1.4, 1.6, 2.2,
  308. 2.8, 2.1, 1.5, 1.1, 1.2, 1.2, 1.4, 1.5, 1.1, 0.9, 0.8, 0.7, 0.5, 0.9, 1.2, 1.9, 1.4, 1.5, 1.6, 1.7, 1.5, 1.2, 1
  309. ]
  310. },
  311. ]
  312. },
  313. date: '',
  314. dateValue: '',
  315. arr: [ {date: '10-30 08:38:28', position: '1栋3单元', asl: '1号栏出现猪只体温异常'} ],
  316. }
  317. },
  318. created() {},
  319. methods: {
  320. getEchartData() {
  321. const chartRight1 = this.$refs.chartRight1;
  322. const chartRight2 = this.$refs.chartRight2;
  323. const chartRight3 = this.$refs.chartRight3;
  324. const myChartRight1 = this.$echarts.init(chartRight1);
  325. const myChartRight2 = this.$echarts.init(chartRight2);
  326. const myChartRight3 = this.$echarts.init(chartRight3);
  327. myChartRight1.setOption(this.optionsWd);
  328. myChartRight2.setOption(this.optionsSd);
  329. myChartRight3.setOption(this.optionsAq);
  330. window.addEventListener("resize", function () {
  331. myChartRight1.resize();
  332. myChartRight2.resize();
  333. myChartRight3.resize();
  334. });
  335. this.$on('hook:destroyed:', () => {
  336. window.removeEventListener("resize", function() {
  337. myChartRight1.resize();
  338. myChartRight2.resize();
  339. myChartRight3.resize();
  340. });
  341. })
  342. },
  343. onDirection(data) {
  344. if(data == 1) {
  345. // this.$refs.rb_canvas.goUp();
  346. } else if(data == 2){
  347. // this.$refs.rb_canvas.goBottom();
  348. } else if (data == 3) {
  349. // this.$refs.rb_canvas.goLeft();
  350. } else {
  351. // this.$refs.rb_canvas.goRight();
  352. }
  353. this.$message.error('暂时无法点击!');
  354. },
  355. start() {
  356. // this.$message.error('自动操作暂时关闭!');
  357. this.$refs.rb_canvas.startInterval();
  358. },
  359. stop() {
  360. // this.$message.error('停止操作暂时关闭');
  361. this.$refs.rb_canvas.stopInterval();
  362. },
  363. operation() {
  364. this.$message.error('手动操作暂时关闭!');
  365. },
  366. getRandomIntInclusive(min, max) {
  367. // min = Math.ceil(min);
  368. // max = Math.floor(max);
  369. return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
  370. },
  371. setInter() {
  372. let that = this;
  373. setInterval(() => {
  374. let date = Date.parse(new Date());
  375. let dateNum = utils.timeMount(date);
  376. let num = this.getRandomIntInclusive(1, 3);
  377. let dan = this.getRandomIntInclusive(1, 4);
  378. let position = num + '栋' + dan + '单元';
  379. let asl = num + '号栏出现猪只体温异常';
  380. that.$nextTick(() => {
  381. that.arr.unshift({date: dateNum, position: position, asl: asl});
  382. });
  383. }, 60000);
  384. },
  385. randomData(i) {
  386. let now = new Date();
  387. now = new Date(now - 60000 * i);
  388. let mm = now.getHours() < 10 ? '0' + now.getHours() : now.getHours();
  389. let ss = now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes();
  390. return mm + ':' + ss;
  391. },
  392. wendu() {
  393. return Math.floor(Math.random() * 11) + 18;
  394. },
  395. shidu() {
  396. return Math.floor(Math.random() * 40) + 40;
  397. },
  398. anqi() {
  399. return Math.floor(Math.random() * 6);
  400. },
  401. setTime() {
  402. this.optionsWd.xAxis[0].data= [];
  403. this.optionsWd.series[0].data = [];
  404. for (var i = 0; i <= 10; i++) {
  405. // this.$nextTick(() => {
  406. this.optionsWd.xAxis[0].data.unshift(this.randomData(i));
  407. this.optionsSd.xAxis[0].data = this.optionsWd.xAxis[0].data;
  408. this.optionsAq.xAxis[0].data = this.optionsWd.xAxis[0].data;
  409. // 温度
  410. this.optionsWd.series[0].data.unshift(this.wendu());
  411. // 湿度
  412. this.optionsSd.series[0].data.unshift(this.shidu());
  413. // 氨气
  414. this.optionsAq.series[0].data.unshift(this.anqi());
  415. // })
  416. }
  417. this.getEchartData();
  418. },
  419. setcommit() {
  420. setInterval(() => {
  421. this.setTime();
  422. }, 60000)
  423. }
  424. },
  425. mounted() {
  426. let date = Date.parse(new Date());
  427. this.date = utils.timestamp(date);
  428. let dates = utils.timestamp(date).split('-')[0];
  429. this.dateValue = utils.timeMount(date);
  430. // this.getEchartData();
  431. this.setInter();
  432. this.setTime();
  433. this.setcommit();
  434. },
  435. // 离开这个页面 关掉定时器
  436. beforeRouteLeave (to, from, next) {
  437. this.stop();
  438. next();
  439. }
  440. };
  441. </script>
  442. <style lang="scss" scope>
  443. .robot {
  444. box-sizing: border-box;
  445. flex-grow: 1;
  446. color: #eee;
  447. .button {
  448. width: 95px;
  449. height: 38px;
  450. font-size: 16px;
  451. margin-right: 10px;
  452. margin-bottom: 10px;
  453. color: white;
  454. border: 0;
  455. background-color: transparent;
  456. outline: none;
  457. border-radius: 5px;
  458. cursor: pointer;
  459. }
  460. .flex {
  461. height: calc(100% - 40px);
  462. display: flex;
  463. padding: 20px 20px 0 20px;
  464. .left {
  465. width: 500px;
  466. .box {
  467. border-radius: 20px;
  468. overflow: hidden;
  469. margin-bottom: 30px;
  470. .tab-t {
  471. height: 40px;
  472. position: relative;
  473. line-height: 40px;
  474. padding-left: 80px;
  475. background-color: rgba(14, 30, 81, 1);
  476. .tab-title {
  477. font-size: 18px;
  478. }
  479. .tab-title:before {
  480. /*<!--content: '';-->*/
  481. /*<!--width: 16px;-->*/
  482. /*<!--height: 16px;-->*/
  483. /*<!--background: #1eff00;-->*/
  484. /*<!--border: 1px solid #1eff00;-->*/
  485. /*<!--transform: rotate(-45deg);-->*/
  486. /*<!--position: absolute;-->*/
  487. /*<!--top: 10px;-->*/
  488. /*<!--left: 30px;-->*/
  489. content: "";
  490. width: 14px;
  491. height: 14px;
  492. border-radius: 50%;
  493. position: absolute;
  494. left: 8%;
  495. top: 50%;
  496. background-color: #fff;
  497. transform: translateY(-50%);
  498. -ms-transform: translateY(-50%);
  499. -moz-transform: translateY(-50%);
  500. -webkit-transform: translateY(-50%);
  501. -o-transform: translateY(-50%);
  502. }
  503. }
  504. .box-content {
  505. padding: 10px;
  506. background-color: rgb(13, 25, 67);
  507. text-align: center;
  508. display: flex;
  509. justify-content: center;
  510. align-items: center;
  511. .img-size {
  512. width: 210px;
  513. }
  514. .person-text {
  515. text-align: left;
  516. padding-left: 20px;
  517. color: #81D3F8;
  518. font-size: 20px;
  519. }
  520. }
  521. .call-text {
  522. background-color: rgb(13, 25, 67);
  523. padding: 10px;
  524. overflow-y: scroll;
  525. height: 195px;
  526. .call-detail {
  527. background-color: rgb(6, 10, 45);
  528. color: #F56C6C;
  529. margin-bottom: 10px;
  530. font-size: 20px;
  531. }
  532. }
  533. .call-text::-webkit-scrollbar {
  534. /*滚动条整体样式*/
  535. width : 5px; /*高宽分别对应横竖滚动条的尺寸*/
  536. height: 1px;
  537. }
  538. .call-text::-webkit-scrollbar-thumb {
  539. /*滚动条里面小方块*/
  540. border-radius : 8px;
  541. background-color: #535353;
  542. background-image: -webkit-linear-gradient(
  543. 45deg,
  544. rgba(255, 255, 255, 0.2) 25%,
  545. transparent 25%,
  546. transparent 50%,
  547. rgba(255, 255, 255, 0.2) 50%,
  548. rgba(255, 255, 255, 0.2) 75%,
  549. transparent 75%,
  550. transparent
  551. );
  552. }
  553. .call-text::-webkit-scrollbar-track {
  554. /*滚动条里面轨道*/
  555. box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
  556. /*background : #ededed;*/
  557. border-radius: 10px;
  558. }
  559. }
  560. .box_height {
  561. height: calc(100% - 642px);
  562. margin-bottom: 0;
  563. }
  564. .control {
  565. border-radius: 20px;
  566. overflow: hidden;
  567. margin-bottom: 30px;
  568. .tab-t {
  569. height: 40px;
  570. position: relative;
  571. line-height: 40px;
  572. padding-left: 80px;
  573. background-color: rgba(14, 30, 81, 1);
  574. .tab-title {
  575. font-size: 18px;
  576. }
  577. .tab-title:before {
  578. /*content: '';
  579. width: 16px;
  580. height: 16px;
  581. background: #1eff00;
  582. border: 1px solid #1eff00;
  583. transform: rotate(-45deg);
  584. position: absolute;
  585. top: 10px;
  586. left: 30px;*/
  587. content: "";
  588. width: 14px;
  589. height: 14px;
  590. border-radius: 50%;
  591. position: absolute;
  592. left: 8%;
  593. top: 50%;
  594. background-color: #fff;
  595. transform: translateY(-50%);
  596. -ms-transform: translateY(-50%);
  597. -moz-transform: translateY(-50%);
  598. -webkit-transform: translateY(-50%);
  599. -o-transform: translateY(-50%);
  600. }
  601. }
  602. .box-content {
  603. padding: 30px 15px;
  604. background-color: rgb(13, 25, 67);
  605. display: flex;
  606. .control-left {
  607. width: 55%;
  608. position: relative;
  609. .img-position {
  610. position: absolute;
  611. width: 50px;
  612. cursor: pointer;
  613. }
  614. .img-top {
  615. transform: rotate(90deg);
  616. top: 10px;
  617. left: 130px;
  618. }
  619. .img-right {
  620. transform: rotate(180deg);
  621. right: 45px;
  622. top: 50px;
  623. }
  624. .img-bottom {
  625. transform: rotate(-90deg);
  626. bottom: 20px;
  627. left: 130px;
  628. }
  629. .img-left {
  630. top: 50px;
  631. left: 90px;
  632. }
  633. .button-red {
  634. background-color: #ee0a24;
  635. }
  636. }
  637. .control-right {
  638. padding: 20px 0;
  639. .button-blue {
  640. background-color: rgb(2, 167, 240);
  641. }
  642. .button-gray {
  643. background-color: rgb(170, 170, 170);
  644. }
  645. .button-green {
  646. background-color: #07c160;
  647. }
  648. }
  649. }
  650. }
  651. }
  652. .right {
  653. width: calc(100% - 500px);
  654. .container {
  655. display: flex;
  656. .container-left {
  657. flex-grow: 1;
  658. .line1 {
  659. width: 100%;
  660. /*text-align: center;*/
  661. font-size: 1.3em;
  662. display: flex;
  663. margin-bottom: 10px;
  664. .today {
  665. width: 50%;
  666. padding-left: 5%;
  667. position: relative;
  668. /*box-sizing: content-box;*/
  669. }
  670. .today:after {
  671. content: '';
  672. height: 0px;
  673. width: 52%;
  674. border: 1px solid #06dfff;
  675. position: absolute; /*定位背景横线的位置*/
  676. top: 40%;
  677. left: 40%;
  678. }
  679. .test {
  680. width: 50%;
  681. position: relative;
  682. /*box-sizing: content-box;*/
  683. }
  684. .test:after {
  685. content: '';
  686. height: 0px;
  687. width: 52%;
  688. border: 1px solid #06dfff;
  689. position: absolute; /*定位背景横线的位置*/
  690. top: 40%;
  691. left: 30%;
  692. }
  693. }
  694. .container-content {
  695. box-sizing: border-box;
  696. height: calc(100% - 50px);
  697. padding: 0 20px;
  698. .line2 {
  699. height: 50px;
  700. border-radius: 20px 20px 0 0;
  701. background-color: #0e1e51;
  702. margin-bottom: 5px;
  703. padding-top: 10px;
  704. box-sizing: border-box;
  705. .select-robot {
  706. /*-webkit-appearance:none;*/
  707. /*-webkit-tap-highlight-color: rgba(0, 0, 0, 0);*/
  708. height: 35px;
  709. margin-left: 50px;
  710. border: solid 1px #000;
  711. /*很关键:将默认的select选择框样式清除*/
  712. /*appearance:none;*/
  713. /*-moz-appearance:none;*/
  714. /*-webkit-appearance:none;*/
  715. /*outline: none;*/
  716. /*加padding防止文字覆盖*/
  717. padding-right: 14px;
  718. padding-left: 15px;
  719. /*height: 40px;*/
  720. width: 200px;
  721. margin-right: 20px;
  722. background-color: #393d41;
  723. cursor: pointer;
  724. color: #ccc;
  725. option {
  726. background-color: #ffffff;
  727. padding: 10px 0;
  728. color: #ddd;
  729. }
  730. }
  731. }
  732. .container-video {
  733. height: calc(100% - 55px);
  734. background-color: #0d1943;
  735. border-radius: 0 0 20px 20px;
  736. box-sizing: border-box;
  737. padding: 20px;
  738. }
  739. }
  740. }
  741. .container-right {
  742. width: 500px;
  743. .wrapper {
  744. border-radius: 6px;
  745. height: 175px;
  746. /*background-color: #001346;*/
  747. overflow: hidden;
  748. margin-bottom: 10px;
  749. .tab-t {
  750. height: 40px;
  751. position: relative;
  752. line-height: 40px;
  753. padding-left: 80px;
  754. background-color: rgba(14, 30, 81, 1);
  755. .tab-title {
  756. font-size: 18px;
  757. }
  758. .tab-title:before {
  759. /*content: '';
  760. width: 8px;
  761. height: 8px;
  762. background: #1eff00;
  763. border: 1px solid #1eff00;
  764. transform: rotate(-45deg);
  765. position: absolute;
  766. top: 15px;
  767. left: 50px;*/
  768. content: "";
  769. width: 14px;
  770. height: 14px;
  771. border-radius: 50%;
  772. position: absolute;
  773. left: 8%;
  774. top: 50%;
  775. background-color: #fff;
  776. transform: translateY(-50%);
  777. -ms-transform: translateY(-50%);
  778. -moz-transform: translateY(-50%);
  779. -webkit-transform: translateY(-50%);
  780. -o-transform: translateY(-50%);
  781. }
  782. }
  783. .wrapper-content {
  784. height: calc(100% - 20px);
  785. background-color: #0d1943;
  786. position: relative;
  787. }
  788. }
  789. }
  790. }
  791. .robot-path {
  792. height: 330px;
  793. padding: 0 0 0 20px;
  794. .robot-title {
  795. height: 30px;
  796. background-color: rgb(14, 30, 81);
  797. line-height: 30px;
  798. padding-left: 50px;
  799. }
  800. .robot-canvas {
  801. height: 280px;
  802. background-color: #0d1943;
  803. padding-top: 10px;
  804. position: relative;
  805. .canvas {
  806. width: 1200px;
  807. height: 100%;
  808. position: absolute;
  809. left: 90px;
  810. top: 10px;
  811. }
  812. }
  813. }
  814. }
  815. }
  816. }
  817. option{
  818. -moz-appearance:none; /* Firefox */
  819. -webkit-appearance:none; /* Safari 和 Chrome */
  820. appearance:none;
  821. }
  822. /* --背景色字体颜色--*/
  823. option:hover{
  824. color:#fff;
  825. background-color:#1E90FF;
  826. }
  827. </style>