1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/beijing_hongye_huicheng-lilishop-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Search.vue 5.4 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
Yer Отправлено 2 лет назад 308619f
<template>
<div class="navbar" :class="{'small-search-box':useClass == 'fixed-show'}">
<div class="container width_1200_auto flex flex-a-c">
<img
:src="$store.state.logoImg"
v-if="showLogo"
class="logo-img"
alt=""
@click="$router.push('/')"
/>
<div :class="{'small-search-box':useClass == 'fixed-show'}" class="search-box">
<i-input
v-model="searchData"
size="large"
class="search "
placeholder="输入你想查找的商品"
@keyup.enter.native="search"
>
<div class="search-icon" slot="append" @click="search">
<Icon type="ios-search" size="21"/>
</div>
</i-input>
<template v-if="showTag">
<div class="only-store" v-if="storeId" @click="research()">
切换为{{!onlyStore ? '店铺内' : '平台'}}搜索
</div>
<div v-if="promotionTags.length === 0"></div>
<div v-else class="history-list flex">
<div
v-for="(item, index) in promotionTags"
:key="index"
class="mr_10"
>
<span class="history-item" @click="selectTags(item)">{{ item }}</span>
</div>
</div>
</template>
</div>
</div>
</div>
</template>
<script>
import storage from '@/plugins/storage.js'
import {hotWords} from '@/api/goods.js'
export default {
name: 'search',
props: {
showTag: { // 是否展示搜索栏下方热门搜索
type: Boolean,
default: true
},
showLogo: { // 是否展示左侧logo
type: Boolean,
default: true
},
storeId: { // 是否为店铺页面
type: String,
default: ""
},
hover: {
type: Boolean,
default: false
},
useClass:{
type:null,
default:''
}
},
watch:{
storeId(val){
this.onlyStore = val ? true : false
}
},
data() {
return {
searchData: '', // 搜索内容
onlyStore:false,
};
},
methods: {
selectTags(item) { // 选择热门标签
this.searchData = item;
this.search();
},
research(){
this.onlyStore = !this.onlyStore
},
search () { // 全平台搜索商品
const url = this.$route.path;
if(url == '/goodsList'){
this.$emit('search', this.searchData)
}else{
const pushData = {
path:'/goodsList',
query: { keyword: this.searchData },
}
if(this.storeId && this.onlyStore) pushData.query.storeId = this.storeId
this.$router.push(pushData);
}
},
searchStore() { // 店铺搜索商品
this.$emit('search', this.searchData)
}
},
computed: {
promotionTags() {
if (this.$store.state.hotWordsList) {
return JSON.parse(this.$store.state.hotWordsList)
} else {
return []
}
}
},
created() {
this.searchData = this.$route.query.keyword
if (!this.hover) { // 首页顶部固定搜索栏不调用热词接口
// 搜索热词每5分钟请求一次
const reloadTime = storage.getItem('hotWordsReloadTime')
const time = new Date().getTime() - 5 * 60 * 1000
if (!reloadTime) {
hotWords({count: 5}).then(res => {
if (res.success && res.result) storage.setItem('hotWordsList', res.result)
})
storage.setItem('hotWordsReloadTime', new Date().getTime())
} else if (reloadTime && time > reloadTime) {
hotWords({count: 5}).then(res => {
if (res.success && res.result) storage.setItem('hotWordsList', res.result)
})
storage.setItem('hotWordsReloadTime', new Date().getTime())
}
}
}
};
</script>
<style scoped lang="scss">
.only-store{
text-align: right;
color:$theme_color;
cursor: pointer;
}
.navbar {
height: 113px;
background: #fff;
}
.search-icon{
width: 100%;
height: 100%;
}
.small-search-box{
height: 60px;
margin: 0 !important;
}
.container {
position: relative;
height: 100%;
}
.search {
width: 778.4px;
margin: 10px 0px 5px 0;
border-radius: 18.9px;
/deep/ .ivu-input.ivu-input-large {
border: 1.4px solid $theme_color;
box-sizing: border-box;
border-radius: 19.6px;
position: relative;
padding-left: 26px;
font-size: 14px;
font-weight: normal;
height: 37.8px;
color: #999;
&:focus {
box-shadow: none;
}
}
/deep/ .ivu-input-group-append {
border-radius: 19.6px !important;
cursor: pointer;
box-sizing: border-box;
border: 1.4px solid $theme_color;
width: 67.2px;
height: 37.8px;
position: absolute;
right: 0;
display: flex;
align-items: center;
justify-content: center;
top: 0;
z-index: 99;
background-color: $theme_color;
color: #ffffff;
button {
font-size: 14px;
font-weight: 600;
line-height: 1;
}
}
}
.search-box{
margin-left: 28px;
}
.logo-img {
max-width: 150px;
cursor: pointer;
}
.store-search {
width: 55.6px;
padding: 0 9px;
border-radius: 0;
border-radius: 3px;
&:nth-child(2) {
width: 55px;
margin-left: -2px;
border-radius: 3px;
}
}
.btn-div {
position: relative;
height: 0px;
top: -38px;
left: 352px;
}
.history-list {
margin-left: 28px;
}
.history-item {
font-size: 13px;
font-weight: normal;
line-height: 16px;
letter-spacing: 0px;
margin-right: 17px;
color: #666666;
cursor: pointer;
}
</style>

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/beijing_hongye_huicheng-lilishop-ui.git
git@gitlife.ru:oschina-mirror/beijing_hongye_huicheng-lilishop-ui.git
oschina-mirror
beijing_hongye_huicheng-lilishop-ui
beijing_hongye_huicheng-lilishop-ui
v4.3