You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2292 lines
55 KiB
2292 lines
55 KiB
<template>
|
|
<view>
|
|
<view class="headerBg">
|
|
<image :src="info.background_image" mode="aspectFill" class="image"></image>
|
|
<view class="shade"></view>
|
|
<!-- #ifdef MP || APP -->
|
|
<view :style="{height: getHeight.barTop+'px'}"></view>
|
|
<view :style="{height: getHeight.barHeight+'px'}"></view>
|
|
<!-- #endif -->
|
|
<view style="height: 224rpx;"></view>
|
|
</view>
|
|
<view class="page acea-row row-column">
|
|
<view class="search-box" :style="{height: headerHeight ? (headerHeight+'px') : 'auto'}">
|
|
<view class="input-box" id="input-box" :class="{fixed: scrollTop > 0}">
|
|
<!-- #ifdef MP || APP -->
|
|
<view :style="{height: getHeight.barTop+'px'}"></view>
|
|
<!-- #endif -->
|
|
<!-- 顶部搜索框 -->
|
|
<!-- #ifdef MP -->
|
|
<view class="input-wrapper acea-row row-middle" :style="{height: getHeight.barHeight+'px'}">
|
|
<view class="menu_box flex-center" @tap="moreNav">
|
|
<text class="iconfont icon-a-icon_menu1x"></text>
|
|
</view>
|
|
<navigator url="/pages/goods/goods_search/index" class="input acea-row row-middle" hover-class="none">
|
|
<text class="iconfont icon-ic_search"></text>搜索商品
|
|
</navigator>
|
|
<view v-if="info.store_splicing_switch" class="group-btn" @click="onCollage">
|
|
<image :src="imgHost+'/statics/images/group-btn.png'" mode="aspectFit" class="img"></image>
|
|
</view>
|
|
<view :style="{width: getHeight.barWidth+'px'}"></view>
|
|
</view>
|
|
<!-- #endif -->
|
|
<!-- #ifndef MP -->
|
|
<view class="input-wrapper acea-row row-middle">
|
|
<view class="menu_box flex-center" @tap="moreNav">
|
|
<text class="iconfont icon-a-icon_menu1x"></text>
|
|
</view>
|
|
<navigator url="/pages/goods/goods_search/index" class="input acea-row row-middle" hover-class="none">
|
|
<text class="iconfont icon-ic_search"></text>搜索商品
|
|
</navigator>
|
|
<!-- #ifdef H5 -->
|
|
<view v-if="info.store_splicing_switch && $wechat.isWeixin()" class="group-btn" @click="onCollage">
|
|
<image :src="imgHost+'/statics/images/group-btn.png'" mode="aspectFit" class="img"></image>
|
|
</view>
|
|
<!-- #endif -->
|
|
</view>
|
|
<!-- #endif -->
|
|
</view>
|
|
</view>
|
|
<!-- 门店地址详情 -->
|
|
<view class="store-section">
|
|
<view class="panel">
|
|
<view class="acea-row row-middle store-name">
|
|
<view class="name-wrap">
|
|
<navigator :url="'/pages/store/info/index?store_id='+info.id" hover-class="none" class="acea-row row-middle name-inner">
|
|
<text class="iconfont icon-ic_mall"></text>
|
|
<view class="name line1">{{info.name}}</view>
|
|
<text class="iconfont icon-ic_rightarrow"></text>
|
|
</navigator>
|
|
</view>
|
|
<view class="switch acea-row" v-if="deliveryList.length > 1">
|
|
<view v-for="(item, index) in deliveryList" :key="item.key" :class="{ on: switchNum == item.key }" class="btn" @click="swithFn(item.key)">
|
|
{{item.name}}
|
|
</view>
|
|
</view>
|
|
<view class="tips" v-else-if="deliveryList.length == 1">门店支持{{deliveryList[0].name}}</view>
|
|
</view>
|
|
<view class="address-wrap acea-row row-bottom">
|
|
<view class="address-box">
|
|
<view class="time">营业时间:{{info.day_time}}</view>
|
|
<view class="address-info">
|
|
<text class="distance">距您{{info.range}}km</text>
|
|
{{info.address}}{{info.detailed_address}}
|
|
</view>
|
|
</view>
|
|
<view class="acea-row btn-box">
|
|
<view class="btn" @click="showMaoLocation">
|
|
<text class="iconfont icon-ic_location5"></text>
|
|
<view class="">地图</view>
|
|
</view>
|
|
<view class="btn" @click="goKefu">
|
|
<text class="iconfont icon-ic_customerservice"></text>
|
|
<view class="">客服</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="category acea-row" v-if="level == 3">
|
|
<scroll-view scroll-x="true" class="scroll-view">
|
|
<view class="item" :class="{ on: navOneActive == index }" v-for="(item,index) in categoryList" :key="item.id" @click="tapNavOne(item,index)">
|
|
<view class="img-box">
|
|
<image :src="item.pic" class="img"></image>
|
|
</view>
|
|
<view class="title">{{item.cate_name}}</view>
|
|
</view>
|
|
</scroll-view>
|
|
<view class="btn acea-row row-column row-center row-middle" @click="navOneOpen">
|
|
<view class="">全</view>
|
|
<view class="">部</view>
|
|
<image class="w-28 h-28 block mt-8" src="@/static/img/all_pic.png"></image>
|
|
<image src="../static/shade.png" class="img"></image>
|
|
</view>
|
|
</view>
|
|
<view class="conter acea-row" id="conter-box">
|
|
<view class="aside-box">
|
|
<scroll-view scroll-y="true" class="aside" :class="{ fixed: scrollTop && conterTop <= headerHeight }" :style="{ top: headerHeight+'px' }">
|
|
<view class='item' :class="{
|
|
on: index==navActive,
|
|
btr: index-1==navActive,
|
|
bbr: index+1==navActive
|
|
}" v-for="(item,index) in categoryErList" :key="index" @click="tapNav(index,item)">
|
|
<view class="inner acea-row row-center-wrapper">
|
|
<text>{{item.cate_name}}</text>
|
|
</view>
|
|
</view>
|
|
<view class="cartIcon-placeholder"></view>
|
|
<view class="safe-area-inset-bottom"></view>
|
|
</scroll-view>
|
|
</view>
|
|
<view class="wrapper">
|
|
<view class="bgcolor-box">
|
|
<view class="bgcolor acea-row" :class="{ fixed: scrollTop && conterTop <= headerHeight }" :style="{ top: headerHeight+'px' }">
|
|
<view class="longTab acea-row row-middle">
|
|
<scroll-view scroll-x="true" style="white-space: nowrap;" scroll-with-animation :scroll-left="tabLeft" show-scrollbar="true">
|
|
<view class="longItem" :style='"width:"+isWidth+"px"' :class="index===tabClick?'click':''" v-for="(item,index) in categoryThreeList" :key="index"
|
|
@click="longClick(index,item)">
|
|
<view class="inner">{{item.cate_name}}</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
<view class="openList">
|
|
<view class="btn" @click="openTap">
|
|
<text class="iconfont icon-ic_downarrow"></text>
|
|
</view>
|
|
<image src="../static/shade.png" class="img"></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!--商品列表 -->
|
|
<goodClass :tempArr="tempArr" :isLogin="isLogin" @gocartduo="goCartDuo" @gocartdan="goCartDan" @ChangeCartNumDan="ChangeCartNumDan" @detail="goDetail"></goodClass>
|
|
<view class='loadingicon acea-row row-center-wrapper' v-if="tempArr.length">
|
|
<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
|
|
</view>
|
|
<emptyPage v-if="page>1 && !tempArr.length" title="暂无商品,去看点别的吧~"></emptyPage>
|
|
<view class="safe-area-inset-bottom"></view>
|
|
</view>
|
|
</view>
|
|
<view class="footer">
|
|
<view class="inner-box" :class="{ open: footerOpen }">
|
|
<view class="inner acea-row row-between row-middle">
|
|
<view class="acea-row row-bottom" style="flex-wrap: nowrap;">
|
|
<BaseMoney :money="totalPrice" symbolSize="32" integerSize="48" decimalSize="32" color="#FFFFFF"></BaseMoney>
|
|
<view style="white-space: nowrap;" class="detail-btn" @click="getCartLists">查看明细<text class="iconfont icon-ic_uparrow"></text></view>
|
|
</view>
|
|
<view class="btn" @click="subOrder">去结算({{cartNums}})</view>
|
|
</view>
|
|
</view>
|
|
<view class="cartIcon" @click="getCartLists">
|
|
<uni-badge :text="cartNums" absolute="rightTop" :offset="[6, 4]" :custom-style="{background: 'var(--view-theme)'}">
|
|
<view class="image-wrap">
|
|
<image src="@/static/img/cart_pic.png" class="image"></image>
|
|
</view>
|
|
</uni-badge>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- </scroll-view> -->
|
|
<!-- #ifdef H5 || MP -->
|
|
<tuiDrawer :visible="collageVisible" :zIndex="970" :maskZIndex="960" mode="bottom" backgroundColor="transparent" @close="onCollageClose">
|
|
<view class="dialog">
|
|
<view class="dialog-head acea-row row-between row-middle">
|
|
<view>发起「一起拼」</view>
|
|
<view class="btn" @click="onCollageClose">
|
|
<text class="iconfont icon-ic_close"></text>
|
|
</view>
|
|
</view>
|
|
<view class="dialog-body">
|
|
<view class="navbar" v-if="deliveryList.length > 1">
|
|
<view class="navbar-bg"></view>
|
|
<view class="active-bg acea-row row-bottom" :class="{'row-right':collageDelivery==1}">
|
|
<image v-if="collageDelivery==1" class="image2" src="../static/navbar-right-2.png"></image>
|
|
<image class="image1" src="../static/navbar-left-1.png"></image>
|
|
<image v-if="collageDelivery==2" class="image2" src="../static/navbar-left-2.png"></image>
|
|
</view>
|
|
<view class="inner acea-row">
|
|
<view v-for="(item, index) in deliveryList" :key="item.key" :class="{ on: collageDelivery == item.key }" class="item acea-row row-center-wrapper"
|
|
@click="collageDeliveryChange(item, index)">
|
|
<text :class="'iconfont '+item.icon"></text>
|
|
{{item.name}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="dialog-content" :class="{
|
|
btl:collageIndex==deliveryList.length-1,
|
|
btr:!collageIndex
|
|
}">
|
|
<scroll-view v-if="collageDelivery == 1 && addressList.length" :scroll-y="addressList.length > 3" :style="{ height: addressList.length > 3 ? '388rpx' : 'auto' }"
|
|
class="address-box">
|
|
<view class="list" id="list">
|
|
<view v-for="(item, index) in addressList" :key="item.id" :class="{ on: item.id == addressId }" class="item acea-row row-middle" @click="onAddressChange(item)">
|
|
<view class="text">
|
|
<view class="info">{{item.province}}{{item.city}}{{item.district}}{{item.street}}{{item.detail}}</view>
|
|
<view class="name">{{item.real_name}} {{item.phone}}</view>
|
|
</view>
|
|
<text class="iconfont icon-ic_complete"></text>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
<navigator v-if="collageDelivery == 1 && !addressList.length" class="link" url="/pages/users/user_address/index?fromType=1" hover-class="none">
|
|
<view class="title acea-row row-between-wrapper">
|
|
<view>添加配送地址</view>
|
|
<text class="iconfont icon-ic_rightarrow"></text>
|
|
</view>
|
|
<view>您还未添加配送地址,先去添加地址再下单吧~</view>
|
|
</navigator>
|
|
<view v-if="collageDelivery == 2" class="store-box acea-row">
|
|
<view class="text">
|
|
<view class="name">{{collageStore.name}}</view>
|
|
<view class="info acea-row">
|
|
<text class="iconfont icon-ic_location51"></text>
|
|
<view class="value">{{collageStore.address}}{{collageStore.detailed_address}}</view>
|
|
</view>
|
|
<view class="info acea-row">
|
|
<text class="iconfont icon-icon_clock"></text>
|
|
<view class="value">营业时间:{{collageStore.day_time}}</view>
|
|
</view>
|
|
</view>
|
|
<view class="map-box">
|
|
<image src="../static/map2.png" class="map"></image>
|
|
<view class="img-box">
|
|
<image :src="collageStore.image" class="img"></image>
|
|
<view class="range">距您{{collageStore.range}}km</view>
|
|
<view class="dot"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="btn-box acea-row row-center-wrapper" v-if="collageDelivery == 1 && addressList.length">
|
|
<navigator url="/pages/users/user_address/index?fromType=1" hover-class="none">
|
|
添加地址
|
|
<text class="iconfont icon-ic_rightarrow"></text>
|
|
</navigator>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="dialog-foot">
|
|
<view class="btn" @click="initCollage">发起拼单</view>
|
|
</view>
|
|
</view>
|
|
</tuiDrawer>
|
|
<!-- #endif -->
|
|
<!-- 分类购物车下拉列表 -->
|
|
<cartList :cartNums='cartNums' :cartData="cartData" @closeList="closeList" @ChangeCartNumDan="ChangeCartList" @ChangeSubDel="ChangeSubDel" @ChangeOneDel="ChangeOneDel"></cartList>
|
|
<!-- 产品属性组件 -->
|
|
<productWindow :attr="attr" :isShow='1' :iSplus='1' :iScart='1' :type="2" @myevent="onMyEvent" @ChangeAttr="ChangeAttr" @ChangeCartNum="ChangeCartNumDuo" @attrVal="attrVal"
|
|
@iptCartNum="iptCartNum" @goCat="goCatNum" :is_vip="is_vip" id='product-window'></productWindow>
|
|
<!-- 客服弹窗 -->
|
|
<Kefu ref="kefu" @closeKefu="closeKefu" :customerList="customerList" :customerType="customerType"></Kefu>
|
|
<homeList :currentPage="currentPage" :navH="getHeight.barTop+40" :openNavList="diyProduct.navList"></homeList>
|
|
<tuiDrawer :visible="!iSlong" mode="top" backgroundColor="transparent" @close="closeTap">
|
|
<view class="downTab acea-row row-column">
|
|
<!-- #ifdef MP || APP -->
|
|
<view :style="{height: getHeight.barTop+'px'}"></view>
|
|
<view :style="{height: getHeight.barHeight+'px'}"></view>
|
|
<!-- #endif -->
|
|
<view class="title">{{categoryTitle}}</view>
|
|
<scroll-view scroll-y="true" class="scroll-view">
|
|
<view class="children">
|
|
<view class="acea-row row-middle">
|
|
<view class="item line1" :class="index===tabClick?'click':''" v-for="(item,index) in categoryThreeList" :key="index" @click="longClick(index,item)">
|
|
<view class="inner">{{item.cate_name}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
<view class="btn acea-row row-center-wrapper" @click="closeTap">
|
|
点击收起<text class="iconfont icon-ic_uparrow"></text>
|
|
</view>
|
|
</view>
|
|
</tuiDrawer>
|
|
<tuiDrawer :visible="oneVisible" mode="top" backgroundColor="transparent" @close="navOneClose">
|
|
<view class="category-dialog acea-row row-column">
|
|
<!-- #ifdef MP || APP -->
|
|
<view :style="{height: getHeight.barTop+'px'}"></view>
|
|
<view :style="{height: getHeight.barHeight+'px'}"></view>
|
|
<!-- #endif -->
|
|
<scroll-view scroll-y="true" class="scroll-view">
|
|
<view class="acea-row" style="flex-wrap: wrap;">
|
|
<view class="item" :class="{ on: navOneActive == index }" v-for="(item,index) in categoryList" :key="item.id" @click="tapNavOne(item,index)">
|
|
<view class="img-box">
|
|
<image :src="item.pic" class="img"></image>
|
|
</view>
|
|
<view class="title">{{item.cate_name}}</view>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
<view class="btn acea-row row-center-wrapper" @click="navOneClose">
|
|
点击收起<text class="iconfont icon-ic_uparrow"></text>
|
|
</view>
|
|
</view>
|
|
</tuiDrawer>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
vcartList,
|
|
getCartCounts,
|
|
cartDel
|
|
} from '@/api/order.js';
|
|
import {
|
|
getCategoryList,
|
|
getAttr,
|
|
postCartNum,
|
|
initCollage,
|
|
hasCollage,
|
|
isWithin,
|
|
} from '@/api/store.js';
|
|
import {
|
|
getProducts,
|
|
getCustomerList,
|
|
getStoreCategory,
|
|
getStoreBrand
|
|
} from '@/api/new_store.js';
|
|
import productWindow from '@/components/productWindow/index';
|
|
import goodClass from '@/components/goodClass';
|
|
import cartList from '@/components/cartList';
|
|
import {
|
|
getAddressList,
|
|
} from '@/api/user.js';
|
|
import Kefu from '@/components/kefu/index.vue';
|
|
import homeList from '@/components/homeList/index.vue';
|
|
import tuiDrawer from '@/components/tui-drawer/tui-drawer.vue';
|
|
import emptyPage from '@/components/emptyPage.vue';
|
|
import {
|
|
mapState,
|
|
mapGetters
|
|
} from 'vuex';
|
|
import {
|
|
goShopDetail
|
|
} from '@/libs/order.js';
|
|
import {
|
|
toLogin
|
|
} from '@/libs/login.js';
|
|
import {
|
|
HTTP_REQUEST_URL
|
|
} from '@/config/app';
|
|
export default {
|
|
computed: {
|
|
...mapState({
|
|
cartNum: state => state.indexData.cartNum
|
|
}),
|
|
...mapGetters(['isLogin', 'uid', 'cartNum', 'diyCategory', 'diyProduct']),
|
|
level() {
|
|
return this.diyCategory.level
|
|
}
|
|
},
|
|
components: {
|
|
productWindow,
|
|
goodClass,
|
|
cartList,
|
|
Kefu,
|
|
homeList,
|
|
tuiDrawer,
|
|
emptyPage,
|
|
},
|
|
props: {
|
|
info: {
|
|
type: Object,
|
|
default: {}
|
|
},
|
|
customerType: {
|
|
type: Number,
|
|
default: 1
|
|
},
|
|
},
|
|
provide: {
|
|
parent: {}
|
|
},
|
|
data() {
|
|
return {
|
|
getHeight: this.$util.getWXStatusHeight(),
|
|
imgHost: HTTP_REQUEST_URL,
|
|
deliveryList: [{
|
|
name: '自提',
|
|
key: 2,
|
|
icon: 'icon-icon_shop1'
|
|
},
|
|
{
|
|
name: '配送',
|
|
key: 1,
|
|
icon: 'icon-icon_electromobile'
|
|
},
|
|
],
|
|
switchNum: 1,
|
|
categoryList: [],
|
|
navOneActive: 0,
|
|
navActive: 0,
|
|
categoryTitle: '',
|
|
categoryErList: [],
|
|
tabLeft: 0,
|
|
isWidth: 0, //每个导航栏占位
|
|
tabClick: 0, //导航栏被点击
|
|
iSlong: true,
|
|
tempArr: [],
|
|
loading: false,
|
|
loadend: false,
|
|
loadTitle: '加载更多',
|
|
page: 1,
|
|
limit: 10,
|
|
cid: 0, //一级分类
|
|
sid: 0, //二级分类
|
|
tid: 0, //三级分类
|
|
delivery_type: 3, // 配送方式
|
|
isAuto: false, //没有授权的不会自动授权
|
|
attr: {
|
|
cartAttr: false,
|
|
productAttr: [],
|
|
productSelect: {},
|
|
deliveryType: [],
|
|
},
|
|
productValue: [],
|
|
attrValue: '', //已选属性
|
|
storeName: '', //多属性产品名称
|
|
id: 0,
|
|
cartData: {
|
|
cartList: [],
|
|
iScart: false
|
|
},
|
|
totalPrice: 0.00,
|
|
lengthCart: 0,
|
|
is_vip: 0, //是否是会员
|
|
cart_num: 0,
|
|
storeInfo: {},
|
|
// #ifdef H5 || MP
|
|
collageVisible: false,
|
|
collageDelivery: 2,
|
|
collageIndex: 0,
|
|
collageStore: this.info,
|
|
collageAddress: {}, // 选择的配送地址
|
|
// #endif
|
|
customerList: [], // 客服数据
|
|
footerOpen: false,
|
|
categoryTwoList: [],
|
|
categoryThreeList: [],
|
|
currentPage: false,
|
|
addressList: [], // 地址列表
|
|
oneVisible: false,
|
|
headerHeight: 0,
|
|
conterTop: 0,
|
|
scrollTop: 0, //已滚动的距离
|
|
addressId: 0, // 配送地址id
|
|
cartNums: 0, //门店购物车总数量;
|
|
listH: 0
|
|
}
|
|
},
|
|
watch: {
|
|
// #ifdef H5 || MP
|
|
collageDelivery: {
|
|
handler(val) {
|
|
this.collageStore = this.info;
|
|
},
|
|
immediate: true
|
|
}
|
|
// #endif
|
|
},
|
|
mounted() {
|
|
let that = this;
|
|
let default_delivery = this.info.default_delivery;
|
|
for (let i = 0; i < this.deliveryList.length; i++) {
|
|
if (this.deliveryList[i].key == 2 && (!this.info.store_self_mention || !this.info.is_store)) {
|
|
this.deliveryList.splice(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
if (this.deliveryList.length == 1) {
|
|
default_delivery = this.deliveryList[0].key;
|
|
}
|
|
this.collageDelivery = default_delivery;
|
|
// 获取设备宽度
|
|
uni.getSystemInfo({
|
|
success(e) {
|
|
that.isWidth = e.windowWidth / 5
|
|
that.windowHeight = e.windowHeight
|
|
}
|
|
});
|
|
// 监听到支付订单页,返回时的数据更新;
|
|
uni.$off('newCartNum');
|
|
uni.$on('newCartNum', (data) => {
|
|
if (data.length) {
|
|
this.tempArr.forEach((item) => {
|
|
data.forEach(j => {
|
|
if (item.id == j.product_id) {
|
|
item.cart_num = 0
|
|
}
|
|
})
|
|
})
|
|
this.cartNums = 0;
|
|
this.totalPrice = 0;
|
|
}
|
|
})
|
|
let view = uni.createSelectorQuery().in(this).select("#conter-box");
|
|
// 页面滚动
|
|
uni.$on('onPageScroll', ({
|
|
scrollTop
|
|
}) => {
|
|
this.scrollTop = scrollTop;
|
|
this.footerOpen = false;
|
|
this.currentPage = false;
|
|
view
|
|
.boundingClientRect((data) => {
|
|
this.conterTop = data.top;
|
|
})
|
|
.exec();
|
|
});
|
|
// 页面滚动到底部
|
|
uni.$on('onReachBottom', () => {
|
|
this.getProducts();
|
|
});
|
|
uni.$on('activeAddress', () => {
|
|
this.getAddressList();
|
|
});
|
|
this.switchNumFun(default_delivery);
|
|
that.getAllCategory();
|
|
that.getCartNum();
|
|
that.getAddressList();
|
|
},
|
|
methods: {
|
|
showMaoLocation() {
|
|
let data = {
|
|
latitude: Number(this.info.latitude),
|
|
longitude: Number(this.info.longitude),
|
|
name: this.info.name,
|
|
address: `${this.info.address}${this.info.detailed_address}`,
|
|
};
|
|
// #ifdef H5
|
|
if (this.$wechat.isWeixin()) {
|
|
data.scale = 13;
|
|
return this.$wechat.seeLocation(data);
|
|
}
|
|
// #endif
|
|
uni.openLocation(data);
|
|
},
|
|
// #ifdef H5 || MP
|
|
// 点击拼单
|
|
onCollage() {
|
|
if (!this.isLogin) {
|
|
return toLogin();
|
|
}
|
|
hasCollage().then(res => {
|
|
const collageId = res.data.collageId;
|
|
if (collageId) {
|
|
uni.navigateTo({
|
|
url: `/pages/store/group_buy/index?collage_id=${collageId}`
|
|
});
|
|
} else {
|
|
this.collageVisible = true;
|
|
}
|
|
});
|
|
},
|
|
// 发起拼单
|
|
initCollage() {
|
|
let data = {
|
|
store_id: this.collageStore.id,
|
|
address_id: this.addressId || 0,
|
|
shipping_type: this.collageDelivery == 1 ? 3 : 2
|
|
};
|
|
initCollage(data).then(res => {
|
|
this.collageVisible = false;
|
|
uni.navigateTo({
|
|
url: `/pages/store/group_buy/index?collage_id=${res.data.collageId}`
|
|
});
|
|
}).catch(err => {
|
|
this.$util.Tips({
|
|
title: err
|
|
});
|
|
});
|
|
},
|
|
// 选择配送地址
|
|
onAddressChange(data) {
|
|
isWithin({
|
|
store_id: this.collageStore.id,
|
|
address_id: data.id
|
|
}).then(() => {
|
|
this.addressId = data.id;
|
|
}).catch(() => {
|
|
this.$util.Tips({
|
|
title: '您选择的地址超出门店配送范围,请重新选择'
|
|
});
|
|
});
|
|
},
|
|
onCollageClose() {
|
|
this.collageVisible = false;
|
|
},
|
|
// 选择自提、配送
|
|
collageDeliveryChange(item, index) {
|
|
if (item.key != 2 || this.info.is_store) {
|
|
this.collageDelivery = item.key;
|
|
this.collageIndex = index;
|
|
}
|
|
},
|
|
// #endif
|
|
getNoCart() {
|
|
if (this.cartNum <= 0) {
|
|
this.tempArr.forEach((item) => {
|
|
item.cart_num = 0
|
|
})
|
|
this.totalPrice = 0;
|
|
}
|
|
},
|
|
updateFun(e) {
|
|
if (e.cartNum) {
|
|
this.tempArr.forEach((item) => {
|
|
if (item.id == e.id) {
|
|
item.cart_num = e.cartNum
|
|
}
|
|
})
|
|
this.getCartNum()
|
|
}
|
|
},
|
|
// 商品列表
|
|
getProducts() {
|
|
let that = this;
|
|
if (that.loadend) return;
|
|
if (that.loading) return;
|
|
that.loading = true;
|
|
getProducts({
|
|
page: that.page,
|
|
limit: that.limit,
|
|
type: 1,
|
|
cid: that.cid,
|
|
sid: that.sid,
|
|
tid: that.tid,
|
|
store_id: that.info.id,
|
|
delivery_type: that.delivery_type,
|
|
}).then(res => {
|
|
let list = res.data,
|
|
loadend = list.length < that.limit;
|
|
that.tempArr = that.$util.SplitArray(list, that.tempArr);
|
|
that.$set(that, 'tempArr', that.tempArr);
|
|
that.loading = false;
|
|
that.loadend = loadend;
|
|
that.loadTitle = loadend ? "没有更多内容啦~" : "加载更多";
|
|
that.page = that.page + 1;
|
|
this.$nextTick(() => {
|
|
const query = uni.createSelectorQuery().in(this);
|
|
query
|
|
.select("#input-box")
|
|
.boundingClientRect((data) => {
|
|
this.headerHeight = data.height;
|
|
})
|
|
.exec();
|
|
})
|
|
}).catch(err => {
|
|
that.loading = false;
|
|
that.loadTitle = '加载更多'
|
|
});
|
|
},
|
|
// 切换自提方式
|
|
swithFn(num) {
|
|
this.switchNumFun(num);
|
|
this.page = 1;
|
|
this.loadend = false;
|
|
this.tempArr = []
|
|
this.getProducts()
|
|
},
|
|
switchNumFun(num) {
|
|
switch (num) {
|
|
case 1:
|
|
this.switchNum = 1
|
|
this.delivery_type = '3'
|
|
break;
|
|
case 2:
|
|
this.switchNum = 2
|
|
this.delivery_type = '2'
|
|
break;
|
|
}
|
|
},
|
|
// 跳转到门店列表
|
|
goMap() {
|
|
uni.navigateTo({
|
|
// #ifdef APP
|
|
url: `/pages/store/mapnvue/index?province=${this.info.province}&city=${this.info.city}&area=${this.info.area}`
|
|
// #endif
|
|
// #ifndef APP
|
|
url: `/pages/store/map/index?province=${this.info.province}&city=${this.info.city}&area=${this.info.area}`
|
|
// #endif
|
|
})
|
|
},
|
|
// 生成订单;
|
|
subOrder: function() {
|
|
let that = this,
|
|
list = that.cartData.cartList,
|
|
ids = [];
|
|
if (list.length) {
|
|
list.forEach(item => {
|
|
if (item.attrStatus && item.status) {
|
|
ids.push(item.id)
|
|
}
|
|
});
|
|
uni.navigateTo({
|
|
url: '/pages/goods/order_confirm/index?is_store=1&cartId=' + ids.join(',') +
|
|
'&delivery_type=' + that.delivery_type + '&store_id=' + that.info.id
|
|
});
|
|
that.cartData.iScart = false;
|
|
} else {
|
|
return that.$util.Tips({
|
|
title: '请选择产品'
|
|
});
|
|
}
|
|
},
|
|
// 计算总价;
|
|
getTotalPrice: function() {
|
|
let that = this,
|
|
list = that.cartData.cartList,
|
|
totalPrice = 0.00;
|
|
list.forEach(item => {
|
|
if (item.attrStatus && item.status) {
|
|
totalPrice = that.$util.$h.Add(totalPrice, that.$util.$h.Mul(item.cart_num, item
|
|
.truePrice));
|
|
}
|
|
})
|
|
that.$set(that, 'totalPrice', totalPrice);
|
|
},
|
|
ChangeSubDel: function(event) {
|
|
let that = this,
|
|
list = that.cartData.cartList,
|
|
ids = [],
|
|
storeId = uni.getStorageSync('user_store_id');
|
|
list.forEach(item => {
|
|
ids.push(item.id)
|
|
});
|
|
cartDel(ids.join(","), storeId).then(res => {
|
|
that.$set(that.cartData, 'cartList', []);
|
|
that.cartData.iScart = false;
|
|
that.totalPrice = 0.00;
|
|
that.page = 1;
|
|
that.loadend = false;
|
|
that.tempArr = [];
|
|
that.getProducts();
|
|
that.getCartNum();
|
|
})
|
|
},
|
|
ChangeOneDel: function(id, index) {
|
|
let that = this,
|
|
list = that.cartData.cartList,
|
|
storeId = uni.getStorageSync('user_store_id');
|
|
cartDel(id.toString(), storeId).then(res => {
|
|
list.splice(index, 1);
|
|
if (!list.length) {
|
|
that.cartData.iScart = false;
|
|
that.page = 1;
|
|
that.loadend = false;
|
|
that.tempArr = [];
|
|
that.getProducts();
|
|
};
|
|
that.getCartNum();
|
|
})
|
|
},
|
|
getCartLists() {
|
|
if (this.footerOpen) {
|
|
this.getCartList();
|
|
} else {
|
|
this.footerOpen = true;
|
|
}
|
|
},
|
|
getCartList(iSshow) {
|
|
let that = this;
|
|
let data = {
|
|
store_id: that.info.id
|
|
};
|
|
vcartList(data).then(res => {
|
|
that.$set(that.cartData, 'cartList', res.data);
|
|
if (res.data.length) {
|
|
that.$set(that.cartData, 'iScart', iSshow ? false : !that.cartData.iScart);
|
|
} else {
|
|
that.$set(that.cartData, 'iScart', false);
|
|
}
|
|
// that.getTotalPrice();
|
|
})
|
|
},
|
|
closeList(e) {
|
|
this.$set(this.cartData, 'iScart', e);
|
|
},
|
|
getCartNum: function() {
|
|
let that = this;
|
|
getCartCounts(0, that.info.id).then(res => {
|
|
this.cartNums = res.data.count;
|
|
this.totalPrice = res.data.sum_price;
|
|
});
|
|
},
|
|
onMyEvent: function() {
|
|
this.$set(this.attr, 'cartAttr', false);
|
|
},
|
|
/**
|
|
* 默认选中属性
|
|
*
|
|
*/
|
|
DefaultSelect: function() {
|
|
let productAttr = this.attr.productAttr;
|
|
let value = [];
|
|
for (let key in this.productValue) {
|
|
if (this.productValue[key].stock > 0) {
|
|
value = this.attr.productAttr.length ? key.split(",") : [];
|
|
break;
|
|
}
|
|
}
|
|
for (let i = 0; i < productAttr.length; i++) {
|
|
this.$set(productAttr[i], "index", value[i]);
|
|
}
|
|
//sort();排序函数:数字-英文-汉字;
|
|
let productSelect = this.productValue[value.join(",")];
|
|
if (productSelect && productAttr.length) {
|
|
this.$set(
|
|
this.attr.productSelect,
|
|
"store_name",
|
|
this.storeName
|
|
);
|
|
this.$set(this.attr.productSelect, "image", productSelect.image);
|
|
this.$set(this.attr.productSelect, "price", productSelect.price);
|
|
this.$set(this.attr.productSelect, "stock", productSelect.stock);
|
|
this.$set(this.attr.productSelect, "unique", productSelect.unique);
|
|
this.$set(this.attr.productSelect, "cart_num", 1);
|
|
this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
|
|
this.$set(this, "attrValue", value.join(","));
|
|
} else if (!productSelect && productAttr.length) {
|
|
this.$set(
|
|
this.attr.productSelect,
|
|
"store_name",
|
|
this.storeName
|
|
);
|
|
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
|
|
this.$set(this.attr.productSelect, "price", this.storeInfo.price);
|
|
this.$set(this.attr.productSelect, "stock", 0);
|
|
this.$set(this.attr.productSelect, "unique", "");
|
|
this.$set(this.attr.productSelect, "cart_num", 0);
|
|
this.$set(this, "attrValue", "");
|
|
this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
|
|
} else if (!productSelect && !productAttr.length) {
|
|
this.$set(
|
|
this.attr.productSelect,
|
|
"store_name",
|
|
this.storeName
|
|
);
|
|
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
|
|
this.$set(this.attr.productSelect, "price", this.storeInfo.price);
|
|
this.$set(this.attr.productSelect, "stock", this.storeInfo.stock);
|
|
this.$set(
|
|
this.attr.productSelect,
|
|
"unique",
|
|
this.storeInfo.unique || ""
|
|
);
|
|
this.$set(this.attr.productSelect, "cart_num", 1);
|
|
this.$set(this, "attrValue", "");
|
|
this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
|
|
}
|
|
},
|
|
/**
|
|
* 属性变动赋值
|
|
*
|
|
*/
|
|
ChangeAttr: function(res) {
|
|
let productSelect = this.productValue[res];
|
|
if (productSelect && productSelect.stock > 0) {
|
|
this.$set(this.attr.productSelect, "image", productSelect.image);
|
|
this.$set(this.attr.productSelect, "price", productSelect.price);
|
|
this.$set(this.attr.productSelect, "stock", productSelect.stock);
|
|
this.$set(this.attr.productSelect, "unique", productSelect.unique);
|
|
this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
|
|
this.$set(this.attr.productSelect, "cart_num", 1);
|
|
this.$set(this, "attrValue", res);
|
|
} else if (productSelect && productSelect.stock == 0) {
|
|
this.$set(this.attr.productSelect, "image", productSelect.image);
|
|
this.$set(this.attr.productSelect, "price", productSelect.price);
|
|
this.$set(this.attr.productSelect, "stock", 0);
|
|
this.$set(this.attr.productSelect, "unique", "");
|
|
this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
|
|
this.$set(this.attr.productSelect, "cart_num", 0);
|
|
this.$set(this, "attrValue", "");
|
|
} else {
|
|
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
|
|
this.$set(this.attr.productSelect, "price", this.storeInfo.price);
|
|
this.$set(this.attr.productSelect, "stock", 0);
|
|
this.$set(this.attr.productSelect, "unique", "");
|
|
this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
|
|
this.$set(this.attr.productSelect, "cart_num", 0);
|
|
this.$set(this, "attrValue", "");
|
|
}
|
|
},
|
|
attrVal(val) {
|
|
this.$set(this.attr.productAttr[val.indexw], 'index', this.attr.productAttr[val.indexw].attr_values[val
|
|
.indexn]);
|
|
},
|
|
/**
|
|
* 购物车手动填写
|
|
*
|
|
*/
|
|
iptCartNum: function(e) {
|
|
this.$set(this.attr.productSelect, 'cart_num', e);
|
|
},
|
|
// 点击默认单属性购物车
|
|
goCartDan(item, index) {
|
|
if (!this.isLogin) {
|
|
this.getIsLogin();
|
|
} else {
|
|
this.tempArr[index].cart_num = 1;
|
|
this.$store.commit('indexData/setCartNum', parseInt(this.cartNum) + 1)
|
|
this.$set(this, 'tempArr', this.tempArr);
|
|
this.goCat(0, item.id, 1);
|
|
}
|
|
},
|
|
// 改变单属性购物车
|
|
ChangeCartNumDan(changeValue, index, item) {
|
|
let num = this.tempArr[index];
|
|
let stock = this.tempArr[index].stock;
|
|
this.ChangeCartNum(changeValue, num, stock, 0, item.id);
|
|
},
|
|
// 改变多属性购物车
|
|
ChangeCartNumDuo(changeValue) {
|
|
//获取当前变动属性
|
|
let productSelect = this.productValue[this.attrValue];
|
|
//如果没有属性,赋值给商品默认库存
|
|
if (productSelect === undefined && !this.attr.productAttr.length)
|
|
productSelect = this.attr.productSelect;
|
|
//无属性值即库存为0;不存在加减;
|
|
if (productSelect === undefined) return;
|
|
let stock = productSelect.stock || 0;
|
|
let num = this.attr.productSelect;
|
|
this.ChangeCartNum(changeValue, num, stock, 1);
|
|
},
|
|
// 已经加入购物车时的购物加减;
|
|
ChangeCartList(changeValue, index) {
|
|
let list = this.cartData.cartList;
|
|
let num = list[index];
|
|
let stock = list[index].trueStock;
|
|
this.ChangeCartNum(changeValue, num, stock, 0, num.product_id, index, 1);
|
|
if (!list.length) {
|
|
this.cartData.iScart = false;
|
|
this.page = 1;
|
|
this.loadend = false;
|
|
this.tempArr = [];
|
|
this.getProducts();
|
|
}
|
|
},
|
|
// 购物车加减计算函数
|
|
ChangeCartNum(changeValue, num, stock, isDuo, id, index, cart) {
|
|
let cartNum = this.cartNum;
|
|
if (changeValue) {
|
|
num.cart_num++;
|
|
cartNum = isDuo ? this.cartNum : parseInt(cartNum) + 1;
|
|
if (num.cart_num > stock) {
|
|
if (isDuo) {
|
|
this.$set(this.attr.productSelect, "cart_num", stock ? stock : 1);
|
|
this.$set(this, "cart_num", stock ? stock : 1);
|
|
} else {
|
|
cartNum = this.cartNum + stock;
|
|
num.cart_num = stock ? stock : 0;
|
|
this.$set(this, 'tempArr', this.tempArr);
|
|
this.$set(this.cartData, 'cartList', this.cartData.cartList);
|
|
}
|
|
return this.$util.Tips({
|
|
title: "该产品没有更多库存了"
|
|
});
|
|
} else {
|
|
if (!isDuo) {
|
|
if (cart) {
|
|
this.goCat(0, id, 1, 1, num.product_attr_unique);
|
|
// this.getTotalPrice();
|
|
this.tempArr.forEach((item) => {
|
|
if (item.id == id) {
|
|
item.cart_num++;
|
|
}
|
|
})
|
|
} else {
|
|
this.goCat(0, id, 1);
|
|
}
|
|
} else {
|
|
this.tempArr.forEach((item) => {
|
|
if (item.id == id) {
|
|
item.cart_num++;
|
|
}
|
|
})
|
|
}
|
|
}
|
|
} else {
|
|
num.cart_num--;
|
|
cartNum = isDuo ? this.cartNum : parseInt(cartNum) - 1;
|
|
if (num.cart_num == 0) {
|
|
this.cartData.cartList.splice(index, 1);
|
|
if (isDuo) {
|
|
this.$set(this.attr.productSelect, "cart_num", 1);
|
|
this.$set(this, "cart_num", 1);
|
|
}
|
|
}
|
|
if (num.cart_num < 0) {
|
|
if (isDuo) {
|
|
this.$set(this.attr.productSelect, "cart_num", 1);
|
|
this.$set(this, "cart_num", 1);
|
|
} else {
|
|
cartNum = this.cartNum
|
|
num.cart_num = 0;
|
|
this.$set(this, 'tempArr', this.tempArr);
|
|
this.$set(this.cartData, 'cartList', this.cartData.cartList);
|
|
}
|
|
} else {
|
|
if (!isDuo) {
|
|
if (cart) {
|
|
this.goCat(0, id, 0, 1, num.product_attr_unique);
|
|
// this.getTotalPrice();
|
|
this.tempArr.forEach((item) => {
|
|
if (item.id == id) {
|
|
item.cart_num--;
|
|
}
|
|
})
|
|
} else {
|
|
this.goCat(0, id, 0);
|
|
}
|
|
} else {
|
|
this.tempArr.forEach((item) => {
|
|
if (item.id == id) {
|
|
item.cart_num--;
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
this.$store.commit('indexData/setCartNum', cartNum)
|
|
},
|
|
// 多规格加入购物车;
|
|
goCatNum() {
|
|
this.goCat(1, this.id, 1);
|
|
},
|
|
/*
|
|
* 加入购物车
|
|
*/
|
|
goCat: function(duo, id, type, cart, unique) {
|
|
let that = this;
|
|
if (duo) {
|
|
let productSelect = that.productValue[this.attrValue];
|
|
//如果有属性,没有选择,提示用户选择
|
|
if (
|
|
that.attr.productAttr.length &&
|
|
productSelect === undefined
|
|
)
|
|
return that.$util.Tips({
|
|
title: "产品库存不足,请选择其它属性"
|
|
});
|
|
}
|
|
let q = {
|
|
product_id: id,
|
|
num: duo ? that.attr.productSelect.cart_num : 1,
|
|
type: type,
|
|
unique: duo ? that.attr.productSelect.unique : cart ? unique : ""
|
|
};
|
|
postCartNum(q)
|
|
.then(function(res) {
|
|
if (duo) {
|
|
that.$store.commit('indexData/setCartNum', parseInt(that.cartNum) + that.attr.productSelect.cart_num)
|
|
that.attr.cartAttr = false;
|
|
that.$util.Tips({
|
|
title: "添加购物车成功"
|
|
});
|
|
// that.page = 1;
|
|
// that.loadend = false;
|
|
that.tempArr.forEach((item, index) => {
|
|
if (item.id == that.id) {
|
|
let arrtStock = that.attr.productSelect.stock
|
|
let objNum = parseInt(item.cart_num) + parseInt(that.attr.productSelect
|
|
.cart_num);
|
|
item.cart_num = objNum > arrtStock ? arrtStock : objNum
|
|
}
|
|
})
|
|
// that.productslist();
|
|
}
|
|
that.getCartNum();
|
|
if (!cart) {
|
|
that.getCartList(1);
|
|
}
|
|
})
|
|
.catch(err => {
|
|
return that.$util.Tips({
|
|
title: err
|
|
});
|
|
});
|
|
},
|
|
goCartDuo(item) {
|
|
if (!this.isLogin) {
|
|
this.getIsLogin();
|
|
} else {
|
|
// uni.showLoading({
|
|
// title: '加载中'
|
|
// });
|
|
this.storeName = item.store_name;
|
|
this.getAttrs(item.id);
|
|
this.$set(this, 'id', item.id);
|
|
this.$set(this.attr, 'cartAttr', true);
|
|
}
|
|
},
|
|
getIsLogin() {
|
|
toLogin();
|
|
},
|
|
// 商品详情接口;
|
|
getAttrs(id) {
|
|
let that = this;
|
|
getAttr(id, 0).then(res => {
|
|
// uni.hideLoading();
|
|
that.$set(that.attr, 'productAttr', res.data.productAttr);
|
|
that.$set(that, 'productValue', res.data.productValue);
|
|
that.$set(that, 'is_vip', res.data.storeInfo.is_vip);
|
|
that.$set(that, 'storeInfo', res.data.storeInfo);
|
|
that.DefaultSelect();
|
|
})
|
|
},
|
|
// 去详情页
|
|
goDetail(item) {
|
|
goShopDetail(item, this.uid).catch(res => {
|
|
uni.navigateTo({
|
|
url: `/pages/goods_details/index?id=${item.id}&fromType=1`
|
|
});
|
|
});
|
|
},
|
|
openTap() {
|
|
this.iSlong = false
|
|
},
|
|
closeTap() {
|
|
this.iSlong = true
|
|
},
|
|
// 分类数据
|
|
getAllCategory: function() {
|
|
let that = this;
|
|
getStoreCategory().then(res => {
|
|
let data = res.data;
|
|
that.categoryList = data;
|
|
if (that.level == 2) {
|
|
that.categoryErList = that.categoryList;
|
|
} else {
|
|
that.categoryErList = that.categoryList[0].children ? that.categoryList[0].children : [];
|
|
}
|
|
that.categoryThreeList = that.categoryErList[0].children ? that.categoryErList[0]
|
|
.children : [];
|
|
if (this.categoryThreeList.length) {
|
|
this.categoryThreeList.unshift({
|
|
cate_name: '全部商品',
|
|
id: 0
|
|
})
|
|
}
|
|
that.categoryTitle = that.categoryList[0].cate_name;
|
|
that.cid = that.categoryList[0].id;
|
|
if (that.level == 2) {
|
|
that.sid = that.categoryThreeList[0].id;
|
|
} else {
|
|
that.sid = that.categoryErList[0].id;
|
|
}
|
|
// that.switchNumFun(that.info.default_delivery);
|
|
that.getProducts();
|
|
})
|
|
},
|
|
tapNav(index, item) {
|
|
this.navActive = index;
|
|
this.tabClick = 0;
|
|
this.categoryThreeList = item.children || [];
|
|
if (!this.categoryThreeList[0] || this.categoryThreeList[0].id) {
|
|
this.categoryThreeList.unshift({
|
|
cate_name: '全部商品',
|
|
id: 0
|
|
});
|
|
}
|
|
if (this.level == 2) {
|
|
this.cid = item.id;
|
|
this.sid = 0;
|
|
} else {
|
|
this.sid = item.id;
|
|
this.tid = 0;
|
|
}
|
|
this.page = 1;
|
|
this.loadend = false;
|
|
this.tempArr = [];
|
|
this.getProducts();
|
|
},
|
|
// 导航栏点击
|
|
longClick(index, item) {
|
|
if (this.categoryThreeList.length > 3) {
|
|
this.tabLeft = (index - 1) * (this.isWidth + 6) //设置下划线位置
|
|
};
|
|
this.tabClick = index; //设置导航点击了哪一个
|
|
// this.iSlong = true;
|
|
if (this.level == 2) {
|
|
this.sid = item.id;
|
|
} else {
|
|
this.tid = item.id;
|
|
}
|
|
this.page = 1;
|
|
this.loadend = false;
|
|
this.tempArr = [];
|
|
this.getProducts();
|
|
},
|
|
// 打开客服
|
|
goKefu() {
|
|
this.getCustomerList()
|
|
this.$refs.kefu.show = true
|
|
},
|
|
// 获取客服列表数据
|
|
getCustomerList() {
|
|
getCustomerList(this.info.id).then(res => {
|
|
this.customerList = res.data
|
|
})
|
|
},
|
|
// 关闭客服
|
|
closeKefu() {
|
|
this.$refs.kefu.show = false
|
|
},
|
|
tapNavOne(item, index) {
|
|
this.navOneActive = index;
|
|
this.navActive = 0;
|
|
this.tabClick = 0;
|
|
this.categoryErList = item.children;
|
|
this.categoryThreeList = this.categoryErList[0].children || [];
|
|
if (!this.categoryThreeList[0] || this.categoryThreeList[0].id) {
|
|
this.categoryThreeList.unshift({
|
|
cate_name: '全部商品',
|
|
id: 0
|
|
});
|
|
}
|
|
this.categoryTitle = item.cate_name;
|
|
this.cid = item.id;
|
|
this.sid = item.children[0] ? item.children[0].id : 0;
|
|
this.tid = 0;
|
|
this.page = 1;
|
|
this.loadend = false;
|
|
this.tempArr = [];
|
|
this.getProducts();
|
|
},
|
|
moreNav() {
|
|
this.currentPage = !this.currentPage;
|
|
},
|
|
goAddressPages() {
|
|
uni.navigateTo({
|
|
url: '/pages/users/user_address_list/index?isCollage=1&store_id=' + this.info.id
|
|
});
|
|
},
|
|
navOneOpen() {
|
|
this.oneVisible = true;
|
|
},
|
|
navOneClose() {
|
|
this.oneVisible = false;
|
|
},
|
|
getAddressList() {
|
|
getAddressList({
|
|
page: 1,
|
|
limit: 100
|
|
}).then(res => {
|
|
let addressList = res.data;
|
|
this.addressList = addressList;
|
|
})
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
/deep/.uni-badge {
|
|
z-index: 100;
|
|
}
|
|
|
|
.cartIcon-placeholder {
|
|
height: 132rpx;
|
|
}
|
|
|
|
.safe-area-inset-bottom {
|
|
height: constant(safe-area-inset-bottom);
|
|
height: env(safe-area-inset-bottom);
|
|
}
|
|
|
|
.input-wrapper {
|
|
position: relative;
|
|
height: 78rpx;
|
|
padding: 0 24rpx;
|
|
|
|
.input {
|
|
flex: 1;
|
|
min-width: 0;
|
|
height: 58rpx;
|
|
padding-left: 24rpx;
|
|
border-radius: 29rpx;
|
|
background: rgba(255, 255, 255, 0.2);
|
|
font-size: 24rpx;
|
|
color: #FFFFFF;
|
|
|
|
.iconfont {
|
|
margin-right: 16rpx;
|
|
font-size: 32rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
/deep/.product-window.joinCart {
|
|
z-index: 999;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 0;
|
|
height: 0;
|
|
color: transparent;
|
|
display: none
|
|
}
|
|
|
|
.page {
|
|
position: relative;
|
|
flex-wrap: nowrap;
|
|
min-height: 100vh;
|
|
|
|
/deep/.mask {
|
|
z-index: 99;
|
|
}
|
|
|
|
/deep/.attrProduct {
|
|
.mask {
|
|
z-index: 100;
|
|
}
|
|
}
|
|
|
|
.header {
|
|
/* #ifdef H5 */
|
|
padding: 0 20rpx 20rpx;
|
|
/* #endif */
|
|
|
|
.pageIndex {
|
|
width: 68rpx;
|
|
height: 68rpx;
|
|
border-radius: 50%;
|
|
background-color: #F7F7F7;
|
|
|
|
.iconfont {
|
|
color: #666666;
|
|
font-size: 30rpx;
|
|
}
|
|
}
|
|
|
|
.search {
|
|
flex: 1;
|
|
height: 58rpx;
|
|
border-radius: 29rpx;
|
|
background: rgba(255, 255, 255, 0.2);
|
|
font-size: 24rpx;
|
|
padding: 0 24rpx;
|
|
color: #FFFFFF;
|
|
|
|
.iconfont {
|
|
font-size: 32rpx;
|
|
margin-right: 16rpx;
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.conter {
|
|
flex-wrap: nowrap;
|
|
flex: 1;
|
|
background: #FFFFFF;
|
|
|
|
.aside-box {
|
|
width: 168rpx;
|
|
}
|
|
|
|
.aside {
|
|
width: 168rpx;
|
|
height: 100%;
|
|
background: #F5F5F5;
|
|
|
|
.item {
|
|
height: 100rpx;
|
|
width: 100%;
|
|
font-size: 26rpx;
|
|
color: #333333;
|
|
|
|
.inner {
|
|
position: relative;
|
|
height: 100%;
|
|
}
|
|
|
|
&.on {
|
|
background: #FFFFFF;
|
|
width: 100%;
|
|
text-align: center;
|
|
color: var(--view-theme);
|
|
font-weight: 500;
|
|
position: relative;
|
|
|
|
.inner::after {
|
|
content: "";
|
|
position: absolute;
|
|
width: 6rpx;
|
|
height: 48rpx;
|
|
background: var(--view-theme);
|
|
border-radius: 0 4rpx 4rpx 0;
|
|
left: 0
|
|
}
|
|
}
|
|
|
|
&.btr {
|
|
background: #FFFFFF;
|
|
|
|
.inner {
|
|
border-top-right-radius: 24rpx;
|
|
background: #F5F5F5;
|
|
}
|
|
}
|
|
|
|
&.bbr {
|
|
background: #FFFFFF;
|
|
|
|
.inner {
|
|
border-bottom-right-radius: 24rpx;
|
|
background: #F5F5F5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.wrapper {
|
|
flex: 1;
|
|
flex-wrap: nowrap;
|
|
min-width: 0;
|
|
|
|
.bgcolor-box {
|
|
height: 104rpx;
|
|
}
|
|
|
|
.bgcolor {
|
|
flex-wrap: nowrap;
|
|
height: 104rpx;
|
|
background: #FFFFFF;
|
|
top: 0;
|
|
right: 0;
|
|
left: 168rpx;
|
|
z-index: 10;
|
|
}
|
|
|
|
.longTab {
|
|
flex: 1;
|
|
min-width: 0;
|
|
|
|
.longItem {
|
|
display: inline-block;
|
|
height: 56rpx;
|
|
border-radius: 28rpx;
|
|
margin-left: 16rpx;
|
|
background: #F5F5F5;
|
|
vertical-align: middle;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
line-height: 54rpx;
|
|
color: #333333;
|
|
|
|
.inner {
|
|
height: 56rpx;
|
|
border: 1rpx solid transparent;
|
|
border-radius: 28rpx;
|
|
background-clip: content-box;
|
|
transform: rotateZ(360deg);
|
|
}
|
|
|
|
&.click {
|
|
background: var(--view-theme);
|
|
color: var(--view-theme);
|
|
|
|
.inner {
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
}
|
|
}
|
|
|
|
.underlineBox {
|
|
height: 3px;
|
|
width: 20%;
|
|
display: flex;
|
|
align-content: center;
|
|
justify-content: center;
|
|
transition: .5s;
|
|
|
|
.underline {
|
|
width: 33rpx;
|
|
height: 4rpx;
|
|
background-color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.openList {
|
|
position: relative;
|
|
width: 92rpx;
|
|
text-align: center;
|
|
line-height: 104rpx;
|
|
|
|
.btn {
|
|
display: inline-block;
|
|
width: 56rpx;
|
|
height: 56rpx;
|
|
border-radius: 50%;
|
|
background: #F5F5F5;
|
|
vertical-align: middle;
|
|
line-height: 56rpx;
|
|
}
|
|
|
|
.iconfont {
|
|
vertical-align: middle;
|
|
font-size: 32rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.img {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 18rpx;
|
|
height: 100%;
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
|
|
.goodsList {
|
|
margin-top: 0rpx;
|
|
padding: 0 30rpx 0 20rpx;
|
|
|
|
/deep/.item {
|
|
margin-bottom: 33rpx !important;
|
|
|
|
.text {
|
|
font-size: 26rpx;
|
|
}
|
|
|
|
.bottom {
|
|
.sales {
|
|
.money {
|
|
font-size: 34rpx;
|
|
|
|
text {
|
|
font-size: 26rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.cart {
|
|
.pictrue {
|
|
width: 50rpx;
|
|
height: 50rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.store-address {
|
|
width: 100%;
|
|
margin-top: 15rpx;
|
|
position: relative;
|
|
padding: 12rpx 30rpx 0 30rpx;
|
|
height: 185rpx;
|
|
background-color: #fff;
|
|
|
|
.address {
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
color: #333333;
|
|
|
|
.name {
|
|
max-width: 400rpx;
|
|
}
|
|
|
|
.icon-xiangyou {
|
|
font-size: 24rpx;
|
|
margin-left: 10rpx;
|
|
}
|
|
}
|
|
|
|
.distance {
|
|
margin-top: 16rpx;
|
|
font-size: 24rpx;
|
|
font-weight: 400;
|
|
color: #999999;
|
|
}
|
|
|
|
.time {
|
|
margin-top: 16rpx;
|
|
font-size: 24rpx;
|
|
font-weight: 400;
|
|
color: #333333;
|
|
}
|
|
}
|
|
}
|
|
|
|
.group-btn {
|
|
width: 80rpx;
|
|
height: 64rpx;
|
|
border-radius: 50%;
|
|
margin-left: 16rpx;
|
|
|
|
.img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
/* #ifdef H5 || MP */
|
|
.dialog {
|
|
padding: 44rpx 20rpx 0;
|
|
padding-bottom: constant(safe-area-inset-bottom);
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
border-radius: 40rpx 40rpx 0 0;
|
|
background: linear-gradient(180deg, #F5F5F5 0%, #F5F5F5 0%, #FFFFFF 100%);
|
|
}
|
|
|
|
.dialog-head {
|
|
padding: 0 24rpx;
|
|
font-weight: 500;
|
|
font-size: 32rpx;
|
|
color: #333333;
|
|
|
|
.btn {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
cursor: pointer;
|
|
|
|
.iconfont {
|
|
font-size: 40rpx;
|
|
color: #BBBBBB;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dialog-body {
|
|
margin-top: 48rpx;
|
|
|
|
.navbar {
|
|
flex-shrink: 0;
|
|
position: relative;
|
|
height: 82rpx;
|
|
|
|
.navbar-bg {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 190rpx;
|
|
border-radius: 16rpx 16rpx 0 0;
|
|
background: #EEEEEE;
|
|
}
|
|
|
|
.active-bg {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 96rpx;
|
|
|
|
.image1 {
|
|
width: 50%;
|
|
height: 100%;
|
|
}
|
|
|
|
.image2 {
|
|
width: 48rpx;
|
|
height: 78rpx;
|
|
}
|
|
}
|
|
|
|
.inner {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
|
|
.item {
|
|
flex: 1;
|
|
min-width: 0;
|
|
font-size: 28rpx;
|
|
line-height: 44rpx;
|
|
color: #666666;
|
|
|
|
.iconfont {
|
|
display: none;
|
|
margin-right: 8rpx;
|
|
font-size: 36rpx;
|
|
}
|
|
|
|
&.on {
|
|
font-weight: 500;
|
|
font-size: 32rpx;
|
|
color: var(--view-theme);
|
|
|
|
.iconfont {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.dialog-content {
|
|
position: relative;
|
|
border-radius: 0 0 16rpx 16rpx;
|
|
background: #FFFFFF;
|
|
|
|
&.btl {
|
|
border-top-left-radius: 24rpx;
|
|
}
|
|
|
|
&.btr {
|
|
border-top-right-radius: 24rpx;
|
|
}
|
|
|
|
.link {
|
|
padding: 40rpx 32rpx;
|
|
font-size: 22rpx;
|
|
line-height: 30rpx;
|
|
color: #999999;
|
|
|
|
.title {
|
|
margin-bottom: 16rpx;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
line-height: 40rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.iconfont {
|
|
font-size: 32rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.address-box {
|
|
.list {
|
|
padding: 36rpx 32rpx;
|
|
}
|
|
|
|
.item {
|
|
margin-top: 32rpx;
|
|
color: #333333;
|
|
|
|
&:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.text {
|
|
flex: 1;
|
|
}
|
|
|
|
.info {
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
line-height: 40rpx;
|
|
}
|
|
|
|
.name {
|
|
margin-top: 8rpx;
|
|
font-size: 22rpx;
|
|
line-height: 30rpx;
|
|
color: #999999;
|
|
}
|
|
|
|
.iconfont {
|
|
visibility: hidden;
|
|
font-size: 36rpx;
|
|
}
|
|
|
|
&.on {
|
|
color: var(--view-theme);
|
|
|
|
.name {
|
|
color: var(--view-theme);
|
|
}
|
|
|
|
.iconfont {
|
|
visibility: visible;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn-box {
|
|
height: 88rpx;
|
|
font-size: 24rpx;
|
|
line-height: 34rpx;
|
|
color: #666666;
|
|
|
|
.iconfont {
|
|
margin-left: 4rpx;
|
|
font-size: 24rpx;
|
|
}
|
|
}
|
|
|
|
.store-box {
|
|
padding: 40rpx 28rpx 40rpx 32rpx;
|
|
|
|
.text {
|
|
flex: 1;
|
|
}
|
|
|
|
.name {
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
line-height: 40rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.info {
|
|
margin-top: 16rpx;
|
|
font-size: 22rpx;
|
|
line-height: 30rpx;
|
|
color: #999999;
|
|
}
|
|
|
|
.value {
|
|
flex: 1;
|
|
}
|
|
|
|
.iconfont {
|
|
margin-right: 12rpx;
|
|
font-size: 22rpx;
|
|
}
|
|
|
|
.map-box {
|
|
position: relative;
|
|
width: 188rpx;
|
|
height: 104rpx;
|
|
margin-left: 32rpx;
|
|
|
|
.map {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.img-box {
|
|
position: absolute;
|
|
bottom: 16rpx;
|
|
left: 50%;
|
|
width: 52rpx;
|
|
height: 52rpx;
|
|
padding: 6rpx;
|
|
border-radius: 6rpx;
|
|
background: #FFFFFF;
|
|
box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(0, 0, 0, 0.0784);
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 6rpx;
|
|
}
|
|
|
|
.range {
|
|
position: absolute;
|
|
top: -40rpx;
|
|
left: 50%;
|
|
height: 36rpx;
|
|
padding: 0 16rpx;
|
|
border-radius: 6rpx;
|
|
background: #FFFFFF;
|
|
box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(0, 0, 0, 0.0784);
|
|
transform: translateX(-50%);
|
|
white-space: nowrap;
|
|
font-size: 20rpx;
|
|
line-height: 36rpx;
|
|
color: #333333;
|
|
|
|
&::after {
|
|
content: "";
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 50%;
|
|
width: 0;
|
|
height: 0;
|
|
border-width: 5rpx 9rpx;
|
|
border-style: solid;
|
|
border-color: #FFFFFF transparent transparent;
|
|
transform: translate(-50%, 100%);
|
|
}
|
|
}
|
|
|
|
.dot {
|
|
position: absolute;
|
|
bottom: -10rpx;
|
|
left: 50%;
|
|
width: 6rpx;
|
|
height: 6rpx;
|
|
border-radius: 50%;
|
|
background: var(--view-theme);
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.dialog-foot {
|
|
padding: 20rpx 0;
|
|
|
|
.btn {
|
|
height: 72rpx;
|
|
border-radius: 36rpx;
|
|
background: var(--view-theme);
|
|
text-align: center;
|
|
font-weight: 500;
|
|
font-size: 26rpx;
|
|
line-height: 72rpx;
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
|
|
/* #endif */
|
|
.store-section {
|
|
padding: 20rpx;
|
|
|
|
.panel {
|
|
padding: 0 32rpx 32rpx;
|
|
border-radius: 16rpx;
|
|
background: #FFFFFF;
|
|
}
|
|
|
|
.store-name {
|
|
height: 92rpx;
|
|
|
|
.name-wrap {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.name-inner {
|
|
display: inline-flex;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.name {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin: 0 8rpx 0 10rpx;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.iconfont {
|
|
font-size: 32rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.tips {
|
|
font-size: 24rpx;
|
|
color: var(--view-theme);
|
|
}
|
|
}
|
|
|
|
.address-wrap {
|
|
.address-box {
|
|
flex: 1;
|
|
min-width: 0;
|
|
font-size: 22rpx;
|
|
color: #666666;
|
|
}
|
|
|
|
.address-info {
|
|
margin-top: 20rpx;
|
|
line-height: 34rpx;
|
|
}
|
|
|
|
.distance {
|
|
position: relative;
|
|
padding-right: 12rpx;
|
|
margin-right: 12rpx;
|
|
|
|
&::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
right: 0;
|
|
width: 1rpx;
|
|
height: 18rpx;
|
|
background: #CCCCCC;
|
|
transform: translateY(-50%);
|
|
}
|
|
}
|
|
|
|
.btn {
|
|
position: relative;
|
|
padding-left: 24rpx;
|
|
margin-left: 24rpx;
|
|
text-align: center;
|
|
font-size: 20rpx;
|
|
color: #333333;
|
|
|
|
&::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 0;
|
|
width: 2rpx;
|
|
height: 24rpx;
|
|
background: #EEEEEE;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
&:first-child::before {
|
|
display: none;
|
|
}
|
|
|
|
.iconfont {
|
|
display: inline-block;
|
|
margin-bottom: 8rpx;
|
|
font-size: 40rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.switch {
|
|
width: 192rpx;
|
|
height: 48rpx;
|
|
background: #F5F5F5;
|
|
border-radius: 24rpx;
|
|
margin-left: 24rpx;
|
|
|
|
.btn {
|
|
width: 96rpx;
|
|
height: 48rpx;
|
|
border-radius: 24rpx;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
line-height: 48rpx;
|
|
color: #999999;
|
|
|
|
&.on {
|
|
background: var(--view-theme);
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.headerBg {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
|
|
.image {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.shade {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background: linear-gradient(180deg, rgba(0, 0, 0, 0.4047) 0%, #F5F5F5 100%);
|
|
}
|
|
}
|
|
|
|
.category {
|
|
flex-wrap: nowrap;
|
|
border-bottom: 1rpx solid #EEEEEE;
|
|
background: #FFFFFF;
|
|
|
|
.scroll-view {
|
|
flex: 1;
|
|
min-width: 0;
|
|
padding-left: 20rpx;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.item {
|
|
display: inline-block;
|
|
padding: 24rpx 0;
|
|
margin-right: 8rpx;
|
|
vertical-align: middle;
|
|
|
|
&.on {
|
|
.img-box {
|
|
border-color: var(--view-theme);
|
|
}
|
|
|
|
.title {
|
|
background: linear-gradient(90deg, var(--view-gradient) 0%, var(--view-theme) 100%);
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.img-box {
|
|
width: 104rpx;
|
|
height: 104rpx;
|
|
padding: 6rpx;
|
|
border: 3rpx solid transparent;
|
|
border-radius: 50%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.img {
|
|
width: 92rpx;
|
|
height: 92rpx;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.title {
|
|
width: 120rpx;
|
|
height: 40rpx;
|
|
border-radius: 20rpx;
|
|
margin-top: 8rpx;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
line-height: 40rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.btn {
|
|
position: relative;
|
|
flex-wrap: nowrap;
|
|
width: 72rpx;
|
|
font-size: 24rpx;
|
|
line-height: 34rpx;
|
|
color: #333333;
|
|
|
|
.img {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 22rpx;
|
|
height: 100%;
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
}
|
|
|
|
.downTab {
|
|
flex-wrap: nowrap;
|
|
max-height: 820rpx;
|
|
border-radius: 0rpx 0rpx 32rpx 32rpx;
|
|
background: #FFFFFF;
|
|
|
|
.title {
|
|
padding: 32rpx 0 24rpx 30rpx;
|
|
font-size: 32rpx;
|
|
line-height: 44rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.scroll-view {
|
|
flex: 1;
|
|
min-height: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.children {
|
|
padding: 0 0 8rpx 30rpx;
|
|
margin: 0 -24rpx 0 0;
|
|
|
|
.item {
|
|
width: 154rpx;
|
|
height: 56rpx;
|
|
border-radius: 28rpx;
|
|
margin: 0 24rpx 24rpx 0;
|
|
background: #F5F5F5;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
line-height: 56rpx;
|
|
color: #333333;
|
|
|
|
.inner {
|
|
width: 154rpx;
|
|
height: 56rpx;
|
|
border: 1rpx solid transparent;
|
|
border-radius: 28rpx;
|
|
background-clip: content-box;
|
|
transform: rotateZ(360deg);
|
|
}
|
|
|
|
&.click {
|
|
background: var(--view-theme);
|
|
color: var(--view-theme);
|
|
|
|
.inner {
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn {
|
|
height: 80rpx;
|
|
font-size: 24rpx;
|
|
color: #999999;
|
|
|
|
.iconfont {
|
|
margin-left: 4rpx;
|
|
font-size: 24rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.category-dialog {
|
|
border-radius: 0rpx 0rpx 32rpx 32rpx;
|
|
background: #FFFFFF;
|
|
|
|
.scroll-view {
|
|
flex: 1;
|
|
min-height: 0;
|
|
padding-left: 32rpx;
|
|
}
|
|
|
|
.item {
|
|
display: inline-block;
|
|
margin-right: 22rpx;
|
|
margin-bottom: 26rpx;
|
|
vertical-align: middle;
|
|
|
|
&.on {
|
|
.img-box {
|
|
border-color: var(--view-theme);
|
|
}
|
|
|
|
.title {
|
|
background: linear-gradient(90deg, var(--view-gradient) 0%, var(--view-theme) 100%);
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.img-box {
|
|
width: 104rpx;
|
|
height: 104rpx;
|
|
padding: 6rpx;
|
|
border: 3rpx solid transparent;
|
|
border-radius: 50%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.img {
|
|
width: 92rpx;
|
|
height: 92rpx;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.title {
|
|
width: 120rpx;
|
|
height: 40rpx;
|
|
border-radius: 20rpx;
|
|
margin-top: 8rpx;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
line-height: 40rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
.btn {
|
|
position: relative;
|
|
flex-wrap: nowrap;
|
|
height: 80rpx;
|
|
font-size: 24rpx;
|
|
line-height: 34rpx;
|
|
color: #999999;
|
|
|
|
.iconfont {
|
|
margin-left: 4rpx;
|
|
font-size: 24rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
// .input-box.fixed {
|
|
// background: #FFFFFF;
|
|
// top: 0;
|
|
// right: 0;
|
|
// left: 0;
|
|
// z-index: 10;
|
|
|
|
// .input {
|
|
// background: #F5F5F5;
|
|
// color: #999999;
|
|
// }
|
|
|
|
// .menu_box .iconfont {
|
|
// color: #333333;
|
|
// }
|
|
// }
|
|
</style> |