policyInfo.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <!--
  2. * @title 政策资讯
  3. * @author Rockery(1113269755@qq.com)
  4. -->
  5. <template>
  6. <view class="policyInfo">
  7. <view class="policyInfo-banner">
  8. <u-swiper
  9. :list="bannerList"
  10. name="bannerUrl"
  11. border-radius="0"
  12. mode="round"
  13. height="372"
  14. img-mode="scaleToFill"
  15. @click="swiperClick"
  16. ></u-swiper>
  17. </view>
  18. <view class="policyInfo-title">
  19. <view>中华人民共和国英雄烈士保护法</view>
  20. </view>
  21. <view class="policyInfo-wrap">
  22. <view class="u-tabs-box policyInfo-tabsswiper">
  23. <u-tabs-swiper bg-color="transparent" ref="policyInfoTabsSwiper" :list="tabsSwiperList" :current="current" @change="tabsSwiperChange" :is-scroll="false"></u-tabs-swiper>
  24. </view>
  25. <swiper class="swiper-box" :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish">
  26. <swiper-item class="swiper-item">
  27. <scroll-view scroll-y style="height: 100%;width: 100%;" @scrolltolower="reachBottom">
  28. <view class="page-box">
  29. <view class="policyInfo-container" v-for="(lawItem, index) in dataList[0]" :key="index + 'lawItem'">
  30. <view class="item">
  31. <view class="title">{{lawItem.title}}</view>
  32. <view class="item-image">
  33. <image :src="lawItem.imgUrl" mode="aspectFill" class="image"></image>
  34. </view>
  35. </view>
  36. </view>
  37. <u-loadmore :status="loadStatus[0]" bgColor="#f2f2f2"></u-loadmore>
  38. </view>
  39. </scroll-view>
  40. </swiper-item>
  41. <swiper-item class="swiper-item">
  42. <scroll-view scroll-y style="height: 100%;width: 100%;" @scrolltolower="reachBottom">
  43. <view class="page-box">
  44. <view class="policyInfo-container" v-for="(administrativeItem, index) in dataList[1]" :key="index + 'administrativeItem'">
  45. <view class="item">
  46. <view class="title">{{administrativeItem.title}}</view>
  47. <view class="item-image">
  48. <image :src="administrativeItem.imgUrl" mode="aspectFill" class="image"></image>
  49. </view>
  50. </view>
  51. </view>
  52. <u-loadmore :status="loadStatus[1]" bgColor="#f2f2f2"></u-loadmore>
  53. </view>
  54. </scroll-view>
  55. </swiper-item>
  56. </swiper-item>
  57. <swiper-item class="swiper-item">
  58. <scroll-view scroll-y style="height: 100%;width: 100%;" @scrolltolower="reachBottom">
  59. <view class="page-box">
  60. <view class="policyInfo-container" v-for="(regulationsItem, index) in dataList[2]" :key="index + 'regulationsItem'">
  61. <view class="item">
  62. <view class="title">{{regulationsItem.title}}</view>
  63. <view class="item-image">
  64. <image :src="regulationsItem.imgUrl" mode="aspectFill" class="image"></image>
  65. </view>
  66. </view>
  67. </view>
  68. <u-loadmore :status="loadStatus[2]" bgColor="#f2f2f2"></u-loadmore>
  69. </view>
  70. </scroll-view>
  71. </swiper-item>
  72. </swiper>
  73. </view>
  74. <view class="policybtn">
  75. <view class="policybtn-container">
  76. <view class="policybtn-content">
  77. <view>
  78. <u-button type="primary" @click="policySubmitBtnClick" class="policysubmitbtn">政策咨询</u-button>
  79. </view>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. </template>
  85. <script>
  86. export default {
  87. data() {
  88. return {
  89. bannerList: [],
  90. tabsSwiperList: [
  91. {
  92. name: '法律'
  93. },
  94. {
  95. name: '行政法规'
  96. },
  97. {
  98. name: '部门规章'
  99. }
  100. ],
  101. current: 0,
  102. swiperCurrent: 0,
  103. loadStatus: ['loadmore','loadmore','loadmore'],
  104. dataList: [
  105. [],
  106. [
  107. {
  108. id: 1,
  109. title: '退役士兵安置条例',
  110. imgUrl: require('@/static/jpeg/a72f1cb8e19d649902859638ea458812.jpg'),
  111. },
  112. {
  113. id: 2,
  114. title: '军人抚恤优待条例',
  115. imgUrl: require('@/static/jpeg/a72f1cb8e19d649902859638ea458812.jpg'),
  116. },
  117. {
  118. id: 2,
  119. title: '烈士褒扬条例',
  120. imgUrl: require('@/static/jpeg/a72f1cb8e19d649902859638ea458812.jpg'),
  121. },
  122. {
  123. id: 2,
  124. title: '军队专业干部安置暂行办法',
  125. imgUrl: require('@/static/jpeg/a72f1cb8e19d649902859638ea458812.jpg'),
  126. },
  127. {
  128. id: 2,
  129. title: '退役士兵安置条例',
  130. imgUrl: require('@/static/jpeg/a72f1cb8e19d649902859638ea458812.jpg'),
  131. }
  132. ],
  133. []
  134. ]
  135. }
  136. },
  137. onLoad() {
  138. this.getDataList(0);
  139. },
  140. onShow() {
  141. this.getBannerList();
  142. },
  143. methods: {
  144. getBannerList(){
  145. this.$u.api.getIndexBannerList()
  146. .then(res=>{
  147. if(!res) return;
  148. this.bannerList = res?.data || [];
  149. this.bannerList = [];
  150. this.bannerList.push(
  151. {
  152. bannerUrl: require('@/static/jpeg/e2f3c933be411c565ec65cd49e832ac8.jpeg'),
  153. content: '<p>代码固定测试内容999998</p>',
  154. id: "999998",
  155. name: "代码固定测试999998"
  156. }
  157. );
  158. this.bannerList.push(
  159. {
  160. bannerUrl: require('@/static/jpeg/836ee345ca125ef429c04cfbabac0154.jpeg'),
  161. content: '<p>代码固定测试内容999999</p>',
  162. id: "999999",
  163. name: "代码固定测试999999"
  164. }
  165. );
  166. console.log('bannerList',JSON.parse(JSON.stringify(res)));
  167. })
  168. },
  169. // 轮播图点击
  170. swiperClick (index) {
  171. // console.log('swiperClick',index);
  172. if(this.bannerList[index].jumpUrl){
  173. let url = this.bannerList[index].jumpUrl.split('#')[1];
  174. this.$u.route({
  175. url: url,
  176. });
  177. }else{
  178. this.$u.route({
  179. url: 'pages/bannerDetails/bannerDetails',
  180. params: {
  181. id: this.bannerList[index].id
  182. }
  183. });
  184. }
  185. },
  186. // 页面数据
  187. getDataList(idx) {
  188. this.loadStatus.splice(idx,1,"nomore")
  189. },
  190. // tab栏切换
  191. tabsSwiperChange(index) {
  192. this.swiperCurrent = index;
  193. this.getDataList(index);
  194. },
  195. transition({ detail: { dx } }) {
  196. this.$refs.policyInfoTabsSwiper.setDx(dx);
  197. },
  198. animationfinish({ detail: { current } }) {
  199. this.$refs.policyInfoTabsSwiper.setFinishCurrent(current);
  200. this.swiperCurrent = current;
  201. this.current = current;
  202. },
  203. reachBottom() {
  204. this.loadStatus.splice(this.current,1,"loading");
  205. setTimeout(() => {
  206. this.getDataList(this.current);
  207. }, 1200);
  208. },
  209. /**
  210. * 政策咨询事件
  211. */
  212. policySubmitBtnClick(){
  213. this.$u.route({
  214. url: 'pages/questionConsulting/questionConsulting',
  215. params: {
  216. id: '9999'
  217. }
  218. });
  219. }
  220. }
  221. }
  222. </script>
  223. <style lang="scss"
  224. scoped>
  225. @import './scss/policyInfo.scss'
  226. </style>