From 4f5cbfb0878d0d35ce01b7c32ade1807c067fd27 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期四, 19 九月 2024 16:12:43 +0800
Subject: [PATCH] add 签到和其他页面细节
---
plugins/util.js | 6
static/images/customer/coupon/icon-sign-home.png | 0
sub_pages/partner/delivery/delivery.vue | 2
pages.json | 8 +
pages/user/user-customer.scss | 10 +
mixin/mixin.js | 1
static/images/customer/coupon/sign-main-bg.png | 0
static/images/customer/coupon/sign-icon-1-0.png | 0
sub_pages/customer/self/sign.vue | 325 ++++++++++++++++++++++++++++++++++++++++
sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue | 9
pages/user/supplier-user.vue | 38 ++++
sub_pages/customer/trade/detail.vue | 37 +++-
12 files changed, 417 insertions(+), 19 deletions(-)
diff --git a/mixin/mixin.js b/mixin/mixin.js
index ad5ad6e..2564b5f 100644
--- a/mixin/mixin.js
+++ b/mixin/mixin.js
@@ -50,6 +50,7 @@
// regAvatarUrl: 'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png',
regUserName: '',
regAvatarUrl: '',
+ previewImgSign:false,
}
},
methods: {
diff --git a/pages.json b/pages.json
index 5a79e6f..2c619ce 100644
--- a/pages.json
+++ b/pages.json
@@ -494,6 +494,14 @@
"navigationBarTitleText": "会员中心",
"enablePullDownRefresh": true
}
+ },
+ {
+ "path": "self/sign",
+ "style": {
+ "navigationBarTitleText": "签到",
+ "enablePullDownRefresh": false,
+ "navigationStyle": "custom"
+ }
}
// #endif
]
diff --git a/pages/user/supplier-user.vue b/pages/user/supplier-user.vue
index 5befef5..f47291c 100644
--- a/pages/user/supplier-user.vue
+++ b/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) : '';
diff --git a/pages/user/user-customer.scss b/pages/user/user-customer.scss
index cf7811b..4be1e24 100644
--- a/pages/user/user-customer.scss
+++ b/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%;
+ }
}
}
diff --git a/plugins/util.js b/plugins/util.js
index d569ad2..2067642 100644
--- a/plugins/util.js
+++ b/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)
diff --git a/static/images/customer/coupon/icon-sign-home.png b/static/images/customer/coupon/icon-sign-home.png
new file mode 100644
index 0000000..001500e
--- /dev/null
+++ b/static/images/customer/coupon/icon-sign-home.png
Binary files differ
diff --git a/static/images/customer/coupon/sign-icon-1-0.png b/static/images/customer/coupon/sign-icon-1-0.png
new file mode 100644
index 0000000..8708cfa
--- /dev/null
+++ b/static/images/customer/coupon/sign-icon-1-0.png
Binary files differ
diff --git a/static/images/customer/coupon/sign-main-bg.png b/static/images/customer/coupon/sign-main-bg.png
new file mode 100644
index 0000000..e04984b
--- /dev/null
+++ b/static/images/customer/coupon/sign-main-bg.png
Binary files differ
diff --git a/sub_pages/customer/self/sign.vue b/sub_pages/customer/self/sign.vue
new file mode 100644
index 0000000..d40bd97
--- /dev/null
+++ b/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&¤tInfo.customerDTO.cover
+ ||currentInfo.supplierDTO&¤tInfo.supplierDTO.cover
+ || currentInfo.picture
+ " :src="
+ currentInfo.customerDTO&¤tInfo.customerDTO.cover
+ ||currentInfo.supplierDTO&¤tInfo.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>
\ No newline at end of file
diff --git a/sub_pages/customer/trade/detail.vue b/sub_pages/customer/trade/detail.vue
index 47038ab..94e1c05 100644
--- a/sub_pages/customer/trade/detail.vue
+++ b/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);
diff --git a/sub_pages/partner/delivery/delivery.vue b/sub_pages/partner/delivery/delivery.vue
index e33a520..861eb13 100644
--- a/sub_pages/partner/delivery/delivery.vue
+++ b/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: '',
diff --git a/sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue b/sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue
index 55feea7..e084707 100644
--- a/sub_pages/supplier/order-manage/order-manage-settlement-op-detail.vue
+++ b/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
}
--
Gitblit v1.9.3