search.js 11.9 KB
const { app } = require("../../../../utils/common.js");

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: '',
        is_his: 0,
    },

    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) {
            s_key = s_key.trim();
            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;

        if (getApp().globalData.userInfo) {
            t += "&user_id=" + getApp().globalData.userInfo.user_id;
        }

        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, t);
        var val = t.detail.value.word;
        if (val == undefined) val = t.detail.value;
        val = val ? val.trim() : '';
        if (!val) {
            a.showWarning("请输入搜索关键词");
            return false
        }
        // this.search(val);
        // wx.navigateTo({
        //     url: `/packageA/pages/distribution/shop/shop?key_word=${val}`,
        // });
        wx.navigateBack({
            delta: 2
        });
        getApp().globalData.key_word = val;
    },

    //热搜关键字
    searchHotWord: function (t) {

        var word = t.currentTarget.dataset.word;
        this.historyRecord(word);
        wx.navigateBack({
            delta: 2
        });
        getApp().globalData.key_word = word;
        //   this.search(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) {
        getApp().globalData.no_clear=1
        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(w) {
        let keyword = w;
        let self = this;
        if (!keyword) {
            keyword = this.data.key_str.trim();
        }
        let searchRecord = this.data.searchRecord;
        if (!searchRecord || searchRecord.length == 0) searchRecord = wx.getStorageSync('searchRecord') || [];

        if (keyword) {

            var index = searchRecord.indexOf(keyword);
            if (index > -1) {
                // 已经存在该值
                searchRecord.splice(index, 1);
                searchRecord.unshift(keyword);

                // 将历史记录添加到缓存中
                wx.setStorage({
                    key: 'searchRecord',
                    data: searchRecord,
                    success: function (res) {
                        self.setData({
                            searchRecord,
                        })
                    }
                })

                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: []
        });
    },
});