From b62578f8b43f15be89b3d14f463f11aed03e6fb9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 09 五月 2024 18:57:25 +0800
Subject: [PATCH] 最新版本

---
 h5/pages/visitorApplication/visitorApplication.vue |  196 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 164 insertions(+), 32 deletions(-)

diff --git a/h5/pages/visitorApplication/visitorApplication.vue b/h5/pages/visitorApplication/visitorApplication.vue
index ebc9fc7..9c96377 100644
--- a/h5/pages/visitorApplication/visitorApplication.vue
+++ b/h5/pages/visitorApplication/visitorApplication.vue
@@ -2,13 +2,13 @@
 	<view class="visit">
 		<view class="head">鎷滆淇℃伅</view>
 		<view class="list">
-			<view class="list_item">
+			<!-- <view class="list_item">
 				<view class="list_item_label">
 					<text>琚浜烘墜鏈�</text>
 					<text>*</text>
 				</view>
 				<view class="list_item_content">
-					<input type="number" maxlength="11" v-model="form1.phone1" placeholder="璇疯緭鍏ユ墜鏈哄彿" @blur="getUser" placeholder-style="color: #999999;" />
+					<input type="number" maxlength="11" v-model="form1.phone1" :placeholder="verify == '0' ? '杈撳叆鎵嬫満鍙峰悗鑷姩鑾峰彇' : '璇疯緭鍏ユ墜鏈哄彿'" @blur="getUser" placeholder-style="color: #999999;" />
 				</view>
 			</view>
 			<view class="list_item">
@@ -18,6 +18,16 @@
 				</view>
 				<view class="list_item_content">
 					<input type="text" placeholder="璇疯緭鍏ュ鍚�" v-model="form1.receptMemberName" @blur="getUser" placeholder-style="color: #999999;" />
