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