<template>
	<view class="shiftAdd">
		<view class="container">
			<uni-steps :options="stepList" :active="active" />
			<view class="line"></view>
			<!-- 工班信息 -->
			<template v-if="active == 0">
				<view class="ul ul1">
					<view class="li">
						<p>船名：</p>
						<text>{{shipInfo.voyageScheduleDataList[0].spmName}}</text>
					</view>
					<view class="li">
						<p><text class="required">*</text>航次：</p>
						<uni-data-select v-model="hcValue" :localdata="hcList" @change="hcChange"></uni-data-select>
					</view>
					<view class="li">
						<p>进出口：</p>
						<text>{{shipInfo.voyageScheduleDataList[0].importExportFlagName}}</text>
					</view>
					<view class="li">
						<p>贸易类型：</p>
						<text>{{shipInfo.voyageScheduleDataList[0].tradeTypeName}}</text>
					</view>
					<view class="li">
						<p><text class="required">*</text>装卸类型：</p>
						<uni-data-select v-model="zxValue" :localdata="zxList" @change="zxChange"></uni-data-select>
					</view>
				</view>
				<view class="widthLi" v-for="(item,index) in ulList1" :key="index+'ul'">
					<view class="ulTop"><text @click="ulAdd1">添加工班</text><text v-if="index > 0"
							@click="delGb(index)">删除</text><van-icon name="arrow-down" /></view>
					<view class="ul">
						<view class="li">
							<p class="liTitle"><text class="required">*</text>工班：</p>
							<uni-data-select v-model="item.gbValue" :localdata="gbList"
								@change="gbChange(item,index)"></uni-data-select>
						</view>
						<view class="li">
							<p class="liTitle"><text class="required">*</text>作业时间 ：</p>
							<uni-datetime-picker v-model="item.datetime" type="datetimerange" rangeSeparator="-"
								@change="changeLog(item)" />
						</view>
						<view class="widthLi" v-for="(item2,index2) in item.ulList2" :key="index2+'ul2'">
							<view class="ulTop"><text @click="ulAdd2(index)">添加工班信息</text></text><text v-if="index2 > 0"
									@click="delGb2(index,index2)">删除</text><van-icon name="arrow-down" /></view>
							<view class="ul">
								<view class="li">
									<p class="liTitle"><text class="required">*</text>车型：</p>
									<uni-data-select v-model="item2.cxValue" :localdata="cxList"
										@change="cxChange(item,index,item2,index2)"></uni-data-select>
								</view>
								<view class="li">
									<p><text class="required">*</text>数量：</p>
									<uni-number-box @change="numChange" v-model="item2.numValue" />
								</view>
								<view class="li">
									<p class="liTitle"><text class="required">*</text>装卸方式：</p>
									<uni-data-select v-model="item2.fsValue" :localdata="fsList"
										@change="fsChange(item,index,item2,index2)"></uni-data-select>
								</view>
								<view class="li widthLi">
									<p class="liTitle">备注：</p>
									<uni-easyinput type="textarea" autoHeight v-model="item2.notes"
										placeholder="请输入任务描述(200字以内)" maxlength="200"></uni-easyinput>
								</view>
							</view>
						</view>
					</view>
				</view>
			</template>

			<!-- 翻仓信息 -->
			<template v-if="active == 1">
				<view v-for="(item,index) in fcUlList" :key="index + 'fc'">
					<view class="ulTop"><text @click="fcAdd">添加翻仓类型</text><text v-if="index > 0"
							@click="delFc(index)">删除</text><van-icon name="arrow-down" /></view>
					<view class="ul fcUl">
						<view class="li">
							<p class="liTitle"><text class="required">*</text>翻仓类型：</p>
							<uni-data-select v-model="item.fcValue" :localdata="fcList"
								@change="fcChange(item,index)"></uni-data-select>
						</view>
					</view>
					<view v-for="(item2,index2) in item.fcUlList2" :key="index2 + 'fc2'">
						<view class="ulTop"><text @click="fcAdd2(index)">添加翻仓信息</text></text><text v-if="index2 > 0"
								@click="delFc2(index,index2)">删除</text><van-icon name="arrow-down" /></view>
						<view class="ul ul2 fcUl2">
							<view class="li">
								<p class="liTitle"><text class="required">*</text>翻舱起点位置：</p>
								<uni-easyinput v-model="item2.qdValue" placeholder="请输入翻舱起点位置"></uni-easyinput>
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>翻舱终点位置：</p>
								<uni-easyinput v-model="item2.zdValue" placeholder="请输入翻舱终点位置"></uni-easyinput>
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>工班：</p>
								<uni-data-select v-model="item2.gbValue" :localdata="gbList"
									@change="fcgbChange(index,item2,index2)"></uni-data-select>
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>作业时间 ：</p>
								<uni-datetime-picker v-model="item2.datetime" type="datetimerange" rangeSeparator="-"
									@change="changeLog(item2)" />
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>数量：</p>
								<uni-number-box v-model="item2.numValue" />
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>体积：</p>
								<uni-number-box v-model="item2.tjValue" />
							</view>
							<view class="li">
								<p class="liTitle"><text class="required">*</text>重量：</p>
								<uni-number-box v-model="item2.zlValue" />
							</view>
						</view>
					</view>
				</view>
			</template>

			<!-- 其他信息 -->
			<template v-if="active == 2">
				<view class="otherWork">
					<p class="title">辅助作业</p>
					<view class="ul">
						<view class="li">
							<p class="liTitle"><text class="required">*</text>技术工人：</p>
							<uni-number-box v-model="otherObj.jsWorker" />
						</view>
						<view class="li">
							<p class="liTitle"><text class="required">*</text>普通工人：</p>
							<uni-number-box v-model="otherObj.ptworker" />
						</view>
						<view class="li">
							<p class="liTitle"><text class="required">*</text>作业时间 ：</p>
							<uni-datetime-picker v-model="otherObj.datetime" type="datetimerange" rangeSeparator="-"
								@change="changeLog(otherObj)" />
						</view>
						<view class="li">
							<p class="liTitle"><text class="required">*</text>重量：</p>
							<uni-number-box v-model="otherObj.zlValue" />
						</view>
						<view class="li">
							<p class="liTitle"><text class="required">*</text>体积：</p>
							<uni-number-box v-model="otherObj.tjValue" />
						</view>
						<view class="li">
							<p class="liTitle">描述：</p>
							<uni-easyinput type="textarea" autoHeight v-model="otherObj.describe"
								placeholder="请输入任务描述(200字以内)" maxlength="200"></uni-easyinput>
						</view>
					</view>
					<p class="title">待工作业</p>
					<view class="ul">
						<view class="li">
							<p class="liTitle">描述：</p>
							<uni-easyinput type="textarea" autoHeight v-model="otherObj.dgWork"
								placeholder="请输入任务描述(200字以内)" maxlength="200"></uni-easyinput>
						</view>
					</view>
					<p class="title">作业备注</p>
					<view class="ul">
						<view class="li">
							<p class="liTitle">描述：</p>
							<uni-easyinput type="textarea" autoHeight v-model="otherObj.notes"
								placeholder="请输入任务描述(200字以内)" maxlength="200"></uni-easyinput>
						</view>
					</view>
				</view>
			</template>
			<view class="btnList">
				<van-button type="default" @click="cancel">取消</van-button>
				<van-button type="info" @click="back" v-if="active > 0">上一步</van-button>
				<van-button type="info" @click="save" v-if="active == 2">保存</van-button>
				<van-button type="info" @click="next" v-if="active < 2">下一步</van-button>
			</view>
		</view>
	</view>
</template>

<script>
	import sqlite from "../../common/sqlite.js"
	export default {
		data() {
			return {
				shipInfo: {
					voyageScheduleDataList: [{
						spmName: "",
						importExportFlagName: "",
						tradeTypeName: ""
					}]
				},
				obj: {},
				dataInfo: {},
				shiftRowIndex: 0,
				active: 0,
				stepList: [{
						title: '工班信息'
					},
					{
						title: '翻舱信息'
					},
					{
						title: '其他信息'
					}
				],

				// 工班信息
				// 航次下拉框
				hcValue: "",
				hcTextValue: "",
				hcList: [],
				// 装卸类型下拉框
				zxValue: "",
				zxTextValue: "",
				zxList: [],
				ulList1: [{
					gbValue: "",
					gbTextValue: "",
					datetime: ['', ''],
					startTime: "",
					endTime: "",
					ulList2: [{
						cxValue: "",
						cxTextValue: "",
						numValue: 0,
						fsValue: "",
						fsTextValue: "",
						notes: "",
					}],
				}],
				// 工班下拉框
				gbList: [],
				// 车型下拉
				cxList: [],
				// 装卸方式下拉
				fsList: [],

				// 翻仓信息
				// 翻仓类型下拉
				fcList: [],
				fcUlList: [{
					fcValue: "",
					fcTextValue: "",
					fcUlList2: [{
						qdValue: "",
						zdValue: "",
						gbValue: "",
						gbTextValue: "",
						datetime: ['', ''],
						startTime: "",
						endTime: "",
						numValue: 0,
						tjValue: 0,
						zlValue: 0
					}],
				}],

				// 其他信息
				otherObj: {
					jsWorker: 0,
					ptworker: 0,
					datetime: ['', ''],
					startTime: "",
					endTime: "",
					zlValue: 0,
					tjValue: 0,
					describe: "",
					dgWork: "",
					notes: "",

					// 下拉数据
					optionData: [],
				}
			}
		},
		onLoad(options) {
			if ('params' in options) {
				// 获取传递的对象参数，使用decodeURIComponent解码，并转为对象
				this.obj = JSON.parse(decodeURIComponent(options.params))
			}
		},
		mounted() {
			this.executeSql1('shipOption')
			if (this.obj.state == 'edit') {
				this.editData();
			}
		},
		methods: {
			// 查
			executeSql1(tableName) {
				let sql = `select * from ${tableName}`
				sqlite.executeSqlCeshi(sql).then((value) => {
					// 在resolve时执行的回调函数
					this.optionData = value
					this.getShip()
				}).catch((error) => {
					// 在reject时执行的回调函数
					console.error(error);
				});
			},
			// 获取船只信息
			getShip() {
				this.shipInfo = uni.getStorageSync('shipInfo')
				// 航次下拉数据
				let hcOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'vvyList') {
						hcOption.push(v)
					}
				})
				hcOption.forEach((v, index) => {
					this.hcList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
				// 装卸类型数据
				let zxOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'handTypeList') {
						zxOption.push(v)
					}
				})
				zxOption.forEach((v, index) => {
					this.zxList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
				// 工班数据
				let gbOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'shiftList') {
						gbOption.push(v)
					}
				})
				gbOption.forEach((v, index) => {
					this.gbList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
				// 车型数据
				let cxOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'carList') {
						cxOption.push(v)
					}
				})
				cxOption.forEach((v, index) => {
					this.cxList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
				// 装卸方式
				let fsOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'loadTypeList') {
						fsOption.push(v)
					}
				})
				fsOption.forEach((v, index) => {
					this.fsList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
				// 翻仓类型
				let fcOption = []
				this.optionData.forEach((v, index) => {
					if (v.dictionariesName == 'turnoverTypeList') {
						fcOption.push(v)
					}
				})
				fcOption.forEach((v, index) => {
					this.fcList.push({
						text: v.ptrDesc,
						value: v.ptrCode
					})
				})
			},
			//状态为编辑获取数据
			editData() {
				this.dataInfo = uni.getStorageSync('shiftRow')
				this.shiftRowIndex = uni.getStorageSync('shiftRowIndex')
				this.hcValue = this.dataInfo.vvyId
				this.hcTextValue = this.dataInfo.vvyName
				this.zxValue = this.dataInfo.loadType
				this.zxTextValue = this.dataInfo.zxTextValue
				this.ulList1 = this.dataInfo.shiftList
				this.fcUlList = this.dataInfo.fcList
				this.otherObj = this.dataInfo.otherList
			},
			// 工班信息相关
			// 航次下拉
			hcChange(e) {
				this.hcValue = e;
				this.hcList.forEach(v => {
					if (v.value == e) {
						this.hcTextValue = v.text
					}
				})
			},
			// 装卸类型下拉
			zxChange(e) {
				this.zxValue = e;
				this.zxList.forEach(v => {
					if (v.value == e) {
						this.zxTextValue = v.text
					}
				})
			},
			// 工班信息添加
			ulAdd1() {
				this.ulList1.push({
					datetime: ['', ''],
					gbValue: "",
					gbTextValue: "",
					ulList2: [{
						cxValue: "",
						cxTextValue: "",
						numValue: 0,
						fsValue: "",
						fsTextValue: "",
						notes: "",
					}],
				})
			},
			ulAdd2(index) {
				this.ulList1[index].ulList2.push({
					cxValue: "",
					numValue: 0,
					fsValue: "",
					notes: "",
				})
			},
			// 工班下拉
			gbChange(item, index) {
				this.ulList1[index].gbValue = item.gbValue
				this.gbList.forEach(v => {
					if (v.value == item.gbValue) {
						item.gbTextValue = v.text
					}
				})
			},
			// 作业时间
			changeLog(item) {
				item.startTime = item.datetime[0].slice(0, item.datetime[0].length - 3)
				item.endTime = item.datetime[1].slice(0, item.datetime[1].length - 3)
			},
			// 工班信息删除
			delGb(index) {
				this.ulList1.splice(index, 1)
			},
			delGb2(index, index2) {
				this.ulList1[index].ulList2.splice(index2, 1)
			},
			// 车型下拉
			cxChange(item, index, item2, index2) {
				this.ulList1[index].ulList2[index2].cxValue = item2.cxValue
				this.cxList.forEach(v => {
					if (v.value == item2.cxValue) {
						item2.cxTextValue = v.text
					}
				})
			},
			// 数量
			numChange(val) {},
			// 装卸方式下拉
			fsChange(item, index, item2, index2) {
				this.ulList1[index].ulList2[index2].fsValue = item2.fsValue
				this.fsList.forEach(v => {
					if (v.value == item2.fsValue) {
						item2.fsTextValue = v.text
					}
				})
			},

			// 翻仓信息
			// 翻仓类型下拉
			fcChange(item, index) {
				this.fcUlList[index].fcValue = item.fcValue
				this.fcList.forEach(v => {
					if (v.value == item.fcValue) {
						item.fcTextValue = v.text
					}
				})
			},
			// 翻仓工班
			fcgbChange(index, item2, index2) {
				this.fcUlList[index].fcUlList2[index2].gbValue = item2.gbValue
				this.gbList.forEach(v => {
					if (v.value == item2.gbValue) {
						item2.gbTextValue = v.text
					}
				})
			},
			// 翻仓add
			fcAdd() {
				this.fcUlList.push({
					fcValue: "",
					fcTextValue: "",
					fcUlList2: [{
						qdValue: "",
						zdValue: "",
						gbValue: "",
						gbTextValue: "",
						datetime: ['', ''],
						startTime: "",
						endTime: "",
						numValue: 0,
						tjValue: 0,
						zlValue: 0
					}],
				})
			},
			fcAdd2(index) {
				this.fcUlList[index].fcUlList2.push({
					qdValue: "",
					zdValue: "",
					gbValue: "",
					gbTextValue: "",
					datetime: ['', ''],
					startTime: "",
					endTime: "",
					numValue: 0,
					tjValue: 0,
					zlValue: 0
				})
			},
			// 翻仓删除
			delFc(index) {
				this.fcUlList.splice(index, 1)
			},
			delFc2(index, index2) {
				this.fcUlList[index].fcUlList2.splice(index2, 1)
			},

			// 取消
			cancel() {
				uni.setStorageSync('tabsType', 1);
				uni.navigateTo({
					url: '/pages/shipWork/mixWork'
				})
			},
			// 上一步
			back() {
				this.active = this.active - 1
			},
			// 下一步
			next() {
				this.active = this.active + 1
			},
			// 保存
			save() {
				let addShiftArr = uni.getStorageSync('addShiftArr')
				let addShiftObj = {
					vvyName: this.hcTextValue,
					vvyId: this.hcValue,
					loadTypeName: this.zxTextValue,
					loadType: this.zxValue,
					shiftList: this.ulList1,
					fcList: this.fcUlList,
					otherList: this.otherObj
				}
				if (this.obj.state == 'add') {
					if (addShiftArr != "") {
						addShiftArr.push(addShiftObj)
						uni.setStorageSync('addShiftArr', addShiftArr);
					} else {
						addShiftArr = []
						addShiftArr.push(addShiftObj)
						uni.setStorageSync('addShiftArr', addShiftArr);
					}
				} else {
					addShiftArr[this.shiftRowIndex] = addShiftObj;
					uni.setStorageSync('addShiftArr', addShiftArr);
				}
				uni.setStorageSync('tabsType', 1);
				uni.navigateTo({
					url: '/pages/shipWork/mixWork'
				})
			},
			onBackPress(event) {
				uni.setStorageSync('tabsType', 1);
				uni.navigateTo({
					url: '/pages/shipWork/mixWork'
				})
				return true;
			},
		}
	}
</script>

<style lang="less" scoped>
	.shiftAdd {
		.container {
			padding: 30px 20px;
			background-color: #fff;

			/deep/.uni-steps__row-title {
				font-size: 20px;
			}

			/deep/.uni-icons {
				font-size: 20px !important;
			}

			/deep/.uni-steps__row-container {
				margin-top: 10px;
			}

			.line {
				width: 100%;
				height: 10px;
				background: #f2f2f2;
				margin: 20px 0;
			}

			.ulTop {
				width: 100%;
				padding: 20px;
				text-align: right;
				border-top: 1px solid #ccc;


				text {
					color: #2979ff;
					margin-right: 10px;
				}

				text:nth-of-type(2) {
					color: red;
				}
			}

			.fcUl {
				.li {
					border: none;
					margin-bottom: 0;

					.liTitle {
						width: 120px;
					}
				}
			}

			.fcUl2 {
				.liTitle {
					width: 120px;
				}
			}

			.ul {
				display: flex;
				flex-wrap: wrap;
				justify-content: space-between;
				margin-bottom: 20px;

				.li {
					width: 44%;
					border-top: 1px solid #ccc;
					border-bottom: 1px solid #ccc;
					display: flex;
					padding: 10px 20px;
					line-height: 35px;
					margin-bottom: 20px;

					.required {
						color: red;
						margin-right: 5px;
					}

					.liTitle {
						min-width: 85px;
						text-align: right;
					}

					/deep/.uni-numbox {
						border: 1px solid #ccc;
						box-sizing: border-box;
					}

					/deep/.uni-numbox-btns {
						border-right: 1px solid #ccc;
						border-left: 1px solid #ccc;
						padding: 0 14px;
						box-sizing: border-box;
					}

					/deep/.uni-numbox__value {
						width: 100px;
						height: 35px;
						line-height: 35px;
						background-color: #fff !important;
					}
				}

				.widthLi {
					width: 100%;
				}
			}

			.ul2 {
				padding: 0;
				margin-top: 0;

				.li {
					border: none;
					margin-bottom: 0;
				}
			}

			.otherWork {
				padding: 0 20px;

				.title {
					font-size: 16px;
					font-weight: bold;
					padding-left: 10px;
					border-left: 5px solid #2979ff;
					margin-bottom: 20px;
				}

				.ul {
					.li {
						border: none;
					}

					.li:last-child {
						width: 100%;
					}
				}
			}

			.btnList {
				display: flex;
				justify-content: center;
				margin-top: 20px;

				/deep/ .van-button {
					margin: 30px 20px;
					width: 120px;
					height: 50px;
				}
			}
		}
	}
</style>