| | |
| | | <template>
|
| | | <view class="trade-detail">
|
| | | <view class="top-img-container">
|
| | | <image :src="dto.cover" class="top-img"></image>
|
| | | <view class="icon-container">
|
| | | <image src="../../../static/common/icon-sc.png" class="icon-sc"></image>
|
| | | <view class="num">12</view>
|
| | | </view>
|
| | | <view class="icon-container">
|
| | | <image src="../../../static/common/icon-shop.png" class="icon-shop"></image>
|
| | |
|
| | | </view>
|
| | | </view>
|
| | | <view class="trade-info-container">
|
| | | <view class="title">
|
| | | <view class="level m-r-15">{{ dto.levelStr || '-' }}级</view>
|
| | | <view class="">
|
| | | {{ dto.name || '-' }}
|
| | | </view>
|
| | | </view>
|
| | | <view class="desc m-t-12">
|
| | | <view class="m-r-15">已售:{{ dto.sales || 0 }}</view>
|
| | | <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view>
|
| | | <view class=" ">{{ dto.unit || '-' }}支/扎</view>
|
| | | </view>
|
| | | <view class="flex m-t-12">
|
| | | <view class="price m-r-a">
|
| | | <span class="num">{{ dto.price || '-' }}</span>
|
| | | 元/扎
|
| | | </view>
|
| | | <view class="m-l-a m-r-15">
|
| | | <image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image>
|
| | |
|
| | | </view>
|
| | | <view class="m-r-0 gwc" @click="submitShopping(dto)">
|
| | | + 购物车
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | |
|
| | | </view>
|
| | | <view class="info-detail" v-if="dto.params">
|
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">详情</view>
|
| | | <view class="flex m-t-8" v-for="(param,index) of dto.params" :key="index">
|
| | | <view class="label">{{ param.name}}:</view>
|
| | | <view class="value">{{ param.value || '-'}}</view>
|
| | | </view>
|
| | | <!-- <view class="flex m-t-8">-->
|
| | | <!-- <view class="label">枝粗:</view>-->
|
| | | <!-- <view class="value">中等粗细</view>-->
|
| | | <!-- </view>-->
|
| | | <!-- <view class="flex m-t-8">-->
|
| | | <!-- <view class="label">均匀度:</view>-->
|
| | | <!-- <view class="value">1-2支不均匀</view>-->
|
| | | <!-- </view>-->
|
| | | </view>
|
| | | <view class="line">
|
| | |
|
| | | </view>
|
| | |
|
| | | <view class="info-brand m-t-12" @click.stop="openbrand">
|
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">店铺</view>
|
| | | <view class="flex">
|
| | | <image class="store-logo"></image>
|
| | | <view>
|
| | | <view class="store-name">{{dto.supplierName||'-'}}</view>
|
| | | <view class="store-address">{{dto.supplierStation||'-'}}</view>
|
| | | </view>
|
| | | <view class="store-to m-l-a m-r-0">进入店铺</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="m-t-20 shop-recommend-container" v-if="false">
|
| | | <view class="shop-recommend-title">店铺推荐</view>
|
| | | <view class="flex">
|
| | | <view v-for="i in 3" :key="i" class="shop-recommend">
|
| | | <image src="" class="shop-recommend-image"></image>
|
| | | <view class="shop-recommend-title m-t-8">
|
| | | <view class="level m-r-15">B级</view>
|
| | | <view class="">
|
| | | {{ dto.name || '-' }}
|
| | | </view>
|
| | | </view>
|
| | | <view class="shop-recommend-price m-t-8">
|
| | | ¥23.01/扎
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | |
|
| | | </view>
|
| | | <view class="comment-container m-t-12" v-if="false">
|
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">
|
| | | <view>评价</view>
|
| | | <view class="desc">
|
| | | 7条评论
|
| | | <uni-icons type="right" size="18" color="#B3B3B3"></uni-icons>
|
| | |
|
| | | </view>
|
| | | </view>
|
| | | <view v-for="i in 3" :key="i" class="m-t-20 flex user-item">
|
| | | <image class="user-icon m-r-10"></image>
|
| | | <view>
|
| | | <view class="name">用户名3370</view>
|
| | | <view class="comment">非常棒,会回购</view>
|
| | | </view>
|
| | | <view class="stars">
|
| | |
|
| | | </view>
|
| | | <view class="date">
|
| | | 04-07 08:00
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | id: '',
|
| | | dto: {}
|
| | | }
|
| | | },
|
| | | onLoad(options) {
|
| | | this.id = options.id || ''
|
| | | if (this.id) {
|
| | | this.getDetail()
|
| | | }
|
| | | },
|
| | | methods: {
|
| | | async getDetail() {
|
| | | this.$message.showLoading()
|
| | | const {
|
| | | code,
|
| | | data
|
| | | } = await this.$http.request('get', '/api/customer/flower/list/view', {
|
| | | params: {
|
| | | id: this.id
|
| | | }
|
| | | })
|
| | | if (code === 0) {
|
| | | this.dto = {
|
| | | ...data,
|
| | | }
|
| | | }
|
| | |
|
| | | this.$message.hideLoading()
|
| | |
|
| | | },
|
| | | openbrand() {
|
| | | uni.navigateTo({
|
| | | url: '/sub_pages/customer/shop/shop?id=' + (this.dto.id || '')
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .trade-detail {
|
| | | background-color: #FFFFFF;
|
| | |
|
| | | .trade-info-container {
|
| | | padding: 46rpx 30rpx;
|
| | | border-radius: 40rpx 40rpx 0rpx 0rpx;
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 36rpx;
|
| | | color: #000000;
|
| | | line-height: 50rpx;
|
| | |
|
| | | .level {
|
| | | color: #20613D;
|
| | | }
|
| | | }
|
| | |
|
| | | .desc {
|
| | | font-weight: 400;
|
| | | font-size: 28rpx;
|
| | | color: #666666;
|
| | | line-height: 40rpx;
|
| | | }
|
| | |
|
| | | .price {
|
| | | font-weight: 600;
|
| | | font-size: 28rpx;
|
| | | color: #CF0000;
|
| | | line-height: 40rpx;
|
| | |
|
| | | .num {
|
| | | font-size: 48rpx;
|
| | | line-height: 66rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .icon-kf {
|
| | | width: 44rpx;
|
| | | height: 44rpx;
|
| | | }
|
| | |
|
| | | .gwc {
|
| | | width: 168rpx;
|
| | | height: 48rpx;
|
| | | border-radius: 30rpx;
|
| | | border: 2rpx solid #20613D;
|
| | | font-size: 24rpx;
|
| | | color: #20613D;
|
| | | line-height: 48rpx;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .line {
|
| | | min-height: 20rpx;
|
| | | background: #F7F7F7;
|
| | | }
|
| | |
|
| | | .info-detail {
|
| | | padding: 18rpx 30rpx;
|
| | |
|
| | | .label {
|
| | | font-weight: 400;
|
| | | font-size: 28rpx;
|
| | | color: #666666;
|
| | | line-height: 40rpx;
|
| | | min-width: 160rpx;
|
| | | margin-right: 20rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | font-weight: 400;
|
| | | font-size: 28rpx;
|
| | | color: #666666;
|
| | | line-height: 40rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .shop-recommend-title {
|
| | | font-weight: 400;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | line-height: 34rpx;
|
| | | }
|
| | |
|
| | |
|
| | | .shop-recommend-container {
|
| | | padding: 24rpx 30rpx;
|
| | |
|
| | | .shop-recommend {
|
| | | .shop-recommend-image {
|
| | | width: 214rpx;
|
| | | height: 214rpx;
|
| | | background-size: 100% 100%;
|
| | | border-radius: 8rpx;
|
| | | }
|
| | |
|
| | | .shop-recommend-title {
|
| | | font-weight: 600;
|
| | | font-size: 28rpx;
|
| | | color: #000000;
|
| | | line-height: 40rpx;
|
| | |
|
| | | .level {
|
| | | color: #20613D;;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .comment-container {
|
| | | padding: 18rpx 30rpx;
|
| | |
|
| | | .desc {
|
| | | font-weight: 400;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | line-height: 34rpx;
|
| | | }
|
| | |
|
| | | .user-item {
|
| | | .user-icon {
|
| | | width: 72rpx;
|
| | | height: 72rpx;
|
| | | background-size: 100% 100%;
|
| | | border-radius: 50%;
|
| | | }
|
| | |
|
| | | .name {
|
| | | font-weight: 600;
|
| | | font-size: 24rpx;
|
| | | color: #000000;
|
| | | line-height: 34rpx;
|
| | | }
|
| | |
|
| | | .comment {
|
| | | font-weight: 400;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | line-height: 34rpx;
|
| | | }
|
| | |
|
| | | .date {
|
| | | font-weight: 400;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | line-height: 72rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | .top-img-container {
|
| | | position: relative;
|
| | |
|
| | | .top-img {
|
| | | width: 750rpx;
|
| | | height: 764rpx;
|
| | | }
|
| | |
|
| | | .icon-container {
|
| | | position: absolute;
|
| | | top: 20rpx;
|
| | | width: 80rpx;
|
| | | height: 80rpx;
|
| | | background: rgba(0, 0, 0, 0.42);
|
| | |
|
| | | .icon-sc {
|
| | | width: 54rpx;
|
| | | height: 54rpx;
|
| | | margin: 0 auto;
|
| | | margin-top: 12rpx;
|
| | | }
|
| | |
|
| | | .icon-shop {
|
| | | width: 54rpx;
|
| | | height: 54rpx;
|
| | | margin: 0 auto;
|
| | | margin-top: 12rpx;
|
| | | }
|
| | |
|
| | | .num {
|
| | | font-weight: 400;
|
| | | font-size: 20rpx;
|
| | | color: #FFFFFF;
|
| | | line-height: 28rpx;
|
| | | position: absolute;
|
| | | top: 6prx;
|
| | | right: 16rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .icon-container:last-child {
|
| | | left: 120rpx;
|
| | | }
|
| | |
|
| | | .icon-container:first-child {
|
| | | left: 20rpx;
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | | <template> |
| | | <view class="trade-detail"> |
| | | <view class="top-img-container"> |
| | | |
| | | <!-- <image :src="dto.cover" class="top-img" mode="aspectFill"></image> --> |
| | | <uni-swiper-dot class="uni-swiper-dot-box" :mode="'dot'" field="content"> |
| | | <swiper class="swiper-box" :interval="10000" :circular="true" :current="0" :autoplay="true"> |
| | | |
| | | <swiper-item v-if="dto.video"> |
| | | <video :src="dto.video" class="top-img" :auto-pause-if-navigate="true" |
| | | style="display: block;margin: 0 auto;"></video> |
| | | <view class="index-tag"> |
| | | 1/{{(dto.video&&1||0)+(dto.cover&&1||0)+(dto.bannerList&&dto.bannerList.length||0)}} |
| | | </view> |
| | | </swiper-item> |
| | | <swiper-item v-for="(url, index) in dto.bannerList" :key="index"> |
| | | <image class="top-img" :lazy-load="true" mode="scaleToFill" @click="previewImg(url)" :src="url"> |
| | | </image> |
| | | <view class="index-tag"> |
| | | {{index+1+(dto.video&&1)}}/{{(dto.video&&1||0)+(dto.cover&&1||0)+(dto.bannerList&&dto.bannerList.length||0)}} |
| | | </view> |
| | | </swiper-item> |
| | | |
| | | <swiper-item> |
| | | <image :src="dto.cover" :lazy-load="true" @click="previewImg(dto.cover)" class="top-img" |
| | | mode="scaleToFill"> |
| | | </image> |
| | | <view class="index-tag"> |
| | | {{(dto.bannerList&&dto.bannerList.length||0)+1+(dto.video&&1||0)}}/{{(dto.video&&1||0)+(dto.cover&&1||0)+(dto.bannerList&&dto.bannerList.length||0)}} |
| | | </view> |
| | | </swiper-item> |
| | | |
| | | |
| | | </swiper> |
| | | </uni-swiper-dot> |
| | | |
| | | |
| | | |
| | | |
| | | <view class="icon-container"> |
| | | <image v-if="!dto.collection" src="../../../static/common/icon-sc.png" @click="collectItem(dto)" |
| | | class="icon-sc"></image> |
| | | <image v-if="dto.collection" src="../../../static/common/icon-sc-fill.png" @click="collectItem(dto)" |
| | | class="icon-sc"></image> |
| | | </view> |
| | | <view class="icon-container"> |
| | | <image src="../../../static/common/icon-shop.png" @click="toShopping(dto)" class="icon-shop"> |
| | | <view class="image-shop-number" v-if="shopnum">{{shopnum||''}}</view> |
| | | </image> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="trade-info-container"> |
| | | <view class="title flex"> |
| | | <view class="level m-r-15">{{ dto.levelStr || '-' }}</view> |
| | | <view class=""> |
| | | {{ dto.name || '-' }} |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="tags" v-if="dto.tags||false"> |
| | | <!-- <view class="tag red">限时抢购</view> --> |
| | | <!-- <view class="tag green">品质严选</view> --> |
| | | <view class="tag red" v-for="(tag,k) of dto.tagArr" :class="[k===0?'red':'green']" :key="tag">{{ |
| | | tag |
| | | }} |
| | | </view> |
| | | </view> |
| | | <view class="desc m-t-12"> |
| | | <view class="m-r-15">已售:{{ ((dto.sales||0) +(dto.realSales||0)) || 0 }}</view> |
| | | <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view> |
| | | <view class=" ">{{ dto.unit || '-' }}</view> |
| | | </view> |
| | | <view class="flex m-t-12"> |
| | | <view> |
| | | <view class="price m-r-a component-price-new"> |
| | | <span class="tip">会员价</span><span class="num p">{{ dto.priceMember || dto.price || '-' }}</span> |
| | | 元/扎 |
| | | </view> |
| | | <view class="price m-r-a component-price-old"> |
| | | <span class="num">{{ dto.price || '-' }}</span> |
| | | 元/扎 |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | <view class="m-l-a m-r-15"> |
| | | <button open-type="contact" class="component-button-contact"> |
| | | <image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image> |
| | | |
| | | </button> |
| | | |
| | | </view> |
| | | <view class="m-r-0 gwc" @click="submitShopping(dto)" v-if="!dto.shopnum"> |
| | | + 购物车 |
| | | </view> |
| | | <view class="m-r-0 button-icons flex" v-if="dto.shopnum"> |
| | | <uni-icons v-if="dto.shopnum&&dto.shopnum>=1" type="minus" size="32" |
| | | @click.stop="addnum(dto,-1)"></uni-icons> |
| | | <view class="curnums" @click.stop="updateItemNum(dto)" v-if="dto.shopnum&&dto.shopnum>=1"> |
| | | {{ dto.shopnum }} |
| | | </view> |
| | | <uni-icons v-if="!dto.shopnum||dto.shopnum<=99" type="plus-filled" size="32" |
| | | @click.stop="addnum(dto,1)"></uni-icons> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | | |
| | | </view> |
| | | <view class="info-detail" v-if="dto.params"> |
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">详情</view> |
| | | <view class="flex flex-wrap-normal m-t-8" v-for="(param,index) of dto.params" :key="index"> |
| | | <view class="label">{{ param.name}}:</view> |
| | | <view class="value">{{ param.value || '-'}}</view> |
| | | </view> |
| | | <view v-if="!dto.params"> |
| | | <view class="flex m-t-8"> |
| | | <view class="label">暂无</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | | |
| | | </view> |
| | | |
| | | <view class="info-brand m-t-12" @click.stop="openbrand"> |
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">店铺</view> |
| | | <view class="flex m-t-12"> |
| | | <image class="store-logo" :src="dto.supplierCover"></image> |
| | | <view> |
| | | <view class="store-name t1">{{dto.supplierName||'-'}}</view> |
| | | <view class="store-address t1">{{dto.supplierStation||'-'}}</view> |
| | | </view> |
| | | <view class="store-to m-l-a m-r-0">进入店铺</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- <view class="line" v-if="dto.bannerList&&dto.bannerList.length>0"> |
| | | |
| | | </view> |
| | | <uni-swiper-dot class="uni-swiper-dot-box" :mode="'dot'" field="content" |
| | | v-if="dto.bannerList&&dto.bannerList.length>0"> |
| | | <swiper class="swiper-box" :interval="10000" :circular="true" :current="0" :autoplay="true"> |
| | | <swiper-item v-for="(url, index) in dto.bannerList" :key="index"> |
| | | <view class="swiper-item" :class="'swiper-item' + index"> |
| | | <image class="home-banner-image m-auto m-t-12 m-b-12" style="display: block;" mode="scaleToFill" |
| | | @click="previewImg(url)" :src="url"> |
| | | </image> |
| | | </view> |
| | | </swiper-item> |
| | | </swiper> |
| | | </uni-swiper-dot> --> |
| | | |
| | | <!-- <view class="line" v-if="dto.video"> |
| | | |
| | | </view> |
| | | <view class="info-brand m-t-12" v-if="dto.video"> |
| | | <video :src="dto.video" :auto-pause-if-navigate="true" style="display: block;margin: 0 auto;"></video> |
| | | |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | |
| | | <view class="m-t-20 shop-recommend-container" v-if="false"> |
| | | <view class="shop-recommend-title">店铺推荐</view> |
| | | <view class="flex"> |
| | | <view v-for="i in 3" :key="i" class="shop-recommend"> |
| | | <image src="" class="shop-recommend-image"></image> |
| | | <view class="shop-recommend-title m-t-8"> |
| | | <view class="level m-r-15">B级</view> |
| | | <view class=""> |
| | | {{ dto.name || '-' }} |
| | | </view> |
| | | </view> |
| | | <view class="shop-recommend-price m-t-8"> |
| | | ¥23.01/扎 |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | | |
| | | </view> |
| | | <view class="comment-container m-t-12" v-if="false"> |
| | | <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;"> |
| | | <view>评价</view> |
| | | <view class="desc"> |
| | | 7条评论 |
| | | <uni-icons type="right" size="18" color="#B3B3B3"></uni-icons> |
| | | |
| | | </view> |
| | | </view> |
| | | <view v-for="i in 3" :key="i" class="m-t-20 flex user-item"> |
| | | <image class="user-icon m-r-10"></image> |
| | | <view> |
| | | <view class="name">用户名3370</view> |
| | | <view class="comment">非常棒,会回购</view> |
| | | </view> |
| | | <view class="stars"> |
| | | |
| | | </view> |
| | | <view class="date"> |
| | | 04-07 08:00 |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | id: '', |
| | | dto: {}, |
| | | shopnum: 0, |
| | | sharePartnerUserId: '', |
| | | } |
| | | }, |
| | | onShow() { |
| | | if (this.id) { |
| | | this.getDetail() |
| | | } |
| | | this.refreshShopNum() |
| | | }, |
| | | async onLoad(options) { |
| | | console.log('trade detail options', options) |
| | | this.id = options.id || '' |
| | | |
| | | // #ifdef PUB_CUSTOMER |
| | | |
| | | if (options.partnerUserId) { |
| | | let tmp = this |
| | | tmp.sharePartnerUserId = options.partnerUserId |
| | | //合伙人绑定的,判断当前用户,是否有登录,登录没绑定,没登录先缓存合伙人id,等注册和登录时候再弄 |
| | | // setTimeout(() => { |
| | | //并且当前用户没有绑定 |
| | | if (tmp.currentInfo.id && tmp.currentInfo.customerDTO.partnerId) { |
| | | |
| | | }else{ |
| | | if (tmp.currentInfo.id) { |
| | | await tmp.bindPartnerUser(options.partnerUserId, '') |
| | | } else { |
| | | tmp.sharePartnerUserId = options.partnerUserId |
| | | //没有登录到话设置到缓存 |
| | | if (tmp.sharePartnerUserId) { |
| | | tmp.$storage.setItem('cache_sharePartnerUserId', tmp.sharePartnerUserId) |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // }, 1000) |
| | | } |
| | | // #endif |
| | | if (this.id) { |
| | | this.getDetail() |
| | | } |
| | | this.refreshShopNum() |
| | | |
| | | }, |
| | | // #ifdef PUB_CUSTOMER |
| | | onShareAppMessage() { |
| | | let that = this; |
| | | var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO && |
| | | that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || '' |
| | | //如果是合伙人的id,那么分享出去,需要附加id了 |
| | | console.log('onShareAppMessage', this.currentInfo) |
| | | |
| | | var partnerUserId = '' |
| | | |
| | | if (that.currentInfo.customerDTO && that.currentInfo.customerDTO.partnerId) { |
| | | partnerUserId = that.currentInfo.customerDTO.partnerId |
| | | } |
| | | // if (that.currentInfo.partnerDTO && currentInfo.partnerDTO.id) { |
| | | // partnerUserId = this.currentInfo.id |
| | | // } |
| | | var url = |
| | | `/sub_pages/customer/trade/detail?partnerUserId=${partnerUserId}&id=${this.id}&shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数 |
| | | return { |
| | | // |
| | | title: this.dto.id ? (this.dto.name + " " + (this.dto.price || '-') + '元/扎 ' + (this.dto.unit || '')) : |
| | | "花满芫", |
| | | path: url, |
| | | } |
| | | }, |
| | | onShareTimeline() { |
| | | let that = this; |
| | | var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO && |
| | | currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || '' |
| | | //如果是合伙人的id,那么分享出去,需要附加id了 |
| | | var partnerUserId = '' |
| | | |
| | | if (that.currentInfo.customerDTO && that.currentInfo.customerDTO.partnerId) { |
| | | partnerUserId = that.currentInfo.customerDTO.partnerId |
| | | } |
| | | var url = |
| | | `/sub_pages/customer/trade/detail?partnerUserId=${partnerUserId}&id=${this.id}&shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数 |
| | | return { |
| | | // |
| | | title: this.dto.id ? (this.dto.name + " " + (this.dto.price || '-') + '元/扎 ' + (this.dto.unit || '')) : |
| | | "花满芫", |
| | | path: url, |
| | | } |
| | | }, |
| | | // #endif |
| | | methods: { |
| | | async bindPartnerUser(userId, name) { |
| | | //调用接口绑定 |
| | | this.$message.showLoading() |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$http.request('post', '/api/customer/bind/partner', { |
| | | data: { |
| | | partnerUserId: userId |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code == 0) { |
| | | this.$message.showToast(`绑定合伙人${name}成功`) |
| | | await this.$store.dispatch('getCurrentInfo') |
| | | } |
| | | }, |
| | | async updateItemNum(item) { |
| | | const res = await this.$message.confirm('', { |
| | | editable: true, |
| | | title: '请输入想要购买的数量' |
| | | }) |
| | | if (res.content && res.confirm) { |
| | | // 发送请求 |
| | | var t = parseInt(res.content) |
| | | if (isNaN(t) || t < 0) { |
| | | this.$message.showToast('数目需要大于等于0') |
| | | |
| | | } else { |
| | | if (!item.stock || t > item.stock) { |
| | | this.$message.showToast('库存不足无法修改') |
| | | return |
| | | } |
| | | this.addnum(item, (t - item.shopnum)) |
| | | |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | }, |
| | | async addnum(item, addnum) { |
| | | if (!this.currentInfo.id) { |
| | | // await this.$message.confirm('请前往登录') |
| | | uni.navigateTo({ |
| | | url: `/pages/login/supplier-login?source=jump&sharePartnerUserId=${this.sharePartnerUserId}` |
| | | }) |
| | | return |
| | | } |
| | | if (!item.shopnum) { |
| | | item.shopnum = 0 |
| | | } |
| | | if (!item.stock) { |
| | | item.stock = 0 |
| | | } |
| | | if (addnum > 0 & item.shopnum + addnum > item.stock) { |
| | | this.$message.showToast('库存不足,无法修改') |
| | | return |
| | | } |
| | | if (item.shopnum + addnum >= 0) { |
| | | |
| | | } else { |
| | | return |
| | | } |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('post', '/api/customer/flower/cart/change-num', { |
| | | data: { |
| | | id: item.id, |
| | | num: addnum |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | item.shopnum += addnum |
| | | this.refreshShopNum() |
| | | this.$forceUpdate() |
| | | } |
| | | }, |
| | | |
| | | async refreshShopNum() { |
| | | this.shopnum = await this.$store.dispatch('countShopping'); |
| | | this.$store.dispatch('sign_add', 'shopnum') |
| | | |
| | | }, |
| | | async collectItem(dto) { |
| | | if (!this.currentInfo.id) { |
| | | // this.$message.showToast('请先登录') |
| | | uni.navigateTo({ |
| | | url: `/pages/login/supplier-login?source=jump&sharePartnerUserId=${this.sharePartnerUserId}` |
| | | }) |
| | | return |
| | | } |
| | | await this.$message.confirm(`是否${dto.collection?'移除':'添加到'}收藏`) |
| | | this.$message.showLoading() |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$http.request(dto.collection ? "get" : 'post', dto.collection ? '/api/collect/delete' : |
| | | '/api/collect/add', { |
| | | data: { |
| | | flowerId: dto.id |
| | | }, |
| | | params: { |
| | | flowerId: dto.id |
| | | } |
| | | }) |
| | | if (code === 0) { |
| | | this.$message.showToast('操作成功') |
| | | dto.collection = !dto.collection |
| | | this.$forceUpdate() |
| | | } |
| | | |
| | | this.$message.hideLoading() |
| | | }, |
| | | async submitShopping(dto) { |
| | | //提交到购物车中 |
| | | // this.$message.showLoading() |
| | | if (!this.currentInfo.id) { |
| | | // this.$message.showToast('请先登录') |
| | | uni.navigateTo({ |
| | | url: `/pages/login/supplier-login?source=jump&sharePartnerUserId=${this.sharePartnerUserId}` |
| | | }) |
| | | return |
| | | } |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$store.dispatch('submitShopping', dto); |
| | | // this.$message.hideLoading() |
| | | if (code == 0) { |
| | | dto.shopnum = data || 0 |
| | | this.refreshShopNum() |
| | | this.$forceUpdate() |
| | | |
| | | } |
| | | }, |
| | | async getDetail() { |
| | | var params = { |
| | | id: this.id, |
| | | } |
| | | if (this.sharePartnerUserId && !isNaN(parseInt(this.sharePartnerUserId))) { |
| | | params.partnerId = parseInt(this.sharePartnerUserId) |
| | | } |
| | | this.$message.showLoading() |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$http.request('get', '/api/customer/flower/list/view', { |
| | | params: params |
| | | }) |
| | | if (code === 0) { |
| | | this.dto = { |
| | | bannerList: [], |
| | | ...data, |
| | | } |
| | | if (!this.dto.bannerList) { |
| | | this.dto.bannerList = [] |
| | | } |
| | | if (this.dto.tags) { |
| | | this.dto.tagArr = this.dto.tags.split(",") || [] |
| | | } else { |
| | | this.dto.tagArr = [] |
| | | } |
| | | } |
| | | |
| | | this.$message.hideLoading() |
| | | |
| | | }, |
| | | toShopping() { |
| | | if (!this.currentInfo.id) { |
| | | // this.$message.showToast('请先登录') |
| | | uni.navigateTo({ |
| | | url: `/pages/login/supplier-login?source=jump&sharePartnerUserId=${this.sharePartnerUserId}` |
| | | }) |
| | | return |
| | | } |
| | | //判断堆栈,如果是购物车,就直接返回 |
| | | const pages = getCurrentPages(); |
| | | //如果上一层就是购物车,那么就返回,而不是跳转 |
| | | // console.log('toShopping',pages) |
| | | if (pages && pages.length >= 2) { |
| | | if (pages[pages.length - 2].route === "sub_pages/customer/shopping/shopping") { |
| | | uni.navigateBack() |
| | | return |
| | | } |
| | | } |
| | | if (pages.length >= 10) { |
| | | //直接强制购物车 |
| | | uni.reLaunch({ |
| | | url: '/sub_pages/customer/shopping/shopping' |
| | | }) |
| | | } else { |
| | | uni.navigateTo({ |
| | | url: '/sub_pages/customer/shopping/shopping' |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | openbrand() { |
| | | //也要判断一下是否重复进入 |
| | | //判断堆栈,如果是店铺,就直接返回 |
| | | //或者是:从商铺到列表再到详情,再到商铺,这种也不行 |
| | | const pages = getCurrentPages(); |
| | | console.log('toShopping', pages) |
| | | if (pages && pages.length >= 2) { |
| | | if (pages[pages.length - 2].route === "sub_pages/customer/shop/shop") { |
| | | uni.navigateBack() |
| | | return |
| | | } |
| | | } |
| | | if (pages && pages.length >= 3) { |
| | | if (pages[pages.length - 3].route === "sub_pages/customer/shop/shop" && |
| | | pages[pages.length - 2].route === "sub_pages/customer/trade/list" |
| | | ) { |
| | | uni.navigateBack({ |
| | | delta: 2 |
| | | }) |
| | | return |
| | | } |
| | | } |
| | | |
| | | if (pages.length >= 10) { |
| | | //直接强制购物车 |
| | | uni.reLaunch({ |
| | | url: '/sub_pages/customer/shop/shop?id=' + (this.dto.supplierId || '') |
| | | }) |
| | | } else { |
| | | uni.navigateTo({ |
| | | url: '/sub_pages/customer/shop/shop?id=' + (this.dto.supplierId || '') |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .trade-detail { |
| | | background-color: #FFFFFF; |
| | | |
| | | swiper { |
| | | height: 320rpx; |
| | | } |
| | | |
| | | .swiper-box { |
| | | position: relative; |
| | | |
| | | swiper-item { |
| | | background-color: #fff; |
| | | border-radius: 8rpx; |
| | | position: relative; |
| | | |
| | | .index-tag { |
| | | position: absolute; |
| | | color: #fff; |
| | | font-size: 22rpx; |
| | | right: 10rpx; |
| | | bottom: 10rpx; |
| | | padding: 10rpx 20rpx; |
| | | text-align: center; |
| | | background-color: #545454; |
| | | border-radius: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .image-shop-number { |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | | background: #F20000; |
| | | line-height: 30rpx; |
| | | text-align: center; |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: -6rpx; |
| | | color: #FFFFFF; |
| | | border-radius: 50%; |
| | | font-size: 24rpx; |
| | | } |
| | | |
| | | |
| | | .trade-info-container { |
| | | padding: 46rpx 30rpx; |
| | | border-radius: 40rpx 40rpx 0rpx 0rpx; |
| | | |
| | | .tags { |
| | | margin-top: 12rpx; |
| | | display: flex; |
| | | |
| | | .tag { |
| | | // min-width: 60rpx; |
| | | padding-left: 10rpx; |
| | | padding-right: 10rpx; |
| | | line-height: 30rpx; |
| | | background: #FEE6E6; |
| | | border-radius: 10rpx; |
| | | font-size: 18rpx; |
| | | color: #CD1212; |
| | | margin-right: 6rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .tag.green { |
| | | color: rgba(110, 159, 102, 1); |
| | | background: rgba(202, 229, 214, 1); |
| | | border-radius: 10rpx; |
| | | // opacity: 0.57; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 36rpx; |
| | | color: #000000; |
| | | line-height: 50rpx; |
| | | |
| | | .level { |
| | | color: #20613D; |
| | | } |
| | | } |
| | | |
| | | .button-icons { |
| | | line-height: 40rpx; |
| | | |
| | | .curnums { |
| | | padding-left: 20rpx; |
| | | padding-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | } |
| | | |
| | | .price { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #CF0000; |
| | | line-height: 40rpx; |
| | | margin-top: -10rpx; |
| | | |
| | | .num { |
| | | font-size: 48rpx; |
| | | line-height: 66rpx; |
| | | } |
| | | } |
| | | |
| | | .icon-kf { |
| | | width: 44rpx; |
| | | height: 44rpx; |
| | | } |
| | | |
| | | .gwc { |
| | | width: 168rpx; |
| | | height: 48rpx; |
| | | border-radius: 30rpx; |
| | | border: 2rpx solid #20613D; |
| | | font-size: 24rpx; |
| | | color: #20613D; |
| | | line-height: 48rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | } |
| | | |
| | | .line { |
| | | min-height: 20rpx; |
| | | background: #F7F7F7; |
| | | } |
| | | |
| | | .info-detail { |
| | | padding: 18rpx 30rpx; |
| | | |
| | | .label { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | min-width: 160rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .value { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | } |
| | | } |
| | | |
| | | .shop-recommend-title { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | |
| | | .shop-recommend-container { |
| | | padding: 24rpx 30rpx; |
| | | |
| | | .shop-recommend { |
| | | .shop-recommend-image { |
| | | width: 214rpx; |
| | | height: 214rpx; |
| | | background-size: 100% 100%; |
| | | border-radius: 8rpx; |
| | | } |
| | | |
| | | .shop-recommend-title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | |
| | | .level { |
| | | color: #20613D; |
| | | ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .comment-container { |
| | | padding: 18rpx 30rpx; |
| | | |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | .user-item { |
| | | .user-icon { |
| | | width: 72rpx; |
| | | height: 72rpx; |
| | | background-size: 100% 100%; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 24rpx; |
| | | color: #000000; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | .comment { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | .date { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 72rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | .top-img-container { |
| | | position: relative; |
| | | |
| | | swiper { |
| | | width: 750rpx; |
| | | height: 764rpx; |
| | | } |
| | | |
| | | .top-img { |
| | | width: 750rpx; |
| | | height: 764rpx; |
| | | } |
| | | |
| | | .icon-container { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | width: 80rpx; |
| | | right: 140rpx; |
| | | height: 80rpx; |
| | | background: rgba(0, 0, 0, 0.42); |
| | | border-radius: 50%; |
| | | display: flex; |
| | | |
| | | .icon-sc { |
| | | width: 54rpx; |
| | | height: 54rpx; |
| | | margin: 0 auto; |
| | | margin-top: 12rpx; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .icon-shop { |
| | | width: 54rpx; |
| | | height: 54rpx; |
| | | margin: 0 auto; |
| | | margin-top: 12rpx; |
| | | display: inline-block; |
| | | margin-left: 12rpx; |
| | | position: relative; |
| | | |
| | | } |
| | | |
| | | .num { |
| | | font-weight: 400; |
| | | font-size: 20rpx; |
| | | color: #FFFFFF; |
| | | line-height: 28rpx; |
| | | position: absolute; |
| | | top: 6prx; |
| | | right: 16rpx; |
| | | } |
| | | } |
| | | |
| | | .icon-container:last-child { |
| | | right: 20rpx; |
| | | } |
| | | |
| | | // .icon-container:first-child { |
| | | // left: 40rpx; |
| | | // } |
| | | |
| | | } |
| | | } |
| | | </style> |