xuxueyang
2024-09-19 4f5cbfb0878d0d35ce01b7c32ade1807c067fd27
add 签到和其他页面细节
已修改8个文件
已添加4个文件
436 ■■■■■ 文件已修改
mixin/mixin.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/user/supplier-user.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/user/user-customer.scss 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
plugins/util.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/customer/coupon/icon-sign-home.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/customer/coupon/sign-icon-1-0.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/customer/coupon/sign-main-bg.png 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/self/sign.vue 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/customer/trade/detail.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/partner/delivery/delivery.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mixin/mixin.js
@@ -50,6 +50,7 @@
            // regAvatarUrl: 'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png',
            regUserName: '',
            regAvatarUrl: '',
            previewImgSign:false,
        }
    },
    methods: {
pages.json
@@ -494,6 +494,14 @@
                        "navigationBarTitleText": "会员中心",
                        "enablePullDownRefresh": true
                    }
                },
                {
                    "path": "self/sign",
                    "style": {
                        "navigationBarTitleText": "签到",
                        "enablePullDownRefresh": false,
                        "navigationStyle": "custom"
                    }
                }
                // #endif
            ]
pages/user/supplier-user.vue
@@ -189,10 +189,11 @@
                    <view>我的服务</view>
                </view>
                <view class="flex service-icons-container">
                    <view class="service-icons" @click="goto('/sub_pages/customer/self/follow',true)">
                        <image src="../../static/images/customer/service/service-icon-1.png" class="service-icon ">
                    <view class="service-icons" @click="goto('/sub_pages/customer/self/sign',true)">
                        <image src="../../static/images/customer/coupon/icon-sign-home.png" class="service-icon ">
                        </image>
                        <view>关注店铺</view>
                        <view>签到</view>
                        <view v-if="!signToday" class="dot"></view>
                    </view>
                    <view class="service-icons" @click="goto('/sub_pages/customer/self/collect',true)">
                        <image src="../../static/images/customer/service/service-icon-2.png" class="service-icon ">
@@ -244,6 +245,25 @@
                    </view>
                    <!-- #endif -->
                </view>
                <!-- #ifdef PUB_CUSTOMER -->
                <view class="flex service-icons-container">
                    <view class="service-icons" @click="goto('/sub_pages/customer/self/follow',true)">
                        <image src="../../static/images/customer/service/service-icon-1.png" class="service-icon ">
                        </image>
                        <view>关注店铺</view>
                    </view>
                    <view class="service-icons">
                    </view>
                    <view class="service-icons">
                    </view>
                    <view class="service-icons">
                    </view>
                </view>
                <!-- #endif -->
            </view>
        </view>
        <!-- #endif -->
@@ -458,6 +478,7 @@
                tj: {},
                tj_order: {},
                cacheUserId: '',
                signToday: false
                // order_pendding_num: 0,
            };
@@ -513,6 +534,17 @@
        onShow() {
            this.cacheUserId = ''
            this.getTj()
            // #ifdef PUB_CUSTOMER
            let that = this
            this.$http.request('get', '/api/customer/point/sign/sign/today', {}).then(res => {
                if (res.data) {
                    that.signToday = true
                }
            })
            // #endif
            //判断有没有签到
        },
        onLoad(options) {
            // const url = options.q ? decodeURIComponent(options.q) : '';
pages/user/user-customer.scss
@@ -141,6 +141,7 @@
            font-size: 24rpx;
            color: #000000;
            line-height: 34rpx;
            position: relative;
            .service-icon{
                height: 52rpx;
                width: 52rpx;
@@ -149,6 +150,15 @@
                height: 52rpx;
                width: 56rpx;
            }
            .dot{
                position: absolute;
                left: calc(50% + 30rpx);
                top: 0rpx;
                width: 10rpx;
                height: 10rpx;
                background: #CF0000;
                border-radius: 50%;
            }
        }
        
    }
