statistics.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. <template>
  2. <view>
  3. <view class="status_bar"></view>
  4. <view class="" style="position: relative;top: 40px;">
  5. <view style="position: fixed;z-index: 100;">
  6. <uni-nav-bar @clickLeft="clickLeft" left-icon="back" title="害虫统计"></uni-nav-bar>
  7. </view>
  8. <view class="statistics">
  9. <view class="top_text">
  10. <view :class="topindex==index?'title_text_color':'tltle_text'" v-for="(item,index) in toptext"
  11. :key="index" @click="changeindex(index)">
  12. {{item}}
  13. </view>
  14. </view>
  15. <view class="shuju_one">
  16. <p class="shuju_one_title">害虫趋势统计</p>
  17. <view class="shuju_one_btn">
  18. <view class="schedule_box">
  19. <view class="schedule" @click="pickertfone=!pickertfone">
  20. <p class="schedule_value">{{titletext[indexone]}}</p>
  21. <p class="schedule_icon">
  22. <u-icon name="arrow-down"></u-icon>
  23. </p>
  24. </view>
  25. <u-picker v-model="pickertfone" mode="selector" @confirm="confirmFun"
  26. :default-selector="[indexone]" :range="titletext"></u-picker>
  27. <view class="schedule" @click="pickertftwo=!pickertftwo" v-if="tishitf">
  28. <p class="schedule_value">{{wormdata[indextwo]}}</p>
  29. <p class="schedule_icon">
  30. <u-icon name="arrow-down"></u-icon>
  31. </p>
  32. <u-picker v-model="pickertftwo" mode="selector" @confirm="confirmFun2"
  33. :default-selector="[indextwo]" :range="wormdata"></u-picker>
  34. </view>
  35. </view>
  36. </view>
  37. <view class="canvastishi" v-if="!canvastishiTF">
  38. 暂无数据
  39. </view>
  40. <canvas v-if="canvastishiTF" canvas-id="canvasColumnA" id="canvasColumnA" class="charts" v-show="showCanvas"
  41. @touchstart="touchLineA($event)" @touchmove="moveLineA($event)"
  42. @touchend="touchEndLineA($event)" disable-scroll=true
  43. :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
  44. </view>
  45. <view class="shuju_two">
  46. <p class="shuju_one_title">害虫比例</p>
  47. <view class="canvastishi" v-if="!canvastishiTF">
  48. 暂无数据
  49. </view>
  50. <canvas v-if="canvastishiTF" canvas-id="canvasRing" id="canvasRing" class="charts" v-show="showCanvas"
  51. @touchstart="touchRing"
  52. :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
  53. </view>
  54. <view class="shuju_table" v-if="tableval.length">
  55. <table class="table">
  56. <tr class="tr">
  57. <th class="th">害虫名称</th>
  58. <th class="th">害虫数量</th>
  59. <th class="th">害虫比例</th>
  60. </tr>
  61. <tr class="tr" v-for="(item,index) in tableval" :key="index">
  62. <td class="td">{{item.name}}</td>
  63. <td class="td">{{item.data}}</td>
  64. <td class="td">{{(item.prop*100).toFixed(2)+"%"}}</td>
  65. </tr>
  66. </table>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. </template>
  72. <style lang="scss">
  73. .top_text {
  74. width: 90%;
  75. position: absolute;
  76. top: 54px;
  77. display: flex;
  78. left: 5%;
  79. .tltle_text {
  80. width: 50%;
  81. border: 2rpx solid #F0F0F0;
  82. text-align: center;
  83. }
  84. .title_text_color {
  85. width: 50%;
  86. border: 2rpx solid #64CC82;
  87. text-align: center;
  88. }
  89. }
  90. .tishi {
  91. position: absolute;
  92. top: 250rpx;
  93. left: 40%;
  94. font-size: 32rpx;
  95. color: #7A7373;
  96. }
  97. .shuju_one_title {
  98. font-size: 32rpx;
  99. font-weight: 700;
  100. width: 100%;
  101. text-align: center;
  102. margin-bottom: 20rpx;
  103. }
  104. .shuju_one_btn {
  105. width: 90%;
  106. margin: 0 auto;
  107. display: flex;
  108. justify-content: space-between;
  109. .schedule_box {
  110. display: flex;
  111. }
  112. .schedule {
  113. display: flex;
  114. width: 280rpx;
  115. height: 50rpx;
  116. border: 2rpx solid #F0F0F0;
  117. margin-left: 20rpx;
  118. .schedule_value {
  119. width: 70%;
  120. text-align: center;
  121. line-height: 50rpx;
  122. font-size: 24rpx;
  123. }
  124. .schedule_icon {
  125. width: 30%;
  126. background-color: #F2F2F2;
  127. text-align: center;
  128. line-height: 50rpx;
  129. }
  130. }
  131. }
  132. </style>
  133. <script>
  134. import uCharts from '../../../../components/js_sdk/u-charts/u-charts/u-charts.js';
  135. var canvaColumnA = null;
  136. var canvasRing = null;
  137. var newtime = +new Date()
  138. var strrttime = newtime - 24 * 60 * 60 * 1000
  139. export default {
  140. data() {
  141. return {
  142. cWidth: '400',
  143. cHeight: '400',
  144. pixelRatio: 1,
  145. canvastishiTF: false,
  146. d_id: '',
  147. start_time: strrttime,
  148. end_time: newtime,
  149. titletext: ["24小时", "近一个月", "近半年", "近一年"],
  150. device_id: '',
  151. pest_name: '',
  152. wormdata: [],
  153. pickertfone: false,
  154. pickertftwo: false,
  155. indexone: 0,
  156. indextwo: 0,
  157. tishitf: false,
  158. tishi: false,
  159. toptext: ["自动统计", "手动统计"],
  160. topindex: 0,
  161. tableval: [],
  162. showCanvas:true
  163. }
  164. },
  165. watch: {
  166. pickertfone(newValue, oldValue){
  167. this.showCanvas = !newValue
  168. },
  169. pickertftwo(newValue, oldValue){
  170. this.showCanvas = !newValue
  171. },
  172. },
  173. methods: {
  174. async historys() { //获取统计虫子 自动统计 初始化统计 没有传入害虫名称
  175. const res = await this.$myRequest({
  176. url: '/api/api_gateway?method=forecast.worm_lamp.pest_statistics',
  177. data: {
  178. d_id: this.d_id,
  179. start_time: parseInt(this.start_time / 1000),
  180. end_time: parseInt(this.end_time / 1000),
  181. }
  182. })
  183. this.historydatas = res
  184. console.log(this.historydatas)
  185. if (this.historydatas.date.length == 0) {
  186. this.canvastishiTF = false
  187. this.tishitf = false
  188. } else {
  189. this.canvastishiTF = true
  190. this.tishitf = true
  191. this.wormdata = []
  192. for (var i = 0; i < res.percentage.length; i++) {
  193. this.wormdata.unshift(res.percentage[i].name_num)
  194. }
  195. var arr1 = []
  196. var arr2 = []
  197. var arr3 = []
  198. var xtitle = []
  199. var ringarr = []
  200. for (var i = 0; i < res.date.length; i++) {
  201. var times = new Date(res.date[i].addtime * 1000)
  202. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  203. times.getSeconds())
  204. arr1.unshift(res.date[i].temperature == "" ? "0" : res.date[i].temperature)
  205. arr2.unshift(res.date[i].humidity == "" ? "0" : res.date[i].humidity)
  206. arr3.unshift(res.date[i]._sums == "" ? "0" : res.date[i]._sums)
  207. }
  208. var maxnumarr = []
  209. for (var i = 0; i < res.percentage.length; i++) {
  210. var obj = {}
  211. obj.name = res.percentage[i].name_num
  212. obj.data = Number(res.percentage[i].num)
  213. maxnumarr.unshift(obj)
  214. }
  215. console.log(ringarr)
  216. var temp;
  217. for (var i = 0; i < maxnumarr.length - 1; i++) {
  218. for (var j = 0; j < maxnumarr.length - 1; j++) {
  219. if (maxnumarr[j].data < maxnumarr[j + 1].data) {
  220. temp = maxnumarr[j];
  221. maxnumarr[j] = maxnumarr[j + 1];
  222. maxnumarr[j + 1] = temp;
  223. }
  224. }
  225. }
  226. if (maxnumarr.length < 15) {
  227. ringarr = maxnumarr
  228. } else {
  229. ringarr = maxnumarr.splice(0, 15)
  230. this.tableval = maxnumarr.splice(15)
  231. }
  232. var tablevalsum = 0
  233. for (var i = 0; i < maxnumarr.length; i++) {
  234. tablevalsum += maxnumarr[i].data
  235. }
  236. for (var i = 0; i < this.tableval.length; i++) {
  237. this.tableval[i].prop = this.tableval[i].data / tablevalsum
  238. }
  239. console.log(this.tableval)
  240. console.log(maxnumarr)
  241. var obj = [{
  242. name: '温度',
  243. data: arr1,
  244. color: '#00E29D'
  245. }, {
  246. name: '湿度',
  247. data: arr2,
  248. color: '#6CBBFF'
  249. }, {
  250. name: '害虫总数',
  251. data: arr3,
  252. color: '#FF3F3F'
  253. }]
  254. this.showColumn("canvasColumnA", xtitle, obj)
  255. this.showRing(ringarr)
  256. }
  257. },
  258. async history() { //获取统计虫子 //自动统计 传入害虫名称统计 在historys之后
  259. const res = await this.$myRequest({
  260. url: '/api/api_gateway?method=forecast.worm_lamp.pest_statistics',
  261. data: {
  262. pest_name: this.pest_name,
  263. d_id: this.d_id,
  264. start_time: parseInt(this.start_time / 1000),
  265. end_time: parseInt(this.end_time / 1000)
  266. }
  267. })
  268. this.historydatas = res
  269. console.log(this.historydatas)
  270. if (this.historydatas.date.length == 0) {
  271. this.canvastishiTF = false
  272. this.tishitf = false
  273. } else {
  274. this.canvastishiTF = true
  275. this.tishitf = true
  276. var arr1 = []
  277. var arr2 = []
  278. var arr3 = []
  279. var xtitle = []
  280. for (var i = 0; i < res.date.length; i++) {
  281. var times = new Date(res.date[i].addtime * 1000)
  282. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  283. times.getSeconds())
  284. arr1.unshift(res.date[i].temperature == "" ? "0" : res.date[i].temperature)
  285. arr2.unshift(res.date[i].humidity == "" ? "0" : res.date[i].humidity)
  286. arr3.unshift(res.date[i]._sums == "" ? "0" : res.date[i]._sums)
  287. }
  288. var obj = [{
  289. name: '温度',
  290. data: arr1,
  291. color: '#00E29D'
  292. }, {
  293. name: '湿度',
  294. data: arr2,
  295. color: '#6CBBFF'
  296. }, {
  297. name: '害虫总数',
  298. data: arr3,
  299. color: '#FF3F3F'
  300. }]
  301. this.showColumn("canvasColumnA", xtitle, obj)
  302. }
  303. },
  304. // forecast.worm_lamp.pest_manual_statistics手动统计
  305. async selfhistorys() { //获取统计虫子 手动统计 初始化统计 不传入害虫名称
  306. const res = await this.$myRequest({
  307. url: '/api/api_gateway?method=forecast.worm_lamp.pest_manual_statistics',
  308. data: {
  309. device_id: this.d_id,
  310. start_time: parseInt(this.start_time / 1000),
  311. end_time: parseInt(this.end_time / 1000)
  312. }
  313. })
  314. console.log(res)
  315. if (res.date.length == 0) {
  316. this.tishitf = false
  317. this.canvastishiTF = false
  318. } else {
  319. this.tishitf = true
  320. this.canvastishiTF = true
  321. this.wormdata = []
  322. for (var i = 0; i < res.date.length; i++) {
  323. this.wormdata.unshift(res.date[i].pest_name)
  324. }
  325. var arr1 = []
  326. var xtitle = []
  327. var ringarr = []
  328. for (var i = 0; i < res.date.length; i++) {
  329. var times = new Date(res.date[i].add_time * 1000)
  330. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  331. times.getSeconds())
  332. arr1.unshift(res.date[i].pest_num == "" ? "0" : res.date[i].pest_num)
  333. var obj = {}
  334. obj.name = res.date[i].pest_name
  335. obj.data = Number(res.date[i].pest_num)
  336. ringarr.unshift(obj)
  337. }
  338. var obj = [{
  339. name: '害虫总数',
  340. data: arr1,
  341. color: '#00E29D'
  342. }]
  343. this.showColumn("canvasColumnA", xtitle, obj)
  344. this.showRing(ringarr)
  345. }
  346. },
  347. async selfhistory() { //获取统计虫子 //手动统计 传入害虫名称
  348. const res = await this.$myRequest({
  349. url: '/api/api_gateway?method=forecast.worm_lamp.pest_manual_statistics',
  350. data: {
  351. pest_name: this.pest_name,
  352. device_id: this.d_id,
  353. start_time: parseInt(this.start_time / 1000),
  354. end_time: parseInt(this.end_time / 1000)
  355. }
  356. })
  357. this.historydatas = res
  358. console.log(this.historydatas)
  359. if (res.date.length == 0) {
  360. this.tishitf = false
  361. this.canvastishiTF = false
  362. } else {
  363. this.tishitf = true
  364. this.canvastishiTF = true
  365. var arr1 = []
  366. var xtitle = []
  367. for (var i = 0; i < res.pests.pest_list.length; i++) {
  368. var times = new Date(res.pests.pest_list[i].add_time * 1000)
  369. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  370. times.getSeconds())
  371. arr1.unshift(res.pests.pest_list[i].pest_num == "" ? "0" : res.pests.pest_list[i].pest_num)
  372. }
  373. var obj = [{
  374. name: '害虫总数',
  375. data: arr1,
  376. color: '#00E29D'
  377. }]
  378. this.showColumn("canvasColumnA", xtitle, obj)
  379. }
  380. },
  381. clickLeft() {
  382. uni.navigateBack({
  383. delta: 1
  384. })
  385. },
  386. confirmFun(index) {
  387. this.indexone = index[0]
  388. var now = new Date()
  389. this.$forceUpdate()
  390. if (index[0] == 0) {
  391. this.start_time = strrttime
  392. if (this.topindex == 0) {
  393. if (this.pest_name == '') {
  394. this.historys()
  395. } else {
  396. this.history()
  397. }
  398. } else {
  399. if (this.pest_name == '') {
  400. this.selfhistorys()
  401. } else {
  402. this.selfhistory()
  403. }
  404. }
  405. } else if (index[0] == 1) {
  406. var oldtime = now.setMonth(now.getMonth() - 1)
  407. this.start_time = parseInt(oldtime)
  408. if (this.topindex == 0) {
  409. if (this.pest_name == '') {
  410. this.historys()
  411. } else {
  412. this.history()
  413. }
  414. } else {
  415. if (this.pest_name == '') {
  416. this.selfhistorys()
  417. } else {
  418. this.selfhistory()
  419. }
  420. }
  421. } else if (index[0] == 2) {
  422. var oldtime = now.setMonth(now.getMonth() - 6)
  423. this.start_time = parseInt(oldtime)
  424. if (this.topindex == 0) {
  425. if (this.pest_name == '') {
  426. this.historys()
  427. } else {
  428. this.history()
  429. }
  430. } else {
  431. if (this.pest_name == '') {
  432. this.selfhistorys()
  433. } else {
  434. this.selfhistory()
  435. }
  436. }
  437. } else if (index[0] == 3) {
  438. var oldtime = now.setFullYear(now.getFullYear() - 1)
  439. this.start_time = parseInt(oldtime)
  440. if (this.topindex == 0) {
  441. if (this.pest_name == '') {
  442. this.historys()
  443. } else {
  444. this.history()
  445. }
  446. } else {
  447. if (this.pest_name == '') {
  448. this.selfhistorys()
  449. } else {
  450. this.selfhistory()
  451. }
  452. }
  453. }
  454. },
  455. confirmFun2(index) {
  456. console.log(index)
  457. console.log(this.wormdata)
  458. this.indextwo = index[0]
  459. this.pest_name = this.wormdata[this.indextwo]
  460. if (this.topindex == 0) {
  461. this.history()
  462. } else {
  463. this.selfhistory()
  464. }
  465. },
  466. changeindex(index) {
  467. this.tableval = []
  468. this.topindex = index
  469. if (this.topindex == 0) {
  470. this.pest_name = ''
  471. this.tishitf = false
  472. this.historys()
  473. } else {
  474. this.pest_name = ''
  475. this.tishitf = false
  476. this.selfhistorys()
  477. }
  478. },
  479. showColumn(id, xtitle, xinfo) {
  480. var _self = this
  481. canvaColumnA = new uCharts({
  482. canvasId: id,
  483. type: 'line',
  484. legend: {
  485. position: "top"
  486. },
  487. fontSize: 11,
  488. background: '#FFFFFF',
  489. pixelRatio: 1,
  490. animation: true,
  491. dataLabel: false,
  492. categories: xtitle,
  493. series: xinfo,
  494. enableScroll: true, //开启图表拖拽功能
  495. xAxis: {
  496. disableGrid: true,
  497. type: 'grid',
  498. gridType: 'dash',
  499. itemCount: 5, //x轴单屏显示数据的数量,默认为5个
  500. scrollShow: true, //新增是否显示滚动条,默认false
  501. // scrollAlign: 'left', //滚动条初始位置
  502. scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
  503. scrollColor: '#DEE7F7', //默认为 #A6A6A6
  504. },
  505. yAxis: {},
  506. width: _self.cWidth * 1,
  507. height: _self.cHeight * 1,
  508. extra: {
  509. line: {
  510. type: 'curve'
  511. }
  512. }
  513. });
  514. },
  515. touchLineA(e) {
  516. console.log(e)
  517. canvaColumnA.scrollStart(e);
  518. },
  519. moveLineA(e) {
  520. canvaColumnA.scroll(e);
  521. },
  522. touchEndLineA(e) {
  523. canvaColumnA.scrollEnd(e);
  524. //下面是toolTip事件,如果滚动后不需要显示,可不填写
  525. canvaColumnA.showToolTip(e, {
  526. format: function(item, category) {
  527. return category + ' ' + item.name + ':' + item.data
  528. }
  529. });
  530. },
  531. showRing(data) {
  532. var _self = this
  533. canvasRing = new uCharts({
  534. canvasId: "canvasRing",
  535. type: 'ring',
  536. fontSize: 11,
  537. legend: true,
  538. extra: {
  539. pie: {
  540. offsetAngle: -45,
  541. ringWidth: 40 * _self.pixelRatio,
  542. labelWidth: 15
  543. }
  544. },
  545. background: '#FFFFFF',
  546. pixelRatio: _self.pixelRatio,
  547. series: data,
  548. animation: true,
  549. width: _self.cWidth * _self.pixelRatio,
  550. height: _self.cHeight * _self.pixelRatio,
  551. disablePieStroke: true,
  552. dataLabel: true,
  553. });
  554. },
  555. touchRing(e) {
  556. canvasRing.showToolTip(e, {
  557. format: function(item) {
  558. return item.name + ':' + item.data
  559. }
  560. });
  561. },
  562. },
  563. onLoad(option) {
  564. this.d_id = option.d_id
  565. this.device_id = option.device_id
  566. this.cWidth = uni.upx2px(650);
  567. this.cHeight = uni.upx2px(500);
  568. this.historys()
  569. }
  570. }
  571. </script>
  572. <style lang="scss">
  573. .shuju_one {
  574. position: absolute;
  575. top: 84px;
  576. width: 90%;
  577. left: 5%;
  578. box-shadow: 0 0 10rpx #bcb9ca;
  579. padding-top: 20rpx;
  580. box-sizing: border-box;
  581. height: 650rpx;
  582. .canvastishi {
  583. font-size: 32rpx;
  584. position: absolute;
  585. top: 50%;
  586. left: 50%;
  587. margin-left: -64rpx;
  588. margin-top: -21rpx;
  589. }
  590. }
  591. .shuju_two {
  592. position: absolute;
  593. top: 840rpx;
  594. width: 90%;
  595. left: 5%;
  596. box-shadow: 0 0 10rpx #bcb9ca;
  597. padding-top: 20rpx;
  598. box-sizing: border-box;
  599. height: 650rpx;
  600. margin-bottom: 40rpx;
  601. .canvastishi {
  602. font-size: 32rpx;
  603. position: absolute;
  604. top: 50%;
  605. left: 50%;
  606. margin-left: -64rpx;
  607. margin-top: -21rpx;
  608. }
  609. }
  610. .shuju_table {
  611. position: absolute;
  612. top: 1510rpx;
  613. width: 90%;
  614. left: 5%;
  615. box-shadow: 0 0 10rpx #bcb9ca;
  616. padding-top: 20rpx;
  617. box-sizing: border-box;
  618. margin-bottom: 40rpx;
  619. .table {
  620. tr {
  621. display: flex;
  622. }
  623. .th,
  624. .td {
  625. padding: 5rpx;
  626. width: 240rpx;
  627. text-align: center;
  628. height: 52rpx;
  629. line-height: 52rpx;
  630. font-size: 28rpx !important;
  631. }
  632. }
  633. }
  634. .condition {
  635. position: absolute;
  636. top: 600rpx;
  637. display: flex;
  638. flex-wrap: wrap;
  639. width: 90%;
  640. left: 5%;
  641. box-shadow: 0 0 10rpx #bcb9ca;
  642. margin-bottom: 30rpx;
  643. .scroll-X {
  644. width: 95%;
  645. margin: 20rpx auto;
  646. .tr {
  647. display: flex;
  648. overflow: hidden;
  649. .th,
  650. .td {
  651. display: inline-block;
  652. padding: 5rpx;
  653. width: 240rpx;
  654. text-align: center;
  655. height: 52rpx;
  656. line-height: 52rpx;
  657. border: 2rpx solid #F1F1F1;
  658. }
  659. }
  660. }
  661. .pagenumber {
  662. display: flex;
  663. margin: 20rpx auto;
  664. button {
  665. width: 150rpx;
  666. height: 50rpx;
  667. line-height: 50rpx;
  668. font-size: 26rpx;
  669. text-align: center;
  670. background-color: #17BB89;
  671. color: #FFFFFF;
  672. }
  673. .pagenumber_page {
  674. width: 150rpx;
  675. height: 50rpx;
  676. line-height: 50rpx;
  677. font-size: 26rpx;
  678. text-align: center;
  679. }
  680. }
  681. }
  682. </style>