<template>
	<view class="details_body">
		<view class="details_body_car">
			<view class="details_body_car_lable">
				<view class="sign">
					<image style="width: 65%;height: 65%;" :src="details.siteImages"></image>
				</view>
				<view class="payLi felx justifyContent  alignItems">{{details.payAccountType==0?'个人':'企业'}}</view>
				<view
					:style="{background:paymentStatus(details.orderStatus).bg,color:paymentStatus(details.orderStatus).color}"
					class="payment felx justifyContent  alignItems">{{paymentStatus(details.orderStatus).text}}</view>
			</view>
			<view class="paymentInformation">
				<view class=" flex">
					<view></view>
					<view>
						<view class="Text">
							{{details.siteName}}
							<uni-icons @click="copy(details.siteName)" style="margin-left: 10rpx;" color="#bbbbbb"
								custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons>
						</view>
						<view class="smallText">{{details.siteId}}</view>
					</view>
				</view>
				<view style="margin:33rpx 0;" class="flex">
					<view></view>
					<view>
						<view class="Text"> <text>{{details.customerName}}</text> <text
								style="margin-left:35rpx;">{{details.customerPhone}}</text>
							<uni-icons @click="copy(details.customerPhone)" style="margin-left: 10rpx;" color="#bbbbbb"
								custom-prefix="iconfont" type="iconfuzhi" size="20"></uni-icons>
						</view>
						<view class="smallText">{{details.customerId}}</view>
					</view>
				</view>
				<view class="flex">
					<view></view>
					<view>
						<view class="Text">{{details.accountCardCode?details.accountCardCode:'暂无'}}</view>
						<view v-if="details.companyName" class="smallText">{{details.companyName}}</view>
					</view>
				</view>
			</view>
			<view class="splitLine">
				<view style="margin-left: -20rpx;" class="splitLineyuan"></view>
				<view class="Line">
					<image src="@/static/line.png" style="width: 100%; height: 1px"></image>
				</view>
				<view style="margin-right: -20rpx;" class="splitLineyuan"></view>
			</view>
			<view style="padding: 0 43rpx;">
				<view class="price felx">
					<view>
						<view class="smallText">价格</view>
						<view class="bgtext">{{ details.realAmount}}<text style="position: relative;left: 20rpx;"
								class="Text">元</text>
						</view>
					</view>
					<view style="margin-left: 143rpx;">
						<view class="smallText">升数</view>
						<view class="bgtext">{{details.volume}} <text style="position: relative;left: 20rpx;"
								class="Text">L</text>
						</view>
					</view>
				</view>
				<view style="margin-top: 45rpx;" class="felx">
					<view class="olitype felx justifyContent alignItems Text">{{details.oilsCode}}</view>
					<view class="actualUnitPrice felx justifyContent alignItems">
						<view>
							<view class="bgtext">{{details.realPrice}}</view>
							<view class="smallText">实际单价</view>
						</view>
					</view>
					<view class="actualUnitPrice felx justifyContent alignItems">
						<view>
							<view class="bgtext">{{details.marketPrice}}</view>
							<view class="smallText">国际单价</view>
						</view>
					</view>
					<view class="actualUnitPrice felx justifyContent alignItems">
						<view>
							<view class="bgtext">{{details.sitePrice}}</view>
							<view class="smallText">油站单价</view>
						</view>
					</view>
				</view>
			</view>
			<view v-if="details.orderWfStatus==0" @tap='codeFn'
				:style="{marginBottom:!moreOpen?'':'0',background:'#228B22'}"
				class="writeOff felx justifyContent alignItems ">待核销</view>
			<view v-else :style="{marginBottom:!moreOpen?'':'0',background:'#BBBBBB'}"
				class="writeOff felx justifyContent alignItems ">已核销</view>
			<view v-if="!moreOpen" @click="moreOpen=!moreOpen"
				class="moreButten felx justifyContent alignItems smallText ">
				更多信息&退款信息
				<uni-icons :style="{transform:moreOpen?'rotate(180deg)':'rotate(0deg)',transition:'transform .3s' }"
					size="15" class="content-clear-icon" type="bottom" color="#c0c4cc"></uni-icons>
			</view>
			<view class="dxx" :style="{height:moreOpen?'265rpx':'0rpx'}">
				<view class="splitLine">
					<view style="margin-left: -20rpx;" class="splitLineyuan"></view>
					<view class="Line">
						<image src="@/static/line.png" style="width: 100%; height: 1px"></image>
					</view>
					<view style="margin-right: -20rpx;" class="splitLineyuan"></view>
				</view>
				<view class="more">
					<view @tap='moreOpen=false' style="display: flex; justify-content: space-between;" class="Text">
						{{details.orderSerialNumber}}
						<uni-icons
							:style="{transform:moreOpen?'rotate(0deg)':'rotate(180deg)',transition:'transform .3s' }"
							size="15" class="content-clear-icon" type="top" color="#c0c4cc"></uni-icons>

					</view>
					<view style="margin-bottom:33rpx;" class="smallText">{{details.createTime}}</view>
					<view @tap="refund" v-if="!customerList.includes(details.createSource)"
						:style="{background:details.orderStatus==1?'':'#bbbbbb'}"
						class="refund felx justifyContent alignItems">退款</view>
				</view>
			</view>
		</view>
		<view class="footerButten felx">
			<view @click="copy(details.orderSerialNumber)" class="copyButten felx  justifyContent alignItems">复制订单号
			</view>
			<!-- <button class="forwardButten felx justifyContent alignItems" open-type="share">分享</button> -->
		</view>
		<popup :show='show' @confirmFn='confirmFn' @closeFn='closeFn' :butten='butten'
			:styles="{height:'350rpx',width:'350rpx'}" v-model="iShow.seting">
			<view slot="coment">
				<view
					style="height: 350rpx;display: flex;align-items: center; width: 100%;justify-content: center;flex-wrap: wrap;flex-direction: column;">
					<view v-if="!details.secondChannelCode"
						style="width: 100%; font-size: 34rpx;text-align: center; margin-bottom: 15rpx;"
						class="smallText">核销二维码</view>
					<qrcode v-if="iShow.seting&&details.secondChannelCode" ref="qrcode" cid="2" loadMake iconSize="10"
						:val="details.secondChannelCode" unit="upx" background="#fff" foreground="#000" pdground="#000"
						onval @result="qrR" />
					<view v-if="!details.secondChannelCode">
						二维码生成错误
					</view>
				</view>
			</view>
		</popup>

	</view>
