feat:公共search组件

This commit is contained in:
talktao 2022-03-25 00:53:22 +08:00
parent a551ded7e3
commit 65614eb09c

View File

@ -1,81 +1,18 @@
<template> <script setup lang="ts">
<div class="search d-flex flex-column justify-content-start">
<!-- 头部搜索 -->
<div>
<van-sticky>
<div class="search_Box">
<div @click="back">
<van-icon size="20" name="arrow-left" />
</div>
<div>
<form action="javascript:return true">
<van-search
ref="search"
@focus="isSearch = true"
placeholder="请输入搜索文字"
shape="round"
v-model="value"
show-action
@click="isSearch = true"
@search="handleSearch(value)"
:autofocus="false"
>
<template #action>
<div class="search_Btn" @click="handleSearch(value)">搜索</div>
</template>
</van-search>
</form>
</div>
</div>
<van-tabs v-model:active="active" @click-tab="handleTab">
<van-tab title="综合"></van-tab>
<van-tab title="销量"></van-tab>
<van-tab title="价格升序"></van-tab>
<van-tab title="价格降序"></van-tab>
</van-tabs>
<!-- <van-dropdown-menu class="dropMenu" active-color="#29be81">
<van-dropdown-item @change="handleLeftMenuChange" v-model="synthesis" :options="option1" />
<van-dropdown-item @change="handleRightMenuChange" v-model="defaultSort" :options="option2" />
</van-dropdown-menu> -->
</van-sticky>
</div>
<!-- 商品列表展示 -->
<div class="card_Box mrn d-flex flex-column justify-content-start">
<div v-for="item in testData" :key="item.id">
<div class="list_content d-flex justify-content-between align-items-center">
<div class="left">
<van-image radius="14" width="130" height='120' fit="cover" src="https://img.yzcdn.cn/vant/cat.jpeg" >
<template v-slot:loading>
<van-loading type="spinner" size="20" />
</template>
<template v-slot:error>
<van-image></van-image>
</template>
</van-image>
</div>
<div class="right d-flex flex-column justify-content-around w-100 h-100 ps-4 fs-4">
<div>{{item.title}}</div>
<div>副标题xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="price">价格{{item.price}}</div>
<div>{{item.id}}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { ref, reactive, toRefs } from 'vue' import { ref, reactive, toRefs } from 'vue'
import { getSearchQuery } from 'api/search'
export default { //
setup(props, ctx) { const searchState = () => {
const value = ref('') // input const state = reactive({
const isSearch = ref(true) // value: '', // input
const goodsList = ref([]) // isSearch: true, //
const searchHistory = ref([]) // goodsList: [], //
const titleText = ref('搜索') titleText: '搜索',
const scrollTop = ref(0) // scrollTop: 0 //
})
return toRefs(state)
}
const {value, isSearch, goodsList, titleText, scrollTop} = searchState()
const active = ref(0) // tab const active = ref(0) // tab
@ -88,9 +25,7 @@ export default {
// //
const getSearchResult = (params) => { const getSearchResult = (params) => {
console.log(params,'params'); console.log(params,'params');
getSearchQuery().then(res=>{ //
})
} }
// //
@ -124,23 +59,64 @@ export default {
break; break;
} }
} }
return {
value,
isSearch,
goodsList,
searchHistory,
titleText,
scrollTop,
active,
getSearchResult,
handleSearch,
testData,
handleTab
}
}
}
</script> </script>
<template>
<div class="search d-flex flex-column justify-content-start">
<!-- 头部搜索 -->
<van-sticky>
<CustomHeader title="搜索" leftIcon="arrow-left" leftText=""/>
<form action="javascript:return true">
<van-search
ref="search"
@focus="isSearch = true"
placeholder="请输入搜索文字"
shape="round"
v-model="value"
show-action
@click="isSearch = true"
@search="handleSearch(value)"
:autofocus="false"
>
<template #action>
<div class="search_Btn" @click="handleSearch(value)">搜索</div>
</template>
</van-search>
</form>
<van-tabs v-model:active="active" @click-tab="handleTab">
<van-tab title="综合"></van-tab>
<van-tab title="销量"></van-tab>
<van-tab title="价格升序"></van-tab>
<van-tab title="价格降序"></van-tab>
</van-tabs>
</van-sticky>
<!-- 商品列表展示 -->
<div class="card_Box mrn d-flex flex-column justify-content-start">
<div v-for="item in testData" :key="item.id">
<div class="list_content d-flex justify-content-between align-items-center">
<div class="left">
<van-image radius="14" width="130" height='120' fit="cover" src="https://img.yzcdn.cn/vant/cat.jpeg" >
<template v-slot:loading>
<van-loading type="spinner" size="20" />
</template>
<template v-slot:error>
<van-image></van-image>
</template>
</van-image>
</div>
<div class="right d-flex flex-column justify-content-around w-100 h-100 ps-4 fs-4">
<div>{{item.title}}</div>
<div>副标题xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="price">价格{{item.price}}</div>
<div>{{item.id}}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<style lang="scss" scoped> <style lang="scss" scoped>
.search { .search {
overflow: hidden; overflow: hidden;