This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
const api=require('../../utils/api');const app=getApp();
|
||||
Page({data:{id:'',activity:null,user:null,joined:false,purpose:'',showPurpose:false,submitting:false},onLoad({id}){this.setData({id,user:app.globalData.user||wx.getStorageSync('user')});app.ensureLogin().then(user=>{this.setData({user});this.load()}).catch(()=>this.load())},onShow(){if(this.data.activity)this.load()},async load(){try{const activity=await api.request(`/api/activities/${this.data.id}`);const mine=activity.participants.find(p=>this.data.user&&p.id===this.data.user.id);this.setData({activity,joined:!!mine,purpose:mine?mine.purpose:''})}catch(e){wx.showToast({title:e.message,icon:'none'})}},preview(e){const urls=this.data.activity.images.map(x=>x.url);wx.previewImage({current:e.currentTarget.dataset.url,urls})},editPurpose(){this.setData({showPurpose:true})},purposeInput(e){this.setData({purpose:e.detail.value})},closePurpose(){this.setData({showPurpose:false})},async savePurpose(){this.setData({submitting:true});try{await api.request(`/api/activities/${this.data.id}/participations/me`,{method:'PUT',data:{purpose:this.data.purpose}});this.setData({showPurpose:false});await this.load();wx.showToast({title:'已加入'})}catch(e){wx.showToast({title:e.message,icon:'none'})}finally{this.setData({submitting:false})}},leave(){wx.showModal({title:'退出活动?',content:'你的参与目的也会被移除',success:async r=>{if(r.confirm){await api.request(`/api/activities/${this.data.id}/participations/me`,{method:'DELETE'});this.load()}}})},openGroup(e){wx.previewImage({urls:[e.currentTarget.dataset.url]})},submitGroup(){wx.chooseMedia({count:1,mediaType:['image'],success:async r=>{wx.showLoading({title:'上传中'});try{const file=await api.upload(r.tempFiles[0].tempFilePath);await api.request(`/api/activities/${this.data.id}/participations/groups`,{method:'POST',data:{name:`${this.data.activity.title}交流群`,qrImageUrl:file.url,note:'用户提交,待管理员核验'}});wx.showToast({title:'已提交审核'})}catch(e){wx.showToast({title:e.message,icon:'none'})}finally{wx.hideLoading()}}})}})
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"活动详情","backgroundColor":"#f5f1ea"}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="page" wx:if="{{activity}}"><swiper wx:if="{{activity.images.length}}" class="gallery" indicator-dots circular><swiper-item wx:for="{{activity.images}}" wx:key="id"><image src="{{item.url}}" mode="aspectFill" data-url="{{item.url}}" bindtap="preview"></image></swiper-item></swiper><view wx:else class="gallery placeholder">CoffeeChat</view><view class="content"><view class="status">{{activity.status==='active'?'正在进行':'即将开始'}}</view><view class="title">{{activity.title}}</view><view class="tags"><text wx:for="{{activity.tags}}" wx:key="id" class="tag">{{item.name}}</text></view><view class="facts card"><view><text>时间</text><b>{{activity.startsAt}}</b></view><view><text>地点</text><b>{{activity.location || activity.exhibition.venue}}</b></view></view><view class="section"><view class="section-title">活动介绍</view><text class="description">{{activity.description}}</text></view><view class="expo card"><text class="overline">所属会展</text><view class="expo-title">{{activity.exhibition.name}}</view><text>{{activity.exhibition.startsAt}} 至 {{activity.exhibition.endsAt}}</text><text>{{activity.exhibition.venue}} · {{activity.exhibition.address}}</text><text class="description">{{activity.exhibition.description}}</text></view><view class="section"><view class="section-head"><view class="section-title">会遇见的人</view><text>{{activity.participants.length}} 人</text></view><view wx:if="{{!activity.participants.length}}" class="muted">成为第一个加入的人吧</view><view wx:for="{{activity.participants}}" wx:key="id" class="person"><image src="{{item.avatarUrl || '/images/avatar.png'}}"></image><view><b>{{item.nickname}}</b><text>{{item.purpose || '期待现场交流'}}</text></view></view></view><view class="section"><view class="section-head"><view class="section-title">活动微信群</view><text bindtap="submitGroup" class="link">提交群二维码</text></view><view wx:if="{{!activity.groups.length}}" class="muted">暂无已审核的群</view><view wx:for="{{activity.groups}}" wx:key="id" class="group card" data-url="{{item.qrImageUrl}}" bindtap="openGroup"><image src="{{item.qrImageUrl}}"></image><view><b>{{item.name}}</b><text>点击查看二维码</text></view></view></view></view><view class="footer"><button wx:if="{{!joined}}" class="primary" bindtap="editPurpose">加入活动</button><block wx:else><button class="secondary" bindtap="editPurpose">编辑参与目的</button><button class="text-btn" bindtap="leave">退出</button></block></view><view wx:if="{{showPurpose}}" class="mask" bindtap="closePurpose"><view class="sheet" catchtap=""><view class="section-title">你为什么想参加?</view><textarea maxlength="300" value="{{purpose}}" bindinput="purposeInput" placeholder="例如:寻找 AI 应用方向的合作伙伴"></textarea><button class="primary" loading="{{submitting}}" bindtap="savePurpose">确认加入</button></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.gallery{height:560rpx;background:#ddd}.gallery image{width:100%;height:100%}.placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#315c49,#9d7256);color:white;font:italic 56rpx serif}.content{padding:34rpx 30rpx 180rpx}.status{color:#a15f3c;font-size:24rpx}.title{font:700 54rpx/1.2 serif;margin:14rpx 0 20rpx}.facts{padding:12rpx 26rpx;margin:30rpx 0}.facts view{display:flex;gap:24rpx;padding:20rpx 0;border-bottom:1rpx solid #eee5db}.facts view:last-child{border:0}.facts text{color:#8a7d71;width:70rpx}.facts b{font-size:27rpx}.section{margin:46rpx 0}.section-title{font-size:34rpx;font-weight:700;margin-bottom:20rpx}.description{line-height:1.8;color:#5f534a;white-space:pre-wrap}.expo{padding:28rpx;display:flex;flex-direction:column;gap:10rpx}.overline{font-size:20rpx;letter-spacing:3rpx;color:#9b7256}.expo-title{font-size:35rpx;font-weight:700}.section-head{display:flex;justify-content:space-between;align-items:center}.link{color:#2e5b47;font-weight:600}.person{display:flex;gap:18rpx;padding:18rpx 0;border-bottom:1rpx solid #e5dbcf}.person image{width:76rpx;height:76rpx;border-radius:50%}.person view{display:flex;flex-direction:column;gap:6rpx}.person text{color:#76695e;font-size:25rpx}.group{display:flex;align-items:center;padding:18rpx;margin:12rpx 0;gap:18rpx}.group image{width:90rpx;height:90rpx;border-radius:12rpx}.group view{display:flex;flex-direction:column;gap:8rpx}.group text{font-size:23rpx;color:#807267}.footer{position:fixed;left:0;right:0;bottom:0;padding:20rpx 30rpx calc(20rpx + env(safe-area-inset-bottom));display:flex;gap:12rpx;background:#fffdf9;border-top:1rpx solid #e2d8cc}.footer button{flex:1}.footer .text-btn{flex:0 0 120rpx;color:#a74b3f}.mask{position:fixed;inset:0;background:#241f1b88;display:flex;align-items:flex-end;z-index:10}.sheet{width:100%;background:#fffdf9;border-radius:32rpx 32rpx 0 0;padding:38rpx 30rpx calc(34rpx + env(safe-area-inset-bottom))}.sheet textarea{width:100%;box-sizing:border-box;background:#f3ede6;border-radius:20rpx;padding:22rpx;margin:10rpx 0 26rpx;height:220rpx}
|
||||
Reference in New Issue
Block a user