electronicMonitoring.vue 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689
  1. <template>
  2. <view>
  3. <view class="background">
  4. <!-- 日期选择器 -->
  5. <u-picker-select title="日期选择" v-model="tabsFrom.show2" :defaultTime="tabsFrom.show2Index" :endYear="endYear"
  6. mode="time" :params="params" :noselect="false" @confirm="selector2confirm" @cancel="selector2cancel"
  7. @reset="selector2reset">
  8. </u-picker-select>
  9. <view class="navbar-c">
  10. <view class="back" @click="backDataMonitoringList">
  11. <u-icon name="arrow-left" color="#fff" size="36"></u-icon>
  12. </view>
  13. <view class="title" @click="titleCk">
  14. {{tabsFrom.title}}
  15. <u-icon name="arrow-down" v-if="tabsFrom.selector1.length"
  16. color="#fff" size="24"></u-icon>
  17. </view>
  18. </view>
  19. </view>
  20. <!-- 设备选择器 -->
  21. <u-select title="设备选择" v-model="tabsFrom.show1" mode="mutil-column-auto" :list="tabsFrom.selector1"
  22. @confirm="selector1confirm" cancel-text="重置" @cancel="selector1cancel">
  23. </u-select>
  24. <!-- 用电量 -->
  25. <view class="electricity-consumption">
  26. <!-- 统计 -->
  27. <view class="statistics-content">
  28. <view class="statistics-item"
  29. @click="gotoUrl('/pages/equipmentDataMonitoring/electricityConsumptionDetail?id='
  30. +FormData.meterId+'&name='+tabsFrom.title+'&type='+FormData.type)">
  31. <view class="item-title">
  32. <image class="img" src="@/assets/img/meterStatistics@3x.png"></image>电量统计(度)
  33. </view>
  34. <view class="item-value">
  35. <text>{{electricity}}</text> <u-icon name="arrow-right" color="#cccccc" size="24" ></u-icon>
  36. </view>
  37. </view>
  38. <view class="statistics-item" >
  39. <view class="item-title item-title2">
  40. <image class="img" src="@/assets/img/electricityStatistics@3x.png"></image>电费统计(元)
  41. </view>
  42. <view class="item-value">
  43. {{fee}}
  44. </view>
  45. </view>
  46. </view>
  47. <view class="radio">
  48. <u-radio-group v-model="value" @change="radioGroupChange">
  49. <u-radio @change="radioChange" v-for="(item, index) in list" :key="index" :name="item.id"
  50. :disabled="item.disabled">
  51. {{item.name}}
  52. </u-radio>
  53. </u-radio-group>
  54. </view>
  55. </view>
  56. <!-- 远程控制电源开关 -->
  57. <view class="control" v-if="codes&&codes.indexOf('switch')!=-1">
  58. <view class="text">
  59. 远程控制电源开关
  60. </view>
  61. <view class="icon">
  62. <img src="@/assets/img/control.png"
  63. @click="switchBtnApi(meterDetail,0)"
  64. v-if="meterDetail.switchStatus"
  65. alt="" />
  66. <img @click="switchBtnApi(meterDetail,1)"
  67. v-else
  68. src="@/assets/img/switchClose.png" alt="" />
  69. </view>
  70. </view>
  71. <!-- 各时段用电量 -->
  72. <view class="electricity-chart">
  73. <view class="title">
  74. <view class="icon">
  75. </view>
  76. <view class="text">
  77. 各时段电量 (度)
  78. </view>
  79. <view class="more" @click="tabsFrom.show2=true,params.day=true">
  80. {{queryDay}}<u-icon name="arrow-down" color="#bbbbbb"></u-icon>
  81. </view>
  82. </view>
  83. <view class="chart">
  84. <view id="barEcharts" style="min-height:440rpx;">
  85. </view>
  86. </view>
  87. <view class="total" >
  88. <view class="total-item">
  89. 电量合计:{{sumQuantity}}度
  90. </view>
  91. <view class="total-item">
  92. 电费合计:{{sumFee}}元
  93. </view>
  94. </view>
  95. </view>
  96. <!-- 异常告警 -->
  97. <view class="abnormal" v-if="abnormalRecordsList.length" >
  98. <view class="headline">
  99. <view class="title">
  100. <view class="icon">
  101. </view>
  102. <view class="text">
  103. 异常告警
  104. </view>
  105. </view>
  106. <view class="more" @click="gotoUrl('/pages/abnormal/abnormalAlarmRecord?id='+companyId)">
  107. 查看全部
  108. <u-icon name="arrow-right" size="24" color="#d4d4d4"></u-icon>
  109. </view>
  110. </view>
  111. <view class="details">
  112. <view class="item" v-for="(item, index) in abnormalRecordsList" :key="index"
  113. @click="gotoUrl('/pages/abnormal/abnormalAlarmDetails?id='+item.id)">
  114. <view class="name">
  115. {{item.configName}}
  116. </view>
  117. <view class="time">
  118. {{item.createTime}}
  119. <!-- 箭头 -->
  120. <view class="more">
  121. <u-icon name="arrow-right" color="#acacac" size="24"></u-icon>
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. </view>
  127. <!-- 能源监测 -->
  128. <view class="energy-inspection">
  129. <view class="title">
  130. <view class="icon">
  131. </view>
  132. <view class="text">
  133. 能源监测
  134. </view>
  135. </view>
  136. <view class="grid">
  137. <u-grid :col="3" :border="false">
  138. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','A','三相电流')">
  139. <view class="icon icon1">
  140. <image class="img" src="@/assets/img/Image@1.png" mode=""></image>
  141. </view>
  142. <view class="grid-text">三相电流</view>
  143. </u-grid-item>
  144. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','V','三相电压')">
  145. <view class="icon icon2">
  146. <image class="img" src="@/assets/img/Image@2.png" mode=""></image>
  147. </view>
  148. <view class="grid-text">三相电压</view>
  149. </u-grid-item>
  150. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','T','三相温度')">
  151. <view class="icon icon3">
  152. <image class="img" src="@/assets/img/Image@3.png" mode=""></image>
  153. </view>
  154. <view class="grid-text">三相温度</view>
  155. </u-grid-item>
  156. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','P','三相有功功率')">
  157. <view class="icon icon4">
  158. <image class="img" src="@/assets/img/Image@4.png" mode=""></image>
  159. </view>
  160. <view class="grid-text">三相有功功率</view>
  161. </u-grid-item>
  162. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','F','三相功率因数')">
  163. <view class="icon icon5">
  164. <image class="img" src="@/assets/img/Image@5.png" mode=""></image>
  165. </view>
  166. <view class="grid-text">三相功率因数</view>
  167. </u-grid-item>
  168. <u-grid-item @click="gotoInfo('3PhaseCurrentDetails','AF','平均功率因数')">
  169. <view class="icon icon6">
  170. <image class="img" src="@/assets/img/Image@5.png" mode=""></image>
  171. </view>
  172. <view class="grid-text">平均功率因数</view>
  173. </u-grid-item>
  174. </u-grid>
  175. </view>
  176. </view>
  177. <!-- 数据分析 -->
  178. <view class="data-analysis">
  179. <view class="title">
  180. <view class="icon">
  181. </view>
  182. <view class="text">
  183. 数据分析
  184. </view>
  185. </view>
  186. <view class="grid">
  187. <u-grid :col="3" :border="false">
  188. <u-grid-item @click="gotoInfo('chartYoY','','')">
  189. <view class="icon icon7">
  190. <image class="img" src="@/assets/img/Image@7.png" mode=""></image>
  191. </view>
  192. <view class="grid-text">同比分析</view>
  193. </u-grid-item>
  194. <u-grid-item @click="gotoInfo('chartMoM','','')">
  195. <view class="icon icon8">
  196. <image class="img" src="@/assets/img/Image@8.png" mode=""></image>
  197. </view>
  198. <view class="grid-text">环比分析</view>
  199. </u-grid-item>
  200. <u-grid-item @click="gotoUrl('/pages/equipmentDataMonitoring/electricityStatistics?id='+meterId)">
  201. <view class="icon icon9">
  202. <image class="img" src="@/assets/img/Image@9.svg" mode=""></image>
  203. </view>
  204. <view class="grid-text">用电统计</view>
  205. </u-grid-item>
  206. </u-grid>
  207. </view>
  208. </view>
  209. <!-- 设备信息 -->
  210. <view class="equipment-information">
  211. <view class="title">
  212. <view class="icon">
  213. </view>
  214. <view class="text">
  215. 设备信息
  216. </view>
  217. <view class="more" @click="equipmentInfosShow=true">
  218. 查看全部<u-icon name="arrow-right" size="24" color="#d4d4d4"></u-icon>
  219. </view>
  220. </view>
  221. <view class="infos">
  222. <view class="item" style="width: 30%;">
  223. <view class="item-title">
  224. 设备类型
  225. </view>
  226. <view class="item-value">
  227. {{meterDetail.deviceTypeN}}
  228. </view>
  229. </view>
  230. <view class="border">
  231. </view>
  232. <view class="item" style="width: 30%;">
  233. <view class="item-title">
  234. 设备编号
  235. </view>
  236. <view class="item-value">
  237. {{meterDetail.deviceNo}}
  238. </view>
  239. </view>
  240. <view class="border">
  241. </view>
  242. <view class="item" style="width: 30%;">
  243. <view class="item-title">
  244. 设备地址
  245. </view>
  246. <view class="item-value">
  247. {{meterDetail.installationAddressSimple}}
  248. </view>
  249. </view>
  250. </view>
  251. </view>
  252. <!-- 设备信息弹窗 -->
  253. <view class="equipment-popup">
  254. <u-popup v-model="equipmentInfosShow" mode="bottom" border-radius="12">
  255. <view class="content">
  256. <view class="headline">
  257. 设备信息
  258. </view>
  259. <view class="infos">
  260. <view class="item">
  261. <view class="item-title">
  262. 设备名称
  263. </view>
  264. <view class="item-value">
  265. {{meterDetail.name}}
  266. </view>
  267. </view>
  268. <view class="item">
  269. <view class="item-title">
  270. 设备类型
  271. </view>
  272. <view class="item-value">
  273. {{meterDetail.deviceTypeN}}
  274. </view>
  275. </view>
  276. <view class="item">
  277. <view class="item-title">
  278. 设备编号
  279. </view>
  280. <view class="item-value">
  281. {{meterDetail.deviceNo}}
  282. </view>
  283. </view>
  284. <view class="item">
  285. <view class="item-title">
  286. 产权单位
  287. </view>
  288. <view class="item-value">
  289. {{meterDetail.companyFullName}}
  290. </view>
  291. </view>
  292. <view class="item" @click="toMeterLocation">
  293. <view class="item-title">
  294. 设备地址
  295. </view>
  296. <view class="item-value">
  297. <span>{{meterDetail.installationAddress}}</span>
  298. <image class="img" src="@/assets/img/riFill-navigation-fill 1.svg"></image>
  299. </view>
  300. </view>
  301. <view class="item">
  302. <view class="item-title">
  303. 地址简称
  304. </view>
  305. <view class="item-value">
  306. {{meterDetail.installationAddressSimple}}
  307. </view>
  308. </view>
  309. <view class="item">
  310. <view class="item-title">
  311. 使用单位
  312. </view>
  313. <view class="item-value">
  314. {{meterDetail.customer}}
  315. </view>
  316. </view>
  317. <view class="item">
  318. <view class="item-title">
  319. 启用时间
  320. </view>
  321. <view class="item-value">
  322. {{meterDetail.enablingTime}}
  323. </view>
  324. </view>
  325. </view>
  326. <button class="get" @click="equipmentInfosShow=false">知道了</button>
  327. </view>
  328. </u-popup>
  329. </view>
  330. <!-- 故障上报 -->
  331. <view class="create-order" v-if="false">
  332. <view class="img-box">
  333. <image class="img" src="@/assets/img/fas fa-exclamation-triangle Copy 2@3x.png" mode=""></image>
  334. </view>
  335. <view class="text">
  336. 故障上报
  337. </view>
  338. </view>
  339. </view>
  340. </template>
  341. <script>
  342. import {
  343. parseUnixTime,
  344. beforeTimeStamp,
  345. getWeek
  346. } from '@/apis/utils'
  347. import * as echarts from 'echarts';
  348. import * as API from '@/apis/pagejs/index.js'
  349. import * as API_energyManage from '@/apis/pagejs/energyManage.js'
  350. import * as API_electricityMeter from '@/apis/pagejs/electricityMeter.js'
  351. import * as WxJsApi from '@/apis/utils/wxJsApi.js'
  352. export default {
  353. data() {
  354. return {
  355. meterDetail: {}, //设备信息
  356. electricity: 0, //电量统计
  357. fee: 0, //电费统计
  358. abnormalRecordsList: [], //异常list
  359. companyId: '', //企业id
  360. meterId: '', //设备id
  361. titleName: '',
  362. clickType: -1,
  363. sumQuantity: 0,
  364. sumFee: 0,
  365. equipmentInfosShow: false,
  366. kWhList: [],
  367. queryDay: '',
  368. showTop: [0, 0, 0, 0, 0, 0, 0, 0],
  369. FormData: {
  370. queryDate: '',
  371. meterId: '',
  372. type: 0
  373. },
  374. codes:"",
  375. FormData2: {
  376. queryDate: '',
  377. meterId: ''
  378. },
  379. myChart: null,
  380. endYear: '',
  381. equipmentShow: false,
  382. multiSelector: [],
  383. equipmentList: [],
  384. params: {
  385. year: true,
  386. month: true,
  387. day: true,
  388. hour: false,
  389. minute: false,
  390. second: false
  391. },
  392. tabsFrom: {
  393. show1: false,
  394. show1Index: 0,
  395. show2Index: '',
  396. show2: false,
  397. show1Text: "全部类型",
  398. show2Text: "全部时间",
  399. selector1: [{
  400. label: '全部类型',
  401. value: '',
  402. },
  403. {
  404. label: '线上充值',
  405. value: '1',
  406. },
  407. {
  408. label: '线下充值',
  409. value: '2',
  410. },
  411. ]
  412. },
  413. background: {
  414. backgroundColor: '#1677FF',
  415. },
  416. list: [{
  417. id: 1,
  418. name: '本月',
  419. disabled: false
  420. }, {
  421. id: 4,
  422. name: '今日',
  423. disabled: false
  424. }, {
  425. id: 2,
  426. name: '上月',
  427. disabled: false
  428. }, {
  429. id: 3,
  430. name: '本年',
  431. disabled: false
  432. }, {
  433. id: 0,
  434. name: '合计',
  435. disabled: false
  436. }, {
  437. id: 10,
  438. name: '指定月份',
  439. disabled: false
  440. }],
  441. value: '2',
  442. intervalId: null, // 用于存储间隔ID
  443. intervalReady: true, // 用于存储间隔ID
  444. };
  445. },
  446. onLoad(op) {
  447. if (op.id) {
  448. this.FormData.meterId = op.id;
  449. this.FormData2.meterId = op.id;
  450. this.tabsFrom.title = op.name;
  451. this.meterId = op.id;
  452. this.titleName = op.name;
  453. this.companyId = op.companyId;
  454. }
  455. this.endYear = new Date().getFullYear();
  456. this.FormData.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  457. this.FormData2.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  458. this.FormData.type = 2;
  459. this.getElectricityStatistics();
  460. this.getTimeSlotStatistics();
  461. this.getCompanyInfoList();
  462. this.getAbnormalAlarmRecord();
  463. this.getMeterDetails(this.meterId);
  464. },
  465. onReady() {
  466. WxJsApi.getWxConfig(['getLocation', 'openLocation', 'addEventListener', 'scanQRCode']).then((res) => {
  467. // //(res)
  468. }).catch(error => {
  469. //(res)
  470. })
  471. },
  472. beforeDestroy() {
  473. this.clearTimer(); // 组件销毁前清除定时器
  474. this.intervalReady = false;
  475. console.log("组件销毁前清除定时器")
  476. },
  477. methods: {
  478. switchBtnApiMethod(node,key){
  479. uni.showLoading({
  480. title: "加载中",
  481. mask: true,
  482. })
  483. API_energyManage.remoteSwitch({
  484. meterId:node.id,
  485. enabled:key
  486. }).then((res) => {
  487. uni.hideLoading();
  488. node.switchStatus=key
  489. }).catch(error => {
  490. uni.showToast({
  491. title: error,
  492. icon: "none"
  493. })
  494. })
  495. },
  496. switchBtnApi(node,key){
  497. uni.showModal({
  498. confirmColor:`${key?'#3CC51F':'red'}`,
  499. confirmText:`${key?'开启':'关闭'}`,
  500. content: `确认是否要"${key?'开启':'关闭'}"${node.name}`,
  501. title: "提示",
  502. success:res=> {
  503. if(res.confirm){
  504. this.switchBtnApiMethod(node,key);
  505. }
  506. }
  507. })
  508. console.log(node,key)
  509. },
  510. toMeterLocation() {
  511. // WxJsApi.openLocation({
  512. // latitude: parseFloat(this.meterDetail.latitude), //目的地latitude
  513. // longitude: parseFloat(this.meterDetail.longitude), //目的地longitude
  514. // name: this.meterDetail.name,
  515. // address: this.meterDetail.installationAddress,
  516. // scale: 15, //地图缩放大小,可根据情况具体调整
  517. // success(res) {
  518. // uni.hideLoading()
  519. // },
  520. // complete() {
  521. // // uni.hideLoading()
  522. // }
  523. // });
  524. },
  525. getMeterDetails(meterId) {
  526. uni.showLoading({
  527. title: "加载中",
  528. mask: true,
  529. })
  530. API_electricityMeter.meterDetails({
  531. meterId: meterId
  532. }).then((res) => {
  533. uni.hideLoading();
  534. this.meterDetail = res.data.meter;
  535. this.codes =this.carhelp.getPersonInfo().codes;
  536. }).catch(error => {
  537. uni.showToast({
  538. title: error,
  539. icon: "none"
  540. })
  541. })
  542. },
  543. clearTimer() {
  544. if (this.intervalId) {
  545. clearInterval(this.intervalId); // 清除定时器
  546. this.intervalId = null; // 重置定时器ID
  547. }
  548. },
  549. startInterval() {
  550. this.clearTimer(); // 组件销毁前清除定时器
  551. this.intervalId = setInterval(() => {
  552. // 每隔5秒运行的代码
  553. // console.log('这段代码每隔5秒运行一次');
  554. this.getElectricityStatistics(true)
  555. this.getTimeSlotStatistics(true)
  556. }, 60000);
  557. },
  558. gotoInfo(path, type, name) {
  559. if (!this.FormData.meterId) {
  560. uni.showToast({
  561. title: "未查询到电表",
  562. icon: "none"
  563. })
  564. return
  565. }
  566. uni.navigateTo({
  567. url: "/pages/equipmentDataMonitoring/" + path + "?id=" + this.FormData.meterId + "&type=" + type +
  568. "&typeName=" + name+"&title="+this.tabsFrom.title
  569. })
  570. },
  571. // 异常告警记录
  572. getAbnormalAlarmRecord() {
  573. var queryDate = parseUnixTime(new Date(), '{y}-{m}');
  574. uni.showLoading({
  575. title: "加载中",
  576. mask: true,
  577. })
  578. API.alarmRecord({
  579. queryDate: queryDate,
  580. configId: '',
  581. pageIndex: 1,
  582. pageSize: 2,
  583. companyId: this.companyId,
  584. meterId: this.meterId
  585. }).then((res) => {
  586. uni.hideLoading();
  587. this.abnormalRecordsList = res.data.data;
  588. }).catch(error => {
  589. uni.showToast({
  590. title: error,
  591. icon: "none"
  592. })
  593. })
  594. },
  595. titleCk() {
  596. if(this.tabsFrom.selector1.length){
  597. this.tabsFrom.show1 = true
  598. }
  599. },
  600. selector1confirm(e) {
  601. console.log(e)
  602. // var index = e[2];
  603. // this.tabsFrom.show1Index = index;
  604. if (e[2].value != null) {
  605. this.tabsFrom.show1Text = e[2].label;
  606. this.tabsFrom.title = e[2].label;
  607. this.FormData.meterId = e[2].value;
  608. this.FormData.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  609. this.FormData2.meterId = e[2].value;
  610. this.FormData2.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  611. //this.meterId =e[2].value;
  612. this.FormData.type = 2;
  613. this.value = '2';
  614. this.getTimeSlotStatistics();
  615. this.getElectricityStatistics();
  616. this.getMeterDetails(e[2].value);
  617. }
  618. },
  619. selector1cancel() {
  620. this.tabsFrom.show1Text = this.titleName;
  621. this.tabsFrom.title = this.titleName;
  622. this.FormData.meterId = this.meterId;
  623. this.FormData.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  624. this.FormData2.meterId = this.meterId;
  625. this.FormData2.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  626. this.FormData.type = 2;
  627. this.value = '2';
  628. this.getTimeSlotStatistics();
  629. this.getElectricityStatistics();
  630. this.getMeterDetails(this.meterId);
  631. },
  632. queryDate(queryTime, day) {
  633. if (day) {
  634. this.FormData2.queryDate = queryTime;
  635. //this.FormData2.type =day?"9":"10"
  636. //this.value="-1"
  637. this.getTimeSlotStatistics();
  638. } else {
  639. this.FormData.queryDate = queryTime + "-01";
  640. this.FormData.type = 10;
  641. this.value = "10";
  642. this.list[5].name = queryTime;
  643. this.getElectricityStatistics();
  644. }
  645. },
  646. getCompanyInfoList() {
  647. uni.showLoading({
  648. title: "加载中",
  649. mask: true,
  650. })
  651. API.deviceCompanyList().then((response) => {
  652. uni.hideLoading();
  653. var list = response.data.companyInfoList;
  654. this.tabsFrom.selector1 = [];
  655. this.tabsFrom.selector1 = list.map(item => {
  656. if (item.remoteReadingMeterList.length != 0 && item.remoteMonitorMeterList.length != 0) {
  657. return {
  658. label: item.name,
  659. value: item.id,
  660. children: [{
  661. label: '抄表',
  662. value: '1',
  663. children: item.remoteReadingMeterList.map(item => {
  664. return {
  665. label: item.name,
  666. value: item.id,
  667. }
  668. })
  669. },
  670. {
  671. label: '监控表',
  672. value: '1',
  673. children: item.remoteMonitorMeterList.map(item => {
  674. return {
  675. label: item.name,
  676. value: item.id,
  677. }
  678. })
  679. }
  680. ]
  681. }
  682. } else if (item.remoteReadingMeterList.length != 0 && item.remoteMonitorMeterList.length == 0) {
  683. return {
  684. label: item.name,
  685. value: item.id,
  686. children: [{
  687. label: '抄表',
  688. value: '1',
  689. children: item.remoteReadingMeterList.map(item => {
  690. return {
  691. label: item.name,
  692. value: item.id,
  693. }
  694. })
  695. }]
  696. }
  697. } else if (item.remoteReadingMeterList.length == 0 && item.remoteMonitorMeterList.length != 0) {
  698. return {
  699. label: item.name,
  700. value: item.id,
  701. children: [{
  702. label: '监控表',
  703. value: '1',
  704. children: item.remoteMonitorMeterList.map(item => {
  705. return {
  706. label: item.name,
  707. value: item.id,
  708. }
  709. })
  710. }]
  711. }
  712. } else {
  713. }
  714. })
  715. }).catch(error => {
  716. uni.showToast({
  717. title: error,
  718. icon: "none"
  719. })
  720. })
  721. },
  722. getTimeSlotStatistics(interval) {
  723. if (!interval) {
  724. uni.showLoading({
  725. title: "加载中",
  726. mask: true,
  727. })
  728. }
  729. this.queryDay = parseUnixTime(new Date(this.FormData2.queryDate), '{y}年{m}月{d}日');
  730. API.timeSlotStatistics(this.FormData2).then((response) => {
  731. if (!interval) {
  732. uni.hideLoading();
  733. }
  734. this.hourMap = response.data.hourMap;
  735. this.sumQuantity = response.data.kwhMap.kwh;
  736. this.sumFee = response.data.kwhMap.fee;
  737. this.getBarCharts(this.hourMap, interval);
  738. if (!interval) {
  739. this.startInterval(); // 组件挂载后开始间隔
  740. }
  741. }).catch(error => {
  742. uni.showToast({
  743. title: error,
  744. icon: "none"
  745. })
  746. })
  747. },
  748. getElectricityStatistics(interval) {
  749. if (!interval) {
  750. uni.showLoading({
  751. title: "加载中",
  752. mask: true,
  753. })
  754. }
  755. var obj = {
  756. ...this.FormData
  757. }
  758. // if(obj.type==10){
  759. // obj.queryDate+="-01"
  760. // }
  761. API.electricityStatistics(obj).then((response) => {
  762. if (!interval) {
  763. uni.hideLoading();
  764. }
  765. this.showTop = [0, 0, 0, 0, 0, 0, 0, 0]
  766. var electricity = response.data.kwhMap.kwh + "";
  767. this.electricity = response.data.kwhMap.kwh;
  768. this.fee = response.data.kwhMap.fee;
  769. if (electricity) {
  770. var sz = electricity.split(".")
  771. var str1 = sz[0];
  772. var str2 = [];
  773. if (sz.length > 1) {
  774. str2 = sz[1];
  775. this.showTop[7] = str2[0];
  776. }
  777. var j = 0;
  778. for (var i in str1) {
  779. if (i != undefined) {
  780. this.showTop[6 - str1.length + j + 1] = str1[i]
  781. }
  782. j++;
  783. }
  784. this.$forceUpdate()
  785. }
  786. if (!interval) {
  787. this.startInterval(); // 组件挂载后开始间隔
  788. }
  789. }).catch(error => {
  790. uni.showToast({
  791. title: error,
  792. icon: "none"
  793. })
  794. })
  795. },
  796. getBarCharts(list, interval) {
  797. if (!this.myChart) {
  798. this.myChart = echarts.init(document.getElementById('barEcharts'), null, {
  799. // width: uni.upx2px(700),
  800. height: uni.upx2px(480)
  801. });
  802. }
  803. if (!interval) {
  804. this.myChart.clear();
  805. }
  806. var data1 = [];
  807. var data2 = [];
  808. // var sumQuantity=0
  809. for (var i in list) {
  810. data1.push(i)
  811. data2.push(list[i].kwh)
  812. // sumQuantity+=list[i]
  813. }
  814. var axisLabel = {
  815. rotate: 40,
  816. interval: 0,
  817. textStyle: {
  818. color: "#333"
  819. }
  820. }
  821. if (data1.length < 4) {
  822. axisLabel = {
  823. interval: 0,
  824. textStyle: {
  825. color: "#333"
  826. },
  827. }
  828. }
  829. // this.sumQuantity = sumQuantity.toFixed(2);
  830. var headitemby = "";
  831. var showkey = "";
  832. var option = {
  833. tooltip: {
  834. trigger: 'axis',
  835. axisPointer: {
  836. type: 'shadow'
  837. },
  838. formatter: (value) => {
  839. var name = value[0].name;
  840. var obj=list[name]
  841. var text= `<p>${name}</p>`
  842. if (obj.electricityPrice != undefined) {
  843. text += `<p>电价:${obj.electricityPrice}元/度</p>`
  844. }
  845. if (obj.kwh != undefined) {
  846. text += `电量:${obj.kwh}度`
  847. }
  848. if (obj.amount != undefined) {
  849. text += ` <p>电费:${obj.amount}元</p>`
  850. }
  851. return text
  852. }
  853. },
  854. grid: {
  855. top: '10%',
  856. left: '3%',
  857. right: '8%',
  858. bottom: '8%',
  859. containLabel: true
  860. },
  861. xAxis: {
  862. type: 'category',
  863. data: data1,
  864. axisLabel: axisLabel,
  865. },
  866. yAxis: {
  867. type: 'value',
  868. },
  869. series: [{
  870. name: '合计',
  871. data: data2,
  872. type: 'bar',
  873. label: {
  874. show: true,
  875. position: 'top',
  876. color: '#5C7BD9'
  877. }
  878. }]
  879. }
  880. console.log(option)
  881. this.myChart.setOption(option);
  882. },
  883. selector2confirm(e) {
  884. this.tabsFrom.show2Text = e.year + "年" + e.month + "月"
  885. this.tabsFrom.show2Index = e.year + "-" + e.month
  886. if (e.day) {
  887. this.tabsFrom.show2Text += e.day + "日"
  888. this.tabsFrom.show2Index += '-' + e.day
  889. this.queryDate(this.tabsFrom.show2Index, true)
  890. } else {
  891. this.queryDate(this.tabsFrom.show2Index, false)
  892. }
  893. },
  894. selector2cancel() {
  895. if(this.clickType != -1) {
  896. this.value = this.clickType;
  897. }
  898. },
  899. selector2reset(e) {
  900. console.log(e)
  901. this.tabsFrom.show2Text = '全部时间'
  902. this.tabsFrom.show2Index = '';
  903. if (e.day) {
  904. this.FormData2.queryDate = parseUnixTime(new Date(), '{y}-{m}-{d}');
  905. this.queryDay = parseUnixTime(new Date(this.FormData2.queryDate), '{y}年{m}月{d}日');
  906. this.getTimeSlotStatistics();
  907. } else {
  908. this.FormData.type = this.clickType;
  909. this.value = this.clickType;
  910. if (this.value != 10) {
  911. this.list[5].name = '指定月份';
  912. }
  913. this.getElectricityStatistics();
  914. }
  915. },
  916. // 选中某个单选框时,由radio时触发
  917. radioChange(e) {
  918. console.log(`选择前的值: ${this.value}`);
  919. this.clickType = this.value;
  920. },
  921. // 选中任一radio时,由radio-group触发
  922. radioGroupChange(e) {
  923. console.log(e)
  924. this.FormData.type = e;
  925. if (e == 10) {
  926. this.tabsFrom.show2 = true;
  927. this.params.day = false;
  928. } else {
  929. this.list[5].name = '指定月份'
  930. this.getElectricityStatistics();
  931. }
  932. },
  933. backDataMonitoringList() {
  934. uni.navigateBack()
  935. },
  936. }
  937. };
  938. </script>
  939. <style lang="scss" scoped>
  940. page {
  941. padding-bottom: 184rpx;
  942. }
  943. /deep/.u-select__header__title {
  944. font-size: 36rpx;
  945. font-weight: bold;
  946. }
  947. .navbar-c {
  948. background-color: rgba(22, 119, 255, 1);
  949. position: fixed;
  950. top: 0;
  951. left: 0;
  952. right: 0;
  953. z-index: 999;
  954. .back {
  955. z-index: 999;
  956. width: 200rpx;
  957. }
  958. .title {
  959. color: #fff;
  960. display: flex;
  961. align-items: center;
  962. justify-content: center;
  963. }
  964. .right {
  965. .img {
  966. width: 48rpx;
  967. height: 48rpx;
  968. }
  969. }
  970. }
  971. /deep/.uicon-nav-back {
  972. color: #fff !important;
  973. }
  974. .background {
  975. background-color: rgba(22, 119, 255, 1);
  976. padding-top: 88rpx;
  977. height: 150px;
  978. //padding-bottom: 100rpx;
  979. position: relative;
  980. /deep/.u-border-bottom:after {
  981. border: none;
  982. }
  983. .u-nav-slot {
  984. margin-right: 32rpx;
  985. .img {
  986. width: 48rpx;
  987. height: 48rpx;
  988. vertical-align: middle;
  989. }
  990. }
  991. }
  992. .background::after {
  993. content: '';
  994. position: absolute;
  995. bottom:-39rpx;
  996. width: 100%;
  997. height: 40rpx; /* 弧形的高度 */
  998. background-color: rgba(22, 119, 255, 1); /* 弧形的颜色 */
  999. border-radius: 50%; /* 创建圆形 */
  1000. border-top-left-radius: 0;
  1001. border-top-right-radius: 0;
  1002. }
  1003. // // 日期
  1004. .date-box {
  1005. display: flex;
  1006. align-items: center;
  1007. justify-content: space-between;
  1008. margin: 24rpx 32rpx;
  1009. .item {
  1010. border-radius: 8px;
  1011. background-color: rgba(255, 255, 255, 0.1);
  1012. border: 1px solid rgba(255, 255, 255, 0.15);
  1013. width: 120rpx;
  1014. height: 120rpx;
  1015. color: #fff;
  1016. text-align: center;
  1017. display: flex;
  1018. flex-direction: column;
  1019. justify-content: center;
  1020. .date {
  1021. font-size: 40rpx;
  1022. }
  1023. }
  1024. .item-today {
  1025. background-color: rgba(255, 255, 255, 1);
  1026. position: relative;
  1027. .date {
  1028. color: rgba(22, 119, 255, 1);
  1029. }
  1030. .week {
  1031. color: rgba(16, 16, 16, 1);
  1032. }
  1033. .dot {
  1034. width: 10rpx;
  1035. height: 10rpx;
  1036. background-color: rgba(255, 150, 0, 1);
  1037. border-radius: 999px;
  1038. position: absolute;
  1039. bottom: -5rpx;
  1040. left: 50%;
  1041. transform: translateX(-50%);
  1042. }
  1043. }
  1044. }
  1045. // 用电量
  1046. .electricity-consumption {
  1047. background-color: #fff;
  1048. padding: 32rpx 32rpx 0rpx;
  1049. border-radius: 8px;
  1050. margin: -188rpx 32rpx 0;
  1051. position: relative;
  1052. border: 1px solid rgba(255,255,255,1);
  1053. background: linear-gradient(180deg, rgba(187,216,255,1) 0%,rgba(255,255,255,1) 63%);
  1054. // 统计
  1055. .statistics-content{
  1056. display: flex;
  1057. align-items: center;
  1058. justify-content: space-between;
  1059. .statistics-item{
  1060. width: 300rpx;
  1061. padding: 24rpx 0 24rpx 24rpx;
  1062. border-radius: 8px;
  1063. box-shadow: 0px 0px 8px 0px rgba(22,119,255,0.3);
  1064. background-color: #fff;
  1065. }
  1066. .item-title{
  1067. color: rgba(22,119,255,1);
  1068. font-size: 32rpx;
  1069. display: flex;
  1070. align-items: center;
  1071. font-weight: bold;
  1072. .img{
  1073. width: 32rpx;
  1074. height: 32rpx;
  1075. vertical-align: middle;
  1076. margin-right: 4rpx;
  1077. }
  1078. }
  1079. .item-title2{
  1080. color: rgba(129,97,255,1);
  1081. }
  1082. .item-value{
  1083. color: rgba(16,16,16,1);
  1084. font-size: 48rpx;
  1085. font-weight: bold;
  1086. margin-top: 8rpx;
  1087. overflow: hidden;
  1088. white-space: nowrap;
  1089. text-overflow: ellipsis;
  1090. text{
  1091. display: inline-block;
  1092. width: 80%;
  1093. margin-right: 4rpx;
  1094. }
  1095. }
  1096. }
  1097. .title {
  1098. color: rgba(16, 16, 16, 1);
  1099. font-size: 36rpx;
  1100. }
  1101. .degree {
  1102. display: flex;
  1103. margin-top: 32rpx;
  1104. .item {
  1105. margin-right: 6rpx;
  1106. text-align: center;
  1107. .item-text {
  1108. color: rgba(16, 16, 16, 1);
  1109. }
  1110. .item-number {
  1111. margin-top: 24rpx;
  1112. width: 72rpx;
  1113. height: 96rpx;
  1114. background-color: rgba(16, 16, 16, 1);
  1115. color: #fff;
  1116. font-size: 72rpx;
  1117. }
  1118. .decimal {
  1119. background-color: #900005;
  1120. }
  1121. }
  1122. }
  1123. // .tab {
  1124. // width: 240rpx;
  1125. // height: 0;
  1126. // border-width: 0px 48rpx 72rpx 0px;
  1127. // border-radius: 8px 8px 0 0;
  1128. // border-style: none solid solid none;
  1129. // border-color: transparent transparent #fff;
  1130. // position: absolute;
  1131. // top: -72rpx;
  1132. // left: 0rpx;
  1133. // right: 0rpx;
  1134. // color: #101010;
  1135. // color: rgba(16, 16, 16, 1);
  1136. // text-align: center;
  1137. // line-height: 72rpx;
  1138. // z-index: 999;
  1139. // text-indent: 16rpx;
  1140. // }
  1141. // .tab2 {
  1142. // width: 240rpx;
  1143. // height: 0;
  1144. // border-width: 0px 48rpx 72rpx 0px;
  1145. // border-radius: 8px 8px 0 0;
  1146. // border-style: none solid solid none;
  1147. // border-color: transparent transparent #D4DBE4;
  1148. // position: absolute;
  1149. // top: -72rpx;
  1150. // left: 210rpx;
  1151. // right: 0rpx;
  1152. // color: #777777;
  1153. // text-align: center;
  1154. // line-height: 72rpx;
  1155. // text-indent: 16rpx;
  1156. // }
  1157. .radio {
  1158. margin-top: 24rpx;
  1159. padding-left: 8rpx;
  1160. /deep/.u-radio {
  1161. margin-bottom: 8px;
  1162. min-width: 25% !important;
  1163. }
  1164. /deep/.u-radio__label{
  1165. margin-left: 24rpx;
  1166. font-size: 28rpx; ;
  1167. }
  1168. }
  1169. }
  1170. // 远程控制电源开关
  1171. .control{
  1172. display: flex;
  1173. align-items: center;
  1174. justify-content: space-between;
  1175. margin: 24rpx 32rpx;
  1176. padding: 40rpx 32rpx;
  1177. background-color: #fff;
  1178. border-radius: 8px;
  1179. .text{
  1180. color: rgba(51,51,51,1);
  1181. font-size: 36rpx;
  1182. font-weight: bold;
  1183. }
  1184. .icon{
  1185. img{
  1186. width: 64rpx;
  1187. height: 64rpx;
  1188. }
  1189. }
  1190. }
  1191. //各时段用电量
  1192. .electricity-chart {
  1193. margin: 24rpx 32rpx;
  1194. padding: 40rpx 32rpx;
  1195. background-color: #fff;
  1196. border-radius: 8px;
  1197. .title {
  1198. display: flex;
  1199. align-items: center;
  1200. margin-bottom: 40rpx;
  1201. .icon {
  1202. width: 36rpx;
  1203. height: 36rpx;
  1204. background-color: rgba(182, 212, 255, 1);
  1205. border: 6px solid rgba(22, 119, 255, 1);
  1206. border-radius: 100px;
  1207. }
  1208. .text {
  1209. color: rgba(51, 51, 51, 1);
  1210. font-size: 36rpx;
  1211. margin-left: 16rpx;
  1212. font-weight: bold;
  1213. }
  1214. .more {
  1215. margin-left: auto;
  1216. border: 1px solid rgba(187,187,187,1);
  1217. border-radius: 4px;
  1218. padding: 8rpx;
  1219. font-size: 24rpx;
  1220. }
  1221. }
  1222. .total{
  1223. text-align: center;
  1224. color: rgba(51,51,51,1);
  1225. font-weight: bold;
  1226. }
  1227. .chart {
  1228. width: 100%;
  1229. height: 500rpx;
  1230. .img {
  1231. width: 100%;
  1232. height: 440rpx;
  1233. }
  1234. }
  1235. }
  1236. .equipment-information {
  1237. margin: 24rpx 32rpx;
  1238. padding: 40rpx 0rpx;
  1239. background-color: #fff;
  1240. border-radius: 8px;
  1241. .title {
  1242. display: flex;
  1243. align-items: center;
  1244. padding: 0 32rpx;
  1245. margin-bottom: 40rpx;
  1246. .icon {
  1247. width: 36rpx;
  1248. height: 36rpx;
  1249. background-color: rgba(182, 212, 255, 1);
  1250. border: 6px solid rgba(22, 119, 255, 1);
  1251. border-radius: 100px;
  1252. }
  1253. .text {
  1254. display: flex;
  1255. align-items: center;
  1256. color: rgba(51, 51, 51, 1);
  1257. font-size: 36rpx;
  1258. margin-left: 16rpx;
  1259. font-weight: bold;
  1260. }
  1261. .date {
  1262. margin-left: auto;
  1263. }
  1264. .more {
  1265. color: #838383;
  1266. font-size: 24rpx;
  1267. margin-left: auto;
  1268. }
  1269. }
  1270. .chart {
  1271. width: 100%;
  1272. height: 440rpx;
  1273. .img {
  1274. width: 100%;
  1275. height: 440rpx;
  1276. }
  1277. }
  1278. .infos {
  1279. padding: 0 32rpx;
  1280. display: flex;
  1281. justify-content: space-between;
  1282. text-align: center;
  1283. .border {
  1284. margin: auto 0;
  1285. height: 70rpx;
  1286. width: 2rpx;
  1287. background-color: rgba(204, 204, 204, 1);
  1288. ;
  1289. }
  1290. .item-title {
  1291. color: rgba(119, 119, 119, 1);
  1292. }
  1293. .item-value {
  1294. color: rgba(16, 16, 16, 1);
  1295. font-size: 32rpx;
  1296. margin-top: 16rpx;
  1297. }
  1298. }
  1299. }
  1300. // 异常告警
  1301. .abnormal {
  1302. margin: 24rpx 32rpx;
  1303. padding: 40rpx 32rpx;
  1304. background-color: #fff;
  1305. border-radius: 8px;
  1306. .headline {
  1307. display: flex;
  1308. align-items: center;
  1309. justify-content: space-between;
  1310. }
  1311. .title {
  1312. display: flex;
  1313. align-items: center;
  1314. font-weight: bold;
  1315. .icon {
  1316. width: 36rpx;
  1317. height: 36rpx;
  1318. background-color: rgba(182, 212, 255, 1);
  1319. border: 6px solid rgba(22, 119, 255, 1);
  1320. border-radius: 100px;
  1321. }
  1322. .text {
  1323. color: rgba(51, 51, 51, 1);
  1324. font-size: 36rpx;
  1325. margin-left: 16rpx;
  1326. }
  1327. }
  1328. .more {
  1329. color: #838383;
  1330. font-size: 24rpx
  1331. }
  1332. .details {
  1333. margin-top: 40rpx;
  1334. .item {
  1335. display: flex;
  1336. align-items: center;
  1337. justify-content: space-between;
  1338. margin-top: 32rpx;
  1339. .name {
  1340. color: rgba(51, 51, 51, 1);
  1341. }
  1342. .time {
  1343. color: rgba(119, 119, 119, 1);
  1344. font-size: 24rpx;
  1345. display: flex;
  1346. align-items: center;
  1347. .more{
  1348. margin-left: 4rpx;
  1349. }
  1350. }
  1351. }
  1352. }
  1353. }
  1354. // 能源监测
  1355. .energy-inspection,
  1356. .data-analysis {
  1357. margin: 24rpx 32rpx;
  1358. padding: 40rpx 32rpx;
  1359. background-color: #fff;
  1360. border-radius: 8px;
  1361. .title {
  1362. display: flex;
  1363. align-items: center;
  1364. font-weight: bold;
  1365. .icon {
  1366. width: 36rpx;
  1367. height: 36rpx;
  1368. background-color: rgba(182, 212, 255, 1);
  1369. border: 6px solid rgba(22, 119, 255, 1);
  1370. border-radius: 100px;
  1371. }
  1372. .text {
  1373. color: rgba(51, 51, 51, 1);
  1374. font-size: 36rpx;
  1375. margin-left: 16rpx;
  1376. }
  1377. }
  1378. .grid {
  1379. .icon {
  1380. width: 128rpx;
  1381. height: 128rpx;
  1382. border-radius: 12px;
  1383. background-color: rgba(35, 186, 178, 1);
  1384. display: flex;
  1385. align-items: center;
  1386. justify-content: center;
  1387. margin-bottom: 16rpx;
  1388. .img {
  1389. width: 80rpx;
  1390. height: 80rpx;
  1391. }
  1392. }
  1393. .icon2 {
  1394. background-color: rgba(42, 186, 72, 1);
  1395. }
  1396. .icon3 {
  1397. background-color: rgba(78, 96, 246, 1);
  1398. }
  1399. .icon4 {
  1400. background-color: rgba(22, 119, 255, 1);
  1401. }
  1402. .icon5 {
  1403. background-color: rgba(35, 186, 178, 1);
  1404. }
  1405. .icon6 {
  1406. background-color: rgba(42, 186, 72, 1);
  1407. }
  1408. .icon7 {
  1409. background-color: rgba(22, 119, 255, 1);
  1410. }
  1411. .icon8 {
  1412. background-color: rgba(35, 186, 178, 1);
  1413. }
  1414. .icon9 {
  1415. background-color: rgba(42, 186, 72, 1);
  1416. }
  1417. .grid-text {
  1418. color: #333333;
  1419. }
  1420. }
  1421. }
  1422. // 设备信息弹窗
  1423. .equipment-popup {
  1424. .content {
  1425. padding: 32rpx;
  1426. .headline {
  1427. color: rgba(16, 16, 16, 1);
  1428. font-size: 36rpx;
  1429. text-align: center;
  1430. font-weight: bold;
  1431. margin-bottom: 24rpx;
  1432. }
  1433. .infos {
  1434. //padding-bottom: 100rpx;
  1435. .item:last-of-type {
  1436. border: none;
  1437. }
  1438. .item {
  1439. display: flex;
  1440. align-items: center;
  1441. line-height: 48rpx;
  1442. padding: 24rpx 0;
  1443. border-bottom: 1px solid #cccccc;
  1444. .item-title {
  1445. color: rgba(51, 51, 51, 1);
  1446. width: 200rpx;
  1447. }
  1448. .item-value {
  1449. color: #666666;
  1450. flex: 1;
  1451. margin-left: 16rpx;
  1452. display: flex;
  1453. align-items: center;
  1454. justify-content: space-between;
  1455. .img{
  1456. width: 32rpx;
  1457. height: 32rpx;
  1458. transform: rotate(90deg);
  1459. margin-left: 96rpx;
  1460. }
  1461. }
  1462. }
  1463. }
  1464. .get {
  1465. height: 80rpx;
  1466. line-height: 80rpx;
  1467. border-radius: 4px;
  1468. background-color: rgba(22, 119, 255, 1);
  1469. color: rgba(255, 255, 255, 1);
  1470. font-size: 32rpx;
  1471. }
  1472. }
  1473. }
  1474. // 创建工单
  1475. .create-order {
  1476. width: 120rpx;
  1477. height: 120rpx;
  1478. border-radius: 20px;
  1479. background: linear-gradient(180.29deg, rgba(255, 124, 112, 1) 0.9%, rgba(255, 79, 63, 1) 100.4%);
  1480. box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
  1481. text-align: center;
  1482. display: flex;
  1483. flex-direction: column;
  1484. justify-content: center;
  1485. align-items: center;
  1486. position: fixed;
  1487. right: 32rpx;
  1488. bottom: 64rpx;
  1489. .img {
  1490. width: 56rpx;
  1491. height: 56rpx;
  1492. vertical-align: middle;
  1493. }
  1494. .text {
  1495. color: rgba(255, 255, 255, 1);
  1496. font-size: 22rpx;
  1497. }
  1498. }
  1499. </style>