景徳镇旅游微信小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
3.4 KiB

8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
  1. <template>
  2. <!-- 申遗历程 -->
  3. <view class="apply">
  4. <navbar title="申遗历程" leftClick @leftClick="$utils.navigateBack" />
  5. <view class="top-img">
  6. <uv-swiper
  7. :list="banner.course"
  8. indicator
  9. height="420rpx"
  10. keyName="imageContent"></uv-swiper>
  11. </view>
  12. <view class="middle-box">
  13. <view class="middle-img">
  14. <view>
  15. <image src="../static/applyRelic/2.png" mode="aspectFill" />
  16. </view>
  17. <view>
  18. <image src="../static/applyRelic/2.png" mode="aspectFill" />
  19. </view>
  20. <view>
  21. <image src="../static/applyRelic/2.png" mode="aspectFill" />
  22. </view>
  23. </view>
  24. <view class="middle-font">
  25. <view @click="selectMiddle(0)">
  26. 申遗历程
  27. </view>
  28. <view @click="selectMiddle(1)">
  29. 申遗缘由
  30. </view>
  31. <view @click="selectMiddle(2)">
  32. 遗产价值
  33. </view>
  34. </view>
  35. </view>
  36. <view class="apply-list">
  37. <uv-list @scrolltolower="scrolltolower">
  38. <uv-list-item
  39. :title="item.articleTitle"
  40. :note="$dayjs(item.createTime).format('YYYY-MM-DD')"
  41. :border="true"
  42. v-for="(item,index) in list"
  43. :key="index"
  44. :clickable="true"
  45. @click="toUrl(item)"
  46. >
  47. <template #footer>
  48. <uv-image :src="item.articleImage" radius="10rpx" width="240rpx"
  49. height="160rpx" />
  50. </template>
  51. </uv-list-item>
  52. </uv-list>
  53. </view>
  54. <tabber />
  55. </view>
  56. </template>
  57. <script>
  58. import { mapState } from 'vuex'
  59. export default {
  60. data() {
  61. return {
  62. queryParams: {
  63. pageNo: 1,
  64. pageSize: 10,
  65. },
  66. total : 0,
  67. list : [],
  68. articleType : -1,
  69. }
  70. },
  71. computed : {
  72. ...mapState(['banner']),
  73. },
  74. onShow() {
  75. this.queryArticleListByType()
  76. },
  77. onReachBottom() {
  78. this.loadMoreData()
  79. },
  80. onPullDownRefresh(){
  81. this.queryArticleListByType()
  82. },
  83. methods: {
  84. queryArticleListByType(){
  85. let query = {
  86. ...this.queryParams,
  87. }
  88. if(this.articleType != -1){
  89. query.articleType = this.articleType
  90. }
  91. this.$api('queryArticleListByType', query, res => {
  92. uni.stopPullDownRefresh()
  93. if(res.code == 200){
  94. this.list = res.result.records
  95. this.total = res.result.total
  96. }
  97. })
  98. },
  99. loadMoreData(){
  100. if(this.queryParams.pageSize < this.total){
  101. this.queryParams.pageSize += 10
  102. this.queryArticleListByType()
  103. }
  104. },
  105. toUrl(item){
  106. console.log(item);
  107. this.$utils.navigateTo(`/pages_order/service/articleDetail?id=${item.id}&type=1`)
  108. },
  109. selectMiddle(e){
  110. console.log(e);
  111. if(this.articleType != e){
  112. this.articleType = e
  113. }else{
  114. this.articleType = -1
  115. }
  116. this.queryArticleListByType()
  117. },
  118. }
  119. }
  120. </script>
  121. <style scoped lang="scss">
  122. .apply {
  123. .top-img {
  124. }
  125. .middle-box {
  126. display: flex;
  127. position: relative;
  128. height: 220rpx;
  129. align-items: center;
  130. justify-content: space-around;
  131. background-color: #fff;
  132. .middle-img {
  133. display: flex;
  134. align-items: center;
  135. justify-content: space-around;
  136. width: 100%;
  137. view {
  138. width: 160rpx;
  139. height: 160rpx;
  140. image {
  141. width: 100%;
  142. height: 100%;
  143. }
  144. }
  145. }
  146. .middle-font {
  147. position: absolute;
  148. display: flex;
  149. width: 100%;
  150. justify-content: space-around;
  151. view {
  152. width: 60rpx;
  153. color: #FFFDF6;
  154. font-weight: 600;
  155. }
  156. }
  157. }
  158. .apply-list {
  159. width: 94%;
  160. margin-left: 3%;
  161. /deep/ .uv-list-item{
  162. background-color: #FFFDF6 !important;
  163. }
  164. }
  165. }
  166. </style>