</template>

<script>
	import orderList from '@/api/orderList'
	import qrcode from '@/components/tki-qrcode/tki-qrcode'
	import tool from '@/utils/tool.js'

	import serve from '@/api/orderList/orderDetails.js'
	export default {
		onShareAppMessage(res) {
			return {
				title: '订单详情',
				path: '/orderList/orderDetails/orderDetails'
			}
		},
		components: {
			qrcode
		},
		data() {
			return {
				customerList: ['HLL', 'FENGTU'],
				details: {},
				show: {
					img: false,
					footer: false
				},
				iShow: {
					seting: false
				},
				moreOpen: false,
				val: '898989898',
				id: null,
				butten: {
					colse: '取消',
					confirm: '确定',
					coloseBg: '',
					coloseColor: '',
					confirmBg: '',
					confirmColor: ''
				},
				refundMap: new Map([
					[
						['FUYOU'], {
							serveTarget: serve.fuyouRefund,
							type: 'post'
						}
					],
					[
						['ZHIZHU', 'NEWHOPE', 'MUYUAN', 'G7CLUSTER-CAHNGJIU'], {
							serveTarget: serve.orderRefund,
							type: 'post'
						}
					],
					[
						['SHUNFENG'], {
							serveTarget: serve.sfRefund,
							type: 'post'
						}
					],
					[
						['ANNENG'], {
							serveTarget: serve.refund,
							type: 'get'
						}
					],
					[
						['YIGUANYOU', 'ANTU'], {
							serveTarget: serve.unifiedRefund,
							type: 'post'
						}
					],
				])
			}
		},

		onLoad(e) {
			if (e.jsData) {
				console.log(JSON.parse(e.jsData));
				this.id = JSON.parse(e.jsData).id
				this.getList(this.id)
			}
			// console.log('refundMap', this.refundMap)
		},
		methods: {
			refundNew() {
				let {
					createSource,
					id
				} = this.details
				if (!createSource) {
					uni.showToast({
						title: "未查询到该订单创建来源",
						icon: "none"
					})
					return
				}
				let keys = this.refundMap.keys()
				let result = null
				for (let key of keys) {
					if (key.includes(createSource)) {
						result = this.refundMap.get(key)
						break
					}
				}
				if (result) {
					let {
						type,
						serveTarget
					} = result
					let params = type === 'post' ? {
						id,
						orderId: id
					} : id
					serveTarget(params).then(res => {
						if (res.code === 20000) {
							uni.showToast({
								title: '退款成功',
								duration: 2000
							});
							setTimeout(() => {
								this.getList(id)
							}, 1000)
						}
					})
				} else {
					orderList.refund({
						id
					}).then(res => {
						if (res.code == 20000) {
							uni.showToast({
								title: '退款成功',
								duration: 2000
							});
							setTimeout(() => {
								this.getList(id)
							}, 1000)
						}
					})
				}
			},
			codeFn() {
				if (this.details.orderWfStatus == 0) {
					orderList.getOrderQrCodeOms(this.details.orderSerialNumber).then(res => {
						if (res.code == 20000) {
							console.log(res)
							this.val = res.data.codeStr
							this.iShow.seting = true
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none'
							})
						}
					})

				} else {
					this.iShow.seting = false
				}
			},
			refund() {
				if (this.details.orderStatus !== 1) return;
				// let that = this
				uni.showModal({
					title: '提示',
					content: '是否确认退款',
					success: (res) => {
						if (res.confirm) {
							this.refundNew()
							// orderList.refund({
							// 	id: that.id
							// }).then(res => {
							// 	if (res.code == 20000) {
							// 		uni.showToast({
							// 			title: '退款成功',
							// 			duration: 2000
							// 		});
							// 		setTimeout(() => {
							// 			that.getList(that.id)
							// 		}, 1000)
							// 	}
							// })
							// console.log('用户点击确定');
						} else if (res.cancel) {
							// console.log('用户点击取消');
						}
					}
				});
			},
			paymentStatus(e) {
				switch (e) {
					case 0:
						return {
							text: '待支付',
								color: '#EBC153',
								bg: '#FFF6DD'
						}
						break;
					case 1:
						return {
							text: '已支付',
								color: '#17A00E',
								bg: '#D1FFDA'
						}
						break;
					case -1:
						return {
							text: '支付失败',
								color: '#EC4645',
								bg: '#FFC8C8'
						}
						break;
					case 2:
						return {
							text: '已取消',
								color: '#999999',
								bg: '#E9E9E9'
						}
						break;
					case 3:
						return {
							text: '已退款',
								color: '#999999',
								bg: ''
						}
						break;
					case 4:
						return {
							text: '退款中',
								color: '#EBC153',
								bg: ''
						}
						// return '退款中'
						break;
					case 5:
						return {
							text: '退款失败',
								color: '#EC4645',
								bg: ''
						}
						break;
				}
			},
			getList(e) {
				orderList.findOrderDetails({
					orderId: e
				}).then(res => {
					if (res.code !== 20000) return
					this.details = res.data;
					tool.numberSetting(this.details, ['realAmount', 'volume', 'realPrice', 'marketPrice',
						'sitePrice'
					], 2);
				})
			},
			qrR() {
				console.log('1')
			},
			closeFn() {
				console.log('点击取消')
			},
			confirmFn() {
				console.log('点击确定')
			},
			share() {
				uni.share({
					provider: "weixin",
					scene: "WXSceneTimeline",
					type: 1,
					summary: "我正在使用HBuilderX开发uni-app，赶紧跟我一起来体验！",
					success: function(res) {
						console.log("success:" + JSON.stringify(res));
					},
					fail: function(err) {
						console.log("fail:" + JSON.stringify(err));
					}
				});
			},
			copy(text) {
				uni.setClipboardData({
					data: `${text}`,
					// data: `订单ID:${this.details.id}\n订单流水号:${this.details.orderSerialNumber}\n订单金额:${this.details.realAmount}元\n订单升数:${this.details.volume}升\n订单类型:${this.details.payAccountType==0?'个人':'企业'}\n司机姓名:${this.details.customerName}\n司机id:${this.details.customerId} ${this.details.companyName?'\n订单所属公司:' + this.details.companyName :''}\n手机号码:${this.details.customerPhone}`, //要被复制的内容
					// ${(this.details.payAccountType==0?'司机姓名':'订单所属公司') + ':' + (this.details.payAccountType==0? this.details.customerName:this.details.companyName)}
					success: () => { //复制成功的回调函数
						uni.showToast({ //提示
							title: '复制成功'
						})
					}
				});
			},
		}
	}
