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

293 lines
6.3 KiB

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