| | |
| | | .component-stock-zero{ |
| | | position: relative; |
| | | } |
| | | .component-status-zero{ |
| | | position: absolute; |
| | | line-height: 100%; |
| | | // font-size: ; |
| | | left: -2rpx; |
| | | right: -2rpx; |
| | | top: -2rpx; |
| | | bottom: -2rpx; |
| | | font-size: 600; |
| | | content: '已下架'; |
| | | color: #fff; |
| | | text-align: center; |
| | | padding-top: calc(50% - 20rpx); |
| | | background-color: #52525275; |
| | | } |
| | | .component-status-zero{ |
| | | position: relative; |
| | | } |
| | | .component-popup_input{ |
| | | margin: 0 auto; |
| | | margin-top: 160rpx; |
对比新文件 |
| | |
| | | <template> |
| | | <div class="banner-container"> |
| | | <swiper :style="{width: '100vw', height: '410rpx'}" :indicator-dots="swiperConfig.indicatorDots" |
| | | :indicator-color="swiperConfig.indicatorColor" :indicator-active-color="swiperConfig.indicatorActiveColor" |
| | | :autoplay="swiperConfig.autoplay" :interval="swiperConfig.interval" :duration="swiperConfig.duration" |
| | | :circular="swiperConfig.circular" :previous-margin="swiperConfig.previousMargin" |
| | | :next-margin="swiperConfig.nextMargin" @change="swiperChange" @animationfinish="animationfinish"> |
| | | <swiper-item v-for="(item, i) in bannerList" :key="i"> |
| | | <!-- 1.当前展示为第1项时,bannerList最后一项和第二项的justifyContent值分别为flex-end和flex-start,其余项值为center --> |
| | | <!-- 2.当前展示为最后一项时,bannerList倒数第2项和第1项的justifyContent值分别为flex-end和flex-start,其余项值为center --> |
| | | <!-- 3.当前展示为其他项(非第1和最后1项)时,bannerList当前项的前1项和后1项的justifyContent值分别为flex-end和flex-start,其余项值为center --> |
| | | <!-- 4.padding值也需要根据不同项设定不同值,但理同justifyContent --> |
| | | <div class="image-container" :style="{ |
| | | transform: curIndex===i?'scale(' + scaleX + ',' + scaleY + ')':'scale(1,1)', |
| | | transitionDuration: '.3s', |
| | | transitionTimingFunction: 'ease' |
| | | }" :class="[curIndex===0?((i===listLen-1)?'item-left':(i===1?'item-right':'item-center')):(curIndex===listLen-1?(i===0?'item-right':(i===listLen-2?'item-left':'item-center')):(i===curIndex-1?'item-left':(i===curIndex+1?'item-right':'item-center')))]"> |
| | | <image :src="item.bg" class="slide-image" /> |
| | | <image :src="item.picture" class="icon-image" :class="[`v${i+1}`]" mode="aspectFit"></image> |
| | | <view class="container" :class="[`v${i+1}`]"> |
| | | <view class="title">{{bannerList[i].title}}</view> |
| | | <view class="line-component" v-if="bannerList[i].point"> |
| | | <view class="line-bg"> |
| | | <view class="tip" |
| | | :style="{'left':(bannerList[i].point.end&&(bannerList[i].point.current/bannerList[i].point.end)||0).toFixed(2)*100+'%'}"> |
| | | {{bannerList[i].point.current || 0}} |
| | | </view> |
| | | <view class="tip-loc" |
| | | :style="{'left':(bannerList[i].point.end&&(bannerList[i].point.current/bannerList[i].point.end)||0).toFixed(2)*100+'%'}"> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="desc"> |
| | | <span |
| | | v-if="bannerList[i].point.end">{{bannerList[i].point.current || 0}}/{{bannerList[i].point.end}},升级还需{{bannerList[i].point.end-bannerList[i].point.current}}成长值</span> |
| | | <span v-else>成长值:{{bannerList[i].point.current || 0}}</span> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </div> |
| | | </swiper-item> |
| | | </swiper> |
| | | <!-- <div class="desc-wrap" :class="[isDescAnimating?'hideAndShowDesc':'']"> |
| | | <div class="title">{{bannerList[descIndex].title}}</div> |
| | | <div class="desc">{{bannerList[descIndex].description}}</div> |
| | | </div> --> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | props: { |
| | | bannerList: { |
| | | type: Array, |
| | | default () { |
| | | return [] |
| | | } |
| | | }, |
| | | swiperConfig: { |
| | | type: Object, |
| | | default () { |
| | | return { |
| | | indicatorDots: true, |
| | | indicatorColor: 'rgba(255, 255, 255, .4)', |
| | | indicatorActiveColor: 'rgba(255, 255, 255, 1)', |
| | | autoplay: false, |
| | | interval: 3000, |
| | | duration: 300, |
| | | circular: true, |
| | | previousMargin: '58rpx', |
| | | nextMargin: '58rpx' |
| | | } |
| | | } |
| | | }, |
| | | scaleX: { |
| | | type: String, |
| | | default: (634 / 550).toFixed(4) |
| | | }, |
| | | scaleY: { |
| | | type: String, |
| | | default: (378 / 328).toFixed(4) |
| | | } |
| | | }, |
| | | computed: { |
| | | listLen() { |
| | | return this.bannerList.length |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | curIndex: 0, |
| | | descIndex: 0, |
| | | isDescAnimating: false |
| | | } |
| | | }, |
| | | methods: { |
| | | swiperChange(e) { |
| | | const that = this |
| | | this.curIndex = e.mp.detail.current |
| | | this.isDescAnimating = true |
| | | let timer = setTimeout(function() { |
| | | that.descIndex = e.mp.detail.current |
| | | clearTimeout(timer) |
| | | }, 150) |
| | | }, |
| | | animationfinish(e) { |
| | | this.isDescAnimating = false |
| | | }, |
| | | // getBannerDetail(index) { |
| | | // uni.showLoading({ |
| | | // title: '将前往详情页面', |
| | | // duration: 2000, |
| | | // mask: true |
| | | // }) |
| | | // } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .banner-container { |
| | | width: 100vw; |
| | | height: 454rpx; |
| | | |
| | | .image-container { |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | position: relative; |
| | | |
| | | .slide-image { |
| | | width: 550rpx; |
| | | height: 328rpx; |
| | | z-index: 200; |
| | | position: relative; |
| | | z-index: 0; |
| | | } |
| | | |
| | | .icon-image { |
| | | position: absolute; |
| | | right: 50rpx; |
| | | top: 26rpx; |
| | | z-index: 1; |
| | | background-size: 100% 100%; |
| | | width: 196rpx; |
| | | height: 254rpx; |
| | | } |
| | | |
| | | .icon-image.v4 { |
| | | top: 10rpx; |
| | | } |
| | | |
| | | .container { |
| | | position: absolute; |
| | | left: 90rpx; |
| | | right: 90rpx; |
| | | top: 90rpx; |
| | | bottom: 90rpx; |
| | | z-index: 1; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 56rpx; |
| | | line-height: 80rpx; |
| | | text-align: left; |
| | | margin-top: 60rpx; |
| | | font-style: normal; |
| | | } |
| | | |
| | | .line-component { |
| | | margin-top: 60rpx; |
| | | |
| | | .desc { |
| | | font-size: 24rpx; |
| | | font-weight: 600; |
| | | font-size: 24rpx; |
| | | // color: #7D5809; |
| | | line-height: 34rpx; |
| | | text-align: left; |
| | | margin-top: 16rpx; |
| | | } |
| | | |
| | | .line-bg { |
| | | width: 322rpx; |
| | | height: 12rpx; |
| | | // background: #A1B8CC; |
| | | border-radius: 6rpx; |
| | | position: relative; |
| | | |
| | | .tip-loc { |
| | | width: 22rpx; |
| | | height: 12rpx; |
| | | // background: #D7E5F3; |
| | | border-radius: 6rpx; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | border-radius: 6rpx; |
| | | } |
| | | |
| | | .tip { |
| | | min-width: 52rpx; |
| | | padding-left: 20rpx; |
| | | padding-right: 20rpx; |
| | | height: 28rpx; |
| | | font-size: 20rpx; |
| | | |
| | | // background: #D7E5F3; |
| | | // color: #85A7E3; |
| | | line-height: 28rpx; |
| | | text-align: center; |
| | | font-style: normal; |
| | | position: absolute; |
| | | left: 0; |
| | | top: -40rpx; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .container.v1 { |
| | | .title { |
| | | color: #7CC662; |
| | | } |
| | | |
| | | .line-component { |
| | | .desc { |
| | | color: #6DA05C; |
| | | } |
| | | |
| | | .line-bg { |
| | | background: #AECD96; |
| | | |
| | | .tip-loc { |
| | | background: #DEE9CF; |
| | | } |
| | | |
| | | .tip { |
| | | background: #DEE9CF; |
| | | color: #6DA05C; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .container.v2 { |
| | | .title { |
| | | color: #7498E0; |
| | | } |
| | | |
| | | .line-component { |
| | | .desc { |
| | | color: #809BB5; |
| | | } |
| | | |
| | | .line-bg { |
| | | background: #A1B8CC; |
| | | |
| | | .tip-loc { |
| | | background: #D7E5F3; |
| | | } |
| | | |
| | | .tip { |
| | | background: #D7E5F3; |
| | | color: #809BB5; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .container.v3 { |
| | | .title { |
| | | color: #C47810; |
| | | } |
| | | |
| | | .line-component { |
| | | .desc { |
| | | color: #7D5809; |
| | | } |
| | | |
| | | .line-bg { |
| | | background: #D1B067; |
| | | |
| | | .tip-loc { |
| | | background: #FFF0CE; |
| | | } |
| | | |
| | | .tip { |
| | | background: #FFF0CE; |
| | | color: #7D5809; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .container.v4 { |
| | | .title { |
| | | color: #DD834E; |
| | | } |
| | | |
| | | .line-component { |
| | | .desc { |
| | | color: #B66A2C; |
| | | } |
| | | |
| | | .line-bg { |
| | | background: #D69975; |
| | | |
| | | .tip-loc { |
| | | background: #FACAAE; |
| | | } |
| | | |
| | | .tip { |
| | | background: #FACAAE; |
| | | color: #B66A2C; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .item-left { |
| | | justify-content: flex-end; |
| | | padding: 56rpx 26rpx 0 0; |
| | | } |
| | | |
| | | .item-right { |
| | | justify-content: flex-start; |
| | | padding: 56rpx 0 0 26rpx; |
| | | } |
| | | |
| | | .item-center { |
| | | justify-content: center; |
| | | padding: 56rpx 0 0 0; |
| | | } |
| | | |
| | | .desc-wrap { |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | height: 98rpx; |
| | | padding: 24rpx 66rpx 0; |
| | | |
| | | .title { |
| | | width: 100%; |
| | | height: 42rpx; |
| | | line-height: 42rpx; |
| | | color: #222222; |
| | | font-size: 30rpx; |
| | | font-family: 'PingFangTC-Regular'; |
| | | font-weight: 600; |
| | | text-align: left; |
| | | } |
| | | |
| | | .desc { |
| | | margin-top: 4rpx; |
| | | width: 100%; |
| | | height: 34rpx; |
| | | line-height: 34rpx; |
| | | color: #999999; |
| | | font-size: 24rpx; |
| | | font-family: 'PingFangTC-Regular'; |
| | | text-align: left; |
| | | } |
| | | } |
| | | |
| | | @keyframes descAnimation { |
| | | 0% { |
| | | opacity: 1; |
| | | } |
| | | |
| | | 25% { |
| | | opacity: .5; |
| | | } |
| | | |
| | | 50% { |
| | | opacity: 0; |
| | | } |
| | | |
| | | 75% { |
| | | opacity: .5; |
| | | } |
| | | |
| | | 100% { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | |
| | | @-webkit-keyframes descAnimation { |
| | | 0% { |
| | | opacity: 1; |
| | | } |
| | | |
| | | 25% { |
| | | opacity: .5; |
| | | } |
| | | |
| | | 50% { |
| | | opacity: 0; |
| | | } |
| | | |
| | | 75% { |
| | | opacity: .5; |
| | | } |
| | | |
| | | 100% { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | |
| | | .hideAndShowDesc { |
| | | animation: descAnimation .3s ease 1; |
| | | -webkit-animation: descAnimation .3s ease 1; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | "quickapp" : {}, |
| | | /* 快应用特有相关 */ |
| | | "mp-weixin" : { |
| | | "appid" : "wx6d0ecc4e18710458", |
| | | "appid" : "wx1441324401626290", |
| | | "setting" : { |
| | | "urlCheck" : false, |
| | | "es6" : true, |
| | |
| | | if (code === 0) { |
| | | this.dto = { |
| | | ...this.dto, |
| | | ...data |
| | | ...data, |
| | | // pointGoodsList: [{ |
| | | // name: '1', |
| | | // num: 1, |
| | | // description: 'descriptiondescriptiondescriptiondescriptiondescription' |
| | | // }] |
| | | } |
| | | } |
| | | }, |
| | |
| | | id: this.id, |
| | | } |
| | | }) |
| | | |
| | | |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | //微信接口 |
| | |
| | | // this.showSales = false |
| | | // this.$forceUpdate() |
| | | // setTimeout(() => { |
| | | // uni.navigateBack() |
| | | // uni.navigateBack() |
| | | // }, 1200) |
| | | } |
| | | }, |
| | |
| | | </view> |
| | | </view> |
| | | <view v-for="(item,index) of list" :key="index"> |
| | | <view class="flower-info m-b-20 m-t-12 br-4" v-if="!showSales||showSales&&(submitForm.orderItemId == item.id)"> |
| | | <view class="flower-info m-b-20 m-t-12 br-4" |
| | | v-if="!showSales||showSales&&(submitForm.orderItemId == item.id)"> |
| | | <view class="supplier-name "> |
| | | <image class="icon-dp" src="/static/common/icon-dp.png"></image> |
| | | {{ item.supplierName || ''}} |
| | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="info-container bg-white br-4" v-if="!showSales"> |
| | | <view class="form-item"> |
| | | <view class="label">订单编号:</view> |
| | |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="info-container bg-white br-4 m-t-12" |
| | | v-if="!showSales&& dto.pointGoodsList&& dto.pointGoodsList.length>0"> |
| | | <view v-for="(item,j) of dto.pointGoodsList" :key="j" class="m-b-12"> |
| | | <view class="flower-info br-4"> |
| | | <view class="flex flex-wrap-normal"> |
| | | <image class="flower-img img100 br-4 m-r-6" :src="item.cover" @click="previewImg(item.cover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | | <view class="title"> |
| | | {{ item.name || ''}} |
| | | </view> |
| | | </view> |
| | | <view class="each-list" style="display: contents;"> |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item" style="min-width: unset;max-width: unset;"> |
| | | <view class="label" style="min-width: 55rpx;">描述</view> |
| | | <view class="value" style="word-break: break-all;text-align: left;">{{ item.description || '-' }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | |
| | | <view class="info-container bg-white br-4 m-t-12" v-if="!showSales"> |
| | | <view class="icon-view"> |
| | |
| | | <!-- #ifdef PUB_CUSTOMER_DEV -->
|
| | | <span class="member-level" @click="goto('/sub_pages/customer/self/member-center',true)"
|
| | | v-if="currentInfo&¤tInfo.customerDTO&¤tInfo.customerDTO.userGrowthRecord">
|
| | | <view v-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='普通会员'">
|
| | | <image class="member-icon v1"
|
| | | <view v-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='普通会员'" class="v1">
|
| | | <image class="member-icon" |
| | | src="../../static/images/customer/coupon/member/icon-member-1.png"></image>
|
| | | {{currentInfo.customerDTO.userGrowthRecord.currentMemberLevel}}
|
| | | <uni-icons color="#79C57B" type="right" size="18"></uni-icons>
|
| | | <uni-icons color="#7CC662" type="right" size="18"></uni-icons>
|
| | |
|
| | | </view>
|
| | | <view v-else-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='银卡会员'">
|
| | | <view v-else-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='银卡会员'" class="v2">
|
| | | <image class="member-icon v2"
|
| | | src="../../static/images/customer/coupon/member/icon-member-2.png"></image>
|
| | | {{currentInfo.customerDTO.userGrowthRecord.currentMemberLevel}}
|
| | | <uni-icons color="#96B1E9" type="right" size="18"></uni-icons>
|
| | | <uni-icons color="#7498E0" type="right" size="18"></uni-icons>
|
| | |
|
| | | </view>
|
| | | <view v-else-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='金卡会员'">
|
| | | <view v-else-if="currentInfo.customerDTO.userGrowthRecord.currentMemberLevel=='金卡会员'" class="v3">
|
| | | <image class="member-icon v3"
|
| | | src="../../static/images/customer/coupon/member/icon-member-3.png"></image>
|
| | | {{currentInfo.customerDTO.userGrowthRecord.currentMemberLevel}}
|
| | | <uni-icons color="#AD790F" type="right" size="18"></uni-icons>
|
| | | <uni-icons color="#C47810" type="right" size="18"></uni-icons>
|
| | | </view>
|
| | | <view v-else>
|
| | | <view v-else class="v4">
|
| | | <image class="member-icon v4"
|
| | | src="../../static/images/customer/coupon/member/icon-member-3.png"></image>
|
| | | src="../../static/images/customer/coupon/member/icon-member-4.png"></image>
|
| | | {{currentInfo.customerDTO.userGrowthRecord.currentMemberLevel}}
|
| | | <uni-icons color="#E4531C" type="right" size="18"></uni-icons>
|
| | | <uni-icons color="#DD834E" type="right" size="18"></uni-icons>
|
| | | </view>
|
| | |
|
| | |
|
| | |
| | | </view>
|
| | |
|
| | | <!-- #ifdef PUB_CUSTOMER_DEV -->
|
| | | <view class="user-utils m-20 coupon-info-container" @click="goto( `/sub_pages/customer/coupon/good-all`,true)"
|
| | | <view class="m-20 coupon-info-container" @click="goto( `/sub_pages/customer/coupon/good-all`,true)"
|
| | | v-if="selftype==='customer'||!selftype">
|
| | | <view>
|
| | | <view class="title">积分商城</view>
|
| | |
| | | .member-level{ |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #A3EBCD; |
| | | line-height: 44rpx; |
| | | text-align: left; |
| | | font-style: normal; |
| | |
| | | |
| | | .member-icon{ |
| | | display: inline-block; |
| | | vertical-align: bottom; |
| | | width: 48rpx; |
| | | height: 56rpx; |
| | | vertical-align: middle; |
| | | width: 57rpx; |
| | | height: 61rpx; |
| | | background-size: 100% 100%; |
| | | } |
| | | } |
| | | .member-level.v1{ |
| | | color: #A3EBCD; |
| | | .member-level .v1{ |
| | | color: #7CC662; |
| | | } |
| | | .member-level.v2{ |
| | | color: #96B1E9; |
| | | .member-level .v2{ |
| | | color: #7498E0; |
| | | } |
| | | .member-level.v3{ |
| | | color: #AD790F; |
| | | .member-level .v3{ |
| | | color: #C47810; |
| | | } |
| | | .member-level.v4{ |
| | | color: #E4531C; |
| | | .member-level .v4{ |
| | | color: #DD834E; |
| | | } |
| | | .coupon-info-container{ |
| | | display: flex; |
| | | // width: 690rpx; |
| | | padding: 22rpx 36rpx; |
| | | // height: 134rpx; |
| | | background: linear-gradient( 180deg, #FBECC1 0%, #E6CE9E 100%); |
| | | // background: linear-gradient( 180deg, #FBECC1 0%, #E6CE9E 100%); |
| | | // background: unset !important; |
| | | border-radius: 8rpx; |
| | | border: 2rpx solid; |
| | | border-image: linear-gradient(180deg, rgba(238, 217, 173, 1), rgba(219, 182, 105, 1)) 2 2; |
| | | // border: 2rpx solid; |
| | | // border-image: linear-gradient(180deg, rgba(238, 217, 173, 1), rgba(219, 182, 105, 1)) 2 2; |
| | | background-image: url('../../static/images/customer/coupon/coupon-bg-user.png'); |
| | | background-size: 100% 100%; |
| | | .title{ |
| | | font-weight: 600; |
| | | font-size: 36rpx; |
| | |
| | | 'shopnum': 0, |
| | | 'coupon': 0 |
| | | }, |
| | | cache: { |
| | | coupon: {}, |
| | | goods:[], |
| | | }, |
| | | defaultaddress: {} |
| | | }, |
| | | mutations: { |
| | |
| | | console.log('sign_clear', key) |
| | | state.sign[key] = 0 |
| | | }, |
| | | cache_coupon_select: async function({ |
| | | commit, |
| | | state |
| | | }, dto) { |
| | | state.cache['coupon'] = dto || {} |
| | | }, |
| | | cache_goods_select: async function({ |
| | | commit, |
| | | state |
| | | }, goods) { |
| | | state.cache['goods'] = goods || [] |
| | | }, |
| | | |
| | | // lazy loading openid |
| | | logout: async function({ |
| | | commit, |
| | |
| | | <template> |
| | | <view class="coupon-container"> |
| | | <view class="p10"> |
| | | <view class="p10" v-if="source!=='shopping'"> |
| | | <top-tabs :tabs="tabs" :flg="flg" @change="changeTab" type="coupon"> |
| | | |
| | | </top-tabs> |
| | |
| | | <view class=""> |
| | | <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data> |
| | | |
| | | <view v-for="(item,index) of list" :key="index" class="coupont-item" :class="[query.status]"> |
| | | <view v-for="(item,index) of list" :key="index" class="coupont-item" :class="[query.status]" |
| | | @click="selectCoupon(item)"> |
| | | <view class="flex container img100"> |
| | | <view class="info-price"> |
| | | <view class="price1"> |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view style="min-height: 130rpx;"></view> |
| | | <view class="bottom-button" @click="getCoupon">领取优惠券</view> |
| | | <view style="min-height: 130rpx;" v-if="source!=='shopping'"></view> |
| | | <view class="bottom-button" v-if="source!=='shopping'" @click="getCoupon">领取优惠券</view> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | query: { |
| | | status: 'unused' |
| | | }, |
| | | list: [] |
| | | list: [], |
| | | source: '' |
| | | |
| | | } |
| | | }, |
| | | async onLoad() { |
| | | this.listApi = '/api/v2/coupon/app' + `/mine/${this.query.status}/list` |
| | | async onLoad(options) { |
| | | if (options.source) { |
| | | this.source = options.source || '' |
| | | } |
| | | if (this.source === 'shopping') { |
| | | //只展示可用的 |
| | | this.page.size = 100 |
| | | this.listApi = '/api/v2/coupon/app' + `/mine/unused/list` |
| | | |
| | | } else { |
| | | this.listApi = '/api/v2/coupon/app' + `/mine/${this.query.status}/list` |
| | | |
| | | } |
| | | await this.$store.dispatch('sign_clear', 'coupon') |
| | | |
| | | this.getList() |
| | | }, |
| | | |
| | | onReachBottom() { |
| | | this.getMore() |
| | | }, |
| | | methods: { |
| | | async selectCoupon(item) { |
| | | if (this.source == 'shopping') { |
| | | await this.$store.dispatch('cache_coupon_select', item) |
| | | uni.navigateBack() |
| | | } |
| | | }, |
| | | changeTab(flg) { |
| | | this.flg = '' + flg |
| | | this.query.status = this.tabs[flg].status |
| | |
| | | <view class="flex point-info"> |
| | | <view class="point-record m-r-a"> |
| | | <view class="text-center title">我的积分</view> |
| | | <view class="flex"> |
| | | <view class="flex" @click="goto('/sub_pages/customer/coupon/point-history',true)"> |
| | | <image src="../../../static/images/customer/coupon/icon-point.png" class="point-icon"> |
| | | </image> |
| | | {{currentInfo.currentPoint || 0}} |
| | |
| | | <template> |
| | | <view class="coupon-container"> |
| | | <view class="p10"> |
| | | <view class="p10" v-if="source!=='shopping'"> |
| | | <top-tabs :tabs="tabs" :flg="flg" @change="changeTab" type="coupon"> |
| | | |
| | | </top-tabs> |
| | |
| | | <view class="time word-e"> |
| | | {{item.description||''}} |
| | | </view> |
| | | <view class="button" @click="getPointGood(item)"> |
| | | <view class="button" @click="getPointGood(item)" v-if="source!=='shopping'"> |
| | | 查看详情 |
| | | </view> |
| | | <view class="button" @click="updateSelectGood(item)" v-if="source=='shopping'"> |
| | | {{isIngood(item)?'移除':'添加'}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="tip"> |
| | | <!-- <view class="tip"> |
| | | <span class="t-red">*</span>此券每人限领1张。仅限用于花满芜鲜花交易平台鲜切花花款满额使用,不可与其他优惠同享、不可叠加使用 |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | </view> |
| | | <!-- <view style="min-height: 130rpx;"></view> --> |
| | | <view style="min-height: 130rpx;" v-if="source=='shopping'"></view> |
| | | <view class="bottom-button" @click="backpage()" v-if="source=='shopping'">返回订单结算</view> |
| | | |
| | | <!-- <view class="bottom-button" @click="toGoodAll">前往兑换</view> --> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | mapState |
| | | } from 'vuex' |
| | | export default { |
| | | computed: { |
| | | ...mapState({ |
| | | cache_goods: state => { |
| | | return state.cache.goods || [] |
| | | }, |
| | | }), |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | flg: 0, |
| | |
| | | query: { |
| | | status: 'A' |
| | | }, |
| | | list: [] |
| | | list: [], |
| | | source: '' |
| | | |
| | | } |
| | | }, |
| | | async onLoad() { |
| | | this.listApi = '/api/customer/point/goods/exchange/list' |
| | | onReachBottom() { |
| | | this.getMore() |
| | | }, |
| | | async onLoad(options) { |
| | | if (options.source) { |
| | | this.source = options.source || '' |
| | | } |
| | | if (this.source === 'shopping') { |
| | | //只展示可用的 |
| | | this.page.size = 100 |
| | | this.listApi = '/api/customer/point/goods/exchange/list' |
| | | } else { |
| | | this.listApi = '/api/customer/point/goods/exchange/list' |
| | | } |
| | | |
| | | this.getList() |
| | | }, |
| | | |
| | | methods: { |
| | | isIngood(item) { |
| | | for (var tmp of this.cache_goods) { |
| | | if (tmp.id == item.id) { |
| | | return true |
| | | } |
| | | } |
| | | |
| | | return false |
| | | }, |
| | | async updateSelectGood(item) { |
| | | var has = false |
| | | for (var tmp of this.cache_goods) { |
| | | if (tmp.id == item.id) { |
| | | has = true |
| | | break |
| | | } |
| | | } |
| | | var arr = [] |
| | | |
| | | if (has) { |
| | | //移除 |
| | | var arr = [] |
| | | for (var tmp of this.cache_goods) { |
| | | if (tmp.id == item.id) {} else { |
| | | arr.push(tmp) |
| | | } |
| | | } |
| | | } else { |
| | | //添加 |
| | | for (var tmp of this.cache_goods) { |
| | | arr.push(tmp) |
| | | } |
| | | arr.push(item) |
| | | } |
| | | await this.$store.dispatch('cache_coupon_select', arr) |
| | | this.$forceUpdate() |
| | | |
| | | }, |
| | | changeTab(flg) { |
| | | this.flg = '' + flg |
| | | this.query.status = this.tabs[flg].status |
| | |
| | | <template> |
| | | <!-- 列表页面 --> |
| | | <view> |
| | | |
| | | <view class="p15" style="min-height: calc(100vh - 260rpx);"> |
| | | <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data> |
| | | <view v-for="(item,index) in list" :key="index" class="m-b-24"> |
| | | <view @click.stop="toDetail(item)" class="notice-item"> |
| | | <view v-if="item.typeStr" class="type">{{item.typeStr||'-'}}</view> |
| | | <view class="time">{{item.recordDate || ''}}</view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label">变更类型</view> |
| | | <view class="form-item-value">{{item.changeTypeStr || ''}}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label">积分</view> |
| | | <view class="form-item-value">{{item.point || ''}}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label">备注</view> |
| | | <view class="form-item-value">{{item.remarks || ''}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 判断是否到底了,自动吧 --> |
| | | <footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | query: { |
| | | // status: '' |
| | | } |
| | | } |
| | | }, |
| | | onLoad() { |
| | | |
| | | |
| | | this.listApi = '/api/customer/point/list' |
| | | |
| | | this.getList() |
| | | |
| | | }, |
| | | onReachBottom() { |
| | | this.getMore() |
| | | }, |
| | | async onPullDownRefresh() { |
| | | this.page.current = 1 |
| | | await this.getList() |
| | | uni.stopPullDownRefresh() |
| | | }, |
| | | methods: { |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | <style lang="scss" scoped> |
| | | .notice-item { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | background-color: #fff; |
| | | |
| | | </style> |
| | | .type { |
| | | font-weight: 600; |
| | | |
| | | } |
| | | |
| | | .time { |
| | | font-size: 24rpx; |
| | | color: darkgray; |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | |
| | | .form-item-label {} |
| | | |
| | | .form-item-value { |
| | | flex: 1; |
| | | text-align: right; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <view class="trade-list-container"> |
| | | <view class="trade-info-container flex" :class="[dto.status!=='UP'?'OFF':'']" v-for="(dto,index) of list" |
| | | :key="index"> |
| | | <image class="img img100 br-4 m-r-10" :class="[!dto.stock?'component-stock-zero':'']" |
| | | <image class="img img100 br-4 m-r-10" :class="[!dto.stock?'component-stock-zero':'',dto.status!=='UP'?'component-status-zero':'']" |
| | | :src="dto.url||dto.cover" @click.stop="toDetail(dto)"></image> |
| | | <view class="flex1"> |
| | | <view class="flex" @click.stop="toDetail(dto)"> |
| | |
| | | <view class="trade-list-container"> |
| | | <view class="trade-info-container flex" :class="[dto.status!=='UP'?'OFF':'']" v-for="(dto,index) of list" |
| | | :key="index"> |
| | | <image class="img img100 br-4 m-r-10" :class="[!dto.stock?'component-stock-zero':'']" |
| | | <image class="img img100 br-4 m-r-10" :class="[!dto.stock?'component-stock-zero':'',dto.status!=='UP'?'component-status-zero':'']" |
| | | :src="dto.url||dto.cover" @click.stop="toDetail(dto)"></image> |
| | | <view class="flex1"> |
| | | <view class="flex" @click.stop="toDetail(dto)"> |
| | |
| | | <template> |
| | | <view> |
| | | |
| | | <view class="member-center"> |
| | | <image src="../../../static/images/customer/coupon/member/member-level-bg.png" mode="aspectFit" |
| | | class="img100 member-level-image"></image> |
| | | <view class="banner"> |
| | | <banner3d ref="banner3d" v-if="init" :banner-list="bannerList" :swiper-config="swiperConfig"></banner3d> |
| | | </view> |
| | | <view class="p20" style="padding-top: 0rpx;"> |
| | | <view class="info bg-white p20"> |
| | | <view class="flex"> |
| | | <view>成长值规则</view> |
| | | <view class="m-l-a m-r-0 text-right desc-gray" @click="goto('/pages/help/content?id=会员协议',false)">点击查看会员协议 |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="info bg-white p20 m-t-20" |
| | | v-if="currentInfo.customerDTO&¤tInfo.customerDTO.userGrowthRecord |
| | | &¤tInfo.customerDTO.userGrowthRecord.targetMemberInfos&¤tInfo.customerDTO.userGrowthRecord.targetMemberInfos.length>=1"> |
| | | <view class="text-center desc-gray"> |
| | | ———————— 会员权益 ———————— |
| | | </view> |
| | | <view> |
| | | <view class="m-t-12">积分达到 |
| | | {{currentInfo.customerDTO.userGrowthRecord.targetMemberInfos[0].targetStartPoint || '-'}}</view> |
| | | <view class="m-t-12">优惠 |
| | | {{currentInfo.customerDTO.userGrowthRecord.targetMemberInfos[0].targetDiscountAmount || '-'}}元/扎 |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="info bg-white p20 m-t-20"> |
| | | <view class="text-center desc-gray"> |
| | | ————— 成长值获取规则 ————— |
| | | </view> |
| | | <view class="m-t-12"> |
| | | 每消费1元,即可获得1成长值。 |
| | | 成长值将在订单交易完成后,根据实际交易金额进行赠送。 |
| | | 消费越多,获得的成长值越多,享受更高等级的会员权益。 |
| | | 快来参与消费,累积成长值,解锁更多专属福利吧! |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import banner3d from '@/components/banner3d/banner3d' |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | methods: { |
| | | |
| | | }, |
| | | onLoad() { |
| | | if (this.currentInfo.customerDTO && this.currentInfo.customerDTO.userGrowthRecord && this.currentInfo |
| | | .customerDTO.userGrowthRecord.currentMemberLevel) { |
| | | // userGrowthRecord: {currentMemberLevel: "普通会员", currentGrowthValue: 6919,…} |
| | | // currentGrowthValue: 6919 |
| | | // currentMemberLevel: "普通会员" |
| | | // targetMemberInfos: [{targetMemberLevel: "金卡会员", targetStartPoint: 15001, targetGap: 8082, targetDiscountAmount: 0.4},…] |
| | | // 0: {targetMemberLevel: "金卡会员", targetStartPoint: 15001, targetGap: 8082, targetDiscountAmount: 0.4} |
| | | // targetDiscountAmount: 0.4 |
| | | // targetGap: 8082 |
| | | // targetMemberLevel: "金卡会员" |
| | | // targetStartPoint: 15001 |
| | | // 1: {targetMemberLevel: "钻石会员", targetStartPoint: 10001, targetGap: 3082, targetDiscountAmount: 0.5} |
| | | // targetDiscountAmount: 0.5 |
| | | // targetGap: 3082 |
| | | // targetMemberLevel: "钻石会员" |
| | | // targetStartPoint: 10001 |
| | | //计算下一个等级的差距 |
| | | for (var tmp of this.bannerList) { |
| | | tmp.point = { |
| | | current: this.currentInfo.customerDTO.userGrowthRecord.currentGrowthValue || 0 |
| | | } |
| | | } |
| | | if (this.currentInfo.customerDTO.userGrowthRecord.targetMemberInfos) { |
| | | var t = -1 |
| | | for (var tmp of this.bannerList) { |
| | | t += 1 |
| | | for (var k of this.currentInfo.customerDTO.userGrowthRecord.targetMemberInfos) { |
| | | if (tmp.title === k.targetMemberLevel) { |
| | | console.log('eq', k, tmp) |
| | | tmp.point = { |
| | | current: this.currentInfo.customerDTO.userGrowthRecord.currentGrowthValue || 0, |
| | | end: k.targetStartPoint || 0, |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | this.init = true |
| | | this.$nextTick(() => { |
| | | var name = this.currentInfo.customerDTO.userGrowthRecord.currentMemberLevel |
| | | var index = -1 |
| | | for (var tmp of this.bannerList) { |
| | | index += 1 |
| | | if (tmp.title === name) { |
| | | this.$refs.banner3d.swiperChange({ |
| | | mp: { |
| | | detail: { |
| | | current: index |
| | | } |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | }) |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | } |
| | | data() { |
| | | return { |
| | | init: false, |
| | | bannerList: [{ |
| | | bg: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/d3/d31e9011d1c140068942c106c2f7e37bTFDUPzQRgaHx7a20dcefe1fb5eb12e18d294b8c1f86e.png', |
| | | picture: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/ef/ef96604518db467fbd344c08e48d1fac8jZdk1ED0Yq023d4f86c2ec36975c981ba522c2bfe3f.png', |
| | | title: '普通会员', |
| | | // description: '一万年太久,就现在,给你爱', |
| | | path: '', |
| | | point: undefined |
| | | }, { |
| | | bg: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/cf/cff11dd119174483a46858ace7ddc2a3lJlA3kEXom5H82b85fac5f2db00d50ece7e650207f78.png', |
| | | picture: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/07/075db9222f7a41e981c5b263d7210ed5Ztljs5yDHKILd37c3399011f84f401b755477bb8a323.png', |
| | | title: '银卡会员', |
| | | // description: '花中樱,鱼乃鲷花中樱,鱼乃鲷', |
| | | path: '' |
| | | }, { |
| | | bg: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/5b/5b9bcdeb29ab4ab7a7a7871e430e9180kwtx0q4ovEGpe93cd3cc7772e4b31a6cfea199663815.png', |
| | | picture: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/f1/f192b651606045ddba5c5f04a34a00c2R8MmH6mVsprH81cab47fbe889222f6088f4ca2cf20d5.png', |
| | | title: '金卡会员', |
| | | // description: '取材自湘西苗族传统的烟熏文化', |
| | | path: '' |
| | | }, { |
| | | bg: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/ce/ce13a8fe5d7d48aeb6e6dec8217d8cbeWia6N8vcYrbse93cd3cc7772e4b31a6cfea199663815.png', |
| | | picture: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/c9/c94d8f444af94b899d1e1593cebb933eDyZyhyoyDxTRaf60a4d692f097e5d790cdb88fae9d0c.png', |
| | | title: '钻石会员', |
| | | // description: '在自己的小世界里,日日好日,夜夜好清宵', |
| | | path: '' |
| | | }], |
| | | swiperConfig: { |
| | | indicatorDots: true, |
| | | indicatorColor: 'rgba(255, 255, 255, .4)', |
| | | indicatorActiveColor: 'rgba(255, 255, 255, 1)', |
| | | autoplay: false, |
| | | interval: 3000, |
| | | duration: 300, |
| | | circular: true, |
| | | previousMargin: '58rpx', |
| | | nextMargin: '58rpx' |
| | | } |
| | | } |
| | | }, |
| | | components: { |
| | | banner3d |
| | | }, |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | <style lang="scss" scoped> |
| | | .member-center { |
| | | position: relative; |
| | | |
| | | </style> |
| | | .banner { |
| | | position: relative; |
| | | z-index: 10; |
| | | padding-top: 160rpx; |
| | | } |
| | | |
| | | .member-level-image { |
| | | width: 750rpx; |
| | | min-height: 530rpx; |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | top: 0; |
| | | z-index: 1; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | address: state => { |
| | | return state.defaultaddress || {} |
| | | }, |
| | | cache_coupon: state => { |
| | | return state.cache.coupon || {} |
| | | }, |
| | | cache_goods: state => { |
| | | return state.cache.goods || [] |
| | | }, |
| | | }), |
| | | coupon_fee() { |
| | | //优惠券 |
| | | if (this.dto.couponRecordId && this.cache_coupon) { |
| | | //计算优惠券 |
| | | if (this.cache_coupon.couponDiscountType === 'zero') { |
| | | return this.cache_coupon.couponDiscountValue || 0 |
| | | } else if (this.cache_coupon.minOrderAmount && this.cache_coupon.minOrderAmount > 0) { |
| | | var total = ((dto.totalAmount || 0) + (dto.packing || 0) + (current_transport.fee || 0) || 0) |
| | | .toFixed(2) |
| | | if (total >= this.cache_coupon.minOrderAmount) { |
| | | return this.cache_coupon.couponDiscountValue || 0 |
| | | } |
| | | } else { |
| | | return this.cache_coupon.couponDiscountValue || 0 |
| | | } |
| | | } |
| | | |
| | | return 0 |
| | | } |
| | | |
| | | }, |
| | | async beforeDestroy() { |
| | | await this.$store.dispatch('cache_coupon_select', {}) |
| | | await this.$store.dispatch('cache_goods_select', []) |
| | | |
| | | }, |
| | | async onShow() { |
| | | |
| | | //优惠券 |
| | | if (this.cache_coupon && this.cache_coupon.id) { |
| | | this.dto.couponRecordId = this.cache_coupon.id |
| | | this.dto.couponRecordStr = this.cache_coupon.couponName |
| | | } |
| | | //兑换券 |
| | | this.dto.couponRecordStr = '' |
| | | if (this.cache_goods && this.cache_goods.length > 0) { |
| | | this.dto.couponRecordStr = '' |
| | | var names = [] |
| | | for (var tmp of this.cache_goods) { |
| | | names.push(tmp.name || tmp.title || '') |
| | | } |
| | | this.dto.couponRecordStr = names.join(',') |
| | | } |
| | | }, |
| | | onLoad(options) { |
| | | // console.log('dto',options) |
| | |
| | | transportId: '', |
| | | addressId: '', |
| | | flowers: [], |
| | | couponRecordId: '', |
| | | couponRecordStr: '', |
| | | goodsRecordIdListStr: '', |
| | | }, |
| | | current_transport: {}, |
| | | cacheAddressId: '', |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | toSelectCoupon() { |
| | | //跳转去列表页面进行选择 |
| | | uni.navigateTo({ |
| | | url: '/sub_pages/customer/coupon/coupon-self?source=shopping' |
| | | }) |
| | | }, |
| | | toSelectGood() { |
| | | //跳转去列表页面进行选择 |
| | | uni.navigateTo({ |
| | | url: '/sub_pages/customer/coupon/good-self?source=shopping' |
| | | }) |
| | | }, |
| | | select_need(e) { |
| | | this.show_select_need = false |
| | | this.dto.specialNeedsStr = e.value[0].label |
| | |
| | | }) |
| | | tmp.$message.hideLoading() |
| | | if (code === 0) { |
| | | //清空优惠券 |
| | | this.$store.dispatch('cache_coupon_select', {}) |
| | | this.$store.dispatch('cache_goods_select', []) |
| | | |
| | | //提交信息 |
| | | console.log('pay,', data) |
| | | // /api/pub/init/callback?orderId= |
| | |
| | | </view> |
| | | |
| | | <view class="p10 bg-white m-t-20 br-4"> |
| | | <!-- #ifdef PUB_CUSTOMER_DEV --> |
| | | <view class="form-item flex "> |
| | | <view class="label">优惠券</view> |
| | | |
| | | <view class="m-l-a m-r-0 flex " :class="[!dto.couponRecordId?'desc-gray':'']" |
| | | @click="toSelectCoupon"> |
| | | <view>{{dto.couponRecordStr||dto.couponRecordId || '请选择'}}</view> |
| | | <u-icon class="m-l-a" name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- #endif --> |
| | | |
| | | <view class="form-item flex m-t-12"> |
| | | <view class="label">特殊需求</view> |
| | | |
| | | <view class="m-l-a m-r-0 flex " :class="[!dto.specialNeeds?'desc-gray':'']" @click="()=>{ |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #ifdef PUB_CUSTOMER_DEV --> |
| | | <view class="form-item flex "> |
| | | <view class="label">兑换券</view> |
| | | |
| | | <view class="m-l-a m-r-0 flex " |
| | | :class="[!dto.goodsRecordIdList||dto.goodsRecordIdList.length==0?'desc-gray':'']" |
| | | @click="toSelectGood"> |
| | | <view>{{dto.goodsRecordIdListStr|| '请选择'}}</view> |
| | | <u-icon class="m-l-a" name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- #endif --> |
| | | </view> |
| | | |
| | | </view> |
| | |
| | | {{ (current_transport.fee || 0) }} |
| | | </view> |
| | | </view> |
| | | <view class="desc flex"> |
| | | <view>优惠:</view> |
| | | <view class="m-l-a m-r-0 text-right"> |
| | | -{{ coupon_fee || 0 }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | |
| | | <view class="bottom-price flex"> |
| | | <view class="m-t-12 m-l-0 m-r-a"> |
| | | 合计 <span class="t-red">¥ |
| | | {{ ((dto.totalAmount || 0) + (dto.packing || 0) + (current_transport.fee || 0) || 0).toFixed(2) }} </span>元 |
| | | {{ ((dto.totalAmount || 0) + (dto.packing || 0) + (current_transport.fee || 0) - coupon_fee || 0).toFixed(2) }} |
| | | </span>元 |
| | | </view> |
| | | <view class="button-green-1 m-l-a m-r-0" style="min-width: 240rpx" @click="submitOrder"> |
| | | 提交订单 |