<template>
	<view class="content">
		<view class="title">订单信息</view>
		<view class="box">
			<view class="box_item hflex acenter">
				<view class="left left_red">联系人</view>
				<u-input v-model="name" border="none" placeholder="请输入联系人姓名"></u-input>
			</view>
			<view class="box_item hflex acenter">
				<view class="left left_red">联系电话</view>
				<u-input v-model="phone" border="none" placeholder="请输入手机号"></u-input>
			</view>
		</view>
		<view class="hflex acenter jbetween" style="padding-right: 30rpx;">
			<view class="title">商品信息</view>
			<view class="hflex acenter " @click="addGood">
				<image src="/static/images/common/add_icon2.png" style="width: 36rpx;height: 36rpx;"></image>
				<view class="add_text">添加</view>
			</view>
		</view>
		<block v-for="(item,index) in items" :key="index">
			<view class="box">
				<view class="box_item hflex acenter">
					<view class="left left_red">商品{{index + 1}}</view>
					<u-input v-model="item.name" border="none" placeholder="请输入标题"></u-input>
				</view>
				<view class="box_item hflex acenter">
					<view class="left left_red">规格</view>
					<u-input v-model="item.spec" border="none" placeholder="如颜色/尺寸等"></u-input>
				</view>
				<view class="box_item hflex acenter">
					<view class="left left_red">数量</view>
					<u-input v-model="item.number" type="number" border="none" placeholder="请输入数量"></u-input>
				</view>
				<view class="box_item1">
					<view class="left">质量标准</view>
					<u-textarea v-model="item.standard" confirmType="done" placeholder="请填写质量标准要求"></u-textarea>
				</view>
				<view class="box_item hflex acenter">
					<view class="left">原采购价</view>
					<u-input v-model="item.price" border="none" placeholder="请输入原采购价格"></u-input>
				</view>
				<view class="hflex acenter jend">
					<view class="dte_btn hflex acenter jcenter" @click="delGood(index)">删除</view>
				</view>
			</view>
		</block>
		<view class="box">
			<view class="box_title">图片/视频</view>
			<view class="hflex acenter fwrap" style="padding-bottom: 20rpx;">
				<block v-for="(item,index) in fileList1" :key="index">
					<view v-if="item.type == 'image'" style="position: relative;">
						<image :src="item.url" class="img" mode="aspectFill" v-if="item.type == 'image'"></image>
						<image src="/static/images/common/popu_close.png" class="close_icon" @click="deletePic2(index)"></image>
					</view>
					<view v-if="item.type == 'video'" style="position: relative;">
						<video :src="item.url" direction="0" class="img" v-if="item.type == 'video'"></video>
						<image src="/static/images/common/popu_close.png" class="close_icon" @click="deletePic2(index)"></image>
					</view>
					<!-- <image :src="item.url" class="img" mode="aspectFill" v-if="item.type == 'image'"></image>
					<video :src="item.url" direction="0" class="img" v-if="item.type == 'video'"></video> -->
				</block>
				<!-- <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9" width="200rpx" height="200rpx"></u-upload> -->
				<image src="/static/images/common/upload_img.png" class="img" @click="choose"></image>
			</view>
		</view>
		<view class="box">
			<view class="box_item hflex acenter">
				<view class="left left_red">交货地址</view>
				<u-input v-model="post_address" border="none" placeholder="请填写交货地址"></u-input>
			</view>
			<view class="box_item hflex acenter" @click="showTime">
				<view class="left left_red">交货时间</view>
				<u-input v-model="post_time" border="none" disabled disabledColor="#fff" placeholder="请选择交货时间" suffixIcon="arrow-right"></u-input>
			</view>
			<u-datetime-picker :show="show_time" :minDate="Number(new Date())" mode="date" @cancel="close" @confirm="selectTime"></u-datetime-picker>
		</view>
		<view class="btn hflex acenter jcenter" @click="release">立即发布</view>
		<u-popup :show="show_choose" @close="close">
			<view class="vflex acenter">
				<view class="hflex acenter jcenter choose" @click="choose_img">
					<view>图片</view>
				</view>
				<view class="hflex acenter jcenter choose" @click="choose_video">
					<view>视频</view>
				</view>
				<view class="hflex acenter jcenter choose" @click="close">
					<view>取消</view>
				</view>
			</view>
		</u-popup>
	</view>
</template>

