<template>
	<view class="">
		<view class="fllow_form">
			<view><text>*</text>请假类型</view>
			<picker @change="changeType" :range="arr" :value="arrIndex">
				<view class="form_right">
					<view :class="arr[arrIndex] ? 'valueActive' : '' ">{{arr[arrIndex] ? arr[arrIndex] : '请假类型'}}</view>
					<view class="iconfont icon-arrows_right"></view>
				</view>
			</picker>
		</view>
		<view class="fllow_form">
			<view><text>*</text>开始时间</view>
			<picker @change="changeStartTime" @columnchange="changeColumn" mode="multiSelector" :range="dateTimeArray" :value="dateTime">
				<view class="form_right">
					<view :class="start_time ? 'valueActive' : '' ">{{start_time ? start_time : '开始时间'}}</view>
					<view class="iconfont icon-arrows_right"></view>
				</view>
			</picker>
		</view>
		<view class="fllow_form">
			<view><text>*</text>结束时间</view>
			<picker @change="changeEndTime" @columnchange="changeColumn" mode="multiSelector" :range="dateTimeArray" :value="dateTime">
				<view class="form_right">
					<view :class="end_time ? 'valueActive' : '' ">{{end_time ? end_time : '结束时间'}}</view>
					<view class="iconfont icon-arrows_right"></view>
				</view>
			</picker>
		</view>
		<view class="fllow_form">
			<view><text>*</text>请假时长</view>
			<view class="form_right">
				<input type="digit" :class="hour ? 'valueActive' : '' " class="rightinput" placeholder="请假时长(小时)" v-model="hour">
				<!-- <view :class="hour ? 'valueActive' : '' ">{{hour ? hour : '请假时长(小时)'}}</view> -->
				<view class="iconfont icon-arrows_right"></view>
			</view>
		</view>
		<view class="fllow_area">
			<view class="area_head">
				<text class="b_color">*</text>请假事由
			</view>
			<textarea
				maxlength="-1" 
				:class="remarks ? 'valueActive' : '' " 
				v-model="remarks"
				placeholder="请假事由" 
				placeholder-style="color:#999;font-size:32rpx;" />
		</view>
		<!-- 上传图片 -->
		<upload-image
			:imgList="imgList" 
			@uploadImg="uploadImg" 
			@delImg="delImg"
			:flag="false"
		></upload-image>
		
		
		<!-- 固定审批 -->
		<fixed-approval v-if="approvalPro.status == 1" :list="approvalPro.stepList"></fixed-approval>
		<!-- 审核信息 -->
		<examine-template v-if="approvalPro.status == 0" :remindPeople="remindPeople" @delExamine="delRemind"></examine-template>
		<view id="btn" class="btn_g bg-blue button-hover round" @click="$noMultipleClicks(toSave)">
			保存
		</view>
		
	</view>
</template>

