1.付款:改成15分钟,并使用服务器时间进行倒计时
2.优惠券中心:已经领取(达到最大次数),显示已领取且置灰,未领取根据创建时间放前面,已领取根据首次时间正序排序
3.购物车-提交订单:自动根据订单金额选择合适优惠券
已修改7个文件
168 ■■■■ 文件已修改
pages/order/order-detail.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/order/order.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
store/index.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/coupon/coupon-all.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/coupon/coupon-self.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/shopping/confirm.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/shopping/shopping.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/order/order-detail.vue
@@ -45,9 +45,17 @@
                if (this.dto.statusBackend === 'PENDING' || this.dto.status === 'PENDING') {
                    this.timer = setInterval(() => {
                    this.timer = setInterval(async () => {
                        //倒计时,修改成
                        // var nowdate = new Date().getTime() - 1000 * 60 * 15
                        let res = await this.$http.request('get', `/api/order/time/now`, {
                            params: {}
                        })
                        let serverTime=res.data;
                        //倒计时
                        var nowdate = new Date().getTime() - 1000 * 60 * 5
                        var nowdate = serverTime - 1000 * 60 * 15
                        var change = false
                        //计算倒计时
@@ -74,7 +82,9 @@
                            } else {
                                tt = alltime
                            }
                            this.dto.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
                            // this.dto.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
                            this.dto.bctime = `${parseInt(alltime / 60) < 10 ? '0' : ''}${parseInt(alltime / 60)}:${tt < 10 ? '0' : ''}${tt}`
                            change = true
                        }
@@ -187,8 +197,13 @@
                        // }]
                    }
                    if (this.dto.statusBackend === 'PENDING') {
                        let res = await this.$http.request('get', `/api/order/time/now`, {
                            params: {}
                        })
                        let serverTime=res.data;
                        //先判断要不要字节变成已取消
                        var nowdate = new Date().getTime() - 1000 * 60 * 5
                        var nowdate = serverTime - 1000 * 60 * 15
                        // var nowdate = new Date().getTime() - 1000 * 60 * 5
                        var diff = new Date(this.dto.createTime).getTime() - nowdate
                        if (diff <= 2000 && true) {
pages/order/order.vue
@@ -46,13 +46,22 @@
            this.query.status = options.status || ''
            this.listApi = `/api/customer/order/list`
            await this.getList()
            this.timer = setInterval(() => {
            this.timer = setInterval(async () => {
                let res = await this.$http.request('get', `/api/order/time/now`, {
                    params: {}
                })
                let serverTime=res.data;
                //倒计时
                var nowdate = new Date().getTime() - 1000 * 60 * 5
                var nowdate = serverTime - 1000 * 60 * 15
                // var nowdate = new Date().getTime() - 1000 * 60 * 5
                var change = false
                for (var item of this.list) {
                    if (item.statusBackend === 'PENDING') {
                        //计算倒计时
                        var diff = new Date(item.createTime).getTime() - nowdate
                        // console.log('diff', diff, item)
                        if (diff <= 2000 && true) {
@@ -74,7 +83,8 @@
                            } else {
                                tt = alltime
                            }
                            item.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
                            // item.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
                            item.bctime = `${parseInt(alltime / 60) < 10 ? '0' : ''}${parseInt(alltime / 60)}:${tt < 10 ? '0' : ''}${tt}`
                            change = true
                        }
@@ -136,8 +146,17 @@
                    url: `/sub_pages/customer/trade/detail?id=${item.flowerId}`
                })
            },
            getList_after() {
                var nowdate = new Date().getTime() - 1000 * 60 * 5
            async getList_after() {
                let res = await this.$http.request('get', `/api/order/time/now`, {
                    params: {}
                })
                let serverTime=res.data;
                //倒计时
                var nowdate = serverTime - 1000 * 60 * 15
                // var nowdate = new Date().getTime() - 1000 * 60 * 15
                var change = false
                for (var item of this.list) {
                    if (item.statusBackend === 'PENDING') {
store/index.js
@@ -38,6 +38,7 @@
        cache: {
            coupon: {},
            goods:[],
            cache_coupon_select_cancel:0
        },
        defaultaddress: {},
        addressDesc:'',
@@ -138,6 +139,14 @@
        }, dto) {
            state.cache['coupon'] = dto || {}
        },
        cache_coupon_select_cancel: async function({
            commit,
            state
        }, val) {
            state.cache['cache_coupon_select_cancel'] = val || 0
        },
        cache_goods_select: async function({
            commit,
            state
sub_pages/customer/coupon/coupon-all.vue
@@ -3,7 +3,7 @@
        <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 all">
            <view v-for="(item,index) of list" :key="index" class="coupont-item all" :class="[item.getYetFlag]">
                <view class="flex container img100">
                    <view class="info-price">
                        <view class="price1">
@@ -18,8 +18,11 @@
                        <view class="time">
                            领取后{{item.usageTimeNum||''}}{{item.usageTimeTypeName||''}}有效
                        </view>
                        <view class="button" @click="getCoupon(item)">
                        <view v-if="!item.getYetFlag" class="button" @click="getCoupon(item)">
                            立即领取
                        </view>
                        <view v-else class="button" >
                            已领取
                        </view>
                    </view>
                </view>
@@ -79,5 +82,14 @@
<style lang="scss" scoped>
    @import './coupon.scss';
    .coupon-container {}
    .coupon-container {
        .coupont-item.true {
            filter: grayscale(100%);
            .img-has {
                display: unset;
            }
        }
    }
</style>
sub_pages/customer/coupon/coupon-self.vue
@@ -41,7 +41,7 @@
                        
                    </view>
                    
                    .
                </view>
                <view class="tip">
                    <span
@@ -119,6 +119,7 @@
                    if (this.cache_coupon.id === item.id) {
                        await this.$message.confirm('是否取消使用此优惠券')
                        await this.$store.dispatch('cache_coupon_select', {})
                        await this.$store.dispatch('cache_coupon_select_cancel', 1)
                        uni.navigateBack()
                        return
                    }
@@ -150,6 +151,7 @@
                        }
                    }
                    await this.$store.dispatch('cache_coupon_select', item)
                    await this.$store.dispatch('cache_coupon_select_cancel', 0)
                    uni.navigateBack()
                }
            },
@@ -184,6 +186,9 @@
                cache_goods: state => {
                    return state.cache.goods || []
                },
                cache_coupon_select_cancel: state => {
                    return state.cache.cache_coupon_select_cancel==1?1:0
                },
            }),
        }
    }
sub_pages/customer/shopping/confirm.vue
@@ -17,9 +17,50 @@
                cache_goods: state => {
                    return state.cache.goods || []
                },
                cache_coupon_select_cancel: state => {
                    return state.cache.cache_coupon_select_cancel==1?1:0
                },
            }),
            coupon_fee() {
                //优惠券
                // 查看当前有没有优惠券
                if(!this.dto.couponRecordId || !this.cache_coupon ){
                    // 根据优惠券的列表,查找到最合适的优惠券
                    // 遍历优惠券的使用金额大于当前金额的,获取面值最大的优惠券取最大值couponDiscountValue
                    var total = (this.dto.totalMemberAmount || this.dto.totalAmount || 0).toFixed(2)
                    if(total && total>0){
                        // 获取当前用户最合适的优惠券
                        let res= this.$http.request('get', '/api/v2/coupon/app/mine/unused/fit', {
                            params: {orderAmount:total}
                        }).then(async res => {
                            let tmpCoupon = res.data;
                            if (tmpCoupon) {
                                if(this.cache_coupon_select_cancel==0){
                                    console.log("自动为您选择优惠最大的优惠券")
                                    await this.$store.dispatch('cache_coupon_select', tmpCoupon);
                                    this.dto.couponRecordId = tmpCoupon.id;
                                    this.dto.couponRecordStr = tmpCoupon.couponName;
                                    setTimeout(() => {
                                        this.$message.showToast('自动为您选择优惠最大的优惠券')
                                    }, 2000)
                                }else{
                                    console.log("清空")
                                    await this.$store.dispatch('cache_coupon_select', {});
                                    this.dto.couponRecordId ="";
                                    this.dto.couponRecordStr = "";
                                }
                            }
                        }).catch(error => {
                            console.error('获取优惠券失败:', error);
                        });
                    }
                }
                if (this.dto.couponRecordId && this.cache_coupon) {
                    //计算优惠券
                    if (this.cache_coupon.couponDiscountType === 'zero') {
@@ -44,9 +85,14 @@
                return 0
            },
            order_fee() {
                // 如果订单-优惠券<0,就等于0 +打包+运费,如果还等于0,那么就0.01
                var m1 = parseFloat(this.dto.totalMemberAmount || this.dto.totalAmount || 0)
                var m2 = parseFloat((this.dto.packing || 0) + (this.current_transport.fee || 0))
                // 统一处理 Promise 和普通值
                // var couponFee = await this.coupon_fee;
                if (m1 <= parseFloat(this.coupon_fee)) {
                    if (m2 > 0) {
@@ -64,9 +110,12 @@
        async beforeDestroy() {
            await this.$store.dispatch('cache_coupon_select', {})
            await this.$store.dispatch('cache_goods_select', [])
            await this.$store.dispatch('cache_coupon_select_cancel', 0)
        },
        async onShow() {
        onShow() {
            // 获取当前用户为使用的优惠券
            // this.getSuitableCouponAuto()
            //优惠券
            if (this.cache_coupon && this.cache_coupon.id) {
                this.dto.couponRecordId = this.cache_coupon.id
@@ -153,6 +202,7 @@
                    couponRecordId: '',
                    couponRecordStr: '',
                    goodsRecordIdListStr: '',
                    unusedCouponList:[],
                },
                current_transport: {},
                cacheAddressId: '',
@@ -162,6 +212,7 @@
                    []
                ],
                partnerInfo: {},
                isShowFlag:true,
            }
        },
@@ -181,6 +232,20 @@
            }
        },
        methods: {
            async getSuitableCouponAuto(){
                //1.提交订单后,根据订单的商品金额,判断是否达到优惠券使用条件,如果达到,自动选择面值最大的优惠券,用户也可以在优惠券自己切换优惠券或不使用优惠券
                    await this.$http.request('get', '/api/v2/coupon/app/mine/unused/list', {
                        params: {}
                    }).then(res => {
                        var data = res.data
                        this.unusedCouponList = data.list || []
                    })
            },
            toSelectCoupon() {
                //跳转去列表页面进行选择
                var total = ((this.dto.totalMemberAmount || this.dto.totalAmount || 0) + (this.dto.packing || 0) + (this
@@ -441,12 +506,12 @@
            <view class="p10 bg-white m-t-20 br-4">
                <view class="form-item  flex ">
                    <view class="label">优惠券</view>
                    <view class="label t-red">优惠券</view>
                    <view class="m-l-a m-r-0 flex " :class="[!dto.couponRecordId?'desc-gray':'']"
                    <view class="m-l-a m-r-0 flex t-red" :class="[!dto.couponRecordId?'desc-gray':'']"
                        @click="toSelectCoupon">
                        <view>{{dto.couponRecordStr||dto.couponRecordId || '请选择'}}</view>
                        <u-icon class="m-l-a" name="arrow-right"></u-icon>
                        <u-icon class="m-l-a t-red" name="arrow-right"></u-icon>
                    </view>
                </view>
@@ -507,10 +572,10 @@
                </view>
            </view>
            <view class="desc flex" v-if="cache_coupon&&cache_coupon.id">
                <view>
                <view class="t-red">
                    优惠({{cache_coupon.couponDiscountType=='zero'?'无门槛':(cache_coupon.minOrderAmount?(`满¥${cache_coupon.minOrderAmount}可用`):'无门槛')}},优惠¥{{cache_coupon.couponDiscountValue||'0'}}):
                </view>
                <view class="m-l-a m-r-0 text-right">
                <view class="m-l-a m-r-0 text-right t-red">
                    -{{ coupon_fee || 0 }}
                </view>
            </view>
@@ -539,6 +604,10 @@
    .page-confirm {
        padding: 20rpx 30rpx;
        .border-red {
            border: 1px solid red;
        }
        .bottom-price {
            position: fixed;
            background-color: #ffffff;
sub_pages/customer/shopping/shopping.vue
@@ -176,6 +176,7 @@
            },
            async submitPay() {
                await this.$store.dispatch('cache_coupon_select_cancel', 0)
                // order/confirm/info
                var arr = []
                for (var j = 0; j < this.list.length; j++) {