| <template> | |
|   <view :style="style" @click="onClick"> | |
|     <view class="module"> | |
|       <image class="module-bg" :src="configList.page_serve_module_bg" mode="widthFix"></image> | |
|       <image class="module-bg absolute" :src="configList.page_serve_module_bg_0" mode="widthFix"></image> | |
|       <image class="module-bg absolute" :src="configList.page_serve_module_bg_1" mode="widthFix"></image> | |
|       <image class="module-bg absolute" :src="configList.page_serve_module_bg_2" mode="widthFix"></image> | |
|       <view class="flex module-fg"> | |
|         <view class="flex module-info"> | |
|           <view class="title">{{ data.title }}</view> | |
|           <image class="icon" src="@/static/image/serve-icon.png" mode="widthFix"></image> | |
|         </view> | |
|         <button class="flex btn"> | |
|           <view>更多</view> | |
|           <uv-icon name="arrow-down-fill" color="#808080" size="10rpx"></uv-icon> | |
|         </button> | |
|       </view> | |
|     </view> | |
|   </view> | |
| </template> | |
| 
 | |
| <script> | |
| export default { | |
|   props: { | |
|     value: { | |
|       type: Boolean, | |
|       default: true | |
|     }, | |
|     data: { | |
|       type: Object, | |
|       default() { | |
|         return {} | |
|       } | |
|     }, | |
|     style: { | |
|       type: String, | |
|       default: '' | |
|     }, | |
|   }, | |
|   computed: { | |
|     isFold: { | |
|       set(val) { | |
|         this.$emit('input', val) | |
|       }, | |
|       get() { | |
|         return this.value | |
|       } | |
|     } | |
|   }, | |
|   methods: { | |
|     onClick() { | |
|       const isFold = !this.isFold | |
|       this.isFold = isFold | |
|       this.$emit('change', isFold) | |
|     }, | |
|   }, | |
| } | |
| </script> | |
| 
 | |
| <style scoped lang="scss"> | |
| 
 | |
|   .module { | |
|     font-size: 0; | |
|     width: 100%; | |
|     height: auto; | |
|     position: relative; | |
|     &-bg { | |
|       width: 100%; | |
|       height: auto; | |
|     } | |
| 
 | |
|     &-fg { | |
|       position: absolute; | |
|       top: 0; | |
|       left: 0; | |
|       justify-content: space-between; | |
|       width: 100%; | |
|       padding: 30rpx 30rpx 0 22rpx; | |
|       box-sizing: border-box; | |
|     } | |
| 
 | |
|     &-info { | |
|       column-gap: 16rpx; | |
| 
 | |
|       .title { | |
|         font-size: 32rpx; | |
|         font-weight: 700; | |
|         line-height: 1; | |
|         font-family: PingFang SC; | |
|         color: transparent; | |
|         background-image: linear-gradient(to right, #6851A7, #AA87F0); | |
|         background-clip: text; | |
|         display: inline-block; | |
|       } | |
| 
 | |
|       .icon { | |
|         width: 30rpx; | |
|         height: auto; | |
|       } | |
|     } | |
| 
 | |
|     .btn { | |
|       column-gap: 10rpx; | |
|       font-size: 22rpx; | |
|       color: #808080; | |
|     } | |
|   } | |
| 
 | |
|   .absolute { | |
|     position: absolute; | |
|     top: 0; | |
|     left: 0; | |
|   } | |
| </style> |