From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 24 三月 2025 09:23:08 +0800
Subject: [PATCH] -

---
 src/pages/mine/apply.vue |  501 +++++++++++++++++++++++++++----------------------------
 1 files changed, 245 insertions(+), 256 deletions(-)

diff --git a/src/pages/mine/apply.vue b/src/pages/mine/apply.vue
index bfa16c2..56ff7ee 100644
--- a/src/pages/mine/apply.vue
+++ b/src/pages/mine/apply.vue
@@ -1,59 +1,62 @@
 <template>
-	<view class="full-page">
+	<view class="full-page-fff">
 		<view class="content">
-			<up-form labelPosition="left" :model="userInfo" :rules="rules" ref="form1" labelWidth='90'>
-				<up-form-item label="韬唤璇佹闈�" prop="userInfo.sex" required borderBottom @click="uploadIdCard('FRONT')"
-					ref="item1">
-					<fui-upload immediate :url="`${apiBaseUrl}api/UpFile/UploadIdCord?PageName=FRONT`" ref="uploadF"
-						max='1' background='#fff' @success="success" @error="error" @complete="complete" width="300"
-						height="150">
+			<up-form labelPosition="left" :model="userInfo" :rules="rules" ref="formRef" labelWidth='80'>
+				<up-form-item label="韬唤璇佹闈�" prop="idCardFace" required>
+					<fui-upload immediate :url="`${apiBaseUrl}/api/UpFile/UploadIdCord?PageName=FRONT`" ref="uploadF"
+						max='1' background='#fff' @success="success('FRONT',$event)" @error="errorFront"
+						@complete="completeFront" width="300" height="150">
 						<image src="/static/positive.png" mode="widthFix" style="width: 300rpx;height: 150rpx;"></image>
 					</fui-upload>
 					<!-- <template #right>
 						<up-icon name="arrow-right"></up-icon>
 					</template> -->
 				</up-form-item>
-				<up-form-item label="韬唤璇佸弽闈�" prop="userInfo.sex" required borderBottom ref="item1">
-					<fui-upload immediate :url="`${apiBaseUrl}api/UpFile/UploadIdCord?PageName=Back`" ref="uploadB"
-						max='1' background='#fff' @success="success" @error="error" @complete="complete" width="300"
-						height="150">
+				<up-form-item label="韬唤璇佸弽闈�" prop="idCardBack" required>
+					<fui-upload immediate :url="`${apiBaseUrl}/api/UpFile/UploadIdCord?PageName=Back`" ref="uploadB"
+						max='1' background='#fff' @success="success('Back',$event)" @error="error" @complete="complete"
+						width="300" height="150">
 						<image src="/static/negative.png" mode="widthFix" style="width: 300rpx;height: 150rpx;"></image>
 					</fui-upload>
 				</up-form-item>
-				<up-form-item label="濮撳悕" required prop="userInfo.name" borderBottom ref="item1">
-					<up-input v-model="state.model1.userInfo.name" border="none" placeholder="璇疯緭鍏ュ鍚�"></up-input>
+				<up-form-item label="濮撳悕" required prop="name" ref="item1">
+					<up-input v-model="userInfo.name" border="none" placeholder="璇疯緭鍏ュ鍚�" readonly></up-input>
 				</up-form-item>
-				<up-form-item label="鎬у埆" required prop="Gender" borderBottom ref="item2">
+				<up-form-item label="鑱旂郴鐢佃瘽" required prop="phone" ref="item1">
+					<up-input v-model="userInfo.phone" border="none" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></up-input>
+				</up-form-item>
+				<up-form-item label="韬唤璇佸彿" required prop="idCode" ref="item1">
+					<up-input v-model="userInfo.idCode" border="none" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" readonly></up-input>
+				</up-form-item>
+				<up-form-item label="鑱旂郴鍦板潃" required prop="address" ref="item1">
+					<up-input v-model="userInfo.address" border="none" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�"></up-input>
+				</up-form-item>
+				<up-form-item label="绠�鍘嗘弿杩�" required prop="resume" ref="item1">
+
+				</up-form-item>
+				<up-textarea v-model="userInfo.resume" placeholder="璇疯緭鍏ョ畝鍘嗘弿杩�"></up-textarea>
+				<!-- <up-form-item label="鎬у埆" required prop="Gender"   ref="item2">
 					<up-radio-group v-model="userInfo.Gender">
 						<up-radio :customStyle="{marginRight: '16px'}" v-for="(item, index) in radiolist1" :key="index"
 							:label="item.name" :name="item.name">
 						</up-radio>
 					</up-radio-group>
