actFissionList.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  6. <meta name="description" content="活动">
  7. <title></title>
  8. <link rel="icon" href="../static/img/favicon2.ico" type="img/x-ico">
  9. <link rel="stylesheet" href="../static/css/index.css?v=1.0.0.6">
  10. <link rel="stylesheet" href="../static/css/vant.css" />
  11. <script src="../static/js/vender/vue/vue.min.js"></script>
  12. <script src="../static/js/vender/vue/vant.min.js"></script>
  13. <script src="../static/js/vender/config.js"></script>
  14. <style>
  15. .header{
  16. display: flex;
  17. height: 0.88rem;
  18. align-items: center;
  19. box-shadow: 0 0.01rem 0.14rem 0 rgba(184, 184, 184, 0.47);
  20. }
  21. .page-title{
  22. flex: 1;
  23. text-align: center;
  24. font-size: 0.36rem;
  25. color: #333333;
  26. }
  27. .back{
  28. width: 0.2rem;
  29. height: 0.34rem;
  30. margin-left: 0.2rem;
  31. }
  32. .item{
  33. display: flex;
  34. align-items: center;
  35. margin: 0.32rem 0 0 0.58rem;
  36. }
  37. .right{
  38. flex: 1;
  39. margin-left: 0.43rem;
  40. }
  41. .icon{
  42. width: 1.8rem;
  43. height: 1.36rem;
  44. }
  45. .titles{
  46. font-size: 0.3rem;
  47. color: #333333;
  48. }
  49. .contents{
  50. margin-top: 0.2rem;
  51. font-size: 0.24rem;
  52. color: #999999;
  53. text-overflow: -o-ellipsis-lastline;
  54. overflow: hidden;
  55. text-overflow: ellipsis;
  56. display: -webkit-box;
  57. -webkit-line-clamp: 2;
  58. line-clamp: 2;
  59. -webkit-box-orient: vertical;
  60. }
  61. .no-content{
  62. width: 3.74rem;
  63. height: 3.14rem;
  64. position: fixed;
  65. top: 50%;
  66. left: 50%;
  67. transform: translate(-50%,-50%);
  68. }
  69. </style>
  70. </head>
  71. <body>
  72. <div id="app" v-cloak class="app container">
  73. <van-list v-model="loading" :finished-text="finishedText" :finished="finished"
  74. :immediate-check=false @load="onLoad">
  75. <div v-for="(item,index) in tagList" :key="index" class="item" @click="toDetail(item)">
  76. <img :src="fileCenterApi + `/file-center/fileOperate/getImage?id=${item.fileId}`" class="icon" alt="">
  77. <div class="right">
  78. <div class="titles">{{item.strategyTitle}}</div>
  79. <div class="contents">{{getContent(index,item.content)}}</div>
  80. </div>
  81. </div>
  82. </van-list>
  83. <img v-if="noData" src="../static/offImg/no-content.png" class="no-content" alt="" />
  84. </div>
  85. <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
  86. <script src="../static/js/vender/vue/axios.min.js"></script>
  87. <script src="../static/js/vender/vue/config.js"></script>
  88. <script src="../static/js/vender/vue/api.js"></script>
  89. <script type="text/javascript">
  90. var u = navigator.userAgent,
  91. app = navigator.appVersion;
  92. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
  93. var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  94. new Vue({
  95. el: '#app',
  96. data: {
  97. noData: true,
  98. loading: false,
  99. title: '',
  100. finishedText: '',
  101. finished: false,
  102. pageNum: 1,
  103. tagList: []
  104. },
  105. mounted() {
  106. let dom = document.getElementsByTagName('title')[0];
  107. this.title = decodeURIComponent(GetRequest().title);
  108. dom.innerText = this.title;
  109. setTimeout(() => {
  110. this.getQueryByTag();//获取标签列表
  111. })
  112. },
  113. methods: {
  114. getQueryByTag(){
  115. this.$toast.loading({
  116. duration: 0,
  117. message: '加载中...',
  118. forbidClick: true,
  119. loadingType: 'spinner',
  120. });
  121. // 获取标签列表
  122. getQueryByTag(GetRequest().token, {
  123. tagId: +GetRequest().id,
  124. pageNum: this.pageNum,
  125. pageSize: 10
  126. }).then(res => {
  127. this.$toast.clear();
  128. if (res.status === 0) {
  129. this.loading = false //取消正在加载状态
  130. this.noData = false;
  131. let infolist = res.data.actFissionStrategyList;
  132. if (infolist) {
  133. this.tagList = this.tagList.concat(infolist);
  134. if (this.tagList.length >= 10) {
  135. this.finishedText = '没有更多了'
  136. }
  137. if(this.tagList.length == 0){
  138. this.noData = true;
  139. }
  140. if (this.tagList.length >= res.data.total) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
  141. this.finished = true;
  142. }
  143. } else {
  144. this.finished = true;
  145. }
  146. } else {
  147. this.loading = false //取消正在加载状态
  148. this.noData = true;
  149. // this.$toast(res.msg);
  150. }
  151. })
  152. },
  153. //滚动加载时触发,list组件定义的方法
  154. onLoad() {
  155. let times = setTimeout(() => {
  156. this.pageNum += 1 //每请求一次,页面数+1
  157. this.getQueryByTag();
  158. clearTimeout(times)
  159. }, 500)
  160. },
  161. getContent(index, content){
  162. this.$nextTick(() => {
  163. let dom = document.getElementsByClassName('contents')[index];
  164. console.log(dom)
  165. if(dom){
  166. dom.innerHTML = content;
  167. }
  168. })
  169. },
  170. back(){
  171. location.href = `./actFission.html?token=${GetRequest().token}`;
  172. },
  173. toDetail(item){
  174. location.href = `./actFissionShare.html?strategyId=${item.id}&tagId=${GetRequest().id}&type=1&token=${GetRequest().token}`;
  175. },
  176. stopManyClick(fn) { //防抖
  177. if (this.flag) {
  178. fn();
  179. }
  180. this.flag = false;
  181. if (this.timer) {
  182. clearTimeout(this.timer);
  183. }
  184. this.timer = setTimeout(() => {
  185. this.flag = true
  186. }, 1500);
  187. },
  188. }
  189. })
  190. </script>
  191. </body>
  192. </html>