<template>
	<view class="invoice">
		<view class="invoice-info">
			<view class="b">
				<view class="item">
					<view class="l">发票类型：</view>
					<view class="r">
						<picker :value="arrayIndex" :range="array" @change="bindPickerChange">
							<view class="lx" style="color: #888;" v-if="!arrayName">请选择发票类型</view>
							<view class="lx" v-else>{{arrayName}}</view>
						</picker>
					</view>
				</view>
				<view class="item">
					<view class="l">发票类型：</view>
					<view class="r">
						<view class="li" :class="tabIndex == 1 ? 'li-on' : ''" @click="tabItem(1)">个人</view>
						<view class="li" :class="tabIndex == 2 ? 'li-on' : ''" @click="tabItem(2)">单位</view>
					</view>
				</view>
				<view class="item">
					<view class="l">发票抬头：</view>
					<view class="r">
						<input type="text" v-model="obj.header" :placeholder="tabIndex == 2 ? '请输入单位名称' : '请输入个人姓名'" />
					</view>
				</view>
				<view class="item" v-if="tabIndex == 2">
					<view class="l">单位税号：</view>
					<view class="r">
						<input type="text" v-model="obj.duty_no" placeholder="请输入纳税人识别号" />
					</view>
				</view>
			</view>
		</view>
		<view class="invoice-company" v-if="tabIndex == 2">
			<view class="a">选填内容（开户银行、银行账号等）
				<text :class="toggleIndex ? 'on' : ''" @click="toggleItem()">{{ toggleIndex ? "收起" : "展开" }}</text>
			</view>
			<view class="b" v-if="toggleIndex">
				<view class="item">
					<view class="l">开户银行：</view>
					<view class="r">
						<input type="text" v-model="obj.bank_name" placeholder="请输入开户银行名称" />
					</view>
				</view>
				<view class="item">
					<view class="l">银行账号：</view>
					<view class="r">
						<input type="number" v-model="obj.bank_no" placeholder="请输入银行账号" />
					</view>
				</view>
				<view class="item">
					<view class="l">单位地址：</view>
					<view class="r">
						<input type="text" v-model="obj.address" placeholder="请输入单位地址" />
					</view>
				</view>
				<view class="item">
					<view class="l">单位电话：</view>
					<view class="r">
						<input type="number" v-model="obj.phone" placeholder="请输入单位电话" />
					</view>
				</view>
			</view>
		</view>
		<view class="invoice-btn">
			<view class="invoice-fd" @click="onSubmit()">
				提交
			</view>
		</view>
	</view>
</template>

