吉光研途前端代码仓库
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.

166 lines
3.2 KiB

3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
3 days ago
  1. <template>
  2. <view class="page__view">
  3. <view class="bg"></view>
  4. <view class="main">
  5. <view class="header">
  6. <view class="title">
  7. <view class="title-text">{{ configList.config_name }}</view>
  8. <view class="title-line"></view>
  9. </view>
  10. <view class="desc">{{ configList.config_desc }}</view>
  11. </view>
  12. <!-- 轮播图 -->
  13. <view class="section swiper">
  14. <uv-swiper :list="bannerList" keyName="image" indicator indicatorMode="dot" indicatorActiveColor="#4883F9" indicatorInactiveColor="#FFFFFF" height="424rpx"></uv-swiper>
  15. </view>
  16. <view class="list">
  17. <view class="list-item" @click="jumpToDetail('other_service')">
  18. <image class="list-item-bg" src="@/static/image/bg-other-serve.png" mode="widthFix"></image>
  19. <view class="list-item-fg">
  20. <view class="title">其他服务</view>
  21. <view class="desc">Other services</view>
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. <tabber select="center" />
  27. </view>
  28. </template>
  29. <script>
  30. import tabber from '@/components/base/tabbar.vue'
  31. export default {
  32. components: {
  33. tabber,
  34. },
  35. data() {
  36. return {
  37. bannerList: [],
  38. }
  39. },
  40. onLoad() {
  41. this.fetchBanner()
  42. },
  43. methods: {
  44. // 获取轮播图
  45. async fetchBanner() {
  46. try {
  47. this.bannerList = (await this.$fetch('queryBannerList', { type: '3' }))?.records // type:0-首页 1-案例 2-服务 3-其他
  48. } catch (err) {
  49. }
  50. },
  51. jumpToDetail(paramCode) {
  52. uni.navigateTo({
  53. url: `/pages_order/serve/index?paramCode=${paramCode}`
  54. })
  55. },
  56. },
  57. }
  58. </script>
  59. <style scoped lang="scss">
  60. .bg {
  61. width: 100%;
  62. height: 438rpx;
  63. background-image: linear-gradient(#4883F9, #4883F9, #4883F9, #FCFDFF);
  64. }
  65. .main {
  66. position: absolute;
  67. top: 0;
  68. left: 0;
  69. width: 100%;
  70. padding: 156rpx 0 182rpx 0;
  71. }
  72. .header {
  73. .title {
  74. margin-left: 25rpx;
  75. position: relative;
  76. padding: 51rpx 0 6rpx 42rpx;
  77. &-line {
  78. width: 151rpx;
  79. height: 11rpx;
  80. background: linear-gradient(76deg,#ffffff 2%, #4883f9 88%);
  81. border-radius: 6rpx;
  82. }
  83. &-text {
  84. position: absolute;
  85. top: 0;
  86. left: 0;
  87. font-size: 46rpx;
  88. font-weight: 700;
  89. color: #FFFFFF;
  90. }
  91. }
  92. .desc {
  93. font-size: 30rpx;
  94. font-weight: 700;
  95. color: #FFFFFF;
  96. margin: 14rpx 28rpx 32rpx 28rpx;
  97. }
  98. }
  99. .swiper {
  100. margin: 0 18rpx;
  101. border-radius: 25rpx;
  102. overflow: hidden;
  103. /deep/ .uv-swiper-indicator__wrapper__dot {
  104. width: 15rpx;
  105. height: 15rpx;
  106. }
  107. /deep/ .uv-swiper-indicator__wrapper__dot--active {
  108. width: 15rpx;
  109. }
  110. }
  111. .list {
  112. padding: 0 12rpx;
  113. &-item {
  114. position: relative;
  115. & + & {
  116. margin-top: 19rpx;
  117. }
  118. &-bg {
  119. width: 100%;
  120. height: auto;
  121. }
  122. &-fg {
  123. position: absolute;
  124. top: 70rpx;
  125. left: 43rpx;
  126. .title {
  127. font-size: 32rpx;
  128. font-weight: 700;
  129. color: #000000;
  130. }
  131. .desc {
  132. margin-top: 2rpx;
  133. font-size: 28rpx;
  134. color: #8A8784;
  135. }
  136. }
  137. }
  138. }
  139. </style>