<template>
	<view class="whole">
		<view class="oneBox">
			<view class="row flex" @click="showType = true">
				<view class="span">商品类型<text>*</text></view>
				<view class="text">
					<text v-if="Index === ''">请选择</text>
					<text v-else>{{typeList[Index].name}}</text>
					<up-icon name="arrow-right" size="14" />
				</view>
			</view>
			
			<view class="row flex">
				<view class="span">商品名称<text>*</text></view>
				<input class="input" type="text" v-model="goods_name" placeholder="请填写商品名称" />
			</view>
			
			<view class="row">
				<view class="span">上传图片</view>
				<view class="upImg">
					<view class="hasimg" v-for="(item, index) in imgList" :key="index">
						<image :src="item" class="img" mode="aspectFill"></image>
						<view class="icon flexc" @click="delUpImg(item, index)"><up-icon name="close" color="#fff" size="12" /></view>
					</view>
					<view class="plus flexc" @click="uploadImg()">
						<up-icon name="camera-fill" color="#9D9D9D" size="20" />
						<text>上传图片</text>
					</view>
				</view>
			</view>
			
			<view class="row" style="padding: 0;">
				<up-textarea v-model="desc" count placeholder="请填写备注,如商品来源,商品信息" style="font-size: 28rpx;" :height="70" :maxlength="500"></up-textarea>
			</view>
			
			<view class="btmbox flexc" @click="commitSubmit()">提交</view>
		</view>
		
		<up-popup :show="showType" :round="10" mode="bottom" @close="showType = false">
			<view class="reasonbox">
				<view class="title">请选择商品类型</view>
				<view class="box">
					<view class="row" v-for="(item, index) in typeList" :key="index" @click="selectType(index)">
						<view class="tit">{{item.name}}</view>
						<up-icon v-if="Index === index" name="checkbox-mark" color="#F14939" size="20" />
					</view>
				</view>
			</view>
		</up-popup>
		
		<!-- 隐私协议弹窗 -->
		<privacy-popup :show-dialog="showPrivacy" @close="showPrivacy = false" @agree="showPrivacy = false" @refuse="showPrivacy = false" />
		
	</view>
</template>

<script>
	import { reactive, toRefs } from 'vue'
	import { get, post } from '@/api/request.js'
	import { showToast, judgePrivacy } from '@/components/common.js'
	import privacyPopup from '@/components/privacyPopup/index.vue'
	import { Style } from '@/utils/list.js'
	import API from '/api/index'
	
	export default {
		components: {
			privacyPopup
		},
		setup() {
			const data = reactive({
				reason: '',
				mobile: '',
				desc: '',
				imgList: [],
				Color: uni.getStorageSync('theme_color'),
				bgColor: Style[uni.getStorageSync('theme_index') * 1].bgColor,
				showPrivacy: false,
				goods_name: '',
				typeList: [],
				Index: '',
				showType: false
			})

			function changeDesc(e) {
				data.desc = e.detail
			}
			
			// 上传图片
			async function uploadImg() {
				if(data.imgList.length >= 3) {
					showToast('最多只能添加3张图片喔')
					return false
				}
				if(await judgePrivacy()) {
					data.showPrivacy = true
					return false
				}
				uni.chooseImage({
					success(res) {
						const tempFilePaths = res.tempFilePaths
						uni.showLoading({
							title: '正在上传...',
							mask: true
						})
						tempFilePaths.forEach((item) => {
							uni.uploadFile({
								url: API.url + '/api/v1/upload',
								filePath: item,
								name: 'file',
								header: {
									Authorization: uni.getStorageSync('token') || '',
									accept: 'application/json',
									appid: API.appId
								},
								success(req) {
									uni.hideLoading()
									if(data.imgList.length >= 3){
										showToast('最多只能添加3张图片喔')
									} else {
										const imgUrl = JSON.parse(req.data).data.link
										data.imgList.push(imgUrl)
									}
								},
								fail() {
									uni.hideLoading()
								}
							})
						})
					}
				})
			}
		  
			// 删除图片
			function delUpImg(item, index) {
				data.imgList.splice(index, 1)
			}
			
			function selectType(index) {
				data.Index = index
				data.showType = false
			}

			// 确认提交
			const commitSubmit = async () => {
				if(data.Index === '') {
					return showToast('请选择商品类型')
				}
				if(!data.goods_name) {
					return showToast('请填写商品名称')
				}
				uni.showLoading({
					mask: true,
					title: '正在提交'
				})
				let param = {
					shop_group_id: data.typeList[data.Index].id,
					goods_name: data.goods_name,
					comment: data.desc,
					images: data.imgList
				}
				post('/api/v1/wish', param).then(res => {
					uni.hideLoading()
					uni.showToast({
						title: '提交成功',
						icon: 'success',
						duration: 1000,
						mask: true,
						success() {
							setTimeout(() => {
								uni.navigateBack({delta: 1})
							}, 1000)
						}
					})
				}).catch(() => {
					uni.hideLoading()
				})
			}
			
			function getCategoryList() {
				get('/api/v1/group', { parent_id: 0 }).then((res) => {
					data.typeList = res.data
				})
			}

			return {
				...toRefs(data),
				changeDesc,
				commitSubmit,
				uploadImg,
				delUpImg,
				selectType,
				getCategoryList
			}
		},
		async onLoad(options) {
			// await this.$onLaunched
			this.getCategoryList()
		}
	}
