代码拉取完成,页面将自动刷新
<!DOCTYPE html>
<html xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<title>乐优商城--商品搜索结果页</title>
<link rel="icon" href="assets/img/favicon.ico">
<link href='./css/material.css' rel="stylesheet">
<link href="./css/vuetify.min.css" rel="stylesheet">
<script src="./js/vue/vue.js"></script>
<script src="./js/vue/vuetify.js"></script>
<script src="./js/axios.min.js"></script>
<script src="./js/common.js"></script>
<link rel="stylesheet" type="text/css" href="css/webbase.css"/>
<link rel="stylesheet" type="text/css" href="css/pages-list.css"/>
<link rel="stylesheet" type="text/css" href="css/widget-cartPanelView.css"/>
<style type="text/css">
* {
box-sizing: unset;
}
.btn-arrow, .btn-arrow:visited, .btn-arrow:link, .btn-arrow:active {
width: 46px;
height: 23px;
border: 1px solid #DDD;
background: #FFF;
line-height: 23px;
font-family: "\5b8b\4f53";
text-align: center;
font-size: 16px;
color: #AAA;
text-decoration: none;
out-line: none
}
.btn-arrow:hover {
background-color: #1299ec;
color: whitesmoke;
}
.top-pagination {
display: block;
padding: 3px 15px;
font-size: 11px;
font-weight: 700;
line-height: 18px;
color: #999;
text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
text-transform: uppercase;
float: right;
margin-top: 6px
}
.top-pagination span {
margin-right: 10px;
}
/* .logo-list li{
padding:8px;
}
.logo-list li:hover{
background-color: #f3f3f3;
}*/
.type-list a:hover {
color: #1299ec;
}
.skus {
list-style: none;
}
.skus li {
list-style: none;
display: inline-block;
float: left;
margin-left: 2px;
border: 2px solid #f3f3f3;
}
.skus li.selected {
border: 2px solid #dd1144;
}
.skus img {
width: 25px;
height: 25px;
}
</style>
<script type="text/javascript" src="plugins/jquery/jquery.min.js"></script>
</head>
<body>
<div id="searchApp">
<div id="nav-bottom">
<ly-top/>
</div>
<!--list-content-->
<div class="main">
<div class="py-container">
<div class="bread">
<!--面包屑-->
<ul class="fl sui-breadcrumb">
<li><span>全部结果:</span></li>
<li v-for="(c,i) in breads" :key="i">
<a href="#" v-if="i<2">{{c.name}}</a>
<span v-else>{{c.name}}</span>
</li>
</ul>
<!--已选择过滤项-->
<ul class="tags-choose">
<li class="tag" v-for="(v,k) in search.filter"
v-if="k!=='cid3'" :key="k">
{{k==='brandId'?'品牌':k}}:<span style="color: red">{{getFilterValue(k,v)}}</span>
<i class="sui-icon icon-tb-close" @click="removefilter(k)"></i>
</li>
</ul>
<div class="clearfix"></div>
</div>
<!--selector-->
<div class="clearfix selector">
<div class="type-wrap" v-for="(f,i) in remainFilters" :key="i" v-if="f.k !== '品牌'" v-show="i < 5 || show">
<div class="fl key">{{f.k}}</div>
<div class="fl value">
<ul class="type-list">
<li v-for="(o,j) in f.options" :key="j" @click="addFilter(f.k,o)">
<a>{{o.name || o + (f.unit || '')}}</a>
</li>
</ul>
</div>
<div class="fl ext"></div>
</div>
<div class="type-wrap logo" v-else>
<div class="fl key brand">品牌</div>
<div class="value logos">
<ul class="logo-list">
<li v-for="o in f.options" :key="o.id" @click="addFilter(f.k,o)"><img :src="o.image" /></li>
</ul>
</div>
<div class="fl ext">
<a href="javascript:void(0);" class="sui-btn">多选</a>
</div>
</div>
<div class="type-wrap" style="text-align: center">
<v-btn small flat v-show="!show" @click="show=true">
更多
<v-icon>arrow_drop_down</v-icon>
</v-btn>
<v-btn small="" flat v-show="show" @click="show=false">
收起
<v-icon>arrow_drop_up</v-icon>
</v-btn>
</div>
</div>
<!--details-->
<div class="details">
<div class="sui-navbar">
<div class="navbar-inner filter">
<!--排序字段-->
<ul class="sui-nav">
<li :class="{active:!search.sortBy}" @click="search.sortBy=''">
<a href="#">综合</a>
</li>
<li>
<a href="#">销量</a>
</li>
<li @click="search.sortBy='createTime'" :class="{active: search.sortBy==='createTime'}">
<a href="#">新品</a>
</li>
<li>
<a href="#">评价</a>
</li>
<li @click="search.sortBy='price'; search.descending = !search.descending"
:class="{active: search.sortBy==='price'}">
<a href="#">
价格
<v-icon v-show="search.descending">arrow_drop_down</v-icon>
<v-icon v-show="!search.descending">arrow_drop_up</v-icon>
</a>
</li>
</ul>
<div class="top-pagination">
<span>共 <i style="color: #222;">{{total}}+</i> 商品</span>
<span><i style="color: red;">{{search.page}}</i>/{{totalPage}}</span>
<a class="btn-arrow" href="#" style="display: inline-block" @click="prevPage"><</a>
<a class="btn-arrow" href="#" style="display: inline-block" @click="nextPage">></a>
</div>
</div>
</div>
<div class="goods-list">
<ul class="yui3-g">
<li class="yui3-u-1-5" v-for="goods in goodsList" :key="goods.id">
<div class="list-wrap">
<div class="p-img">
<a :href="'/item/'+goods.id+'.html'" target="_blank"><img :src="goods.selected.image" height="200"/></a>
<!--多sku图片列表-->
<ul class="skus">
<li :class="{selected: sku.id == goods.selected.id}" v-for="sku in goods.skus" :key="sku.id"
@mouseEnter="goods.selected=sku">
<img :src="sku.image">
</li>
</ul>
</div>
<div class="clearfix">
<div class="price">
<strong>
<em>¥</em>
<i>{{ly.formatPrice(goods.selected.price)}}</i>
</strong>
</div>
<div class="attr">
<em>{{goods.selected.title.length>20?goods.selected.title.substring(0,20)+"...":goods.selected.title}}</em>
</div>
<div class="cu">
<em><span>促</span>{{goods.subTitle.length>20?goods.subTitle.substring(0,20)+"...":goods.subTitle}}</em>
</div>
<div class="commit">
<i class="command">已有2000人评价</i>
</div>
<div class="operate">
<a href="success-cart.html" target="_blank" class="sui-btn btn-bordered btn-danger">加入购物车</a>
<a href="javascript:;">对比</a>
<a href="javascript:;">关注</a>
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="fr">
<div class="sui-pagination pagination-large">
<ul style="width: 550px">
<li :class="{prev:true,disabled:search.page === 1}">
<a href="#" @click="prevPage">«上一页</a>
</li>
<li :class="{active: index(i) === search.page}" @click="search.page=index(i)" v-for="i in Math.min(5,totalPage)" :key="i">
<a href="#">{{index(i)}}</a>
</li>
<li class="dotted" v-show="totalPage > 5"><span>...</span></li>
<li :class="{next:true,disabled:search.page === totalPage}">
<a href="#" @click="nextPage">下一页»</a>
</li>
</ul>
<div>
<span>共{{totalPage}}页 </span>
<span>
到第
<input type="text" class="page-num" :value="search.page">
页 <button class="page-confirm" onclick="alert(1)">确定</button>
</span>
</div>
</div>
</div>
</div>
<!--hotsale-->
<div class="clearfix hot-sale">
<h4 class="title">热卖商品</h4>
<div class="hot-list">
<ul class="yui3-g">
<li class="yui3-u-1-4">
<div class="list-wrap">
<div class="p-img">
<img src="img/like_01.png"/>
</div>
<div class="attr">
<em>Apple苹果iPhone 6s (A1699)</em>
</div>
<div class="price">
<strong>
<em>¥</em>
<i>4088.00</i>
</strong>
</div>
<div class="commit">
<i class="command">已有700人评价</i>
</div>
</div>
</li>
<li class="yui3-u-1-4">
<div class="list-wrap">
<div class="p-img">
<img src="img/like_03.png"/>
</div>
<div class="attr">
<em>金属A面,360°翻转,APP下单省300!</em>
</div>
<div class="price">
<strong>
<em>¥</em>
<i>4088.00</i>
</strong>
</div>
<div class="commit">
<i class="command">已有700人评价</i>
</div>
</div>
</li>
<li class="yui3-u-1-4">
<div class="list-wrap">
<div class="p-img">
<img src="img/like_04.png"/>
</div>
<div class="attr">
<em>256SSD商务大咖,完爆职场,APP下单立减200</em>
</div>
<div class="price">
<strong>
<em>¥</em>
<i>4068.00</i>
</strong>
</div>
<div class="commit">
<i class="command">已有20人评价</i>
</div>
</div>
</li>
<li class="yui3-u-1-4">
<div class="list-wrap">
<div class="p-img">
<img src="img/like_02.png"/>
</div>
<div class="attr">
<em>Apple苹果iPhone 6s (A1699)</em>
</div>
<div class="price">
<strong>
<em>¥</em>
<i>4088.00</i>
</strong>
</div>
<div class="commit">
<i class="command">已有700人评价</i>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#searchApp",
data: {
search: {
key: "", // 搜索页面的关键字
page:1,
filter:{},
},
breads:[],
goodsList: [],
ly,
total:0,
totalPage:1,
filters:[],
show:false
},
components: {
lyTop: () => import("./js/pages/top.js")
},
created() {
// 判断是否有请求参数
if (!location.search) {
return;
}
// 将请求参数转为对象
const search = ly.parse(location.search.substring(1));
search.page=search.page?parseInt(search.page):1;
//排序初始化
search.sortBy = search.sortBy || "";
search.descending = search.descending === "true" || false;
// 对过滤条件初始化
search.filter = search.filter || {};
// 记录在data的search对象中
this.search = search;
// 发起请求,根据条件搜索
this.searchFromServer();
},watch:{
search:{
deep:true,
handler(val,old){
if(!old || !old.key){
// 如果旧的search值为空,或者search中的key为空,证明是第一次
return;
}
// 把search对象变成请求参数,拼接在url路径
window.location.href = "http://www.leyou.com/search.html?" + ly.stringify(val,{allowDots : false});
}
}
},
computed:{
remainFilters(){
const keys = Object.keys(this.search.filter);
if(this.search.filter.cid3){
keys.push("分类")
}
if(this.search.filter.brandId){
keys.push("品牌")
}
return this.filters.filter(f => !keys.includes(f.k) && f.options.length>1);
}
},
methods: {
prevPage(){
if(this.search.page > 1){
this.search.page--
}
},
nextPage(){
if(this.search.page < this.totalPage){
this.search.page++
}
},
index(i) {
if (this.search.page <= 3) {
// 当前页小于3,则页码就是从 i 开始
return i;
} else {
// 大于3,则从page-2开始,然后逐个加1
return this.search.page - 3 + i;
}
},
removefilter(k){
this.search.filter[k]=null;
},
searchFromServer() {
// 发起异步请求
ly.http.post("/search/page", this.search)
.then(({data}) => {
if (data.items.length===0){
return;
}
this.total = data.total;
this.totalPage = data.totalPage;
//初始化sku信息
data.items.forEach(goods => {
goods.skus = JSON.parse(goods.skus);
goods.selected = goods.skus[0];
});
this.goodsList = data.items;
if (data.categories.length===1){
ly.http.get("/item/category/level/"+data.categories[0].id)
.then(resp => this.breads = resp.data);
}
this.filters.push({
k:"分类",
options:data.categories
});
this.filters.push({
k:"品牌",
options:data.brands
});
// 规格参数
data.specs.forEach(spec => {
this.filters.push(spec);
})
})
},getFilterValue(k,v){
//如果没有过滤参数,跳过展示
if(!this.filters||this.filters.length===0){
return null;
}
let filter = null;
//判断是否是品牌
if(k === 'brandId'){
// 获取品牌的完整过滤项数据
filter = this.filters.find(f => f.k === '品牌');
// 返回品牌的name
return filter.options[0].name;
}
//返回品牌的name
filter=this.filters.find(f=>f,k===k);
//其他规格,则直接返回,拼接单位
return v + (filter.unit || '');
},
addFilter(k,option){
const obj = {};
Object.assign(obj, this.search.filter);
// 商品分类
if(k === '分类'){
obj.cid3 = option.id;
}else if(k === '品牌'){
obj.brandId = option.id;
}else{
// 普通规格参数:
obj[k] = option
}
this.search.filter = obj;
}
}
});
</script>
<!-- 底部栏位 -->
<!--页面底部,由js动态加载-->
<div class="clearfix footer"></div>
<script type="text/javascript">$(".footer").load("foot.html");</script>
<!--页面底部END-->
</body>
<!--购物车单元格 模板-->
<script type="text/template" id="tbar-cart-item-template">
<div class="tbar-cart-item">
<div class="jtc-item-promo">
<em class="promo-tag promo-mz">满赠<i class="arrow"></i></em>
<div class="promo-text">已购满600元,您可领赠品</div>
</div>
<div class="jtc-item-goods">
<span class="p-img"><a href="'/item/'+goods.id+'.html'" target="_blank"><img src="{2}" alt="{1}" height="50" width="50"/></a></span>
<div class="p-name">
<a href="#">{1}</a>
</div>
<div class="p-price"><strong>¥{3}</strong>×{4}</div>
<a href="#none" class="p-del J-del">删除</a>
</div>
</div>
</script>
<!--侧栏面板结束-->
<script type="text/javascript" src="js/plugins/jquery/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#service").hover(function () {
$(".service").show();
}, function () {
$(".service").hide();
});
$("#shopcar").hover(function () {
$("#shopcarlist").show();
}, function () {
$("#shopcarlist").hide();
});
})
</script>
<script type="text/javascript" src="js/model/cartModel.js"></script>
<script type="text/javascript" src="js/czFunction.js"></script>
<script type="text/javascript" src="js/plugins/jquery.easing/jquery.easing.min.js"></script>
<script type="text/javascript" src="js/plugins/sui/sui.min.js"></script>
<script type="text/javascript" src="js/widget/cartPanelView.js"></script>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。