123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- import { get,post } from "../../common/request.js"
- import stylemap from "../../common/stylemap"
- import pathmap from "../../common/pathmap"
- import { retCartData } from "../../data/car"
- import bindSearch from "../../module/search/search.js"
- const app = getApp();
- // pages/buy/buy.js
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- windowh: app.globalData.windowh,
- list:[],
- pagesize:15,
- pageindex:0,
- lock:false,
- searchfouce:false,
- selectbar:null,
- filters:[
- {
- title:"排序",
- name:"sortby"
- },
- {
- title:"品牌",
- name:"brand"
- },
- {
- title:"价格",
- name:"price"
- },
- {
- title:"更多",
- name:"more"
- }
- ],
- sortbymap:[
- {
- title:"默认排序",
- value:""
- },
- {
- title:"价格最低",
- value:"price&asc"
- },
- {
- title:"价格最高",
- value:"price&desc"
- },
- {
- title:"车龄最短",
- value:"car_age&asc"
- },
- {
- title:"里程最少",
- value:"mileage&asc"
- },
- {
- title:"最新发布",
- value:"new&asc"
- }
- ],
- searchdata:{
- sortby:"",
- price:"",
- car_age:"",
- mileage:"",
- transmission:"",
- displacement:"",
- emission:"",
- colour:""
- }
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- bindSearch(this);
- var initialheight = (app.globalData.windowh-300)/26;
- this.setData(Object.assign({initialheight:initialheight},stylemap));
- var searchdata = Object.assign(this.data.searchdata,{keys:options.keys||""});
- this.getWheres();
- this.getList(this.data.searchdata);
- },
- transformSearchData:function(searchdata){
- var para = Object.assign({},searchdata);
- var sortby = para.sortby;
- if(sortby){
- var sortinfo = sortby.split("&");
- para.order_key = sortinfo[0];
- para.order_val = sortinfo[1];
- }
- delete para.sortby;
- return para;
- },
- //获取筛选信息
- getWheres:function(){
- var _self = this;
- get(pathmap.wheres, {
- }, function (json) {
- var brandlist = {};
- json.data.brandlist = []
- for(var i = 65; i < 91; i++){
- brandlist[String.fromCharCode(i)] = [];
- }
- json.data.brand.forEach(function(item){
- if(Object.prototype.toString.call(brandlist[item.initial])=="[object Array]"){
- brandlist[item.initial].push(item);
- }
- })
- var inith = 504;
- var scale = app.globalData.scale;
- for(var name in brandlist){
- var l = brandlist[name].length;
- if(l>0){
- json.data.brandlist.push({
- initial:name,
- list:brandlist[name],
- top:inith/scale
- });
- inith = inith+45+l*79;
- }
- }
- _self.setData({
- wheres: json.data
- })
- })
- },
- getList:function(searchdata){
- var _self = this;
- var para = this.transformSearchData(searchdata);
- para.offset = 0;
- para.limit = this.data.pagesize;
- if(!this.data.lock){
- this.setData({
- lock:true
- })
- get(pathmap.searchcar, para, function (json) {
- var list = retCartData(json.data&&json.data.list)
- _self.setData({
- lock:false,
- list:list,
- searchdata:searchdata,
- offset:0
- })
- if(list.length==0){
- _self.loadLikeCar()
- }
- })
- }
- },
- showFilter:function(e){
- var el = e.currentTarget;
- var name = el.dataset.name;
- if(name==this.data.selectbar){
- name=null;
- }
- this.setData({
- selectbar:name
- })
- },
- changeSort:function(e){
- var el = e.currentTarget;
- var name = el.dataset.sort;
- var searchdata = Object.assign(this.data.searchdata,{sortby:name});
- this.setData({
- selectbar:""
- })
- this.getList(searchdata);
- },
- changePrice:function(e){
- var el = e.currentTarget;
- var id = el.dataset.id;
- var searchdata = Object.assign(this.data.searchdata,{price:id});
- this.setData({
- selectbar:""
- })
- this.getList(searchdata);
- },
- loadLikeCar:function(){
- var _self = this;
- if(!this.data.like){
- get(pathmap.like, {
- offset: 0,
- limit: 10
- }, function (json) {
- var list = retCartData(json.data.list)
- _self.setData({
- like: list
- })
- })
- }
- },
- scrollInit:function(e){
- var init = e.currentTarget.dataset.init;
- this.setData({
- scrolltoinit:init
- })
- },
- getBrandDetail:function(e){
- var _self = this;
- var brand = e.currentTarget.dataset.brand;
- get(pathmap.series, {
- brand_id:brand.brand_id
- }, function (json) {
- var list = retCartData(json.data.list)
- _self.setData({
- serieslist: json.data
- })
- })
- },
- brandScroll:function(e) {
- //this.setData({ brandScrollTop: e.detail.scrollTop })
- var scrollinit = "";
- var list = this.data.wheres.brandlist;
- for(var i=0,l=list.length;i<l;i++){
- if(e.detail.scrollTop<list[i].top){
- scrollinit = list[i].initial;
- break;
- }
- }
- this.setData({scrollinit:scrollinit})
- },
- filterBack:function(){
- this.setData({selectbar:""})
- },
- getMoreFilter:function(e){
- var info = e.currentTarget.dataset;
- var obj = {};
- obj[info.type]=info.value;
- this.setData({searchdata:Object.assign(this.data.searchdata,obj)})
- },
- resetFilter:function(){
- this.setData({searchdata:Object.assign(this.data.searchdata,{
- car_age:"",
- mileage:"",
- transmission:"",
- displacement:"",
- emission:"",
- colour:""
- })})
- },
- moreSearch:function(){
- this.setData({selectbar:""})
- this.getList(this.data.searchdata);
- }
- })
|