景徳镇旅游微信小程序
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.

297 lines
6.4 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
10 months ago
10 months ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
10 months ago
1 year ago
10 months ago
1 year ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view class="page">
  3. <view class="banner">
  4. <uv-swiper
  5. :list="bannerList"
  6. indicator
  7. height="620rpx"
  8. indicatorStyle="bottom: 100rpx;"
  9. keyName="imageContent"></uv-swiper>
  10. <view class="top">
  11. <view class="search">
  12. <uv-search
  13. placeholder="请输入搜索文章"
  14. :showAction="false"
  15. search-icon-size="40rpx"
  16. @search="search"
  17. v-model="keyword"></uv-search>
  18. </view>
  19. </view>
  20. </view>
  21. <view class="content">
  22. <view class="grid">
  23. <uv-grid :border="false"
  24. :col="4">
  25. <uv-grid-item
  26. v-for="(item,index) in baseList"
  27. @click="$utils.navigateTo(item.path)"
  28. :key="index">
  29. <image class="grid-icon" :src="item.icon" mode="aspectFill"></image>
  30. <text class="grid-text">{{item.title}}</text>
  31. </uv-grid-item>
  32. </uv-grid>
  33. </view>
  34. <view class="index_box">
  35. <image :src="config_new_image"
  36. @click="$utils.navigateTo('/pages_order/service/newsList')"
  37. class="image" mode="aspectFill"></image>
  38. <view class="index_box_grid"
  39. @click="$utils.navigateTo('/pages_order/service/carefree')">
  40. <text class="text">无忧服务</text>
  41. <image class="icon" src="/static/image/home/g8a.png" mode="aspectFill"></image>
  42. </view>
  43. </view>
  44. <view class="video-title">
  45. <!-- 视频中的景徳镇 -->
  46. 精彩推荐
  47. </view>
  48. <scenicSpot ref="videoList"/>
  49. <!-- <view class="list">
  50. <newsItem
  51. v-for="(item, index) in 10"
  52. :key="index"
  53. :item="item"
  54. />
  55. </view> -->
  56. </view>
  57. <PrivacyAgreementPoup/>
  58. <tabber select="0"/>
  59. </view>
  60. </template>
  61. <script>
  62. import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
  63. import scenicSpot from '@/components/list/scenicSpot.vue'
  64. import newsItem from '@/components/list/newsItem.vue'
  65. export default {
  66. components : {
  67. PrivacyAgreementPoup,
  68. scenicSpot,
  69. newsItem,
  70. },
  71. data() {
  72. return {
  73. baseList : [
  74. {
  75. icon : '/static/image/home/g1.png',
  76. title : '申遗历程',
  77. path : '/pages_order/service/applyRelic',
  78. },
  79. {
  80. icon : '/static/image/home/g2.png',
  81. title : '遗产概况',
  82. path : '/pages_order/service/situation',
  83. },
  84. // {
  85. // icon : '/static/image/home/g3.png',
  86. // title : '遗产讲述',
  87. // path : '/pages_order/service/tellList?type=tell',
  88. // },
  89. // {
  90. // icon : '/static/image/home/g4.png',
  91. // title : '达人同游',
  92. // path : '/pages_order/service/tellList?type=travel',
  93. // },
  94. // {
  95. // icon : '/static/image/home/g5.png',
  96. // title : '遗产路径',
  97. // path : '/pages_order/service/heritagePath',
  98. // },
  99. // {
  100. // icon : '/static/image/home/g6.png',
  101. // title : '我要跟拍',
  102. // path : '/pages_order/service/following' ,
  103. // },
  104. // {
  105. // icon : '/static/image/home/g7.png',
  106. // title : '非遗体验',
  107. // path : '/pages_order/service/experience',
  108. // },
  109. {
  110. icon : '/static/image/home/g9.png',
  111. title : '文创好物',
  112. path : '/pages_order/product/productList',
  113. },
  114. {
  115. icon : '/static/image/home/g10.png',
  116. title : '我要帮助',
  117. path : '/pages_order/service/help',
  118. },
  119. // {
  120. // icon : '/static/image/home/g8.png',
  121. // title : '无忧服务',
  122. // path : '/pages_order/service/carefree',
  123. // },
  124. // {
  125. // icon : '/static/image/home/g6.png',
  126. // title : '申遗新闻',
  127. // path : '/pages_order/service/newsList',
  128. // },
  129. ],
  130. bannerList: [
  131. // {
  132. // url: 'https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1msKSi.img',
  133. // },
  134. // {
  135. // url: 'https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1msKSi.img',
  136. // },
  137. // {
  138. // url: 'https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1msKSi.img',
  139. // },
  140. ],
  141. productList: [],
  142. keyword : '',
  143. config_new_image : '',
  144. }
  145. },
  146. onLoad() {
  147. uni.$on('getConfig', state => {
  148. this.config_new_image = state.configList.config_new_image
  149. })
  150. },
  151. computed : {
  152. },
  153. onPullDownRefresh(){
  154. this.$refs.videoList.queryVideoList()
  155. this.queryBannerList()
  156. },
  157. onShow() {
  158. this.$refs.videoList.queryVideoList()
  159. this.queryBannerList()
  160. },
  161. //滚动到屏幕底部
  162. onReachBottom() {
  163. this.$refs.videoList.loadMoreData()
  164. },
  165. methods: {
  166. queryBannerList(){
  167. this.$api('queryBannerList', {
  168. bannerCategoryType : 0,
  169. },res => {
  170. uni.stopPullDownRefresh()
  171. if(res.code == 200){
  172. this.bannerList = res.result
  173. }
  174. })
  175. },
  176. search(){
  177. this.keyword = ''
  178. uni.navigateTo({
  179. url: '/pages_order/service/applyRelic?keyword=' + this.keyword
  180. })
  181. }
  182. }
  183. }
  184. </script>
  185. <style scoped lang="scss">
  186. .page{
  187. .banner{
  188. position: relative;
  189. .top{
  190. position: absolute;
  191. top: var(--status-bar-height);
  192. left: 0;
  193. padding-top: 30rpx;
  194. display: flex;
  195. width: 100%;
  196. flex-direction: column;
  197. align-items: center;
  198. .search{
  199. width: 400rpx;
  200. margin-left: -100rpx;
  201. /deep/ .uv-search__content__icon{
  202. padding: 30rpx 0;
  203. }
  204. }
  205. .title{
  206. image{
  207. width: 600rpx;
  208. height: 300rpx;
  209. }
  210. }
  211. }
  212. }
  213. .content{
  214. position: relative;
  215. margin-top: -60rpx;
  216. .grid{
  217. padding-bottom: 30rpx;
  218. background-color: #fff;
  219. border-radius: 60rpx;
  220. box-shadow: 0 0 10rpx 10rpx #00000013;
  221. .grid-icon{
  222. width: 80rpx;
  223. height: 80rpx;
  224. margin-bottom: 10rpx;
  225. margin-top: 30rpx;
  226. }
  227. .grid-text{
  228. font-size: 24rpx;
  229. font-weight: 900;
  230. }
  231. }
  232. .index_box{
  233. display: flex;
  234. padding: 30rpx;
  235. gap: 30rpx;
  236. align-items: center;
  237. .image{
  238. height: 200rpx;
  239. width: 450rpx;
  240. border-radius: 10rpx;
  241. }
  242. .index_box_grid{
  243. width: 200rpx;
  244. height: 200rpx;
  245. background-color: $uni-color;
  246. border-radius: 10rpx;
  247. display: flex;
  248. flex-direction: column;
  249. align-items: center;
  250. justify-content: center;
  251. gap: 16rpx;
  252. .text{
  253. color: #fff;
  254. }
  255. .icon{
  256. width: 100rpx;
  257. height: 100rpx;
  258. }
  259. }
  260. }
  261. .video-title{
  262. padding: 20rpx 30rpx;
  263. background-color: $uni-color;
  264. color: #fff;
  265. font-weight: 900;
  266. font-size: 24rpx;
  267. margin: 10rpx 20rpx;
  268. margin-top: 30rpx;
  269. width: fit-content;
  270. border-radius: 20rpx;
  271. }
  272. .list{
  273. display: flex;
  274. flex-wrap: wrap;
  275. }
  276. }
  277. }
  278. </style>