search.js 9.38 KB
var t = function(t) {
    return t && t.__esModule ? t : {
        default: t
    };
}(require("../../../utils/LoadMore.js")), ut = require("../../../utils/util.js"),
  a = getApp(), e = new t.default(), rq = a.request, oo = a.globalData.setting;

Page({
    data: {
        url: a.globalData.setting.imghost,
        resourceUrl: a.globalData.setting.resourceUrl,
        currentPage: 1,
        requestData: null,
        allData: null,
        openFilterModal: !1,
        openSearchModal: !1,
        baseUrl: "/api/weshop/goods/page?1=1",
        requestUrl: "",
        //hotWords: [ [ "手机", "小米", "iphone" ], [ "三星", "华为", "冰箱" ] ]
        hotWords: null,

        tabname: "sort",   //排序的字段
        adname: "asc",    //升降的字段
        rq_data:null,
				
				
				searchRecord: [],
				keyword: '',
    },
		
    onLoad: function(t) {
        this.data.rq_data=t;

        //接受有没有导购的参数
        var first_leader=t.first_leader;
        if(first_leader){
            getApp().globalData.first_leader=first_leader;
            //调用接口判断是不是会员
            getApp().request.promiseGet("/api/weshop/shoppingGuide/get/"+oo.stoid+"/"+first_leader,{}).then(res=>{
                if(res.data.code==0){
                    getApp().globalData.guide_id=res.data.data.id;
                }
            })
        }

       var th=this;
       a.getConfig2(function(rs){
         var arr=new Array(),arr2=new Array();
         if (rs.hot_keywords != null && ut.trim(rs.hot_keywords)!="" ){
            var arr1 = rs.hot_keywords.split('|');
            for (var i = 0; i < arr1.length;i++){
                if(i%5==0 && i!=0){
                  arr.push(arr2);
                  arr2=[];
                }else{
                  arr2.push(arr1[i]);
                }
            }
            if (arr2.length > 0) arr.push(arr2);
            th.setData({ hotWords: arr});
         }
		 

		 //计算等级价相关
		 var swithc_list=rs.switch_list;
		 var sw_arr=JSON.parse(swithc_list);
		 //---如果后台又开等级卡的开关---
		 if(sw_arr.rank_switch && sw_arr.rank_switch=="2"){
		 	    th.setData({rank_switch:true});	
		     	var user=getApp().globalData.userInfo;	
		 	    var ti=setInterval(function(){
		 			  if(!user) return false;
		 			  clearInterval(ti);
		 			  //---回调卡的列表---
		 			  th.getPlusCardType(function(ob){
		 			  	   th.setData({card_list:ob.card_list});				   
		 			  	   if(user.card_field ){
		 			  	      var str = user['card_expiredate'].replace(/-/g, '/');
		 			  	      var end = new Date(str);
		 			  	      end = Date.parse(end) / 1000;
		 			  	      var now = ut.gettimestamp();	
		 			  	  
		 			  	      //--- 判断是等级会员,且在有效期范围内 ---
		 			  	      if(user.card_field && now<end){
		 			  		    var card_name=ob.name_map.get(user.card_field);									
		 						if(card_name.length>7) card_name=card_name.substring(0,8);
		 			  		    th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list});				 
		 			  	      }		
		 			  		}
		 			  })	
		 		},500)				
		 }
		 
		 
		 
       })
       e.init(this, "", "requestData");
       var url = this.data.baseUrl;

       //扫一扫过来,显示搜索的内容
       var s_key = t.s_key;
       if (s_key){
         this.search(s_key); this.openSearchModal();
         return;
       }

       if (0 != t.brand_id && t.brand_id!=undefined){ url += "&brand_id=" + t.brand_id;}
       if (0 != t.nation_id && t.nation_id!=undefined) { url += "&nation_id=" + t.nation_id;}
       if (0 != t.max_price && t.max_price!=undefined) { url += "&min_pirce=" + t.min_pirce + "&max_price=" + t.max_price;}
       if (url != this.data.baseUrl) return this.requestSearch(url);
       this.openSearchModal();
			 
			 // 获取历史搜索记录
			 this.getHistorySearch();
    },
    changeTab: function(t) {
      var ord = t.currentTarget.dataset.href;
      var ad = t.currentTarget.dataset.ad;

      var url = this.data.requestUrl;

      if (this.data.tabname != ord) {
        this.setData({ tabname: ord, adname: "desc" });
      } else {
        ad = ad == "desc" ? "asc" : "desc";
        this.setData({ adname: ad });
      }
      this.resetData(), this.requestSearch(url);

    },

    //-----------真的调用地址进行搜索------------
    requestSearch: function(t) {
        var a = this;

        this.data.requestUrl = t, 
        //t += "&orderField=" + a.data.tabname;
        //t += "&orderType=" + a.data.adname;    
        //t += "&page=" + a.data.currentPage, 
        e.request(t, function(t) {
            a.data.currentPage++ , 
            null == a.data.allData && (a.data.allData = t.data.data.pageData), 
            a.closeSearchModal();
          },
          null, { is_mainshow: 1, isonsale: 1, store_id: oo.stoid, 
            orderField: a.data.tabname, orderType: a.data.adname, page: a.data.currentPage}
        );
    },
    onReachBottom: function() {
        this.data.openSearchModal || e.canloadMore() && this.requestSearch(this.data.requestUrl);
    },
    openFilterModal: function() {
        this.setData({
            openFilterModal: !0
        });
    },
    closeFilterModal: function() {
        this.setData({
            openFilterModal: !1
        });
    },
    filterGoods: function(t) {
        this.resetData(), this.requestSearch(t.currentTarget.dataset.href), this.closeFilterModal();
    },
    resetData: function() {
        e.resetConfig(), this.data.requestData = null, this.data.currentPage = 1;
    },

    //---回复最初的设置---显示全部分类--
    restoreData: function() {
        this.setData({
            requestData: this.data.allData,
        });
        this.data.currentPage=2;
    },
    openSearchModal: function() {
        this.setData({
            openSearchModal: !0
        });
    },
    closeSearchModal: function() {
        this.setData({
            openSearchModal: !1
        });
    },
    submitSearch: function(t) {
			console.log(111);
        this.search(t.detail.value.word);
				
				
    },

    //热搜关键字
    searchHotWord: function(t) {
			this.historyRecord();
      this.search(t.currentTarget.dataset.word);
    },

    //-----点击搜索按钮----
    search: function(t) {
        if ("string" != typeof t || "" == t) return a.showWarning("请输入搜索关键词");
        this.data.key_str=t;
				this.historyRecord();
        this.resetData(), this.requestSearch(this.data.baseUrl + "&key_str=" + encodeURIComponent(t));
    },

    //---------分享配置--------
    onShareAppMessage: function (e) {
        var curPage=this;
        var pagePath = curPage.route; //当前页面url
        if (pagePath.indexOf('/') != 0) {
            pagePath = '/' + pagePath;
        }

        if(this.data.key_str) {
            pagePath += "?s_key=" + this.data.key_str;
        }

        if(getApp().globalData.user_id){

            if(pagePath.indexOf("?")>0){
                pagePath+="&first_leader="+getApp().globalData.user_id;
            }else{
                pagePath+="?first_leader="+getApp().globalData.user_id;
            }
        }

        console.log("11-11"+pagePath);
        return {
            title: "商品搜索",
            path:pagePath,
        }
    },


    //---------图片失败,默认图片--------
    bind_bnerr: function (e) {
      var _errImg = e.target.dataset.errorimg;
      var _errObj = {};
      _errObj[_errImg] = this.data.url+ "/miniapp/images/default_g_img.gif";
      this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ;       
    },
	
	//---  获取卡类列表 ---
	getPlusCardType: function (func) {
	   var storid = oo.stoid;
	   var th = this;
	   getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => {
	     var plusCard = res.data.data;
	     var arr = [1219, 2089, 3031];
	     var new_arr = new Array();
        var card_name_map=new Map();
        var user = getApp().globalData.userInfo;
    
        for (var i = 0; i < plusCard.length; i++) {
          if ((!user || user.card_field==null || user.card_field=="") && (plusCard[i].IsStopBuy==true)) {
            continue;
          }    
          var name="card"+plusCard[i].CorrPrice.toLowerCase();
          card_name_map.set(name,plusCard[i].CardName);		
          new_arr.push(plusCard[i]);	
        	       
	     }
	    			  
			  var ob={"card_list":new_arr,"name_map":card_name_map};
			  func(ob);	
	   })
	 },
	 
	 
	 getInput(e) {
	 	this.setData({
	 		keyword: e.detail.value
	 	});
	 },
	 
	 historyRecord() {
		let self = this;
	 	let keyword = this.data.key_str;
	 	let searchRecord = this.data.searchRecord;
	 	
	 	if(keyword) {
	 		if(searchRecord.indexOf(keyword) > -1) {
	 			// 已经存在该值
	 			return;
	 		} else {
	 			if(searchRecord.length >= 10) {
	 				searchRecord.pop(); // 删除最早的一条记录	
	 			};
	 			searchRecord.unshift(keyword);
	 			
	 			// 		 // 将历史记录添加到缓存中
	 			 wx.setStorage({
	 				 key: 'searchRecord',
	 				 data: searchRecord,
	 				 success: function(res) {
	 					 self.setData({
	 						 searchRecord,
	 					 })
	 				 }
	 			 })
	 		};
	 	};
	 },
	 
	 
	 
	 
	 getHistorySearch() {
	   this.setData({
	     searchRecord: wx.getStorageSync('searchRecord') || [] //若无存储则为空
	   });
	 },
	 
	 clearSearchRecord() {
		 wx.clearStorageSync('searchRecord');
		 this.setData({
			 searchRecord: []
		 });
	 },
});