<template>
	<view class="page">
		<view class="form">
			<u-form :model="form" ref="uForm">
				<u-form-item label-width="150" label="姓名" prop="name" required>
					<u-input placeholder="请输入客户姓名" v-model="form.name" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="性别" prop="sex" required>
					<u-radio-group v-model="form.sex" active-color="#2979ff">
						<u-radio name="male">先生</u-radio>
						<u-radio name="female">女士</u-radio>
					</u-radio-group>
				</u-form-item>
				<u-form-item label-width="150" label="手机号" prop="phone" required>
					<u-input placeholder="请输入手机号" v-model="form.phone" type="number"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="备注信息" prop="remark" label-position="top">
					<u-input placeholder="客户描述说明,如客户意向户型或面积等信息" v-model="form.remark" type="textarea"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="意向项目" prop="estate_name" required>
					<u-input type="select" :select-open="propertySelectShow" v-model="form.estate_name" placeholder="请选择推荐项目" @click="propertySelectShow = true"></u-input>
					<!-- <u-input type="select" :select-open="propertySelectShow" v-model="form.estate_name" placeholder="请选择推荐项目" @click="openEstateList"></u-input> -->
				</u-form-item>
				<!-- <u-form-item v-show="form.estate_id !== null" label-width="180" label="指定置业顾问" prop="saler_id">
					<u-input type="select" :select-open="salerSelectShow" v-model="form.saler_name" placeholder="非必选" @click="salerSelectShow = true"></u-input>
				</u-form-item> -->
			</u-form>
			<u-gap height="60"></u-gap>
			<u-button type="primary" :diabled="submitButtonDisabled" @click="submitHandle">提交</u-button>
		</view>
		<!-- 列表选择 -->
		<!-- <u-select mode="single-column" :list="propertySelectList" v-model="propertySelectShow" @confirm="propertySelectConfirm"></u-select> -->
		<u-select mode="single-column" :list="salerSelectList" v-model="salerSelectShow" @confirm="salerSelectConfirm"></u-select>
		<!-- modal -->
		<u-modal v-model="submitModalShow" content="请务必仔细确认各项信息是否正确" :show-cancel-button="true" @confirm="submit()"></u-modal>
		<u-modal v-model="modalShow" :content="modalContent" :show-cancel-button="true" @cancel="modalCancel()" @confirm="modalConfirm()"></u-modal>
		<!-- utoast -->
		<u-toast ref="uToast" />
		
		
		<u-popup v-model="propertySelectShow" mode="center" width="90%" height="100%">
			<view class="bwin-popup scoped-estate-popup">
				<view class="scoped-popup-header-input">
					<u-input class="input" v-model="curEstateName" placeholder="没找到楼盘？？点这输入关键字搜索"></u-input>
					<view class="b" @click="getEstateList">搜索</view>
				</view>
				<scroll-view :scroll-y="true" class="popup-body">
					<view class="scoped-estate-list">
						<view v-for="(item, index) in estateList" :class="form.estate_id == item.id ? 'sel-item cur' : 'sel-item'" @click="listItemHandle(item)" :key="index">
							<view class="sel-left">
								<image class="img" :src="item.pri_image" mode="aspectFill"></image>
							</view>
							<view class="sel-right">
								<view class="p1">{{item.estate_name}}</view>
								<view class="p2">
									<u-tag
										:text="areaTypeObj[item.area_type]"
										:type="'success'"
										size="mini"
									></u-tag>
								</view>
								<view class="p3" v-if="userInfo2.auth_state == 1">带看需收集：{{ item.report_visit }}</view>
								<view class="p3" v-if="userInfo2.auth_state == 1">报备/带看保护期：{{ item.report_lock }}天/{{ item.lead_lock }}天</view>
							</view>
						</view>
					</view>
				</scroll-view>
				<view class="popup-footer" style="position: fixed;bottom: 12rpx;">
					<u-button size="medium" @click="propertySelectShow = false">关闭</u-button>
					<u-button size="medium" type="primary" @click="propertySelectShow = false">确定</u-button>
				</view>
			</view>
		</u-popup>
		
		
	</view>
