Newer
Older
gdtMimiProgram / pages / information / information.vue
MrTan on 21 Nov 2022 6 KB 注册页面接口联调
<template>
	<view class="information">
		<view class="form">
			<u--form labelPosition="left" :model="callerInfo" :rules="rules"  ref="form1" v-if="isForm" >
					<u-form-item label="访客姓名" prop="visitorName" labelWidth="100" borderBottom>
						<u--input v-model="callerInfo.visitorName" border="none" placeholder="请输入访客姓名"></u--input>
					</u-form-item>
					<u-form-item label="访客身份证" prop="visitorIdCard" borderBottom labelWidth="100">
						<u--input v-model="callerInfo.visitorIdCard" border="none" placeholder="请输入访客身份证"></u--input>
					</u-form-item>
					<u-form-item label="访客联系方式" prop="visitorPhone" borderBottom labelWidth="100">
						<u--input v-model="callerInfo.visitorPhone" border="none" placeholder="请输入访客联系方式"></u--input>
					</u-form-item>
					<u-form-item label="访客目的" prop="visitReason" borderBottom labelWidth="100">
						<u-button   class="arrow-right-icon"   @click="show=true">{{callerInfo.visitReason || '请选择访客目的'}}
						<u-icon name="arrow-right" ></u-icon>
						</u-button>
					</u-form-item>
					<u-form-item label="访客楼栋" prop="visitPosition" borderBottom labelWidth="100">
						<u-button  class="arrow-right-icon"  @click="buildingShow=true">{{callerInfo.visitPosition || '请选择访客楼栋'}}
						<u-icon name="arrow-right" ></u-icon>
						</u-button>
					</u-form-item>
					<u-form-item label="访客时间" prop="inTime" borderBottom labelWidth="100">
						<u-button  @click="isTimeShow=true" >
							<view style="font-size: 24rpx;">{{`开始时间:${callerInfo.inTime}`}}</view>
							<view style="font-size: 24rpx;">{{`结束时间:${callerInfo.outTime}`}}</view>
						</u-button>
					</u-form-item>
					<u-form-item label="申请者工号" prop="staffCode" borderBottom labelWidth="100">
						<u--input v-model="callerInfo.staffCode" border="none" placeholder="请输入申请者工号"></u--input>
					</u-form-item>
					<u-form-item label="申请者名字"  borderBottom labelWidth="100">
						<u--input v-model="callerInfo.staffName" border="none" placeholder="请输入申请者姓名"></u--input>
					</u-form-item>
					<u-form-item label="备注"  borderBottom labelWidth="100">
						<u--input v-model="callerInfo.remarks" border="none" placeholder="请输入备注"></u--input>
					</u-form-item>
				</u--form>
				<view v-else class="informationSubmit">
					<view class="informationSubmit-box">
						<u-icon name="checkbox-mark" color="#fff" size="72"></u-icon>
					</view>
					<view class="informationSubmit-text">
					 信息提交成功,请等待物业管理员处理。
					</view>
				</view>
				<u-picker :show="show" :columns="columns" @close="show=false" @confirm="getPurpose"></u-picker>
				<u-picker :show="buildingShow" :columns="buildingColumns" @close="buildingShow=false" @confirm="getBuilding">
				</u-picker>
				<u-datetime-picker
					:show="isTimeShow"
					v-model="callerInfo.outTime"
					mode="datetime"
					title="请选择结束时间"
					:formatter="formatter"
					:minDate="minTime"
					@cancel="closeTime"
					@change="change"
					@confirm="confirmTime"
			></u-datetime-picker>
				
		</view>
		<view style="margin-top: 42rpx;">
			<u-button type="error" @click="submit" >{{isForm ? '提交' : '完成'}}</u-button>
		</view>
	</view>
</template>

<script>
	import {getSubmit} from '@/api/information.js'
	export default {
	data(){
		return{
			callerInfo: {
			visitorName: '',
			visitorIdCard: '',
			visitorPhone: '',
			visitReason: '',
			visitPosition: '',
			inTime: Number(new Date()),
			staffCode: '',
			staffName: '',
			remarks: '',
			outTime:Number(new Date()) 
		},
		minTime:Number(new Date()),
		rules:{
			visitorName:[{
						required: true,
						message: '请填写访客姓名',
						trigger: ['blur', 'change'],
					}],
					visitorIdCard:[{
						required: true,
						message: '请填写访客身份证',
						trigger: ['blur', 'change'],
					}],
					visitorPhone:[{
						required: true,
						message: '请填写访客联系方式',
						trigger: ['blur', 'change'],
					}],
					staffCode:[{
						required: true,
						message: '请填写申请者工号',
						trigger: ['blur', 'change'],
					}]
		},
		show:false,
		isForm:true,
		isTimeShow:false,
		buildingShow:false,
		columns:[['商务会议','安装维修','其他事宜']],
		buildingColumns:[['一期主楼','二期主楼','录制楼','1600演播厅']]
		}
	},
	onLoad(){
		this.callerInfo.inTime = this.shijianc(this.callerInfo.inTime)
		this.callerInfo.outTime = this.shijianc(this.callerInfo.outTime)
	},
	methods:{
		change(e){
			console.log(e,'111')
		},
		//点击提交访客记录
		async submit(){
			console.log(this.callerInfo)

			if(this.isForm){
				const res = await getSubmit(this.callerInfo)
				console.log(res)
				this.isForm = false
			}else {
				wx.switchTab({
					url: `/pages/index/index`,  
				});
				this.isForm = true
			}
		},
		//确定选择时间
	   async confirmTime(e){
		this.callerInfo.outTime = await this.shijianc(e.value)
		this.isTimeShow = false
		},
		//取消选择时间
		closeTime(){
			this.isTimeShow = false
		},
		 shijianc(time) {
		      let date = new Date(time)
		      let Y = date.getFullYear() + '-'
		      let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
		      let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
		      let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
		      let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
		      let s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds())
		      return Y + M + D + h + m + s
		    },
		//格式化时间
		formatter(type, value) {
			if (type === 'year') {
				return `${value}年`
			}
			if (type === 'month') {
				return `${value}月`
			}
			if (type === 'day') {
				return `${value}日`
			}
			return value
		},
		//获取访问目的
		  getPurpose(val){
		  console.log(val)
		  this.callerInfo.visitReason = val.value[0]
		  this.show = false
	  },
	  //获取访问楼栋
	  getBuilding(val){
		  this.callerInfo.visitPosition = val.value[0]
		  this.buildingShow = false
	  }
	},
	}
</script>

<style scoped lang="scss">
	.information{
		padding: 22rpx;
		.form{
			padding: 0 32rpx 0;
			border-radius: 10rpx;
			background-color: #fff;	
		}
	}
	.informationSubmit{
		display: flex;
		justify-content: center;
		align-items: center;
		width: 100%;
		height: 680rpx;
		.informationSubmit-box{
			display: flex;
			justify-content: center;
			align-items: center;
			border-radius: 150rpx;
			width: 300rpx;
			height: 300rpx;
			background-color: #0ade13;
		}
		.informationSubmit-text{
			position: absolute;
			top: 42%;
		}
	}
	/deep/.uicon-arrow-right{
		position: absolute !important;
		right: 10rpx;
		bottom: 0;
	}
</style>