<template>
	<div class="templatePayURL" style="display: inline-block; float: right; margin-right: 10px;">
		<el-popover width="320" trigger="manual" v-model="visible">
			<div>
				<p style="margin:0 0 15px 0;">二维码收款
				<i class="el-icon-circle-close-outline fr" style="cursor: pointer; margin: 3px 0 0 0;" @click="closePic()"></i>
				</p>
				<div style="margin: 15px 0;" v-show="!isShowPic">
					<el-input placeholder="请输入金额" v-model="payMoney"
						  @input="payMoney=/^\d+\.?\d{0,2}$/.test(payMoney)||payMoney == '' ? payMoney : payMoney=''">
						<el-select class='fz12 w120' v-model="payType" slot="prepend" placeholder="请选择费用类型" filterable :readonly="false">
							<el-option v-for='item in fylxList' :label="item.Name" :value="item.ID" :key='item.ID'>
							</el-option>
						</el-select>
					</el-input>
					<p style="margin: 15px 0; text-indent:5px;">
						<el-radio v-model="payWay" label="3">支付宝</el-radio>
						<el-radio v-model="payWay" label="1">微信</el-radio>
					</p>
					<p>
						<input type="button" @click="getPayPic(item)" class="normalBtn w280" value="生成收款码" />
					</p>
				</div>
				<div v-show="isShowPic">
					<img :src="payPic" style="float: left; margin-right: 15px; width: 150px; height: 150px; border: 1px solid #ccc;" />
					<p style="padding-right: 10px; font-size: 12px; line-height: 20px; margin-bottom: 10px;">
						<span style="color: #E95252;">{{payWay=="1"?'微信':'支付宝'}}</span>二维码有效时间为5分钟,为了不影响客户支付,请及时转发,以免失效
					</p>
					<p class="fz12 color333">倒计时</p>
					<p style="color: #E95252; font-weight: bold; font-size: 12px; margin: 8px 0;" >{{descMin}}分{{descSecond}}秒</p>
				</div>
			</div>
				 <el-select  slot="reference" v-model="value" class='w80' placeholder="收款方式" @change='chanceType(item)'>
		       	 	<!-- <el-option  label="二维码" value="1"></el-option> -->
		       	 	<el-option  label="团队收款" value="2"></el-option>
		       	 	<el-option v-if='item.orderState===1'  label="团队退款" value="3"></el-option>
              <el-option label="团队小费" value="4"></el-option>
              <el-option v-if="photoF" label="照片服务费" value="5"></el-option>
              <el-option label="月结平台费" value="6"></el-option>
				</el-select>
		</el-popover>
	</div>
</template>