plugins/util.js
@@ -137,6 +137,12 @@
        }
        return ''
    },
    toMonth(date) {
        if (date) {
            return moment(date).format('MM-DD')
        }
        return ''
    },
    formatDate(date, format) {
        if (date) {
            return moment(date).format(format)
static/images/customer/coupon/icon-sign-home.png
static/images/customer/coupon/sign-icon-1-0.png
static/images/customer/coupon/sign-main-bg.png
sub_pages/customer/self/sign.vue
对比新文件
@@ -0,0 +1,325 @@
<template>
    <view class="sign-container ">
        <image class="sign-bg" mode="aspectFit"
            src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/e9/e95fc4312ac341cdb021f47803e3852fpu6Pi3C2PVVrf85eee3998d17ec30907cd7e2941388a.png">
        </image>
        <view class="sign-info p20">
            <view class="title">
                <uni-icons class="icon" type="left" size="24" @click="backpage()"></uni-icons>
                签到
            </view>
            <view class="flex" style="margin-top: 40rpx;">
                <image class="user-icon" v-if="
                    currentInfo.customerDTO&&currentInfo.customerDTO.cover
                    ||currentInfo.supplierDTO&&currentInfo.supplierDTO.cover
                    || currentInfo.picture
                    " :src="
                    currentInfo.customerDTO&&currentInfo.customerDTO.cover
                    ||currentInfo.supplierDTO&&currentInfo.supplierDTO.cover
                    || currentInfo.picture
                    " mode="scaleToFill"></image>
                <image class="user-icon" v-else
                    src='https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png'
                    mode="scaleToFill"></image>
                <view>
                    <view class="tj">
                        已经连续签到 <span class="b">{{signNum||0}}</span> 天
                    </view>
                    <view class="tip">
                        明日签到可获取1积分
                    </view>
                </view>
            </view>
        </view>
        <view class="sign-main-container">
            <image mode="scaleToFill" src="../../../static/images/customer/coupon/sign-main-bg.png" class="bg"></image>
            <view class="sign-icon-0"></view>
            <image class="title-top" mode="scaleToFill"
                src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/05/058b7bd0a5884c318e64329051739b0agwMJMk8Hhfccf336b87df7523e7e8799da761965becc.png">
            </image>
            <view class="calendar-list flex">
                <view class="calendar-item"  :class="[item.sign?'sign':'',item.date==today?'today':'']" v-for="(item,index) of list" :key="index" @click="signToday(item)">
                    <view class="date">{{item.date==today?'今日':item.dateMonth}}</view>
                    <view class="sign-icon-1">
                    </view>
                    <view class="point">{{item.point || 1}}积分</view>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                signNum: 0,
                list: [],
                today: ''
            }
        },
        async onLoad() {
            this.today = this.$util.toDate(new Date())
            this.list = this.getAllDatesInCurrentMonth()
            //请求
            var start = this.list[0].date
            var end = this.list[this.list.length - 1].date
            this.$message.showLoading()
            const {
                code,
                data
            } = await this.$http.request('get', '/api/customer/point/sign/list', {
                params: {
                    startDate: start,
                    endDate: end,
                }
            })
            this.$message.hideLoading()
            if (code == 0) {
                for (var item of this.list) {
                    for (var j of data) {
                        if (j.recordDate && j.recordDate.startsWith(item.date)) {
                            item.sign = true
                            item.point = j.point || 1
                            this.signNum += 1
                            break
                        }
                    }
                }
            }
        },
        methods: {
            async signToday(item) {
                if (item.sign) {
                    return
                }
                if (item.date === this.today) {
                } else {
                    return
                }
                this.$message.showLoading()
                const {
                    code,
                    data
                } = await this.$http.request('post', '/api/customer/point/sign/in', {
                })
                this.$message.hideLoading()
                if (code == 0) {
                    this.$message.showToast('签到成功')
                    item.sign = true
                    this.signNum += 1
                    this.$forceUpdate()
                }
            },
            getAllDatesInCurrentMonth() {
                const dates = [];
                const currentDate = new Date();
                const currentYear = currentDate.getFullYear();
                const currentMonth = currentDate.getMonth(); // 月份是从0开始的,0代表1月
                // 获取当前月的第一天
                const firstDay = new Date(currentYear, currentMonth, 1);
                // 获取当前月的最后一天
                const lastDay = new Date(currentYear, currentMonth + 1, 0);
                for (let day = firstDay.getDate(); day <= lastDay.getDate(); day++) {
                    dates.push({
                        // date:new Date(currentYear, currentMonth, day),
                        date: this.$util.toDate(new Date(currentYear, currentMonth, day)),
                        dateMonth: this.$util.toMonth(new Date(currentYear, currentMonth, day)),
                        sign: false,
                        point: 1,
                    });
                }
                return dates;
            }
        },
    }
