| | |
| | | <template> |
| | | <view class="box"> |
| | | <view class="box_bg" :style="{backgroundImage: 'url(' + Config.resourcePath + Config.bgImg + ')'}"></view> |
| | | <view class="box_user"> |
| | | <text>{{User.username}}</text> |
| | | <image src="@/static/ic_logout@2x.png" mode="widthFix" @click="loginOut"></image> |
| | | </view> |
| | | <view class="box_content" :style="{maxWidth: Config.rangeSize + 'px', minWidth: Config.rangeSize + 'px'}"> |
| | | <view class="box_bg" v-if="configuration && bgImg && configuration.bgImg.isShow !== 0" :style="{backgroundImage: 'url(' + bgImg + ')'}"></view> |
| | | <view class="box_bg" v-else-if="configuration" :style="{background: configuration.main.bgColor ? percentage(configuration.main.bgColor, configuration.main.alpha) : ''}"></view> |
| | | <view class="box_bg" v-else :style="{backgroundImage: 'url(' + require('@/static/mb.png') + ')'}"></view> |
| | | |
| | | <view class="box_content" :style="{maxWidth: configuration ? configuration.rangeSize + 'px' : '750px', minWidth: configuration ? configuration.rangeSize + 'px' : '750px'}"> |
| | | <!-- 广告图 --> |
| | | <view class="advertisement"> |
| | | <image :src="Config.resourcePath + Config.topImg" mode="widthFix"></image> |
| | | <image v-if="configuration" :src="topImg" mode="widthFix"></image> |
| | | <image v-else :src="require('@/static/banner.png')" mode="widthFix"></image> |
| | | </view> |
| | | |
| | | <view class="box_content_left" v-if="status > 0" @click="fanhuiPage"> |
| | |
| | | 一键清空 |
| | | </view> |
| | | |
| | | <view class="box_user"> |
| | | <text>{{User.username}}</text> |
| | | <image src="@/static/ic_logout@2x.png" mode="widthFix" @click="loginOut"></image> |
| | | </view> |
| | | |
| | | <!-- 首页 --> |
| | | <template v-if="status === 0"> |
| | | <view class="commodityFrom" v-if="shopList && shopList.length > 0"> |
| | | <view class="commodityFrom_head"> |
| | | <view class="commodityFrom_head_item">类别</view> |
| | | <view class="commodityFrom_head_item">品牌</view> |
| | | <view class="commodityFrom_head_item">型号</view> |
| | | <view class="commodityFrom_head_item">指导价</view> |
| | | <view class="commodityFrom_head_item">入手价</view> |
| | | <view class="commodityFrom_head" :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%)`}"> |
| | | <view class="commodityFrom_head_item" :style="{color: !configuration ? '#ffffff' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff'}">类别</view> |
| | | <view class="commodityFrom_head_item" :style="{color: !configuration ? '#ffffff' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff'}">品牌</view> |
| | | <view class="commodityFrom_head_item" :style="{color: !configuration ? '#ffffff' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff'}">型号</view> |
| | | <view class="commodityFrom_head_item" :style="{color: !configuration ? '#ffffff' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff'}">指导价</view> |
| | | <view class="commodityFrom_head_item" :style="{color: !configuration ? '#ffffff' : configuration.header.type === 1 ? percentage(configuration.header.color, configuration.header.alpha) : '#ffffff'}">入手价</view> |
| | | </view> |
| | | <view class="commodityFrom_body"> |
| | | <view class="commodityFrom_body" :style="{background: !configuration ? 'rgba(0,0,0,0)' : percentage(configuration.list.bgColor, configuration.list.bgAlpha)}"> |
| | | <view class="commodityFrom_body_content"> |
| | | <view class="commodityFrom_body_content_item" v-for="(item, index) in shopList" :key="index"> |
| | | <view class="commodityFrom_body_content_item_num"> |
| | |
| | | <image :src="item.categoryImgurl" mode="widthFix"></image> |
| | | </view> |
| | | <text>{{item.categoryName}}</text> |
| | | <!-- {{stringOperations(item.categoryName, 4)}} --> |
| | | <!-- {{stringOperations(item.categoryName, 3)}} --> |
| | | </view> |
| | | <!-- @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)}} brandData --> |
| | | <text>{{item.brandName}}</text> |
| | | <view class="drop-down" :style="{ opacity: item.ppShow ? opacity : '0', zIndex: item.ppShow ? zIndex : '-1' }"> |
| | | <view class="drop-down-item" v-for="(child, i) in item.ppData" :key="i" @click.stop="clickBrand(item, child, index)"> |
| | | <text>{{child.name}}</text> |
| | | {{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"> |
| | | <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> |
| | | <!-- @click="open(index, 2)" --> |
| | | <view class="commodityFrom_body_content_item_num" @mouseenter.stop="mouseenterX(index)" @mouseleave.stop="mouseleaveX(index)"> |
| | | <!-- {{stringOperations(item.name, 16)}} --> |
| | | <text>{{item.name}}</text> |
| | | |
| | | |
| | | {{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' }"> |
| | | <view class="drop-down-item" v-for="(data, s) in item.xhData" :key="s" @click.stop="clickXH(data, index)"> |
| | | <!-- {{ stringOperations(data.name, 7)}} --> |
| | | <text>{{data.name}}</text> |
| | | <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-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> |
| | | <view class="commodityFrom_body_content_item_num"> |
| | | <text>{{ item.zdPrice }}</text> |
| | | {{ item.zdPrice }} |
| | | </view> |
| | | <view class="commodityFrom_body_content_item_num"> |
| | | <input |
| | |
| | | <image src="@/static/ic_img@2x.png" mode="widthFix" @click="openImg(index)"></image> |
| | | <image src="@/static/ic_copy@2x.png" mode="widthFix" @click="copyItem(item)"></image> |
| | | <image src="@/static/ic_delete@2x.png" mode="widthFix" @click="deleItem(index)"></image> |
| | | <image src="@/static/ic_pk2@2x.png" mode="widthFix" @click="clickItem(-1, item.categoryId, item.categoryName,2,item)"></image> |
| | | </view> |
| | | </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)}} |
| | | <!-- {{unitConvert(zdTotalPrice).num}}{{unitConvert(zdTotalPrice).unit}} --> |
| | | </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)}} |
| | | <!-- {{unitConvert(totalPrice).num}}{{unitConvert(totalPrice).unit}} --> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="productCategory"> |
| | | <view class="productCategory_list"> |
| | | <view class="productCategory_list" :style="{background: !configuration ? 'rgba(137, 159, 197, 1)' : configuration.category.bgType === 1 ? percentage(configuration.category.bgColor, configuration.category.bgAlpha) : '#899FC5'}"> |
| | | <view |
| | | class="productCategory_list_item" |
| | | v-for="(item, index) in category" |
| | | :key="index" |
| | | @click="clickItem(index, item.id, item.name)"> |
| | | @click="clickItem(index, item.id, item.name,1)"> |
| | | <image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image> |
| | | <text>{{item.name}}</text> |
| | | <text :style="{'font-size': !configuration&&!configuration.listname ?'16px':((configuration.listname.fontSize||16) +'px'),color: !configuration &&!configuration.listname? '#ffffff' : configuration.listname.selType === 1 ? percentage(configuration.listname.selColor, configuration.listname.selAlpha) : '#ffffff'}">{{item.name}}</text> |
| | | </view> |
| | | <view class="productCategory_list_zw"></view> |
| | | <view class="productCategory_list_zw"></view> |
| | |
| | | <!-- 商品列表 --> |
| | | <template v-if="status === 1 || status === 2"> |
| | | <view class="productPage"> |
| | | <view class="productPage_head"> |
| | | <view class="productPage_head_item" v-if="attrFirstList && attrFirstList.length > 0"> |
| | | <view class="productPage_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)}"> |
| | | <view class="productPage_head_item" v-if="attrFirstName"> |
| | | <text>{{attributeOne.name ? attributeOne.name : attrFirstName}}</text> |
| | | <image src="@/static/ar_open@2x.png" mode="widthFix"></image> |
| | | <view class="productPage_xl" v-if="attrFirstList.length > 0"> |
| | | <view class="productPage_xl_iten" v-for="(item, index) in attrFirstList" :key="index" @click="clickShopPageCheck(item, 1)"> |
| | | <text>{{item.name}}</text> |
| | | <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)" @mouseenter="aaa(index)" @mouseleave="bbb"> |
| | | <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="productPage_head_item" v-if="attrSecondList && attrSecondList.length > 0"> |
| | | <view class="productPage_head_item" v-if="attrSecondName"> |
| | | <text>{{attributeTwo.name ? attributeTwo.name : attrSecondName}}</text> |
| | | <image src="@/static/ar_open@2x.png" mode="widthFix"></image> |
| | | <view class="productPage_xl" v-if="attrSecondList.length > 0"> |
| | | <view class="productPage_xl_iten" v-for="(item, index) in attrSecondList" :key="index" @click="clickShopPageCheck(item, 2)"> |
| | | <text>{{item.name}}</text> |
| | | <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)" @mouseenter="aaa(index)" @mouseleave="bbb"> |
| | | <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <text v-if="budget.type == 1 || budget.type == 2">{{budget.name}}</text> |
| | | <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" 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" :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)" @mouseenter="aaa(index)" @mouseleave="bbb"> |
| | | <template v-if="!item.name"> |
| | | <text>{{item.minamount}}~{{item.maxamount}}</text> |
| | | |
| | | <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.minamount}}~{{item.maxamount}}</text> |
| | | </template> |
| | | <template v-else> |
| | | <text>{{item.name}}</text> |
| | | <text :style="{color: fontColorIndex === index ? fontColor : ''}">{{item.name}}</text> |
| | | </template> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="productPage_head_item"> |
| | | <text>{{shopPageBrand.name ? shopPageBrand.name : '品牌'}}</text> |
| | | <image src="@/static/ar_open@2x.png" mode="widthFix"></image> |
| | | <view class="productPage_xl" v-if="brandData1.length > 0"> |
| | | <view class="productPage_xl_iten" v-for="(item, index) in brandData1" :key="index" @click="clickShopPageCheck(item, 4)"> |
| | | <text>{{item.name}}</text> |
| | | <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)" @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" @click="clickPKshop(leftShop)" 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(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, 20)}}</text> --> |
| | | <text>{{leftShop.name}}</text> |
| | | </view> |
| | | <view class="productPage_pk_shop_t"> |
| | | <image :src="Config.resourcePath + Config.pkImg" mode="widthFix"></image> |
| | | <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> |
| | | </view> |
| | | </view> |
| | | <view class="productPage_pk_z" @click="jumpPK"> |
| | | <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>{{rightShop.name}}</text> |
| | | <!-- <text>{{stringOperations(rightShop.name, 6)}}</text> --> |
| | | </view> |
| | | <view class="productPage_pk_shop_t"> |
| | | <image :src="Config.resourcePath + Config.pkImg" mode="widthFix"></image> |
| | | <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> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="productPage_shop" v-if="status === 1 && !pkcontent"> |
| | | <noData v-if="shopPageData.length === 0 && shopPageDataSou.length === 0" /> |
| | | <template v-else> |
| | | <view class="productPage_shop_item" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)"> |
| | | <view class="productPage_shop_item_img"> |
| | | <image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image> |
| | | </view> |
| | | <!-- stringOperations(item.name, 6) --> |
| | | <text>{{item.name}}</text> |
| | | <view class="productPage_shop_item" :style="{background: !configuration ? 'rgba(137, 159, 197, 1)' : percentage(configuration.list.bgColor, configuration.list.bgAlpha)}" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)"> |
| | | <view class="productPage_shop_item_img"> |
| | | <image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image> |
| | | </view> |
| | | <view class="productPage_shop_zw"></view> |
| | | <view class="productPage_shop_zw"></view> |
| | | <view class="productPage_shop_zw"></view> |
| | | </template> |
| | | <text :style="{'font-size': !configuration &&!configuration.listproname?'16px':((configuration.listproname.fontSize||16) +'px'),color: !configuration&&!configuration.listproname ? '#ffffff' : configuration.listproname.selType === 1 ? percentage(configuration.listproname.selColor, configuration.listproname.selAlpha) : '#ffffff',color: !configuration ? '#ffffff' : configuration.listproname.selType === 1 ? percentage(configuration.listproname.selColor, configuration.listproname.selAlpha) : '#ffffff'}">{{item.name}}</text> |
| | | </view> |
| | | <view class="productPage_shop_zw"></view> |
| | | <view class="productPage_shop_zw"></view> |
| | | <view class="productPage_shop_zw"></view> |
| | | </view> |
| | | <!-- 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"> |
| | | <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> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="productPage_parameter_item_content_nr"> |
| | | <view class="item" v-if="item.param1" v-for="(child, i) in item.param1" :key="child.index"> |
| | | <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> |
| | | </template> |
| | | |
| | | <!-- 搜索组件 --> |
| | | <!-- 查看大图 --> |
| | | <bigImg |
| | | ref="bigImg" |
| | | :imgList="imgList"/> |
| | | |
| | | <!-- 搜索 --> |
| | | <search |
| | | ref="search" |
| | | :search="configuration ? configuration.search : null" |
| | | :conMark="configuration ? configuration : null" |
| | | :fontColor="fontColor" |
| | | :categoryList="category" |
| | | :shopList="shopData" |
| | | :categoryid="categoryId" |
| | | :status="status" |
| | | :categoryName="categoryName" |
| | | :categoryid="categoryId" |
| | | @result="result" /> |
| | | @result="result" /> |
| | | <!-- 搜索商品列表标题 --> |
| | | <searchShopList |
| | | ref="searchShopListRef" |
| | | :search="configuration ? configuration.search : null" |
| | | @getTitle="getVal" |
| | | /> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import bigImg from '@/components/bigImg.vue' |
| | | import search from '@/components/search.vue' |
| | | import noData from '@/components/noData.vue' |
| | | import searchShopList from '@/components/searchShopList.vue' |
| | | import { categoryList, goodsList, brandList, h5Image, logout, getByLoginNew, listForH5 } from '@/apis/index.js' |
| | | import { mapState } from 'vuex' |
| | | import { categoryList, goodsList, brandList, h5Image, goodsPage, listForH5, logout } from '@/apis/index.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | status: 0, // 0首页 1商品列表 2pk页 |
| | | |
| | | backPageNum:1,//返回页数 |
| | | img: '', |
| | | |
| | | opacity: 1, |
| | |
| | | zdj: 0, |
| | | |
| | | select: [], // 已选 |
| | | configuration: null, |
| | | bgImg: '', |
| | | topImg: '', |
| | | pkImg: '', |
| | | |
| | | model: { // 商品查询数据 |
| | | attrFirst: '', |
| | | attrSecond: '', |
| | | brandId: '', |
| | | categoryId: '', |
| | | eprice: '', |
| | | sprice: '', |
| | | keyword: '' |
| | | }, |
| | | |
| | | page: 1 |
| | | title: '', |
| | | fontColor: 'rgba(255, 220, 108, 1)', |
| | | fontColorIndex: '' |
| | | } |
| | | }, |
| | | components: { search, noData }, |
| | | components: { bigImg, search, searchShopList }, |
| | | onLoad() { |
| | | getByLoginNew({}) |
| | | .then(res => { |
| | | if (!res.data) { |
| | | return |
| | | } |
| | | 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) { |
| | | this.bgImg = require('@/static/mb.png') |
| | | } else { |
| | | this.bgImg = this.configuration.bgImg.imgurl |
| | | } |
| | | if (this.configuration.topImg.type === 0) { |
| | | this.topImg = require('@/static/banner.png') |
| | | } else { |
| | | this.topImg = this.configuration.topImg.imgurl |
| | | } |
| | | if (this.configuration.pkImg.type === 0) { |
| | | this.pkImg = require('@/static/ic_pktai@2x.png') |
| | | } else { |
| | | this.pkImg = this.configuration.pkImg.imgurl |
| | | } |
| | | }) |
| | | var that = this |
| | | // 监听键盘组合键 |
| | | document.onkeydown = function(e) { |
| | | var keyCode = e.keyCode || e.which || e.charCode; |
| | | var ctrlKey = e.ctrlKey || e.metaKey; |
| | | if (!that.$refs.search.show) { |
| | | if (ctrlKey && keyCode == 70) { |
| | | if (that.status === 0) { |
| | | that.$refs.search.index = 0 |
| | | that.$refs.search.open() |
| | | } |
| | | e.preventDefault(); |
| | | return false; |
| | | } else if (keyCode === 37) { |
| | | that.fanhuiPage() |
| | | e.preventDefault(); |
| | | return false; |
| | | } else if (keyCode === 39) { |
| | | that.xiaPage() |
| | | e.preventDefault(); |
| | | return false; |
| | | if(ctrlKey && keyCode == 70) { |
| | | if (that.status === 0) { |
| | | that.$refs.search.open() |
| | | } else if (that.status === 1) { |
| | | that.$refs.searchShopListRef.open() |
| | | } |
| | | } else { |
| | | console.log('已经打开搜索框', keyCode) |
| | | if (keyCode === 38) { |
| | | that.$refs.search.changeTop() |
| | | } else if (keyCode === 40) { |
| | | that.$refs.search.changeBottom() |
| | | } else if (keyCode === 13) { |
| | | that.$refs.search.confirm() |
| | | } |
| | | e.preventDefault(); |
| | | return false; |
| | | } else if (keyCode === 37) { |
| | | that.fanhuiPage() |
| | | e.preventDefault(); |
| | | return false; |
| | | } else if (keyCode === 39) { |
| | | that.xiaPage() |
| | | e.preventDefault(); |
| | | return false; |
| | | } |
| | | } |
| | | this.getCategoryList() |
| | | // this.getGoodsList() |
| | | this.getbrandList() |
| | | this.getGoodsList() |
| | | // this.getbrandList() |
| | | this.h5Images() |
| | | }, |
| | | onReady() { |
| | | var that = this |
| | | |
| | | let divs = document.getElementsByClassName('box') |
| | | |
| | | let start = 0 |
| | | |
| | | divs[0].onmousedown = function(ev){ |
| | | |
| | | if (that.status === 1) { |
| | | |
| | | start = ev.pageY |
| | | |
| | | //event的兼容性 |
| | | var ev = ev || event; |
| | | |
| | | //获取鼠标按下的坐标 |
| | | var x1 = ev.clientX; |
| | | var y1 = ev.clientY; |
| | | |
| | | //获取元素的left,top值 |
| | | var l = divs.offsetLeft; |
| | | var t = divs.offsetTop; |
| | | |
| | | //给可视区域添加鼠标的移动事件 |
| | | document.onmousemove = function(ev) { |
| | | //event的兼容性 |
| | | var ev = ev || event; |
| | | |
| | | //获取鼠标移动时的坐标 |
| | | var x2 = ev.clientX; |
| | | var y2 = ev.clientY; |
| | | |
| | | //计算出鼠标的移动距离 |
| | | var x = x2 - x1; |
| | | var y = y2 - y1; |
| | | |
| | | //移动的数值与元素的left,top相加,得出元素的移动的距离 |
| | | var lt = y + t; |
| | | var ls = x + l; |
| | | |
| | | let num = start - ev.pageY |
| | | if (num < -100) { |
| | | that.isPK = true |
| | |
| | | document.onmouseup = function(ev){ |
| | | document.onmousemove = null; |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
| | | onUnload() { |
| | | //清除 |
| | | document.onmouseup = function(ev){ |
| | | document.onmousemove = null; |
| | | } |
| | | //清除 |
| | | document.onkeydown = null |
| | | }, |
| | | computed: { |
| | | // 指导价总计 |
| | | zdTotalPrice() { |
| | | let num = 0 |
| | | this.shopList.forEach(item => { |
| | | // num = num + Number(item.zdPrice) |
| | | num = this.addPrice(num, Number(item.zdPrice)) |
| | | num = num + Number(item.zdPrice) |
| | | }) |
| | | return num || 0 |
| | | }, |
| | |
| | | totalPrice() { |
| | | let num = 0 |
| | | this.shopList.forEach(item => { |
| | | // num = num + Number(item.price) |
| | | num = this.addPrice(num, Number(item.price)) |
| | | num = num + Number(item.price) |
| | | }) |
| | | return num || 0 |
| | | }, |
| | |
| | | status: { |
| | | handler(news, old) { |
| | | if (news === 0) { |
| | | this.page = 1 |
| | | this.categoryName = '' |
| | | this.categoryId = '' |
| | | this.shopPageData = [] |
| | | } |
| | | } |
| | | }, |
| | |
| | | let rsj = 0 |
| | | let zdj = 0 |
| | | this.shopList.forEach(item => { |
| | | // rsj = rsj + Number(item.price) |
| | | rsj = this.addPrice(rsj, Number(item.price)) |
| | | // zdj = zdj + Number(item.zdPrice) |
| | | zdj = this.addPrice(zdj, Number(item.zdPrice)) |
| | | rsj = rsj + Number(item.price) |
| | | zdj = zdj + Number(item.zdPrice) |
| | | }) |
| | | // console.log('rsj', rsj) |
| | | // console.log('zdj', zdj) |
| | | this.totalPrices = rsj |
| | | this.zdj = zdj |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | jumpPKNew(){ |
| | | this.status = 1 |
| | | }, |
| | | aaa(index) { |
| | | this.fontColorIndex = index |
| | | }, |
| | | bbb() { |
| | | this.fontColorIndex = '' |
| | | }, |
| | | // 鼠标移如品牌 |
| | | async mouseenterP(index, categoryId) { |
| | | this.shopList[index].ppShow = true |
| | | if (!this.shopList[index].ppData || this.shopList[index].ppData.length == 0) { |
| | | 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].ppData = res.data |
| | | this.shopList[index].brandList = res.data |
| | | } |
| | | } |
| | | |
| | | this.$forceUpdate() |
| | | }, |
| | | mouseleaveP(index) { |
| | | this.shopList[index].ppShow = false |
| | | this.$forceUpdate() |
| | | }, |
| | | async mouseenterX(index) { |
| | | this.shopList[index].xhShow = true |
| | | // 鼠标移如型号 |
| | | async mouseenterX(index, type = 2) { |
| | | if (this.shopList[index].xhData && this.shopList[index].xhData.length > 0) { |
| | | |
| | | this.$forceUpdate() |
| | | } else { |
| | | let res = await listForH5({ |
| | |
| | | }) |
| | | if (res.code === 200) { |
| | | this.shopList[index].xhData = res.data; |
| | | // this.shopList[index].xhShow = true |
| | | this.$forceUpdate() |
| | | } |
| | | } |
| | | // this.shopList[index].xhShow = true |
| | | // this.$forceUpdate() |
| | | this.shopList[index].xhShow = true |
| | | this.$forceUpdate() |
| | | }, |
| | | mouseleaveX(index) { |
| | | this.shopList[index].xhShow = false |
| | | this.$forceUpdate() |
| | | // listForH5({ |
| | | // categoryId: this.shopList[index].categoryId, |
| | | // brandId: this.shopList[index].brandId |
| | | // }).then(res => { |
| | | // this.shopList[index].xhData = res.data; |
| | | // this.shopList[index].xhShow = false |
| | | // this.$forceUpdate() |
| | | // }) |
| | | // this.shopList[index].ppShow = false |
| | | // this.$forceUpdate() |
| | | }, |
| | | addPrice (arg1, arg2) { |
| | | let r1, r2, m; |
| | | try { |
| | | r1 = arg1.toString().split('.')[1].length; // 获取arg1小数位的长度 |
| | | } catch (e) { |
| | | r1 = 0; |
| | | } |
| | | try { |
| | | r2 = arg2.toString().split('.')[1].length; // 获取arg2小数位的长度 |
| | | } catch (e) { |
| | | r2 = 0; |
| | | } |
| | | m = Math.pow(10, Math.max(r1, r2)); // max()函数是选出小数点位最大的参数的长度,保证将两个参数都化为整数,pow()函数是将10做指数幂操作,将参数都化为整数 |
| | | return (arg1 * m + arg2 * m )/m; |
| | | }, |
| | | // 退出 |
| | | loginOut() { |
| | | logout({}) |
| | | .then(res => { |
| | | this.$store.commit('clean') |
| | | uni.redirectTo({ url: '/pages/login/login' }); |
| | | }) |
| | | }, |
| | | // 查询商品数据 |
| | | getShopList(type) { |
| | | if (type === 1) { |
| | | this.page = 1 |
| | | this.shopPageData = [] |
| | | } |
| | | goodsPage({ |
| | | capacity: 20, |
| | | page: this.page, |
| | | model: this.model |
| | | }).then(res => { |
| | | if (this.shopPageData.length === res.data.total) return |
| | | let arr = [...this.shopPageData, ...res.data.records] |
| | | this.shopPageData = arr |
| | | this.page = this.page + 1 |
| | | // 已选商品列表搜索品牌 |
| | | 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 |
| | | this.leftShop = {} |
| | | this.rightShop = {} |
| | | this.isSOU = true |
| | | this.shopPageDataSou = [] |
| | | this.shopPageData.forEach(item => { |
| | | 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.shopPageDataSou.push(item) |
| | | } |
| | | }) |
| | | }, |
| | | empty() { |
| | | this.shopList = [] |
| | | }, |
| | | percentage(bgColor, alpha) { |
| | | let res = +(alpha * 2.55).toFixed(0) |
| | | return bgColor + res.toString(16) |
| | | }, |
| | | checkInput(_this) { |
| | | if (_this.value != '' && _this.value.substr(0, 1) == '.') { |
| | |
| | | }, |
| | | changePrice(price, index) { |
| | | if (price.indexOf('-') !== -1) { |
| | | console.log('-') |
| | | this.shopList[index].price = '' |
| | | return |
| | | } |
| | |
| | | this.shopList.forEach(item => { |
| | | rsj = rsj + Number(item.price) |
| | | }) |
| | | console.log('rsj', rsj) |
| | | this.totalPrices = rsj |
| | | }, |
| | | simplifyNum(number) { |
| | | if (!number && number != 0) return number; |
| | | let test = number.toFixed(0) |
| | | // console.log(test) |
| | | if(test.length >= 7){ |
| | | const moneys = number / 10000 |
| | | const realVal = parseFloat(moneys).toFixed(0); |
| | |
| | | } else { |
| | | return number |
| | | } |
| | | }, |
| | | // 退出 |
| | | loginOut() { |
| | | logout({}) |
| | | .then(res => { |
| | | this.$store.commit('clean') |
| | | uni.redirectTo({ url: '/pages/login/login' }); |
| | | }) |
| | | }, |
| | | // 获取海报图 |
| | | h5Images() { |
| | |
| | | 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.status = this.status - 1 |
| | | this.$refs.search.close() |
| | | this.$refs.searchShopListRef.close() |
| | | this.status = this.status -(this.backPageNum>0?this.backPageNum:1) |
| | | if (this.status === 0) { |
| | | this.leftShop = {} |
| | | this.rightShop = {} |
| | |
| | | // 点击型号 |
| | | 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)) |
| | | obj.multifileList = JSON.parse(JSON.stringify(item.multifileList)) |
| | | this.shopList.splice(index, 1, obj) |
| | | obj.xhShow = false |
| | | // this.shopList.splice(index, 1) |
| | | this.shopList[index] = JSON.parse(JSON.stringify(obj)) |
| | | console.log(this.shopList[index]) |
| | | console.log(JSON.parse(JSON.stringify(obj))) |
| | | let rsj = 0 |
| | | let zdj = 0 |
| | | this.shopList.forEach(item => { |
| | | rsj = this.addPrice(rsj, Number(item.price)) |
| | | zdj = this.addPrice(zdj, Number(item.zdPrice)) |
| | | }) |
| | | this.totalPrices = rsj |
| | | this.zdj = zdj |
| | | // this.shopList[index] = JSON.parse(JSON.stringify(obj)) |
| | | this.$forceUpdate() |
| | | }, |
| | | // 点击pk商品带回首页 |
| | |
| | | this.$viewerApi({ |
| | | images: this.imgList, |
| | | }) |
| | | }, |
| | | empty() { |
| | | this.shopList = [] |
| | | // this.$refs.bigImg.open(i) |
| | | }, |
| | | // 跳转pk |
| | | jumpPK() { |
| | |
| | | }, |
| | | // 点击加入pk商品 |
| | | openSearch(type) { |
| | | if (type === 'left') { |
| | | this.$refs.search.open(type) |
| | | /* if (type === 'left') { |
| | | this.$refs.search.open('left') |
| | | } else if (type === 'right') { |
| | | this.$refs.search.open('right') |
| | | } |
| | | } */ |
| | | }, |
| | | // 点击商品列表页面查询 |
| | | clickShopPageCheck(item, type) { |
| | | this.leftShop = {} |
| | | this.rightShop = {} |
| | | // this.isSOU = true |
| | | // this.shopPageDataSou = [] |
| | | this.isSOU = true |
| | | if (type === 1) { |
| | | this.attributeOne.name = item.name === '全部' ? '' : item.name |
| | | this.attributeOne.id = item.id |
| | | |
| | | if (item.name === '全部') { |
| | | this.model.attrFirst = '' |
| | | } else { |
| | | this.model.attrFirst = item.id |
| | | } |
| | | |
| | | this.getShopList(1) |
| | | |
| | | } else if (type === 2) { |
| | | this.attributeTwo.name = item.name === '全部' ? '' : item.name |
| | | this.attributeTwo.id = item.id |
| | | |
| | | if (item.name === '全部') { |
| | | this.model.attrSecond = '' |
| | | } else { |
| | | this.model.attrSecond = item.id |
| | | } |
| | | |
| | | this.getShopList(1) |
| | | } else if (type === 3) { |
| | | console.log(item) |
| | | this.budget.id = item.id |
| | | this.budget.max = item.maxamount |
| | | this.budget.min = item.minamount |
| | |
| | | if (item.name) { |
| | | this.budget.name = item.name |
| | | } |
| | | if (item.name === '全部') { |
| | | this.model.sprice = '' |
| | | this.model.eprice = '' |
| | | } else { |
| | | this.model.sprice = item.minamount || 0 |
| | | this.model.eprice = item.maxamount || 99999 |
| | | } |
| | | |
| | | this.getShopList(1) |
| | | } else if (type === 4) { |
| | | this.shopPageBrand.id = item.id |
| | | this.shopPageBrand.name = item.name === '全部' ? '' : item.name |
| | | |
| | | if (item.name === '全部') { |
| | | this.model.brandId = '' |
| | | } else { |
| | | this.model.brandId = item.id |
| | | } |
| | | |
| | | this.getShopList(1) |
| | | } |
| | | 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) |
| | | (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 = [] |
| | |
| | | }, |
| | | // 选择品牌 |
| | | clickBrand(item, val, index) { |
| | | // 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].brandName = JSON.parse(JSON.stringify(val.name)) |
| | | this.shopList[index].brandId = JSON.parse(JSON.stringify(val.id)) |
| | | this.shopList[index].name = '' |
| | | this.shopList[index].zdPrice = '' |
| | | this.shopList[index].price = '' |
| | | this.shopList[index].xhData = [] |
| | | this.shopList[index].multifileList = [] |
| | | 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 |
| | |
| | | } else { |
| | | this.shopList.push(JSON.parse(JSON.stringify(val))) |
| | | } |
| | | console.log(this.leftShop) |
| | | console.log(this.rightShop) |
| | | }, |
| | | // 获取全部商品 |
| | | getGoodsList() { |
| | |
| | | }, |
| | | copyItem(item) { |
| | | let obj = JSON.parse(JSON.stringify(item)) |
| | | obj.multifileList = [] |
| | | obj.xhData = [] |
| | | obj.brandId = '' |
| | | obj.brand = '' |
| | | obj.brandName = '' |
| | | obj.name = '' |
| | | obj.zdPrice = '' |
| | | obj.price = '' |
| | | console.log(obj) |
| | | this.shopList.push(obj) |
| | | }, |
| | | deleItem(i) { |
| | |
| | | item.ppShow = false |
| | | item.xhShow = false |
| | | }) |
| | | |
| | | this.shopList.forEach((item, i) => { |
| | | if (i === index) { |
| | | if (type === 1) { |
| | | item.ppShow = true |
| | | } else { |
| | | listForH5({ |
| | | categoryId: this.shopList[index].categoryId, |
| | | brandId: this.shopList[index].brandId |
| | | }).then(res => { |
| | | this.shopList[index].xhData = res.data; |
| | | item.xhShow = true |
| | | this.$forceUpdate() |
| | | let arr = [] |
| | | this.shopData.forEach(element => { |
| | | if ( |
| | | (item.categoryId ? element.categoryId === item.categoryId : true) && |
| | | (item.brandId ? element.brandId === item.brandId : true)) { |
| | | arr.push(JSON.parse(JSON.stringify(element))) |
| | | } |
| | | }) |
| | | |
| | | // let arr = [] |
| | | // this.shopData.forEach(element => { |
| | | // // console.log(element.categoryId === item.categoryId && element.brandId === item.brandId) |
| | | // if ( |
| | | // (item.categoryId ? element.categoryId === item.categoryId : true) && |
| | | // (item.brandId ? element.brandId === item.brandId : true)) { |
| | | // arr.push(JSON.parse(JSON.stringify(element))) |
| | | // } |
| | | // }) |
| | | // this.shopList[index].xhData = arr; |
| | | // item.xhShow = true |
| | | this.shopList[index].xhData = arr; |
| | | item.xhShow = true |
| | | } |
| | | } |
| | | }) |
| | | this.$forceUpdate() |
| | | }, |
| | | // 点击类别 |
| | | clickItem(index, id, name) { |
| | | clickItem(index, id, name,status,proItem) { |
| | | this.categoryId = id |
| | | this.model.categoryId = id |
| | | this.categoryName = name |
| | | |
| | | this.getShopList() |
| | | 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: '' }) |
| | | console.log(this.brandData1) |
| | | }) |
| | | |
| | | this.category.forEach((item, num) => { |
| | | if (index === num) { |
| | | if (item.id === id) { |
| | | item.active = true |
| | | |
| | | this.attrSecondList = [] |
| | |
| | | }) |
| | | arr.unshift({ name: '全部', id: '' }) |
| | | this.budgetList = arr |
| | | // console.log(this.budgetList) |
| | | } else { |
| | | item.active = false |
| | | } |
| | | }) |
| | | // this.shopPageData = [] |
| | | this.shopPageData = this.shopData.filter(item => { |
| | | return item.categoryId === id |
| | | }) |
| | | if(status ==2){ |
| | | this.leftShop=proItem |
| | | this.backPageNum =2 |
| | | }else{ |
| | | this.backPageNum=1 |
| | | } |
| | | console.log(this.shopPageData) |
| | | // this.shopData.forEach(item => { |
| | | // if (item.categoryId === id) { |
| | | // this.shopPageData.push(JSON.parse(JSON.stringify(item))) |
| | |
| | | id: '', |
| | | name: '' |
| | | }, |
| | | this.status = 1 |
| | | this.status = status || 1 |
| | | }, |
| | | mousemove(e) { |
| | | if (e === this.index) return |
| | | this.index = e |
| | | } |
| | | }, |
| | | onReachBottom() { |
| | | if (this.status == 1) { |
| | | this.getShopList() |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | .box { |
| | | // width: 100vw; |
| | | // min-height: 100vh; |
| | | // display: flex; |
| | | // justify-content: center; |
| | | // background-image: url('@/static/bg.jpg'); |
| | | // background-repeat: no-repeat; |
| | | // background-size: 100% 100%; |
| | | width: 100vw; |
| | | min-height: 100vh; |
| | | display: flex; |
| | |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .box_user { |
| | | z-index: 9; |
| | | position: fixed; |
| | | top: 30px; |
| | | right: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | text { |
| | | font-size: 16px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | image { |
| | | width: 18px; |
| | | height: 18px; |
| | | cursor: pointer; |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | .box_content { |
| | | // max-width: 750px; |
| | | // min-width: 750px; |
| | | .box_user { |
| | | z-index: 9; |
| | | position: fixed; |
| | | top: 30px; |
| | | right: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | text { |
| | | font-size: 16px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | } |
| | | image { |
| | | width: 18px; |
| | | height: 18px; |
| | | cursor: pointer; |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | .box_content_left { |
| | | position: fixed; |
| | | left: 80px; |
| | | left: 50px; |
| | | top: 50%; |
| | | cursor: pointer; |
| | | transform: translate(-50%, 0); |
| | |
| | | } |
| | | .box_content_right { |
| | | position: fixed; |
| | | right: 0px; |
| | | right: -30px; |
| | | top: 50%; |
| | | cursor: pointer; |
| | | transform: translate(-50%, 0); |
| | | width: 80px; |
| | | height: 80px; |
| | | z-index: 9; |
| | | z-index: 999; |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | width: 80px; |
| | | height: 80px; |
| | | border-radius: 50%; |
| | | background-color: rgba(0, 224, 255, 0.18); |
| | | background-color: rgba(0, 0, 0, 0.40); |
| | | color: #FFFFFF; |
| | | font-size: 16px; |
| | | display: flex; |
| | |
| | | } |
| | | .advertisement { |
| | | width: 100%; |
| | | // height: 300px; |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | height: 45px; |
| | | display: flex; |
| | | align-items: center; |
| | | background: rgba(0,224,255,0.3); |
| | | background: #ffffff; |
| | | border-radius: 8px; |
| | | image { |
| | | width: 32px; |
| | |
| | | .commodityFrom_body_content_item_num { |
| | | width: 126px; |
| | | height: 100%; |
| | | padding: 0 15px; |
| | | box-sizing: border-box; |
| | | background: #FFFFFF; |
| | | border-radius: 8px; |
| | | margin-right: 6px; |
| | | font-size: 16px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #111111; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | cursor: pointer; |
| | | flex: 1 !important; |
| | | } |
| | | text { |
| | | text-align: center; |
| | | width: 100%; |
| | | font-size: 16px; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #111111; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | .drop-top { |
| | | transition: .5s; |
| | | z-index: -2; |
| | |
| | | transform: translate(0, -100%); |
| | | padding: 5px 15px; |
| | | box-sizing: border-box; |
| | | line-height: 40px; |
| | | line-height: 50px; |
| | | background: rgba(0, 0, 0, 0.8); |
| | | border-radius: 10px; |
| | | color: #FFFFFF; |
| | |
| | | // 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; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | font-size: 16px; |
| | | font-family: PingFangSC-Regular, PingFang SC; |
| | | font-weight: 400; |
| | | color: #FFFFFF; |
| | | &:hover { |
| | | text { |
| | | color: #FFF200; |
| | | } |
| | | color: #FFF200; |
| | | } |
| | | text { |
| | | width: 100%; |
| | |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | justify-content: flex-start; |
| | | padding: 0 15px; |
| | | box-sizing: border-box; |
| | | font-size: 16px; |
| | | font-family: SourceHanSansSC-Medium, SourceHanSansSC; |
| | | font-weight: 500; |
| | |
| | | border-radius: 8px !important; |
| | | } |
| | | .productCategory_list_item { |
| | | width: 20% ; |
| | | width: 20%; |
| | | height: 108px; |
| | | display: flex; |
| | | transition: .5s; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .productPage { |
| | | width: 100%; |
| | | padding: 0 22px; |
| | |
| | | cursor: pointer; |
| | | position: relative; |
| | | &:hover { |
| | | border-radius: 8px 8px 0px 0px; |
| | | background: linear-gradient(360deg, #025170 0%, #529DB9 100%) !important; |
| | | background: rgba(255, 255, 255, 0.16) !important; |
| | | // border-radius: 8px 8px 0px 0px; |
| | | // background: linear-gradient(360deg, #025170 0%, #529DB9 100%) !important; |
| | | } |
| | | &:hover image { |
| | | transform: rotate(180deg); |
| | |
| | | border-radius: 0px 0px 8px 8px; |
| | | .productPage_xl_iten { |
| | | width: 100%; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | 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; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | font-size: 16px; |
| | | font-weight: 400; |
| | | color: #FFFFFF; |
| | | &:hover { |
| | | text { |
| | | 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; |
| | | color: #FFF200; |
| | | } |
| | | } |
| | | } |
| | |
| | | .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 { |
| | |
| | | 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 { |
| | | width: 100%; |
| | | font-size: 16px; |
| | | font-family: SourceHanSansSC-Medium, SourceHanSansSC; |
| | | font-weight: 500; |
| | | color: #FFFFFF; |
| | | margin-top: 18px; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | } |
| | |
| | | } |
| | | .productPage_pk_z { |
| | | flex-shrink: 0; |
| | | width: 100px; |
| | | height: 50px; |
| | | width: 140px; |
| | | height: 90px; |
| | | cursor: pointer; |
| | | image { |
| | | width: 100%; |
| | |
| | | width: 100%; |
| | | margin-top: 12px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | flex-wrap: wrap; |
| | | .productPage_shop_zw { |
| | |
| | | } |
| | | .productPage_shop_item { |
| | | width: 168px; |
| | | // height: 204px; |
| | | margin-bottom: 12px; |
| | | cursor: pointer; |
| | | background: rgba(0,224,255,0.18); |
| | |
| | | padding: 15px; |
| | | box-sizing: border-box; |
| | | flex-direction: column; |
| | | // justify-content: center; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | white-space: pre-wrap; |
| | |
| | | .productPage_parameter_item_head { |
| | | width: 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%); |
| | | // 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; |
| | |
| | | font-family: SourceHanSansSC-Bold, SourceHanSansSC; |
| | | font-weight: bold; |
| | | color: #222222; |
| | | margin-top: 10px; |
| | | margin-top: 14px; |
| | | } |
| | | } |
| | | } |
| | |
| | | font-family: SourceHanSansSC-Bold, SourceHanSansSC; |
| | | font-weight: bold; |
| | | color: #F10000; |
| | | margin-top: 10px; |
| | | margin-top: 14px; |
| | | } |
| | | } |
| | | } |