uniapp u-view 搜索页样式demo

<template>
    <view>
        <view class="searchGood">
            <u-list @scrolltolower="scrolltolower">
                <view class="">
                    <view style="padding: 3px 10px;box-sizing: border-box;">
                        <u-search placeholder="模糊搜索:商品名|拼音|货号|厂家" borderColor="#ccc" v-model="search" height="35"
                            @search="toSearch()" @custom="toSearch()" @change="change"></u-search>
                    </view>
<!--                    <view style="padding: 20px;">
                        <u--form labelPosition="left" :model="form" :rules="rules" ref="form" labelWidth="100px">
                            <u-form-item label="产品名称" prop="storeName" borderBottom>
                                <u--input v-model="form.storeName" shape="circle" placeholder="产品名称"
                                    @confirm="toSearch()"></u--input>
                            </u-form-item>
                            <u-form-item label="拼音" prop="pinyin" borderBottom>
                                <u--input v-model="form.pinyin" shape="circle" placeholder="商品名拼音简写字母"
                                    @confirm="toSearch()"></u--input>
                            </u-form-item>

                            <u-form-item label="厂家" prop="factoryName" borderBottom>
                                <u--input v-model="form.factoryName" shape="circle" placeholder="厂家"
                                    @confirm="toSearch()"></u--input>
                            </u-form-item>
                            <u-form-item label="货号" prop="goodsNo" borderBottom>
                                <u--input v-model="form.goodsNo" shape="circle" placeholder="货号" @confirm="toSearch()">
                                </u--input>
                            </u-form-item>
                        </u--form>
                        <u-button type="primary" @click="toSearch()">确认</u-button>
                    </view> -->
                    <view v-if="keywords.length">
                        <view class="title">热门搜索</view>
                        <view class="list acea-row" style="padding: 15px;">
                            <u-tag v-for="(keyword ,idx)  in keywords" plain :text="keyworde(keyword)" type="warning"
                                closable @click="addObjSearch(keyword)" @close="closeTag(idx)">
                                <!-- <text slot="text">cds </text> -->
                            </u-tag>
                        </view>
                    </view>
                </view>
                <u-list-item v-for="(item, index) in keywordObj" :key="index">
                    <u-cell :title="item.keyword" @click="addObjSearch(item)">->
                    </u-cell>
                </u-list-item>
            </u-list>
            <view class="line"></view>
        </view>
    </view>
</template>
<script>
    import {
        getSearchKeyword,
        getkeywords
    } from "@/api/store";
    import {
        trim
    } from "@/utils";
    import localStorage from "@/utils/store/localStorage.js";
    export default {
        name: "GoodSearch",
        components: {},
        props: {},
        computed: {
            keywordObj() {
                var obj = {}
                this.keywordList.filter(res => {
                    obj[res.keyword] = res
                })
                return obj
            }
        },
        data: function() {
            return {
                sm: 1,
                isInput: false,
                m: 0,
                keywordList: [],
                keywords: [],
                search: "",
                cacheKey: "goodsSearchKeywords",

                showSex: false,
                form: {
                    factoryName: "",
                    goodsNo: "",
                    pinyin: "",
                    storeName: ""
                },
                rules: {

                },
                radio: '',
                switchVal: false
            };
        },
        onLoad: function(e) {
            if (e.keyword) {
                this.search = e.keyword
            }
            // console.log(e)
        },
        onShow: function() {

            this.getData();
        },
        methods: {
            keyworde(keyword) {
                // console.log(keyword)
                var val = ""
                for (var k in keyword) {
                    val = val + " " + keyword[k]
                }
                if (val.length > 20) {
                    val = val.slice(0, 16) + "..."
                }
                return val
            },
            change(e) {
                this.isInput = true
                // var that = this
                this.m = 0
                var that = this
                // var m =this.m
                clearInterval(this.sm)
                this.sm = setInterval(() => {
                    that.m = that.m + 1
                    if (that.m == 6 && that.isInput) {
                        that.isInput = false
                        clearInterval(that.sm)
                        that.getList()
                    }
                    // console.log(that.m)
                }, 100)
            },
            getList() {
                // console.log("触发")
                if (this.search) {
                    getkeywords({
                        keyword: this.search
                    }).then(res => {
                        this.keywordList = res.data
                        // console.log(res)
                    })
                }
            },
            scrolltolower(e) {
                console.log(e)
            },
            closeTag(idx) {
                this.keywords = this.keywords.filter((item, index) => {
                    if (idx != index) {
                        return item
                    }
                })
                this.restCache(this.keywords)
            },
            restCache(value) {
                localStorage.set(this.cacheKey, value)
            },
            addSearch(search) {
                this.search = search;
                this.toSearch();
            },
            addObjSearch(obj) {
                // console.log(obj)
                var form = {}
                for (var k in obj) {
                    
                    if (k == "keyword" || k == "storeName") {
                        this.search = obj[k]
                        form.storeName = obj[k]
                    }else if (k == "keyword") {
                        this.search == obj[k]
                    }
                    //  if (k == "factoryName") {
                    //  form[k]=obj[k]
                    // }
                    //  if (k == "pinyin") {
                    //  form[k]=obj[k]
                    // }
                    //  if (k == "goodsNo") {
                    //  form[k]=obj[k]
                    // }
                }
                this.form = form
                this.toSearch();
            },
            addCache(val) {
                var has = this.keywords.find(e => {
                    if (JSON.stringify(e) == JSON.stringify(val) || e.s == val.storeName) {
                        return true
                    }
                })
                // console.log(has)
                if (!has) {
                    this.keywords.push(val)
                    this.restCache(this.keywords)
                }

            },
            hasParams() {
                var obj = this.form
                for (var k in obj) {
                    if (obj[k]) {
                        return true
                    }
                }
                return false
            },
            toSearch() {
                var form = this.form
                if (!this.hasParams()) {
                    if (!this.search) {
                        return
                    }
                    form.s = this.search
                } else {
                    form.s = ""
                }
                // console.log(form)
                this.addCache(form)
                this.$yrouter.replace({
                    path: "/pages/shop/GoodsList/index",
                    query: form
                });

            },
            getData() {

                var data = localStorage.get(this.cacheKey)
                // console.log(data)
                if (typeof data != "object") {
                    data = []
                }
                if (data) {
                    this.keywords = data
                    this.restCache(this.keywords)
                } else {
                    getSearchKeyword().then(res => {
                        this.keywords = res.data;
                        this.restCache(this.keywords)
                    });
                }
            }
        }
    };
</script>
<style>
    .noCommodity {
        border-top: 0.05*100rpx solid #f5f5f5;
    }
</style>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容