<script>
	import * as InvoiceApi from '@/api/invoice'
	export default {
		data() {
			return {
				id: '',
				content: "确认您的发票信息无误后再提交",
				show: true,
				toggleIndex: true,
				arrayIndex: 0,
				arrayName: '',
				array: ['普通增值税发票'],
				tabIndex: 1,
				sourcePage: 0,
				orderDetail: '',
				orderId: '',
				obj: {
					header: '',
					duty_no: '',
					bank_name: '',
					bank_no: '',
					address: '',
					phone: '',
					type: 1,
					source: ''
				}

			};
		},
		onLoad(op) {
			if (op.detailObj && op.detailObj != 'null') {
				let end = JSON.parse(op.detailObj)
				this.arrayIndex = end.type - 1;
				this.arrayName = this.array[this.arrayIndex]
				if (end.source == 1) {
					this.tabIndex = end.source
				} else {
					this.tabIndex = 2
				}
				this.obj = end
			}

		},
		methods: {
			//添加发票  
			onSubmit() {
				if (this.obj.id) {
					this.editeInvoice()
				} else {
					this.addInvoice()
				}
			},
			async addInvoice(canReset = false) {
				const app = this
				if (!app.arrayName) {
					uni.showToast({
						title: '请选择发票类型',
						icon: 'none',
						duration: 2000
					})
					return
				}
				if (!app.obj.header) {
					uni.showToast({
						title: '请输入抬头',
						icon: 'none',
						duration: 2000
					})
					return
				}
				if (app.tabIndex == 2 && !app.obj.duty_no) {
					uni.showToast({
						title: '请输入纳税人识别号',
						icon: 'none',
						duration: 2000
					})
					return
				}
				let {
					status,
					data
				} = await InvoiceApi.addInvoicing(app.obj);
				if (status == 200) {
					uni.showToast({
						title: '新增成功！',
						icon: 'none',
						duration: 2000
					})
					app.arrayIndex = 0
					app.tabIndex = 1
					app.obj = app.$options.data().obj;
					uni.redirectTo({
						url: "/pages/invoice/index"
					})
				}
			},
			async editeInvoice() {
				const app = this
				if (!app.arrayName) {
					uni.showToast({
						title: '请选择发票类型',
						icon: 'none',
						duration: 2000
					})
					return
				}
				if (!app.obj.header) {
					uni.showToast({
						title: '请输入抬头',
						icon: 'none',
						duration: 2000
					})
					return
				}
				if (app.tabIndex == 2 && !app.obj.duty_no) {
					uni.showToast({
						title: '请输入纳税人识别号',
						icon: 'none',
						duration: 2000
					})
					return
				}
				let {
					status,
					data
				} = await InvoiceApi.editInvoicing(app.obj);
				if (status == 200) {
					uni.showToast({
						title: '编辑成功！',
						icon: 'none',
						duration: 2000
					})
					app.arrayIndex = 0
					app.tabIndex = 1
					app.obj = app.$options.data().obj;
					uni.redirectTo({
						url: "/pages/invoice/index"
					})
				}
			},

			// 复制指定内容
			handleCopy(value) {
				const app = this
				uni.setClipboardData({
					data: value,
					success: () => app.$toast('复制成功'),
					fail: ({
						errMsg
					}) => app.$toast('复制失败 ' + errMsg)
				})
			},
			// 提交信息
			handleInvoice() {
				const app = this
			},
			onClose() {},
			tabItem(i) {
				this.tabIndex = i;
				this.obj.source = i
			},
			toggleItem(i) {
				this.toggleIndex = !this.toggleIndex;
			},
			bindPickerChange(e) {
				this.arrayIndex = e.detail.value;
				this.arrayName = this.array[e.detail.value]
			},
			bindPickerChange1() {
				uni.navigateTo({
					url: "/pages/invoice/index"
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
	.invoice-btn {
		width: 100%;
		position: fixed;
		bottom: 0;
		left: 0;
		padding: 30rpx 44rpx;
		z-index: 8;
		background: #fafafa;
	}

	.invoice-company {
		margin-bottom: 170rpx;
	}

	.invoice {
		padding-bottom: 1rpx;

		&-goods {
			padding: 0 20rpx 0 40rpx;
			overflow: hidden;
			background-color: #fff;
			padding: 30rpx;
			box-sizing: border-box;
			display: flex;
			align-items: center;

			.a {
				width: 145rpx;
				height: 135rpx;
				margin-right: 20rpx;

				image {
					width: 100%;
					height: 100%;
					border-radius: 10rpx;
				}
			}

			.b {
				flex: 1;
				overflow: hidden;

				.l {
					white-space: nowrap;
					text-overflow: ellipsis;
					font-size: 32rpx;
					font-family: PingFang SC, PingFang SC;
					font-weight: 500;
					color: #262626;
					overflow: hidden;
				}

				.r {
					font-size: 30rpx;
					font-family: PingFang SC, PingFang SC;
					font-weight: 400;
					color: #838383;
					display: flex;
					align-items: center;
					justify-content: space-between;
					margin-top: 20rpx;

					text {
						display: block;
						width: 104rpx;
						line-height: 60rpx;
						background: #FFFFFF;
						border-radius: 4rpx;
						text-align: center;
						border: 1px solid #CACACA;
						font-size: 28rpx;
						color: #555;
					}
				}
			}
		}

		&-info {
			margin-top: 20rpx;
			background-color: #fff;
			overflow: hidden;

			.a {
				display: flex;
				align-items: center;
				justify-content: space-between;
				padding: 20rpx 30rpx 20rpx 60rpx;
				box-sizing: border-box;
				border-bottom: 1px solid #F3F3F3;
				font-size: 32rpx;
				font-weight: 500;
				color: #262626;

				text {
					color: #006AFF;
					padding-right: 40rpx;
					position: relative;

					&::after {
						content: "";
						width: 16rpx;
						height: 16rpx;
						border-top: 1px solid #006AFF;
						border-left: 1px solid #006AFF;
						position: absolute;
						right: 0;
						top: 14rpx;
						z-index: 1;
						transform: rotate(135deg);
					}
				}
			}

			.b {
				padding: 0 30rpx 0 45rpx;
				box-sizing: border-box;
				overflow: hidden;

				.item {
					padding: 30rpx 0;
					display: flex;
					align-items: center;
					justify-content: space-between;
					box-sizing: border-box;
					border-top: 1px solid #F3F3F3;
					font-size: 32rpx;
					font-weight: 500;
					color: #262626;
					overflow: hidden;

					&:first-child {
						border-top-color: #fff;
					}

					.l {
						width: 180rpx;
						font-size: 32rpx;
						font-weight: 400;
						color: #656565;
					}

					.r {
						flex: 1;
						display: flex;
						align-items: center;
						font-size: 32rpx;
						font-weight: 400;
						color: #262626;

						.li {
							width: 150rpx;
							height: 78rpx;
							background: #F3F3F3;
							border-radius: 8rpx;
							text-align: center;
							line-height: 78rpx;
							font-size: 32rpx;
							font-weight: 400;
							color: #262626;
							margin-right: 12rpx;

							&-on {
								background: #FDF4F4;
								background: url(/static/invoice/select-active.png) center top no-repeat;
								background-size: contain;
							}
						}

						input {
							flex: 1;
						}

						picker {
							flex: 1;

							.tt {
								width: 180rpx;
								position: relative;
								color: #4894FF;
								text-align: right;

								&::after {
									content: "";
									width: 16rpx;
									height: 16rpx;
									border-top: 1px solid #4894FF;
									border-left: 1px solid #4894FF;
									position: absolute;
									right: -50rpx;
									top: 14rpx;
									z-index: 1;
									transform: rotate(135deg);
								}
							}

							.lx {
								width: 100%;
								position: relative;

								&::after {
									content: "";
									width: 16rpx;
									height: 16rpx;
									border-top: 1px solid #B8B8B8;
									border-left: 1px solid #B8B8B8;
									position: absolute;
									right: 20rpx;
									top: 14rpx;
									z-index: 1;
									transform: rotate(135deg);
								}
							}
						}
					}
				}

			}
		}

		&-fd {
			height: 104rpx;
			background: #F55349;
			border-radius: 8rpx;
			font-size: 32rpx;
			font-weight: 500;
			color: #FFFFFF;
			display: flex;
			align-items: center;
			justify-content: center;
		}

		&-company {
			overflow: hidden;

			.a {
				padding: 35rpx 50rpx;
				font-size: 32rpx;
				font-weight: 400;
				display: flex;
				align-items: center;
				justify-content: space-between;
				color: #262626;

				text {
					width: 70rpx;
					color: #888888;
					margin-right: 30rpx;
					position: relative;

					&::after {
						content: "";
						width: 16rpx;
						height: 16rpx;
						border-top: 1px solid #888888;
						border-left: 1px solid #888888;
						position: absolute;
						right: -30rpx;
						top: 10rpx;
						z-index: 1;
						transform: rotate(225deg);
					}

					&.on {
						&::after {
							content: "";
							width: 16rpx;
							height: 16rpx;
							border-top: 1px solid #888888;
							border-left: 1px solid #888888;
							position: absolute;
							right: -30rpx;
							top: 20rpx;
							z-index: 1;
							transform: rotate(45deg);
						}
					}
				}
			}

			.b {
				padding: 0 30rpx 0 45rpx;
				box-sizing: border-box;
				background-color: #fff;
				overflow: hidden;

				.item {
					padding: 30rpx 0;
					display: flex;
					align-items: center;
					justify-content: space-between;
					box-sizing: border-box;
					border-top: 1px solid #F3F3F3;
					font-size: 32rpx;
					font-weight: 500;
					color: #262626;
					overflow: hidden;

					&:first-child {
						border-top-color: #fff;
					}

					.l {
						width: 180rpx;
						font-size: 32rpx;
						font-weight: 400;
						color: #656565;
					}

					.r {
						flex: 1;
						display: flex;
						align-items: center;
						font-size: 32rpx;
						font-weight: 400;
						color: #262626;

						input {
							flex: 1;
						}
					}
				}

			}
		}
	}
</style>
