27 changed files with 1436 additions and 215 deletions
			
			
		- 
					90common/styles/iconfont.css
 - 
					2components/lf-shopGoodsCard/lf-shopGoodsCard.vue
 - 
					14pages.json
 - 
					36pages/aboutpay/confirmcash.vue
 - 
					522pages/business/activity/add.vue
 - 
					302pages/business/activity/list.vue
 - 
					36pages/business/balance/balance.vue
 - 
					77pages/business/center/center.vue
 - 
					2pages/business/payment/money.vue
 - 
					2pages/business/withdrawal/withdrawal.vue
 - 
					3pages/discover/discover.vue
 - 
					24pages/discover/discoverdetails.vue
 - 
					2pages/discover/publish.vue
 - 
					11pages/index/activity/detail.vue
 - 
					5pages/index/activity/hot.vue
 - 
					6pages/index/index/index.vue
 - 
					17pages/order/confirm/confirm.vue
 - 
					24pages/order/index/onlineorder.vue
 - 
					75pages/order/newdetail/newdetail.vue
 - 
					23pages/shop/goodsdetail.vue
 - 
					189pages/shop/seckillList.vue
 - 
					38pages/store/cart/cart.vue
 - 
					2pages/user/member/code.vue
 - 
					25pages/user/my/center.vue
 - 
					2pages/user/my/myEventRegistrationList.vue
 - 
					14pages/user/my/myregister.vue
 - 
					16pages/user/my/vipinfo.vue
 
