|
|
@@ -2,84 +2,94 @@
|
|
|
<view class="common_page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
|
|
|
<cus-header title="公益活动详情" bgColor="transparent"></cus-header>
|
|
|
<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/19/54b75bc8-d926-449b-95a5-1126f700b481.png" class="top_bg_img" mode="widthFix"></image>
|
|
|
- <div class="top">
|
|
|
- <div class="top-status adfacjb">
|
|
|
- <div class="left">{{signupStateDict[info?.signupState]||'未知'}}</div>
|
|
|
- <div class="right" v-if="info?.activityLimit==1"><span>{{info?.valueLimit||0}}</span>爱心值</div>
|
|
|
- <div class="right" v-else-if="info?.activityLimit==2"><span>{{info?.valueLimit||0}}</span>张专享券</div>
|
|
|
- <div class="right" v-else-if="info?.activityLimit==3"><span>免费</span></div>
|
|
|
- </div>
|
|
|
- <div class="top-no">善行少年编号:{{info?.uniqueNo||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="box box1 adf" style="margin-top: 30rpx;">
|
|
|
- <div class="box1-left">
|
|
|
+ <view class="top">
|
|
|
+ <view class="top-status adfacjb">
|
|
|
+ <view class="left">{{signupStateDict[info?.signupState]||'未知'}}</view>
|
|
|
+ <view class="right" v-if="info?.activityLimit==1"><span>{{info?.valueLimit||0}}</span>爱心值</view>
|
|
|
+ <view class="right" v-else-if="info?.activityLimit==2"><span>{{info?.valueLimit||0}}</span>张专享券</view>
|
|
|
+ <view class="right" v-else-if="info?.activityLimit==3"><span>免费</span></view>
|
|
|
+ </view>
|
|
|
+ <view class="top-no">善行少年编号:{{info?.uniqueNo||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box box1 adf" style="margin-top: 30rpx;">
|
|
|
+ <view class="box1-left">
|
|
|
<image :src="info?.coverFile||''"></image>
|
|
|
- </div>
|
|
|
- <div class="box1-right">
|
|
|
- <div class="title">{{info?.activityName||''}}</div>
|
|
|
- <div class="memo">{{info?.loveValueContent||''}}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="box box2">
|
|
|
- <div class="box-title">活动信息</div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">报名时间</div>
|
|
|
- <div class="right">{{info?.signupStartTime||''}} ~ {{info?.signupEndTime||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">活动时间</div>
|
|
|
- <div class="right">{{info?.activityStartTime||''}} ~ {{info?.activityEndTime||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">活动地点</div>
|
|
|
- <div class="right">{{info?.provinceName||''}}{{info?.cityName||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">招募人数</div>
|
|
|
- <div class="right">{{info?.recruitmentNow||0}}/{{info?.recruitmentMax||'无限制'}}</div>
|
|
|
- </div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">联系人</div>
|
|
|
- <div class="right">{{info?.activityContact||''}}/{{info?.activityContactPhone||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="box2-item adf">
|
|
|
- <div class="left">公益支持</div>
|
|
|
- <div class="right">{{info?.channelName||''}}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="box box3">
|
|
|
- <div class="box-title">报名信息</div>
|
|
|
- <div class="box3-list">
|
|
|
- <div class="box3-list-item adfacjb">
|
|
|
- <div class="left">
|
|
|
- <div class="top adfac">
|
|
|
- <div class="name">{{info?.memberName||''}}</div>
|
|
|
+ </view>
|
|
|
+ <view class="box1-right">
|
|
|
+ <view class="title">{{info?.activityName||''}}</view>
|
|
|
+ <view class="memo">{{info?.loveValueContent||''}}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="box box2">
|
|
|
+ <view class="box-title">活动信息</view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">报名时间</view>
|
|
|
+ <view class="right">{{info?.signupStartTime||''}} ~ {{info?.signupEndTime||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">活动时间</view>
|
|
|
+ <view class="right">{{info?.activityStartTime||''}} ~ {{info?.activityEndTime||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">活动地点</view>
|
|
|
+ <view class="right">{{info?.provinceName||''}}{{info?.cityName||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">招募人数</view>
|
|
|
+ <view class="right">{{info?.recruitmentNow||0}}/{{info?.recruitmentMax||'无限制'}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">联系人</view>
|
|
|
+ <view class="right">{{info?.activityContact||''}}/{{info?.activityContactPhone||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="box2-item adf">
|
|
|
+ <view class="left">公益支持</view>
|
|
|
+ <view class="right">{{info?.channelName||''}}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="box box3">
|
|
|
+ <view class="box-title">报名信息</view>
|
|
|
+ <view class="box3-list">
|
|
|
+ <view class="box3-list-item adfacjb">
|
|
|
+ <view class="left">
|
|
|
+ <view class="top adfac">
|
|
|
+ <view class="name">{{info?.memberName||''}}</view>
|
|
|
<image class="sex" v-if="info?.gender==1" src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/12/b6d1fcb3-55ba-4104-b8cd-756b963a4da8.png"></image>
|
|
|
<image class="sex" v-else-if="info?.gender==0" src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/12/a1899fd0-c468-48d9-b554-2f17b75a4157.png"></image>
|
|
|
- <div class="age" :class="{'women':info?.gender==1,'man':info?.gender==0}">{{info?.age}}岁</div>
|
|
|
- </div>
|
|
|
- <div class="left-bottom">身份证 {{info?.idCardCopy}}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="user">
|
|
|
- <div class="user-pre adfacjb">
|
|
|
- <div class="user-pre-left">联系人姓名</div>
|
|
|
- <div class="user-pre-right">{{info?.contact||''}}</div>
|
|
|
- </div>
|
|
|
- <div class="user-pre adfacjb">
|
|
|
- <div class="user-pre-left">联系人电话</div>
|
|
|
- <div class="user-pre-right">{{info?.contactPhone||''}}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="bottom adfacjb">
|
|
|
- <div class="right" @click="handleCancel" v-if="info?.activeState==1&&info?.signupState==1">取消报名</div>
|
|
|
- <div class="right" @click="handleSignup" v-if="info?.activeState==1&&info?.signupState==-1">立即报名</div>
|
|
|
- <div class="right" v-if="info?.activeState==2&&info?.signupState==1">去签到</div>
|
|
|
- <div class="right" v-if="info?.activeState==3&&info?.signupState==2">写档案</div>
|
|
|
- <div class="right" v-if="info?.activeState==3&&info?.signupState==3">查看档案</div>
|
|
|
- </div>
|
|
|
+ <view class="age" :class="{'women':info?.gender==1,'man':info?.gender==0}">{{info?.age}}岁</view>
|
|
|
+ </view>
|
|
|
+ <view class="left-bottom">身份证 {{info?.idCardCopy}}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="user">
|
|
|
+ <view class="user-pre adfacjb">
|
|
|
+ <view class="user-pre-left">联系人姓名</view>
|
|
|
+ <view class="user-pre-right">{{info?.contact||''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="user-pre adfacjb">
|
|
|
+ <view class="user-pre-left">联系人电话</view>
|
|
|
+ <view class="user-pre-right">{{info?.contactPhone||''}}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="user" v-if="info?.activityLimit==2">
|
|
|
+ <view class="user-pre adfacjb" @click="handleSelectTicket">
|
|
|
+ <view class="user-pre-left">专享券抵扣</view>
|
|
|
+ <view class="user-pre-right adfac">
|
|
|
+ <text>{{ticketText}}</text>
|
|
|
+ <image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/10/10/4d3329f1-7421-4bde-a7dd-5175a7748f8f.png"></image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="bottom adfacjb">
|
|
|
+ <view class="right" @click="handleCancel" v-if="info?.activeState==1&&info?.signupState==1">取消报名</view>
|
|
|
+ <view class="right" @click="handleApply" v-else-if="info?.activeState==1&&info?.signupState==-1">立即报名</view>
|
|
|
+ <view class="right" @click="handleSignup" v-else-if="info?.activeState==2&&info?.signupState==1">去签到</view>
|
|
|
+ <view class="right grey" v-else-if="info?.activeState==2&&info?.signupState==2">已签到</view>
|
|
|
+ <view class="right" @click="handleFill" v-else-if="info?.activeState==3&&info?.signupState==2">写档案</view>
|
|
|
+ <view class="right" @click="handleReview" v-else-if="info?.activeState==3&&info?.signupState==3">查看档案</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
@@ -97,6 +107,9 @@
|
|
|
2:'已签到',
|
|
|
3:'已填档案'
|
|
|
})
|
|
|
+ const userLoveTicket = ref(null)
|
|
|
+ const selectCouponIds = ref([])
|
|
|
+ const ticketText = ref('暂无可用专享券')
|
|
|
|
|
|
const getUserActivityDetail = () => {
|
|
|
proxy.$api.get(`/core/activity/signup/myActivityInfo/${memberSignupId.value}`).then(({data:res})=>{
|
|
|
@@ -104,6 +117,7 @@
|
|
|
info.value = res.data;
|
|
|
info.value.age = getAge(info.value.idCard);
|
|
|
info.value.idCardCopy = info.value.idCard.replace(/^(\d{6})(\d{8})(\d{3}[\dX])$/i,'$1********$3');
|
|
|
+ getUserLoveTicket()
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -154,9 +168,14 @@
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- const handleSignup = () => {
|
|
|
+ const handleApply = () => {
|
|
|
+ let couponId = '';
|
|
|
+ if(info.value?.activityLimit==2){
|
|
|
+ if(selectCouponIds.value.length==0) return proxy.$showToast(`请选择1张专享券`)
|
|
|
+ couponId = selectCouponIds.value[0];
|
|
|
+ }
|
|
|
proxy.$api.post(`/core/activity/signup/signupBySingle`,{
|
|
|
- couponId:'',
|
|
|
+ couponId,
|
|
|
memberSignupId:memberSignupId.value,
|
|
|
userId:JSON.parse(uni.getStorageSync('userInfo')).id
|
|
|
}).then(({data:res})=>{
|
|
|
@@ -165,6 +184,61 @@
|
|
|
proxy.$showToast('报名成功')
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+ const handleSignup = () => {
|
|
|
+ try{
|
|
|
+ uni.scanCode({
|
|
|
+ success: (res) => {
|
|
|
+ if(res.errMsg=='scanCode:ok'){
|
|
|
+ let { id } = JSON.parse(res.result)
|
|
|
+ proxy.$api.post('/core/activity/signup/signinBySingle',{
|
|
|
+ memberSignupId:memberSignupId.value,
|
|
|
+ userId:JSON.parse(uni.getStorageSync('userInfo')).id
|
|
|
+ }).then(({data:res})=>{
|
|
|
+ if(res.code!==0) return proxy.$showToast(res.msg)
|
|
|
+ uni.navigateTo({
|
|
|
+ url:'/pagesHome/signSuccess'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }else proxy.$showToast(res.errMsg)
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ proxy.$showToast('扫描异常,请稍后再试')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }catch(e){
|
|
|
+ proxy.$showToast('签到异常,请稍后再试')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const handleFill = () => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url:'/pagesHome/fillNonprofitArchives?activity='+encodeURIComponent(JSON.stringify(info.value))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const handleReview = () => {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ const getUserLoveTicket = () => {
|
|
|
+ let userId = JSON.parse(uni.getStorageSync('userInfo'))?.id;
|
|
|
+ proxy.$api.get(`/core/activity/signup/userAsset/${userId}/${info.value?.activityId}`).then(({data:res})=>{
|
|
|
+ if(res.code!==0) return proxy.$showToast(res.msg)
|
|
|
+ userLoveTicket.value = res.data;
|
|
|
+ ticketText.value = `剩余${res.data?.couponIds?.length||0}张可用`;
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleSelectTicket = () => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url:'/pagesMy/exclusiveScroll?activityId='+info.value?.activityId,
|
|
|
+ events:{
|
|
|
+ 'selectTickets': data => {
|
|
|
+ selectCouponIds.value = data;
|
|
|
+ ticketText.value = `已选${data?.length||0}张,剩余${userLoveTicket.value?.couponIds?.length-data?.length}张可用`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
onLoad((options)=>{
|
|
|
memberSignupId.value = options?.memberSignupId;
|
|
|
@@ -376,6 +450,11 @@
|
|
|
color: #252525;
|
|
|
line-height: 30rpx;
|
|
|
text-align: right;
|
|
|
+ image{
|
|
|
+ width: 32rpx;
|
|
|
+ height: 32rpx;
|
|
|
+ margin-left: 20rpx;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -412,6 +491,9 @@
|
|
|
line-height: 90rpx;
|
|
|
text-align: center;
|
|
|
letter-spacing: 2rpx;
|
|
|
+ &.grey{
|
|
|
+ background: #F7F7F7;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|