</template>
<script>
import { arrToObj } from '@/utils'
export default {
	data() {
		return {
			form: {
				name: null,
				phone: null,
				sex: 'male',
				remark: null,
				estate_id: 2,
				estate_name: '江投.朝阳春天',
				saler_id: null,
				saler_name: null
			},
			customer_id: null,
			submitButtonDisabled: true,
			rules: {
				name: [
					{
						required: true,
						message: '姓名不得为空',
						trigger: ['change', 'blur']
					},
				],
				phone: [
					{
						required: true,
						message: '手机号不得为空',
						trigger: ['change', 'blur']
					},
					// 11个字符判断
					{
						len: 11,
						message: '手机号格式不正确',
						trigger: ['change', 'blur']
					},
				],
				estate_name: [
					{
						required: true,
						message: '意向项目不能为空',
						trigger: ['change']
					},
				]
			},

			propertySelectShow: false,
			propertySelectList: [],
			estateList: [],
			areaTypeObj: {},
			userInfo2: {},
			curEstateName: '',

			salerSelectShow: false,
			salerSelectList: [],
			submitModalShow: false,
			modalShow: false,
			modalContent: ''
		};
	},
	onLoad(data) {
		const that = this
		const eventChannel = that.getOpenerEventChannel(); // that 需指向 this
		// 监听data事件，获取上一页面通过eventChannel.emit传送到当前页面的数据
		if (eventChannel.on) {
			eventChannel.on('data', data => {
				if(data.info.name) that.form.name = data.info.name;
				if(data.info.phone) that.form.phone = data.info.phone;
				if(data.info.sex) that.form.sex = data.info.sex;
				if(data.info.demand) that.form.remark = data.info.demand;
				if(data.info.estate_id) that.form.estate_id = data.info.estate_id;
				if(data.info.estate_name) that.form.estate_name = data.info.estate_name;
			})
		}
	},
	created () {
		this.userInfo2 = uni.getStorageSync('MD_userInfo2')
		const dictObj = uni.getStorageSync('MD_dict')
		this.areaTypeObj = arrToObj(dictObj.area_type)
		uni.api.estate.apiestatelist({page_size: 100, report_open: 1}).then(res => {
			let list = res.list || []
			let propertySelectList = []
			this.estateList = [...list]
			list.forEach(item => {
				propertySelectList.push({
					value: item.estate_id,
					label: item.estate_name,
				})
			})
			this.propertySelectList = [...propertySelectList]
		})
	},
	// 必须要在onReady生命周期，因为onLoad生命周期组件可能尚未创建完毕
	onReady() {
		this.$refs.uForm.setRules(this.rules);
	},
	methods: {
		getEstateList () {
			uni.api.estate.apiestatelist({page_size: 100, report_open: 1, estate_name: this.curEstateName}).then(res => {
				let list = res.list || []
				this.estateList = [...list]
			})
		},
		listItemHandle (val) {
			this.form.estate_id = val.estate_id;
			this.form.estate_name = val.estate_name;
		},
		// 选择所属项目回调
		propertySelectConfirm(e) {
			e.map((val, index) => {
				this.form.estate_id = val.value;
				this.form.estate_name = val.label;
			});
		},
		// openEstateList () {
		// 	uni.navigateTo({
		// 		url: `/pages/estate/list?eid=${this.form.estate_id}&ename=${this.form.estate_name}`
		// 	})
		// },
		submitHandle() {
			const that = this
			this.$refs.uForm.validate(valid => {
				if (valid) {
					// 验证成功
					uni.api.estate.apireportadd({
						phone_type: 1,
						name: that.form.name,
						phone: that.form.phone,
						sex: that.form.sex,
						remark: that.form.remark,
						estate_id: that.form.estate_id,
						estate_name: that.form.estate_name,
					}).then(res => {
						uni.$msgConfirm('报备成功,是否前往报备列表？', () => {
							uni.navigateTo({
								url: '/pages/agent/recommend/list'
							})
						}, () => {
							this.form = {
								name: null,
								phone: null,
								sex: 'male',
								remark: null,
								estate_id: null,
								estate_name: null,
							}
						})
					})
				} else {
					console.log('验证失败');
				}
			});
		},

		// 获取手机号
		getPhoneNumber: function(e) {
			// 点击获取手机号码按钮
			let _that = this;
			if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
				_that.$refs.uToast.show({
					title: '您可以在个人设置中再次绑定',
					type: 'warning'
				});
				setTimeout(() => {
					_that.reLunchUser();
				}, 1500);
				return; // 即用户拒绝授权
			}
			console.log(e.detail.errMsg);
			console.log(e.detail.iv);
			console.log(e.detail.encryptedData);
			let iv = e.detail.iv;
			let encryptedData = e.detail.encryptedData;
			// 不是登陆完第一时间授权
			wx.login({
				success(res) {
					if (res.code) {
						// 设置用户手机号
						_that.setUserPhoneNumber(encryptedData, iv, res.code);
					} else {
						this.$refs.uToast.show({
							title: res.errMsg,
							type: 'warning'
						});
						console.log('登录失败！' + res.errMsg);
					}
				}
			});
		},
		// 以下是工具函数
		// 关闭键盘
		hideKeyboard() {
			uni.hideKeyboard();
		},
		// 格式化日期的月份或天数的显示（小于10，在前面增加0）
		getFormatDate(value) {
			if (value == undefined || value == '') {
				return '';
			}
			var str = value;
			if (parseInt(value) < 10) {
				str = '0' + value;
			}
			return str;
		}
	}
};
</script>
<style lang="scss">
.page {
	padding: 20rpx;
	background-color: #ffffff;
}