-				</up-form-item>
-				<up-form-item label="鑱旂郴鐢佃瘽" required prop="userInfo.name" borderBottom ref="item1">
-					<up-input v-model="state.model1.userInfo.name" border="none" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></up-input>
-				</up-form-item>
-				<up-form-item label="韬唤璇佸彿" required prop="userInfo.name" borderBottom ref="item1">
-					<up-input v-model="state.model1.userInfo.name" border="none" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"></up-input>
-				</up-form-item>
-				<up-form-item label="绠�鍘嗘弿杩�" required prop="userInfo.name" borderBottom ref="item1">
-					<up-textarea v-model="state.model1.userInfo.name" placeholder="璇疯緭鍏ョ畝鍘嗘弿杩�"></up-textarea>
-				</up-form-item>
-				<cameraBufferJpg/>
-				<view class="text-area">
+				</up-form-item> -->
+				<!-- <view class="text-area">
 					<camera device-position="front" style="width: 100%; height: 600rpx;"></camera>
-				</view>
-				<view class="tabbtns">
+				</view> -->
+				<!-- <view class="tabbtns">
 					<up-button color='#fece01' class="text-69" text="浜鸿劯璇嗗埆" @click='IaiAddPerso'></up-button>
-				</view>
-				
+				</view> -->
+
 
 				<!-- <up-popup :show="show" @close="close" @open="open"> -->
 				<!-- <tem-session/> -->
 				<!-- </up-popup> -->
-				<!-- <view class="tabbtns">
-					<up-button color='#fece01' class="text-69" text="淇濆瓨"></up-button>
-				</view> -->
+				<view class="tabbtns">
+					<up-button color='#fece01' text="淇濆瓨" :loading='isLoading' loadingText="淇濆瓨涓�"
+						@click='saveUserWorker'></up-button>
+				</view>
 			</up-form>
 		</view>
 
@@ -63,265 +66,248 @@
 <script setup>
 	import {
 		onLoad,
-		onShow
+		onShow,
+		onReady
 	} from "@dcloudio/uni-app";
-
 	import {
 		apiBaseUrl
 	} from '@/common/setting/constVarsHelper.js';
 	import {
-		getCurrentInstance
+		onMounted,
+		getCurrentInstance,
+		computed
 	} from 'vue'
+	import {
+		useStore
+	} from 'vuex'
+	const store = useStore()
 	const {
 		$upload,
-		$api
+		$api,
+		$util,
+		$db
 	} = getCurrentInstance().appContext.config.globalProperties
 	import {
 		ref,
 		reactive
 	} from 'vue';
-	let webgl = ref()
+
+	// let webgl = ref()
 	onLoad(() => {
-		let cameraEngine = wx.createCameraContext()
-		// 3銆佽幏鍙� Camera 瀹炴椂甯ф暟鎹�
-		const listener = cameraEngine.onCameraFrame((frame) => {
-			// console.log(frame)
-			if (!status.value) {
-				return
-			}
-			jiance(frame)
-		})
-		// 5銆佸紑濮嬬洃鍚抚鏁版嵁
-		listener.start()
+		const userToken = $db.get("userToken");
+		if (!userToken) {
+			uni.showToast({
+				title: '璇峰厛鐧诲綍锛�',
+				icon: 'none',
+				duration: 1000,
+				complete: function() {
+					setTimeout(function() {
+							uni.hideToast();
+							uni.navigateTo({
+								url: '/pages/login/index'
+							});
+						},
+						1000);
+				}
+			});
+		}
+		let data = $db.get('userInfo') || null
+		if (data && data.userWorker) {
+			userInfo.idCardFace = data.userWorker ? data.userWorker.idCardFace : '' //韬唤璇佹闈㈣矾寰�
+			userInfo.idCardBack = data.userWorker ? data.userWorker.idCardBack : '' //韬唤璇佸弽闈㈣矾寰�
+			userInfo.name = data.userWorker.name //濮撳悕
+			userInfo.phone = data.userWorker.phone //鐢佃瘽鍙风爜
+			userInfo.idCode = data.userWorker.idCode //韬唤璇佸彿
+			userInfo.address = data.userWorker.address //鑱旂郴鍦板潃
+			userInfo.resume = data.userWorker.resume //绠�鍘嗘弿杩�
+			userInfo.id = data.userWorker.id
+
+		}
+		console.log(userInfo, data && data.userWorker, 'data && data.userWorker');
 	})