</script>
<style lang="scss" scoped>
    .sign-container {
        position: relative;
        .sign-main-container {
            .bg {
                // background-image: url('@/static/images/customer/coupon/sign-main-bg.png');
                height: 440rpx;
                // left: 0rpx;
                // right: 0rpx;
                position: absolute;
                top: -20rpx;
                max-width: 690rpx;
                min-width: 690rpx;
                ;
                z-index: -1;
            }
            // background-color: #fff;
            // background-size: 100% 50%;
            min-height: 444rpx;
            // padding: 20rpx;
            position: absolute;
            top: 400rpx;
            left: 20rpx;
            right: 20rpx;
            // z-index: -
            .calendar-list {
                max-width: 650rpx;
                padding: 20rpx;
                background-color: #fff;
                margin-top: 20rpx;
                .calendar-item {
                    width: 120rpx;
                    height: 136rpx;
                    background: #E7F4E8;
                    border-radius: 8rpx;
                    border: 2rpx solid #E7F4E8;
                    text-align: center;
                    padding-top: 20rpx;
                    padding-bottom: 20rpx;
                    margin: 0 auto;
                    margin-bottom: 20rpx;
                    .date {
                        font-weight: 400;
                        font-size: 24rpx;
                        color: #000000;
                        line-height: 40rpx;
                    }
                    .sign-icon-1 {
                        width: 44rpx;
                        height: 44rpx;
                        margin: 0 auto;
                        background-image: url('@/static/images/customer/coupon/sign-icon-1-0.png');
                        background-size: 100% 100%;
                    }
                    .point {
                        font-weight: 400;
                        font-size: 24rpx;
                        color: #20613D;
                        line-height: 40rpx;
                    }
                }
                .calendar-item.sign {
                    border: 2rpx solid #87C48C;
                    .sign-icon-1 {
                        background-image: url("https://hmy-flower.oss-cn-shanghai.aliyuncs.com/02/02cf142651e84ddab6d2b334fedf3efa5FUKyuraE1U97cfcc36775df368c2f9b34abc8b527d6.png");
                        background-size: 100% 100%;
                    }
                }
                .calendar-item.today {
                    border: 2rpx solid #87C48C;
                    background: linear-gradient(180deg, #D5F2D8 0%, #8BDF92 100%);
                }
            }
            .sign-icon-0 {
                position: absolute;
                right: 0rpx;
                top: -70rpx;
                width: 172rpx;
                height: 148rpx;
                background-size: 100% 100%;
                background-image: url("https://hmy-flower.oss-cn-shanghai.aliyuncs.com/24/242efb615f4e4827bdda1b252906db9bIcLxoETs7MXVc85f821ae127c62dbe772349d1e6951e.png");
            }
            .title-top {
                // background-image: url("https://hmy-flower.oss-cn-shanghai.aliyuncs.com/05/058b7bd0a5884c318e64329051739b0agwMJMk8Hhfccf336b87df7523e7e8799da761965becc.png");
                width: 346rpx;
                height: 42rpx;
                // margin-top: 20rpx;
                margin: 20rpx;
                margin-left: 40rpx;
            }
        }
        .sign-info {
            position: absolute;
            left: 0rpx;
            top: 80rpx;
            right: 0rpx;
            .title {
                text-align: center;
                font-weight: 600;
                font-size: 32rpx;
                position: relative;
                .icon {
                    position: absolute;
                    left: 0rpx;
                    z-index: 1;
                }
            }
            .user-icon {
                width: 110rpx;
                height: 110rpx;
                margin-right: 20rpx;
                border-radius: 50%;
            }
            .tj {
                margin-left: 48rpx;
                font-weight: 400;
                font-size: 28rpx;
                color: #000000;
                line-height: 40rpx;
                margin-bottom: 10rpx;
                .b {
                    font-size: 42rpx;
                    font-weight: 600;
                }
            }
            .tip {
                background: linear-gradient(to right, #D8ECDA, #E8F3E9);
                padding: 10rpx 20rpx;
                border-radius: 20rpx;
                font-weight: 400;
                font-size: 28rpx;
                color: #619663;
                line-height: 40rpx;
                text-align: left;
                margin-top: 10rpx;
            }
        }
        .sign-bg {
            // background-image: url("https://hmy-flower.oss-cn-shanghai.aliyuncs.com/e9/e95fc4312ac341cdb021f47803e3852fpu6Pi3C2PVVrf85eee3998d17ec30907cd7e2941388a.png");
            width: 750rpx;
            min-height: 482rpx;
            position: relative;
        }
    }
</style>
sub_pages/customer/trade/detail.vue
@@ -14,7 +14,10 @@
                        </view>
                    </swiper-item>
                    <swiper-item v-for="(url, index) in dto.bannerList" :key="index">
                        <image class="top-img" :lazy-load="true" mode="aspectFill" @click="previewImg(url)" :src="url">
                        <image class="top-img" :lazy-load="true" mode="aspectFill" @click="()=>{
                            previewImgSign = true;
                            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)}}
