From 4e6f18dfa08e2f2f4f02aaa1b8e8e51852b7a9a1 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期五, 13 三月 2026 17:46:03 +0800
Subject: [PATCH] 考点核验

---
 src/views/h5/verify/form.vue |  154 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 108 insertions(+), 46 deletions(-)

diff --git a/src/views/h5/verify/form.vue b/src/views/h5/verify/form.vue
index 8e2491d..8409462 100644
--- a/src/views/h5/verify/form.vue
+++ b/src/views/h5/verify/form.vue
@@ -1,34 +1,45 @@
 <template>
-  <div>
+  <div v-if="pdfUrl">
     <el-row class="p-3 m-0" justify="space-between" align="middle">
-      <el-col :span="3"></el-col>
-      <el-col :span="18">
-        <el-text class="text-lg font-bold text-center">
-          {{ title }}
-        </el-text>
+      <el-col :span="4"></el-col>
+      <el-col :span="16">
+        <el-row justify="center">
+          <el-text class="text-lg font-bold text-center">
+            {{ title }}
+          </el-text>
+        </el-row>
       </el-col>
-      <el-col :span="3">
-        <el-button text style="color: var(--el-color-primary);" :loading="saveLoading" @click="tempSave()">鏆傚瓨</el-button>
+      <el-col :span="4">
+        <el-row justify="center">
+          <el-button
+            v-if="!isVerified"
+            text style="color: var(--el-color-primary);" 
+            :loading="saveLoading" @click="tempSave()"
+            class="mx-4"
+          >
+            鏆傚瓨
+          </el-button>
+        </el-row>
       </el-col>
     </el-row>
     
     <el-divider class="m-0" style="flex-shrink: 0;"></el-divider>
-    <el-scrollbar :height="`${mainHeight}px`" class="p-2 m-0 mt-1" min-size="none">
+    <el-scrollbar :height="`${mainHeight}px`" class="p-2 m-0 mt-1" >
       <div v-if="pdfUrl" :style="{width: '100%', height: `${mainHeight - 100}px`}">
         <PdfPreview v-if="pdfUrl" :url="pdfUrl"></PdfPreview>
       </div>
       <div class="p-2 my-4">
         <el-form ref="verifyForm" :model="form">
-          <el-form-item label="浠ヤ笂鐢虫姤鍐呭鏄惁灞炲疄" prop="isVerified">
-            <el-radio-group v-model="form.isVerified">
-              <el-radio :value="true">鏄�</el-radio>
-              <el-radio :value="false">鍚�</el-radio>
+          <el-form-item label="*浠ヤ笂鐢虫姤鍐呭鏄惁灞炲疄" prop="isVerified">
+            <el-radio-group v-model="form.isContentTrue" :disabled="isVerified">
+              <el-radio :value="1">鏄�</el-radio>
+              <el-radio :value="0">鍚�</el-radio>
             </el-radio-group>
           </el-form-item>
-          <el-form-item label="璇ヨ�冪偣鏍搁獙鏄惁閫氳繃" prop="isPass">
-            <el-radio-group v-model="form.isPass">
-              <el-radio :value="true">鏄�</el-radio>
-              <el-radio :value="false">鍚�</el-radio>
+          <el-form-item label="*璇ヨ�冪偣鏍搁獙鏄惁閫氳繃" prop="isPass">
+            <el-radio-group v-model="form.isSitePass" :disabled="isVerified">
+              <el-radio :value="1">鏄�</el-radio>
+              <el-radio :value="0">鍚�</el-radio>
             </el-radio-group>
           </el-form-item>
           <el-row><el-text>涓撳璇勪及鎰忚</el-text></el-row>
@@ -38,16 +49,23 @@
               :rows="3"
               type="textarea"
               placeholder="璇峰~鍐欒瘎浼版剰瑙�"
+              :disabled="isVerified"
             />
           </el-form-item>
-          <el-row><el-text>鐜板満宸ヤ綔鐓х墖</el-text></el-row>
+          <el-row><el-text>*鐜板満宸ヤ綔鐓х墖</el-text></el-row>
           <el-row>
-            <UploadBtn v-model="form.image" :accept="['pdf', 'jpg']" :limitFileCount="10" listType="picture-card"></UploadBtn>
+            <UploadBtn v-model="form.image" :disabled="isVerified" :accept="['pdf', 'jpg']" :limitFileCount="10" listType="picture-card"></UploadBtn>
           </el-row>
           
-          <Signature v-model="form.signature"></Signature>
+          <Signature v-model="form.signatureUrl" :disabled="isVerified" :isRequire="true"></Signature>
 
-          <el-button type="primary" size="large" class="my-7" style="width: 100%;">鎻愪氦鏍搁獙缁撴灉</el-button>
+          <el-button
+            v-if="!isVerified"
+            @click="submitVerify" 
+            type="primary" size="large" 
+            class="my-7" style="width: 100%;"
+            :loading="submitLoading"
+          >鎻愪氦鏍搁獙缁撴灉</el-button>
         </el-form>
       </div>
     </el-scrollbar>