<script>
	import $api from '@/static/js/api.js'
	var that = ''
	export default {
		data() {
			return {
				name: '',
				phone: '',
				items: [
					{
						name: '',
						spec: '',
						number: '',
						standard: '',
						price: ''
					}
				],
				good: {
					name: '',
					spec: '',
					number: '',
					standard: '',
					price: ''
				},
				show: false,
				fileList1: [],
				post_address: '',
				post_time: '',
				show_time: false,
				id: '',
				back: false,
				show_choose: false
			}
		},
		onLoad(options) {
			that = this
			if(options.id) {
				that.id = options.id
				that.getData()
			}
			if(options.back) {
				that.back = options.back
			}
		},
		methods: {
			getData() {
				$api.req({
					url: '/data/api.business.Purchase/show',
					data: {
						tab: 1,
						id: that.id
					}
				}, function(res) {
					if(res.code == 1) {
						that.name = res.data.real_name
						that.phone = res.data.mobile
						that.items = res.data.items
						that.fileList1 = res.data.images
						that.post_address = res.data.post_address
						that.post_time = res.data.post_time
					}
				})
			},
			showTime() {
				that.show_time = true
			},
			formatter(type, value) {
                if (type === 'year') {
                    return `${value}年`
                }
                if (type === 'month') {
                    return `${value}月`
                }
                if (type === 'day') {
                    return `${value}日`
                }
                return value
            },
			close() {
				that.show_time = false
				that.show_choose = false
			},
			selectTime(e) {
				that.post_time = $api.formatDate(e)
				that.close()
			},
			// 删除图片
			deletePic(event) {
				this[`fileList${event.name}`].splice(event.index, 1)
			},
			deletePic2(index) {
				that.fileList1.splice(index,1)
			},
			// 新增图片
			async afterRead(event) {
				uni.showLoading({
					title: '上传中',
					mask: true
				})
				let lists = [].concat(event.file)
				let fileListLen = this[`fileList${event.name}`].length
				lists.map((item) => {
					this[`fileList${event.name}`].push({
						...item,
						// status: 'uploading',
						// message: '上传中'
					})
				})
				for (let i = 0; i < lists.length; i++) {
					const result = await this.uploadFilePromise(lists[i].url)
					let item = this[`fileList${event.name}`][fileListLen]
					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
						// status: 'success',
						type: result.type,
						url: result.url
					}))
					fileListLen++
					if(lists.length - 1 == i) {
						uni.hideLoading()
					}
				}
				console.log(that.fileList1);
			},
			uploadFilePromise(url) {
				return new Promise((resolve, reject) => {
					let a = uni.uploadFile({
						url: $api.config.baseUrl + '/data/api.auth.Center/upload',  
						filePath: url,
						name: 'file',
						header: {
							'token': uni.getStorageSync('token')?uni.getStorageSync('token'):'',
							'api-name': 'iosapp'
						},
						formData: {
							user: 'test'
						},
						success: (res) => {
							setTimeout(() => {
								var data = JSON.parse(res.data)
								console.log('data:',data);
								var type = data.data.key.split('.')
								if(type[1] == 'mp4') {
									that.$set(data.data,'type','video')
								} else {
									that.$set(data.data,'type','image')
								}
								resolve(data.data)
							}, 1000)
						}
					});
				})
			},
			addGood() {
				that.good = {
					name: '',
					spec: '',
					number: '',
					standard: '',
					price: ''
				},
				that.items.push(that.good)
			},
			delGood(index) {
				that.items.splice(index,1)
			},
			release() {
				var images = []
				var image = {}
				for(var i=0;i<that.fileList1.length;i++) {
					image = {
						type: that.fileList1[i].type,
						src: that.fileList1[i].url,
						url: that.fileList1[i].url
					}
					images.push(image)
				}
				console.log(images);
				for(var i=0;i<that.items.length;i++) {
					if(!that.items[i].name || !that.items[i].spec || !that.items[i].number) {
						$api.info('商品不能为空')
						return
					}
				}
				/* if(images.length <=0) {
					$api.info('请选择图片')
					return
				} */
				$api.req({
					url: '/data/api.business.Purchase/purchase_order',
					method: 'POST',
					data: {
						id: that.id,
						real_name: that.name,
						mobile: that.phone,
						post_time: that.post_time,
						post_address: that.post_address,
						images: JSON.stringify(images),
						item: JSON.stringify(that.items)
					}
				}, function(res) {
					if(res.code == 1) {
						$api.info('发布成功')
						setTimeout(() => {
							if(that.back) {
								$api.jump(-1)
							} else {
								$api.jump('/pages/tabbar/index/index',2)
							}
						},2000)
					}
				})
			},
			choose() {
				that.show_choose = true
			},
			choose_img() {
				that.close()
				
				uni.chooseImage({
					count: 9, //默认9
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
					sourceType: ['album','camera'], //从相册选择
					success: function (res) {
						uni.showLoading({
							title: '上传中',
							mask: true
						})
						let fileListLen = that.fileList1.length
						let file = res.tempFiles[0].path
						console.log(file);
						uni.uploadFile({
							url: $api.config.baseUrl + '/data/api.auth.Center/upload',  
							filePath: file,
							name: 'file',
							header: {
								'token': uni.getStorageSync('token')?uni.getStorageSync('token'):'',
								'api-name': 'iosapp'
							},
							formData: {
								user: 'test'
							},
							success: (res2) => {
								var data = JSON.parse(res2.data)
								console.log('data:',data);
								let item = {
									type: 'image',
									url: data.data.url
								}
								that.fileList1.push(item)
								uni.hideLoading()
							},
							fail(err) {
								console.log(err);
							}
						});
						
					}
				});
			},
			choose_video() {
				that.close()
				
				uni.chooseVideo({
					sourceType: ['camera', 'album'],
					success: function (res) {
						uni.showLoading({
							title: '上传中',
							mask: true
						})
						let fileListLen = that.fileList1.length
						let file = res.tempFilePath
						console.log(file);
						uni.uploadFile({
							url: $api.config.baseUrl + '/data/api.auth.Center/upload',  
							filePath: file,
							name: 'file',
							header: {
								'token': uni.getStorageSync('token')?uni.getStorageSync('token'):'',
								'api-name': 'iosapp'
							},
							formData: {
								user: 'test'
							},
							success: (res2) => {
								var data = JSON.parse(res2.data)
								let item = {
									type: 'video',
									url: data.data.url
								}
								that.fileList1.push(item)
								uni.hideLoading()
							},
							fail(err) {
								console.log(err);
							}
						});
					}
				});
			}
		},
	}
