|
@@ -1,33 +1,31 @@
|
|
|
+"use strict";
|
|
|
var search = new Vue({
|
|
|
el: '#search',
|
|
|
data: {
|
|
|
listQuery: {
|
|
|
keyword: '',
|
|
|
- pageSize: 6,
|
|
|
+ pageSize: 1,
|
|
|
pageNum: 1
|
|
|
},
|
|
|
- searchList: [],
|
|
|
- hasNextPage: false,
|
|
|
- total: 100,
|
|
|
+ searchList: [], // 查询列表
|
|
|
+ totalRecord: 100,
|
|
|
totalPage: 10,
|
|
|
- jumpInput: 1,
|
|
|
+ jumpInput: 1
|
|
|
},
|
|
|
filters: {
|
|
|
// 处理url
|
|
|
formatUrl: function (item) {
|
|
|
if (item.commodityType === 1) {
|
|
|
- return 'product-' + item.productId + '.html'
|
|
|
+ return 'product-' + item.productId + '.html';
|
|
|
} else {
|
|
|
- return 'instrument-' + item.productId + '.html'
|
|
|
+ return 'instrument-' + item.productId + '.html';
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
+ }
|
|
|
},
|
|
|
computed: {
|
|
|
+ // 页码
|
|
|
pagination: function () {
|
|
|
- const pageNum = this.listQuery.pageNum;
|
|
|
- const pageNumList = [pageNum - 2, pageNum - 1, pageNum, pageNum + 1, pageNum + 2];
|
|
|
- return pageNumList;
|
|
|
+ return this.makePagination(this.listQuery.pageNum, this.totalPage);
|
|
|
}
|
|
|
},
|
|
|
mounted: function () {
|
|
@@ -35,39 +33,27 @@ var search = new Vue({
|
|
|
this.fetchSearchList();
|
|
|
},
|
|
|
methods: {
|
|
|
- queryString: function (queryStr) {
|
|
|
- const queryStrList = decodeURI(queryStr).split('&');
|
|
|
- const query = Object.create(null);
|
|
|
- queryStrList.forEach(function (str) {
|
|
|
- const temp = str.split('=');
|
|
|
- const key = temp[0];
|
|
|
- const val = temp[1] || '';
|
|
|
- query[key] = val;
|
|
|
- });
|
|
|
- return query
|
|
|
- },
|
|
|
// 初始化关键字
|
|
|
initSearchWord: function () {
|
|
|
console.log(decodeURI(window.location.search.slice(1)));
|
|
|
- const query = this.queryString(window.location.search.slice(1));
|
|
|
+ var query = this.queryString(window.location.search.slice(1));
|
|
|
document.querySelector('#searchKeyword').value = query.keyword;
|
|
|
this.listQuery.keyword = query.keyword || '';
|
|
|
},
|
|
|
// 获取查询列表
|
|
|
fetchSearchList: function () {
|
|
|
- const self = this;
|
|
|
+ var self = this;
|
|
|
EncyclopediaApi.FetchListByKeyword(this.listQuery, function (res) {
|
|
|
if (res.code === 0) {
|
|
|
- const data = res.data;
|
|
|
- self.hasNextPage = data.hasNextPage;
|
|
|
+ var data = res.data;
|
|
|
self.listQuery.pageNum = data.pageNum;
|
|
|
self.searchList = data.results;
|
|
|
- self.total = data.totalRecord;
|
|
|
+ self.totalRecord = data.totalRecord;
|
|
|
self.totalPage = data.totalPage;
|
|
|
} else {
|
|
|
CAIMEI.Alert(res.msg, '确定', false);
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
// 页码切换
|
|
|
pageChange: function (pageNum) {
|
|
@@ -78,10 +64,43 @@ var search = new Vue({
|
|
|
},
|
|
|
// 根据关键词进行标题格式化
|
|
|
formatFromKeyword: function (name) {
|
|
|
- const reg = new RegExp(this.listQuery.keyword, 'ig');
|
|
|
+ var reg = new RegExp(this.listQuery.keyword, 'ig');
|
|
|
return name.replace(reg, function ($1) {
|
|
|
- return '<span style="color: #e15616">' + $1 + '</span>'
|
|
|
+ return '<span style="color: #e15616">' + $1 + '</span>';
|
|
|
});
|
|
|
+ },
|
|
|
+ // 处理url参数 返回参数键值对
|
|
|
+ queryString: function (queryStr) {
|
|
|
+ var queryStrList = decodeURI(queryStr).split('&');
|
|
|
+ var query = Object.create(null);
|
|
|
+ queryStrList.forEach(function (str) {
|
|
|
+ var temp = str.split('=');
|
|
|
+ var key = temp[0];
|
|
|
+ var val = temp[1] || '';
|
|
|
+ query[key] = val;
|
|
|
+ });
|
|
|
+ return query;
|
|
|
+ },
|
|
|
+ // 处理页码
|
|
|
+ makePagination: function (pageNum, totalPage) {
|
|
|
+ // 页码列表
|
|
|
+ var arr = [];
|
|
|
+ // 初始化页码列表
|
|
|
+ for (var i = 1; i <= totalPage; i++) {
|
|
|
+ arr[i - 1] = i;
|
|
|
+ }
|
|
|
+ if (totalPage <= 7) return arr;
|
|
|
+ // 查找当前页码在页码列表中的位置
|
|
|
+ var pop = arr.indexOf(pageNum);
|
|
|
+ // 截取页码
|
|
|
+ if (pageNum < 4) {
|
|
|
+ arr = arr.splice(pop + 1 - pageNum, 6);
|
|
|
+ } else if (pageNum > totalPage - 3) {
|
|
|
+ arr = arr.reverse().splice(0, 6).reverse();
|
|
|
+ } else {
|
|
|
+ arr = arr.splice(pop - 2, 5);
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
}
|
|
|
}
|
|
|
});
|