export.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <template>
  2. <view class="processWrapper exportBody ">
  3. <view style="height:98rpx"></view>
  4. <view class="ding">
  5. <!-- <calendar></calendar> -->
  6. <view class="example-body">
  7. <uni-datetime-picker v-model="datetimerange" type="datetimerange" start-placeholder="请选择开始时间"
  8. end-placeholder="请选择结束时间" start="2000-3-20 12:00:00" end="2025-10-20 20:00:00" rangeSeparator="至" />
  9. </view>
  10. </view>
  11. <block>
  12. <view class="processList">
  13. <view class="cu-list menu-avatar">
  14. <view class="cu-item" v-for="(item,index) in getExportData" :key="index">
  15. <view class="cu-avatar lg">
  16. <image class="image-bg" :src="item.clzt==0?'/static/process-icon.png':'/static/processed-icon.png'"/>
  17. <!-- <image class="image-bg"
  18. :src="item.device_state=='离线'?'/static/device-icon.png':'/static/device-icon.png'" /> -->
  19. </view>
  20. <view class="content">
  21. <view class="pro-title">
  22. <view class="cut" >{{item.owner_name}}</view>
  23. </view>
  24. <view class="pro-des ">
  25. <view class="text-cut">{{item.unitinfo}}</view>
  26. </view>
  27. <view class="pro-date ">{{item.time}}</view>
  28. </view>
  29. <view class="action" style="z-index:99">
  30. <view class="unProcess" v-if="item.clzt==0">未处理</view>
  31. <view class="processed" v-else>已处理</view>
  32. <!-- <view :class="item.device_state=='离线'?'':'processed'">{{item.device_state}}</view> -->
  33. </view>
  34. </view>
  35. <view class=" text-center margin-top" v-if="!this.getExportData.length&&this.dataRes">暂无数据...</view>
  36. <view v-show="isLoadMore&&page>1">
  37. <uni-load-more :status="loadStatus"></uni-load-more>
  38. </view>
  39. </view>
  40. </view>
  41. </block>
  42. <view v-if="this.getExportData.length>0" class="padding-lr padding-bottom-lg bg-white" style="position:fixed;bottom:0;width:100%">
  43. <view class="btn-area">
  44. <button class="bg-blue round missReport margin-top" @tap="exportButton()">导 出 </button>
  45. </view>
  46. </view>
  47. </view>
  48. </template>
  49. <script>
  50. export default {
  51. data() {
  52. return {
  53. getExportData: [],
  54. dataRes: 0,
  55. datetimerange: ['', ''],
  56. keyWords:'',
  57. type:0,
  58. start_time:'',
  59. end_time:'',
  60. page: 1,
  61. pageSize: 10,
  62. loadStatus: 'loading', //加载样式:more-加载前样式,loading-加载中样式,nomore-没有数据样式
  63. isLoadMore: false, //是否加载中
  64. };
  65. },
  66. onLoad: function(option) {
  67. this.type=option.type
  68. this.getData({
  69. "company_code": uni.getStorageSync('selectedCode'),
  70. "type":this.type,
  71. "start_time": this.start_time,
  72. "end_time": this.end_time,
  73. "page": this.page,
  74. "pageSize": this.pageSize,
  75. })
  76. },
  77. watch: {
  78. datetimerange(newval) {
  79. this.start_time=newval[0];
  80. this.end_time=newval[1]
  81. this.getExportData = [],
  82. this.page = 1,
  83. this.getData({
  84. "company_code": uni.getStorageSync('selectedCode'),
  85. "type":this.type,
  86. "start_time":newval[0],
  87. "end_time": newval[1],
  88. "page": this.page,
  89. "pageSize": this.pageSize,
  90. })
  91. }
  92. },
  93. onReachBottom() { //上拉触底函数
  94. if (!this.isLoadMore) { //此处判断,上锁,防止重复请求
  95. this.isLoadMore = true
  96. this.page += 1
  97. this.getData({
  98. "company_code": uni.getStorageSync('selectedCode'),
  99. "type":this.type,
  100. "start_time": this.start_time,
  101. "end_time": this.end_time,
  102. "page": this.page,
  103. "pageSize": this.pageSize,
  104. })
  105. }
  106. // alert(this.page)
  107. },
  108. methods: {
  109. async getData(params = {}) {
  110. const res = await this.$myRequest({
  111. url: 'ComprehensiveAlarm/getIntegratedAlarmList', //综合告警列表渲染
  112. data: params,
  113. showLoading: true
  114. })
  115. this.dataRes = 1;
  116. if (res.data.data.length) {
  117. this.getExportData = this.getExportData.concat(res.data.data)
  118. if (res.data.data.length < this.pageSize) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
  119. this.isLoadMore = true
  120. this.loadStatus = 'nomore'
  121. } else {
  122. this.isLoadMore = false
  123. }
  124. } else {
  125. this.isLoadMore = true
  126. this.loadStatus = 'nomore'
  127. }
  128. },
  129. exportButton() {
  130. //#ifdef H5
  131. var start_time =this.datetimerange[0]?`start_time/${this.datetimerange[0]}/`:'';
  132. var end_time =this.datetimerange[1]?`end_time/${this.datetimerange[1]}/`:'';
  133. let exportUrl = this.$BASE_URL+
  134. `ExportModule/getIntegratedAlarmListExpor/${start_time}${end_time}type/${this.type}/company_code/${uni.getStorageSync('selectedCode')}/`
  135. // alert(exportUrl)
  136. var ua = window.navigator.userAgent.toLowerCase();
  137. if (ua.match(/MicroMessenger/i) == 'micromessenger') {
  138. uni.showModal({
  139. showCancel: false,
  140. content: '如需下载,请在默认浏览器中操作',
  141. success: function(res) {
  142. window.location.href = exportUrl;
  143. }
  144. });
  145. } else {
  146. window.location.href = exportUrl;
  147. }
  148. //#endif
  149. }
  150. }
  151. }
  152. </script>
  153. <style lang="scss">
  154. </style>