<template>
	<view class="page">
		<view class="form">
			<u-form :model="form" ref="uForm">
				<u-form-item label-width="150" label="成交楼盘" prop="deal_item" required>
					<u-input placeholder="请输入成交楼盘" v-model="form.deal_item" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="成交房号" prop="house_no" required>
					<u-input placeholder="请输入成交房号" v-model="form.house_no" type="text"></u-input>
				</u-form-item>
				
				<u-form-item label-width="150" label="房屋类型" prop="house_type" required>
					<u-radio-group v-model="form.house_type" active-color="#2979ff">
						<u-radio :name="HT.val" v-for="HT in houseTypeList" :key="HT.val">{{HT.key}}</u-radio>
					</u-radio-group>
				</u-form-item>
				<u-form-item label-width="150" label="成交店员" prop="deal_clerk" required>
					<u-input placeholder="请输入成交店员" v-model="form.deal_clerk" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="成交类型" prop="deal_type" required>
					<u-radio-group v-model="form.deal_type" active-color="#2979ff">
						<u-radio :name="DT.val" v-for="DT in dealTypeList" :key="DT.val">{{DT.key}}</u-radio>
					</u-radio-group>
				</u-form-item>
				<u-form-item label-width="150" label="成交日期" prop="deal_at" @click.native="openDealAtPopoup" required>
					<view class="scoped-input-floor" @click.native="openDealAtPopoup"></view>
					<u-input placeholder="请选择成交日期" v-model="form.deal_at" disabled type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="客户姓名" prop="customer_name" required>
					<u-input placeholder="请输入客户姓名" v-model="form.customer_name" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="手机号" prop="customer_phone" required>
					<u-input placeholder="请输入手机号" v-model="form.customer_phone" type="number"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="面积" prop="area" required>
					<u-input placeholder="请输入面积" v-model="form.area" type="text"></u-input>
					<template v-slot:right>
						㎡
					</template>
				</u-form-item>
				<u-form-item label-width="150" label="总价" prop="price" required>
					<u-input placeholder="请输入总价" v-model="form.price" type="text"></u-input>
					<template v-slot:right>
						元
					</template>
				</u-form-item>
				<u-form-item label-width="150" label="报备渠道" prop="report_dept" required>
					<u-input placeholder="请输入报备渠道" v-model="form.report_dept" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="折扣体系" prop="discount">
					<u-input placeholder="请输入折扣体系" v-model="form.discount" type="text"></u-input>
				</u-form-item>
				<u-form-item label-width="150" label="佣金" prop="brokerage">
					<u-input placeholder="请输入佣金" v-model="form.brokerage" type="text"></u-input>
				</u-form-item>
				<u-form-item label-position="top" label-width="150" label="佣金凭证" prop="brokerage_img">
					<view class="id_card" @click="uploadbrokerageImgImage">
						<u-icon v-if="form.brokerage_img == null" name="plus" size="32" color="#606266"></u-icon>
						<text v-if="form.brokerage_img == null">请先上传佣金凭证照片</text>
						<image v-if="form.brokerage_img != null" :src="brokerage_img" mode="aspectFill"></image>
					</view>
				</u-form-item>
				<u-form-item label-width="150" label="返佣" prop="rebate">
					<u-input placeholder="请输入返佣" v-model="form.rebate" type="text"></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>
			<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>
		<u-calendar v-model="dealAtShow" :mode="calendarMode" @change="dealAtChange"></u-calendar>
		<!-- utoast -->
		<u-toast ref="uToast" />
	</view>
