DataDetails.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. <template>
  2. <div>
  3. <el-breadcrumb separator-class="el-icon-arrow-right">
  4. <el-breadcrumb-item>测报系统</el-breadcrumb-item>
  5. <el-breadcrumb-item :to="{ path: '/index/cbd' }">虫情测报</el-breadcrumb-item>
  6. <el-breadcrumb-item>数据详情</el-breadcrumb-item>
  7. </el-breadcrumb>
  8. <div class="equipInfo">
  9. <div class="equipMsg">
  10. <span>设备ID:{{this.$route.query.id}}</span>
  11. <span>设备名称:{{this.$route.query.name || '无'}}</span>
  12. <span>位置:{{this.$route.query.address || "无"}}</span>
  13. </div>
  14. <DateSearch @dateChange="dateChange"></DateSearch>
  15. </div>
  16. <div class="ctrl-check">
  17. <el-button type="primary" size="mini" @click="refresh">刷新</el-button>
  18. <!-- <el-button type="primary" size="mini" @click="lookSIMCode('sim')">SIM 卡</el-button> -->
  19. </div>
  20. <!-- 统计图 -->
  21. <el-row :gutter="10">
  22. <el-col :md="24" :lg="15">
  23. <el-card class="box-card">
  24. <div class="charts">
  25. <template v-if="Object.keys(options).length>0">
  26. <highcharts :options="options"></highcharts>
  27. </template>
  28. <template v-else>
  29. <div style="text-align:center;font-size:20px;line-height:360px">暂无数据</div>
  30. </template>
  31. </div>
  32. </el-card>
  33. </el-col>
  34. <el-col :md="24" :lg="9">
  35. <el-card class="box-card">
  36. <el-row :gutter="10">
  37. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  38. <div class="equipStatus">
  39. <div class="equipIcon">
  40. <img src="@/assets/images/forecasting/cbd/staticIcon1.png" alt />
  41. </div>
  42. <div class="equipParams">
  43. <strong>{{equipStatus.device_status?"在线":"离线"}}</strong>
  44. <p>在线状态</p>
  45. </div>
  46. </div>
  47. </el-col>
  48. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  49. <div class="equipStatus">
  50. <div class="equipIcon">
  51. <img src="@/assets/images/forecasting/cbd/staticIcon2.png" alt />
  52. </div>
  53. <div class="equipParams">
  54. <strong>{{equipStatus.ts?"时控":"光控"}}</strong>
  55. <p>定时模式</p>
  56. </div>
  57. </div>
  58. </el-col>
  59. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  60. <div class="equipStatus">
  61. <div class="equipIcon">
  62. <img src="@/assets/images/forecasting/cbd/staticIcon3.png" alt />
  63. </div>
  64. <div class="equipParams">
  65. <strong>{{equipStatus.gs?"落虫":"排水"}}</strong>
  66. <p>通道状态</p>
  67. </div>
  68. </div>
  69. </el-col>
  70. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  71. <div class="equipStatus">
  72. <div class="equipIcon">
  73. <img src="@/assets/images/forecasting/cbd/staticIcon4.png" alt />
  74. </div>
  75. <div class="equipParams">
  76. <strong>{{equipStatus.hs?"加热":"正常"}}</strong>
  77. <p>加热状态</p>
  78. </div>
  79. </div>
  80. </el-col>
  81. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  82. <div class="equipStatus">
  83. <div class="equipIcon">
  84. <img src="@/assets/images/forecasting/cbd/staticIcon5.png" alt />
  85. </div>
  86. <div class="equipParams">
  87. <strong>{{equipStatus.upds?"打开":"关闭"}}</strong>
  88. <p>上仓门</p>
  89. </div>
  90. </div>
  91. </el-col>
  92. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  93. <div class="equipStatus">
  94. <div class="equipIcon">
  95. <img src="@/assets/images/forecasting/cbd/staticIcon7.png" alt />
  96. </div>
  97. <div class="equipParams">
  98. <strong>{{equipStatus.csq}}</strong>
  99. <p>信号强度</p>
  100. </div>
  101. </div>
  102. </el-col>
  103. <el-col :xs="12" :sm="12" :md="6" :lg="12">
  104. <div class="equipStatus">
  105. <div class="equipIcon">
  106. <img src="@/assets/images/forecasting/cbd/staticIcon8.png" alt />
  107. </div>
  108. <div class="equipParams">
  109. <strong>{{equipStatus.dver}}</strong>
  110. <p>设备版本</p>
  111. </div>
  112. </div>
  113. </el-col>
  114. </el-row>
  115. </el-card>
  116. </el-col>
  117. </el-row>
  118. <div class="dataTableSearch">
  119. <div>
  120. <!-- <el-button type="primary" size="mini">导出</el-button> -->
  121. </div>
  122. </div>
  123. <el-card class="box-card" v-if="showControl">
  124. <el-table :data="tableData" stripe style="width: 100%">
  125. <el-table-column
  126. v-for="(item,index) in tableHeadTxt"
  127. :key="index"
  128. :prop="item[1]"
  129. :label="item[0]"
  130. >
  131. <template slot-scope="scope">{{scope.row[scope.column.property]}}</template>
  132. </el-table-column>
  133. </el-table>
  134. <el-pagination
  135. background
  136. layout="prev, pager, next"
  137. :total="total"
  138. :current-page="queryInfo.page"
  139. @current-change="changePage"
  140. ></el-pagination>
  141. </el-card>
  142. <!-- SIM卡对话框 -->
  143. <el-dialog title="SIM卡" :visible.sync="simCodeVisible" width="30%">
  144. <template>
  145. <el-tabs v-loading="simLoading" element-loading-text="数据请求中" v-model="activeName" @tab-click="handleClick">
  146. <el-tab-pane label="SIM卡流量" name="sim">
  147. <div class="simCodeBox">
  148. <div>
  149. <span class="simCodeTitle">ICCID:</span>
  150. <div>{{sim.iccid}}</div>
  151. </div>
  152. <div>
  153. <span class="simCodeTitle">状态:</span>
  154. <div>{{sim.account_status | simStatus}}</div>
  155. </div>
  156. <div>
  157. <span class="simCodeTitle">套餐:</span>
  158. <div>
  159. <el-progress :show-text="false" :percentage="100"></el-progress>
  160. </div>
  161. <span>{{sim.data_plan}}MB</span>
  162. </div>
  163. <div>
  164. <span class="simCodeTitle">已用流量:</span>
  165. <div>
  166. <template v-if="!isNaN(data_usage_Per)">
  167. <el-progress :show-text="false" :percentage="data_usage_Per"></el-progress>
  168. </template>
  169. </div>
  170. <span>{{sim.data_usage}}MB</span>
  171. </div>
  172. <div>
  173. <span class="simCodeTitle">剩余流量:</span>
  174. <div>
  175. <template v-if="!isNaN(data_balance_per)">
  176. <el-progress :show-text="false" :percentage="data_balance_per"></el-progress>
  177. </template>
  178. </div>
  179. <span>{{sim.data_balance}}MB</span>
  180. </div>
  181. <div>
  182. <span class="simCodeTitle">到期时间:</span>
  183. <div>{{sim.expiry_date*1000 | formatTime}}</div>
  184. </div>
  185. <div class="operateBtn">
  186. <el-button size="mini" @click="simCodeVisible=false">关闭</el-button>
  187. </div>
  188. </div>
  189. </el-tab-pane>
  190. <el-tab-pane label="海康SIM卡流量" name="hksim" v-if="showHksimFlag">
  191. <div class="simCodeBox">
  192. <div>
  193. <span class="simCodeTitle">ICCID:</span>
  194. <div>{{hksim.iccid}}</div>
  195. </div>
  196. <div>
  197. <span class="simCodeTitle">状态:</span>
  198. <div>{{hksim.account_status | simStatus}}</div>
  199. </div>
  200. <div>
  201. <span class="simCodeTitle">套餐:</span>
  202. <div>
  203. <el-progress :show-text="false" :percentage="100"></el-progress>
  204. </div>
  205. <span>{{hksim.data_plan}}MB</span>
  206. </div>
  207. <div>
  208. <span class="simCodeTitle">已用流量:</span>
  209. <div>
  210. <template v-if="!isNaN(hkdata_usage_Per)">
  211. <el-progress :show-text="false" :percentage="hkdata_usage_Per"></el-progress>
  212. </template>
  213. </div>
  214. <span>{{hksim.data_usage}}MB</span>
  215. </div>
  216. <div>
  217. <span class="simCodeTitle">剩余流量:</span>
  218. <div>
  219. <template v-if="!isNaN(hkdata_balance_per)">
  220. <el-progress :show-text="false" :percentage="hkdata_balance_per"></el-progress>
  221. </template>
  222. </div>
  223. <span>{{hksim.data_balance}}MB</span>
  224. </div>
  225. <div>
  226. <span class="simCodeTitle">到期时间:</span>
  227. <div>{{hksim.expiry_date*1000 | formatTime}}</div>
  228. </div>
  229. <div>
  230. <span class="simCodeTitle">更换ICCID:</span>
  231. <div>
  232. <el-input type="number" v-model="hksiminp" placeholder="请输入ICCID"></el-input>
  233. </div>
  234. </div>
  235. <div class="operateBtn">
  236. <el-button type="primary" size="mini" @click="changeHkSim">确定</el-button>
  237. <el-button size="mini" @click="simCodeVisible=false">取消</el-button>
  238. </div>
  239. </div>
  240. </el-tab-pane>
  241. </el-tabs>
  242. </template>
  243. </el-dialog>
  244. </div>
  245. </template>
  246. <script>
  247. import DateSearch from '@/components/DateSearch'
  248. export default {
  249. data() {
  250. return {
  251. // 请求sim卡获取到需要回显的数据
  252. simLoading:true, //sim卡加载loading
  253. showHksimFlag:true, //是否显示hksim卡标识
  254. simCodeVisible: false,
  255. simFlag:true, //是否重复加载hksim卡
  256. sim: {
  257. iccid: '',
  258. account_status: 0, //卡状态 0-7 未知 测试期 沉默期 使用中 停机 停机保号 预销号 销号
  259. data_plan: 0, //套餐大小
  260. data_usage: 0, //当月用量
  261. data_balance: 0, //剩余流量
  262. expiry_date: 0 //到期日期
  263. },
  264. hksimFlag:true, //是否重复加载hksim卡
  265. hksim: {
  266. iccid: '',
  267. account_status: 0, //卡状态 0-7 未知 测试期 沉默期 使用中 停机 停机保号 预销号 销号
  268. data_plan: 0, //套餐大小
  269. data_usage: 0, //当月用量
  270. data_balance: 0, //剩余流量
  271. expiry_date: 0 //到期日期
  272. },
  273. hksiminp:'',
  274. timeRange: '', //时间范围picker
  275. btnSelected: null, //时间按钮高亮
  276. dataList: [], //所有数据
  277. options: {},
  278. // 状态信息
  279. equipStatus: {},
  280. // 统计图表信息
  281. equipChartData: [],
  282. //总数据条数
  283. total: 0,
  284. // 动态表头
  285. tableHeadTxt: [
  286. ['环境温度(°C)', 'at'],
  287. ['环境湿度(%)', 'ah'],
  288. ['加热仓温度(°C)', 'hrt'],
  289. ['雨控状态', 'rps'],
  290. ['温控状态', 'tps'],
  291. ['光控状态', 'lps'],
  292. ['电池电压(V)', 'vbat'],
  293. ['上报时间', 'addtime']
  294. ],
  295. // 表格数据
  296. tableData: [],
  297. timeRange: '',
  298. queryInfo: {
  299. begin: '',
  300. end: '',
  301. e_id: this.$route.query.e_id,
  302. page: 1
  303. },
  304. //图表实时否有数据
  305. isEchartData: true,
  306. //表格和图表按钮样式切换参数
  307. display: '0', //0代表表格、1代表图表
  308. // 表格和图表显示切换控制
  309. showControl: true,
  310. //echarts图表参数
  311. echartOptions: [],
  312. // 动态表头
  313. tableHead: [],
  314. // 表格数据
  315. hisData: [],
  316. simCodeDialogVisible: false,
  317. f_id: '',
  318. // sim卡切换状态
  319. activeName: 'sim'
  320. }
  321. },
  322. filters: {
  323. simStatus(val) {
  324. switch (val) {
  325. case 0:
  326. return '未知'
  327. case 1:
  328. return '测试期'
  329. case 2:
  330. return '沉默期'
  331. case 3:
  332. return '使用中'
  333. case 4:
  334. return '停机'
  335. case 5:
  336. return '停机保号'
  337. case 6:
  338. return '预销号'
  339. case 7:
  340. return '销号'
  341. }
  342. }
  343. },
  344. computed: {
  345. data_usage_Per: function () {
  346. let aa = Number(this.sim.data_usage / this.sim.data_plan) * 100
  347. return aa
  348. },
  349. data_balance_per: function () {
  350. let aa = Number(this.sim.data_balance / this.sim.data_plan) * 100
  351. return aa
  352. },
  353. hkdata_usage_Per: function () {
  354. let aa = Number(this.hksim.data_usage / this.hksim.data_plan) * 100
  355. return aa
  356. },
  357. hkdata_balance_per: function () {
  358. let aa = Number(this.hksim.data_balance / this.hksim.data_plan) * 100
  359. return aa
  360. }
  361. },
  362. mounted() {
  363. this.getEquipStatus()
  364. },
  365. methods: {
  366. //获取折线图数据
  367. getChartLine() {
  368. this.$axios({
  369. method: 'POST',
  370. url: '/cbd_report_detail_chart',
  371. data: this.qs.stringify({
  372. req: 'filter',
  373. begin: this.queryInfo.begin,
  374. end: this.queryInfo.end,
  375. id: this.$route.query.id
  376. })
  377. }).then((res) => {
  378. if(res.data.length>0){
  379. var at = [],ah = [];
  380. for(var i = 0;i<res.data.length;i++){
  381. at.push([this.returnTime(res.data[i].tim),res.data[i].at])
  382. ah.push([this.returnTime(res.data[i].tim),res.data[i].ah])
  383. if(i == res.data.length-1){
  384. this.options = {
  385. chart: {
  386. zoomType: 'x',
  387. height: 360,
  388. },
  389. title: {
  390. text: '环境温湿度',
  391. align: 'left'
  392. },
  393. subtitle: {
  394. text: ''
  395. },
  396. xAxis: {
  397. crosshair: true, //十字基准线
  398. type: 'datetime',
  399. dateTimeLabelFormats: {
  400. //根据时间间距X轴自动显示哪种格式
  401. millisecond: '%H:%M:%S.%L',
  402. second: '%H:%M:%S',
  403. minute: '%H:%M',
  404. hour: '%H:%M',
  405. day: '%m-%d',
  406. week: '%m-%d',
  407. month: '%Y-%m',
  408. year: '%Y'
  409. }
  410. },
  411. yAxis: {
  412. title: {
  413. text: ''
  414. }
  415. },
  416. legend: {
  417. // layout: 'vertical',
  418. align: 'right',
  419. verticalAlign: 'top'
  420. },
  421. plotOptions: {
  422. series: {
  423. label: {
  424. connectorAllowed: false
  425. },
  426. pointStart: 2010
  427. }
  428. },
  429. series: [
  430. {
  431. name: '环境湿度',
  432. data: ah
  433. },
  434. {
  435. name: '环境温度',
  436. data: at
  437. }
  438. ],
  439. colors: ['#00e29d', '#6cbbff', '#ff3f3f'],
  440. credits: {
  441. //去掉默认的highcharts.com
  442. enabled: false
  443. },
  444. tooltip: {
  445. // crosshairs: true,
  446. shared: true, //折线共享
  447. headerFormat: '<b>{point.x:%Y-%m-%e %H:%M:%S}</b><br>'
  448. },
  449. responsive: {
  450. rules: [
  451. {
  452. condition: {
  453. maxWidth: 500
  454. },
  455. chartOptions: {
  456. legend: {
  457. layout: 'horizontal',
  458. align: 'center',
  459. verticalAlign: 'bottom'
  460. }
  461. }
  462. }
  463. ]
  464. }
  465. }
  466. }
  467. }
  468. }else{
  469. this.options = {};
  470. }
  471. })
  472. },
  473. // 返回时间戳
  474. returnTime(time) {
  475. var thisTime = time.replace(/-/g, '/');
  476. var time = new Date(thisTime);
  477. var timestamp = time.getTime() + 8 * 3600000;
  478. return timestamp;
  479. },
  480. // 获取状态信息
  481. getEquipStatus() {
  482. this.$axios({
  483. method: 'POST',
  484. url: '/equipmanage_cbd_detail',
  485. data: this.qs.stringify({
  486. id: this.$route.query.id
  487. })
  488. }).then((res) => {
  489. var datStr = res.data[0].cbd_status;
  490. var dat = eval('('+datStr+')');
  491. this.equipStatus = {
  492. dver:dat.dver,
  493. csq:dat.csq,
  494. upds:dat.upds,
  495. hs:dat.hs,
  496. gs:dat.gs,
  497. ts:dat.ts,
  498. device_status:dat.is_online,
  499. };
  500. })
  501. },
  502. dateChange(data) {
  503. this.queryInfo.page = 1
  504. this.queryInfo.begin = new Date(data.begin*1000).toLocaleDateString().replace(/\//g,'-');
  505. this.queryInfo.end = new Date(data.end*1000).toLocaleDateString().replace(/\//g,'-');
  506. this.getChartLine()
  507. this.getHisDataList()
  508. },
  509. //获取表格数据
  510. getHisDataList() {
  511. this.$axios({
  512. method: 'POST',
  513. url: '/cbd_report_detail',
  514. data: this.qs.stringify({
  515. page: this.queryInfo.page,
  516. req: 'filter',
  517. id: this.$route.query.id,
  518. begin: this.queryInfo.begin,
  519. end: this.queryInfo.end
  520. })
  521. }).then((res) => {
  522. this.tableData = []
  523. this.total = res.data.nums
  524. var dat = res.data.dat
  525. for (var i = 0; i < dat.length; i++) {
  526. var cbd_data = eval('('+dat[i].cbd_data+')')
  527. var rps = cbd_data.rps == 0 ? '正常' : '雨控';
  528. var tps = cbd_data.tps == 0 ? '正常' : '温控';
  529. var lps = cbd_data.lps == 0 ? '正常' : '光控';
  530. this.tableData.push({
  531. at:cbd_data.at,
  532. ah:cbd_data.ah,
  533. hrt:cbd_data.hrt,
  534. rps:rps,
  535. tps:tps,
  536. lps:lps,
  537. vbat:cbd_data.vbat,
  538. addtime:dat[i].upl_time
  539. })
  540. }
  541. })
  542. },
  543. //改变page
  544. changePage(val) {
  545. this.queryInfo.page = val
  546. this.getHisDataList()
  547. },
  548. // SIM卡
  549. lookSIMCode(flag) {
  550. this.simLoading = true;
  551. this.simCodeVisible = true
  552. if(flag == 'sim'){
  553. if(!this.simFlag){
  554. this.simLoading = false;
  555. return false;
  556. }
  557. }
  558. this.$axios({
  559. method: 'post',
  560. url: '/api_gateway?method=forecast.send_control.device_sim',
  561. data: this.qs.stringify({
  562. d_id: this.queryInfo.d_id,
  563. type:flag
  564. })
  565. }).then((res) => {
  566. if (res.data.message == '') {
  567. this.sim.iccid = res.data.data[0].iccid
  568. this.$axios({
  569. method: 'POST',
  570. url: '/api_gateway?method=forecast.send_control.sim_query',
  571. data: this.qs.stringify({
  572. iccid: this.sim.iccid
  573. })
  574. }).then((res) => {
  575. let data = eval('(' + res.data.data.data + ')')
  576. if (data.code!=0){
  577. this.$message({
  578. type: 'info',
  579. message: data.msg
  580. });
  581. this.hksim = {
  582. iccid: '',
  583. account_status: 0, //卡状态 0-7 未知 测试期 沉默期 使用中 停机 停机保号 预销号 销号
  584. data_plan: 0, //套餐大小
  585. data_usage: 0, //当月用量
  586. data_balance: 0, //剩余流量
  587. expiry_date: 0 //到期日期
  588. }
  589. console.log(this.hksim)
  590. }
  591. if (res.data.message == '') {
  592. console.log(data)
  593. let cardInfo = data.data
  594. this.simLoading = false;
  595. if(flag == 'sim'){
  596. this.sim = cardInfo
  597. this.simFlag = false;
  598. }else{
  599. if(cardInfo){
  600. this.hksim = cardInfo
  601. }else{
  602. this.hksim = {
  603. iccid: '',
  604. account_status: 0, //卡状态 0-7 未知 测试期 沉默期 使用中 停机 停机保号 预销号 销号
  605. data_plan: 0, //套餐大小
  606. data_usage: 0, //当月用量
  607. data_balance: 0, //剩余流量
  608. expiry_date: 0 //到期日期
  609. }
  610. }
  611. }
  612. }
  613. })
  614. }
  615. })
  616. },
  617. //sim卡状态
  618. handleClick(tab, event) {
  619. console.log(event)
  620. console.log(event.target)
  621. console.log(event.target.innerText)
  622. if((event.target.innerText == '海康SIM卡流量') && (this.hksimFlag) ){
  623. this.hksimFlag = false;
  624. console.log(event.target.innerText)
  625. this.lookSIMCode('hksim');
  626. }
  627. },
  628. //绑定更换海康SIM
  629. changeHkSim(){
  630. if(!this.hksiminp){}
  631. this.$axios({
  632. method: 'post',
  633. url: '/api_gateway?method=forecast.send_control.device_sim',
  634. data: this.qs.stringify({
  635. d_id: this.queryInfo.d_id,
  636. iccid: this.hksiminp,
  637. type:'change'
  638. })
  639. }).then((res) => {
  640. this.hksiminp = '';
  641. if (res.data.data == '1') {
  642. this.lookSIMCode('hksim')
  643. }
  644. })
  645. },
  646. //刷新按钮
  647. refresh() {
  648. this.$axios({
  649. method: 'POST',
  650. url: '/cbd_mqtt',
  651. data: this.qs.stringify({
  652. req: 'read',
  653. topicid: this.$route.query.id,
  654. kind: 'status'
  655. })
  656. }).then((res) => {
  657. if (res.data == 0) {
  658. this.$message.success('刷新成功')
  659. } else {
  660. this.$message.err('刷新失败')
  661. }
  662. })
  663. }
  664. },
  665. components: {
  666. DateSearch
  667. }
  668. }
  669. </script>
  670. <style lang='less' scoped>
  671. .equipInfo {
  672. display: flex;
  673. justify-content: space-between;
  674. margin-bottom: 15px;
  675. .equipMsg {
  676. font-size: 14px;
  677. color: #3d3d3d;
  678. }
  679. }
  680. .ctrl-check {
  681. margin-bottom: 20px;
  682. }
  683. .time-check {
  684. display: flex;
  685. justify-content: space-between;
  686. .el-button {
  687. border-radius: 30px;
  688. }
  689. .el-input__inner {
  690. width: 222px;
  691. }
  692. }
  693. .charts {
  694. height: 360px;
  695. highcharts{
  696. height: 360px;
  697. }
  698. }
  699. .equipStatus {
  700. display: flex;
  701. justify-content: center;
  702. margin: 10px 0;
  703. .equipIcon {
  704. margin-right: 14%;
  705. }
  706. .equipParams {
  707. min-width: 80px;
  708. line-height: 27px;
  709. p {
  710. color: #a6a6a6;
  711. }
  712. }
  713. }
  714. .dataTableSearch {
  715. display: flex;
  716. justify-content: space-between;
  717. margin: 20px 0;
  718. .el-input__inner {
  719. width: 222px;
  720. }
  721. }
  722. .echarts {
  723. width: 100%;
  724. height: 300px;
  725. }
  726. .simCodeBox {
  727. > div {
  728. line-height: 40px;
  729. display: flex;
  730. align-content: center;
  731. .simCodeTitle {
  732. width: 100px;
  733. text-align: right;
  734. font-size: 14px;
  735. color: #333;
  736. }
  737. > div {
  738. flex: 1;
  739. .el-progress {
  740. margin-top: 17px;
  741. }
  742. }
  743. span {
  744. width: 85px;
  745. font-size: 12px;
  746. padding-left: 3px;
  747. color: #909090;
  748. }
  749. .el-input {
  750. width: 60%;
  751. }
  752. }
  753. .operateBtn {
  754. display: block;
  755. text-align: right;
  756. }
  757. }
  758. </style>