</script>

<style lang="scss" scoped>
	.content::v-deep {
		background: #F5F5F5;
		.title {
			font-size: 30rpx;
			font-weight: 500;
			color: #222222;
			line-height: 42rpx;
			padding: 24rpx 0 14rpx 30rpx;
		}
		.add_text {
			font-size: 28rpx;
			font-weight: 500;
			color: #222222;
			line-height: 40rpx;
			padding-left: 2rpx;
		}
		.box {
			width: 100%;
			box-sizing: border-box;
			padding: 0 30rpx;
			background: #fff;
			margin-bottom: 20rpx;
			.box_title {
				font-size: 28rpx;
				font-weight: 500;
				color: #222222;
				line-height: 40rpx;
				padding: 24rpx 0 20rpx;
			}
			.img {
				width: 200rpx;
				height: 200rpx;
				margin: 0 20rpx 20rpx 0;
				border-radius: 16rpx;
			}
			video {
				width: 200rpx;
				height: 200rpx;
				margin: 0 20rpx 20rpx 0;
			}
			.close_icon {
				position: absolute;
				top: 0;
				right: 15rpx;
				width: 30rpx;
				height: 30rpx;
			}
			.img_bottom {
				position: absolute;
				bottom: 0;
				left: 0;
				width: 100%;
				height: 36rpx;
				background: rgba(0,0,0,0.5);
				border-radius: 0px 0px 16rpx 16rpx;
				font-size: 20rpx;
				font-weight: 400;
				color: #FFFFFF;
				line-height: 28rpx;
			}
			.box_item {
				padding: 28rpx 0;
				border-bottom: 1rpx solid #F5F5F5;
				.left {
					width: 156rpx;
					font-size: 30rpx;
					font-weight: 400;
					color: #222222;
					line-height: 42rpx;
				}
				.left_red {
					position: relative;
				}
				.left_red::after {
					position: absolute;
					content: "*";
					color: #ff0000;
					font-size: 30rpx;
					left: -15rpx;
					top: 0;
				}
				
			}
			.box_item1 {
				padding: 28rpx 0;
				.left {
					// width: 156rpx;
					font-size: 30rpx;
					font-weight: 400;
					color: #222222;
					line-height: 42rpx;
				}
				.u-textarea {
					margin: 28rpx 0 0;
					border: none;
					background: #F5F5F5;
					border-radius: 16rpx;
				}
			}
			.dte_btn {
				width: 132rpx;
				height: 52rpx;
				margin: 30rpx 0;
				border-radius: 26rpx;
				border: 1rpx solid #D3D3D3;
				font-size: 26rpx;
				font-weight: 400;
				color: #222222;
				line-height: 36rpx;
			}
		}
		.btn {
			margin: 28rpx auto;
			width: 690rpx;
			height: 84rpx;
			background: #5471FF;
			border-radius: 46rpx;
			font-size: 36rpx;
			font-weight: 500;
			color: #FFFFFF;
		}
		.popu_title {
			font-size: 36rpx;
			font-weight: 500;
			color: #222222;
			line-height: 50rpx;
		}
		.choose {
			padding: 20rpx 0;
		}
	}
</style>