123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- 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:false,
- limit:10,
- pageindex:0,
- lock:false,
- searchfouce:false,
- selectbar:null,
- hasloadall:false,
- 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:"",
- filterlock:true
- }
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- bindSearch(this);
- var initialheight = Math.round((app.globalData.windowh-300)/26/app.globalData.scale);
- //initialheight = initialheight-initialheight%2;
- var searchdata = Object.assign(this.data.searchdata,options);
- this.setData(Object.assign({
- initialheight:initialheight
- },stylemap));
- this.getWheres();
- this.getList(this.data.searchdata);
- this.loadBrandRecommend()
- },
- 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, {
- no_brand_series:1
- }, function (json) {
- _self.setData({
- wheres: json.data
- })
- })
- },
- loadBrandRecommend:function(){
- var _self = this;
- get(pathmap.brandrecommend, {
- }, function (json) {
- _self.setData({
- brandrecommend:json.data
- })
- })
- },
- getList:function(searchdata){
- var _self = this;
- var para = this.transformSearchData(searchdata);
- para.offset = 0;
- para.limit = this.data.limit;
- if(!this.data.lock){
- this.setData({
- lock:true
- })
- get(pathmap.searchcar, para, function (json) {
- var list = retCartData(json.data&&json.data.list);
- var obj = {
- lock:false,
- list:list,
- searchdata:searchdata,
- offset:_self.data.limit
- }
- if(json.data.total<=_self.data.limit){
- obj.hasloadall=true;
- }else{
- obj.hasloadall=false;
- }
- _self.setData(obj);
- if(list.length==0){
- _self.loadLikeCar()
- }
- })
- }
- },
- loadListMore:function(){
- var _self = this;
- var para = this.transformSearchData(this.data.searchdata);
- para.offset = this.data.offset;
- para.limit = this.data.limit;
- if(!this.data.lock&&!this.data.hasloadall){
- this.setData({
- lock:true
- })
- get(pathmap.searchcar, para, function (json) {
- var list = retCartData(json.data&&json.data.list);
- var nextoffset = _self.data.offset+_self.data.limit
- var obj = {
- lock:false,
- list:_self.data.list.concat(list),
- offset:nextoffset
- }
- if(json.data.total<=nextoffset){
- obj.hasloadall=true;
- }else{
- obj.hasloadall=false;
- }
- _self.setData(obj);
- })
- }
- },
- showFilter:function(e){
- var el = e.currentTarget;
- var name = el.dataset.name;
- if(name==this.data.selectbar){
- name=null;
- }
- if(name=="brand"&&!this.data.brandlist){
- this.getBrands();
- }
- this.setData({
- selectbar:name
- })
- },
- getBrands:function(){
- var _self=this;
- get(pathmap.getbrand, {}, function (json) {
- var initiallist = {};
- var brandlist = []
- for(var i = 65; i < 91; i++){
- initiallist[String.fromCharCode(i)] = [];
- }
- json.data.brand.forEach(function(item){
- if(Object.prototype.toString.call(initiallist[item.initial])=="[object Array]"){
- initiallist[item.initial].push(item);
- }
- })
- var inith = 562;
- var scale = app.globalData.scale;
- for(var name in initiallist){
- var l = initiallist[name].length;
- if(l>0){
- brandlist.push({
- initial:name,
- list:initiallist[name],
- top:inith/scale
- });
- inith = inith+45+l*79;
- }
- }
- _self.setData({wheres:Object.assign(_self.data.wheres,{brandlist:brandlist})})
- })
- },
- 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 brandinfo = e.currentTarget.dataset;
- var series = [];
- get(pathmap.serieslist, {brand_id:brandinfo.id}, function (json) {
- series = json.data.car_series;
- _self.setData({
- serieslist:{
- belong:brandinfo,
- list:series
- },
- searchdata:Object.assign(_self.data.searchdata,{brand:brandinfo.id,car_series:""})
- })
- })
- // this.data.wheres.car_series.map(function(item){
- // if(item.brand_id == brand.brand_id){
- // series.push(item);
- // }
- // })
- // this.setData({
- // serieslist:{
- // belong:brand,
- // list:series
- // },
- // searchdata:Object.assign(this.data.searchdata,{brand:brand.brand_id,car_series:""})
- // })
- // get(pathmap.series, {
- // brand_id:brand.brand_id
- // }, function (json) {
- // var list = retCartData(json.data.list)
- // _self.setData({
- // serieslist: json.data
- // })
- // })
- },
- waitScroll:null,
- brandScroll:function(e) {
- var _self = this;
- //this.setData({ brandScrollTop: e.detail.scrollTop })
- if(this.waitScroll){
- try{
- clearTimeout(this.waitScroll);
- }catch(err){}
- }
- this.waitScroll = setTimeout(function(){
- var scrollinit = "";
- var list = _self.data.wheres.brandlist;
- for(var i=0,l=list.length;i<l;i++){
- if(e.detail.scrollTop<list[i].top){
- // scrollinit = list[i?i-1:i].initial;
- scrollinit=(i?i-1:i)
- break;
- }
- }
- _self.setData({scrollinit:scrollinit})
- },50)
- },
- selectSeries:function(e){
- var _self = this;
- var series = e.currentTarget.dataset.series;
- this.setData({
- serieslist:"",
- selectbar:"" //关闭品牌筛选卡
- })
- this.getList(Object.assign(this.data.searchdata,{car_series:series.car_series_id}));
- },
- filterBack:function(){
- this.setData({selectbar:"",serieslist:""})
- },
- 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);
- },
- lockFilter:function(e){
- if(e.detail&&!this.data.filterlock){
- this.setData({
- filterlock:true
- })
- }else if(!e.detail&&this.data.filterlock){
- this.setData({
- filterlock:false
- })
- }
- },
- submitsearchinfo:function(obj){
- this.getList(Object.assign(this.data.searchdata,obj));
- this.setData({searchshow:false})
- },
- })
|