<!--扫描组件-->
<template>
	<!-- <page-meta root-font-size="18px"></page-meta> -->
	<view>
		<view class="pop_tab">
			<view class="tab_info">
				<view class="conbox">
					<textarea v-model="scanMsg" trim="all" maxlength="1000" style="margin-left: 5px;width: 90%;"
						:focus="boxfocus" :placeholder="placeholderValue" @focus="getfocus" @blur="losefocus"
						@input="handelScanMsg" :cursor="cursorIndex"></textarea>
				</view>

				<view class="uni-flex uni-row space-between u-col-center">
					<view class="paizhao" @click="scanQRCode()">
						<image src="/static/icons/icons_camera.svg" alt="" />
					</view>

					<view class="uni-flex">
						<button class="clean_scan_btn" @click="clearScanValue()">清空</button>
						<button class="scan_btn" @click="clickScanMsg()">扫描</button>
					</view>
				</view>
			</view>

			<view style="width: 100%;">
				<view style="width: 100%;" v-if="scanList.length>0&&isShowHistory">
					<view class="uni-flex uni-row space-between u-col-center">
						<view class="" style="padding: 10rpx;">
							历史记录
						</view>
						<view class="" style="padding-right: 10rpx;">
							<u-icon :name="expendIcon" size="35rpx" @click="expands()"></u-icon>
						</view>
					</view>
					<u-line class='line_color' style='padding-top: 10rpx;padding-bottom: 20rpx;'></u-line>
					<scroll-view scroll-y="true" class="scroll-view" v-if="expand&&scanList.length>0"
						style="height: 70px;">
						<view class="uni-flex u-col" v-for="(item,index) in scanList">
							<view style="width: 100%;max-height: 100px;">
								<view class="uni-flex u-row space-between u-col-center" @click="showItem(item)">
									<view class="text_ellipsis" style="padding: 15rpx;">
										{{item}}
									</view>
									<view class="">
										<u-icon name="arrow-right"></u-icon>
									</view>
								</view>
								<u-line class='line_color'></u-line>
							</view>
						</view>
					</scroll-view>
				</view>
			</view>
		</view>
		<com-message ref="comMessage"></com-message>
	</view>
</template>
<script module="input" lang="renderjs">
	import comMessage from '@/mycomponents/common/comMessage.vue'
	import {
		getLabelInfo
	} from '@/common/label.js';

	export default {
		name: "winComScan",
		emits: ["getResult"],
		components: {
			comMessage
		},
		props: {
			placeholder: {
				type: String,
				default: '请扫描标签'
			},
			clearResult: {
				type: Boolean,
				default: true
			},
			boxFocus: {
				type: Boolean,
				default: true
			},
			isShowHistory: {
				type: Boolean,
				default: true
			}
		},
		data() {
			return {
				// scanMsg: "HPQ;V1.0;ICE115F11161AG;PP20230427000027;B20230427002;Q100",
				scanMsg: "",
				boxfocus: true,
				placeholderValue: '',
				scanResult: {},
				scanList: [],
				expand: true,
				expendIcon: 'arrow-down',
				cursorIndex: 0
			}
		},
		mounted() {
			// if (this.$el.querySelector('textarea') != null) {
			// 	this.$el.querySelector('textarea').setAttribute('inputmode', 'none')
			// }
		},
		watch: {
			placeholder() {
				this.placeholderValue = '请扫描' + this.placeholder;
			}
		},
		created() {
			this.placeholderValue = '请扫描' + this.placeholder;
		},
		methods: {
			getValue() {
				return this.scanMsg
			},
			setValue(val) {
				this.scanMsg = val
			},
			clearScanValue() {
				this.scanMsg = ''
				this.getfocus();
			},
			clickScanMsg() {
				this.scanMsg = this.scanMsg + "\n";
				this.handelScanMsg();
			},
			handelScanMsg() {
				let that = this;
				//点击了回车
			
				let index = that.scanMsg.indexOf('\n');
				if (index > 0) {
					// that.scanMsg = 'HPQ;V1.0;ICE115F11161AG;PP20230427000027;B20230427002;Q50';
					setTimeout(() => {
						that.losefocus();
						let content = uni.$u.trim(that.scanMsg)
						if (content == "") {
							//消息框弹出位置不正确
							// this.$refs.comMessage.showErrorMessage('扫描的内容为空', res => {
							// 	if (res) {
							// 		that.getfocus();
							// 	}
							// })
							that.getfocus();
							return;
						}
			
						if (that.isShowHistory) {
							that.scanList.unshift(content);
						}
						getLabelInfo(content, callback => {
							let scanResult = callback;
							if (scanResult.sucess) {
								that.clear();
								// that.getfocus();//不能自动获取焦点
								that.$emit("getResult", scanResult);
							} else {
								this.$refs.comMessage.showErrorMessage(scanResult.message, res => {
									if (res) {
										that.getfocus();
									}
								})
							}
						});
					}, 500);
				}
			},
			getfocus() {
				let that = this;
				that.boxfocus = true;
				this.$nextTick(r => {
					that.boxfocus = true;
				});
			},
			losefocus() {
				let that = this;
				that.boxfocus = false;
				this.$nextTick(r => {
					that.boxfocus = false;
				});
			},
			clear() {
				this.cursorIndex = 0;
				this.scanMsg = ''
			},
			iconClick(type) {
				this.$emit("clearResult", this.scanMsgk);
			},
			expands() {
				this.expand = !this.expand;
				this.expendIcon = this.expand == true ? "arrow-down" : "arrow-up"
			},
			scanClick() {
				this.handelScanMsg();
			},
			cancelClick() {
				this.clear();
				this.getfocus();
			},
			showItem(item) {
				this.$refs.comMessage.showMessage(item, res => {
					if (res) {
						// this.$refs.modal.cancelClose();
					}
				})
			},

			scanQRCode() {
				let that = this;
				uni.scanCode({
					onlyFromCamera: true,
					success: (res) => {
						that.scanMsg = res.result;
						that.$emit("getResult", res.result);
						console.log('扫描二维码成功,结果:' + res.result);
					},
					fail: (res) => {
						that.showItem('扫描出现错误:' + res.result);
						console.log('扫描出现错误:' + res.result);
					}
				});
			}
		}
	}
</script>

<style scoped lang="scss">

</style>