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

225 lines
4.8 KiB

4 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
4 months ago
  1. <template>
  2. <view class="page__view">
  3. <view class="bg">
  4. <image class="img" src="@/static/image/bg-index.png" mode="widthFix"></image>
  5. <image class="bg-logo" src="@/static/image/bg-icon.png" mode="widthFix"></image>
  6. </view>
  7. <view class="main">
  8. <view class="flex section header">
  9. <view>
  10. <view class="title">{{ configList.page_center_title }}</view>
  11. <view class="desc">{{ configList.page_center_desc }}</view>
  12. </view>
  13. <view class="flex icon">
  14. <image class="img" :src="configList.config_logo" mode="widthFix"></image>
  15. </view>
  16. </view>
  17. <!-- 轮播图 -->
  18. <view class="section swiper">
  19. <uv-swiper :list="bannerList" keyName="image" indicator indicatorMode="dot" indicatorActiveColor="#FFFFFF" indicatorInactiveColor="#6851A7" height="424rpx"></uv-swiper>
  20. </view>
  21. <view class="list">
  22. <view class="list-item" @click="jumpToDetail('other_service')">
  23. <!-- <image class="list-item-bg" :src="configList.config_image_service" mode="scaleToFill"></image> -->
  24. <image class="list-item-bg" src="@/static/image/bg-other-serve.png" mode="widthFix"></image>
  25. <view class="flex list-item-fg">
  26. <image class="icon" src="@/static/image/icon-other-serve.png" mode="widthFix"></image>
  27. <view class="info">
  28. <view class="title">其他服务</view>
  29. <view class="desc">Other services</view>
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. <tabber select="center" />
  35. </view>
  36. </view>
  37. </template>
  38. <script>
  39. import tabber from '@/components/base/tabbar.vue'
  40. export default {
  41. components: {
  42. tabber,
  43. },
  44. data() {
  45. return {
  46. bannerList: [],
  47. }
  48. },
  49. onLoad() {
  50. this.fetchBanner()
  51. },
  52. methods: {
  53. // 获取轮播图
  54. async fetchBanner() {
  55. try {
  56. this.bannerList = (await this.$fetch('queryBannerList', { type: '3' }))?.records // type:0-首页 1-案例 2-服务 3-其他
  57. } catch (err) {
  58. }
  59. },
  60. jumpToDetail(paramCode) {
  61. uni.navigateTo({
  62. url: `/pages_order/center/serve?paramCode=${paramCode}`
  63. })
  64. },
  65. },
  66. }
  67. </script>
  68. <style scoped lang="scss">
  69. .page__view {
  70. /deep/ .tabbar-box {
  71. height: 0;
  72. padding: 0;
  73. }
  74. }
  75. .header {
  76. padding-top: calc(var(--status-bar-height) + 40rpx);
  77. justify-content: space-between;
  78. .title {
  79. font-size: 44rpx;
  80. font-weight: 600;
  81. color: #6851A7;
  82. }
  83. .desc {
  84. font-size: 18rpx;
  85. font-weight: 500;
  86. color: #808080;
  87. }
  88. .icon {
  89. // margin-top: 16rpx;
  90. width: 62rpx;
  91. height: 62rpx;
  92. border: 2rpx solid #A3A2C5;
  93. border-radius: 50%;
  94. overflow: hidden;
  95. .img {
  96. width: 50rpx;
  97. height: auto;
  98. }
  99. }
  100. }
  101. .bg {
  102. width: 100vw;
  103. height: auto;
  104. .img {
  105. width: 100%;
  106. height: auto;
  107. }
  108. &-logo {
  109. position: absolute;
  110. top: 0;
  111. right: 0;
  112. width: 342rpx;
  113. height: auto;
  114. opacity: 0.3;
  115. }
  116. }
  117. .main {
  118. position: absolute;
  119. top: 0;
  120. left: 0;
  121. width: 100vw;
  122. padding-bottom: 182rpx;
  123. box-sizing: border-box;
  124. }
  125. .section {
  126. margin: 0 38rpx 24rpx 38rpx;
  127. }
  128. .swiper {
  129. border-radius: 10rpx;
  130. overflow: hidden;
  131. /deep/ .uv-swiper-indicator__wrapper__dot {
  132. width: 25rpx;
  133. height: 5rpx;
  134. border-radius: 4rpx;
  135. margin: 0 4rpx;
  136. }
  137. /deep/ .uv-swiper-indicator__wrapper__dot--active {
  138. width: 25rpx;
  139. }
  140. }
  141. .list {
  142. padding: 0 38rpx;
  143. &-item {
  144. position: relative;
  145. width: 100%;
  146. height: 170rpx;
  147. font-size: 0;
  148. border-radius: 10rpx;
  149. overflow: hidden;
  150. background: linear-gradient(to right, rgba($color: #E2DDFF, $alpha: 0.26), rgba($color: #C8C3FD, $alpha: 0.26));
  151. box-shadow: 4rpx 4rpx 6rpx 0rpx rgba(0,0,0,0.15);
  152. & + & {
  153. margin-top: 19rpx;
  154. }
  155. &-bg {
  156. // $w: calc(100vw - 18rpx*2);
  157. // width: $w;
  158. // height: calc(#{$w} * 179 / 714);
  159. width: 100%;
  160. height: 100%;
  161. }
  162. &-fg {
  163. justify-content: flex-start;
  164. align-items: flex-start;
  165. column-gap: 84rpx;
  166. position: absolute;
  167. top: 0;
  168. left: 0;
  169. width: 100%;
  170. height: 100%;
  171. padding: 10rpx 32rpx;
  172. box-sizing: border-box;
  173. .icon {
  174. width: 146rpx;
  175. height: auto;
  176. }
  177. .info {
  178. margin-top: 40rpx;
  179. }
  180. .title {
  181. font-size: 34rpx;
  182. font-weight: 700;
  183. color: #9082D8;
  184. }
  185. .desc {
  186. margin-top: 8rpx;
  187. font-size: 28rpx;
  188. font-weight: 700;
  189. color: #9C97B2;
  190. }
  191. }
  192. }
  193. }
  194. </style>