<template>
	<view class="page">
		<u-navbar :title="title" @rightClick="rightClick" :autoBack="true">
		</u-navbar>
		<view class="page-box">
			<!-- 蜂场名称 -->
			<view>
				<view class="text-box">蜂场名称</view>
				<view>
					<u--input class="input-b" shape="circle" placeholder="请输入蜂场名称(5个字以内)" border="surround"
						v-model="form.name"></u--input>
				</view>
			</view>
			<!-- 蜂场地区 -->
			<view>
				<view class="text-box">蜂场地区</view>
				<view>
					<u-button @click="show = true" class="input-b" shape="circle"
						placeholder="请选择蜂场地区">{{form.area}}</u-button>
				</view>
			</view>
			<!-- 具体位置 -->
			<view style="position: relative;">
				<view class="text-box">具体位置</view>
				<view>
					<u--input class="input-b" shape="circle" placeholder="请选择具体位置" border="surround"
						v-model="form.address">{{form.address}}</u--input>
					<!-- <view class="input-b">{{form.lng}},{{form.lat}}</view> -->
				</view>
				<image @click="gotomap"
					style="width: 32rpx;height: 32rpx;position: absolute;bottom: 20rpx;right: 20rpx;z-index: 99;"
					src="https://api.ccttiot.com/smartmeter/img/static/uf92QyUtzafEwjjjcwOl" mode=""></image>
			</view>
			<!-- 蜂种 -->
			<view>
				<view class="text-box">蜂种</view>
				<view @click="showfengzhong = true">
					<u--input disabled class="input-b" shape="circle" placeholder="请选择蜂种" border="surround"
						v-model="form.bee_type_text"></u--input>
					<!-- <picker v-model="form.bee_type" :range="bee_type" @change="change">{{form.bee_type_text}}</picker> -->
				</view>
			</view>
			<!-- 蜜源 -->
			<view>
				<view class="text-box">蜜源</view>
				<view @click="showmiyuan = true">
					<u--input disabled class="input-b" shape="circle" placeholder="请选择蜜源" border="surround"
						v-model="form.honey_source_text"></u--input>
				</view>
			</view>
			<!-- 蜂场介绍 -->
			<view>
				<view class="text-box">蜂场介绍</view>
				<view>
					<u--input class="input-b" shape="circle" placeholder="请输入蜂场的介绍内容(150个字以内)" border="surround"
						v-model="form.remark" @change="change"></u--input>
				</view>
			</view>
			<!-- 照片 -->
			<view>
				<view class="text-box">照片</view>
				<view>
					<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
						:maxCount="10"></u-upload>
				</view>
			</view>
		</view>
		<view class="mag-box">
			<u-button @click="submit" size="large" shape="circle" text="保 存" color="#23693f"></u-button>
		</view>
		<u-picker @cancel="showfengzhong=false" @confirm="confirmfengzhong" :show="showfengzhong"
			:columns="fengzhongcolumns"></u-picker>
		<u-picker @cancel="showmiyuan=false" @confirm="confirmmiyuan" :show="showmiyuan"
			:columns="miyuancolumns"></u-picker>
		<address-picker @cancel="show=false" :address-data="addressData" :show="show" :columns="columns"
			@confirm="confirm"></address-picker>


	</view>
</template>