+	let uploadF = ref()
+	let uploadB = ref()
+	let isLoading = ref(false)
+	let rules = {
+		idCardFace: {
+			required: true,
+			message: '璇蜂笂浼犺韩浠借瘉姝i潰',
+			trigger: ['blur', 'change']
+		}, //钀ヤ笟鎵х収璺緞
+		idCardBack: {
+			required: true,
+			message: '璇蜂笂浼犺韩浠借瘉鍙嶉潰',
+			trigger: ['blur', 'change']
+		}, //浼佷笟鍚嶇О
+		name: {
+			required: true,
+			message: '濮撳悕涓嶈兘涓虹┖',
+			trigger: ['blur', 'change']
+		}, //娉ㄥ唽鏃堕棿
+		idCode: {
+			required: true,
+			message: '韬唤璇佸彿涓嶈兘涓虹┖',
+			trigger: ['blur', 'change']
+		}, //鑱旂郴鍦板潃
+		address: {
+			required: true,
+			message: '鑱旂郴鍦板潃涓嶈兘涓虹┖',
+			trigger: ['blur', 'change']
+		}, //浼佷笟娉ㄥ唽鍙�
+		resume: {
+			required: true,
+			message: '绠�鍘嗘弿杩颁笉鑳戒负绌�',
+			trigger: ['blur', 'change']
+		}, //鍏徃绠�浠�
+		phone: [{
+			required: true,
+			message: '鑱旂郴鐢佃瘽涓嶈兘涓虹┖',
+			trigger: ['blur', 'change']
+		}
+		// ,
+		// {
+		// 	// 鑷畾涔夐獙璇佸嚱鏁帮紝瑙佷笂璇存槑
+		// 	validator: (rule, value, callback) => {
+		// 		// 涓婇潰鏈夎锛岃繑鍥瀟rue琛ㄧず鏍¢獙閫氳繃锛岃繑鍥瀎alse琛ㄧず涓嶉�氳繃
+		// 		// uni.$u.test.mobile()灏辨槸杩斿洖true鎴栬�協alse鐨�
+		// 		return uni.$u.test.mobile(value);
+		// 	},
+		// 	message: '鑱旂郴鐢佃瘽涓嶆纭�',
+		// 	// 瑙﹀彂鍣ㄥ彲浠ュ悓鏃剁敤blur鍜宑hange
+		// 	trigger: ['change','blur'],
+		// },
+		]
+	}
 	let status = ref(false)
