actFissionList.html 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  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.2rem 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. border-radius: 0.1rem;
  45. }
  46. .titles{
  47. font-size: 0.3rem;
  48. color: #333333;
  49. }
  50. .contents{
  51. max-height: 0.66rem;
  52. max-width: 4.4rem;
  53. margin-top: 0.2rem;
  54. font-size: 0.24rem;
  55. color: #999999;
  56. text-overflow: -o-ellipsis-lastline;
  57. overflow: hidden;
  58. text-overflow: ellipsis;
  59. display: -webkit-box;
  60. -webkit-line-clamp: 2;
  61. line-clamp: 2;
  62. -webkit-box-orient: vertical;
  63. }
  64. .no-content{
  65. width: 3.74rem;
  66. height: 3.14rem;
  67. position: fixed;
  68. top: 50%;
  69. left: 50%;
  70. transform: translate(-50%,-50%);
  71. }
  72. </style>
  73. </head>
  74. <body>
  75. <div id="app" v-cloak class="app container">
  76. <van-list v-model="loading" :finished-text="finishedText" :finished="finished"
  77. :immediate-check=false @load="onLoad">
  78. <div v-for="(item,index) in tagList" :key="index" class="item" @click="toDetail(item)">
  79. <img :src="fileCenterApi + `/document/newFile/download/0/347905r86eb745a1sc38?fileKey=${item.fileId}`" class="icon" alt="">
  80. <div class="right">
  81. <div class="titles">{{item.strategyTitle}}</div>
  82. <div class="contents">{{getContent(index,item.content)}}</div>
  83. </div>
  84. </div>
  85. </van-list>
  86. <img v-if="noData" src="../static/offImg/no-content.png" class="no-content" alt="" />
  87. </div>
  88. <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
  89. <script src="../static/js/vender/vue/axios.min.js"></script>
  90. <script src="../static/js/vender/vue/config.js"></script>
  91. <script src="../static/js/vender/vue/api.js"></script>
  92. <script type="text/javascript">
  93. var u = navigator.userAgent,
  94. app = navigator.appVersion;
  95. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
  96. var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  97. new Vue({
  98. el: '#app',
  99. data: {
  100. noData: true,
  101. loading: false,
  102. title: '',
  103. finishedText: '',
  104. finished: false,
  105. pageNum: 1,
  106. tagList: []
  107. },
  108. mounted() {
  109. let dom = document.getElementsByTagName('title')[0];
  110. this.title = decodeURIComponent(GetRequest().title);
  111. dom.innerText = this.title;
  112. setTimeout(() => {
  113. this.getQueryByTag();//获取标签列表
  114. })
  115. },
  116. methods: {
  117. getQueryByTag(){
  118. this.$toast.loading({
  119. duration: 0,
  120. message: '加载中...',
  121. forbidClick: true,
  122. loadingType: 'spinner',
  123. });
  124. // 获取标签列表
  125. getQueryByTag(GetRequest().token, {
  126. tagId: +GetRequest().id,
  127. pageNum: this.pageNum,
  128. pageSize: 10
  129. }).then(res => {
  130. this.$toast.clear();
  131. if (res.status === 0) {
  132. this.loading = false //取消正在加载状态
  133. this.noData = false;
  134. let infolist = res.data.actFissionStrategyList;
  135. if (infolist) {
  136. this.tagList = this.tagList.concat(infolist);
  137. if (this.tagList.length >= 10) {
  138. this.finishedText = '没有更多了'
  139. }
  140. if(this.tagList.length == 0){
  141. this.noData = true;
  142. }
  143. if (this.tagList.length >= res.data.total) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
  144. this.finished = true;
  145. }
  146. } else {
  147. this.finished = true;
  148. }
  149. } else {
  150. this.loading = false //取消正在加载状态
  151. this.noData = true;
  152. // this.$toast(res.msg);
  153. }
  154. })
  155. },
  156. //滚动加载时触发,list组件定义的方法
  157. onLoad() {
  158. let times = setTimeout(() => {
  159. this.pageNum += 1 //每请求一次,页面数+1
  160. this.getQueryByTag();
  161. clearTimeout(times)
  162. }, 500)
  163. },
  164. getContent(index, content){
  165. this.$nextTick(() => {
  166. let dom = document.getElementsByClassName('contents')[index];
  167. if(dom){
  168. //对img标签进行匹配
  169. var imgReg = /<img.*?(?:>|\/>)<br \/>/gi;
  170. let oldContent = content;
  171. if(imgReg.test(content)){//有图片
  172. //将img标签替换为*
  173. content = content.replace(imgReg,"");
  174. }
  175. if(content == ''){
  176. dom.innerHTML = oldContent;
  177. }else{
  178. dom.innerHTML = content;
  179. }
  180. }
  181. })
  182. },
  183. back(){
  184. location.href = `./actFission.html?token=${GetRequest().token}`;
  185. },
  186. toDetail(item){
  187. location.href = `./actFissionShare.html?strategyId=${item.id}&title=${encodeURI(item.strategyTitle)}&tagId=${GetRequest().id}&type=1&token=${GetRequest().token}`;
  188. },
  189. stopManyClick(fn) { //防抖
  190. if (this.flag) {
  191. fn();
  192. }
  193. this.flag = false;
  194. if (this.timer) {
  195. clearTimeout(this.timer);
  196. }
  197. this.timer = setTimeout(() => {
  198. this.flag = true
  199. }, 1500);
  200. },
  201. }
  202. })
  203. </script>
  204. </body>
  205. </html>