<script>
	export default {
		props: ["item","showID","photoF"],
		data() {
			return {
				value:'',
				visible:false,
				payObj: {},
				payWay: '3',
				minpay: '0',
				payMoney: '0',
				payType: '',
				lastTime: '',
				isShowPic: false,
				payPic: '',
				isDesc: false,
				descMin: 0,
				descSecond: 0,
				descHour:0,
				fylxList: [],
				isShowId:-1,
				checkValue: '',
				begin:0,
				nowDate:new Date(),
				timer:null,
				chaTime:0
			};
		},
		watch:{
			showID:{
				handler: function(val, oldVal) {
					this.isShowId = val;
					if(val!=this.item.orderId){
						this.visible = false;
						this.value = '';
						if(this.timer)
						{
							clearInterval(this.timer)

						}

					}
            	},
            	deep: true
			}
		},
		mounted() {
			this.getFylx()
		},
		methods: {
			closePic(){
				this.visible=false
				this.value=''
				if(this.timer)
					{

					clearInterval(this.timer)

					}
			},
			chanceType(obj){
				let TCIDARR=[]
				TCIDARR.push(obj.tcid)
		   		if(this.value==='1')
				{
					this.visible=true
					this.getPayDetail(obj,2)
					this.$emit("childByValue",obj.orderId)
				}else if (this.value ==='2'){
					this.visible=false
					let orderObj = {
						OrderID:obj.orderId,
						OrderSource:8,
						Obj: {},
						SourceID:obj.ID,
						TCIDList: TCIDARR
					}
					this.$router.push({
						name: 'ChoiceAddFinancialDocuments',
						query:{
							"Type":1,
							"companyID":obj.outBranchId,
							"path": "",
							'blank':'y',
							'orderObj':JSON.stringify(orderObj),
							'tradeWay':obj.tradeWay,
							'platformAccount':obj.platformAccount
						}
					});
				} else if (this.value === '3') {
					if(this.item.oP_Remarks && this.item.oP_Remarks!=""){
						this.visible=false
						let orderObj = {
							OrderID:obj.orderId,//订单号
							OrderSource:8,//12
							Obj: {},
							SourceID:obj.ID,//机票id
							TCIDList: TCIDARR
						}
						this.$router.push({
							name: 'ChoiceAddFinancialDocuments',
							query:{
								"Type":2,
								"companyID":obj.outBranchId,//公司id
								"path": "",
								'blank':'y',
								'orderObj':JSON.stringify(orderObj),
								'searchTitle':'溢收团费退款'
							}
						});
					}else{
						this.Error("请让OP先填写OP备注,说明退款情况");
					}
				}else if (this.value === '4') {
					this.visible=false
					let orderObj = {
						OrderID:obj.orderId,
						OrderSource:8,
						CallType:1,
						Obj: {},
						SourceID:obj.ID,
						TCIDList: TCIDARR
					}
					this.$router.push({
						name: 'ChoiceAddFinancialDocuments',
						query:{
							"Type":1,
							"companyID": obj.outBranchId,
							"path": "",
							'blank':'y',
							'orderObj':JSON.stringify(orderObj)
						}
					});
				}else if (this.value === '5') {
					this.visible=false
					let orderObj = {
						OrderID:obj.orderId,
						OrderSource: 8,
						CallType: 2,
						Obj: {},
						TCIDList: []
					}
					this.$router.push({
						name: 'ChoiceAddFinancialDocuments',
						query:{
							"Type": 1,
							"companyID": 49,
							"templateID": JSON.stringify([79]),
							"path": "",
							'blank':'y',
							'orderObj':JSON.stringify(orderObj)
						}
					});
				} else if (this.value === '6') {
						this.visible=false
						let orderObj = {
							OrderID:obj.orderId,//订单号
							OrderSource:8,//12
							Obj: {},
							SourceID:obj.ID,//机票id
							TCIDList: TCIDARR
						}
						this.$router.push({
							name: 'ChoiceAddFinancialDocuments',
							query:{
								"Type":2,
								"companyID":obj.outBranchId,//公司id
								"path": "",
								'blank':'y',
								'orderObj':JSON.stringify(orderObj),
								'searchTitle': '团队成本月结'
							}
						});
				}
				this.value = ''
		  	 },
			getPayDetail(obj, Type) {
				let nowTime = new Date()
				let ExpireDate = ''
				this.apipost('OnlinePay_post_GetURL', {
					OrderID: obj.orderId,
					OrderSource: 8
				}, res => {
					if(res.data.resultCode == 1) {
						if(Object.keys(res.data.data).length == 0) {
							if(Type == 2) {
								this.getCodeUrl(obj)
							} else {
								this.$message.warning('未生成二维码')
							}
						} else {
							this.lastTime = new Date(res.data.data.ExpireDate)
							this.nowDate=new Date(res.data.data.NowDate)
						    this.chaTime=this.lastTime-this.nowDate
							ExpireDate = new Date(res.data.data.ExpireDate)
							this.timer=setInterval(() => {
								this.descTime(this.chaTime)
							}, 1000);
							this.payPic=res.data.data.CodeURL
							this.isShowPic = true
						}
					} else {

					}
				}, err => {})

				//				if(nowTime>=ExpireDate){
				//					this.$message.warning('二维码过期,请从新生成')
				//					this.isShowPic=false
				//					this.getCodeUrl(obj)
				//				}else{
				//					this.isShowPic=false
				//				}

			},

			getCodeUrl(obj) {
				this.apipost('Financial_post_GetLowPrice', {
					OrderID: obj.orderId,
					OrderResource: 8
				}, res => {
					if(res.data.resultCode == 1) {
						if(res.data.data.LowDeposit != -1) {
							this.minpay = res.data.data.LowDeposit
							this.payMoney = res.data.data.LowDeposit>this.item.preferPrice?this.item.preferPrice:res.data.data.LowDeposit

						}
					}
				}, err => {})
			},

			getPayPic(obj) {
				let msg = {}
				msg.OrderSource = 8
				msg.body = obj.description
				msg.attach = this.payType + '|' +obj.contactName+'|'+ obj.orderId+'|'+obj.customerId+'|'+obj.outBranchId
				msg.total_fee = this.payMoney
				msg.payway = this.payWay
				if(this.payType==''){
					this.$message.warning('请选择费用类型!')
					return
				}

				this.apipost('OnlinePay_post_GetCodeUrl', msg, res => {
					if(res.data.resultCode == 1) {
						this.payPic = res.data.data.CodeURL
						this.lastTime = new Date(res.data.data.ExpireDate)
						this.nowDate=new Date(res.data.data.NowDate)
					    this.chaTime=this.lastTime-this.nowDate
						this.begin=this.nowDate.getSeconds()
						this.timer=setInterval(() => {
							this.descTime(this.chaTime)
						}, 1000);
						this.isShowPic = true
					} else {
						this.$message.error(res.data.message)
					}
				}, err => {})
			},
//			descTime(dateString) {
//				this.begin+=1
//				this.nowDate=new Date(this.nowDate.setSeconds(this.begin))
//				// 目标日期时间戳
//				const end = Date.parse(new Date(dateString))
//				// 当前时间戳
//				const now = Date.parse(new Date(this.nowDate))
//				// 相差的毫秒数
//				const msec = end - now
//				// 计算时分秒数
//				let day = parseInt(msec / 1000 / 60 / 60 / 24)
//				let hr = parseInt(msec / 1000 / 60 / 60 % 24)
//				let min = parseInt(msec / 1000 / 60 % 60)
//				let sec = parseInt(msec / 1000 % 60)
//				// 个位数前补零
//				hr = hr > 9 ? hr : '0' + hr
//				min = min > 9 ? min : '0' + min
//				sec = sec > 9 ? sec : '0' + sec
//				// 控制台打印
//				if(end-now>0){
//				this.descMin = min
//				this.descSecond = sec
//				}else{
//					this.isShowPic=false
//					this.descMin = 0
//					this.descSecond = 0
//				}
//
//				// 一秒后递归
//			},
			descTime() {
				let day = parseInt(this.chaTime / 1000 / 60 / 60 / 24)
				let hr = parseInt(this.chaTime / 1000 / 60 / 60 % 24)
				let min = parseInt(this.chaTime / 1000 / 60 % 60)
				let sec = parseInt(this.chaTime / 1000 % 60)
				// 个位数前补零
				hr = hr > 9 ? hr : '0' + hr
				min = min > 9 ? min : '0' + min
				sec = sec > 9 ? sec : '0' + sec
				// 控制台打印
				if(this.chaTime>0){
				if(hr>0){
					this.descHour = hr;
				}
				this.descMin = min+this.descHour*60;
				this.descSecond = sec;
				}else{
					this.isShowPic=false
					this.descMin = 0
					this.descSecond = 0
					this.descHour = 0
					clearInterval(this.timer)
				}
				this.chaTime-=1000
				// 一秒后递归
			},
			getFylx() {
				this.apipost('Financial_post_GetByOrderCostTypeList', {Type:1}, res => {
					if(res.data.resultCode == 1) {
						this.fylxList = res.data.data
					} else {
					}
				}, err => {})
			},

		},

	};
</script>

<style>
 .templatePayURL .el-input--suffix .el-input__inner{padding: 0 10px 0 8px!important; font-size: 12px;}
 .templatePayURL .el-input__suffix{right: 0!important;}
</style>