+				</view>
+			</view> -->
+			<view class="list_item">
+				<view class="list_item_label">
+					<text>琚浜�</text>
+					<text>*</text>
+				</view>
+				<view class="list_item_content" @click="showName = true">
+					<text :style="{color: form1.name ? '#000000' : ''}">{{form1.name ? form1.name : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
 				</view>
 			</view>
 			<view class="list_item">
@@ -35,7 +45,7 @@
 					<text>绂诲巶鏃堕棿</text>
 					<text>*</text>
 				</view>
-				<view class="list_item_content" @click="show5 = true">
+				<view class="list_item_content" @click="openLC">
 					<text :style="{color: form1.endtime ? '#000000' : ''}">{{form1.endtime ? form1.endtime : '璇烽�夋嫨'}}</text>
 					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
 				</view>
@@ -45,18 +55,38 @@
 					<text>璁块棶闂ㄧ</text>
 					<text>*</text>
 				</view>
+				 <!-- @click="show6 = true" -->
 				<view class="list_item_content">
 					<text :style="{color: form1.doorSelectName ? '#000000' : ''}">{{form1.doorSelectName ? form1.doorSelectName : '璇烽�夋嫨'}}</text>
 					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
 				</view>
 			</view>
+			<div class="empty"></div>
 			<view class="list_item">
 				<view class="list_item_label">
 					<text>鎷滆浜嬬敱</text>
-					<text></text>
+					<text>*</text>
 				</view>
 				<view class="list_item_content">
-					<input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ユ潵璁夸簨鐢憋紝鎮ㄦ潵鍋氫粈涔堢殑" placeholder-style="color: #999999;" />
+					<input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ユ潵璁夸簨鐢�" placeholder-style="color: #999999;" />
+				</view>
+			</view>
+			<view class="list_item">
+				<view class="list_item_label">
+					<text>鏄惁鏂藉伐浣滀笟</text>
+					<text>*</text>
+				</view>
+				<view class="list_item_content">
+					<switch color="#4e99a9" style="transform:scale(0.8)" @change="constructionChange" />
+				</view>
+			</view>
+			<view class="list_item">
+				<view class="list_item_label">
+					<text>鏂藉伐鍐呭</text>
+					<text>*</text>
+				</view>
+				<view class="list_item_content">
+					<input type="text" v-model="form1.ss" placeholder="璇疯緭鍏ユ柦宸ュ唴瀹�" placeholder-style="color: #999999;" />
 				</view>
 			</view>
 			<view class="list_item">
@@ -64,8 +94,9 @@
 					<text>闅忚杞﹁締</text>
 					<text></text>
 				</view>
-				<view class="list_item_content">
-					<input type="text" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-model="form1.carNos" maxlength="8" placeholder-style="color: #999999;" />
+				<view class="list_item_content" @click="openInput(1)">
+					<text :style="{color: form1.carNos ? '#000000' : ''}">{{form1.carNos ? form1.carNos : '璇疯緭鍏ヨ溅鐗屽彿鐮�'}}</text>
+					<!-- <input type="text" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-model="form1.carNos" maxlength="8" placeholder-style="color: #999999;" /> -->
 				</view>
 			</view>
 		</view>
@@ -103,8 +134,9 @@
 		></u-datetime-picker>
 		<!-- 绂诲満鏃堕棿 -->
 		<u-datetime-picker
+			v-if="form1.starttime"
 			:show="show5"
-			:minDate="new Date().getTime()"
+			:minDate="formatTimeStamp(form1.starttime)"
 			mode="datetime"
 			@cancel="show5 = false"
 			@confirm="setoutDate"
@@ -220,13 +252,13 @@
 							<text>*</text>
 						</view>
 						<view class="adduser_list_item_ipt">
-							<input type="text" v-model="withUserList.idcardNo" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�" />
+							<input type="text" v-model="withUserList.idcardNo" maxlength="18" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�" />
 						</view>
 					</view>
 					<view class="adduser_list_item">
 						<view class="adduser_list_item_label">
 							<text>鍏徃</text>
-							<text></text>
+							<text>*</text>
 						</view>
 						<view class="adduser_list_item_ipt">
 							<input type="text" v-model="withUserList.companyName" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" />
@@ -237,8 +269,9 @@
 							<text>闅忚杞﹁締</text>
 							<text></text>
 						</view>
-						<view class="adduser_list_item_ipt">
-							<input type="text" v-model="withUserList.carNos" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="璇疯緭鍏ヨ溅鐗屽彿" />
+						<view class="adduser_list_item_ipt" @click="openInput(2)">
+							<text :style="{color: withUserList.carNos ? '#000000' : ''}">{{withUserList.carNos ? withUserList.carNos : '璇疯緭鍏ヨ溅鐗屽彿鐮�'}}</text>
+							<!-- <input type="text" v-model="withUserList.carNos" disabled placeholder-style="color: #999999;font-size: 28rpx;" placeholder="璇疯緭鍏ヨ溅鐗屽彿" /> -->
 						</view>
 					</view>
 					<view class="adduser_list_item">
@@ -278,13 +311,25 @@
 			</view>
 		</u-popup>
 		<u-picker keyName="name" :show="show6" :columns="columns1" @confirm="seleIdcard" @cancel="show6 = false"></u-picker>
+		<u-picker keyName="name" :show="showName" :columns="columnsNames" @confirm="selectedName" @cancel="showName = false"></u-picker>
+		<!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> -->
+		<keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" />
+		<qf-image-cropper ref="cropper" :width="280" :height="280" :radius="30" @crop="uploadImg"></qf-image-cropper>
 	</view>
 </template>
 
 <script>
+	import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue";
+	import keyboardInput from "@/components/keyboard-input/keyboard-input.vue";
+	import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue';
+	import { getDaysAfterDate } from '@/utils/utils.js'
 	export default {
 		data() {
 			return {
+				photoSrc: '',
+				type: '',
+				inputType: '',
+				showName: false,
 				show: false,
 				show1: false,
 				show2: false,
@@ -292,10 +337,18 @@
 				show4: false,
 				show5: false,
 				show6: false,
+				show7: false,
 				fileList: [],
-				columns1: [[{name: '韬唤璇�', id: 0}, {name: '娓境璇佷欢', id: 1},{name: '鎶ょ収', id: 2}]],
+				columns1: [
+					[{name: '韬唤璇�', id: 0}, {name: '娓境璇佷欢', id: 1},{name: '鎶ょ収', id: 2}],
+				],
+				columnsNames: [
+					[{name: '寮犱笁', id: 0},{name: '寮犱笁', id: 1},{name: '寮犱笁', id: 2},]
+				],
 				columns: [],
 				cars: [],
+				day: null,
+				maxTime: '',
 				carName: '',
 				personnel: [],
 				userAnswerId: '',
@@ -328,13 +381,55 @@
 				verify: ''
 			};
 		},
+		components: { tlyPictureCut, keyboardInput, QfImageCropper },
 		onLoad(options) {
-			this.form = JSON.parse(options.data)
-			this.getvisit()
-			this.getVisit1()
-			this.getUserValid()
+			if (options.data) {
+				this.form = JSON.parse(options.data)
+			}
+			// this.getvisit()
+			// this.getVisit1()
+			// this.getUserValid()
 		},
 		methods: {
+			openInput(type) {
+				this.inputType = type
+				this.$refs.keyboard.open()
+			},
+			setPlate(e) {
+				if (this.inputType === 1) {
+					this.form1.carNos = e
+				} else if (this.inputType === 2) {
+					this.withUserList.carNos = e
+				}
+				this.$forceUpdate()
+				this.closeInput()
+			},
+			closeInput() {
+				this.$refs.keyboard.close()
+			},
+			constructionChange(e) {
+				console.log(e.detail.value);
+			},
+			uploadImg(file) {
+				this.$refs.cropper.close()
+				uni.showLoading({ title: '涓婁紶涓�', mask: true });
+				uni.uploadFile({
+					url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
+					filePath: file.tempFilePath,
+					name: 'file',
+					formData: {
+						folderCode: 'MEMBER_IMG'
+					},
+					success: (uploadFileRes) => {
+						let res = JSON.parse(uploadFileRes.data)
+						this.withUserList.faceImg = res.data.halfPath
+						this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
+					},
+					complete() {
+						uni.hideLoading();
+					}
+				});
+			},
 			closeMJ() {
 				this.show = false
 				this.columns.forEach(item => {
@@ -354,14 +449,14 @@
 					title: '绂诲満鏃堕棿涓嶈兘涓虹┖',
 					icon: 'none'
 				})
-				if (!this.form1.doorSelectName) return uni.showToast({
+				if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({
 					title: '璁块棶闂ㄧ涓嶈兘涓虹┖',
 					icon: 'none'
 				})
-				// if (!this.form1.reason) return uni.showToast({
-				// 	title: '鎷滆浜嬬敱涓嶈兘涓虹┖',
-				// 	icon: 'none'
-				// })
+				if (!this.form1.reason) return uni.showToast({
+					title: '鎷滆浜嬬敱涓嶈兘涓虹┖',
+					icon: 'none'
+				})
 				// this.form1.starttime = this.form1.starttime + ':00'
 				// this.form1.endtime = this.form1.endtime + ':00'
 				let data = JSON.parse(JSON.stringify(this.form1))
@@ -374,7 +469,6 @@
 					withUserList: this.personnel
 				}).then(res => {
 					if (res.code === 200) {
-						console.log(res)
 						uni.reLaunch({
 							url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}`
 						})
@@ -392,6 +486,16 @@
 				}).then(res => {
 					if (res.code === 200) {
 						this.visit = res.data.code
+					}
+				})
+				// 璧峰鏃堕棿鏃堕暱
+				this.$u.api.getSystemDictData({
+					dictCode: 'VISIT_CONFIG',
+					label: 'VALIDATE_VISIT'
+				}).then(res => {
+					if (res.code === 200) {
+						this.day = Number(res.data.code)
+						// console.log(nextDay('after', true, this.day))
 					}
 				})
 			},
@@ -424,6 +528,10 @@
 						icon: 'none'
 					})
 				}
+				if (!this.withUserList.companyName) return uni.showToast({
+					title: '鍏徃涓嶈兘涓虹┖',
+					icon: 'none'
+				})
 				if (!this.withUserList.faceImg) return uni.showToast({
 					title: '浜鸿劯鐓х墖涓嶈兘涓虹┖',
 					icon: 'none'
@@ -449,12 +557,17 @@
 				this.withUserList.imgurlUrl = ''
 			},
 			upload(type) {
+				this.type = type
+				if (type === 'faceImg') {
+					this.$refs.cropper.open()
+					return
+				}
 				uni.chooseImage({
 					success: (chooseImageRes) => {
 						uni.showLoading({ title: '涓婁紶涓�', mask: true });
 						for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
 							uni.uploadFile({
-								url: `${this.$baseUrl}public/api/uploadFtp.do`,
+								url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
 								filePath: chooseImageRes.tempFilePaths[i],
 								name: 'file',
 								formData: {
@@ -484,6 +597,11 @@
 				this.withUserList.idcardType = e.value[0].id
 				this.withUserList.idcardTypeName = e.value[0].name
 				this.show6 = false
+			},
+			selectedName(e) {
+				this.form1.name = e.value[0].name
+				this.form1.id = e.value[0].id
+				this.showName = false
 			},
 			submitCart() {
 				if (!this.carName) return uni.showToast({
@@ -523,19 +641,29 @@
 					}
 				})
 			},
+			openLC() {
+				if (!this.form1.starttime) return uni.showToast({
+					title: '璇峰厛閫夋嫨鍏ュ巶鏃堕棿',
+					icon: 'none'
+				})
+				this.show5 = true
+			},
 			setinDate(e) {
 				this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM');
+				// this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'), this.day)
+				this.maxTime = this.form1.starttime
+				console.log(this.form1.starttime);
 				this.show4 = false
 			},
 			setoutDate(e) {
 				this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM');
 				this.show5 = false
 			},
+			formatTimeStamp(date) {
+			    return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g,'/')}`))
+			},
 			// 鏌ヨ鐢ㄦ埛
 			getUser() {
-				console.log(this.verify)
-				console.log(this.form1.phone1)
-				console.log(this.form1.receptMemberName)
 				if (this.verify === '0') {
 					if (this.form1.phone1) {
 						this.$u.api.getVisitedMember({
@@ -568,7 +696,6 @@
 					label: 'BEVISITED_USER_VALID'
 				}).then(res => {
 					if (res.code === 200) {
-						console.log(res)
 						this.verify = res.data.code
 					}
 				})
@@ -1025,10 +1152,17 @@
 			padding: 0 30rpx;
 			box-sizing: border-box;
 			background-color: #ffffff;
-
+			.empty{
+				width: 750rpx;
+				height: 20rpx;
+				background-color: #f7f7f7;
+				margin: 0 -30rpx;
+			}
 			.list_item {
 				width: 100%;
-				height: 98rpx;
+				// min-height: 98rpx;
+				padding: 30rpx 0;
+				box-sizing: border-box;
 				display: flex;
 				align-items: center;
 				justify-content: space-between;
@@ -1086,8 +1220,6 @@
 			padding: 30rpx;
 			box-sizing: border-box;
 			background-color: #ffffff;
-			margin-top: 20rpx;
-
 			.cate_head {
 				font-size: 32rpx;
 				font-family: PingFangSC, PingFang SC;

--
Gitblit v1.9.3