<script>
	import fixedApproval from '@/components/fixedApproval.vue'
	import { netApprovalProcess, netApplyLeave, netLeaveDuration } from '@/api/index.js'
	import { dateTimePicker } from '@/util/dateTimePicker.js'
	import uploadImage from "@/components/uploadImg/index.vue"
	import { commonF } from '@/common/common'
	
	export default{
		mixins:[commonF],
		components:{
			fixedApproval,
			uploadImage
		},
		data() {
			return{
				noClick: true, //防止  重复点击
				arr:['年假', '事假', '病假', '调休假', '婚假', '产假', '陪产假', '其他'],
				arrIndex:null,
				start_time:'',
				end_time:'',
				hour:'',
				remarks:'',
				imgList:[],
				approvalPro:{},
				dateTimeArray: [],
				dateArr: [],
				dateTime: [],
				remindPeople:[],
				remindType:'leave',
			}
		},
		onLoad() {
			this.getProcess()
			this.initTime()
		},
		methods:{
			changeType(e) {
				this.arrIndex = e.detail.value
			},
			//图片
			uploadImg(obj){
				this.imgList.push(obj)
			},
			delImg(index) {
				this.imgList.splice(index,1)
			},
			changeStartTime(e) {
				this.start_time = this.handleTime(e.detail.value)
				if(this.start_time && this.end_time){
					this.handleDuration()
				}
			},
			changeEndTime(e) {
				this.end_time = this.handleTime(e.detail.value)
				if(this.start_time && this.end_time){
					this.handleDuration()
				}
			},
			handleDuration(){
				let params = {
					start_time:this.start_time,
					end_time:this.end_time
				}
				netLeaveDuration(params).then(res=>{
					//this.hour = res.data.hour
				})
			},
			withData(param) {
				return param < 10 ? '0' + param : '' + param;
			},
			initTime() {
				let date = new Date()
				let endYear = date.getFullYear()
				let mont = this.withData(date.getMonth() + 1)
				let day = this.withData(date.getDate())
				let hour = this.withData(date.getHours())
				let minu = this.withData(date.getMinutes())
				let seco = this.withData(date.getSeconds())
				// 获取完整的年月日 时分秒，以及默认显示的数组
				let obj = dateTimePicker();
				// 精确到分的处理，将数组的秒去掉
				let lastArray = obj.dateTimeArray.pop();
				let lastTime = obj.dateTime.pop();
				let lastDate = obj.dateArray.pop()
				this.dateTimeArray = obj.dateTimeArray
				this.dateArr = obj.dateArray
				this.dateTime = obj.dateTime
			},
			changeColumn(e) {
				let index = e.detail.column
				let value = e.detail.value
				if (index == 1) {
					let month = this.dateArr[index][value]
					let date = new Date();
					let endYear = date.getFullYear();
					let str = endYear + '-' + month + '-' + '01' + ' ' + '00' + ':' + '00' + ':' + '00'
					let obj = dateTimePicker();
					
					// 精确到分的处理，将数组的秒去掉
					let lastArray = obj.dateTimeArray.pop();
					let lastTime = obj.dateTime.pop();
					let lastDate = obj.dateArray.pop()
					this.dateTimeArray = obj.dateTimeArray
					this.dateArr = obj.dateArray
					this.dateTime = obj.dateTime
				}
			},
			handleTime(arr) {
				let year = this.dateArr[0][arr[0]]
				let month = this.dateArr[1][arr[1]]
				let day = this.dateArr[2][arr[2]]
				let hour = this.dateArr[3][arr[3]]
				let minu = this.dateArr[4][arr[4]]
				let str = year + '-' + month + '-' + day + ' ' + hour + ':' + minu
				return str
			},
			//审批流程
			getProcess() {
				netApprovalProcess({type:'leave'}).then(res=>{
					this.approvalPro = res.data
				})
			},
			toSave() {
				if(!this.arr[this.arrIndex]){
					uni.showToast({
						title:'请选择请假类型',
						icon:'none'
					})
					return
				}
				if(!this.start_time){
					uni.showToast({
						title:'请选择请假开始时间',
						icon:'none'
					})
					return
				}
				if(!this.end_time){
					uni.showToast({
						title:'请选择请假结束时间',
						icon:'none'
					})
					return
				}
				if(this.hour <= 0){
					uni.showToast({
						title:'请填写请假时长',
						icon:'none'
					})
					return
				}
				if(!this.remarks){
					uni.showToast({
						title:'请填写请假事由',
						icon:'none'
					})
					return
				}
				if (this.remindPeople.length == 0 && this.approvalPro.status == 0) {
					uni.showToast({
						title: '请选择审核人',
						icon: 'none'
					})
					return
				}
				let b = []
				this.remindPeople.forEach(ele => {
					b.push(ele.id)
				})
				
				let arr = []
				this.imgList.forEach(ele=>{
					arr.push(ele.id)
				})
				
				let params = {
					type:this.arr[this.arrIndex],
					start_time:this.start_time,
					end_time:this.end_time,
					remarks:this.remarks,
					hour:this.hour,
					file_ids:arr.join(','),
					flow_staff_ids:this.approvalPro.status == 0 ? b.join(',') : ''
				}
				netApplyLeave(params).then(res=>{
					uni.showToast({
						title:res.msg,
						icon:'none'
					})
					setTimeout(()=>{
						uni.navigateBack({
							delta:1
						})
					},2000)
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
	.fllow_form {
		display: flex;
		justify-content: space-between;
		align-items: center;
		background-color: #fff;
		border-bottom: 1rpx solid #EAEAEA;
		padding: 30rpx 20rpx;
		color: #999;
		font-size: 32rpx;
		.form_right {
			display: flex;
			align-items: center;
			color: #999;
			:first-child {
				width: 450rpx;
				text-align: right;
			}
			image {
				width: 40rpx;
				height: 40rpx;
				margin: 28rpx 5rpx 0 0;
			}
		}
		.theme {
			color: #5ca9fe;
		}
		text {
			color: #f00;
			margin-left: 10rpx;
		}
		.form_input {
			input {
				text-align: right;
				margin-right: 10rpx;
			}
		}
	}
	.fllow_area {
		background-color: #fff;
		padding: 30rpx 20rpx;
		padding-bottom: 30rpx;
		color: #999;
		font-size: 32rpx;
		.area_head {
			margin-bottom:24rpx;
		}
		textarea {
		    width: 80%;
		    height: 300rpx;
		    padding: 30rpx;
		    background: #f8f8f8;
		    margin: 0 auto;
		}
	}
</style>