index.vue 19 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. <template>
  2. <view>
  3. <u-navbar v-show="false" title="首页" title-color="#101010"></u-navbar>
  4. <view class="back-blue">
  5. <view class="back-color">
  6. </view>
  7. </view>
  8. <view class="main_top">
  9. <view class="main_top1">
  10. <view class="logo_img">
  11. <image class="img" src="@/assets/img/logo/logo.png" mode=""></image>
  12. </view>
  13. <view class="logo_text">
  14. <view class="logo_text1">
  15. 优电联盟
  16. </view>
  17. <view class="logo_text2">
  18. 巡检端
  19. </view>
  20. </view>
  21. </view>
  22. <view class="main_top2">
  23. <!-- 消息提醒位置 -->
  24. </view>
  25. </view>
  26. <view class="main_navigation panel">
  27. <view class="item-na end" @click="gotoUrl('/pages/task/addTask')">
  28. <view class="na-img">
  29. <image class="img" src="@/assets/img/index/na-1.png" mode=""></image>
  30. </view>
  31. <view class="na-text ">
  32. 故障上报
  33. </view>
  34. </view>
  35. <view class="item-na-b" v-if="isAdmin">
  36. </view>
  37. <view class="item-na end" @click="gotoUrl('/pages/team/teamList')" v-if="isAdmin">
  38. <view class="na-img">
  39. <image class="img" src="@/assets/img/index/na-3.png" mode=""></image>
  40. </view>
  41. <view class="na-text">
  42. 团队管理
  43. </view>
  44. </view>
  45. <view class="item-na-b">
  46. </view>
  47. <view class="item-na end" @click="gotoUrl('/pages/inspection/list')">
  48. <view class="na-img">
  49. <image class="img" src="@/assets/img/index/na-2.png" mode=""></image>
  50. </view>
  51. <view class="na-text">
  52. 巡检记录
  53. </view>
  54. </view>
  55. </view>
  56. <view class="main_statuspanel panel">
  57. <view class="top-main">
  58. <view class="title-main">
  59. 充电枪状态
  60. </view>
  61. <view class="goto-main" @click="gotoUrl('/pages/station/stationList')">
  62. 查看详情
  63. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  64. </view>
  65. </view>
  66. <view class="body">
  67. <view class="pie">
  68. <view id="body1pie1" class="body1pie">
  69. </view>
  70. <view class="body2pie" v-if="datafloorStatus.gunNum">
  71. <view class="v1">{{datafloorStatus.gunNum}}</view>
  72. <view class="v2">单位:把</view>
  73. </view>
  74. </view>
  75. <view class="item-list">
  76. <view class="item-status">
  77. <view class="num">
  78. {{datafloorStatus.gunWorkNum}}
  79. </view>
  80. <view class="statusN">
  81. <view class="statusC status1">
  82. </view>
  83. <view class="statusT">
  84. 在用
  85. </view>
  86. </view>
  87. </view>
  88. <view class="item-status">
  89. <view class="num">
  90. {{datafloorStatus.gunFaultNum}}
  91. </view>
  92. <view class="statusN">
  93. <view class="statusC status2">
  94. </view>
  95. <view class="statusT">
  96. 故障
  97. </view>
  98. </view>
  99. </view>
  100. <view class="item-status">
  101. <view class="num">
  102. {{datafloorStatus.gunFreeNum}}
  103. </view>
  104. <view class="statusN">
  105. <view class="statusC status4">
  106. </view>
  107. <view class="statusT">
  108. 空闲
  109. </view>
  110. </view>
  111. </view>
  112. <view class="item-status">
  113. <view class="num">
  114. {{datafloorStatus.gunOfflineNum}}
  115. </view>
  116. <view class="statusN">
  117. <view class="statusC status3">
  118. </view>
  119. <view class="statusT">
  120. 离线
  121. </view>
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. </view>
  127. <view class="main_list1 panel ">
  128. <view class="top-main">
  129. <view class="title-main">
  130. 故障未处理记录
  131. </view>
  132. <view class="goto-main" @click="gotoUrl('/pages/task/listTask')">
  133. 全部故障记录
  134. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  135. </view>
  136. </view>
  137. <view class="top-main">
  138. <u-tabs :list="tabslist" :current="current1" @change="change1"></u-tabs>
  139. </view>
  140. <view class="list">
  141. <view class="item" v-for="(item,index) in dataerrList[current1]"
  142. @click="gotoUrl('/pages/task/maintenanceTaks?id='+item.id)" :key="index">
  143. <view class="body">
  144. <view class="line1">
  145. <view class="title">
  146. {{item.stationName}}
  147. </view>
  148. <view class="value">
  149. {{item.errorCodeText}}
  150. </view>
  151. </view>
  152. <view class="line2">
  153. <view v-if="item.type==1" >
  154. {{item.deviceName}} {{item.deviceNo}}
  155. </view>
  156. <view v-if="item.type==2" >
  157. 人工上报
  158. </view>
  159. <view class="value" style=" white-space: pre;">
  160. {{item.errorReportTime}}
  161. </view>
  162. </view>
  163. <view class="line2" v-if="item.type==1">
  164. <view v-if="getHourDistanceArr(item.errorReportTime)==0" :class="{
  165. getHourDistanceArrNum10:true,
  166. }">
  167. </view>
  168. <view v-else :class="{
  169. getHourDistanceArrNum10:true,
  170. getHourDistanceArrNum12:getHourDistanceArr(item.errorReportTime)>12,
  171. getHourDistanceArrNum24:getHourDistanceArr(item.errorReportTime)>24,
  172. }">
  173. {{getHourDistanceArr(item.errorReportTime) }}小时未处理</view>
  174. </view>
  175. </view>
  176. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  177. </view>
  178. <u-divider color="#F44336" :nonetop="0" :isnone="dataerrList[current1].length==0" nonetext="暂无数据"
  179. v-if="dataerrList[current1].length==0"></u-divider>
  180. </view>
  181. </view>
  182. <view class="main_list1 panel ">
  183. <view class="top-main">
  184. <view class="title-main">
  185. 未巡检记录
  186. </view>
  187. <view class="goto-main" @click="gotoUrl('/pages/inspection/list')">
  188. 全部巡检记录
  189. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  190. </view>
  191. </view>
  192. <view class="top-main">
  193. <u-tabs :list="tabslist2" :current="current2" @change="change2"></u-tabs>
  194. </view>
  195. <view class="list-body">
  196. <view class="item" v-for="(item,index) in datainsList[current2]"
  197. @click="gotoUrl('/pages/inspection/add?back=1&stationId='+item.stationId)" :key="index">
  198. <view class="line1">
  199. <view class="title">
  200. {{item.stationName}}
  201. </view>
  202. <view class="value" v-if="0">
  203. 上次巡检时间:{{lastChargeTime(item.lastInspectionTime)}}
  204. </view>
  205. <view class="value">
  206. 巡检截止时间:{{lastChargeTime(item.inspectionEndTime)}}
  207. </view>
  208. </view>
  209. <view class="line2">
  210. <view v-if="getdaysDistance(item.inspectionEndTime)=='-'"
  211. style="color:#777777 ;" >
  212. 未初始化
  213. </view>
  214. <view v-else-if="getdaysDistance(item.inspectionEndTime)>0"
  215. style="color:#FF7B00 ;" >
  216. {{getdaysDistance(item.inspectionEndTime)}}天后到期
  217. </view>
  218. <view class="value" v-else-if="getdaysDistance(item.inspectionEndTime)==0" style="color: #EE3138 ;" >
  219. &le;1天后到期
  220. </view>
  221. <view v-else style="color: #EE3138 ;" >
  222. 已逾期
  223. </view>
  224. <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
  225. </view>
  226. </view>
  227. <u-divider color="#F44336" :nonetop="0" :isnone="datainsList[current2].length==0" nonetext="暂无数据"
  228. v-if="datainsList[current2].length==0"></u-divider>
  229. </view>
  230. </view>
  231. <tabbar :current="0"></tabbar>
  232. </view>
  233. </template>
  234. <script>
  235. import * as API from '@/apis/pagejs/pagejsIndex.js'
  236. import * as echarts from 'echarts';
  237. import Tabbar from '@/components/Tabbar.vue'
  238. import {
  239. newDate,
  240. hourDistanceArr,
  241. daysDistanceTrue
  242. } from '@/apis/utils'
  243. export default {
  244. components: {
  245. Tabbar,
  246. },
  247. data() {
  248. return {
  249. echartsList: {},
  250. isReadyfloorStatus: false,
  251. datafloorStatus: {},
  252. roleList: [],
  253. isReadyerrList: false,
  254. isReadyinsList: false,
  255. dataerrList: [
  256. [],[]
  257. ],
  258. dataerrRecordsTotal: 0,
  259. datainsList: [
  260. [],[]
  261. ],
  262. datainsRecordsTotal: 0,
  263. tabslist: [{
  264. name: '电动车充电站',
  265. code: "1"
  266. }, {
  267. name: '电单车充电站',
  268. code: "0"
  269. }],
  270. tabslist2: [{
  271. name: '电动车充电站',
  272. code: "1"
  273. }, {
  274. name: '电单车充电站',
  275. code: "0"
  276. }],
  277. current1: 0,
  278. current2: 0,
  279. };
  280. },
  281. onLoad() {
  282. // this.roleList=
  283. },
  284. onShow() {
  285. // this.roleList=this.jphelp.getPersonInfoPlus().roleList
  286. if (this.isReadyfloorStatus) {
  287. this.getfloorStatus()
  288. }
  289. if (this.isReadyerrList) {
  290. this.geterrList()
  291. }
  292. if (this.isReadyinsList) {
  293. this.getinsList()
  294. }
  295. },
  296. computed: {
  297. isAdmin() {
  298. console.log(this.jphelp.getPersonInfo().role)
  299. if (this.jphelp.getPersonInfo().role.indexOf( '1')!=-1) {
  300. return true
  301. }
  302. return false
  303. }
  304. },
  305. onReady() {
  306. this.geterrList()
  307. this.getfloorStatus()
  308. this.getinsList()
  309. //this.getbody1pie1()
  310. this.query()
  311. },
  312. methods: {
  313. lastChargeTime(time) {
  314. if (time) {
  315. return time.split(" ")[0]
  316. } else {
  317. return ''
  318. }
  319. },
  320. getinsList() {
  321. API.recordList({
  322. pageIndex: 1,
  323. pageSize: 20,
  324. status: 0,
  325. chargingType:"1"
  326. }).then((response) => {
  327. this.datainsList[0] = response.data.data
  328. this.tabslist2[0].count=response.data.recordsTotal
  329. this.isReadyinsList = true
  330. }).catch(error => {
  331. uni.showToast({
  332. title: error,
  333. icon: "none"
  334. })
  335. })
  336. API.recordList({
  337. pageIndex: 1,
  338. pageSize: 20,
  339. status: 0,
  340. chargingType:"0"
  341. }).then((response) => {
  342. this.datainsList[1] = response.data.data
  343. this.tabslist2[1].count=response.data.recordsTotal
  344. this.isReadyinsList = true
  345. }).catch(error => {
  346. uni.showToast({
  347. title: error,
  348. icon: "none"
  349. })
  350. })
  351. },
  352. getdaysDistance( time2) {
  353. if (!time2) {
  354. return '-'
  355. }
  356. return daysDistanceTrue(new Date(),time2)
  357. },
  358. getHourDistanceArr(time) {
  359. if (!time) {
  360. return '-'
  361. }
  362. return hourDistanceArr(time, new Date())[0]
  363. },
  364. change1(e) {
  365. this.current1 = e
  366. //this.dataerrList = []
  367. //this.geterrList()
  368. },
  369. change2(e) {
  370. this.current2 = e
  371. //this.datainsList = []
  372. //this.getinsList()
  373. },
  374. isToday(dateStr) {
  375. if (!dateStr) {
  376. return false
  377. }
  378. // 将传入的日期字符串转换为Date对象
  379. const targetDate = newDate(dateStr);
  380. // 获取当前日期
  381. const today = new Date();
  382. // 比较年份、月份和日期是否相等
  383. return (
  384. targetDate.getFullYear() === today.getFullYear() &&
  385. targetDate.getMonth() === today.getMonth() &&
  386. targetDate.getDate() === today.getDate()
  387. );
  388. },
  389. query() {
  390. uni.showLoading({
  391. title: "加载中",
  392. mask: true,
  393. })
  394. API.findByOpenId({
  395. noerror: true,
  396. openId: this.jphelp.getOpenId(),
  397. }).then((response) => {
  398. uni.hideLoading();
  399. if (response.message) {
  400. uni.hideLoading();
  401. } else {
  402. this.loginset(response)
  403. }
  404. this.roleList = this.jphelp.getPersonInfoPlus().roleList
  405. }).catch(error => {
  406. uni.hideLoading();
  407. })
  408. },
  409. geterrList() {
  410. API.errList({
  411. pageIndex: 1,
  412. pageSize: 5,
  413. status: 0,
  414. chargingType:"1"
  415. }).then((response) => {
  416. this.dataerrList[0] = response.data.data
  417. //this.dataerrRecordsTotal = response.data.recordsTotal
  418. this.tabslist[0].count=response.data.recordsTotal
  419. this.isReadyerrList = true
  420. }).catch(error => {
  421. uni.showToast({
  422. title: error,
  423. icon: "none"
  424. })
  425. })
  426. API.errList({
  427. pageIndex: 1,
  428. pageSize: 5,
  429. status: 0,
  430. chargingType:"0"
  431. }).then((response) => {
  432. this.dataerrList[1] = response.data.data
  433. this.tabslist[1].count=response.data.recordsTotal
  434. //this.dataerrRecordsTotal = response.data.recordsTotal
  435. this.isReadyerrList = true
  436. }).catch(error => {
  437. uni.showToast({
  438. title: error,
  439. icon: "none"
  440. })
  441. })
  442. },
  443. getfloorStatus() {
  444. API.floorStatus().then((response) => {
  445. var obj = response.data;
  446. var sz = ['gunFaultNum', 'gunFreeNum', 'gunOfflineNum', 'gunWorkNum']
  447. var bl = false
  448. for (var i in sz) {
  449. if (obj[sz[i]] != this.datafloorStatus[sz[i]]) {
  450. bl = true
  451. this.datafloorStatus = obj
  452. }
  453. }
  454. this.isReadyfloorStatus = true
  455. if (bl) {
  456. this.getbody1pie1()
  457. }
  458. }).catch(error => {
  459. uni.showToast({
  460. title: error,
  461. icon: "none"
  462. })
  463. })
  464. },
  465. getbody1pie1() {
  466. var key = "body1pie1"
  467. var myChart = this.echartsList[key];
  468. if (!myChart) {
  469. myChart = echarts.init(document.getElementById(key), null, {
  470. width: uni.upx2px(88 * 2),
  471. height: uni.upx2px(88 * 2)
  472. })
  473. }
  474. myChart.clear()
  475. var option = {
  476. series: [{
  477. silent: true,
  478. type: 'pie',
  479. radius: ['80%', '100%'],
  480. label: {
  481. show: false,
  482. },
  483. data: [{
  484. value: this.datafloorStatus.gunWorkNum,
  485. itemStyle: {
  486. color: 'rgba(0, 185, 98, 1)'
  487. }
  488. },
  489. {
  490. value: this.datafloorStatus.gunFreeNum,
  491. itemStyle: {
  492. color: '#999999'
  493. }
  494. },
  495. {
  496. value: this.datafloorStatus.gunOfflineNum,
  497. itemStyle: {
  498. color: '#FF9600'
  499. }
  500. },
  501. {
  502. value: this.datafloorStatus.gunFaultNum,
  503. itemStyle: {
  504. color: '#FF3D00'
  505. }
  506. }
  507. ]
  508. }],
  509. grid: {
  510. top: 0,
  511. left: 0,
  512. right: 0,
  513. bottom: 0,
  514. containLabel: true
  515. },
  516. }
  517. myChart.setOption(option);
  518. console.log(option)
  519. this.echartsList[key] = myChart;
  520. }
  521. }
  522. }
  523. </script>
  524. <style>
  525. page {
  526. /* background-color: #FFFFFF; */
  527. }
  528. </style>
  529. <style lang="scss">
  530. .back-blue {
  531. height: 0px;
  532. .back-color {
  533. height: 656rpx;
  534. background: linear-gradient(180deg, rgba(22, 119, 255, 1) 53%, rgba(203, 234, 255, 0) 100%);
  535. }
  536. }
  537. .top-main {
  538. display: flex;
  539. align-items: center;
  540. justify-content: space-between;
  541. .title-main {
  542. color: rgba(51, 51, 51, 1);
  543. font-size: 32rpx;
  544. font-weight: bold;
  545. display: flex;
  546. align-items: center;
  547. }
  548. .goto-main {
  549. color: rgba(131, 131, 131, 1);
  550. font-size: 24rpx;
  551. }
  552. }
  553. .panel,
  554. .main_top {
  555. margin: 0 32rpx;
  556. }
  557. .panel {
  558. border-radius: 16rpx;
  559. background-color: rgba(255, 255, 255, 1);
  560. box-shadow: 0px 8rpx 16rpx 0px rgba(22, 119, 255, 0.1);
  561. }
  562. .main_top {
  563. margin-top: 32rpx;
  564. display: flex;
  565. justify-content: space-between;
  566. .main_top1 {
  567. display: flex;
  568. align-items: center;
  569. .logo_img {
  570. .img {
  571. border-radius: 16rpx;
  572. width: 96rpx;
  573. height: 96rpx;
  574. }
  575. margin-right: 16rpx;
  576. }
  577. .logo_text {
  578. color: #fff;
  579. .logo_text1 {
  580. font-size: 40rpx;
  581. }
  582. .logo_text2 {
  583. font-size: 32rpx;
  584. }
  585. }
  586. }
  587. .main_top2 {}
  588. }
  589. .main_navigation {
  590. margin-top: 32rpx;
  591. display: flex;
  592. justify-content: space-around;
  593. align-items: center;
  594. padding: 24rpx 0 20rpx 0;
  595. .item-na-b {
  596. border-left: 2rpx solid rgba(187, 187, 187, 0.43);
  597. height: 70rpx;
  598. }
  599. .item-na {
  600. width: 32%;
  601. text-align: center;
  602. .na-img {
  603. display: flex;
  604. justify-content: center;
  605. .img {
  606. width: 80rpx;
  607. height: 80rpx;
  608. }
  609. }
  610. }
  611. }
  612. .main_statuspanel {
  613. margin-top: 24rpx;
  614. padding: 24rpx;
  615. padding-bottom: 0;
  616. .body2pie {
  617. position: relative;
  618. top: -140rpx;
  619. height: 0px;
  620. left: 0px;
  621. width: 176rpx;
  622. text-align: center;
  623. .v1 {
  624. color: rgba(16, 16, 16, 1);
  625. font-size: 48rpx;
  626. font-weight: bold;
  627. }
  628. .v2 {
  629. color: rgba(119, 119, 119, 1);
  630. font-size: 24rpx;
  631. }
  632. }
  633. .body {
  634. display: flex;
  635. padding: 24rpx;
  636. .item-list {
  637. margin-left: 48rpx;
  638. display: flex;
  639. width: 100%;
  640. flex-wrap: wrap;
  641. .item-status {
  642. width: 50%;
  643. .num {
  644. color: rgba(51, 51, 51, 1);
  645. font-size: 36rpx;
  646. font-weight: bold;
  647. }
  648. }
  649. .statusN {
  650. display: flex;
  651. align-items: center;
  652. .statusC {
  653. margin-right: 8rpx;
  654. width: 16rpx;
  655. height: 16rpx;
  656. background-color: rgba(153, 153, 153, 1);
  657. }
  658. .status1 {
  659. background-color: rgba(0, 185, 98, 1);
  660. }
  661. .status2 {
  662. background-color: #FF3D00;
  663. }
  664. .status3 {
  665. background-color: #FF9600;
  666. }
  667. .status4 {
  668. background-color: #999999;
  669. }
  670. }
  671. }
  672. }
  673. }
  674. .main_list1 {
  675. background-color: #fff;
  676. margin-top: 24rpx;
  677. padding: 24rpx;
  678. padding-bottom: 36rpx;
  679. .title {
  680. display: flex;
  681. color: rgba(51, 51, 51, 1);
  682. font-size: 32rpx;
  683. font-weight: bold;
  684. }
  685. .list-body {
  686. padding: 24rpx 0;
  687. .item {
  688. border-bottom: 2rpx solid rgba(232, 232, 232, 1);
  689. display: flex;
  690. justify-content: space-between;
  691. padding: 12rpx 0;
  692. margin: 12rpx 0;
  693. .line1 {
  694. .value {
  695. color: #777777;
  696. font-size: 24rpx;
  697. margin-top: 8rpx;
  698. }
  699. }
  700. .line2 {
  701. display: flex;
  702. align-items: center;
  703. font-size: 32rpx;
  704. white-space: pre;
  705. }
  706. }
  707. }
  708. .item:not(:first-child) {
  709. //background-color: red;
  710. border-top: 0rpx solid rgba(232, 232, 232, 1);
  711. }
  712. .list {
  713. //padding: 24rpx 0;
  714. .item {
  715. display: flex;
  716. border-top: 2rpx solid rgba(232, 232, 232, 1);
  717. padding: 12rpx 0;
  718. margin: 12rpx 0;
  719. .img {
  720. width: 72rpx;
  721. height: 72rpx;
  722. }
  723. .body {
  724. //margin: 0 12rpx;
  725. width: 100%;
  726. .line1,
  727. .line2 {
  728. display: flex;
  729. justify-content: space-between;
  730. }
  731. .line2 {
  732. color: rgba(119, 119, 119, 1);
  733. font-size: 24rpx;
  734. margin-top: 8rpx;
  735. }
  736. .line1 {
  737. font-size: 32rpx;
  738. .value{
  739. white-space: pre;
  740. }
  741. .status {
  742. background-color: rgba(255, 61, 0, 1);
  743. font-size: 24rpx;
  744. color: #fff;
  745. padding: 2rpx 8rpx;
  746. //border-radius: 8rpx;
  747. }
  748. .status0 {
  749. background-color: #FF7B00;
  750. }
  751. .status1 {
  752. background-color: #007aff;
  753. }
  754. .status2 {
  755. background-color: #ff9900;
  756. }
  757. .status3 {
  758. background-color: #19be6b;
  759. }
  760. .status4 {
  761. border: 2rpx solid rgba(255, 61, 0, 1);
  762. color: rgba(255, 61, 0, 1);
  763. }
  764. }
  765. .errorDesc {
  766. margin: 8rpx 0;
  767. width: 480rpx;
  768. color: #777777;
  769. font-size: 24rpx;
  770. overflow: hidden;
  771. text-overflow: ellipsis;
  772. white-space: nowrap;
  773. /* 禁止换行,强制单行 */
  774. }
  775. }
  776. }
  777. // .item:not(:last-child) {
  778. // border-bottom:2rpx solid rgba(232,232,232,1);
  779. // }
  780. }
  781. }
  782. .getHourDistanceArrNum10 {
  783. color: #FF7B00;
  784. }
  785. .getHourDistanceArrNum12 {
  786. color: red;
  787. }
  788. .getHourDistanceArrNum24 {
  789. color: #8161FF;
  790. }
  791. .badge{
  792. //width: 40rpx;
  793. //height: 40rpx;
  794. background-color: red;
  795. border-radius: 50px;
  796. display: inline-block;
  797. padding: 2rpx 8rpx;
  798. color: #fff;
  799. text-align: center;
  800. font-size: 22rpx;
  801. display: flex;
  802. align-items: center;
  803. }
  804. </style>