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

319 lines
6.9 KiB

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