@@ -59,7 +77,6 @@
 import Signature from '@/views/main/components/Signature.vue';
 import { useSessionStore } from '@/stores/session.js'
 import { storeToRefs } from 'pinia';
-import { tokenUtils } from '@/utils/axios.js';
 
 export default {
   components: {
@@ -77,13 +94,15 @@
       pdfUrl: '',
       form: {
         id: '',
-        isVerified: false,
-        isPass: false,
+        isContentTrue: 0,
+        isSitePass: 0,
         suggestion: '',
         image: [],
-        signature: ''
+        signatureUrl: ''
       },
-      saveLoading: false
+      isVerified: false,
+      saveLoading: false,
+      submitLoading: false
     }
   },
   computed: {
@@ -91,7 +110,7 @@
       return this.pageHeight - 80
     },
     appId() {
-      return this.$route.params.id
+      return this.$route.query.appId
     }
   },
   async created() {
@@ -99,18 +118,24 @@
   },
   mounted() {
     document.title = '鑰冪偣鏍搁獙'
-    this.pdfUrl = this.$qxueyou.qxyRes + '20260304/鍖犲績瀛﹂櫌鑱屼笟鎶�鑳借瘎浠疯�冪偣鏍搁獙鐢宠琛╛1772591122177.pdf'
   },
   methods: {
     getVerifyDetail() {
-      const params = { id: this.appId }
-      this.$axios.get('/exam/verify-record/get', { params }).then(res => {
+      const params = { applicationId: this.appId }
+      this.$axios.get('/exam/verify-record/get-by-application-id', { params }).then(res => {
         if (res.data.code == 0) {
           const resData = res.data.data || {}
+          this.pdfUrl = this.$qxueyou.qxyRes + resData.examSiteVerifyFile
+          this.title = resData.organizationName + '-' + resData.examSite.siteName + '鑰冪偣鏍搁獙'
           if (resData.id) {
-            this.form = {
-              ...resData
-            }
+            this.form.isContentTrue  = resData.isContentTrue
+            this.form.isSitePass = resData.isSitePass
+            this.form.suggestion = resData.evaluationOpinion
+            resData.sitePhotos?.forEach(ele => {
+              this.form.image.push({ name: '', url: ele })
+            })
+            this.form.signatureUrl = resData.signatureUrl
+            this.isVerified = resData.isVerified
           }
         } else {
           this.$message.error('鑾峰彇鏍搁獙淇℃伅澶辫触')
@@ -119,25 +144,62 @@
     },
     tempSave() {
       const data = {
+        applicationId: this.appId,
         id: this.form.id,
-        userId: 0,
-        name: "",
-        gender: "",
-        mobile: "",
-        age: 0,
-        idNumber: "",
-        isContentTrue: 0,
-        isSitePass: 0,
-        evaluationOpinion: "",
-        sitePhotos: [],
-        status: 0
+        userId: this.userInfo.id,
+        name: this.userInfo.name,
+        mobile: this.userInfo.mobile,
+        idNumber: this.userInfo.idCard,
+        isContentTrue: this.form.isContentTrue,
+        isSitePass: this.form.isSitePass,
+        evaluationOpinion: this.form.suggestion,
+        sitePhotos: this.form.image.map(ele => ele.url),
+        signatureUrl: this.form.signatureUrl,
       }
-      this.$axios.post('/exam/verify-record/create', data).then(res => {
+      this.saveLoading = true
+      this.$axios.put(`/exam/verify-record/save`, data).then(res => {
         if (res.data.code == 0) {
-          console.log(res.data.data)
+          this.$message.success('淇濆瓨鎴愬姛')
+          this.getVerifyDetail()
         } else {
           this.$message.error(res.data.msg)
         }
+      }).finally(() => {
+        this.saveLoading = false
+      })
+    },
+    submitVerify() {
+      if (this.form.image.length==0) {
+        this.$message.error('璇蜂笂浼犵幇鍦哄伐浣滅収鐗�')
+        return
+      }
+      if (!this.form.signatureUrl) {
+        this.$message.error('璇峰~鍐欑鍚�')
+        return
+      }
+      this.$messageBox.confirm('鎻愪氦涔嬪悗涓嶅彲鍐嶇紪杈戞牳楠岋紝纭鎻愪氦鍚�', '鎻愮ず', 
+      { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'tip' }).then(res => {
+        if (res == 'confirm') { 
+          this.submitLoading = true
+          const data = {
+            applicationId: this.appId,
+            isContentTrue: this.form.isContentTrue,
+            isSitePass: this.form.isSitePass,
+            evaluationOpinion: this.form.suggestion,
+            sitePhotos: this.form.image.map(ele => ele.url),
+            signatureUrl: this.form.signatureUrl,
+          }
+          this.$axios.post('/exam/verify-record/verify', data).then(res => {
+            if (res.data.code == 0) {
+              this.$message.success('鎻愪氦鏍搁獙鎴愬姛')
+              this.isVerified = true
+            } else {
+              this.$message.error(res.data.msg || '鎻愪氦鏍搁獙澶辫触')
+            }
+          }).finally(() => {
+            this.submitLoading = false
+          })
+        }
       })
     },
     onPagesLoaded(msg) {

--
Gitblit v1.8.0