electronicMonitoring.vue 36 KB

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