-	let radiolist1 = [{
-			name: '鐢�',
-		},
-		{
-			name: '濂�',
+	const formRef = ref()
+	onReady(() => {
+		formRef.value.setRules(rules);
+		if (userInfo.idCardBack) {
+			uploadB.value.urls = [userInfo.idCardBack]
+			uploadB.value.status = ['success']
 		}
-	]
-	const userInfo = reactive({
-		CordId: '430621198204264616',
-		Name: '閭瑰ぇ蹇�',
-		Gender: 1
+		if (userInfo.idCardFace) {
+			uploadF.value.urls = [userInfo.idCardFace]
+			uploadF.value.status = ['success']
+		}
+
 	})
-	// 浣跨敤 reactive 鍒涘缓鍝嶅簲寮忕姸鎬�  
-	const state = reactive({
-		showSex: false,
-		model1: {
-			userInfo: {
-				name: '',
-				sex: '',
-			},
-		},
-		actions: [{
-				name: '鐢�'
-			},
-			{
-				name: '濂�'
-			},
-			{
-				name: '淇濆瘑'
-			},
-		],
-
-		radio: '',
-		switchVal: false,
+	onMounted(() => {
+		formRef.value.setRules(rules);
+		console.log(formRef.value, 'formRef'); // 璁块棶瀛愮粍浠禗emo涓殑灞炴��
 	});
-
-	// 浣跨敤 ref 鍒涘缓鍝嶅簲寮忓紩鐢�  
-	const formRef = ref(null);
-
-
-
-	const IaiAddPerso = (e) => {
-		status.value = !status.value
-		// wx.startFacialRecognitionVerify()
-		// const session = wx.createVKSession({
-		// 	track: {
-		// 		face: {
-		// 			mode: 1
-		// 		} // mode: 1 - 浣跨敤鎽勫儚澶达紱2 - 鎵嬪姩浼犲叆鍥惧儚
-		// 	},
-		// })
-		// // 闈欐�佸浘鐗囨娴嬫ā寮忎笅锛屾瘡璋冧竴娆� detectFace 鎺ュ彛灏变細瑙﹀彂涓�娆� updateAnchors 浜嬩欢
-		// session.on('updateAnchors', anchors => {
-		// 	anchors.forEach(anchor => {
-		// 		console.log('anchor.points', anchor.points)
-		// 		console.log('anchor.origin', anchor.origin)
-		// 		console.log('anchor.size', anchor.size)
-		// 		console.log('anchor.angle', anchor.angle)
-		// 	})
-		// })
-
-		// // 闇�瑕佽皟鐢ㄤ竴娆� start 浠ュ惎鍔�
-		// session.start(errno => {
-		// 	if (errno) {
-		// 		console.log(errno)
-		// 		// 濡傛灉澶辫触锛屽皢杩斿洖 errno
-		// 	} else {
-		// 		// 鍚﹀垯锛岃繑鍥瀗ull锛岃〃绀烘垚鍔�
-		// 		session.detectFace({
-		// 			frameBuffer, // 鍥剧墖 ArrayBuffer 鏁版嵁銆備汉鑴稿浘鍍忓儚绱犵偣鏁版嵁锛屾瘡鍥涢」琛ㄧず涓�涓儚绱犵偣鐨� RGBA
-		// 			width, // 鍥惧儚瀹藉害
-		// 			height, // 鍥惧儚楂樺害
-		// 			scoreThreshold: 0.5, // 璇勫垎闃堝��
-		// 			sourceType: 1,
-		// 			modelMode: 1,
-		// 		})
-		// 	}
-		// })
-		// wx.chooseMedia({
-		// 	count:1,
-		// 	sourceType: ['camera'],
-		// 	mediaType: ['image'],
-		// 	maxDuration: 60,
-		// 	camera: 'front',
-		// 	success(res) {
-		// 		for (let i = 0; i < res.tempFiles.length; i++) {
-		// 			console.log("===111===" + res.tempFiles[i].tempFilePath)
-		// 			console.log("===222===" + res.tempFiles[i].size)
-		// 		}
-		// 	}
-		// })
-		// $api.IaiAddPerso({}, userInfo).then(res => {
-		// 	console.log(res, '浜鸿劯璇嗗埆');
-		// })
+	let gender = ref()
+	let idCardFaceBase64 = ref('')
+	let userInfo = reactive({
+		idCardFace: '', //韬唤璇佹闈㈣矾寰�
+		idCardBack: '', //韬唤璇佸弽闈㈣矾寰�
+		name: '', //濮撳悕
+		phone: '', //鐢佃瘽鍙风爜
+		idCode: '', //韬唤璇佸彿
+		address: '', //鑱旂郴鍦板潃
+		resume: '', //绠�鍘嗘弿杩�
+		id: 0
+	})
+	const getUserInfo = () => {
+		store.dispatch('getUserInfo')
 	}
-	// 瀹氫箟鏂规硶  
-	function sexSelect(e) {
-		state.model1.userInfo.sex = e.name;
-		if (formRef.value) {
-			formRef.value.validateField('userInfo.sex');
-		}
-	}
-
-	//涓婁紶鍥剧墖Base64
-	const uploadFilesFByBase64s = (el) => {
-		$api.UpdateFileBase64({
-			fileBase64: el
-		}).then(res => {
-
-			// if (res.code == 1) {
-
-			uni.hideLoading();
-			console.log(res.data.src);
-			// } else {
-
-			// }
-		});
-	}
-	const uploadIdCard = (msg, event) => {
-
-		// getBase64(msg.file.url).then(res => {
-		// 	console.log(res);
-		// 	// uploadFilesFByBase64s(res)
-		// })
-		// $api.UpdateFileBase64().then(res=>{
-		// 	console.log(res,'UpdateFileBase64');
-		// })
-		$api.UploadIdCord(msg.file.url, {
-			PageName: 'Back'
-		}).then(res => {
-			console.log(res);
+	const saveUserWorkerApi = () => {
+		$api.saveUserWorker(userInfo).then(res => {
+			if (res.code == 1) {
+				getUserInfo()
+				uni.navigateBack()
+				$util.showToast({
+					title: "淇濆瓨鎴愬姛锛�",
+					icon: "success"
+				})
+			}
+			isLoading.value = false
 		})
-		uni.showLoading({
-			title: '涓婁紶涓�...'
-		});
-		// uni.getFileSystemManager().readFile({
-		// 	filePath: msg.file.url, // 鏇挎崲涓轰綘鐨勬枃浠惰矾寰�
-		// 	encoding: 'base64',
-		// 	success: res => {
-		// 		uploadFilesFByBase64s(res.data)
-		// 		console.log('鏂囦欢鍐呭鐨刡ase64锛�', res.data);
-		// 	},
-		// 	fail: err => {
-		// 		console.error('璇诲彇鏂囦欢澶辫触锛�', err);
-		// 	}
-		// });
-
 	}
+	const saveUserWorker = (e) => {
+		formRef.value.validate().then(res => {
+			isLoading.value = true
+			console.log(idCardFaceBase64.value, 'idCardFaceBase64.value鈥�');
+			if (idCardFaceBase64.value) {
+				let obj = {
+					imgBase64: idCardFaceBase64.value,
+					cordId: userInfo.idCode, //韬唤璇佸彿鐮�
+					name: userInfo.name, //濮撳悕
+					gender: gender.value == '鐢�' ? 1 : 2 //鎬у埆
+				}
+				$api.IaiAddPersoBase64(obj).then(res => {
+					if (res.data && res.data.isOK == true) {
+						saveUserWorkerApi()
+					} else {
+						$util.showToast({
+							title: res.error
+						})
+						isLoading.value = false
+					}
+				})
+			} else {
+				saveUserWorkerApi()
+			}
+
+		}).catch(errors => {
+			console.log(errors)
+			uni.$u.toast(errors[0].message)
+		})
+	}
+
 	//涓婁紶鎴愬姛鏃惰Е鍙�
-	const success = (e) => {
-		console.log(e)
+	const success = (text, e) => {
 		//e.res 涓烘湇鍔″櫒杩斿洖鏁版嵁
 		//涓婁紶鎴愬姛鍥炶皟锛屽鐞嗘湇鍔″櫒杩斿洖鏁版嵁銆愭澶勬牴鎹疄闄呰繑鍥炴暟鎹繘琛屽鐞嗐��
 		let res = JSON.parse(e.res.data.replace(/\ufeff/g, "") || "{}")
-
-		if (res.data.url) {
-			userInfo.CordId = res.data.info.idNum
-			userInfo.name = res.data.info.name
-			userInfo.Gender = res.data.info.sex
-			//澶勭悊缁撴灉杩斿洖缁欑粍浠� 
-			//res.data.url涓轰笂浼犳垚鍔熷悗杩斿洖鐨勫浘鐗囧湴鍧�
-			//e.index涓哄浘鐗囩储寮曞��
-			// this.$refs.upload.result(res.data.url, e.index)
+		if (res.code == 1) {
+			if (res.data.url && text == 'FRONT') {
+				userInfo.idCardFace = res.data.url //韬唤璇佹闈㈣矾寰�
+				userInfo.idCode = res.data.info.idNum //韬唤璇佸彿
+				userInfo.name = res.data.info.name
+				userInfo.address = res.data.info.address
+				gender.value = res.data.info.sex
+			} else {
+				userInfo.idCardBack = res.data.url //韬唤璇佸弽闈㈣矾寰�
+			}
+		} else {
+			uni.$u.toast(res.error)
+			if (text == 'FRONT') {
+				uploadF.value.deleteImage()
+			} else {
+				uploadB.value.deleteImage()
+			}
 		}
+
 	}
 	//涓婁紶澶辫触鏃惰Е鍙�
 	const error = (e) => {}
+	const errorFront = (e) => {
+		console.log(e, '--------------');
+	}
 	//閫夋嫨鍥剧墖鎴栦笂浼犲畬鎴愭椂瑙﹀彂
+	const completeFront = (e) => {
+		if (e.action == 'delete') {
+			// 鍒犻櫎澶勭悊
+			userInfo.idCardFace = '' //韬唤璇佹闈㈣矾寰�
+			userInfo.idCode = '' //韬唤璇佸彿
+			userInfo.name = ''
+			userInfo.address = ''
+			gender.value = ''
+			return
+		}
+		console.log(e, '鍒犻櫎')
+		$util.pathToBase64(e.urls[0]).then(res => {
+			idCardFaceBase64.value = res
+			console.log(idCardFaceBase64, idCardFaceBase64.value);
+		})
+	}
 	const complete = (e) => {
 		if (e.action == 'delete') {
 			// 鍒犻櫎澶勭悊
+			userInfo.idCardBack = ''
 		}
 		console.log(e, '鍒犻櫎')
-
-	}
-	const jiance = (imgbuffer) => {
-		// var frameBuffer =
-		const session = wx.createVKSession({
-			track: {
-				face: {
-					mode: 2
-				} // mode: 1 - 浣跨敤鎽勫儚澶达紱2 - 鎵嬪姩浼犲叆鍥惧儚
-			},
-			version: 'v1'
-
-		})
-		const onFrame = timestamp => {
-			console.log(webgl,'webgl');
-			const frame = session.getVKFrame(webgl.width, webgl.height)
-			if (frame) {
-				console.log(frame);
-				// renderFrame(frame)
-			}
-		
-			session.requestAnimationFrame(onFrame)
-		}
-		session.start(errno => {
-			if (errno) {
-				// 濡傛灉澶辫触锛屽皢杩斿洖 errno
-			} else {
-				// 鍚﹀垯锛岃繑鍥瀗ull锛岃〃绀烘垚鍔�
-				session.detectFace({
-					frameBuffer: imgbuffer.data, // 鍥剧墖 ArrayBuffer 鏁版嵁銆備汉鑴稿浘鍍忓儚绱犵偣鏁版嵁锛屾瘡鍥涢」琛ㄧず涓�涓儚绱犵偣鐨� RGBA
-					width: imgbuffer.width, // 鍥惧儚瀹藉害
-					height: imgbuffer.height,
-					scoreThreshold: 0.8, // 璇勫垎闃堝��
-					sourceType: 1,
-					modelMode: 0,
-				})
-			}
-			
-			session.requestAnimationFrame(onFrame)
-		})
-
-		session.on('updateAnchors', anchors => {
-			console.log("妫�娴嬪埌浜鸿劯", anchors)
-
-			anchors.forEach(anchor => {
-				console.log('anchor.points', anchor.points)
-				console.log('anchor.origin', anchor.origin)
-				console.log('anchor.size', anchor.size)
-				console.log('anchor.angle', anchor.angle)
-			})
-		})
-		session.on('removeAnchors', () => {
-			console.log("浜鸿劯娑堝け", "removeAnchors")
-		})
 	}
 </script>
 
@@ -334,4 +320,7 @@
 	.fui-upload__item {
 		margin-top: 20rpx !important;
 	}
+	.u-form-item__body {
+		padding: 5px 0 !important;
+	}
 </style>
\ No newline at end of file

--
Gitblit v1.9.1