@ -0,0 +1,522 @@ | 
			
		|||||
 | 
				<template> | 
			
		||||
 | 
					<view> | 
			
		||||
 | 
						<lf-nav title="新增活动" :showIcon="true" bgColor="#f8f8f8"></lf-nav> | 
			
		||||
 | 
						<view class="content"> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">标题</view> | 
			
		||||
 | 
								<input class="input" placeholder="请输入标题" v-model="title" /> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">副标题</view> | 
			
		||||
 | 
								<input class="input" placeholder="请输入副标题" v-model="subtitle" /> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动开始时间</view> | 
			
		||||
 | 
								<view class="select" @click="show_activity_startdate = true"> | 
			
		||||
 | 
									<text>{{ activity_startdate || '请选择' }}</text> | 
			
		||||
 | 
									<text class="lf-iconfont icon-xiangxia"></text> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
								<u-picker v-model="show_activity_startdate"  | 
			
		||||
 | 
									mode="time" :params="params" :default-time="activity_startdate" | 
			
		||||
 | 
									@confirm="selectDate($event, 'activity_startdate')"> | 
			
		||||
 | 
								</u-picker> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动结束时间</view> | 
			
		||||
 | 
								<view class="select" @click="show_activity_enddate = true"> | 
			
		||||
 | 
									<text>{{ activity_enddate || '请选择' }}</text> | 
			
		||||
 | 
									<text class="lf-iconfont icon-xiangxia"></text> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
								<u-picker v-model="show_activity_enddate"  | 
			
		||||
 | 
									mode="time" :params="params"  | 
			
		||||
 | 
									@confirm="selectDate($event, 'activity_enddate')"> | 
			
		||||
 | 
								</u-picker> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">报名开始时间</view> | 
			
		||||
 | 
								<view class="select" @click="show_sign_start = true"> | 
			
		||||
 | 
									<text>{{ sign_startdate || '请选择' }}</text> | 
			
		||||
 | 
									<text class="lf-iconfont icon-xiangxia"></text> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
								<u-picker v-model="show_sign_start"  | 
			
		||||
 | 
									mode="time" :params="params" | 
			
		||||
 | 
									@confirm="selectDate($event, 'sign_startdate')"> | 
			
		||||
 | 
								</u-picker> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">报名结束时间</view> | 
			
		||||
 | 
								<view class="select" @click="show_sign_end = true"> | 
			
		||||
 | 
									<text>{{ sign_enddate || '请选择' }}</text> | 
			
		||||
 | 
									<text class="lf-iconfont icon-xiangxia"></text> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
								<u-picker v-model="show_sign_end"  | 
			
		||||
 | 
									mode="time" :params="params" | 
			
		||||
 | 
									@confirm="selectDate($event, 'sign_enddate')"> | 
			
		||||
 | 
								</u-picker> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">谁可参与</view> | 
			
		||||
 | 
								<view class="select" @click="show_levels = true"> | 
			
		||||
 | 
									<text>{{ (levels_list[levels_index] && levels_list[levels_index].name) || '请选择' }}</text> | 
			
		||||
 | 
									<text class="lf-iconfont icon-xiangxia"></text> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
								<u-picker v-model="show_levels"  | 
			
		||||
 | 
									mode="selector"  | 
			
		||||
 | 
									:range="levels_list"  | 
			
		||||
 | 
									range-key="name" | 
			
		||||
 | 
									@confirm="levelsConfirm"> | 
			
		||||
 | 
								</u-picker> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动内容</view> | 
			
		||||
 | 
								<input class="input" placeholder="请输入活动内容" v-model="activity_content" /> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动人数</view> | 
			
		||||
 | 
								<input class="input" placeholder="请输入活动人数" v-model="activity_num" /> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动规则</view> | 
			
		||||
 | 
								<textarea class="textarea" placeholder="请输入活动规则内容" v-model="activity_rule"></textarea> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<!-- 上传图片 --> | 
			
		||||
 | 
							<view class="list"> | 
			
		||||
 | 
								<view class="title">活动图片</view> | 
			
		||||
 | 
								<view class="my-images"> | 
			
		||||
 | 
									<view class="my-image-item" @click="uploadImage" v-if="image_list.length < image_count"> | 
			
		||||
 | 
										<text class="lf-iconfont icon-jia my-image-item-after"></text> | 
			
		||||
 | 
									</view> | 
			
		||||
 | 
									<view class="my-image-item" v-for="(item, index) in image_list" :key="index" @click="lookImage(index)"> | 
			
		||||
 | 
										<image :src="item" mode="aspectFill"></image> | 
			
		||||
 | 
										<view class="remove-image" @click.stop="removeInage(index)"> | 
			
		||||
 | 
											<text class="lf-iconfont icon-shanchu"></text> | 
			
		||||
 | 
										</view> | 
			
		||||
 | 
									</view> | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
							<button class="buttom" hover-class="lf-opacity" @click="submit" v-if="id == 0">立即新增</button> | 
			
		||||
 | 
							<view class="btn-box" v-else> | 
			
		||||
 | 
								<view class="btn2" hover-class="lf-opacity" @click="submit">保持修改</view> | 
			
		||||
 | 
								<view class="btn2"  | 
			
		||||
 | 
									style="background-color: #bd1a1a;"  | 
			
		||||
 | 
									hover-class="lf-opacity" | 
			
		||||
 | 
									@click="deleteActivity">删除活动 | 
			
		||||
 | 
								</view> | 
			
		||||
 | 
							</view> | 
			
		||||
 | 
						</view> | 
			
		||||
 | 
					</view> | 
			
		||||
 | 
				</template> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
					import { config } from '@/common/js/utils.js'; | 
			
		||||
 | 
					 | 
			
		||||
 | 
					export default { | 
			
		||||
 | 
						data(){ | 
			
		||||
 | 
							return { | 
			
		||||
 | 
								title: '', // 标题 | 
			
		||||
 | 
								subtitle: '', // 副标题 | 
			
		||||
 | 
								show_activity_startdate: false, // 活动开始时间 | 
			
		||||
 | 
								show_activity_enddate: false, // 活动开始时间 | 
			
		||||
 | 
								activity_startdate: '', | 
			
		||||
 | 
								activity_enddate: '', | 
			
		||||
 | 
								show_sign_start: false, // 报名时间 | 
			
		||||
 | 
								show_sign_end: false, // 报名时间 | 
			
		||||
 | 
								sign_startdate: '', | 
			
		||||
 | 
								sign_enddate: '', | 
			
		||||
 | 
								activity_content: '', // 活动内容 | 
			
		||||
 | 
								activity_num: '', // 活动人数 | 
			
		||||
 | 
								activity_rule: '', // 活动规则 | 
			
		||||
 | 
								image_list: [], // 刚上传的图片临时路径 | 
			
		||||
 | 
								image_count: 1, // 可上传多少张图 | 
			
		||||
 | 
								uploadImg: [], // 已经上传给后端的图片路径 | 
			
		||||
 | 
								params: { | 
			
		||||
 | 
									year: true, | 
			
		||||
 | 
									month: true, | 
			
		||||
 | 
									day: true, | 
			
		||||
 | 
									hour: true, | 
			
		||||
 | 
									minute: true, | 
			
		||||
 | 
									second: true | 
			
		||||
 | 
								}, | 
			
		||||
 | 
								token: '', | 
			
		||||
 | 
								levels_list: [], // 会员等级列表 | 
			
		||||
 | 
								show_levels: false, // 参与会员 | 
			
		||||
 | 
								levels_index: null, | 
			
		||||
 | 
								id: 0, // 0表示创建活动,大于0 修改活动 | 
			
		||||
 | 
								user_level: null | 
			
		||||
 | 
							} | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						onLoad(options){ | 
			
		||||
 | 
							this.token = this.$cookieStorage.get('store_token'); | 
			
		||||
 | 
							console.log("config", config); | 
			
		||||
 | 
							this.getActivityLevels(); | 
			
		||||
 | 
							if(options.id){ | 
			
		||||
 | 
								this.id = Number(options.id); | 
			
		||||
 | 
								this.getActivityDetail(); | 
			
		||||
 | 
							} | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						methods: { | 
			
		||||
 | 
							// 获取活动详情 | 
			
		||||
 | 
							getActivityDetail(){ | 
			
		||||
 | 
								uni.showLoading({ | 
			
		||||
 | 
									title: '正在获取信息' | 
			
		||||
 | 
								}) | 
			
		||||
 | 
								this.$http.get({ | 
			
		||||
 | 
									api: 'api/supplier/activity/detail', | 
			
		||||
 | 
									data: { | 
			
		||||
 | 
										id: this.id | 
			
		||||
 | 
									}, | 
			
		||||
 | 
									header: { | 
			
		||||
 | 
										token: this.token | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}).then(res => { | 
			
		||||
 | 
									if(res.data.code == 200){ | 
			
		||||
 | 
										let data = res.data.data; | 
			
		||||
 | 
										this.title = data.name; | 
			
		||||
 | 
										this.subtitle = data.username; | 
			
		||||
 | 
										this.activity_startdate = data.time_start; | 
			
		||||
 | 
										this.activity_enddate = data.time_end; | 
			
		||||
 | 
										this.sign_startdate = data.apply_start; | 
			
		||||
 | 
										this.sign_enddate = data.apply_end; | 
			
		||||
 | 
										this.activity_content = data.content; | 
			
		||||
 | 
										this.activity_num = data.member_count; | 
			
		||||
 | 
										this.activity_rule = data.rule; | 
			
		||||
 | 
										this.image_list = [data.image]; | 
			
		||||
 | 
										this.uploadImg = [data.image]; | 
			
		||||
 | 
										if(data.user_level != 0){ | 
			
		||||
 | 
											this.user_level = data.user_level; | 
			
		||||
 | 
										} | 
			
		||||
 | 
									}else{ | 
			
		||||
 | 
										uni.showModal({ | 
			
		||||
 | 
											title: '', | 
			
		||||
 | 
											content: '活动信息获取失败了,请离开此页面稍后再试!' | 
			
		||||
 | 
										}) | 
			
		||||
 | 
									} | 
			
		||||
 | 
									uni.hideLoading(); | 
			
		||||
 | 
								}).catch(err => uni.hideLoading()) | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 删除活动 | 
			
		||||
 | 
							deleteActivity(){ | 
			
		||||
 | 
								uni.showModal({ | 
			
		||||
 | 
									title: '温馨提示', | 
			
		||||
 | 
									content: '您确定删除该活动吗?', | 
			
		||||
 | 
									success: result => { | 
			
		||||
 | 
										if(result.confirm){ | 
			
		||||
 | 
											this.$http.post({ | 
			
		||||
 | 
												api: 'api/supplier/activity/destroy', | 
			
		||||
 | 
												data: { | 
			
		||||
 | 
													id: this.id | 
			
		||||
 | 
												}, | 
			
		||||
 | 
												header: { | 
			
		||||
 | 
													token: this.token | 
			
		||||
 | 
												} | 
			
		||||
 | 
											}).then(res => { | 
			
		||||
 | 
												if(res.data.code == 200){ | 
			
		||||
 | 
													this.$msg(res.data.data || '活动已删除').then(() => { | 
			
		||||
 | 
														this.$toBack(); | 
			
		||||
 | 
													}) | 
			
		||||
 | 
												}else{ | 
			
		||||
 | 
													this.$msg(res.data.data || rea.data.message || '删除失败'); | 
			
		||||
 | 
												} | 
			
		||||
 | 
											}) | 
			
		||||
 | 
										} | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}) | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 获取会员等级列表 | 
			
		||||
 | 
							getActivityLevels(){ | 
			
		||||
 | 
								this.$http.get({ | 
			
		||||
 | 
									api: 'api/supplier/activity/levels', | 
			
		||||
 | 
									header: { | 
			
		||||
 | 
										token: this.token | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}).then(res => { | 
			
		||||
 | 
									let levels_list = res.data.data || []; | 
			
		||||
 | 
									levels_list.unshift({ | 
			
		||||
 | 
										id: 0, | 
			
		||||
 | 
										name: '不限会员等级' | 
			
		||||
 | 
									}); | 
			
		||||
 | 
									this.levels_list = levels_list; | 
			
		||||
 | 
									if(this.user_level != null){ | 
			
		||||
 | 
										levels_list.map((item, index) => { | 
			
		||||
 | 
											if(item.id == this.user_level){ | 
			
		||||
 | 
												this.levels_index = index; | 
			
		||||
 | 
											} | 
			
		||||
 | 
										}) | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}) | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 选择会员等级 | 
			
		||||
 | 
							levelsConfirm(event){ | 
			
		||||
 | 
								this.levels_index = event[0]; | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 选择时间 | 
			
		||||
 | 
							selectDate(e, key){ | 
			
		||||
 | 
								this[key] = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`; | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 上传图片 | 
			
		||||
 | 
							uploadImage(){ | 
			
		||||
 | 
								let current_count = this.image_count - this.image_list.length; | 
			
		||||
 | 
								if(current_count == 0) return; | 
			
		||||
 | 
								uni.chooseImage({ | 
			
		||||
 | 
									count: current_count, | 
			
		||||
 | 
									complete: result => { | 
			
		||||
 | 
										if(result.errMsg == "chooseImage:fail cancel"){ | 
			
		||||
 | 
											return; // 取消选择图片 | 
			
		||||
 | 
										} | 
			
		||||
 | 
										let tempFiles = result.tempFiles; | 
			
		||||
 | 
										let image_list = []; | 
			
		||||
 | 
										let overstep = false; | 
			
		||||
 | 
										tempFiles.map(item => { | 
			
		||||
 | 
											// 上传的图片需小于10MB | 
			
		||||
 | 
											if(item.size < 10000000){ | 
			
		||||
 | 
												image_list.push(item.path); | 
			
		||||
 | 
											}else{ | 
			
		||||
 | 
												overstep = true; | 
			
		||||
 | 
											} | 
			
		||||
 | 
										}) | 
			
		||||
 | 
										if(overstep){ | 
			
		||||
 | 
											uni.showModal({ | 
			
		||||
 | 
												title: '温馨提示', | 
			
		||||
 | 
												content: '您上传的图片含有超出10M大小的限制,请优化大小后再上传!', | 
			
		||||
 | 
												showCancel: false | 
			
		||||
 | 
											}) | 
			
		||||
 | 
										} | 
			
		||||
 | 
										this.image_list.push(...image_list); | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}) | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 将图片临时路径上传到后端,得到线上图片地址 | 
			
		||||
 | 
							uploadDiscover(img) { | 
			
		||||
 | 
								return new Promise((resolve, reject) => { | 
			
		||||
 | 
									uni.showLoading({ | 
			
		||||
 | 
										title: '正在上传中' | 
			
		||||
 | 
									}) | 
			
		||||
 | 
									uni.uploadFile({ | 
			
		||||
 | 
										header: { | 
			
		||||
 | 
											token: this.token | 
			
		||||
 | 
										}, | 
			
		||||
 | 
										url: `${config.GLOBAL.baseUrl}api/supplier/upload_image`, | 
			
		||||
 | 
										filePath: img, | 
			
		||||
 | 
										fileType: 'image', | 
			
		||||
 | 
										name: 'image', | 
			
		||||
 | 
										success: res => { | 
			
		||||
 | 
											var result = JSON.parse(res.data).data.url;  | 
			
		||||
 | 
											// this.uploadImg.push(result) | 
			
		||||
 | 
											// console.log('上传后的图片路径',this.uploadImg) | 
			
		||||
 | 
											uni.hideLoading(); | 
			
		||||
 | 
											resolve(result); | 
			
		||||
 | 
										}, | 
			
		||||
 | 
										fail: err => { | 
			
		||||
 | 
											console.log(err) | 
			
		||||
 | 
											uni.hideLoading(); | 
			
		||||
 | 
											reject(err); | 
			
		||||
 | 
										} | 
			
		||||
 | 
									}) | 
			
		||||
 | 
								}) | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 预览图片 | 
			
		||||
 | 
							lookImage(current){ | 
			
		||||
 | 
								if(this.image_list.length <= 0) return; | 
			
		||||
 | 
								this.$u.throttle(() => { | 
			
		||||
 | 
									uni.previewImage({ | 
			
		||||
 | 
										urls: this.image_list, | 
			
		||||
 | 
										current: current | 
			
		||||
 | 
									}); | 
			
		||||
 | 
								}, 500); | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 移除图片 | 
			
		||||
 | 
							removeInage(current){ | 
			
		||||
 | 
								this.image_list.splice(current, 1); | 
			
		||||
 | 
								if(this.uploadImg.length){ | 
			
		||||
 | 
									this.uploadImg.splice(current, 1); | 
			
		||||
 | 
								} | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 提交 | 
			
		||||
 | 
							submit(){ | 
			
		||||
 | 
								if(!this.title) return this.$msg('请输入标题'); | 
			
		||||
 | 
								if(!this.subtitle) return this.$msg('请输入副标题'); | 
			
		||||
 | 
								if(!this.activity_startdate) return this.$msg('未选择活动开始时间'); | 
			
		||||
 | 
								if(!this.activity_enddate) return this.$msg('未选择活动结束时间'); | 
			
		||||
 | 
								if(!this.sign_startdate) return this.$msg('未选择报名开始时间'); | 
			
		||||
 | 
								if(!this.sign_enddate) return this.$msg('未选择报名结束时间'); | 
			
		||||
 | 
								if(!this.activity_content) return this.$msg('请填写活动内容'); | 
			
		||||
 | 
								if(!this.activity_num) return this.$msg('请填写活动人数'); | 
			
		||||
 | 
								if(!this.activity_rule) return this.$msg('请填写活动规则'); | 
			
		||||
 | 
								if(!this.image_list.length) return this.$msg('请上传活动封面图'); | 
			
		||||
 | 
								 | 
			
		||||
 | 
								if(this.uploadImg.length){ | 
			
		||||
 | 
									this.submitHttp(); | 
			
		||||
 | 
								}else{ | 
			
		||||
 | 
									this.uploadDiscover(this.image_list[0]).then(res => { | 
			
		||||
 | 
										console.log("submit", res); | 
			
		||||
 | 
										this.uploadImg = [res]; | 
			
		||||
 | 
										this.submitHttp(); | 
			
		||||
 | 
									}) | 
			
		||||
 | 
								} | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							submitHttp(){ | 
			
		||||
 | 
								uni.showLoading({ | 
			
		||||
 | 
									title: '正在提交中' | 
			
		||||
 | 
								}) | 
			
		||||
 | 
								let par = { | 
			
		||||
 | 
									id: this.id, | 
			
		||||
 | 
									name: this.title, | 
			
		||||
 | 
									username: this.subtitle, | 
			
		||||
 | 
									member_count: this.activity_num, | 
			
		||||
 | 
									image: this.uploadImg[0], | 
			
		||||
 | 
									time_start: this.activity_startdate, | 
			
		||||
 | 
									time_end: this.activity_enddate, | 
			
		||||
 | 
									apply_start: this.sign_startdate, | 
			
		||||
 | 
									apply_end: this.sign_enddate, | 
			
		||||
 | 
									content: this.activity_content, | 
			
		||||
 | 
									rule: this.activity_rule, | 
			
		||||
 | 
									user_level: 0 | 
			
		||||
 | 
								} | 
			
		||||
 | 
								if(this.levels_index != null){ | 
			
		||||
 | 
									par.user_level = this.levels_list[this.levels_index].id; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								this.$http.post({ | 
			
		||||
 | 
									api: 'api/supplier/activity/store', | 
			
		||||
 | 
									data: par, | 
			
		||||
 | 
									header: { | 
			
		||||
 | 
										token: this.token | 
			
		||||
 | 
									} | 
			
		||||
 | 
								}).then(res => { | 
			
		||||
 | 
									console.log("``````", res); | 
			
		||||
 | 
									if(res.data.code == 200){ | 
			
		||||
 | 
										this.$msg('操作成功', {icon: 'success'}).then(() => { | 
			
		||||
 | 
											this.$toBack(); | 
			
		||||
 | 
										}) | 
			
		||||
 | 
									}else{ | 
			
		||||
 | 
										uni.showModal({ | 
			
		||||
 | 
											title: '', | 
			
		||||
 | 
											content: res.data.message || '新增活动失败!', | 
			
		||||
 | 
											showCancel: false | 
			
		||||
 | 
										}) | 
			
		||||
 | 
									} | 
			
		||||
 | 
									uni.hideLoading() | 
			
		||||
 | 
								}).catch(err => uni.hideLoading()) | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
					} | 
			
		||||
 | 
				</script> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<style lang="scss" scoped> | 
			
		||||
 | 
					.content{ | 
			
		||||
 | 
						padding: 30rpx 32rpx; | 
			
		||||
 | 
						width: 750rpx; | 
			
		||||
 | 
						height: max-content; | 
			
		||||
 | 
						.list{ | 
			
		||||
 | 
							width: 100%; | 
			
		||||
 | 
							padding-bottom: 60rpx; | 
			
		||||
 | 
							.title{ | 
			
		||||
 | 
								font-size: 28rpx; | 
			
		||||
 | 
								color: #222222; | 
			
		||||
 | 
								margin-bottom: 20rpx; | 
			
		||||
 | 
							} | 
			
		||||
 | 
							.input{ | 
			
		||||
 | 
								width: 100%; | 
			
		||||
 | 
								height: 80rpx; | 
			
		||||
 | 
								background: rgba(14, 47, 158, 0.05); | 
			
		||||
 | 
								border-radius: 5rpx; | 
			
		||||
 | 
								padding: 20rpx 30rpx; | 
			
		||||
 | 
								box-sizing: border-box; | 
			
		||||
 | 
							} | 
			
		||||
 | 
							.select{ | 
			
		||||
 | 
								width: 100%; | 
			
		||||
 | 
								height: 80rpx; | 
			
		||||
 | 
								padding: 20rpx 30rpx; | 
			
		||||
 | 
								box-sizing: border-box; | 
			
		||||
 | 
								display: flex; | 
			
		||||
 | 
								justify-content: space-between; | 
			
		||||
 | 
								align-items: center; | 
			
		||||
 | 
								background: rgba(14, 47, 158, 0.05); | 
			
		||||
 | 
								border-radius: 5rpx; | 
			
		||||
 | 
								border: 1rpx solid #0E2F9E; | 
			
		||||
 | 
								font-size: 28rpx; | 
			
		||||
 | 
								color: #0E2F9E; | 
			
		||||
 | 
							} | 
			
		||||
 | 
							.textarea{ | 
			
		||||
 | 
								width: 686rpx; | 
			
		||||
 | 
								height: 283rpx; | 
			
		||||
 | 
								background: rgba(14, 47, 158, 0.05); | 
			
		||||
 | 
								border-radius: 5rpx; | 
			
		||||
 | 
								padding: 20rpx 30rpx; | 
			
		||||
 | 
								box-sizing: border-box; | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
						 | 
			
		||||
 | 
						.my-images{ | 
			
		||||
 | 
							display: flex; | 
			
		||||
 | 
							flex-wrap: wrap; | 
			
		||||
 | 
							margin-top: 30rpx; | 
			
		||||
 | 
							margin-bottom: 18rpx; | 
			
		||||
 | 
							.my-image-item{ | 
			
		||||
 | 
								width: 220rpx; | 
			
		||||
 | 
								height: 220rpx; | 
			
		||||
 | 
								// background: #DDDDDD; | 
			
		||||
 | 
								background-color: rgba(14, 47, 158, 0.05); | 
			
		||||
 | 
								position: relative; | 
			
		||||
 | 
								margin-right: 12rpx; | 
			
		||||
 | 
								&:nth-child(3n){ | 
			
		||||
 | 
									margin-right: 0rpx; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								&:nth-child(n+4){ | 
			
		||||
 | 
									margin-top: 12rpx; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								image{ | 
			
		||||
 | 
									width: 100%; | 
			
		||||
 | 
									height: 100%; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								.remove-image{ | 
			
		||||
 | 
									position: absolute; | 
			
		||||
 | 
									right: -4rpx; | 
			
		||||
 | 
									top: -18rpx; | 
			
		||||
 | 
									color: #e74c3c; | 
			
		||||
 | 
									font-size: 40rpx; | 
			
		||||
 | 
									padding: 8rpx; | 
			
		||||
 | 
								} | 
			
		||||
 | 
							} | 
			
		||||
 | 
							.my-image-item-after{ | 
			
		||||
 | 
								position: absolute; | 
			
		||||
 | 
								width: 100%; | 
			
		||||
 | 
								height: 100%; | 
			
		||||
 | 
								display: flex; | 
			
		||||
 | 
								justify-content: center; | 
			
		||||
 | 
								align-items: center; | 
			
		||||
 | 
								font-size: 60rpx; | 
			
		||||
 | 
								color: #999999; | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
						 | 
			
		||||
 | 
						.buttom{ | 
			
		||||
 | 
							width: 550rpx; | 
			
		||||
 | 
							height: 100rpx; | 
			
		||||
 | 
							background: #0D2E9A; | 
			
		||||
 | 
							border-radius: 50rpx; | 
			
		||||
 | 
							margin: 0 auto; | 
			
		||||
 | 
							display: flex; | 
			
		||||
 | 
							justify-content: center; | 
			
		||||
 | 
							align-items: center; | 
			
		||||
 | 
							font-size: 32rpx; | 
			
		||||
 | 
							color: #FFFFFF; | 
			
		||||
 | 
						} | 
			
		||||
 | 
						.btn-box{ | 
			
		||||
 | 
							width: 100%; | 
			
		||||
 | 
							height: 100rpx; | 
			
		||||
 | 
							display: flex; | 
			
		||||
 | 
							justify-content: space-between; | 
			
		||||
 | 
							.btn2{ | 
			
		||||
 | 
								width: 48%; | 
			
		||||
 | 
								height: 100%; | 
			
		||||
 | 
								background-color: #0D2E9A; | 
			
		||||
 | 
								border-radius: 50rpx; | 
			
		||||
 | 
								font-size: 32rpx; | 
			
		||||
 | 
								color: #FFFFFF; | 
			
		||||
 | 
								display: flex; | 
			
		||||
 | 
								justify-content: center; | 
			
		||||
 | 
								align-items: center; | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
					} | 
			
		||||
 | 
				</style> | 
			
		||||
@ -0,0 +1,302 @@ | 
			
		|||||
 | 
				<template> | 
			
		||||
 | 
					<view> | 
			
		||||
 | 
						<lf-nav title="活动列表" :showIcon="true" bgColor="#fff" @changeHeight="e => nav_height = e"></lf-nav> | 
			
		||||
 | 
						<view v-if="tab_list.length"> | 
			
		||||
 | 
							<u-tabs :list="tab_list" active-color="#0E2F9E" inactive-color='#777777' :is-scroll="true" :current="tab_current" @change="tabChange"></u-tabs> | 
			
		||||
 | 
						</view> | 
			
		||||
 | 
						<swiper :style="{height: autoHeight}" :current="tab_current" @change="swiperChange"> | 
			
		||||
 | 
							<swiper-item v-for="(tab, tabIndex) in tab_list" :key="tabIndex"> | 
			
		||||
 | 
								<scroll-view :style="{height: autoHeight}" :scroll-y="true" :refresher-enabled="true" :refresher-triggered="isRefresher" | 
			
		||||
 | 
									@scrolltolower="onScrolltolower" @refresherrefresh="onRefresherrefresh"> | 
			
		||||
 | 
									<view class="scroll-content"> | 
			
		||||
 | 
										<view class="card" v-for="(item, index) in tab.list" :key="index" @click="goDetails(item)"> | 
			
		||||
 | 
											<view class="cover"> | 
			
		||||
 | 
												<image class="img" :src="item.image"></image> | 
			
		||||
 | 
												<!-- TODO 活动标签 --> | 
			
		||||
 | 
												<!-- <view class="label" :class="'theme-'+ (index+1)" v-if="item.is_expired==false && item.state =='待使用'">待使用</view> | 
			
		||||
 | 
												<view class="label" :class="'theme-'+ (index+1)" v-if="item.is_expired==true">已过期</view> | 
			
		||||
 | 
												<view class="label" :class="'theme-'+ (index+1)" v-if="item.is_expired==false">{{item.state}}</view> --> | 
			
		||||
 | 
												<!-- <view class="label theme-1">{{ showLabel(item) }}</view> --> | 
			
		||||
 | 
											</view> | 
			
		||||
 | 
											<view class="info"> | 
			
		||||
 | 
												<view class="title">{{item.name}}</view> | 
			
		||||
 | 
												<view class="date">{{item.created_at}}</view> | 
			
		||||
 | 
											</view> | 
			
		||||
 | 
										</view> | 
			
		||||
 | 
										<!-- 空数据的情况 --> | 
			
		||||
 | 
										<view class="loading-more"> | 
			
		||||
 | 
											<text v-if="tab.list.length" | 
			
		||||
 | 
												:class="{'loading-more-text': tab.loadingClass}">{{ tab.loadingText }}</text> | 
			
		||||
 | 
											<lf-nocontent v-else src="/static/images/empty.png"></lf-nocontent> | 
			
		||||
 | 
										</view> | 
			
		||||
 | 
									</view> | 
			
		||||
 | 
									<view style="height: 30rpx;"></view> | 
			
		||||
 | 
								</scroll-view> | 
			
		||||
 | 
							</swiper-item> | 
			
		||||
 | 
						</swiper> | 
			
		||||
 | 
					</view> | 
			
		||||
 | 
				</template> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
					export default { | 
			
		||||
 | 
						data(){ | 
			
		||||
 | 
							let _public = { | 
			
		||||
 | 
								page: 1, | 
			
		||||
 | 
								isPage: true, | 
			
		||||
 | 
								loadingClass: true, | 
			
		||||
 | 
								loadingText: '正在加载中' | 
			
		||||
 | 
							} | 
			
		||||
 | 
							return { | 
			
		||||
 | 
								tab_current: 0, | 
			
		||||
 | 
								tab_list: [{ | 
			
		||||
 | 
									name: '全部', | 
			
		||||
 | 
									state: '', | 
			
		||||
 | 
									list: [], | 
			
		||||
 | 
									..._public | 
			
		||||
 | 
								},{ | 
			
		||||
 | 
									name: '未开始', | 
			
		||||
 | 
									state: 'nstart', | 
			
		||||
 | 
									list: [], | 
			
		||||
 | 
									..._public | 
			
		||||
 | 
								},{ | 
			
		||||
 | 
									name: '进行中', | 
			
		||||
 | 
									state: 'ing', | 
			
		||||
 | 
									list: [], | 
			
		||||
 | 
									..._public | 
			
		||||
 | 
								},{ | 
			
		||||
 | 
									name: '已过期', | 
			
		||||
 | 
									state: 'end', | 
			
		||||
 | 
									list: [], | 
			
		||||
 | 
									..._public | 
			
		||||
 | 
								}], | 
			
		||||
 | 
								scrollH: 0, | 
			
		||||
 | 
								nav_height: 0, | 
			
		||||
 | 
								isRefresher: true, | 
			
		||||
 | 
								pageSize: 10, | 
			
		||||
 | 
								token: '', | 
			
		||||
 | 
								show_count: 0 | 
			
		||||
 | 
							} | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						computed: { | 
			
		||||
 | 
							autoHeight(){ | 
			
		||||
 | 
								return `calc(${this.scrollH}px - ${this.nav_height}px - 86rpx)`; | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							showLabel(){ | 
			
		||||
 | 
								return function(item){ | 
			
		||||
 | 
									 | 
			
		||||
 | 
								} | 
			
		||||
 | 
							} | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						onLoad(){ | 
			
		||||
 | 
							this.token = this.$cookieStorage.get('store_token'); | 
			
		||||
 | 
							let info = uni.getSystemInfoSync(); | 
			
		||||
 | 
							this.scrollH = info.screenHeight; | 
			
		||||
 | 
							this.getMyActivity() | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						onShow(){ | 
			
		||||
 | 
							this.show_count++; | 
			
		||||
 | 
							if(this.show_count > 1){ | 
			
		||||
 | 
								let tab_item = this.tab_list[this.tab_current]; | 
			
		||||
 | 
								tab_item.page = 1; | 
			
		||||
 | 
								tab_item.isPage = true; | 
			
		||||
 | 
								tab_item.loadingClass = true; | 
			
		||||
 | 
								tab_item.list = [] | 
			
		||||
 | 
								tab_item.loadingText = '正在加载中'; | 
			
		||||
 | 
								this.getMyActivity(); | 
			
		||||
 | 
							} | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						methods: { | 
			
		||||
 | 
							goDetails(item) { | 
			
		||||
 | 
								if(!item.is_between){ | 
			
		||||
 | 
									this.$url('/pages/business/activity/add?id='+ item.id); | 
			
		||||
 | 
								} | 
			
		||||
 | 
								// is_apply_expired: false // 活动报名结束 | 
			
		||||
 | 
								// is_between: false // 活动未开始,以此页面跳转可编辑 | 
			
		||||
 | 
								// is_between_apply: false // 活动报名期间 | 
			
		||||
 | 
								// is_start 活动是否开启 | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 页面触底,加载下一页 | 
			
		||||
 | 
							onScrolltolower(){ | 
			
		||||
 | 
								let tab_item = this.tab_list[this.tab_current]; | 
			
		||||
 | 
								if(tab_item.isPage){ | 
			
		||||
 | 
									tab_item.page = tab_item.page + 1; | 
			
		||||
 | 
									this.getMyActivity(); | 
			
		||||
 | 
								} | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// 下拉刷新处理 | 
			
		||||
 | 
							refreshFn(options){ | 
			
		||||
 | 
								let tab_item = this.tab_list[this.tab_current]; | 
			
		||||
 | 
								tab_item.page = 1; | 
			
		||||
 | 
								tab_item.isPage = true; | 
			
		||||
 | 
								tab_item.loadingClass = true; | 
			
		||||
 | 
								tab_item.list = [] | 
			
		||||
 | 
								tab_item.loadingText = '正在加载中'; | 
			
		||||
 | 
								this.getMyActivity(options); | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							// scroll-view 下拉刷新 | 
			
		||||
 | 
							onRefresherrefresh(){ | 
			
		||||
 | 
								this.isRefresher = true; | 
			
		||||
 | 
								this.refreshFn({type: 'scrollRefresh'}); | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							tabChange(event){ | 
			
		||||
 | 
								this.tab_current = event; | 
			
		||||
 | 
								this.getMyActivity(); | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							swiperChange(event){ | 
			
		||||
 | 
								this.tab_current = event.detail.current; | 
			
		||||
 | 
								if (event.detail.source == '') return; // 如果是被动出发,没有事件类型则不做处理 | 
			
		||||
 | 
								this.getMyActivity(); | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							getMyActivity(options = {}) { | 
			
		||||
 | 
								let tab_item = this.tab_list[this.tab_current]; | 
			
		||||
 | 
								this.$http | 
			
		||||
 | 
								    .get({ | 
			
		||||
 | 
								        api: 'api/supplier/activity', | 
			
		||||
 | 
										data:{ | 
			
		||||
 | 
											status: tab_item.state, | 
			
		||||
 | 
											page: tab_item.page, | 
			
		||||
 | 
											page_size: this.pageSize | 
			
		||||
 | 
										}, | 
			
		||||
 | 
										header: { | 
			
		||||
 | 
										    token: this.token | 
			
		||||
 | 
										}, | 
			
		||||
 | 
								    }) | 
			
		||||
 | 
								    .then(res => { | 
			
		||||
 | 
								        if (res.data.code == 200) { | 
			
		||||
 | 
								            if (res.data.status) { | 
			
		||||
 | 
												let isPage = res.data.next_page_url == null?false:true; | 
			
		||||
 | 
												tab_item.isPage = isPage; | 
			
		||||
 | 
												if(!isPage) { | 
			
		||||
 | 
													tab_item.loadingClass = false; | 
			
		||||
 | 
													tab_item.loadingText = '没有更多数据啦~'; | 
			
		||||
 | 
												} | 
			
		||||
 | 
												if(options.type == 'pageRefresh') { | 
			
		||||
 | 
													uni.stopPullDownRefresh(); | 
			
		||||
 | 
												}else if(options.type == 'scrollRefresh') { | 
			
		||||
 | 
													this.isRefresher = false; | 
			
		||||
 | 
												} | 
			
		||||
 | 
												if(tab_item.page == 1) { | 
			
		||||
 | 
													tab_item.list = res.data.data.data; | 
			
		||||
 | 
												}else { | 
			
		||||
 | 
													tab_item.list.push(...res.data.data.data); | 
			
		||||
 | 
												} | 
			
		||||
 | 
								               console.log('数组列表',tab_item.list) | 
			
		||||
 | 
								            } else { | 
			
		||||
 | 
								                wx.showModal({ | 
			
		||||
 | 
								                    content: res.data.message || '请下拉页面刷新重试', | 
			
		||||
 | 
								                    showCancel: false | 
			
		||||
 | 
								                }); | 
			
		||||
 | 
								            } | 
			
		||||
 | 
								        } else { | 
			
		||||
 | 
								            wx.showModal({ | 
			
		||||
 | 
								                content: res.data.message || '请下拉页面刷新重试', | 
			
		||||
 | 
								                showCancel: false | 
			
		||||
 | 
								            }); | 
			
		||||
 | 
								        } | 
			
		||||
 | 
								        wx.hideLoading(); | 
			
		||||
 | 
								    }) | 
			
		||||
 | 
								    .catch(() => { | 
			
		||||
 | 
								        wx.hideLoading(); | 
			
		||||
 | 
								        wx.showModal({ | 
			
		||||
 | 
								            content: '请求失败', | 
			
		||||
 | 
								            showCancel: false | 
			
		||||
 | 
								        }); | 
			
		||||
 | 
								    }); | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
					} | 
			
		||||
 | 
				</script> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<style lang="scss" scoped="scoped"> | 
			
		||||
 | 
					.scroll-content{ | 
			
		||||
 | 
						width: 100%; | 
			
		||||
 | 
						display: flex; | 
			
		||||
 | 
						flex-wrap: wrap; | 
			
		||||
 | 
						justify-content: center; | 
			
		||||
 | 
						.card{ | 
			
		||||
 | 
							width: 686rpx; | 
			
		||||
 | 
							height: max-content; | 
			
		||||
 | 
							background-color: #FFFFFF; | 
			
		||||
 | 
							box-shadow: 1rpx 1rpx 6rpx 3rpx #e5e5e5; | 
			
		||||
 | 
							margin-top: 30rpx; | 
			
		||||
 | 
							border-radius: 20rpx; | 
			
		||||
 | 
							overflow: hidden; | 
			
		||||
 | 
							.cover{ | 
			
		||||
 | 
								width: 686rpx; | 
			
		||||
 | 
								height: 300rpx; | 
			
		||||
 | 
								position: relative; | 
			
		||||
 | 
								.img{ | 
			
		||||
 | 
									width: 100%; | 
			
		||||
 | 
									height: 100%; | 
			
		||||
 | 
									background-color: #EEEEEE; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								.label{ | 
			
		||||
 | 
									position: absolute; | 
			
		||||
 | 
									top: 0; | 
			
		||||
 | 
									left: 0; | 
			
		||||
 | 
									width: 118rpx; | 
			
		||||
 | 
									height: 57rpx; | 
			
		||||
 | 
									border-radius: 20rpx 0rpx 20rpx 0rpx; | 
			
		||||
 | 
									text-align: center; | 
			
		||||
 | 
									line-height: 57rpx; | 
			
		||||
 | 
									color: #FFFFFF; | 
			
		||||
 | 
									font-size: 26rpx; | 
			
		||||
 | 
								} | 
			
		||||
 | 
							} | 
			
		||||
 | 
							.info{ | 
			
		||||
 | 
								width: 686rpx; | 
			
		||||
 | 
								height: max-content; | 
			
		||||
 | 
								padding: 20rpx 30rpx; | 
			
		||||
 | 
								box-sizing: border-box; | 
			
		||||
 | 
								.title{ | 
			
		||||
 | 
									font-size: 28rpx; | 
			
		||||
 | 
									color: #222222; | 
			
		||||
 | 
									font-weight: bold; | 
			
		||||
 | 
								} | 
			
		||||
 | 
								.date{ | 
			
		||||
 | 
									margin-top: 20rpx; | 
			
		||||
 | 
									font-size: 24rpx; | 
			
		||||
 | 
									color: #555555; | 
			
		||||
 | 
								} | 
			
		||||
 | 
							} | 
			
		||||
 | 
						} | 
			
		||||
 | 
					} | 
			
		||||
 | 
					 | 
			
		||||
 | 
					.theme-1{ | 
			
		||||
 | 
						background-color: #0E2F9E; | 
			
		||||
 | 
					} | 
			
		||||
 | 
					.theme-2{ | 
			
		||||
 | 
						background-color: #1789E4; | 
			
		||||
 | 
					} | 
			
		||||
 | 
					.theme-3{ | 
			
		||||
 | 
						background-color: #777777; | 
			
		||||
 | 
					} | 
			
		||||
 | 
					 | 
			
		||||
 | 
					// tabs 样式修改 | 
			
		||||
 | 
					/deep/.u-scroll-box { | 
			
		||||
 | 
						display: flex; | 
			
		||||
 | 
						justify-content: center; | 
			
		||||
 | 
						align-items: center; | 
			
		||||
 | 
						border-bottom: 1rpx solid rgba(0, 0, 0, 0.1); | 
			
		||||
 | 
					} | 
			
		||||
 | 
					/deep/.u-scroll-box .u-tab-bar { | 
			
		||||
 | 
						background-color: #0E2F9E!important; | 
			
		||||
 | 
						width: 80rpx!important; | 
			
		||||
 | 
						position: absolute; | 
			
		||||
 | 
						left: 0; | 
			
		||||
 | 
						bottom: -12rpx; | 
			
		||||
 | 
					} | 
			
		||||
 | 
					 | 
			
		||||
 | 
					/deep/.special_tab .u-tabs .u-scroll-box .u-tab-bar { | 
			
		||||
 | 
						background-color: #0E2F9E!important; | 
			
		||||
 | 
						width: 56rpx!important; | 
			
		||||
 | 
						position: absolute; | 
			
		||||
 | 
						height: 5rpx!important; | 
			
		||||
 | 
						left: 8rpx; | 
			
		||||
 | 
						bottom: -4rpx; | 
			
		||||
 | 
					} | 
			
		||||
 | 
					 | 
			
		||||
 | 
					/deep/ .u-tab-item { | 
			
		||||
 | 
						font-size: 28rpx!important; | 
			
		||||
 | 
					} | 
			
		||||
 | 
				</style> | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue