<template>
	<view>
		<view class="title_box rx-bc">
			<view class="name">设备信息</view>

			<view class="btn_box rx-bc" @click="handleScan(workOrderId)" v-if='workOrderId'>
				<image class="scan" src="@/static/pda/ScanIt.svg"></image>
				更换设备
			</view>
		</view>


		<view class="material rx-ss" v-for="(item,index) in list" :key='index'>
			<view class="left rx-ss" @click="getDelete(index)" v-if='workOrderId'>
				<uni-icons custom-prefix="iconfont" type="icon-shanchu" size="20" color="#fa3534"></uni-icons>
			</view>
			<view class="content_table">
				<view class="item">
					<view class="lable rx-cc">工位名称</view>
					<view class="content">
						{{item.workstationName || (item.extInfo && item.extInfo.workstationName)}}
					</view>
				</view>

				<view class="item">
					<view class="lable rx-cc">设备编码</view>
					<view class="content">
						{{ item.code  }}
					</view>
				</view>

				<view class="item">
					<view class="lable rx-cc">设备名称</view>
					<view class="content">{{ item.name  }}</view>
				</view>



				<view class="item rx-sc">
					<view class="rx ww50">
						<view class="lable  rx-cc">固资编码</view>
						<view class="content">{{item.extInfo.fixCode }} </view>

					</view>


					<view class="rx ww50">
						<view class="lable ww80 rx-cc">编号</view>
						<view class="content">{{item.extInfo.codeNumber}}</view>
					</view>

				</view>



				<view class="item">
					<view class="lable rx-cc">炉次号</view>
					<view class="content content_num">
						<input class="uni-input" v-model="item.extInfo.heatNumber"></input>
					</view>

					<view v-if="clientEnvironmentId == 2" class="lable rx-cc"
						:style="Object.prototype.hasOwnProperty.call(item.extInfo, 'positionList') && item.extInfo.positionList.length > 0 ? 'color: #E6A23C' : 'color: #157A2C'"
						@click="handleStorage(index)">货位</view>

				</view>



			</view>
		</view>

		<SearchPopup mode="center" v-if='popupShow'>
			<template v-slot:list>
				<view class="search_list">
					<u-form labelPosition="left" :model="formData" labelWidth="90" labelAlign="left" class="baseForm">

						<u-form-item label="层数:" class="required-form" borderBottom prop="levelNum">
							<u-input v-model="formData.levelNum" :disabled="!ishuoWei" placeholder="请输入">
							</u-input>
						</u-form-item>

						<u-form-item label="列数:" class="required-form" borderBottom prop="lineNum">
							<u-input v-model="formData.lineNum" :disabled="!ishuoWei" placeholder="请输入">
							</u-input>
						</u-form-item>

						<view class="rx-bs" style="margin-top: 6rpx;" v-if="ishuoWei">
							<u-button size="small" style="width: 260rpx" type="success" @click="handleHjCode()">
								自动生成
							</u-button>


							<u-button size="small" style="width: 260rpx" type="success" @click="addHjCode()">
								添加货位
							</u-button>
						</view>

					</u-form>
				</view>

				<view class="content_table2">
					<view class="head row rx-sc">
						<view class="item ww30">货位</view>
						<view class="item ww40">数量</view>
						<view class="item ww30">操作</view>

					</view>
					<view class="table">
						<u-list @scrolltolower="scrolltolower" class="z_list">
							<view class="tr row rx-sc" v-for="(it, idx) in list[listIndex].extInfo.positionList"
								:key='idx'>
								<view class="item ww30 content content_num">

									<input class="uni-input" :disabled="!ishuoWei" v-model="it.code"></input>

								</view>

								<view class="item ww40 content content_num">
									<input class="uni-input" :disabled="!ishuoWei" v-model="it.num"></input>

								</view>


								<view class="ww30 rx-cc" @click="removeGoods(idx)" >
									<uni-icons custom-prefix="iconfont"  v-if="ishuoWei" type="icon-shanchu" size="20"
										color="#fa3534"></uni-icons>
								</view>
							</view>

						</u-list>

					</view>


				</view>

			</template>

			<template v-slot:operate>
				<view class="operate_box rx-bc">
					<u-button size="small" class="u-reset-button" @click="handleClose" v-if="ishuoWei">
						清空/取消
					</u-button>


					<u-button type="success" size="small" class="u-reset-button" @click="handleOk">
						确定
					</u-button>

				</view>
			</template>

		</SearchPopup>


	</view>
</template>

<script>
	import SearchPopup from '../../components/searchPopup.vue'
	export default {
		components: {
			SearchPopup
		},
		props: {
			workOrderId: {
				type: String,
				default: ''
			},
			list: {
				type: Array,
				default: () => []
			},
			
			ishuoWei: {
				type: Boolean,
				default: true
			}


		},
		data() {
			return {
				popupShow: false,
				formData: {
					levelNum: null,
					lineNum: null,
					type: 3,
					code: 'A'
				},
				listIndex: null,
				clientEnvironmentId: uni.getStorageSync("userInfo") && uni.getStorageSync("userInfo").clientEnvironmentId
			}
		},
		methods: {
			handleScan(id) {
				this.$emit('scanIt', id, )
			},

			getDelete(idx) {
				this.list.splice(idx, 1)
			},

			handleStorage(idx) {
				this.listIndex = idx || 0
				this.formData.lineNum = this.list[this.listIndex].extInfo.lineNum || null
				this.formData.levelNum = this.list[this.listIndex].extInfo.levelNum || null

				this.popupShow = true

			},

			handleHjCode() {
				if (!this.formData.levelNum) {

					uni.showToast({
						title: `请输入层数`,
						icon: 'none'
					})
					return false
				}

				if (!this.formData.lineNum) {
					uni.showToast({
						title: `请输入列数`,
						icon: 'none'
					})
					return false
				}
				this.handleMine()
			},


			handleMine() {

				const ruleName = this.formData.code;
				let preCode = 0;
				let codeEng = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
				let currentLetterIndex = 0;
				let positionList = []

				if (ruleName.length > 0) {
					// 计算初始索引
					let multiplier = Math.pow(codeEng.length, ruleName.length - 1);
					for (let i = 0; i < ruleName.length; i++) {
						currentLetterIndex +=
							(codeEng.indexOf(ruleName[i]) + 1) * multiplier;
						multiplier /= codeEng.length;
					}
				}


				if (this.formData.type == 3) {
					for (let i = 0; i < this.formData.lineNum; i++) {
						// 获取当前字母
						let index = currentLetterIndex;
						let dividend = codeEng.length;
						let remainder;
						let quotient;
						let code = '';


						while (index > 0) {
							remainder = index % dividend;
							quotient = Math.floor(index / dividend);

							if (remainder === 0) {
								remainder = codeEng.length;
								quotient--;
							}
							code = codeEng[remainder - 1] + code;
							index = quotient;
						}

						for (let j = 0; j < this.formData.levelNum; j++) {
							let obj1111 = {
								code: code + (j + 1),

							};

							positionList.push(obj1111)



						}
						console.log(positionList)
						this.$set(this.list[this.listIndex].extInfo, 'positionList', positionList)
						this.$set(this.list[this.listIndex].extInfo, 'lineNum', this.formData.lineNum)
						this.$set(this.list[this.listIndex].extInfo, 'levelNum', this.formData.levelNum)

						currentLetterIndex++; // 自增索引

					}

				} else {
					let num = Number(this.form.levelNum) * Number(this.form.lineNum)


					for (let i = 0; i < num; i++) {
						// 获取当前字母
						let index = currentLetterIndex;
						let dividend = codeEng.length;
						let remainder;
						let quotient;
						let code = '';


						while (index > 0) {
							remainder = index % dividend;
							quotient = Math.floor(index / dividend);

							if (remainder === 0) {
								remainder = codeEng.length;
								quotient--;
							}
							code = codeEng[remainder - 1] + code;
							index = quotient;
						}




						let obj1111 = {
							code: this.formData.type === 1 ? code : ruleName + (i + 1),

						};
						positionList.push(obj1111)



						currentLetterIndex++; // 自增索引

					}
				}



			},

			removeGoods(idx) {
				if (this.list[this.listIndex].extInfo.positionList == 1) {
					uni.showToast({
						title: `至少保留一个货架！`,
						icon: 'none'
					})
					return false
				}


				this.list[this.listIndex].extInfo && this.list[this.listIndex].extInfo.positionList.splice(idx, 1)


			},

			handleClose() {

				this.list[this.listIndex].extInfo.positionList = []
				this.list[this.listIndex].extInfo.lineNum = null
				this.list[this.listIndex].extInfo.levelNum = null

				this.popupShow = false
				this.formData.levelNum = null
				this.formData.lineNum = null
				this.listIndex = 0



			},

			handleOk() {
				this.listIndex = 0
				this.popupShow = false
			},

			addHjCode() {
				this.list[this.listIndex].extInfo.positionList.unshift({
					code: ''
				})
				this.$forceUpdate()
			},

			scrolltolower() {},
		}
	}
</script>

<style lang="scss" scoped>
	.title_box {
		margin-top: 20rpx;

		.name {
			font-size: 28rpx;
			font-style: normal;
			font-weight: 400;
			color: $theme-color;
			padding-left: 20rpx;

			position: relative;

			&:before {
				position: absolute;
				content: '';
				left: 0rpx;
				top: 0rpx;
				bottom: 0rpx;
				width: 4rpx;
				height: 28rpx;
				background: $theme-color;
				margin: auto;
			}


		}

		.btn_box {
			padding: 0 18rpx;
			height: 60rpx;
			background: $theme-color;
			font-size: 26rpx;
			font-style: normal;
			font-weight: 400;
			font-size: 24rpx;
			color: #fff;
			border-radius: 4rpx;

			.scan {
				width: 34rpx;
				height: 34rpx;
				margin-right: 12rpx;

			}

		}

	}


	.material {
		margin-top: 10rpx;



		.content_table {
			width: 680rpx;
			border: 2rpx solid $border-color;
			margin-bottom: 10rpx;

			.item {
				display: flex;
				border-bottom: 2rpx solid $border-color;


				.lable {
					width: 132rpx;
					text-align: center;
					background-color: #F7F9FA;
					font-size: 26rpx;
					border-right: 2rpx solid $border-color;
					flex-shrink: 0;
				}

				.lable150 {
					width: 156rpx !important;
					font-size: 24rpx;
				}

				.ww80 {
					width: 80rpx;
				}

				.content {
					width: 518rpx;
					min-height: 64rpx;
					font-size: 28rpx;
					line-height: 28rpx;
					font-style: normal;
					font-weight: 400;
					padding: 18rpx 8rpx;
					box-sizing: border-box;
					word-wrap: break-word;
					flex-grow: 1 !important;


					.unit {
						padding: 0 4rpx;
						font-size: 24rpx;
						color: #404446;
					}

				}


				.pd4 {
					padding: 4rpx 8rpx;
				}



				&:last-child {
					border-bottom: none;
				}
			}

			.ww50 {
				width: 50%;

			}

			.ww55 {
				width: 55%;
			}

			.ww45 {
				width: 45%;
			}
		}
	}



	.search_list {
		min-height: 100rpx;
		width: 96vw;
		padding: 0 8rpx;

		/deep/ .u-form-item__body {
			padding: 6rpx 0rpx !important;
		}

	}




	.content_table2 {
		width: 100%;
		margin-top: 6rpx;

		.row {
			width: 100%;


			.item {

				color: #404446;
				font-size: 28rpx;
				padding-left: 12rpx;
				padding-right: 6rpx;

			}

			.color157 {
				color: $theme-color;
			}

			.ww40 {
				width: 40%;
			}

			.ww30 {
				width: 30%;
			}




		}

		.head {
			height: 64rpx;
			background: #F7F9FA;
			border-top: 2rpx solid #E3E5E5;
			border-left: 2rpx solid #E3E5E5;
			box-sizing: border-box;

			.item {
				height: 64rpx;
				line-height: 64rpx;
				border-right: 2rpx solid #E3E5E5;
				box-sizing: border-box;
				font-size: 24rpx;
			}
		}



		.tr {
			border-top: 2rpx solid #E3E5E5;
			border-left: 2rpx solid #E3E5E5;
			box-sizing: border-box;

			.item {
				font-size: 24rpx;
				min-height: 64rpx;
				display: flex;
				align-items: center;
				border-right: 2rpx solid #E3E5E5;
				box-sizing: border-box;
				white-space: normal;
				word-break: break-all;

			}

			&:last-child {
				border-bottom: 2rpx solid #E3E5E5;

			}
		}
	}


	.z_list {
		max-height: 500rpx;
	}

	.content_num {
		display: flex;
		align-items: center;
		padding: 0 4rpx;

		/deep/ .uni-input-input {
			border: 2rpx solid #F0F8F2;
			background: #F0F8F2;
			color: $theme-color;
		}


	}
</style>