</script>

<style>
	.copyButten {
		flex: 1;
		height: 76rpx;
		background: #2866FF;
		border-radius: 10rpx;
		margin-right: 19rpx;
	}

	.forwardButten {
		flex: 1;
		height: 76rpx;
		background: #28C445;
		border-radius: 10rpx;
		color: #FFFFFF;
		font-size: 32rpx;
	}

	.footerButten {
		padding: 0 43rpx;
		font-size: 32rpx;
		color: #FFFFFF;
		margin: 43rpx 0;
	}

	.dxx {
		transition: all .3s;
		overflow: hidden;
	}

	.refund {
		height: 76rpx;
		width: 308rpx;
		background: #EC4645;
		border-radius: 10rpx;
		color: #FFFFFF;
		font-size: 32rpx;
		margin: 0 auto;
	}

	.more {
		padding: 0 43rpx;
	}

	.moreButten {
		height: 67rpx;
		background: #F0F0F0;
		margin: 0 43rpx;
		border-radius: 10rpx;
	}

	.writeOff {
		height: 92rpx;
		background: #2866FF;
		border-radius: 10rpx;
		font-size: 32rpx;
		margin: 37rpx 43rpx;
		color: #FFFFFF;
		font-weight: 500;
	}

	.bgtext {
		font-size: 38rpx;
		font-family: PingFang SC;
		font-weight: bold;
		color: #EC4645;
	}

	.actualUnitPrice {
		width: 160rpx;
		height: 108rpx;
		background: #F4F4F4;
		margin-left: 19rpx;
		text-align: center;
	}

	.olitype {
		width: 67rpx;
		height: 108rpx;
		background: #F4F4F4;
	}

	.price {
		padding-left: 80rpx;
	}

	.Line {
		position: relative;
		width: calc(100% - 100rpx);
		height: 100%;
		display: flex;
		align-items: center;
	}

	.splitLineyuan {
		width: 45rpx;
		height: 45rpx;
		border-radius: 50%;
		background-color: #F0F2FF;
	}

	.splitLine {
		height: 45rpx;
		display: flex;
		justify-content: space-between;
		position: relative;
		margin: 20rpx 0;
	}

	.Text {
		font-size: 28rpx;
		font-family: PingFang SC;
		font-weight: 500;
		color: #333333;
	}

	.smallText {
		font-size: 24rpx;
		font-family: PingFang SC;
		font-weight: 500;
		color: #BBBBBB;
	}

	.paymentInformation {
		padding-top: 140rpx;
		padding-left: 35rpx;
		padding-right: 35rpx;
	}

	.details_body_car_lable .payment {
		width: 160rpx;
		height: 48rpx;
		background: #D1FFDA;
		color: #17A00E;
		font-size: 30rpx;
		position: absolute;
		right: 46rpx;
	}

	.justifyContent {
		justify-content: center;
	}

	.alignItems {
		align-items: center;
	}

	.felx {
		display: flex;
	}

	.details_body_car_lable .payLi {
		width: 100rpx;
		height: 44rpx;
		background: #2866FF;
		border-radius: 0px 0px 12rpx 12rpx;
		color: #FFFFFF;
		margin-left: 51rpx;

	}

	.details_body_car_lable .sign {
		width: 140rpx;
		height: 140rpx;
		background: #FFFFFF;
		box-shadow: 0px 5px 5px 0px rgba(88, 88, 88, 0.18);
		border-radius: 50%;
		top: -50rpx;
		position: relative;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.details_body_car_lable {
		width: 100%;
		position: absolute;
		top: 0;
		display: flex;
		padding: 0 46rpx;
	}

	.details_body_car {
		width: 100%;
		/* height: 1003rpx; */
		background-color: #FFFFFF;
		border-radius: 20rpx;
		position: relative;
		/* box-shadow: 0px 5px 5px 0px rgba(88, 88, 88, 0.18); */
		padding-bottom: 63rpx;

	}

	.details_body {
		padding: 0 31rpx;
		padding-top: 65rpx;
		width: 100vw;
		height: 100vh;
		overflow: auto;
	}
</style>
