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

205 lines
3.9 KiB

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
3 months ago
1 month ago
3 months ago
3 months ago
1 month ago
2 months ago
3 months ago
2 months 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 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
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
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">
  9. <view>
  10. <view class="title">{{ configList.page_serve_title }}</view>
  11. <view class="desc">{{ configList.page_serve_desc }}</view>
  12. </view>
  13. </view>
  14. <!-- 搜索栏 -->
  15. <view class="section search">
  16. <uv-search v-model="keyword" :showAction="false" placeholder="输入关键词搜索" placeholderColor="#B2B2B2" bgColor="#FFFFFF" @custom="search" @search="search">
  17. <template #prefix>
  18. <view class="flex search-icon">
  19. <image class="img" src="@/static/image/icon-search.png" mode="widthFix"></image>
  20. </view>
  21. </template>
  22. </uv-search>
  23. </view>
  24. <view class="list">
  25. <view class="list-item" v-for="item in list" :key="item.id" >
  26. <serveModuleCard :data="item"></serveModuleCard>
  27. </view>
  28. </view>
  29. <tabber select="serve" />
  30. </view>
  31. </view>
  32. </template>
  33. <script>
  34. import mixinsList from '@/mixins/list.js'
  35. import tabber from '@/components/base/tabbar.vue'
  36. import serveModuleCard from '@/components/serve/serveModuleCard.vue'
  37. export default {
  38. mixins: [mixinsList],
  39. components: {
  40. serveModuleCard,
  41. tabber,
  42. },
  43. data() {
  44. return {
  45. keyword: '',
  46. queryParams: {
  47. pageNo: 1,
  48. pageSize: 10,
  49. pid: '0',
  50. },
  51. mixinsListApi: 'queryCategoryServiceModuleList',
  52. firstCategoryList: [],
  53. }
  54. },
  55. onLoad() {
  56. this.getData()
  57. },
  58. methods: {
  59. search() {
  60. uni.navigateTo({
  61. url: `/pages_order/serve/search?search=${this.keyword}`
  62. })
  63. },
  64. },
  65. }
  66. </script>
  67. <style scoped lang="scss">
  68. .page__view {
  69. /deep/ .tabbar-box {
  70. height: 0;
  71. padding: 0;
  72. }
  73. }
  74. .header {
  75. margin-bottom: 32rpx;
  76. padding-top: 186rpx;
  77. justify-content: space-between;
  78. .title {
  79. font-size: 44rpx;
  80. font-weight: 700;
  81. color: #6851A7;
  82. }
  83. .desc {
  84. font-size: 22rpx;
  85. font-weight: 600;
  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. .search {
  129. width: calc(100% - 38rpx * 2);
  130. height: 48rpx;
  131. background-color: #FFFFFF;
  132. border-radius: 37rpx;
  133. box-sizing: border-box;
  134. display: flex;
  135. align-items: center;
  136. overflow: hidden;
  137. box-shadow: 2rpx 2rpx 9rpx 0 rgba($color: #C5C5C5, $alpha: 0.75);
  138. /deep/ .uv-search__content {
  139. padding: 0;
  140. border: none;
  141. }
  142. /deep/ .uv-search__content__input {
  143. margin-left: 18rpx;
  144. }
  145. &-icon {
  146. padding: 18rpx 10rpx 18rpx 18rpx;
  147. background: rgba($color: #E8DBF3, $alpha: 0.8);
  148. .img {
  149. width: 30rpx;
  150. height: auto;
  151. }
  152. }
  153. }
  154. .swiper {
  155. border-radius: 10rpx;
  156. overflow: hidden;
  157. /deep/ .uv-swiper-indicator__wrapper__dot {
  158. width: 25rpx;
  159. height: 5rpx;
  160. border-radius: 4rpx;
  161. margin: 0 4rpx;
  162. }
  163. /deep/ .uv-swiper-indicator__wrapper__dot--active {
  164. width: 25rpx;
  165. }
  166. }
  167. .list {
  168. padding: 0 38rpx;
  169. &-item {
  170. & + & {
  171. margin-top: 26rpx;
  172. }
  173. }
  174. }
  175. </style>