index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div class="massMessage">
  3. <van-sticky offset-top="0">
  4. <Header :appHide="true" :isFixed="false">
  5. <template slot="right">
  6. <div @click="onCreate">新建</div>
  7. </template>
  8. </Header>
  9. <van-tabs color="#01C1B5" v-model="params.sendFlag" @change="onChange">
  10. <van-tab :name="0" title="待发送"></van-tab>
  11. <van-tab :name="1" title="已发送"></van-tab>
  12. </van-tabs>
  13. </van-sticky>
  14. <van-list v-model="loading" v-if="dataShow" :finished="finished" finished-text="- 没有更多了 -" :immediate-check="false" @load="getList">
  15. <Item v-for="(item, index) in list" :key="index" :item="item" @onDetail="onDetail" />
  16. </van-list>
  17. <m-empty v-else msg="暂无数据" />
  18. </div>
  19. </template>
  20. <script>
  21. import Header from "@/components/header";
  22. import MEmpty from "@/components/MEmpty";
  23. import Item from "./item";
  24. import { imSendGroupMessage } from "./api";
  25. export default {
  26. name: "massMessage",
  27. components: { Header, Item, MEmpty },
  28. data() {
  29. return {
  30. list: [],
  31. loading: false,
  32. finished: false,
  33. params: {
  34. sendFlag: 0,
  35. page: 1,
  36. rows: 20,
  37. },
  38. dataShow: true,
  39. };
  40. },
  41. mounted() {
  42. this.getList();
  43. },
  44. methods: {
  45. onCreate() {
  46. this.$router.push({
  47. path: "/massOperation",
  48. query: {
  49. type: "create",
  50. },
  51. });
  52. },
  53. onDetail(item) {
  54. // 未发送的可以编辑
  55. if (!item.sendFlag) {
  56. this.$router.push({
  57. path: "/massOperation",
  58. query: {
  59. type: "update",
  60. id: item.id,
  61. messageContent: item.messageContent,
  62. messageType: item.messageType,
  63. fileName: item.fileName,
  64. fileSize: item.fileSize,
  65. fileUrl: item.fileUrl,
  66. sendTime: item.sendTime,
  67. sendType: item.sendType,
  68. targetIds: item.targetIds,
  69. },
  70. });
  71. }
  72. },
  73. onChange() {
  74. this.list = [];
  75. this.params.page = 1;
  76. this.dataShow = true;
  77. this.loading = true;
  78. this.finished = false;
  79. this.getList();
  80. },
  81. async getList() {
  82. try {
  83. const params = this.params;
  84. const res = await imSendGroupMessage(this.params);
  85. const result = res.data;
  86. this.loading = false;
  87. if (params.page > result.pageNo) {
  88. return;
  89. }
  90. params.page = result.pageNo;
  91. this.list = this.list.concat(result.rows);
  92. if (params.page >= result.totalPage) {
  93. this.finished = true;
  94. }
  95. this.params.page++;
  96. // 判断是否有数据
  97. if (this.list.length <= 0) {
  98. this.dataShow = false;
  99. }
  100. } catch {
  101. this.finished = true;
  102. this.dataShow = false;
  103. }
  104. },
  105. },
  106. };
  107. </script>
  108. <style lang="less" scoped>
  109. .massMessage {
  110. min-height: 100vh;
  111. }
  112. </style>