From deeb762c202ed7d2eee2c9e0558e5f2ab466eec1 Mon Sep 17 00:00:00 2001
From: liuleilei <234@qq.com>
Date: 星期六, 08 二月 2025 11:22:58 +0800
Subject: [PATCH] 主播端商品列表代码优化
---
h5/pages/index_2/index.vue | 496 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 377 insertions(+), 119 deletions(-)
diff --git a/h5/pages/index_2/index.vue b/h5/pages/index_2/index.vue
index 8cb33cb..cd71b0b 100644
--- a/h5/pages/index_2/index.vue
+++ b/h5/pages/index_2/index.vue
@@ -43,27 +43,38 @@
<view class="commodityFrom_body_content_item" v-for="(item, index) in shopList" :key="index">
<view class="commodityFrom_body_content_item_num">
<view class="commodityFrom_body_content_item_num_img">
- <image :src="item.categoryImgurl ? item.prefixUrl + item.categoryImgurl : ''" mode="widthFix"></image>
+ <image :src="item.categoryImgurl" mode="widthFix"></image>
</view>
- {{stringOperations(item.categoryName, 3)}}
+ <text>{{item.categoryName}}</text>
+ <!-- {{stringOperations(item.categoryName, 3)}} -->
</view>
- <view class="commodityFrom_body_content_item_num" @click="open(index, 1)">
+ <!-- @click="open(index, 1)" -->
+ <view class="commodityFrom_body_content_item_num" @mouseenter.stop="mouseenterP(index, item.categoryId)" @mouseleave.stop="mouseleaveP(index)">
{{stringOperations(item.brandName, 4)}}
<view class="drop-down" :style="{ opacity: item.ppShow ? opacity : '0', zIndex: item.ppShow ? zIndex : '-1', background: !configuration ? 'rgba(108, 130, 170, 1)' : percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) }">
- <view class="drop-down-search">鎼滅储</view>
- <view class="drop-down-item" v-for="(child, i) in brandData" :key="i" @click.stop="clickBrand(item, child, index)">
- {{child.name}}
+ <view class="drop-down-search">
+ <input type="text" placeholder="璇疯緭鍏�" v-model="item.brandVal" @input="searchBrand($event, item)" />
+ </view>
+ <!-- brandData -->
+ <view class="drop-down-item" v-for="(child, i) in item.brandVal ? item.brandSearchList : item.brandList" :key="i" @click.stop="clickBrand(item, child, index)" @mouseenter="aaa(i)" @mouseleave="bbb">
+
+ <text :style="{color: fontColorIndex === i ? fontColor : ''}">{{child.name}}</text>
</view>
</view>
</view>
- <view class="commodityFrom_body_content_item_num" @click="open(index, 2)">
- {{stringOperations(item.name, 8)}}
+ <!-- @click="open(index, 2)" -->
+ <view class="commodityFrom_body_content_item_num" @mouseenter.stop="mouseenterX(index)" @mouseleave.stop="mouseleaveX(index)">
+
+ {{stringOperations(item.name, 18)}}
<view class="drop-top" v-show="item.name">
{{item.name}}
</view>
<view class="drop-down" :style="{ opacity: item.xhShow ? opacity : '0', zIndex: item.xhShow ? zIndex : '-1', background: !configuration ? 'rgba(108, 130, 170, 1)' : configuration.pull.bgType === 1 ? percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) : 'rgba(108, 130, 170, 1)' }">
- <view class="drop-down-item" v-for="(data, s) in item.xhData" :key="s" @click.stop="clickXH(data, index)">
- {{ stringOperations(data.name, 7)}}
+ <view class="drop-down-search">
+ <input type="text" placeholder="璇疯緭鍏�" v-model="item.modelVal" @input="searchModel($event, item)" />
+ </view>
+ <view class="drop-down-item" v-for="(data, s) in item.modelVal ? item.modelSearchList : item.xhData" :key="s" @click.stop="clickXH(data, index)" @mouseenter="aaa(s)" @mouseleave="bbb">
+ <text :style="{color: fontColorIndex === s ? fontColor : ''}">{{data.name}}</text>
</view>
</view>
</view>
@@ -85,11 +96,11 @@
</view>
</view>
<view class="commodityFrom_body_total">
- <view class="commodityFrom_body_total_item">鎬昏锛�</view>
- <view class="commodityFrom_body_total_item">
+ <view class="commodityFrom_body_total_item" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : configuration.header.backgroundType === 1 ? percentage(configuration.header.bgColor, configuration.header.bgAlpha) : 'rgba(13, 30, 65, 1)', color: !configuration ? 'rgba(255, 255, 255, 1)' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff', textAlign: 'left'}">鍚堣锛�</view>
+ <view class="commodityFrom_body_total_item" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : configuration.header.backgroundType === 1 ? percentage(configuration.header.bgColor, configuration.header.bgAlpha) : 'rgba(13, 30, 65, 1)', color: !configuration ? 'rgba(255, 220, 108, 1)' : configuration.pull.selType === 1 ? percentage(configuration.pull.selColor, configuration.pull.selAlpha) : '#FFDC6C'}">
{{simplifyNum(zdj)}}
</view>
- <view class="commodityFrom_body_total_item">
+ <view class="commodityFrom_body_total_item" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : configuration.header.backgroundType === 1 ? percentage(configuration.header.bgColor, configuration.header.bgAlpha) : 'rgba(13, 30, 65, 1)', color: !configuration ? 'rgba(255, 220, 108, 1)' : configuration.pull.selType === 1 ? percentage(configuration.pull.selColor, configuration.pull.selAlpha) : '#FFDC6C'}">
{{simplifyNum(totalPrices)}}
</view>
</view>
@@ -122,8 +133,8 @@
<text>{{attributeOne.name ? attributeOne.name : attrFirstName}}</text>
<image src="@/static/ar_open@2x.png" mode="widthFix"></image>
<view class="productPage_xl" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.pull.bgType === 1 ? percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) : '#0D1E41'}" v-if="attrFirstList.length > 0">
- <view class="productPage_xl_iten" v-for="(item, index) in attrFirstList" :key="index" @click="clickShopPageCheck(item, 1)">
- {{item.name}}
+ <view class="productPage_xl_iten" v-for="(item, index) in attrFirstList" :key="index" @click="clickShopPageCheck(item, 1)" @mouseenter="aaa(index)" @mouseleave="bbb">
+ <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text>
</view>
</view>
</view>
@@ -131,8 +142,8 @@
<text>{{attributeTwo.name ? attributeTwo.name : attrSecondName}}</text>
<image src="@/static/ar_open@2x.png" mode="widthFix"></image>
<view class="productPage_xl" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.pull.bgType === 1 ? percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) : '#0D1E41'}" v-if="attrSecondList.length > 0">
- <view class="productPage_xl_iten" v-for="(item, index) in attrSecondList" :key="index" @click="clickShopPageCheck(item, 2)">
- {{item.name}}
+ <view class="productPage_xl_iten" v-for="(item, index) in attrSecondList" :key="index" @click="clickShopPageCheck(item, 2)" @mouseenter="aaa(index)" @mouseleave="bbb">
+ <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text>
</view>
</view>
</view>
@@ -141,12 +152,13 @@
<text v-else>{{budget.max && budget.min ? budget.min + '~' + budget.max : '棰勭畻'}}</text>
<image src="@/static/ar_open@2x.png" mode="widthFix"></image>
<view class="productPage_xl" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.pull.bgType === 1 ? percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) : '#0D1E41'}" v-if="budgetList.length > 0">
- <view class="productPage_xl_iten" v-for="(item, index) in budgetList" :key="index" @click="clickShopPageCheck(item, 3)">
+ <view class="productPage_xl_iten" v-for="(item, index) in budgetList" :key="index" @click="clickShopPageCheck(item, 3)" @mouseenter="aaa(index)" @mouseleave="bbb">
<template v-if="!item.name">
- {{item.minamount}}~{{item.maxamount}}
+
+ <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.minamount}}~{{item.maxamount}}</text>
</template>
<template v-else>
- {{item.name}}
+ <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text>
</template>
</view>
</view>
@@ -155,22 +167,24 @@
<text>{{shopPageBrand.name ? shopPageBrand.name : '鍝佺墝'}}</text>
<image src="@/static/ar_open@2x.png" mode="widthFix"></image>
<view class="productPage_xl" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.pull.bgType === 1 ? percentage(configuration.pull.bgColor, configuration.pull.bgAlpha) : '#0D1E41'}" v-if="brandData.length > 0">
- <view class="productPage_xl_iten" v-for="(item, index) in brandData1" :key="index" @click="clickShopPageCheck(item, 4)">
- {{item.name}}
+ <view class="productPage_xl_iten" v-for="(item, index) in brandData1" :key="index" @click="clickShopPageCheck(item, 4)" @mouseenter="aaa(index)" @mouseleave="bbb">
+ <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text>
</view>
</view>
</view>
</view>
<view class="productPage_pk" v-if="isPK || status === 2">
<view class="productPage_pk_shop">
- <view class="productPage_pk_shop_sp" @click="openSearch('left')" v-if="JSON.stringify(leftShop) == '{}'">
- <image src="@/static/ic_add@2x.png" mode="widthFix"></image>
+ <view class="productPage_pk_shop_sp" @click="openSearch('left')" v-if="JSON.stringify(leftShop) == '{}'" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 0 ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 1 ? percentage(configuration.header.bgColor, configuration.header.bgAlpha) : `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)`}">
+ <!-- <image src="@/static/ic_add@2x.png" mode="widthFix"></image> -->
+ <span>+</span>
</view>
<view class="productPage_pk_shop_sp1" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : percentage(configuration.header.bgColor, configuration.header.bgAlpha)}" @click="clickPKshop(leftShop)" v-else>
<view class="productPage_pk_shop_sp1_img">
<image :src="leftShop.imgurl ? leftShop.prefixUrl + leftShop.imgurl : ''" mode="widthFix"></image>
</view>
- <text>{{stringOperations(leftShop.name, 6)}}</text>
+ <!-- <text>{{stringOperations(leftShop.name, 20)}}</text> -->
+ <text>{{leftShop.name}}</text>
</view>
<view class="productPage_pk_shop_t">
<image :src="!configuration ? require('@/static/ic_pktai@2x.png') : configuration.pkImg.type === 0 ? require('@/static/ic_pktai@2x.png') : configuration.pkImg.imgurl" mode="widthFix"></image>
@@ -180,14 +194,16 @@
<image src="@/static/ic_pk@2x.png" mode="widthFix"></image>
</view>
<view class="productPage_pk_shop">
- <view class="productPage_pk_shop_sp" @click="openSearch('right')" v-if="JSON.stringify(rightShop) == '{}'">
- <image src="@/static/ic_add@2x.png" mode="widthFix"></image>
+ <view class="productPage_pk_shop_sp" @click="openSearch('right')" v-if="JSON.stringify(rightShop) == '{}'" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 0 ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 1 ? percentage(configuration.header.bgColor, configuration.header.bgAlpha) : `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)`}">
+ <!-- <image src="@/static/ic_add@2x.png" mode="widthFix"></image> -->
+ <span>+</span>
</view>
- <view class="productPage_pk_shop_sp1" @click="clickPKshop(rightShop)" v-else>
+ <view class="productPage_pk_shop_sp1" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : percentage(configuration.header.bgColor, configuration.header.bgAlpha)}" @click="clickPKshop(rightShop)" v-else>
<view class="productPage_pk_shop_sp1_img">
<image :src="rightShop.imgurl ? rightShop.prefixUrl + rightShop.imgurl : ''" mode="widthFix"></image>
</view>
- <text>{{stringOperations(rightShop.name, 6)}}</text>
+ <text>{{rightShop.name}}</text>
+ <!-- <text>{{stringOperations(rightShop.name, 6)}}</text> -->
</view>
<view class="productPage_pk_shop_t">
<image :src="!configuration ? require('@/static/ic_pktai@2x.png') : configuration.pkImg.type === 0 ? require('@/static/ic_pktai@2x.png') : configuration.pkImg.imgurl" mode="widthFix"></image>
@@ -199,7 +215,7 @@
<view class="productPage_shop_item_img">
<image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image>
</view>
- <text>{{stringOperations(item.name, 6)}}</text>
+ <text>{{item.name}}</text>
</view>
<view class="productPage_shop_zw"></view>
<view class="productPage_shop_zw"></view>
@@ -208,10 +224,10 @@
<!-- v-if="status === 2" -->
<view class="productPage_parameter" v-if="isPK && pkcontent">
<view class="productPage_parameter_item" v-for="(item, index) in [leftShop, rightShop]" :key="index">
- <view class="productPage_parameter_item_head">
- {{stringOperations(item.name, 11)}}
+ <view class="productPage_parameter_item_head" :style="{background: !configuration ? 'rgba(13, 30, 65, 1)' : configuration.header.backgroundType === 2 ? `linear-gradient(180deg, ${percentage(configuration.header.bgColor, configuration.header.bgAlpha)} 0%, ${percentage(configuration.header.bgColor2, configuration.header.bgAlpha2)} 100%)` : percentage(configuration.header.bgColor, configuration.header.bgAlpha), color: !configuration ? 'rgba(255, 255, 255, 1)' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : 'rgba(255, 255, 255, 1)'}">
+ <text>{{item.name}}</text>
</view>
- <view class="productPage_parameter_item_content">
+ <view class="productPage_parameter_item_content" :style="{background: !configuration ? 'rgba(137, 159, 197, 1)' : configuration.list.bgType === 1 ? percentage(configuration.list.bgColor, configuration.list.bgAlpha) : 'rgba(137, 159, 197, 1)'}">
<view class="productPage_parameter_item_content_price">
<view class="zdj">
<text>鎸囧浠凤細</text>
@@ -223,7 +239,12 @@
</view>
</view>
<view class="productPage_parameter_item_content_nr">
- <view class="item" v-for="(child, i) in item.goodsParamList" :key="i">
+ <view class="item" v-if="item.param1" v-for="(child, i) in item.param1" :key="child.index">
+ <view class="label">{{child.name}}锛�</view>
+ <view class="value">{{child.val}}</view>
+ </view>
+ <view v-if="item.param2.length>0" class="paramline"></view>
+ <view class="item" v-if="item.param2" v-for="(child, j) in item.param2" :key="child.index">
<view class="label">{{child.name}}锛�</view>
<view class="value">{{child.val}}</view>
</view>
@@ -242,6 +263,9 @@
<!-- 鎼滅储 -->
<search
ref="search"
+ :search="configuration ? configuration.search : null"
+ :conMark="configuration ? configuration : null"
+ :fontColor="fontColor"
:categoryList="category"
:shopList="shopData"
:categoryid="categoryId"
@@ -251,6 +275,7 @@
<!-- 鎼滅储鍟嗗搧鍒楄〃鏍囬 -->
<searchShopList
ref="searchShopListRef"
+ :search="configuration ? configuration.search : null"
@getTitle="getVal"
/>
</view>
@@ -261,7 +286,7 @@
import bigImg from '@/components/bigImg.vue'
import search from '@/components/search.vue'
import searchShopList from '@/components/searchShopList.vue'
- import { categoryList, goodsList, brandList, h5Image, logout, getByLoginNew } from '@/apis/index.js'
+ import { categoryList, goodsList, brandList, h5Image, logout, getByLoginNew, listForH5 } from '@/apis/index.js'
import { mapState } from 'vuex'
export default {
data() {
@@ -330,7 +355,9 @@
topImg: '',
pkImg: '',
- title: ''
+ title: '',
+ fontColor: 'rgba(255, 220, 108, 1)',
+ fontColorIndex: ''
}
},
components: { bigImg, search, searchShopList },
@@ -340,7 +367,6 @@
if (!res.data) {
return
}
- console.log(JSON.parse(res.data.newParam))
this.configuration = JSON.parse(res.data.newParam)
this.fontColor = this.configuration.pull.selType === 1 ? this.percentage(this.configuration.pull.selColor, this.configuration.pull.selAlpha) : 'rgba(255, 220, 108, 1)'
if (this.configuration.bgImg.type === 0) {
@@ -365,9 +391,9 @@
var keyCode = e.keyCode || e.which || e.charCode;
var ctrlKey = e.ctrlKey || e.metaKey;
if(ctrlKey && keyCode == 70) {
- if (that.status !== 1) {
+ if (that.status === 0) {
that.$refs.search.open()
- } else {
+ } else if (that.status === 1) {
that.$refs.searchShopListRef.open()
}
e.preventDefault();
@@ -384,7 +410,7 @@
}
this.getCategoryList()
this.getGoodsList()
- this.getbrandList()
+ // this.getbrandList()
this.h5Images()
},
onReady() {
@@ -487,6 +513,67 @@
}
},
methods: {
+ aaa(index) {
+ this.fontColorIndex = index
+ },
+ bbb() {
+ this.fontColorIndex = ''
+ },
+ // 榧犳爣绉诲鍝佺墝
+ async mouseenterP(index, categoryId) {
+ this.shopList[index].ppShow = true
+ if (!this.shopList[index].brandList || this.shopList[index].brandList.length == 0) {
+ let res = await brandList({ categoryId })
+ if (res.code === 200) {
+ // this.shopList[index].ppData = res.data
+ this.shopList[index].brandList = res.data
+ }
+ }
+
+ this.$forceUpdate()
+ },
+ mouseleaveP(index) {
+ this.shopList[index].ppShow = false
+ this.$forceUpdate()
+ },
+ // 榧犳爣绉诲鍨嬪彿
+ async mouseenterX(index, type = 2) {
+ if (this.shopList[index].xhData && this.shopList[index].xhData.length > 0) {
+ this.$forceUpdate()
+ } else {
+ let res = await listForH5({
+ categoryId: this.shopList[index].categoryId,
+ brandId: this.shopList[index].brandId
+ })
+ if (res.code === 200) {
+ this.shopList[index].xhData = res.data;
+ }
+ }
+ this.shopList[index].xhShow = true
+ this.$forceUpdate()
+ },
+ mouseleaveX(index) {
+ this.shopList[index].xhShow = false
+ this.$forceUpdate()
+ },
+ // 宸查�夊晢鍝佸垪琛ㄦ悳绱㈠搧鐗�
+ searchBrand(e, item) {
+ item.brandSearchList = item.brandList.filter(item => {
+ if (item.name.indexOf(e.detail.value) > -1) {
+ return item
+ }
+ })
+ this.$forceUpdate()
+ },
+ // 宸查�夊晢鍝佸垪琛ㄦ悳绱㈠瀷鍙�
+ searchModel(e, item) {
+ item.modelSearchList = item.xhData.filter(item => {
+ if (item.name.indexOf(e.detail.value) !== -1) {
+ return item
+ }
+ })
+ this.$forceUpdate()
+ },
// 鑾峰彇鎼滅储鐨勬爣棰�
getVal(val) {
this.title = val
@@ -582,10 +669,14 @@
xiaPage() {
if (this.status === 2 || this.status === 0) return
this.status = this.status + 1
+ this.$refs.search.close()
+ this.$refs.searchShopListRef.close()
},
// 杩斿洖涓婁竴椤�
fanhuiPage() {
if (this.status === 0) return
+ this.$refs.search.close()
+ this.$refs.searchShopListRef.close()
this.status = this.status - 1
if (this.status === 0) {
this.leftShop = {}
@@ -619,12 +710,14 @@
// 鐐瑰嚮鍨嬪彿
clickXH(item, index) {
let obj = JSON.parse(JSON.stringify(this.shopList[index]))
+ obj.modelSearchList = []
+ obj.modelVal = ''
obj.name = JSON.parse(JSON.stringify(item.name))
obj.zdPrice = JSON.parse(JSON.stringify(item.zdPrice))
obj.price = JSON.parse(JSON.stringify(item.price))
+ this.shopList.splice(index, 1, obj)
obj.xhShow = false
- this.shopList.splice(index, 1)
- this.shopList[index] = JSON.parse(JSON.stringify(obj))
+ // this.shopList[index] = JSON.parse(JSON.stringify(obj))
this.$forceUpdate()
},
// 鐐瑰嚮pk鍟嗗搧甯﹀洖棣栭〉
@@ -646,7 +739,11 @@
})
}
})
- this.$refs.bigImg.open(i)
+ if (this.imgList.length === 0) return
+ this.$viewerApi({
+ images: this.imgList,
+ })
+ // this.$refs.bigImg.open(i)
},
// 璺宠浆pk
jumpPK() {
@@ -669,7 +766,6 @@
this.leftShop = {}
this.rightShop = {}
this.isSOU = true
- this.shopPageDataSou = []
if (type === 1) {
this.attributeOne.name = item.name === '鍏ㄩ儴' ? '' : item.name
this.attributeOne.id = item.id
@@ -691,23 +787,41 @@
this.isPK = false
this.pkcontent = false
this.status = 1
- this.shopPageData.forEach(item => {
+ this.shopPageDataSou = this.shopPageData.filter(item1 => {
+ console.log(item1.attrFirstIds, this.attributeOne.id)
if (
- (this.attributeOne.id ? item.attrFirstIds.indexOf(String(this.attributeOne.id)) !== -1 : true) &&
- (this.attributeTwo.id ? item.attrSecodIds.indexOf(String(this.attributeTwo.id)) !== -1 : true) &&
- (this.budget.type == 3 ? (item.price <= Number(this.budget.max)) && (item.price >= Number(this.budget.min)) : true) &&
- (this.budget.type == 1 ? (item.price <= Number(this.budget.max)) : true) &&
- (this.budget.type == 2 ? (item.price >= Number(this.budget.min)) : true) &&
- (this.shopPageBrand.id ? item.brandId === this.shopPageBrand.id : true) &&
- (item.name.indexOf(this.title) !== -1)
+ (this.attributeOne.id ? item1.attrFirstIds.indexOf(String(this.attributeOne.id)) !== -1 : true) &&
+ (this.attributeTwo.id ? item1.attrFirstIds.indexOf(String(this.attributeTwo.id)) !== -1 : true) &&
+ (this.budget.type == 3 ? (item1.price <= Number(this.budget.max)) && (item1.price >= Number(this.budget.min)) : true) &&
+ (this.budget.type == 1 ? (item1.price <= Number(this.budget.max)) : true) &&
+ (this.budget.type == 2 ? (item1.price >= Number(this.budget.min)) : true) &&
+ (this.shopPageBrand.id ? item1.brandId === this.shopPageBrand.id : true) &&
+ (item1.name.indexOf(this.title) !== -1)
) {
- this.shopPageDataSou.push(item)
+ return item1
}
})
},
+ deepCopyArray(arr) {
+ var copy = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ // 鍒ゆ柇姣忎釜鍏冪礌鐨勭被鍨�
+ if (Array.isArray(arr[i])) {
+ // 濡傛灉鏄暟缁勶紝閫掑綊璋冪敤娣辨嫹璐濆嚱鏁�
+ copy[i] = deepCopyArray(arr[i]);
+ } else {
+ // 濡傛灉鏄叾浠栫被鍨嬶紝鐩存帴璧嬪�肩粰鏂版暟缁�
+ copy[i] = arr[i];
+ }
+ }
+
+ return copy;
+ },
// 鐐瑰嚮鍟嗗搧鍒楄〃椤甸潰鍟嗗搧
clickshoppageItem(item) {
- this.shopList.push(item)
+ this.shopList.push(...this.deepCopyArray([{ ...item, brandVal: '', modelVal: '', modelSearchList: [], brandSearchList: [], brandList: this.brandData }]))
+ console.log(this.shopList)
this.attrFirstList = []
this.attrSecondList = []
this.budgetList = []
@@ -732,17 +846,22 @@
this.shopList[index].zdPrice = ''
this.shopList[index].price = ''
this.shopList[index].ppShow = false
+
+ this.shopList[index].xhData = []
+
+ this.shopList[index].brandSearchList = []
+ this.shopList[index].brandVal = ''
this.$forceUpdate()
},
// 鍝佺墝
- getbrandList() {
- brandList({})
- .then(res => {
- this.brandData = JSON.parse(JSON.stringify(res.data))
- this.brandData1 = JSON.parse(JSON.stringify(res.data))
- this.brandData1.unshift({ name: '鍏ㄩ儴', id: '' })
- })
- },
+ // getbrandList() {
+ // brandList({})
+ // .then(res => {
+ // this.brandData = JSON.parse(JSON.stringify(res.data))
+ // this.brandData1 = JSON.parse(JSON.stringify(res.data))
+ // this.brandData1.unshift({ name: '鍏ㄩ儴', id: '' })
+ // })
+ // },
// 鑾峰彇閫変腑鍟嗗搧
result(val) {
val.ppShow = false
@@ -751,9 +870,56 @@
this.leftShop = JSON.parse(JSON.stringify(val))
} else if (this.$refs.search.typeName === 'right') {
this.rightShop = JSON.parse(JSON.stringify(val))
+ let leftParamList = this.leftShop.goodsParamList;
+ let rightParamList = this.rightShop.goodsParamList;
+ let leftList1 = new Array();
+ let leftList2 = new Array();
+ let rightList1 = new Array();
+ let rightList2 = new Array();
+ if(leftParamList && leftParamList.length>0){
+ leftParamList.forEach(item => {
+ let flag =0;
+ let rightTemp = null;
+ if(rightParamList && rightParamList.length>0){
+ rightParamList.forEach(item1 => {
+ if (item.name === item1.name ) {
+ flag =1;
+ rightTemp = item1;
+ return;
+ }
+ })
+ }
+ if(flag === 1){
+ leftList1.push(item);
+ rightList1.push(rightTemp);
+ }else{
+ leftList2.push(item);
+ }
+ })
+ }
+ if(rightParamList && rightParamList.length>0){
+ rightParamList.forEach(item=> {
+ let flag1 = 0;
+ rightList1.forEach(item1 => {
+ if (item.name === item1.name ) {
+ flag1 =1;
+ //return;
+ }
+ })
+ if(flag1 === 0){
+ rightList2.push(item);
+ }
+ })
+ }
+ Reflect.set(this.leftShop, "param1",leftList1);
+ Reflect.set(this.leftShop, "param2",leftList2);
+ Reflect.set(this.rightShop, "param1",rightList1);
+ Reflect.set(this.rightShop, "param2",rightList2);
} else {
this.shopList.push(JSON.parse(JSON.stringify(val)))
}
+ console.log(this.leftShop)
+ console.log(this.rightShop)
},
// 鑾峰彇鍏ㄩ儴鍟嗗搧
getGoodsList() {
@@ -822,6 +988,14 @@
this.categoryName = name
this.isSOU = false
this.title = ''
+
+ brandList({ categoryId: id })
+ .then(res => {
+ this.brandData = JSON.parse(JSON.stringify(res.data))
+ this.brandData1 = JSON.parse(JSON.stringify(res.data))
+ this.brandData1.unshift({ name: '鍏ㄩ儴', id: '' })
+ })
+
this.category.forEach((item, num) => {
if (index === num) {
item.active = true
@@ -832,11 +1006,16 @@
this.attrFirstName = item.attrFirst
this.attrSecondName = item.attrSecond
- this.attrFirstList = JSON.parse(JSON.stringify(item.attrFirstList)) || []
- this.attrFirstList.unshift({ name: '鍏ㄩ儴', id: '' })
- this.attrSecondList = JSON.parse(JSON.stringify(item.attrSecondList)) || []
- this.attrSecondList.unshift({ name: '鍏ㄩ儴', id: '' })
+ if (item.cateParamFirstList) {
+ this.attrFirstList = JSON.parse(JSON.stringify(item.cateParamFirstList))
+ this.attrFirstList.unshift({ name: '鍏ㄩ儴', id: '' })
+ }
+ if (item.cateParamSecondList) {
+ this.attrSecondList = JSON.parse(JSON.stringify(item.cateParamSecondList))
+ this.attrSecondList.unshift({ name: '鍏ㄩ儴', id: '' })
+ }
// this.budgetList = JSON.parse(JSON.stringify(item.budgetList))
+ // console.log(item.budgetList)
let arr = []
item.budgetList.forEach(item => {
// 娌℃湁鏈�灏忛噾棰�
@@ -971,7 +1150,7 @@
}
.box_content_right {
position: fixed;
- right: 50px;
+ right: -30px;
top: 50%;
cursor: pointer;
transform: translate(-50%, 0);
@@ -1013,7 +1192,7 @@
margin-top: 16px;
.commodityFrom_head {
width: 100%;
- height: 60px;
+ height: 45px;
padding: 10px 8px;
box-sizing: border-box;
background: rgba(0,224,255,0.24) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
@@ -1027,7 +1206,7 @@
display: flex;
align-items: center;
justify-content: center;
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Medium, SourceHanSansSC;
font-weight: 500;
color: #FFFFFF;
@@ -1060,7 +1239,7 @@
flex-direction: column;
.commodityFrom_body_content_item {
width: 100%;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
margin-bottom: 6px;
@@ -1081,10 +1260,10 @@
opacity: 0;
transform: translate(0%, 0%);
z-index: -1;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
- background: rgba(0,224,255,0.3);
+ background: #ffffff;
border-radius: 8px;
image {
width: 32px;
@@ -1098,7 +1277,7 @@
background: #FFFFFF;
border-radius: 8px;
margin-right: 6px;
- font-size: 24px;
+ font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #111111;
@@ -1141,12 +1320,15 @@
background: rgba(0, 0, 0, 0.8);
border-radius: 10px;
color: #FFFFFF;
- font-size: 24px;
+ font-size: 16px;
font-weight: 500;
}
.commodityFrom_body_content_item_num_img {
- width: 24px;
- height: 24px;
+ width: 28px;
+ height: 28px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
margin-right: 4px;
image {
width: 100%;
@@ -1154,7 +1336,7 @@
}
}
input {
- font-size: 24px;
+ font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #111111;
@@ -1186,24 +1368,54 @@
// display: flex;
// flex-direction: column;
transition: .5s;
+ .drop-down-search {
+ width: 100%;
+ height: 50px;
+ padding: 10px;
+ box-sizing: border-box;
+ position: sticky;
+ background: rgb(108, 130, 170);
+ top: 0;
+ left: 0;
+ input {
+ width: 100%;
+ height: 100%;
+ border: none;
+ background-color: #FFFFFF;
+ font-size: 14px;
+ color: #000000;
+ border-radius: 5px;
+ }
+ }
.drop-down-item {
width: 100%;
height: 52px;
// padding: 0 10px;
// box-sizing: border-box;
- // overflow: hidden;
- // white-space: nowrap;
- // text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
- font-size: 24px;
+ font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
&:hover {
color: #FFF200;
+ }
+ text {
+ width: 100%;
+ text-align: center;
+ font-size: 16px;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #FFFFFF;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
}
}
}
@@ -1212,7 +1424,7 @@
}
.commodityFrom_body_total {
width: 100%;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
.commodityFrom_body_total_item {
@@ -1221,7 +1433,7 @@
background: rgba(255,255,255,0.4);
border-radius: 8px;
margin-right: 6px;
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Bold, SourceHanSansSC;
font-weight: bold;
color: #FFF200;
@@ -1229,7 +1441,7 @@
align-items: center;
justify-content: center;
input {
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Bold, SourceHanSansSC;
font-weight: bold;
color: #FFF200;
@@ -1239,8 +1451,10 @@
flex: 1;
display: flex;
align-items: center;
- justify-content: flex-end;
- font-size: 24px;
+ justify-content: flex-start;
+ padding: 0 15px;
+ box-sizing: border-box;
+ font-size: 16px;
font-family: SourceHanSansSC-Medium, SourceHanSansSC;
font-weight: 500;
color: #FFFFFF;
@@ -1277,7 +1491,7 @@
border-radius: 8px !important;
}
.productCategory_list_item {
- width: 20% ;
+ width: 20%;
height: 108px;
display: flex;
transition: .5s;
@@ -1296,7 +1510,7 @@
margin-bottom: 4px;
}
text {
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Normal, SourceHanSansSC;
font-weight: 400;
color: #FFFFFF;
@@ -1312,7 +1526,7 @@
margin-top: 16px;
.productPage_head {
width: 100%;
- height: 60px;
+ height: 45px;
display: flex;
align-items: center;
background: rgba(0,224,255,0.34) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
@@ -1374,12 +1588,16 @@
border-radius: 0px 0px 8px 8px;
.productPage_xl_iten {
width: 100%;
- height: 56px;
- line-height: 56px;
+ padding: 5rpx 0;
+ box-sizing: border-box;
+ // height: 56px;
+ line-height: 25px;
+ // white-space: nowrap;
+ // overflow: hidden;
+ // text-overflow: ellipsis;
text-align: center;
cursor: pointer;
- font-size: 24px;
- font-family: PingFangSC-Regular, PingFang SC;
+ font-size: 16px;
font-weight: 400;
color: #FFFFFF;
&:hover {
@@ -1388,7 +1606,7 @@
}
}
text {
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Regular, SourceHanSansSC;
font-weight: 400;
color: #FFFFFF;
@@ -1417,12 +1635,15 @@
.productPage_pk_shop_sp {
width: 100px;
height: 100px;
+ line-height: 100px;
+ text-align: center;
margin-top: 84px;
cursor: pointer;
margin-bottom: 52px;
- image {
- width: 100%;
- height: 100%;
+ border-radius: 50%;
+ span {
+ font-size: 60px;
+ color: #FFFFFF;
}
}
.productPage_pk_shop_sp1 {
@@ -1432,26 +1653,34 @@
border-radius: 8px;
border: 2px solid #FFFFFF;
display: flex;
+ padding: 0 15px;
+ box-sizing: border-box;
align-items: center;
justify-content: center;
flex-direction: column;
margin-bottom: 12px;
- margin-top: 24px;
+ margin-top: 16px;
cursor: pointer;
.productPage_pk_shop_sp1_img {
width: 100px;
height: 100px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
image {
width: 100%;
height: 100%;
}
}
text {
- font-size: 24px;
- font-family: SourceHanSansSC-Medium, SourceHanSansSC;
+ width: 100%;
+ font-size: 16px;
font-weight: 500;
color: #FFFFFF;
margin-top: 18px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
}
.productPage_pk_shop_t {
@@ -1487,32 +1716,46 @@
}
.productPage_shop_item {
width: 168px;
- height: 204px;
margin-bottom: 12px;
cursor: pointer;
background: rgba(0,224,255,0.18);
border-radius: 8px;
display: flex;
transition: .5s;
+ padding: 15px;
+ box-sizing: border-box;
flex-direction: column;
- justify-content: center;
align-items: center;
box-sizing: border-box;
+ white-space: pre-wrap;
+ word-break: break-all;
+ text-align: center;
&:hover {
background: linear-gradient(180deg, rgba(0,224,255,0.3) 0%, rgba(255,255,255,0.41) 100%);
border-radius: 8px;
border: 2px solid #FFFFFF;
+ box-sizing: border-box;
}
.productPage_shop_item_img {
width: 136px;
height: 136px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
text {
- font-size: 24px;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ font-size: 16px;
font-family: SourceHanSansSC-Normal, SourceHanSansSC;
font-weight: 400;
color: #FFFFFF;
@@ -1524,24 +1767,35 @@
width: 100%;
display: flex;
align-items: flex-start;
+ justify-content: space-between;
margin-bottom: 30px;
.productPage_parameter_item {
- flex: 1;
+ width: 49%;
&:first-child {
margin-right: 18px;
}
.productPage_parameter_item_head {
width: 100%;
- height: 60px;
- background: rgba(0,224,255,0.34) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
+ height: 40px;
+ // background: rgba(0,224,255,0.34) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
border-radius: 8px 8px 0px 0px;
display: flex;
align-items: center;
justify-content: center;
- font-size: 26px;
- font-family: SourceHanSansSC-Medium, SourceHanSansSC;
- font-weight: 500;
- color: #FFFFFF;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ text {
+ width: 100%;
+ text-align: center;
+ font-size: 16px;
+ font-family: SourceHanSansSC-Medium, SourceHanSansSC;
+ font-weight: 500;
+ color: #FFFFFF;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
}
.productPage_parameter_item_content {
width: 100%;
@@ -1567,13 +1821,13 @@
margin-left: 20px;
text {
&:first-child {
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Regular, SourceHanSansSC;
font-weight: 400;
color: #333333;
}
&:last-child {
- font-size: 26px;
+ font-size: 16px;
font-family: SourceHanSansSC-Bold, SourceHanSansSC;
font-weight: bold;
color: #222222;
@@ -1589,13 +1843,13 @@
justify-content: center;
text {
&:first-child {
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Regular, SourceHanSansSC;
font-weight: 400;
color: #333333;
}
&:last-child {
- font-size: 26px;
+ font-size: 16px;
font-family: SourceHanSansSC-Bold, SourceHanSansSC;
font-weight: bold;
color: #F10000;
@@ -1605,30 +1859,34 @@
}
}
.productPage_parameter_item_content_nr {
- padding: 16px 32px;
+ padding: 16px 18px;
box-sizing: border-box;
background: #FFFFFF;
border-radius: 8px;
margin-top: 12px;
display: flex;
flex-direction: column;
+ .paramline{
+ border-bottom: #c7c9ce 2px dashed;
+ margin-bottom: 15px;
+ }
.item {
display: flex;
- align-items: center;
- margin-bottom: 28px;
+ align-items: flex-start;
+ margin-bottom: 15px;
&:last-child {
margin-bottom: 0 !important;
}
.label {
flex-shrink: 0;
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Normal, SourceHanSansSC;
font-weight: 400;
color: #222222;
}
.value {
flex: 1;
- font-size: 24px;
+ font-size: 16px;
font-family: SourceHanSansSC-Normal, SourceHanSansSC;
font-weight: 400;
color: #222222;
--
Gitblit v1.9.3