dataLock.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173
  1. <template>
  2. <view>
  3. <u-navbar :title="title" :backIconColor="'#ffffff'" title-color="#ffffff"
  4. :background="backgroundObj"></u-navbar>
  5. <view class="gradient-header">
  6. <view class="jpback">
  7. </view>
  8. </view>
  9. <view class="main">
  10. <view class="statistics ">
  11. <view class="data1">
  12. <view class="item">
  13. <view class="line">
  14. <view class="name">
  15. {{info.name}}
  16. </view>
  17. <view class="item-tags">
  18. <view class="tag tag1" :class="'typeN typeN'+info.type">
  19. {{info.typeN}}
  20. </view>
  21. <view class="tag" :class="'statusN statusN'+info.status">
  22. {{info.statusN}}
  23. </view>
  24. <view class="tag" :class="'lockStatusN lockStatusN'+info.lockStatus">
  25. {{info.lockStatusN}}
  26. </view>
  27. </view>
  28. </view>
  29. <view class="line">
  30. 编号:{{info.lockNo}}
  31. </view>
  32. </view>
  33. <view class="value" v-if="0">
  34. <u-button type="primary" size="mini" shape="circle">
  35. <img class="img" src="@/assets/img/button/lock.svg" alt="">
  36. 降锁
  37. </u-button>
  38. </view>
  39. </view>
  40. </view>
  41. <view class=" no_statistics">
  42. <view class="data2">
  43. <view class="top">
  44. <view class="item">
  45. <view class="name">
  46. 停车时长
  47. </view>
  48. <view class="value">
  49. 5h13m
  50. </view>
  51. </view>
  52. <view class="item">
  53. <view class="name">
  54. 使用率
  55. </view>
  56. <view class="value">
  57. 77.22%
  58. </view>
  59. </view>
  60. <view class="item">
  61. <view class="name">
  62. 异常次数
  63. </view>
  64. <view class="value">
  65. 2
  66. </view>
  67. </view>
  68. </view>
  69. <view class="body">
  70. <u-radio-group v-model="radiovalue" @change="radioGroupChange">
  71. <u-radio @change="radioChange" v-for="(item, index) in radiolist" :key="index"
  72. :name="item.value">
  73. {{item.name}}
  74. </u-radio>
  75. </u-radio-group>
  76. </view>
  77. </view>
  78. </view>
  79. <view class="statistics ">
  80. <view class="title">
  81. <view class="icon">
  82. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  83. </view>
  84. <view class="text">
  85. <view>车位平均占用率(%)</view>
  86. <view class="tag">2025年1月<u-icon name="arrow-down"></u-icon></view>
  87. </view>
  88. </view>
  89. <view class="contentBody">
  90. <jpContent :status="jpContentMap.body2">
  91. <view class="body2lineChart">
  92. <view id="body2line1" class="body2line">
  93. </view>
  94. </view>
  95. </jpContent>
  96. </view>
  97. </view>
  98. <view class="statistics ">
  99. <view class="title">
  100. <view class="icon">
  101. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  102. </view>
  103. <view class="text">
  104. <view>地锁历史异常状态</view>
  105. </view>
  106. </view>
  107. <view class="contentBody">
  108. <jpContent :status="jpContentMap.body1">
  109. <view class="body1pieChart">
  110. <view id="body1pie1" class="body1pie">
  111. </view>
  112. </view>
  113. </jpContent>
  114. </view>
  115. </view>
  116. <view class="statistics ">
  117. <view class="title">
  118. <view class="icon">
  119. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  120. </view>
  121. <view class="text">
  122. <view>高频使用时段分布</view>
  123. </view>
  124. </view>
  125. <view class="contentBody">
  126. <jpContent :status="jpContentMap.body3">
  127. <view class="body3barChart">
  128. <view id="body3bar1" class="body3bar">
  129. </view>
  130. </view>
  131. </jpContent>
  132. </view>
  133. </view>
  134. <view class="statistics ">
  135. <view class="title">
  136. <view class="icon">
  137. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  138. </view>
  139. <view class="text">
  140. <view>用户停留时长分群特征</view>
  141. </view>
  142. </view>
  143. <view class="contentBody">
  144. <jpContent :status="jpContentMap.body4">
  145. <view class="body4pieChart">
  146. <view id="body4pie1" class="body4pie">
  147. </view>
  148. </view>
  149. </jpContent>
  150. </view>
  151. </view>
  152. <view class="statistics ">
  153. <view class="title">
  154. <view class="icon">
  155. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  156. </view>
  157. <view class="text">
  158. <view>高频使用用户TOP5</view>
  159. </view>
  160. </view>
  161. <view class="contentBody">
  162. <jpContent :status="jpContentMap.body5">
  163. <view class="body5data">
  164. <view class="line">
  165. <view class="data">
  166. <view class="item">
  167. 王二
  168. </view>
  169. <view class="value">
  170. 鄂DDT1268
  171. </view>
  172. <view class="value">
  173. 28次
  174. </view>
  175. </view>
  176. <view class="goto">
  177. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  178. </view>
  179. </view>
  180. <view class="line">
  181. <view class="data">
  182. <view class="item">
  183. 王三
  184. </view>
  185. <view class="value">
  186. 鄂DDT1268
  187. </view>
  188. <view class="value">
  189. 8次
  190. </view>
  191. </view>
  192. <view class="goto">
  193. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  194. </view>
  195. </view>
  196. </view>
  197. </jpContent>
  198. </view>
  199. </view>
  200. <!-- end-->
  201. <view class="statistics ">
  202. <view class="title">
  203. <view class="icon">
  204. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  205. </view>
  206. <view class="text">
  207. <view>白名单用户清单</view>
  208. <view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
  209. </view>
  210. </view>
  211. <view class="contentBody">
  212. <jpContent :status="jpContentMap.body7">
  213. <view class="body7data">
  214. <view class="line">
  215. <view class="value">
  216. 用户姓名
  217. </view>
  218. <view class="value">
  219. 车主身份
  220. </view>
  221. <view class="value">
  222. 使用次数
  223. </view>
  224. </view>
  225. <view class="line">
  226. <view class="value">
  227. 孙培军
  228. </view>
  229. <view class="value">
  230. 车位所有人
  231. </view>
  232. <view class="value">
  233. 22
  234. </view>
  235. </view>
  236. <view class="line">
  237. <view class="value">
  238. 刘洋
  239. </view>
  240. <view class="value">
  241. 白名单用户
  242. </view>
  243. <view class="value">
  244. 11
  245. </view>
  246. </view>
  247. </view>
  248. </jpContent>
  249. </view>
  250. </view>
  251. <!-- end-->
  252. <view class="statistics ">
  253. <view class="title">
  254. <view class="icon">
  255. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  256. </view>
  257. <view class="text">
  258. <view>车位异常记录</view>
  259. <view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
  260. </view>
  261. </view>
  262. <view class="contentBody">
  263. <jpContent :status="jpContentMap.body6">
  264. <view class="body6main">
  265. <view class="line" v-for="(item,index) in abnormalRecordsList" :key="index">
  266. <view class="abnormal-item">
  267. <!-- @click="gotoUrl('/pages/abnormal/abnormalAlarmDetails?id='+item.id)"
  268. -->
  269. <view class="item-title">
  270. <view class="name">
  271. <span v-if="item.level==1" class="level level1 ">一级</span>
  272. <span v-if="item.level==2" class="level level2">二级</span>
  273. {{item.content}}
  274. </view>
  275. <view class="date"
  276. style="display: flex; justify-content: space-between;margin-top: 4rpx;">
  277. <view>{{item.title}}</view>
  278. <view>{{item.createTime}}</view>
  279. </view>
  280. </view>
  281. </view>
  282. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  283. </view>
  284. </view>
  285. </jpContent>
  286. </view>
  287. </view>
  288. <!-- end-->
  289. <view class="statistics ">
  290. <view class="title">
  291. <view class="icon">
  292. <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
  293. </view>
  294. <view class="text">
  295. <view>地锁信息</view>
  296. <view class="check-all">查看全部<u-icon name="arrow-right"></u-icon></view>
  297. </view>
  298. </view>
  299. <view class="contentBody">
  300. <jpContent :status="jpContentMap.body8">
  301. <view class="body8main">
  302. <view class="line">
  303. <view class="value">
  304. 类型
  305. </view>
  306. <view class="value">
  307. 设备编号
  308. </view>
  309. <view class="value">
  310. 设备地址
  311. </view>
  312. </view>
  313. <view class="line">
  314. <view class="value">
  315. 智能地锁
  316. </view>
  317. <view class="value">
  318. JPDJ01-0002
  319. </view>
  320. <view class="value">
  321. 软件园软件园软件园软件园软件园软件园
  322. </view>
  323. </view>
  324. </view>
  325. </jpContent>
  326. </view>
  327. </view>
  328. <!-- end-->
  329. <u-divider border-color="#CFD2D5">已经到底了</u-divider>
  330. </view>
  331. </view>
  332. </template>
  333. <script>
  334. import jpContent from '@/components/JPcontent.vue'
  335. import * as echarts from 'echarts';
  336. import * as API from '@/apis/pagejs/deviceTab.js'
  337. export default {
  338. components: {
  339. jpContent
  340. },
  341. data() {
  342. return {
  343. id:"",
  344. info:{},
  345. echartsList: {},
  346. jpContentMap: {
  347. body1: 2,
  348. body2: 2,
  349. body3: 2,
  350. body4: 2,
  351. body5: 2,
  352. body6: 2,
  353. body7: 2,
  354. body8: 2,
  355. body9: 2,
  356. body10: 2,
  357. },
  358. title: "",
  359. backgroundObj: {
  360. background: '#307AF6'
  361. },
  362. radiovalue: "2",
  363. radiolist: [{
  364. name: '上月',
  365. value: "2"
  366. },
  367. {
  368. name: '当月',
  369. value: "1"
  370. },
  371. {
  372. name: '今日',
  373. value: "4"
  374. }, {
  375. name: '当年',
  376. value: "3"
  377. }, {
  378. name: '合计',
  379. value: "0"
  380. },
  381. {
  382. name: '指定时间',
  383. value: "10"
  384. }
  385. ],
  386. abnormalRecordsList: [{
  387. level: 1,
  388. content: "1111111",
  389. title: "11",
  390. createTime: "123:123"
  391. },
  392. {
  393. level: 2,
  394. content: "1111111",
  395. title: "11",
  396. createTime: "123:123"
  397. }
  398. ],
  399. };
  400. },
  401. onLoad(op) {
  402. if(op.id){
  403. this.id=op.id
  404. }
  405. },
  406. onReady() {
  407. if(this.id){
  408. this.init();
  409. }
  410. },
  411. methods: {
  412. init() {
  413. this.getInfo()
  414. this.getbody1()
  415. this.getbody2()
  416. this.getbody3()
  417. this.getbody4()
  418. },
  419. getInfo(){
  420. uni.showLoading({
  421. title: "加载中",
  422. mask: true,
  423. })
  424. var obj = {
  425. id: this.id
  426. }
  427. API.lockDetails(obj).then((res) => {
  428. this.info = res.data.floorlockInfo
  429. this.title =this.info.parkingName
  430. uni.hideLoading();
  431. //this.getWhiteList()
  432. }).catch(error => {
  433. uni.hideLoading();
  434. uni.showToast({
  435. title: error,
  436. icon: "none"
  437. })
  438. })
  439. },
  440. getbody1() {
  441. var key = "body1pie1"
  442. var myChart = this.echartsList[key];
  443. if (!myChart) {
  444. myChart = echarts.init(document.getElementById(key), null, {
  445. width: uni.upx2px(300 * 2),
  446. height: uni.upx2px(170 * 2)
  447. })
  448. }
  449. myChart.clear()
  450. var option = {
  451. grid: {
  452. top: 20,
  453. left: 0,
  454. right: 0,
  455. bottom: 0,
  456. containLabel: true
  457. },
  458. series: [{
  459. type: 'pie',
  460. radius: ['80%', '50%'],
  461. radius: [35, 50],
  462. data: [{
  463. itemStyle: {
  464. color: "#EB3C31"
  465. },
  466. value: 1048,
  467. name: '0.5小时\n20%',
  468. },
  469. {
  470. itemStyle: {
  471. color: "#EF8132"
  472. },
  473. value: 735,
  474. name: '2小时\n10%'
  475. },
  476. {
  477. itemStyle: {
  478. color: "#929292"
  479. },
  480. value: 580,
  481. name: '2-6小时\n30%'
  482. },
  483. ]
  484. }]
  485. };
  486. myChart.setOption(option);
  487. this.echartsList[key] = myChart;
  488. },
  489. getbody4() {
  490. var key = "body4pie1"
  491. var myChart = this.echartsList[key];
  492. if (!myChart) {
  493. myChart = echarts.init(document.getElementById(key), null, {
  494. width: uni.upx2px(300 * 2),
  495. height: uni.upx2px(170 * 2)
  496. })
  497. }
  498. myChart.clear()
  499. var option = {
  500. grid: {
  501. top: 20,
  502. left: 0,
  503. right: 0,
  504. bottom: 0,
  505. containLabel: true
  506. },
  507. series: [{
  508. type: 'pie',
  509. radius: ['80%', '50%'],
  510. radius: [45, 60],
  511. data: [{
  512. value: 1048,
  513. name: '0.5小时\n20%'
  514. },
  515. {
  516. value: 735,
  517. name: '2小时\n10%'
  518. },
  519. {
  520. value: 580,
  521. name: '2-6小时\n30%'
  522. },
  523. {
  524. value: 484,
  525. name: '6小时以上\n40%'
  526. },
  527. ]
  528. }]
  529. };
  530. myChart.setOption(option);
  531. this.echartsList[key] = myChart;
  532. },
  533. getbody3() {
  534. var key = "body3bar1"
  535. var myChart = this.echartsList[key];
  536. if (!myChart) {
  537. myChart = echarts.init(document.getElementById(key), null, {
  538. width: uni.upx2px(300 * 2),
  539. height: uni.upx2px(170 * 2)
  540. })
  541. }
  542. myChart.clear()
  543. var data1 = ['0-7点', '7-14点', '14-24点']
  544. var axisLabel = {
  545. rotate: 40,
  546. interval: 0,
  547. textStyle: {
  548. color: "#333"
  549. }
  550. }
  551. if (data1.length < 7) {
  552. axisLabel = {
  553. interval: 0,
  554. textStyle: {
  555. color: "#333"
  556. },
  557. }
  558. } else {
  559. axisLabel.interval = 0;
  560. }
  561. var option = {
  562. xAxis: {
  563. type: 'category',
  564. data: data1,
  565. axisLabel: axisLabel,
  566. },
  567. tooltip: {
  568. trigger: 'axis',
  569. axisPointer: {
  570. type: 'shadow'
  571. }
  572. },
  573. yAxis: {
  574. type: 'value'
  575. },
  576. grid: {
  577. top: 20,
  578. left: 0,
  579. right: 0,
  580. bottom: 0,
  581. containLabel: true
  582. },
  583. series: [{
  584. itemStyle: {
  585. color: "#5A88E5"
  586. },
  587. data: [120, 200, 150],
  588. type: 'bar'
  589. }]
  590. };
  591. myChart.setOption(option);
  592. this.echartsList[key] = myChart;
  593. },
  594. getbody2() {
  595. var key = "body2line1"
  596. var myChart = this.echartsList[key];
  597. if (!myChart) {
  598. myChart = echarts.init(document.getElementById(key), null, {
  599. width: uni.upx2px(300 * 2),
  600. height: uni.upx2px(170 * 2)
  601. })
  602. }
  603. myChart.clear()
  604. var data1 = ['0-2点', '2-4点', '4-6点', '6-8点', '8-10点', '10-12点', '12-14点', '14-16点', '16-18点', '18-20点',
  605. '20-22点', '22-24点'
  606. ]
  607. var axisLabel = {
  608. rotate: 40,
  609. interval: 0,
  610. textStyle: {
  611. color: "#333"
  612. }
  613. }
  614. if (data1.length < 7) {
  615. axisLabel = {
  616. interval: 0,
  617. textStyle: {
  618. color: "#333"
  619. },
  620. }
  621. } else {
  622. axisLabel.interval = 0;
  623. }
  624. var option = {
  625. xAxis: {
  626. type: 'category',
  627. data: data1,
  628. axisLabel: axisLabel,
  629. },
  630. tooltip: {
  631. trigger: 'axis',
  632. axisPointer: {
  633. type: 'shadow'
  634. }
  635. },
  636. yAxis: {
  637. type: 'value'
  638. },
  639. grid: {
  640. top: 20,
  641. left: 0,
  642. right: 0,
  643. bottom: 0,
  644. containLabel: true
  645. },
  646. series: [{
  647. areaStyle: {},
  648. itemStyle: {
  649. color: "#BBD4FB"
  650. },
  651. label: {
  652. show: true,
  653. position: 'top',
  654. color: "#307AF6"
  655. },
  656. data: [50, 30, 24, 18, 35, 47, 50, 30, 24, 28, 35, 47],
  657. type: 'line'
  658. }]
  659. };
  660. myChart.setOption(option);
  661. this.echartsList[key] = myChart;
  662. },
  663. }
  664. }
  665. </script>
  666. <style lang="scss">
  667. .gradient-header {
  668. height: 0px;
  669. }
  670. .jpback {
  671. height: 268rpx;
  672. background: linear-gradient(180deg, rgba(22, 119, 255, 1) 20%, rgba(121, 177, 255, 1) 100%);
  673. }
  674. .main {
  675. padding: 32rpx;
  676. .no_statistics {
  677. margin-bottom: 24rpx;
  678. }
  679. .statistics {
  680. border-radius: 8px;
  681. background-color: rgba(255, 255, 255, 1);
  682. box-shadow: 0px 1px 6px 0px rgba(0, 59, 142, 0.05);
  683. margin-bottom: 24rpx;
  684. padding: 40rpx;
  685. .title {
  686. display: flex;
  687. align-items: center;
  688. margin-bottom: 32rpx;
  689. font-weight: bold;
  690. .img {
  691. width: 36rpx;
  692. height: 36rpx;
  693. vertical-align: middle;
  694. border-radius: 999px;
  695. }
  696. .change {
  697. display: flex;
  698. align-items: center;
  699. .change-img {
  700. width: 32rpx;
  701. height: 32rpx;
  702. vertical-align: middle;
  703. }
  704. text {
  705. margin-left: 8rpx;
  706. }
  707. }
  708. .text {
  709. color: rgba(16, 16, 16, 1);
  710. font-size: 36rpx;
  711. margin-left: 16rpx;
  712. display: flex;
  713. justify-content: space-between;
  714. align-items: center;
  715. width: 100%;
  716. .tag {
  717. border-radius: 4px;
  718. border: 1px solid rgba(187, 187, 187, 1);
  719. color: rgba(51, 51, 51, 1);
  720. font-size: 24rpx;
  721. padding: 1px 8rpx;
  722. margin-left: 8rpx;
  723. }
  724. }
  725. .change {
  726. margin-left: 16rpx;
  727. font-size: 24rpx;
  728. color: #838383;
  729. }
  730. .check-all {
  731. margin-left: auto;
  732. color: rgba(131, 131, 131, 1);
  733. font-size: 24rpx;
  734. }
  735. }
  736. }
  737. }
  738. .data1 {
  739. display: flex;
  740. align-items: center;
  741. justify-content: space-between;
  742. .item {
  743. .line{
  744. display: flex;
  745. align-items: center;
  746. }
  747. .name {
  748. color: rgba(51, 51, 51, 1);
  749. font-size: 36rpx;
  750. font-weight: bold;
  751. margin-right: 8rpx;
  752. }
  753. .item-tags {
  754. display: flex;
  755. .tag {
  756. border-radius: 4px;
  757. background-color: rgba(39, 177, 72, 1);
  758. color: rgba(255, 255, 255, 1);
  759. font-size: 24rpx;
  760. padding: 2rpx 8rpx;
  761. margin-right: 8rpx;
  762. }
  763. .typeN1 {
  764. background-color: rgba(22, 119, 255, 1);
  765. }
  766. .typeN2{
  767. background-color: #8161ff;
  768. background-color: #8161ff;
  769. }
  770. .statusN{
  771. background-color:#838383
  772. }
  773. .lockStatusN {
  774. background-color: rgba(153, 153, 153, 1);
  775. }
  776. .lockStatusN2 {
  777. background-color: #03A9F4
  778. }
  779. }
  780. }
  781. .value {
  782. .img {
  783. margin-right: 8rpx;
  784. width: 32rpx;
  785. height: 32rpx;
  786. }
  787. }
  788. }
  789. .data2 {
  790. height: 336rpx;
  791. padding: 32rpx;
  792. border-radius: 12px;
  793. background: linear-gradient(180deg, rgba(222, 222, 222, 1) 3%, rgba(255, 255, 255, 1) 5%, rgba(232, 232, 232, 1) 56%, rgba(255, 255, 255, 1) 59%, rgba(236, 236, 236, 1) 95%, rgba(215, 215, 215, 1) 98%);
  794. .top {
  795. background-repeat: round;
  796. background-image: url('@/assets/img/deviceTab/index3-2.png');
  797. display: flex;
  798. justify-content: space-around;
  799. text-align: center;
  800. height: 152rpx;
  801. align-items: center;
  802. .item {
  803. .name {
  804. color: rgba(16, 16, 16, 1);
  805. font-size: 32rpx;
  806. }
  807. .value {
  808. color: rgba(16, 16, 16, 1);
  809. font-size: 48rpx;
  810. font-weight: bold;
  811. }
  812. }
  813. }
  814. .body {
  815. padding: 16rpx;
  816. }
  817. }
  818. .body5data {
  819. .line {
  820. display: flex;
  821. align-items: center;
  822. justify-content: space-between;
  823. .data {
  824. display: flex;
  825. width: 80%;
  826. justify-content: space-between;
  827. .item {
  828. color: rgba(51, 51, 51, 1);
  829. font-size: 16px;
  830. }
  831. .value {
  832. color: rgba(119, 119, 119, 1);
  833. font-size: 16px;
  834. }
  835. }
  836. }
  837. }
  838. .body7data {
  839. .line {
  840. display: flex;
  841. align-items: center;
  842. justify-content: space-between;
  843. .value {
  844. width: 33%;
  845. padding: 16rpx;
  846. color: rgba(51, 51, 51, 1);
  847. }
  848. .value:nth-child(3) {
  849. text-align: center;
  850. }
  851. }
  852. /* 隔行变色: 偶数行设置背景色 */
  853. .line:nth-child(odd) {
  854. background-color: #F2F2F2;
  855. /* 偶数行 */
  856. }
  857. .line:nth-child(even) {
  858. background-color: #FFFFFF
  859. /* 奇数行 */
  860. }
  861. }
  862. .body8main {
  863. .line {
  864. display: flex;
  865. align-items: center;
  866. justify-content: space-between;
  867. .value {
  868. width: 33%;
  869. padding: 16rpx;
  870. text-align: center;
  871. overflow: hidden;
  872. white-space: nowrap;
  873. text-overflow: ellipsis;
  874. }
  875. }
  876. /* 隔行变色: 偶数行设置背景色 */
  877. .line:nth-child(odd) {
  878. color: rgba(119, 119, 119, 1);
  879. font-size: 14px;
  880. /* 偶数行 */
  881. }
  882. .line:nth-child(even) {
  883. color: rgba(16, 16, 16, 1);
  884. font-size: 16px;
  885. /* 奇数行 */
  886. }
  887. }
  888. .body6main {
  889. .line {
  890. display: flex;
  891. justify-content: space-between;
  892. }
  893. .abnormal-item:last-of-type {
  894. border-bottom: none !important;
  895. padding-bottom: 0;
  896. }
  897. .abnormal-item {
  898. width: 100%;
  899. display: flex;
  900. justify-content: space-between;
  901. align-items: center;
  902. padding: 16rpx;
  903. border-bottom: 1px solid rgba(245, 245, 245, 1);
  904. .item-title {
  905. .level {
  906. color: #fff;
  907. border-radius: 8rpx;
  908. font-weight: 400;
  909. padding: 4rpx 8rpx;
  910. font-size: 22rpx;
  911. margin-right: 2px;
  912. }
  913. .level1 {
  914. background: red;
  915. }
  916. .level2 {
  917. background-color: rgba(255, 123, 0, 1);
  918. }
  919. color: rgba(51, 51, 51, 1);
  920. width: 100%;
  921. .img {
  922. width: 32rpx;
  923. height: 32rpx;
  924. margin-right: 8rpx;
  925. }
  926. .name {
  927. color: rgba(51, 51, 51, 1);
  928. font-weight: bold;
  929. overflow: hidden;
  930. white-space: nowrap;
  931. text-overflow: ellipsis;
  932. }
  933. .date {
  934. color: rgba(119, 119, 119, 1);
  935. font-size: 24rpx;
  936. }
  937. }
  938. .item-value {
  939. text-align: right;
  940. display: flex;
  941. align-items: center;
  942. .more {
  943. margin-left: 8rpx;
  944. }
  945. .value1 {
  946. font-weight: bold;
  947. color: rgba(51, 51, 51, 1);
  948. }
  949. .value2 {
  950. color: rgba(119, 119, 119, 1);
  951. font-size: 24rpx;
  952. }
  953. }
  954. }
  955. }
  956. </style>