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

321 lines
6.9 KiB

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