<template>
	<view class="container">
		<template v-if="!isSubmit">
			<view class="form">
				<view class="form-item">
					<view class="form-item-label">
						<text class="label-flag">*</text>问题类型
					</view>
					<view class="form-item-content">
						<view v-for="(item, index) in typeList" :key="index" class="type" @click="form.type = index + 1">
							<image v-if="form.type !== index + 1" src="/static/feedback/circle.png" mode="aspectFill"></image>
							<image v-else src="/static/feedback/circle-choose.png" mode="aspectFill"></image>
							{{ item }}
						</view>
					</view>
				</view>
				<view class="form-item">
					<view class="form-item-label">
						<text class="label-flag">*</text>反馈与建议
					</view>
					<view class="form-item-content">
						<view class="textarea-box">
							<textarea v-model="form.suggest" placeholder="您填写的信息越全，越有利于问题得到快速解决~" placeholder-class="textarea-placeholer" maxlength="299" />
							<view class="text-num">已写<text>{{ form.suggest.length }}</text>/299个字</view>
						</view>
						<view class="image-list">
							<view v-for="(item, index) in form.images" :key="index" class="image">
								<image :src="item" mode="aspectFill" @click="previewImage(item)"></image>
								<image src="/static/delete.png" mode="aspectFill" class="delete" @click.stop="deleteImage(index)"></image>
							</view>
							<view v-if="form.images.length < 5" class="upload-btn" @click="addImage">
								<image src="/static/feedback/photo.png" mode="aspectFill"></image>
								<view class="tip">添加照片</view>
								<view class="sub-tip">最多5张</view>
							</view>
							<view class="image-num"><text>{{ form.images.length }}</text>/5</view>
						</view>
					</view>
				</view>
				<view class="form-item">
					<view class="form-item-content" style="padding: 0 30rpx;">
						<view class="content-info">
							<view class="info-name">您的姓名</view>
							<input type="text" v-model="form.name" placeholder="请填写您的名字" placeholder-class="input-placeholder" />
						</view>
						<view class="content-info">
							<view class="info-name">您的电话</view>
							<input type="number" v-model="form.phone" placeholder="请填写可以联系到您的手机号码" placeholder-class="input-placeholder" />
						</view>
						<view class="content-info">
							<view class="info-name">您的单位</view>
							<input type="text" v-model="form.unit" placeholder="请填写您商城认证的营业执照名称" placeholder-class="input-placeholder" />
						</view>
					</view>
				</view>
			</view>
			<view class="submit" @click="submit">提交</view>
		</template>
		<template v-else>
			<view class="success">
				<image :src="$picUrl+ '/static/feedbackSuccess.png'" mode="aspectFill"></image>
				<view class="success-tip">提交成功</view>
				<text>您的反馈意见已经提交成功，</text>
				<text>预计1-2个工作日内与您联系。</text>
			</view>
			<view class="submit back" @click="back">完成</view>
		</template>
	</view>
</template>

<script>
import * as UploadApi from '@/api/upload'
import * as Api from '@/api/feedback/index.js'
	export default {
		data() {
			return {
				typeList: [
					'功能异常：系统功能异常或不可用',
					'系统建议：用的不爽，我有建议',
					'功能新增：我想用的功能，希望能开发新增',
					'服务建议：服务商服务不到位，我有建议',
				],
				form: {
					type: '',
					suggest: '',
					images: [],
					uploadImages: [],
					name: '',
					phone: '',
					unit: '',
				},
				loading: false,
				isSubmit: false,
			};
		},
		methods: {
			addImage() {
				const that = this;
				uni.chooseImage({
					count: 1,
					sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
					success({
						tempFiles
					}) {
						console.log(that.form.images);
						that.form.images.push(tempFiles[0].path)
						that.upload(tempFiles[0])
					}
				});
			},
			async upload(path) {
				const that = this;
				// 批量上传
				return new Promise((resolve, reject) => {
					if (path) {
						UploadApi.image([path])
							.then(fileIds => {
								console.log(fileIds);
								that.form.uploadImages.push(fileIds[0]);
								resolve(fileIds)
							})
							.catch(reject)
					} else {
						resolve()
					}
				})
			},
			deleteImage(index) {
				this.form.images.splice(index, 1);
				this.form.uploadImages.splice(index, 1);
			},
			previewImage(item) {
				uni.previewImage({
					urls:this.form.images,
				});
			},
			submit() {
				if (!this.form.type) {
					uni.showModal({
						title: '提示',
						content: '请选择问题类型',
						showCancel: false,
					});
					return false;
				}
				if (!this.form.suggest) {
					uni.showModal({
						title: '提示',
						content: '请填写反馈与建议',
						showCancel: false,
					});
					return false;
				}
				if (this.form.uploadImages.length === 0) {
					uni.showModal({
						title: '提示',
						content: '请上传图片',
						showCancel: false,
					});
					return false;
				}
				if (!this.form.name) {
					uni.showModal({
						title: '提示',
						content: '请填写您的姓名',
						showCancel: false,
					});
					return false;
				}
				if (!this.form.phone) {
					uni.showModal({
						title: '提示',
						content: '请填写您的手机号码',
						showCancel: false,
					});
					return false;
				} else if (!/^1[3-9]\d{9}$/.test(this.form.phone)) {
					uni.showModal({
						title: '提示',
						content: '请填写正确格式的手机号码',
						showCancel: false,
					});
					return false;
				}
				if (!this.form.unit) {
					uni.showModal({
						title: '提示',
						content: '请填写您的单位',
						showCancel: false,
					});
					return false;
				}
				if (!this.loading) {
					this.loading = true;
					Api.addFeedback({
						imgs: this.form.uploadImages.join(','),
						type: this.form.type,
						suggest: this.form.suggest,
						name: this.form.name,
						phone: this.form.phone,
						unit: this.form.unit,
					})
						.then(res => {
							console.log(res);
							this.loading = false;
							this.isSubmit = true;
						})
						.catch(() => {
							this.loading = false;
						})
				}
			},
			
			back() {
				uni.navigateBack();
			},
		},
	};
