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

212 lines
4.1 KiB

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