| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740 |
- <template>
- <view class="content">
- <u-navbar :background="navObj" :is-back="false">
- <!-- mSearch组件 如果使用原样式,删除组件元素-->
- <mSearch ref="mSearch" class="mSearch-input-box" @clickLeft="back" :mode="2" :placeholder="defaultKeyword" @search="doSearch(false)" @input="inputChange" @confirm="doSearch(false)"
- @SwitchType="doSearchSwitch()" v-model="keyword" :isFocusVal="!isShowSeachGoods"></mSearch>
- </u-navbar>
- <view class="search-keyword" v-if="!isShowSeachGoods">
- <scroll-view class="keyword-list-box" v-show="isShowKeywordList" scroll-y>
- <block v-for="(row, index) in keywordList" :key="index">
- <view class="keyword-entry" hover-class="keyword-entry-tap">
- <view class="keyword-text" @tap.stop="doSearch(keywordList[index].words)">
- <rich-text :nodes="row.words"></rich-text>
- </view>
- </view>
- </block>
- </scroll-view>
- <div class="keyword-box" v-show="!isShowKeywordList">
- <view class="keyword-block add1">
- <view class="keyword-list-header">
- <view class="u-tips">热门搜索</view>
- </view>
- <view class="keyword keywordBox">
- <view class="wes" v-for="(keyword, index) in hotKeywordList" @tap="doSearch(keyword)" :key="index">{{ keyword }}</view>
- </view>
- </view>
- <view class="keyword-block" v-if="oldKeywordList.length > 0">
- <view class="keyword-list-header">
- <view class="u-tips">搜索历史</view>
- </view>
- <div class="oldKeyList">
- <div class="oldKeyItem" v-if="keyword" v-for="(keyword, index) in oldKeywordList" :key="index" @click="doSearch(keyword)">
- <span>{{ keyword }} </span>
- </div>
- <div @click="showMore" v-if=" oldKeywordIndex > loadIndex" class="oldKeyItem">展示更多</div>
- </div>
- </view>
- <div class="clear mp-iphonex-bottom" @tap="oldDelete">清空搜索历史</div>
- </div>
- </view>
- <!-- 搜索 -->
- <view class="goods-content" v-if="isShowSeachGoods">
- <view class="navbar">
- <view class="nav-item" :class="{ current: filterIndex === 0 }" @click="tabClick(0)">综合排序</view>
- <view class="nav-item" :class="{ current: filterIndex === 3 }" @click="tabClick(3, 'buyCount')">
- <text>销量</text>
- <view class="p-box">
- <view class="index-nav-arrow">
- <image class="img" src="/static/index/arrow-up-1.png" v-if="params.sort === 'buyCount' && params.order === 'asc'" mode="aspectFit"></image>
- <image class="img" src="/static/index/arrow-up.png" v-else mode="aspectFit"></image>
- </view>
- <view class="index-nav-arrow">
- <image class="img" src="/static/index/arrow-down.png" v-if="params.sort === 'buyCount' && params.order === 'desc'" mode="aspectFit"></image>
- <image class="img" src="/static/index/arrow-down-1.png" v-else mode="aspectFit"></image>
- </view>
- </view>
- </view>
- <view class="nav-item" :class="{ current: filterIndex === 4 }" @click="tabClick(4, 'price')">
- <text>价格</text>
- <view class="p-box">
- <view class="index-nav-arrow">
- <image class="img" src="/static/index/arrow-up-1.png" v-if="params.sort === 'price' && params.order === 'asc'" mode="aspectFit"></image>
- <image class="img" src="/static/index/arrow-up.png" v-else mode="aspectFit"></image>
- </view>
- <view class="index-nav-arrow">
- <image class="img" src="/static/index/arrow-down.png" v-if="params.sort === 'price' && params.order === 'desc'" mode="aspectFit"></image>
- <image class="img" src="/static/index/arrow-down-1.png" v-else mode="aspectFit"></image>
- </view>
- </view>
- </view>
- <view class="nav-item" @click="sortGoods">筛选</view>
- </view>
- <!-- 一行一个商品展示 -->
- <div v-if="isSWitch">
- <scroll-view :style="{ height: goodsHeight }" enableBackToTop="true" lower-threshold="250" @scrolltolower="loadmore()" scroll-with-animation scroll-y class="scoll-page">
- <div class="goodsClass">
- <u-row v-for="(item, index) in goodsList" :key="index" class="goodsRow">
- <u-col :span="4" @click.native="navigateToDetailPage(item)" class="switchType1">
- <u-image width="182rpx" height="200rpx" class="imgGoods" :src="item.thumbnail">
- <u-loading slot="loading"></u-loading>
- </u-image>
- </u-col>
- <u-col :span="8" @click.native="navigateToDetailPage(item)" class="switchType2">
- <div class="title clamp3" style="">{{ item.goodsName }}</div>
- <view class="price-box">
- <div class="price" v-if="item.price!=undefined">
- ¥<span>{{ formatPrice(item.price )[0] }} </span>.{{
- formatPrice(item.price )[1]
- }}
- </div>
- </view>
- <div class="promotion">
- <div v-for="(promotionItem,promotionIndex) in getPromotion(item)" :key="promotionIndex">
- <span v-if="promotionItem.indexOf('COUPON') != -1">劵</span>
- <span v-if="promotionItem.indexOf('FULL_DISCOUNT') != -1">满减</span>
- <span v-if="promotionItem.indexOf('SECKILL') != -1">秒杀</span>
- </div>
- </div>
- <div style="overflow: hidden" class="countConfig">
- <span style="float: left; font-size: 22rpx">已售 {{ item.buyCount || '0' }}</span>
- <span style="float: right; font-size: 22rpx">{{ item.commentNum || '0' }}条评论</span>
- </div>
- </u-col>
- <u-col :span="12" class="storeSellerBox">
- <div class="storeSellerName" @click="clickTostore()">
- <div class="textHidden">
- <u-tag style="margin-right: 10rpx" size="mini" mode="dark" v-if="item.selfOperated" text="自营" type="error" />
- <span style="
- color: #333333;
- font-size: 28rpx;
- padding-left: 17rpx;
- ">{{ item.storeName }}</span>
- </div>
- <span>
- <u-icon name="arrow-right" color="#c5c5c5"></u-icon>
- </span>
- </div>
- </u-col>
- </u-row>
- </div>
- <uni-load-more :status="loadingType" @loadmore="loadmore()"></uni-load-more>
- </scroll-view>
- </div>
- <div class="empty" v-if="goodsList == [] || goodsList == '' || goodsList == null">
- <view>
- <image style="width: 320rpx; height: 240rpx" src="/static/nodata.png">
- </image>
- </view>
- <view>
- <p>没有找到相关的商品信息</p>
- <p>请换一个关键词试试吧</p>
- </view>
- </div>
- <!-- 一行两个商品展示 -->
- <div v-if="
- !isSWitch &&
- !(goodsList == [] || goodsList == '' || goodsList == null)
- ">
- <scroll-view :style="{ height: goodsHeight }" scroll-anchoring enableBackToTop="true" @scrolltolower="loadmore()" scroll-with-animation scroll-y lower-threshold="250" class="scoll-page">
- <view class="goods-list">
- <view v-for="(item, index) in goodsList" :key="index" class="goods-item" @click="navigateToDetailPage(item)">
- <view class="image-wrapper">
- <image :src="item.thumbnail" mode="aspectFill"></image>
- </view>
- <view class="goods-detail">
- <div class="title clamp">{{ item.goodsName }}</div>
- <view class="price-box">
- <div class="price" v-if="item.price!=undefined">
- ¥<span>{{ formatPrice(item.price )[0] }} </span>.{{
- formatPrice(item.price )[1]
- }}
- </div>
- </view>
- <div class="promotion">
- <div v-for="(promotionItem,promotionIndex) in getPromotion(item)" :key="promotionIndex">
- <span v-if="promotionItem.indexOf('COUPON') != -1">劵</span>
- <span v-if="promotionItem.indexOf('FULL_DISCOUNT') != -1">满减</span>
- <span v-if="promotionItem.indexOf('SECKILL') != -1">秒杀</span>
- </div>
- </div>
- <div class="countConfig">
- <span>已售 {{ item.buyCount || "0" }}</span>
- <span>{{ item.commentNum || "0" }}条评论</span>
- </div>
- <div class="storeSellerName">
- <div class="textHidden">
- <u-tag style="margin-right: 10rpx" size="mini" mode="dark" v-if="item.selfOperated == 1" text="自营" type="error" />
- <span>{{ item.storeName || "暂无" }}</span>
- </div>
- <span>
- <u-icon name="arrow-right"></u-icon>
- </span>
- </div>
- </view>
- </view>
- </view>
- <uni-load-more :status="loadingType"></uni-load-more>
- </scroll-view>
- </div>
- </view>
- <u-popup border-radius="20" mode="right" width="90%" v-model="sortPopup">
- <view class="status_bar"></view>
- <view class="sort-box ">
- <view class="sort-list">
- <view class="sort-item">
- <view class="sort-title"> 品牌 </view>
- <view class="flex" v-if="sortData.brands">
- <view class="sort-brand-item" :key="brandsIndex" v-for="(brand, brandsIndex) in sortData.brands" @click="handleSort(brand, brandsIndex, 'brand')">
- <view class="sort-radius" :class="{
- 'sort-active': brand.__selected,
- }">
- {{ brand.name }}
- </view>
- </view>
- </view>
- <!-- <u-empty v-else text="暂无品牌" mode="list"></u-empty> -->
- </view>
- <view class="sort-item">
- <view class="sort-title"> 全部分类 </view>
- <view class="flex" style="flex-wrap: wrap;" v-if="sortData.categories">
- <view class="sort-brand-item" :key="categoriesIndex" v-for="(categoryId, categoriesIndex) in sortData.categories" @click="handleSort(categoryId, categoriesIndex, 'categoryId')">
- <view class="sort-radius" :class="{
- 'sort-active': categoryId.__selected,
- }">
- {{ categoryId.name }}
- </view>
- </view>
- </view>
- <!-- <u-empty v-else text="暂无分类" mode="list"></u-empty> -->
- </view>
- </view>
- <view class="sort-list">
- <view class="sort-item">
- <view class="sort-title"> 价格区间 </view>
- <view style="display:flex; margin-top:20rpx; align-items: center;">
- <view class="sort-brand-item uinput">
- <view class="sort-radius">
- <u-input v-model="minPrice" type="number" placeholder="最低价" input-align="center" />
- </view>
- </view>
- <view>-</view>
- <view class="sort-brand-item uinput">
- <view class="sort-radius">
- <u-input v-model="maxPrice" type="number" placeholder="最高价" input-align="center" />
- </view>
- </view>
- </view>
- </view>
- </view>
- <view class="sort-list" v-if="sortData.paramOptions">
- <view class="sort-item" :key="paramIndex" v-for="(param, paramIndex) in sortData.paramOptions">
- <view class="sort-title"> {{ param.key }} </view>
- <view class="flex" style="flex-warp:warp" v-if="param.values">
- <view class="sort-brand-item" :key="i" v-for="(value, i) in param.values" @click="handleSort(value, i, 'prop', param)">
- <view class="sort-radius" :class="{
- 'sort-active': value.__selected,
- }">
- {{ value.title }}
- </view>
- </view>
- </view>
- </view>
- </view>
- <div class="null-view"></div>
- <view class="sort-btn mp-iphonex-bottom">
- <view class="sort-btn-repick" @click="repick">重置</view>
- <view class="sort-btn-confim" @click="sortConfim">确定</view>
- </view>
- </view>
- </u-popup>
- </view>
- </template>
- <script>
- import { getGoodsList, getGoodsRelated } from "@/api/goods.js";
- import { getHotKeywords } from "@/api/home.js";
- import mSearch from "@/components/m-search-revision/m-search-revision.vue";
- export default {
- data() {
- return {
- loadIndex: 10,
- oldKeywordIndex: "",
- selectedWay: {
- brand: [],
- categoryId: [],
- prop: [],
- },
- sortPopup: false, //筛选的开关
- navObj: {
- background: "#fff",
- },
- typeSortData: {
- type: "",
- index: "",
- },
- goodsHeight: "",
- defaultKeyword: "",
- keyword: "",
- oldKeywordList: [],
- hotKeywordList: [],
- keywordList: [],
- goodsList: [],
- cateMaskState: 0, //分类面板展开状态
- loadingType: "more", //加载更多状态
- filterIndex: 0,
- cateId: 0, //已选三级分类id
- priceOrder: 0, //1 价格从低到高 2价格从高到低
- cateList: [],
- isShowSeachGoods: false,
- isShowKeywordList: false,
- sortData: "",
- isSWitch: false,
- params: {
- pageNumber: 0,
- pageSize: 10,
- // sort: 'grade_asc',
- sort: "releaseTime",
- order: "desc",
- keyword: "",
- },
- minPrice: "",
- maxPrice: "",
- sortParams: {
- pageNumber: 0,
- pageSize: 10,
- // price: "", //价格,示例值(10_30)
- // prop: "", //属性:参数名_参数值@参数名_参数值,示例值(屏幕类型_LED@屏幕尺寸_15英寸)
- // brandId:"", //品牌,可以多选 品牌Id@品牌Id@品牌Id
- categoryId: "",
- },
- routerVal: "",
- };
- },
- onLoad(val) {
- // return false
- this.init();
- this.initSortGoods();
- // 接收分类的数据
- this.routerVal = val;
- // 有值
- if (this.routerVal.category) {
- this.params.categoryId = this.routerVal.category;
- this.isShowSeachGoods = true;
- }
- if (this.routerVal.keyword) {
- this.params.keyword = this.routerVal.keyword;
- this.isShowSeachGoods = true;
- }
- if (this.routerVal.storeId) {
- this.params.storeId = this.routerVal.storeId;
- this.isShowSeachGoods = true;
- }
- this.loadData();
- },
- components: {
- //引用mSearch组件,如不需要删除即可
- mSearch,
- },
- onReachBottom() {
- this.params.pageNumber++;
- this.loadData();
- },
- mounted() {
- const { windowWidth, windowHeight } = uni.getSystemInfoSync();
- let topHeight = 0;
- let navHeight = 0;
- uni.getSystemInfo({
- success: function (res) {
- // res - 各种参数
- let top = uni.createSelectorQuery().select(".u-navbar");
- top
- .boundingClientRect(function (data) {
- if (data && data.height) {
- //data - 各种参数
- topHeight = data.height; // 获取元素宽度
- }
- })
- .exec();
- let nav = uni.createSelectorQuery().select(".navbar");
- nav
- .boundingClientRect(function (data) {
- if (data && data.height) {
- //data - 各种参数
- navHeight = data.height; // 获取元素宽度
- }
- })
- .exec();
- },
- });
- this.goodsHeight = windowHeight - navHeight - topHeight;
- // #ifdef APP-PLUS
- this.goodsHeight = this.goodsHeight - 100;
- // #endif
- this.goodsHeight += "px";
- },
- methods: {
- // 数据去重一下 只显示一次 减免 劵 什么的
- getPromotion(item) {
- if (item.promotionMap) {
- let array = [];
- Object.keys(item.promotionMap).forEach((child) => {
- if (!array.includes(child.split("-")[0])) {
- array.push(child.split("-")[0]);
- }
- });
- return array;
- }
- },
- // 格式化金钱 1999 --> [1999,00]
- formatPrice(val) {
- if (typeof val == "undefined") {
- return val;
- }
- return val.toFixed(2).split(".");
- },
- // 展示更多数据
- showMore() {
- this.loadOldKeyword(this.oldKeywordIndex);
- },
- // 点击确定进行筛选
- sortConfim() {
- // 处理品牌(多选
- this.params.brandId = [];
- this.selectedWay["brand"].forEach((item) => {
- if (item.__selected) {
- this.params.brandId.push(item.value);
- }
- });
- this.params.brandId = this.params.brandId.join("@");
- // 处理分类 (单选)
- if (this.selectedWay["categoryId"][0]) {
- this.params.categoryId = this.selectedWay["categoryId"][0].value;
- }
- // 处理属性
- this.params.prop = [];
- this.selectedWay["prop"].forEach((item) => {
- if (item.__selected) {
- this.params.prop.push(`${item.parent}_${item.title}`);
- }
- });
- this.params.prop = this.params.prop.join("@");
- // 处理价格
- if (this.minPrice || this.maxPrice) {
- this.params.price = `${this.minPrice}_${this.maxPrice}`;
- } else {
- this.params.price = 0;
- }
- this.goodsList = [];
- this.loadData();
- this.sortPopup = false;
- },
- // 重置
- repick() {
- this.initSortGoods();
- this.minPrice = "";
- this.maxPrice = "";
- this.params = {
- pageNumber: 0,
- pageSize: 10,
- };
- this.loadData();
- },
- // 点击筛选的内容
- handleSort(val, index, type, parent) {
- if (type == "prop") {
- val.parent = parent.key;
- }
- this.selectedWay[type].push(val);
- if (type == "categoryId") {
- this.sortData.categories.forEach((item) => {
- item.__selected = false;
- });
- val.__selected = true;
- } else {
- val.__selected ? (val.__selected = false) : (val.__selected = true);
- }
- },
- init() {
- this.loadDefaultKeyword();
- this.loadOldKeyword(this.loadIndex);
- this.loadHotKeyword();
- },
- blur() {
- uni.hideKeyboard();
- },
- back() {
- uni.navigateBack({
- delta: 1,
- });
- },
- navigateToDetailPage(item) {
- uni.navigateTo({
- url: `/pages/product/goods?id=${item.id}&goodsId=${item.goodsId}`,
- });
- },
- loadmore() {
- this.params.pageNumber++;
- this.loadData();
- },
- initSortGoods() {
- getGoodsRelated(this.sortParams).then((res) => {
- if (res.data.success) {
- for (let item of Object.keys(res.data.result)) {
- res.data.result[item].forEach((child) => {
- child.__selected = false;
- // 循环出和品牌分类一样的数据格式
- if (child.values) {
- child.values = child.values.map((item) => ({
- title: item,
- __selected: false,
- }));
- }
- });
- }
- this.sortData = res.data.result;
- }
- });
- },
- // 筛选商品
- sortGoods() {
- this.sortPopup = true;
- },
- tabClick(index, type) {
- this.params.pageNumber = 0;
- this.params.pageSize = 10;
- // this.params.order = "desc";
- if (this.params.sort == type) {
- this.params.order == "asc"
- ? (this.params.order = "desc")
- : (this.params.order = "asc");
- this.$set(this.params, "sort", type);
- } else {
- this.params.order = "desc";
- this.$set(this.params, "sort", type);
- }
- if (index == 0) {
- this.params.sort = "releaseTime";
- this.params.order = "desc";
- }
- this.filterIndex = index;
- uni.pageScrollTo({
- duration: 300,
- scrollTop: 0,
- });
- this.loadData("refresh", 1);
- uni.showLoading({
- title: "正在加载",
- });
- },
- //加载默认搜索关键字
- loadDefaultKeyword() {
- //定义默认搜索关键字,可以自己实现ajax请求数据再赋值,用户未输入时,以水印方式显示在输入框,直接不输入内容搜索会搜索默认关键字
- this.defaultKeyword = "请输入搜索商品";
- },
- //加载历史搜索,自动读取本地Storage
- loadOldKeyword(index) {
- this.oldKeywordList = [];
- uni.getStorage({
- key: "OldKeys",
- success: (res) => {
- var OldKeys = JSON.parse(res.data);
- this.oldKeywordIndex = res.data.length;
- for (let i = 0; i < index; i++) {
- this.oldKeywordList.push(OldKeys[i]);
- }
- },
- });
- },
- //加载热门搜索
- async loadHotKeyword() {
- this.hotKeywordList = [];
- let res = await getHotKeywords();
- let keywords = res.data.result;
- keywords.forEach((item) => {
- this.hotKeywordList.push(item);
- });
- },
- //加载商品 ,带下拉刷新和上滑加载
- async loadData(type, loading) {
- this.loadingType = "loading";
- if (type == "refresh") {
- this.goodsList = [];
- }
- //没有更多直接返回
- let goodsList = await getGoodsList(this.params);
-
- if (goodsList.data.result.content.length < 10) {
- this.loadingType = "noMore";
- }
- this.goodsList.push(...goodsList.data.result.content);
- this.initSortGoods();
- uni.hideLoading();
- },
- //监听输入
- inputChange(event) {
- //兼容引入组件时传入参数情况
- var keyword = event.detail ? event.detail.value : event;
- if (!keyword) {
- this.keywordList = [];
- this.isShowKeywordList = false;
- return;
- }
- this.isShowKeywordList = true;
- this.getKeywordNumFun(keyword);
- },
- //高亮关键字
- drawCorrelativeKeyword(keywords, keyword) {
- var len = keywords.length,
- keywordArr = [];
- for (var i = 0; i < len; i++) {
- var row = keywords[i];
- //定义高亮#9f9f9f
- var html = row[0].replace(
- keyword,
- "<span style='color: #9f9f9f;'>" + keyword + "</span>"
- );
- html = "<div>" + html + "</div>";
- var tmpObj = {
- keyword: row[0],
- htmlStr: html,
- };
- keywordArr.push(tmpObj);
- }
- return keywordArr;
- },
- //顶置关键字
- setKeyword(index) {
- this.keyword = this.keywordList[index].keyword;
- },
- //清除历史搜索
- oldDelete() {
- uni.showModal({
- content: "确定清除历史搜索记录?",
- success: (res) => {
- if (res.confirm) {
-
- this.oldKeywordList = [];
- uni.removeStorage({
- key: "OldKeys",
- });
- }
- },
- });
- },
- // 样式修改布局
- doSearchSwitch(val) {
- this.isSWitch = !this.isSWitch;
- this.isShowSeachGoods = true;
- },
- //执行搜索
- doSearch(keyword) {
- keyword = keyword === false ? this.keyword : keyword;
- this.keyword = keyword;
- this.saveKeyword(keyword); //保存为历史
- this.isShowSeachGoods = true;
- this.$refs.mSearch.isShowSeachGoods = true;
- this.params.keyword = keyword;
- this.params.pageNumber = 0;
- this.$set(this.sortParams, "keyword", keyword);
- this.loadData("refresh", 1);
- },
- //保存关键字到历史记录
- saveKeyword(keyword) {
-
- if (!keyword) return false;
- uni.getStorage({
- key: "OldKeys",
- success: (res) => {
- var OldKeys = JSON.parse(res.data);
- var findIndex = OldKeys.indexOf(keyword);
- if (findIndex == -1) {
- OldKeys.unshift(keyword);
- } else {
- OldKeys.splice(findIndex, 1);
- OldKeys.unshift(keyword);
- }
- //最多10个纪录
- OldKeys.length > 10 && OldKeys.pop();
- uni.setStorage({
- key: "OldKeys",
- data: JSON.stringify(OldKeys),
- });
- this.oldKeywordList = OldKeys; //更新历史搜索
-
- },
- fail: (e) => {
- var OldKeys = [keyword];
- uni.setStorage({
- key: "OldKeys",
- data: JSON.stringify(OldKeys),
- });
- this.oldKeywordList = OldKeys; //更新历史搜索
- },
- });
- },
- // 搜索关键字
- getKeywordNumFun(keywords) {
- this.params.keyword = keywords;
- this.$set(this.sortParams, "keyword", keywords);
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- @import "./search.scss";
- </style>
|