</template>
<script>
export default {
	data() {
		const userInfo = uni.getStorageSync('MD_userInfo2')
		return {
			brokerage_img: '',
			dealAtShow: false,
			calendarMode: 'date',
			isEdit: false,
			form: {
				deal_item: '',
				house_no: '',
				house_type: '1',
				deal_clerk: userInfo.nickname,
				deal_type: '1',
				deal_at: '',
				customer_name: '',
				customer_phone: '',
				area: '',
				price: '',
				report_dept: '',
				discount: '',
				brokerage: '',
				rebate: '',
				brokerage_img: null,
				remark: null
			},
			submitButtonDisabled: true,
			rules: {
				deal_item: [
					{
						required: true,
						message: '成交楼盘不得为空',
						trigger: ['change', 'blur']
					},
				],
				house_no: [
					{
						required: true,
						message: '成交房号不得为空',
						trigger: ['change', 'blur']
					},
				],
				
				house_type: [
					{
						required: true,
						message: '房屋类型不得为空',
						trigger: ['change', 'blur']
					},
				],
				deal_clerk: [
					{
						required: true,
						message: '成交店员不得为空',
						trigger: ['change', 'blur']
					},
				],
				deal_type: [
					{
						required: true,
						message: '成交类型不得为空',
						trigger: ['change', 'blur']
					},
				],
				deal_at: [
					{
						required: true,
						message: '成交日期不得为空',
						trigger: ['change', 'blur']
					},
				],
				customer_name: [
					{
						required: true,
						message: '客户姓名不得为空',
						trigger: ['change', 'blur']
					},
				],
				customer_phone: [
					{
						required: true,
						message: '客户手机号不得为空',
						trigger: ['change', 'blur']
					},
					// 11个字符判断
					{
						len: 11,
						message: '手机号格式不正确',
						trigger: ['change', 'blur']
					},
				],
				area: [
					{
						required: true,
						message: '面积不得为空',
						trigger: ['change', 'blur']
					},
				],
				price: [
					{
						required: true,
						message: '总价不得为空',
						trigger: ['change', 'blur']
					},
				],
				report_dept: [
					{
						required: true,
						message: '报备渠道不得为空',
						trigger: ['change', 'blur']
					},
				],
			},
			recordLevelList: [],

			propertySelectShow: false,
			propertySelectList: [],

			salerSelectShow: false,
			salerSelectList: [],
			submitModalShow: false,
			modalShow: false,
			modalContent: '',


			houseTypeList: [],
			dealTypeList: [],
		};
	},
	onLoad(data) {
		const that = this
		const eventChannel = that.getOpenerEventChannel(); // that 需指向 this
		// 监听data事件,获取上一页面通过eventChannel.emit传送到当前页面的数据
		if (eventChannel.on) {
			eventChannel.on('data', data => {
				if (data) {
					that.form.deal_item = data.info.deal_item;
					that.form.house_no = data.info.house_no;
					that.form.house_type = data.info.house_type;
					that.form.deal_clerk = data.info.deal_clerk;
					that.form.deal_type = data.info.deal_type;
					that.form.deal_at = data.info.deal_at;
					that.form.customer_name = data.info.customer_name;
					that.form.customer_phone = data.info.customer_phone;
					that.form.area = String(data.info.area);
					that.form.price = String(data.info.price);
					that.form.report_dept = data.info.report_dept;
					that.form.discount = data.info.discount;
					that.form.brokerage = data.info.brokerage;
					that.form.rebate = data.info.rebate;
					that.brokerage_img = that.form.brokerage_img = data.info.brokerage_img;
					that.form.remark = data.info.remark;
					that.form.id = data.info.id;
					that.isEdit = true
					wx.setNavigationBarTitle({
						title: `编辑成交单-${data.info.deal_item}(${data.info.house_no})`
					})
				}
			})
		}
	},
	created () {
		const dictObj = uni.getStorageSync('MD_dict')
		this.houseTypeList = dictObj.trade_house_type || []
		this.dealTypeList = dictObj.trade_deal_type || []
	},
	// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
	onReady() {
		this.$refs.uForm.setRules(this.rules);
	},
	methods: {
		uploadImgHandle (bc) {
			uni.chooseImage({
				count: 1,
				sizeType: ['compressed'],
				success: function(res) {
					const filePath = res.tempFilePaths[0];
					let token = uni.getStorageSync('MD_token') || ''
					uni.uploadFile({
						url: uni.baseUrl + 'api/upload/cloud',
						filePath,
						name: 'upload',
						formData: {
							'token': token
						},
						success: (f) => {
							const cData = JSON.parse(f.data)
							if (cData.errno === 0) {
								if (bc && typeof(bc) === 'function') bc(cData.data)
							} else {
								uni.$msg(cData.errmsg || `未知错误-${cData.errno}`)
							}
						}
					})
				}
			})
		},
		// 选择、验证、上传正面照片
		uploadbrokerageImgImage() {
			this.uploadImgHandle((d) => {
				this.form.brokerage_img = d.url
				// this.brokerage_img = d.pub_url
				this.brokerage_img = d.url
			})
		},
		openDealAtPopoup () {
			console.log('成交日期成交日期')
			this.dealAtShow = true
		},
		dealAtChange (e) {
			this.form.deal_at = e.result || ''
		},
		// 选择所属项目回调
		propertySelectConfirm(e) {
			e.map((val, index) => {
				this.form.estate_id = val.value;
				this.form.estate_name = val.label;
			});
		},
		submitHandle() {
			const that = this
			this.$refs.uForm.validate(valid => {
				if (valid) {
					// 验证成功
					let apiStr = 'apitradeadd'
					let params = {
						deal_item: that.form.deal_item,
						house_no: that.form.house_no,
						house_type: that.form.house_type,
						deal_clerk: that.form.deal_clerk,
						deal_type: that.form.deal_type,
						deal_at: that.form.deal_at,
						customer_name: that.form.customer_name,
						customer_phone: that.form.customer_phone,
						price: that.form.price,
						area: that.form.area,
						report_dept: that.form.report_dept,
						discount: that.form.discount,
						brokerage: that.form.brokerage,
						rebate: that.form.rebate,
						brokerage_img: that.form.brokerage_img,
						remark: that.form.remark
					}
					if(that.isEdit) {
						apiStr = 'apitradeedit'
						params.id = that.form.id
					}
					uni.api.cust[apiStr](params).then(res => {
						if (that.isEdit) {
							uni.$msgConfirm('编辑成功', () => {
								uni.reLaunch({
									url: '/pages/trade/list'
								})
							}, () => {
								uni.reLaunch({
									url: '/pages/trade/list'
								})
							})
						} else {
							uni.$msgConfirm('添加成功,是否前往成交单列表?', () => {
								uni.reLaunch({
									url: '/pages/trade/list'
								})
							}, () => {
								const userInfo = uni.getStorageSync('MD_userInfo2')
								this.form = {
									deal_item: '',
									house_no: '',
									house_type: '1',
									deal_clerk: userInfo.nickname,
									deal_type: '1',
									deal_at: '',
									customer_name: '',
									customer_phone: '',
									area: '',
									price: '',
									report_dept: '',
									discount: '',
									brokerage: '',
									rebate: '',
									brokerage_img: null,
									remark: 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-input-floor {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	background: transparent;
	z-index: 9;
}
</style>