</script>


<style lang="scss" scoped>
.whole {
	background-color: #F5F5F5;
	position: relative;
	padding-bottom: 140rpx;
	.pad20{
		padding: 20rpx 0;
		box-sizing: border-box;
	}
	.oneBox{
		padding: 20rpx;
		box-sizing: border-box;
		.row{
			padding: 0 24rpx;
			font-size: 28rpx;
			background-color: #fff;
			margin-bottom: 20rpx;
			border-radius: 6rpx;
			.span{
				line-height: 80rpx;
				font-size: 30rpx;
				position: relative;
				&::after{
					position: absolute;
					border-bottom: 1px solid #f4f4f4;
					width: calc(100% + 40rpx);
					left: -20rpx;
					bottom: 0;
					content: '';
				}
				text{
					font-size: 24rpx;
					color: #f00;
				}
			}
			.input{
				width: calc(100% - 250rpx);
				height: 64rpx;
				text-align: right;
			}
			.upImg{
				display: flex;
				flex-wrap: wrap;
				width: 100%;
				padding: 24rpx 0;
				.hasimg{
					width: 130rpx;
					height: 130rpx;
					margin-right: 30rpx;
					margin-bottom: 30rpx;
					position: relative;
					.img{
						width: 100%;
						height: 100%;
					}
					.icon{
						position: absolute;
						top: -18rpx;
						right: -18rpx;
						width: 36rpx;
						height: 36rpx;
						background: rgba(0, 0, 0, 0.6);
						border-radius: 50%;
						z-index: 10;
					}
				}
				.plus{
					width: 140rpx;
					height: 140rpx;
					flex-direction: column;
					border: 1px dashed #707070;
					box-sizing: border-box;
					border-radius: 6rpx;
					text{
						font-size: 24rpx;
						color: #9D9D9D;
						text-align: center;
					}
				}
			}
		}
	}
	
	.btmbox{
		width: 94%;
		height: 80rpx;
		color: #fff;
		background: v-bind('Color');
		border-radius: 10rpx;
		font-size: 30rpx;
		position: fixed;
		bottom: 30rpx;
		left: 3%;
	}
	.flexc{
		display: flex;
		align-items: center;
		justify-content: center;
	}
	.flex{
		display: flex;
		align-items: center;
		justify-content: space-between;
	}
}
.reasonbox{
	padding: 0 30rpx;
	.title{
		font-size: 30rpx;
		color: #303030;
		font-weight: bold;
		padding: 30rpx 0;
		border-bottom: 1rpx solid #E5E5E5;
	}
	.box{
		height: 65vh;
		overflow: auto;
		.row{
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: 20rpx 0;
			.tit{
				font-size: 28rpx;
				color: #707070;
			}
		}
	}
}
</style>
