activityAdd.vue 7.91 KB
<template>
	<view class="page">
		<u-form :model="form" ref="uForm" label-position="left" :label-width="180">
			<view class="add-list" style="padding-bottom: 0;">
				<u-form-item :required="true" label="封面图片" borderBottom labelPosition="top">
					<!-- <u-upload :action="$upload"  :auto-upload="true"  ref="uUpload" :max-count="1" ></u-upload> -->
					<u-upload :action="$upload" :auto-upload="false" ref="coverImage" :max-count="1" :file-list="fist"
						@on-choose-complete="(response, file, fileList) => onsuccess1(response, file, fileList, 'coverImage')"></u-upload>
				</u-form-item>
			</view>
			<view class="add-list" style="padding-bottom: 0;">
				<u-form-item :required="true" label="活动名称" borderBottom>
					<u-input v-model="form.activityName" />
				</u-form-item>
				<u-form-item :required="true" label="开始时间" borderBottom>
					<u-input v-model="form.startTime" type="select" @click="startShow = true" placeholder="请选择" />
					<u-picker mode="time" v-model="startShow" :params="params" @confirm="startTimeChange"></u-picker>
				</u-form-item>
				<u-form-item :required="true" label="结束时间" borderBottom>
					<u-input v-model="form.endTime" type="select" @click="endShow = true" placeholder="请选择" />
					<u-picker mode="time" v-model="endShow" :params="params" @confirm="endTimeChange"></u-picker>
				</u-form-item>
				<u-form-item :required="true" label="活动类型" borderBottom>
					<u-input v-model="form.activityType" type="select" @click="typeShow = true" placeholder="请选择" />
					<u-select v-model="typeShow" :list="typeList" @confirm="typeChange"></u-select>
				</u-form-item>
				<u-form-item :required="true" label="可参与人数" borderBottom>
					<u-number-box v-model="form.maxParticipants" :input-width="'100%'" :min="0"></u-number-box>
				</u-form-item>
				<u-form-item :required="true" label="举办区域" borderBottom>
					<u-input v-model="form.region" />
				</u-form-item>
				<u-form-item :required="true" label="活动内容" borderBottom label-position="top">
					<u-input border type="textarea" height="150" v-model="form.content" />
				</u-form-item>
			</view>

		</u-form>
		<u-toast ref="uToast" />
		<!-- 保存按钮 -->
		<view style="height: 120rpx;"></view>
		<view class="page-footer">
			<u-button style="width: 100%;" type="success" @click="submit">提交</u-button>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				fileList: [],
				form: {
					activityName: '',
					startTime: '',
					endTime: '',
					activityType: '',
					maxParticipants: 0,
					region: '',
					content: '',
					auditStatus: '1',
					createUser: '',
					createDate: '',
					coverImage: '',
				},
				active: '', // 文件上传地址
				startShow: false,
				endShow: false,
				params: {
					year: true,
					month: true,
					day: true,
					hour: true,
					minute: true,
					second: true
				},
				typeShow: false,
				typeList: [{
					value: '1',
					label: '社交活动'
				}, {
					value: '2',
					label: '营销活动'
				}, {
					value: '3',
					label: '公益活动'
				}, {
					value: '4',
					label: '教育学习活动'
				}, {
					value: '5',
					label: '文化艺术活动'
				}],
				readOnly: false,
				formats: {},
				fist: [],
				pageIndex: {
					pageNumber: 0,
					pageSize: 10,
					id: ''
				},
				typeEdit: false
			};
		},
		onLoad(option) {
			if (option.ids) {
				this.typeEdit = true
				this.pageIndex.id = option.ids
				this.$http.sendRequest('/cereActivityApplication/queryByPage', 'POST', this.pageIndex, 1).then(res => {
					this.form = res.data.data.content[0]
					this.form.maxParticipants = Number(this.form.maxParticipants)
					this.fist.push({
						url: `${this.$img+this.form.coverImage}`
					})
				})
			}
		},
		methods: {
			startTimeChange(val) {
				this.form.startTime = this.timeChange(val);
				this.form.endTime = '';
			},
			endTimeChange(val) {
				const time = this.timeChange(val);
				if (new Date(time).getTime() > new Date(this.form.startTime).getTime()) {
					this.form.endTime = time
				} else {
					this.$refs.uToast.show({
						title: '结束时间不能小于开始时间',
						type: 'error',
					})
				}
			},
			timeChange(val) {
				const {
					year,
					month,
					day,
					hour,
					minute,
					second
				} = val;
				return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
			},
			typeChange(val) {
				this.form.activityType = val[0].label;
			},
			check() {
				if (!this.form.activityName) {
					uni.showToast({
						icon: 'none',
						title: '请输入活动名称'
					});
					return false;
				}
				if (!this.form.startTime) {
					uni.showToast({
						icon: 'none',
						title: '请选择开始时间'
					});
					return false;
				}
				if (!this.form.endTime) {
					uni.showToast({
						icon: 'none',
						title: '请选择结束时间'
					});
					return false;
				}
				if (!this.form.activityType) {
					uni.showToast({
						icon: 'none',
						title: '请选择活动类型'
					});
					return false;
				}
				if (!this.form.maxParticipants) {
					uni.showToast({
						icon: 'none',
						title: '请输入可参与人数'
					});
					return false;
				}
				if (!this.form.region) {
					uni.showToast({
						icon: 'none',
						title: '请输入举办区域'
					});
					return false;
				}
				if (!this.form.content) {
					uni.showToast({
						icon: 'none',
						title: '请输入活动内容'
					});
					return false;
				}
				if (this.form.coverImage == '') {
					uni.showToast({
						icon: 'none',
						title: '请上传封面图片'
					});
					return false;
				}
				return true;
			},
			submit() {
				let show = this.check()
				if (show == false) {
					return
				}


				this.form.createUser = uni.getStorageSync('user').phone
				this.form.createDate = this.currentTime()
				let info = {
					...this.form,
					coverImage: this.form.coverImage.replace(this.$img, '')
				}
				if (this.typeEdit) {
					this.$http.sendRequest('/cereActivityApplication/edit', 'POST', info, 1).then(res => {
						uni.redirectTo({
							url: '/pages/mycreated/mycreated'
						})
					})
				} else {

					this.$http.sendRequest('/cereActivityApplication/add', 'POST', info, 1).then(res => {
						uni.redirectTo({
							url: '/pages/mycreated/mycreated'
						})
					}).catch(err => {
						console.log(err)
						//请求失败
					})
				}


			},
			// 获取时间
			currentTime() {
				let date = new Date();
				let year = date.getFullYear();
				let month = date.getMonth() + 1; // 月份从0~11,所以加一
				let day = date.getDate();
				let hours = date.getHours();
				let minutes = date.getMinutes();
				let seconds = date.getSeconds();

				// 为月、日、时、分、秒添加前导零(如果需要)
				month = month < 10 ? '0' + month : month;
				day = day < 10 ? '0' + day : day;
				hours = hours < 10 ? '0' + hours : hours;
				minutes = minutes < 10 ? '0' + minutes : minutes;
				seconds = seconds < 10 ? '0' + seconds : seconds;

				// 拼接日期和时间字符串
				let strDate = `${year}-${month}-${day} ${hours}:${minutes}`;
				return strDate;
			},
			onsuccess1(e, file, fileList, ziduan) {
				uni.uploadFile({
					url: this.$upload, // 仅为示例,请替换为您的服务器上传接口
					filePath: e[0].url,
					name: 'file', // 后端接收的文件参数名
					formData: {
						filePath: 'xcx', // 其他表单数据
					},
					success: (uploadFileRes) => {

						this.form.coverImage = this.$img + JSON.parse(uploadFileRes.data).data
						// let obj ={
						// 	url:this.$img + JSON.parse(uploadFileRes.data).data
						// }
						// this.fist.push(obj)
						uni.showToast({
							title: '上传成功',
							icon: 'success',
						});
					},
					fail: (err) => {
						console.error('上传失败', err);
						uni.showToast({
							title: '上传失败',
							icon: 'none',
						});
					},
				});
			},
		}
	}
</script>

<style scoped lang="scss">
	@import 'activityAdd.scss';
</style>