| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <template>    <view class="search-box">        <view class="search" :style="{ background: background || '#F2F2F2' }">            <icon class="icon" type="search" size="3.733vw" />            <input :focus="inputFocus" v-model="value" class="input" :disabled="disabled" confirm-type="search"                placeholder-style="font-size:3.733vw;" :placeholder="placeholder" type="text"                @input="isInput ? onConfirm($event) : ''" @confirm="isInput ? '' : onConfirm($event)">            <icon v-if="value" class="icon" type="clear" size="3.733vw" @click="onClear" />        </view>        <slot />    </view></template><script>export default {    props: {        placeholder: {            type: String,            default: "搜索关键字"        },        focus: {            type: Boolean,            default: true        },        onSearch: {            type: Function        },        delay: {            type: [String, Number],            default: 350        },        disabled: {            type: Boolean,            default: false        },        background: {            type: String        },        isInput: {            type: Boolean,            default: false        }    },    watch: {        focus: function (newVal) {            setTimeout(() => {                this.inputFocus = newVal;            }, this.delay)        }    },    data() {        return {            value: "",            inputFocus: false,        }    },    methods: {        onConfirm() {            this.$emit("onSearch", this.value)        },        onClear() {            this.value = '';            this.$emit("onSearch", this.value)        }    },}</script><style lang="scss">.search-box {    display: flex;    width: 100%;    box-sizing: border-box;    .search {        display: flex;        align-items: center;        flex: 1;        height: 30px;        border-radius: 50px;        flex-shrink: 0;        margin: 0 !important;        .icon {            padding: 10px;        }        .input {            flex: 1;            margin: 0 !important;        }    }}</style>
 |