| <template> | 
|     <view class="search"> | 
|         <view class="search_box"> | 
|             <view class="search_input"> | 
|                 <image src="@/static/ic_search@2x.png" alt=""> | 
|                 <input v-model="text" @confirm="searchInput()" type="text" :placeholder="placeholder" /> | 
|             </view> | 
|             <view class="search_operation" v-if="isShow"> | 
|                 <view class="search_operation_w"></view> | 
|                 <image @click="openCate()" src="@/static/filter@2x.png" mode="widthFix"> | 
|             </view> | 
|         </view> | 
|         <u-popup closeOnClickOverlay :show="open" @close="open=false" :round="10" mode="bottom"> | 
|             <scroll-view scroll-y class="content"> | 
|                 <slot name="content"></slot> | 
|             </scroll-view> | 
|             <view class="zhanwei"></view> | 
|             <view class="footer"> | 
|                 <view class="footer_close" @click="closes">重置</view> | 
|                 <view class="footer_submit" @click="submit">确定</view> | 
|             </view> | 
|         </u-popup> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     export default { | 
|         data() { | 
|             return { | 
|                 text: '', | 
|                 open: false | 
|             }; | 
|         }, | 
|         props: { | 
|             isShow: Boolean, | 
|             placeholder: String | 
|         }, | 
|         methods: { | 
|             // 搜索框搜索 | 
|             searchInput() { | 
|                 this.$emit('searchInput', this.text) | 
|             }, | 
|             // 打开弹窗 | 
|             openCate() { | 
|                 this.open = true | 
|             }, | 
|             // 重置 | 
|             closes() { | 
|                 this.open = false | 
|                 this.text = '' | 
|                 this.$emit('reset', this.text) | 
|             }, | 
|             // 搜索提交 | 
|             submit() { | 
|                 this.open = false | 
|                 this.$emit('submit') | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     .search { | 
|         width: 100%; | 
|         height: 68rpx; | 
|         display: flex; | 
|         align-items: center; | 
|         .zhanwei { | 
|             width: 100%; | 
|             height: calc(88rpx + 30rpx); | 
|             background: #ffffff; | 
|         } | 
|         .content { | 
|             padding: 30rpx 30rpx 0 30rpx; | 
|             width: 100%; | 
|             height: 800rpx; | 
|             box-sizing: border-box; | 
|         } | 
|         .footer { | 
|             width: 100%; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             padding-left: 40rpx; | 
|             padding-right: 40rpx; | 
|             padding-bottom: env(safe-area-inset-bottom); | 
|             box-sizing: border-box; | 
|             position: fixed; | 
|             bottom: 0; | 
|             left: 0; | 
|             background: #ffffff; | 
|             z-index: 99; | 
|             .footer_close { | 
|                 flex: 1; | 
|                 padding: 28rpx 0; | 
|                 height: 88rpx; | 
|                 box-sizing: border-box; | 
|                 margin-right: 22rpx; | 
|                 font-size: 32rpx; | 
|                 font-weight: 500; | 
|                 color: #999999; | 
|                 background: #F7F7F7; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|             } | 
|             .footer_submit { | 
|                 flex: 1; | 
|                 height: 88rpx; | 
|                 padding: 28rpx 0; | 
|                 box-sizing: border-box; | 
|                 font-size: 32rpx; | 
|                 font-weight: 500; | 
|                 color: #ffffff; | 
|                 background: $nav-color; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|             } | 
|         } | 
|         .search_box { | 
|             width: 100%; | 
|             display: flex; | 
|             align-items: center; | 
|             .search_input { | 
|                 flex: 1; | 
|                 height: 100%; | 
|                 background: #F7F7F7; | 
|                 border-radius: 8rpx; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 padding: 15rpx 30rpx; | 
|                 box-sizing: border-box; | 
|                 image { | 
|                     width: 28rpx; | 
|                     height: 28rpx; | 
|                     margin-right: 10rpx; | 
|                 } | 
|                 input { | 
|                     width: 100%; | 
|                     border: none; | 
|                     outline: none; | 
|                     background: #F7F7F7; | 
|                     font-size: 26rpx; | 
|                 } | 
|                 input::-webkit-input-placeholder { /* WebKit browsers */ | 
|                     font-size: 26rpx; | 
|                     font-weight: 400; | 
|                     color: #B2B2B2; | 
|                 } | 
|                 input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ | 
|                     font-size: 26rpx; | 
|                     font-weight: 400; | 
|                     color: #B2B2B2; | 
|                 } | 
|                 input::-moz-placeholder { /* Mozilla Firefox 19+ */ | 
|                     font-size: 26rpx; | 
|                     font-weight: 400; | 
|                     color: #B2B2B2; | 
|                 } | 
|                 input:-ms-input-placeholder { /* Internet Explorer 10+ */ | 
|                     font-size: 26rpx; | 
|                     font-weight: 400; | 
|                     color: #B2B2B2; | 
|                 } | 
|             } | 
|             .search_operation { | 
|                 flex-shrink: 0; | 
|                 /*width: 150rpx;*/ | 
|                 display: flex; | 
|                 justify-content: flex-end; | 
|                 align-items: center; | 
|                 /*margin-left: 30rpx;*/ | 
|                 image { | 
|                     width: 44rpx; | 
|                     height: 44rpx; | 
|                 } | 
|                 .search_operation_w { | 
|                     width: 30rpx; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </style> |