移动端浏览器处理吊坠报警。
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123 行
3.5KB

  1. <template>
  2. <div style="height: calc(100vh - 2.5rem); overflow: auto; margin-top: 1.3rem;">
  3. <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
  4. <van-list
  5. v-model="loading"
  6. :finished="finished"
  7. :finished-text="finishedText"
  8. @load="onLoad"
  9. >
  10. <van-cell v-for="item in list" :key="item.id" class="panel-container">
  11. <van-panel :title="`${item.userName ? item.userName : ''} ${item.userMobile ? item.userMobile : ''}`" :desc="`${item.createTime}`" status="紧急报警">
  12. <div class="panel-content">
  13. <div style="font-size: 0.27rem;" v-if="item.address && item.longitude !== 0 && item.latitude !== 0">设备{{item.imei}},在{{item.address}}附近发起紧急报警。</div>
  14. <div style="font-size: 0.27rem;" v-else>设备{{item.imei}}, {{item.address}}</div>
  15. <div style="text-align: right">
  16. <van-button size="small" type="primary" @click.native="handleDetailAlarm(item)">处理</van-button>
  17. </div>
  18. </div>
  19. </van-panel>
  20. </van-cell>
  21. </van-list>
  22. </van-pull-refresh>
  23. </div>
  24. </template>
  25. <script>
  26. import { Toast, Dialog } from "vant";
  27. import { mapGetters, mapActions } from "vuex";
  28. export default {
  29. data() {
  30. return {
  31. list: [],
  32. dialogLoading: false,
  33. loading: false,
  34. finished: false,
  35. refreshing: false,
  36. page: 1,
  37. finishedText: '已经到底啦~~'
  38. };
  39. },
  40. computed: {
  41. ...mapGetters(["alarmList"]),
  42. },
  43. methods: {
  44. ...mapActions({
  45. getAlarmList: "alarm/fetchAlarmList",
  46. handleAlarms: "alarm/handleAlarms"
  47. }),
  48. onLoad() {
  49. setTimeout(() => {
  50. if (this.refreshing) {
  51. this.list = [];
  52. this.refreshing = false;
  53. }
  54. this.getAlarmList(`startTime=&endTime=&state=0&limit=10&page=${this.page}&type=0&sidx=&order=asc&serviceTime=1`).then((res) => {
  55. this.loading = false;
  56. if (res.code === 0) {
  57. this.list.push(...this.alarmList);
  58. if (this.page == res.totalPage) {
  59. this.finishedText = '已经到底啦~~'
  60. this.finished = true;
  61. }
  62. this.page++;
  63. } else {
  64. this.finished = true;
  65. this.finishedText = '服务器异常,请稍后重试~~'
  66. }
  67. });
  68. }, 500);
  69. },
  70. onRefresh() {
  71. // 清空列表数据
  72. this.finished = false;
  73. // 重新加载数据
  74. // 将 loading 设置为 true,表示处于加载状态
  75. this.loading = true;
  76. this.page = 1;
  77. this.onLoad();
  78. },
  79. handleDetailAlarm(alarm) {
  80. Dialog.confirm({
  81. title: '报警处理',
  82. message: '是否处理该紧急报警?',
  83. beforeClose: (action, done) => {
  84. if (action === 'confirm') {
  85. this.handleAlarms([alarm.id]).then(res => {
  86. if (res.code === 0) {
  87. Toast.success('处理成功!');
  88. this.list = []
  89. this.onRefresh()
  90. }
  91. done()
  92. })
  93. } else done()
  94. }
  95. }).catch(() => {
  96. console.log('返回')
  97. })
  98. }
  99. },
  100. };
  101. </script>
  102. <style lang="less">
  103. .panel-container {
  104. margin-bottom: 5px;
  105. .panel-content {
  106. padding: 0.26667rem 0.4rem;
  107. }
  108. }
  109. .van-hairline--top-bottom::after {
  110. border: none !important;
  111. }
  112. .van-cell {
  113. padding-bottom: 0 !important;
  114. .van-cell__title {
  115. flex: 3;
  116. }
  117. }
  118. </style>