.form {
	border-radius: 10rpx;
	padding: 0 40rpx;
}

.popup-body {
	.tips-title {
		font-size: $u-p;
		margin-bottom: 20rpx;
	}

	.tips-content {
		font-size: $u-p2;
		color: $u-tips-color;
		margin-bottom: 60rpx;
	}
}

.id_card {
	color: #606266;
	width: 100%;
	height: 350rpx;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background-color: #f4f5f6;
	font-size: $u-p2;
}

.footer {
	position: absolute;
	text-align: center;
	bottom: 40rpx;
	font-size: $u-p2;

	.agreement {
		color: $u-type-error;
	}
}

.slot-content {
	font-size: 28rpx;
	color: $u-content-color;
	padding: 20rpx;
}



.scoped-estate-list {
	.sel-item {
		display: flex;
		border-bottom: 1PX solid #dcdcdc;
		padding: 20rpx;
		&.cur {
			background: #369af7;
			border-radius: 10rpx;
			overflow: hidden;
			.img {
				opacity: .6;
			}
			.p1 {
				color: #fff;
			}
			.p3 {
				color: #fff;
			}
		}
	}
	.sel-left {
		width: 180rpx;
		border-radius: 10rpx;
		.img {
			width: 180rpx;
			height: 120rpx;
			border-radius: 10rpx;
		}
	}
	.sel-right {
		// width: 450rpx;
		margin-left: 20rpx;
		.p1 {
			font-size: 30rpx;
			font-weight: bold;
			margin-bottom: 10rpx;
		}
		.p2 {
			margin-bottom: 10rpx;
		}
		.p3 {
			color: #369af7;
			font-size: 24rpx;
			font-weight: bold;
		}
	}
}

.scoped-estate-popup {
	height: 100%;
	padding-bottom: 100rpx;
	.popup-body {
		box-sizing: border-box;
		border-bottom: 1PX solid #dcdcdc;
	}
}

.scoped-popup-header-input {
	position: fixed;
	width: 90%;
	display: flex;
	border-bottom: 1PX solid #dcdcdc;
	.input {
		flex: 1;
		padding-left: 20rpx;
		height: 80rpx;
		.u-input__input {
			height: 80rpx;
		}
	}
	.b {
		width: 200rpx;
		height: 80rpx;
		line-height: 80rpx;
		background: #2d8cf0;
		color: #fff;
		text-align: center;
		margin-left: 20rpx;
	}
}
</style>