<script>
	import request from '@/utils/request'
	export default {
		name: 'FxIndex',

		data() {
			return {
				baseurl: '',
				form: {
					bee_type_text: '',
					area_id: '',
					area: '',
					honey_source_text: '',
					lng: '',
					lat: '',
					address: '',
					bee_type: '',
					honey_source: '',
					remark: '',
					images: '',
				},
				value: '',
				show: false,
				showfengzhong: false,
				fengzhongcolumns: [
					[]
				],
				showmiyuan: false,
				// 蜜源:1=百花蜜,2=油菜蜜,3=荆条蜜,4=荔枝蜜,5=枣花蜜,6=椴树蜜,7=槐花蜜,8=龙眼蜜,9=枇杷蜜,10=柑橘蜜,11=益母草蜜,12=葵花蜜,13=五味子蜜,14=夏枯草蜜,15=中草药蜜,16=狼牙蜜,17=王倍子蜜,18=其它蜜
				miyuancolumns: [
					[{
							text: '百花蜜',
							id: 1
						}, {
							text: '油菜蜜',
							id: 2
						},
						{
							text: '荆条蜜',
							id: 3
						},
						{
							text: '荔枝蜜',
							id: 4
						},
						{
							text: '枣花蜜',
							id: 5
						},
						{
							text: '椴树蜜',
							id: 6
						},
					]

				],
				columns: [],
				columnData: [],
				addressData: ['北京市', '北京市', '东城区'],
				fileList1: [],
				uploadfileList: [],
				title: '添加蜂场',
			};
		},
		mounted() {
			this.sourcelist()
			this.getdataList()
		},


		methods: {
			sourcelist() {
				request.put("/api/apiary/info", {}).then(res => {
					this.fengzhongcolumns[0] = this.setfor(res.data.data.bee_type)
					this.miyuancolumns[0] = this.setfor(res.data.data.honey_source)
				})
			},
			setfor(item) {
				const res = []
				Object.entries(item).forEach(([key, value]) => {
					res.push({
						text: value,
						id: key
					})
				});
				return res
			},

			gotomap() {
				uni.chooseLocation({
					initialLocation: {
					    latitude: '39.91389',
					    longitude: '116.40783',  // 北京的经纬度作为示例
					  },
					success: (res) => {
						console.log(res);
						this.form.lng = res.longitude
						this.form.lat = res.latitude
						this.form.address = res.name
					},
					fail: function(err) {
						if (err.errMsg && err.errMsg.indexOf('chooseLocation:cancel') === 0) {
							uni.showToast({
								title: '您取消了位置选择',
								icon: 'none'
							});
						} else {
							console.log('选择位置失败', err);
						}
					},
				})
			},
			// console.log("跳转到地图")
			// uni.navigateTo({
			// 	url: '/pagesFengChang/components/map',
			// })
			submit() {
				this.form.images = this.uploadfileList.map(item => item).join(',')
				if (this.form.id) {
					request.put("/api/apiary/update/" + this.form.id, this.form).then(res => {
						console.log(res);
						if (res.data.code == 0) {
							uni.navigateBack()
						} else {
							uni.showModal({
								title: "提示",
								content: res.data.msg
							})
						}
					})
				} else {
					request.post("/api/apiary/add", this.form).then(res => {
						console.log(res);
						if (res.data.code == 0) {
							uni.navigateBack()
						} else {
							uni.showModal({
								title: "提示",
								content: res.data.msg
							})
						}
					})
				}
			},

			// 删除图片
			deletePic(event) {
				this[`fileList${event.name}`].splice(event.index, 1)
				this[`uploadfileList${event.name}`].splice(event.index, 1)
			},
			// 新增图片
			async afterRead(event) {
				// 当设置 multiple 为 true 时, file 为数组格式，否则为对象格式
				// 当设置 multiple 为 true 时, file 为数组格式，否则为对象格式
				console.log(event);
				let lists = [].concat(event.file)
				console.log(lists);
				let fileListLen = this[`fileList${event.name}`].length
				console.log(this[`fileList${event.name}`]);
				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',
						message: '',
						url: result
					}))
					fileListLen++
				}
			},
			// uploadFilePromise(url) {
			// 	console.log(url);
			// 	var that = this
			// 	return new Promise((resolve, reject) => {
			// 		let a = uni.uploadFile({
			// 			url: 'https://wx.beishaoyuan.com/', // 仅为示例，非真实的接口地址 
			// 			filePath: url,
			// 			name: 'file',
			// 			success: (res) => {
			// 				console.log(res)
			// 				const res2 = JSON.parse(res.data)
			// 				that.uploadfileList = that.uploadfileList.concat(res2.data.path)
			// 				resolve(res2.data)
			// 			}
			// 		});
			// 	})
			// },
			uploadFilePromise(url) {
				console.log('尝试上传的文件路径:', url);
				// 使用箭头函数确保this的上下文  
				return new Promise((resolve, reject) => {
					uni.uploadFile({
						url: 'https://wx.beishaoyuan.com/api/index/upload', // 确保这是正确的上传接口路径  
						filePath: url,
						name: 'file',
						success: (res) => {
							console.log(res, '0000');
							try {
								// 确保服务器返回的是JSON字符串  
								const res2 = JSON.parse(res.data);
								console.log('上传成功:', res2);
								// 确保res2的结构符合你的预期  
								if (res2 && res2.data && res2.data.path) {
									this.uploadfileList = this.uploadfileList.concat(res2.data.url);
								}
								resolve(res2.data);
							} catch (error) {
								console.error('解析服务器响应失败:', error);
								reject(error);
							}
						},
						fail: (error) => {
							// 使用errMsg而不是msg，这取决于实际的error对象结构  
							console.error('上传失败:', error.errMsg || error);
							reject(error.errMsg || error);
						},
					});
					// 注意这里不需要返回a，因为uni.uploadFile是一个异步操作  
				});
			},

			// const axios = require('axios');
			// const FormData = require('form-data');
			// const fs = require('fs');
			// let data = new FormData();
			// data.append('file', fs.createReadStream('/C:/Users/12607/Downloads/oi4OG5FQXQpRERqBguILQQ9OtNQE (1).jpg'));

			// let config = {
			//   method: 'post',
			//   maxBodyLength: Infinity,
			//   url: 'https://wx.beishaoyuan.com/api/index/upload',
			//   headers: { 
			//     'Cookie': 'think_lang=zh-cn', 
			//     ...data.getHeaders()
			//   },
			//   data : data
			// };

			// axios.request(config)
			// .then((response) => {
			//   console.log(JSON.stringify(response.data));
			// })
			// .catch((error) => {
			//   console.log(error);
			// });




			confirmfengzhong(e) {
				console.log(e);
				this.form.bee_type = e.value[0].id
				this.form.bee_type_text = e.value[0].text

				this.showfengzhong = false
			},
			confirmmiyuan(e) {
				this.form.honey_source = e.value[0].id
				this.form.honey_source_text = e.value[0].text
				this.showmiyuan = false
			},
			change() { // 输入框的值
				console.log('值')
			},
			getdataList() {
				//获取地区
				request.get("/api/index/getArea", {}).then(res => {
					console.log(res);
				})
			},


			// 回调参数为包含columnIndex、value、values
			confirm(e) {
				console.log('confirm', e)
				this.form.area_id = e.areaId[2]
				// this.form.address = e.value.toString()
				this.form.area = e.value.toString()
				console.log(this.form.area_id, this.form.address)
				this.show = false
			},
			updateValue(newValue) {
				let marker = JSON.parse(newValue)
				console.log(marker, "options")
				this.form.lng = marker[0].longitude
				this.form.lat = marker[0].latitude
				console.log(this.form, "form")
				this.$forceUpdate()
			}
		},
		onLoad(option) {
			if (option.info) {
				this.form = JSON.parse(option.info)
				if (this.form.images) {
					let imagesArray = this.form.images.split(',');
					let prefixedImagesArray = imagesArray.map(imagePath => ({
						url: `${imagePath.trim()}`
					}));
					this.fileList1 = prefixedImagesArray
				}

				console.log(this.fileList1);
				this.title = '编辑蜂场'
			} else {
				this.title = '添加蜂场'
			}
			uni.$on('newPages', (e) => {
				this.form.lng = e.value.longitude
				this.form.lat = e.value.latitude
			})
		},
		onUnload() {
			uni.$off('newPages')
		}
	};
</script>

<style lang="scss" scoped>
	.input-b {
		background-color: #f7f7f7;
	}

	.text-box {
		margin: 30rpx 0 20rpx 15rpx;
	}

	.page-box {
		padding: 180rpx 50rpx 280rpx;
	}

	.mag-box {
		z-index: 999;
		position: fixed;
		bottom: 0;
		width: 89%;
		padding: 0 40rpx;
		margin-bottom: 50rpx;
	}

	.page {
		height: 100%;
		width: 100%;
		position: absolute;
		background-color: #ffff;
		color: #8888;
	}
</style>