</script>

<style lang="scss" scoped>
	.container {
		padding: 24rpx 24rpx 42rpx;
		.form {
			&-item {
				margin-bottom: 40rpx;
				&:last-child {
					margin-bottom: 0;
				}
				&-label {
					font-size: 30rpx;
					color: #333;
					margin-bottom: 30rpx;
					.label-flag {
						color: #F34A40;
					}
				}
				&-content {
					background: #fff;
					border-radius: 20rpx;
					padding: 40rpx 30rpx;
					font-size: 30rpx;
					color: #333;
					.textarea-box {
						position: relative;
						width: fit-content;
						.text-num {
							position: absolute;
							right: 31rpx;
							bottom: 29rpx;
							font-size: 24rpx;
							line-height: 24rpx;
							color: #999;
							text {
								color: #F34A40;
							}
						}
					}
					textarea {
						height: 215rpx;
						background: #F7F8FA;
						border-radius: 10rpx;
						padding: 20rpx;
					}
					.textarea-placeholer {
						color: #ccc;
						font-size: 24rpx;
					}
					.type {
						display: flex;
						align-items: center;
						margin-bottom: 40rpx;
						&:last-child {
							margin-bottom: 0;
						}
						>image {
							width: 36rpx;
							height: 36rpx;
							margin-right: 20rpx;
						}
					}
					.image-list {
						display: flex;
						flex-wrap: wrap;
						position: relative;
						margin-top: 20rpx;
						.image {
							width: 140rpx;
							height: 140rpx;
							background: #FFFFFF;
							border-radius: 10rpx;
							border: 1px solid #CCCCCC;
							margin-right: 15rpx;
							margin-bottom: 20rpx;
							position: relative;
							.delete {
								width: 30rpx;
								height: 30rpx;
								position: absolute;
								top: 0;
								right: 0;
							}
							>image {
								width: 100%;
								height: 100%;
							}
						}
						.upload-btn {
							width: 140rpx;
							height: 140rpx;
							background: #FFFFFF;
							border-radius: 10rpx;
							border: 1px solid #CCCCCC;
							display: flex;
							flex-direction: column;
							align-items: center;
							padding-top: 20rpx;
							>image {
								width: 45rpx;
								height: 37rpx;
							}
							.tip {
								font-size: 24rpx;
								line-height: 24rpx;
								margin: 13rpx;
							}
							.sub-tip {
								font-size: 22rpx;
								line-height: 22rpx;
								color: #999999;
							}
						}
						.image-num {
							position: absolute;
							right: 0rpx;
							bottom: 20rpx;
							font-size: 24rpx;
							line-height: 24rpx;
							color: #999;
							text {
								color: #F34A40;
							}
						}
					}
					.content-info {
						border-bottom: 1rpx solid #EAEAEA;
						display: flex;
						align-items: center;
						height: 98rpx;
						.info-name {
							margin-right: 40rpx;
						}
						input {
							flex: 1;
						}
						.input-placeholder {
							color: #CCCCCC;
						}
					}
				}
			}
		}
		.submit {
			height: 98rpx;
			background: #F34A40;
			border-radius: 49rpx;
			color: #FFFFFF;
			font-size: 30rpx;
			line-height: 98rpx;
			text-align: center;
			margin-top: 30rpx;
		}
		
		.success {
			display: flex;
			flex-direction: column;
			align-items: center;
			padding-top: 140rpx;
			>image {
				width: 189rpx;
				height: 166rpx;
			}
			.success-tip {
				margin: 34rpx 0 28rpx;
				color: #222222;
				font-size: 36rpx;
				line-height: 36rpx;
			}
			uni-text {
				color: #666666;
				font-size: 28rpx;
				line-height: 40rpx;
			}
		}
		.back {
			position: fixed;
			left: 24rpx;
			width: 702rpx;
			bottom: 43rpx;
		}
	}
</style>