statistics.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  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. export default {
  138. data() {
  139. return {
  140. cWidth: '400',
  141. cHeight: '400',
  142. pixelRatio: 1,
  143. canvastishiTF: false,
  144. d_id: '',
  145. start_time: +new Date() - 24 * 60 * 60 * 1000,
  146. end_time: +new Date(),
  147. titletext: ["24小时", "近一个月", "近半年", "近一年"],
  148. device_id: '',
  149. pest_name: '',
  150. wormdata: [],
  151. pickertfone: false,
  152. pickertftwo: false,
  153. indexone: 0,
  154. indextwo: 0,
  155. tishitf: false,
  156. tishi: false,
  157. toptext: ["自动统计", "手动统计"],
  158. topindex: 0,
  159. tableval: [],
  160. showCanvas:true
  161. }
  162. },
  163. watch: {
  164. pickertfone(newValue, oldValue){
  165. this.showCanvas = !newValue
  166. },
  167. pickertftwo(newValue, oldValue){
  168. this.showCanvas = !newValue
  169. },
  170. },
  171. methods: {
  172. async historys() { //获取统计虫子 自动统计 初始化统计 没有传入害虫名称
  173. const res = await this.$myRequest({
  174. url: '/api/api_gateway?method=forecast.worm_lamp.pest_statistics',
  175. data: {
  176. d_id: this.d_id,
  177. start_time: parseInt(this.start_time / 1000),
  178. end_time: parseInt(this.end_time / 1000),
  179. }
  180. })
  181. this.historydatas = res
  182. console.log(this.historydatas)
  183. if (this.historydatas.date.length == 0) {
  184. this.canvastishiTF = false
  185. this.tishitf = false
  186. } else {
  187. this.canvastishiTF = true
  188. this.tishitf = true
  189. this.wormdata = []
  190. for (var i = 0; i < res.percentage.length; i++) {
  191. this.wormdata.unshift(res.percentage[i].name_num)
  192. }
  193. this.wormdata.unshift("全部")
  194. var arr1 = []
  195. var arr2 = []
  196. var arr3 = []
  197. var xtitle = []
  198. var ringarr = []
  199. for (var i = 0; i < res.date.length; i++) {
  200. var times = new Date(res.date[i].addtime * 1000)
  201. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  202. times.getMinutes())
  203. arr1.unshift(res.date[i].temperature == "" ? "0" : res.date[i].temperature)
  204. arr2.unshift(res.date[i].humidity == "" ? "0" : res.date[i].humidity)
  205. arr3.unshift(res.date[i]._sums == "" ? "0" : res.date[i]._sums)
  206. }
  207. var maxnumarr = []
  208. for (var i = 0; i < res.percentage.length; i++) {
  209. var obj = {}
  210. obj.name = res.percentage[i].name_num
  211. obj.data = Number(res.percentage[i].sum)
  212. maxnumarr.unshift(obj)
  213. }
  214. console.log(ringarr)
  215. var temp;
  216. for (var i = 0; i < maxnumarr.length - 1; i++) {
  217. for (var j = 0; j < maxnumarr.length - 1; j++) {
  218. if (maxnumarr[j].data < maxnumarr[j + 1].data) {
  219. temp = maxnumarr[j];
  220. maxnumarr[j] = maxnumarr[j + 1];
  221. maxnumarr[j + 1] = temp;
  222. }
  223. }
  224. }
  225. if (maxnumarr.length < 15) {
  226. ringarr = maxnumarr
  227. } else {
  228. ringarr = maxnumarr.splice(0, 15)
  229. this.tableval = maxnumarr.splice(15)
  230. }
  231. var tablevalsum = 0
  232. for (var i = 0; i < maxnumarr.length; i++) {
  233. tablevalsum += maxnumarr[i].data
  234. }
  235. for (var i = 0; i < this.tableval.length; i++) {
  236. this.tableval[i].prop = this.tableval[i].data / tablevalsum
  237. }
  238. console.log(this.tableval)
  239. console.log(maxnumarr)
  240. var obj = [{
  241. name: '温度',
  242. data: arr1,
  243. color: '#00E29D'
  244. }, {
  245. name: '湿度',
  246. data: arr2,
  247. color: '#6CBBFF'
  248. }, {
  249. name: '害虫总数',
  250. data: arr3,
  251. color: '#FF3F3F'
  252. }]
  253. this.showColumn("canvasColumnA", xtitle, obj)
  254. this.showRing(ringarr)
  255. }
  256. },
  257. async history() { //获取统计虫子 //自动统计 传入害虫名称统计 在historys之后
  258. const res = await this.$myRequest({
  259. url: '/api/api_gateway?method=forecast.worm_lamp.pest_statistics',
  260. data: {
  261. pest_name: this.pest_name,
  262. d_id: this.d_id,
  263. start_time: parseInt(this.start_time / 1000),
  264. end_time: parseInt(this.end_time / 1000)
  265. }
  266. })
  267. this.historydatas = res
  268. console.log(this.historydatas)
  269. if (this.historydatas.date.length == 0) {
  270. this.canvastishiTF = false
  271. this.tishitf = false
  272. } else {
  273. this.canvastishiTF = true
  274. this.tishitf = true
  275. var arr1 = []
  276. var arr2 = []
  277. var arr3 = []
  278. var xtitle = []
  279. for (var i = 0; i < res.date.length; i++) {
  280. var times = new Date(res.date[i].addtime * 1000)
  281. xtitle.unshift(times.getMonth() + 1 + "/" + times.getDate() + "-" + times.getHours() + ":" +
  282. times.getSeconds())
  283. arr1.unshift(res.date[i].temperature == "" ? "0" : res.date[i].temperature)
  284. arr2.unshift(res.date[i].humidity == "" ? "0" : res.date[i].humidity)
  285. arr3.unshift(res.date[i]._sums == "" ? "0" : res.date[i]._sums)
  286. }
  287. var obj = [{
  288. name: '温度',
  289. data: arr1,
  290. color: '#00E29D'
  291. }, {
  292. name: '湿度',
  293. data: arr2,
  294. color: '#6CBBFF'
  295. }, {
  296. name: '害虫总数',
  297. data: arr3,
  298. color: '#FF3F3F'
  299. }]
  300. this.showColumn("canvasColumnA", xtitle, obj)
  301. }
  302. },
  303. // forecast.worm_lamp.pest_manual_statistics手动统计
  304. async selfhistorys() { //获取统计虫子 手动统计 初始化统计 不传入害虫名称
  305. const res = await this.$myRequest({
  306. url: '/api/api_gateway?method=forecast.worm_lamp.pest_manual_statistics',
  307. data: {
  308. device_id: this.d_id,
  309. start_time: parseInt(this.start_time / 1000),
  310. end_time: parseInt(this.end_time / 1000)
  311. }
  312. })
  313. console.log(res)
  314. if (res.date.length == 0) {
  315. this.tishitf = false
  316. this.canvastishiTF = false
  317. } else {
  318. this.tishitf = true
  319. this.canvastishiTF = true
  320. this.wormdata = []
  321. for (var i = 0; i < res.date.length; i++) {
  322. this.wormdata.unshift(res.date[i].pest_name)
  323. }
  324. this.wormdata.unshift("全部")
  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.getMinutes())
  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.getMinutes())
  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 = Math.floor(+new Date() - 24*60*60*1000)
  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. if(this.indextwo==0){
  460. this.pest_name = ""
  461. }else{
  462. this.pest_name = this.wormdata[this.indextwo]
  463. }
  464. if (this.topindex == 0) {
  465. this.history()
  466. } else {
  467. this.selfhistory()
  468. }
  469. },
  470. changeindex(index) {
  471. this.tableval = []
  472. this.topindex = index
  473. if (this.topindex == 0) {
  474. this.pest_name = ''
  475. this.tishitf = false
  476. this.historys()
  477. } else {
  478. this.pest_name = ''
  479. this.tishitf = false
  480. this.selfhistorys()
  481. }
  482. },
  483. showColumn(id, xtitle, xinfo) {
  484. var _self = this
  485. const ctx = uni.createCanvasContext(id, this);
  486. canvaColumnA = new uCharts({
  487. context: ctx,
  488. type: 'line',
  489. legend: {
  490. position: "top"
  491. },
  492. fontSize: 11,
  493. background: '#FFFFFF',
  494. pixelRatio: 1,
  495. animation: true,
  496. dataLabel: false,
  497. categories: xtitle,
  498. series: xinfo,
  499. enableScroll: true, //开启图表拖拽功能
  500. xAxis: {
  501. disableGrid: true,
  502. type: 'grid',
  503. gridType: 'dash',
  504. itemCount: 5, //x轴单屏显示数据的数量,默认为5个
  505. scrollShow: true, //新增是否显示滚动条,默认false
  506. // scrollAlign: 'left', //滚动条初始位置
  507. scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
  508. scrollColor: '#DEE7F7', //默认为 #A6A6A6
  509. },
  510. yAxis: {},
  511. width: _self.cWidth * 1,
  512. height: _self.cHeight * 1,
  513. extra: {
  514. line: {
  515. type: 'curve'
  516. }
  517. }
  518. });
  519. },
  520. touchLineA(e) {
  521. console.log(e)
  522. canvaColumnA.scrollStart(e);
  523. },
  524. moveLineA(e) {
  525. canvaColumnA.scroll(e);
  526. },
  527. touchEndLineA(e) {
  528. canvaColumnA.scrollEnd(e);
  529. //下面是toolTip事件,如果滚动后不需要显示,可不填写
  530. canvaColumnA.showToolTip(e, {
  531. format: function(item, category) {
  532. return category + ' ' + item.name + ':' + item.data
  533. }
  534. });
  535. },
  536. showRing(data) {
  537. var _self = this
  538. const ctx = uni.createCanvasContext('canvasRing', this);
  539. canvasRing = new uCharts({
  540. context: ctx,
  541. type: 'ring',
  542. fontSize: 11,
  543. legend: true,
  544. extra: {
  545. ring: {
  546. offsetAngle: -45,
  547. ringWidth: 40 * _self.pixelRatio,
  548. labelWidth: 15
  549. }
  550. },
  551. background: '#FFFFFF',
  552. pixelRatio: _self.pixelRatio,
  553. series: data,
  554. animation: true,
  555. width: _self.cWidth * _self.pixelRatio,
  556. height: _self.cHeight * _self.pixelRatio,
  557. disablePieStroke: true,
  558. dataLabel: true,
  559. });
  560. },
  561. touchRing(e) {
  562. canvasRing.showToolTip(e, {
  563. format: function(item) {
  564. return item.name + ':' + item.data
  565. }
  566. });
  567. },
  568. },
  569. onLoad(option) {
  570. this.d_id = option.d_id
  571. this.device_id = option.device_id
  572. this.cWidth = uni.upx2px(650);
  573. this.cHeight = uni.upx2px(500);
  574. this.historys()
  575. }
  576. }
  577. </script>
  578. <style lang="scss">
  579. .shuju_one {
  580. position: absolute;
  581. top: 84px;
  582. width: 90%;
  583. left: 5%;
  584. box-shadow: 0 0 10rpx #bcb9ca;
  585. padding-top: 20rpx;
  586. box-sizing: border-box;
  587. height: 650rpx;
  588. .canvastishi {
  589. font-size: 32rpx;
  590. position: absolute;
  591. top: 50%;
  592. left: 50%;
  593. margin-left: -64rpx;
  594. margin-top: -21rpx;
  595. }
  596. }
  597. .shuju_two {
  598. position: absolute;
  599. top: 840rpx;
  600. width: 90%;
  601. left: 5%;
  602. box-shadow: 0 0 10rpx #bcb9ca;
  603. padding-top: 20rpx;
  604. box-sizing: border-box;
  605. height: 650rpx;
  606. margin-bottom: 40rpx;
  607. .canvastishi {
  608. font-size: 32rpx;
  609. position: absolute;
  610. top: 50%;
  611. left: 50%;
  612. margin-left: -64rpx;
  613. margin-top: -21rpx;
  614. }
  615. }
  616. .shuju_table {
  617. position: absolute;
  618. top: 1510rpx;
  619. width: 90%;
  620. left: 5%;
  621. box-shadow: 0 0 10rpx #bcb9ca;
  622. padding-top: 20rpx;
  623. box-sizing: border-box;
  624. margin-bottom: 40rpx;
  625. .table {
  626. tr {
  627. display: flex;
  628. }
  629. .th,
  630. .td {
  631. padding: 5rpx;
  632. width: 240rpx;
  633. text-align: center;
  634. height: 52rpx;
  635. line-height: 52rpx;
  636. font-size: 28rpx !important;
  637. }
  638. }
  639. }
  640. .condition {
  641. position: absolute;
  642. top: 600rpx;
  643. display: flex;
  644. flex-wrap: wrap;
  645. width: 90%;
  646. left: 5%;
  647. box-shadow: 0 0 10rpx #bcb9ca;
  648. margin-bottom: 30rpx;
  649. .scroll-X {
  650. width: 95%;
  651. margin: 20rpx auto;
  652. .tr {
  653. display: flex;
  654. overflow: hidden;
  655. .th,
  656. .td {
  657. display: inline-block;
  658. padding: 5rpx;
  659. width: 240rpx;
  660. text-align: center;
  661. height: 52rpx;
  662. line-height: 52rpx;
  663. border: 2rpx solid #F1F1F1;
  664. }
  665. }
  666. }
  667. .pagenumber {
  668. display: flex;
  669. margin: 20rpx auto;
  670. button {
  671. width: 150rpx;
  672. height: 50rpx;
  673. line-height: 50rpx;
  674. font-size: 26rpx;
  675. text-align: center;
  676. background-color: #17BB89;
  677. color: #FFFFFF;
  678. }
  679. .pagenumber_page {
  680. width: 150rpx;
  681. height: 50rpx;
  682. line-height: 50rpx;
  683. font-size: 26rpx;
  684. text-align: center;
  685. }
  686. }
  687. }
  688. </style>