@@ -22,8 +25,10 @@
                    </swiper-item>
                    <swiper-item>
                        <image :src="dto.cover" :lazy-load="true" @click="previewImg(dto.cover)" class="top-img"
                            mode="aspectFill">
                        <image :src="dto.cover" :lazy-load="true" @click="()=>{
                            previewImgSign = true;
                            previewImg(dto.cover);
                        }" class="top-img" mode="aspectFill">
                        </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)}}
@@ -76,7 +81,7 @@
                    <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> -->
@@ -86,8 +91,8 @@
                </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>
@@ -223,13 +228,18 @@
                dto: {},
                shopnum: 0,
                sharePartnerUserId: '',
                previewImgSign: false,
            }
        },
        onShow() {
            if (this.id) {
                this.getDetail()
            if (!this.previewImgSign) {
                if (this.id) {
                    this.getDetail()
                }
                this.refreshShopNum()
            }
            this.refreshShopNum()
            this.previewImgSign = false
        },
        async onLoad(options) {
            console.log('trade detail options', options)
@@ -244,8 +254,8 @@
                // setTimeout(() => {
                //并且当前用户没有绑定
                if (tmp.currentInfo.id && tmp.currentInfo.customerDTO.partnerId) {
                }else{
                } else {
                    if (tmp.currentInfo.id) {
                        await tmp.bindPartnerUser(options.partnerUserId, '')
                    } else {
@@ -256,7 +266,7 @@
                        }
                    }
                }
                // }, 1000)
            }
@@ -562,6 +572,7 @@
        .swiper-box {
            position: relative;
            border-bottom: 1px solid #d3d4d7;
            swiper-item {
                background-color: #fff;
                border-radius: 8rpx;
@@ -616,7 +627,7 @@
                    margin-right: 6rpx;
                    text-align: center;
                }
                .tag.green {
                    color: rgba(110, 159, 102, 1);
                    background: rgba(202, 229, 214, 1);
sub_pages/partner/delivery/delivery.vue
@@ -1,7 +1,7 @@
<script>
    export default {
        data() {
            var defaultDatePre = new Date(new Date().getTime() - 24 * 3600 * 1000)
            var defaultDatePre = new Date(new Date().getTime())
            return {
                query: {
                    supplierName: '',
sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue
@@ -7,7 +7,7 @@
                },
                orderItemId: '',
                op: '',
                opStr:''
                opStr: ''
            };
        },
        async onLoad(options) {
@@ -26,10 +26,15 @@
        methods: {
            async init() {
                var apitype = 'supplier'
                // #ifdef PUB_CUSTOMER
                apitype = 'customer'
                // #endif
                this.$message.showLoading()
                const {
                    data
                } = await this.$http.request('get', `/api/supplier/delivery/mine/list/check/info/` + this.op, {
                } = await this.$http.request('get', `/api/${apitype}/delivery/mine/list/check/info/` + this.op, {
                    params: {
                        orderItemId: this.orderItemId
                    }