From 63fea2990e587837ed3dde2b9ac8f2b4ef729672 Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期四, 28 五月 2026 10:02:01 +0800
Subject: [PATCH] 考点核验+签到

---
 src/assets/json/cityItems.json                   |  112 ++++++++++++++
 src/views/components/PdfPreview.vue              |   10 
 src/views/h5/faceAuth/components/auditDialog.vue |    4 
 src/views/h5/login/bind.vue                      |    7 
 src/views/h5/login/index.vue                     |    6 
 src/views/components/Signature.vue               |   20 +
 src/views/h5/addrVerify/index.vue                |   10 +
 src/views/h5/login/redirect.vue                  |    8 
 /dev/null                                        |    9 -
 src/assets/images/signInSuccess.png              |    0 
 src/views/h5/index.vue                           |   21 ++
 src/views/h5/map/index.vue                       |   63 +++++--
 src/main.js                                      |    6 
 src/views/h5/map/BaiduMap.vue                    |   18 +
 src/views/h5/signIn/index.vue                    |   75 +++++++++
 src/views/h5/signIn/signInSuccess.vue            |   49 ++++++
 src/views/h5/faceAuth/index.vue                  |    2 
 src/utils/axios.js                               |    2 
 src/config/qxueyou.js                            |    2 
 vite.config.js                                   |    8 
 src/router/h5/router.js                          |   26 ++
 src/views/h5/noTask/index.vue                    |    7 
 src/App.vue                                      |    8 
 23 files changed, 391 insertions(+), 82 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 1342935..26eeb5d 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,9 +9,7 @@
 import { getWxSignature } from '@/utils/wxjssdk.js'
 export default {
   data() {
-    return {
-      
-    }
+    return {}
   },
   watch: {
     '$route.path': function(){
@@ -23,9 +21,7 @@
       }
     },
   },
-  created() {
-    console.log('localHost')
-  }
+  created() {}
 }
 </script>
 
diff --git a/src/assets/images/signInSuccess.png b/src/assets/images/signInSuccess.png
new file mode 100644
index 0000000..06def6e
--- /dev/null
+++ b/src/assets/images/signInSuccess.png
Binary files differ
diff --git a/src/assets/json/cityItems.json b/src/assets/json/cityItems.json
new file mode 100644
index 0000000..7c4a03f
--- /dev/null
+++ b/src/assets/json/cityItems.json
@@ -0,0 +1,112 @@
+[
+  {
+    "id": 1,
+    "name": "骞夸笢鐪�",
+    "areaCode": "440000"
+  },
+  {
+      "id": 54,
+      "name": "骞垮窞甯�",
+      "areaCode": "440100"
+  },
+  {
+      "id": 55,
+      "name": "闊跺叧甯�",
+      "areaCode": "440200"
+  },
+  {
+      "id": 56,
+      "name": "娣卞湷甯�",
+      "areaCode": "440300"
+  },
+  {
+      "id": 57,
+      "name": "鐝犳捣甯�",
+      "areaCode": "440400"
+  },
+  {
+      "id": 58,
+      "name": "姹曞ご甯�",
+      "areaCode": "440500"
+  },
+  {
+      "id": 59,
+      "name": "浣涘北甯�",
+      "areaCode": "440600"
+  },
+  {
+      "id": 60,
+      "name": "姹熼棬甯�",
+      "areaCode": "440700"
+  },
+  {
+      "id": 61,
+      "name": "婀涙睙甯�",
+      "areaCode": "440800"
+  },
+  {
+      "id": 62,
+      "name": "鑼傚悕甯�",
+      "areaCode": "440900"
+  },
+  {
+      "id": 63,
+      "name": "鑲囧簡甯�",
+      "areaCode": "441200"
+  },
+  {
+      "id": 64,
+      "name": "鎯犲窞甯�",
+      "areaCode": "441300"
+  },
+  {
+      "id": 65,
+      "name": "姊呭窞甯�",
+      "areaCode": "441400"
+  },
+  {
+      "id": 66,
+      "name": "姹曞熬甯�",
+      "areaCode": "441500"
+  },
+  {
+      "id": 67,
+      "name": "娌虫簮甯�",
+      "areaCode": "441600"
+  },
+  {
+      "id": 68,
+      "name": "闃虫睙甯�",
+      "areaCode": "441700"
+  },
+  {
+      "id": 69,
+      "name": "娓呰繙甯�",
+      "areaCode": "441800"
+  },
+  {
+      "id": 70,
+      "name": "涓滆帪甯�",
+      "areaCode": "441900"
+  },
+  {
+      "id": 71,
+      "name": "涓北甯�",
+      "areaCode": "442000"
+  },
+  {
+      "id": 72,
+      "name": "娼窞甯�",
+      "areaCode": "445100"
+  },
+  {
+      "id": 73,
+      "name": "鎻槼甯�",
+      "areaCode": "445200"
+  },
+  {
+      "id": 74,
+      "name": "浜戞诞甯�",
+      "areaCode": "445300"
+  }
+]
\ No newline at end of file
diff --git a/src/config/qxueyou.js b/src/config/qxueyou.js
index 17004ea..a09c262 100644
--- a/src/config/qxueyou.js
+++ b/src/config/qxueyou.js
@@ -1,5 +1,5 @@
 let baseDomain = `${location.protocol}//${location.host}`
-let qxyRes = 'https://qxy-examination-dev.obs.cn-south-1.myhuaweicloud.com/'
+let qxyRes = `https://qxy-examination${baseDomain.includes('dev.') || import.meta.env.MODE === 'development' ? '-dev': ''}.obs.cn-south-1.myhuaweicloud.com/`
 let serverContext = '/app-api'
 let htmlContext = '/examination/verify'
 
diff --git a/src/main.js b/src/main.js
index 3c7ec9c..5391ace 100644
--- a/src/main.js
+++ b/src/main.js
@@ -24,9 +24,9 @@
   app.component(key, component)
 }
 
-// import('vconsole').then((module) => {
-//   new module.default()
-// })
+import('vconsole').then((module) => {
+  new module.default()
+})
 
 app.config.globalProperties.$rules = ruleGenerator
 app.config.globalProperties.$property = property
diff --git a/src/router/h5/router.js b/src/router/h5/router.js
index 4ce309a..84f05be 100644
--- a/src/router/h5/router.js
+++ b/src/router/h5/router.js
@@ -10,19 +10,35 @@
         component: () => import('@/views/h5/addrVerify/index.vue'),
       },
       {
+        path: 'examineeSignIn',
+        name: '鑰冪敓绛惧埌',
+        component: () => import('@/views/h5/signIn/index.vue'),
+      },
+      {
+        path: 'staffSignIn',
+        name: '鑰冭瘎鍛樼鍒�',
+        component: () => import('@/views/h5/signIn/index.vue'),
+      },
+
+      {
         path: 'verForm',
         name: '鎻愪氦鑰冪偣鏍搁獙',
         component: () => import('@/views/h5/addrVerify/form.vue'),
       },
       {
-        path: 'noVerAccess',
-        name: '鏍搁獙鏃犳潈闄�',
-        component: () => import('@/views/h5/addrVerify/noAccess.vue'),
+        path: 'noTask',
+        name: '鏆傛棤浠诲姟',
+        component: () => import('@/views/h5/noTask/index.vue'),
       },
       {
-        path: 'signup',
+        path: 'map',
         name: '绛惧埌',
-        component: () => import('@/views/h5/signup/index.vue'),
+        component: () => import('@/views/h5/map/index.vue'),
+      },
+      {
+        path: 'signInSuccess',
+        name: '绛惧埌鎴愬姛',
+        component: () => import('@/views/h5/signIn/signInSuccess.vue')
       },
       {
         path: 'face',
diff --git a/src/router/main/appraisalPlan/index.js b/src/router/main/appraisalPlan/index.js
deleted file mode 100644
index ea8d59e..0000000
--- a/src/router/main/appraisalPlan/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const appraisalPlan = [
-  {
-    path: 'appraisalPlan',
-    name: '璇勪环璁″垝',
-    component: () => import('@/views/main/appraisalPlan/index.vue'),
-  },
-]
-
-export default appraisalPlan
\ No newline at end of file
diff --git a/src/router/main/center/index.js b/src/router/main/center/index.js
deleted file mode 100644
index 1a3fdc6..0000000
--- a/src/router/main/center/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const score = [
-  {
-    path: 'center',
-    name: '涓汉涓績',
-    component: () => import('@/views/main/center/index.vue'),
-  },
-]
-
-export default score
\ No newline at end of file
diff --git a/src/router/main/certificate/index.js b/src/router/main/certificate/index.js
deleted file mode 100644
index 4983dfe..0000000
--- a/src/router/main/certificate/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const certificate = [
-  {
-    path: 'certificate',
-    name: '璇佷功鏌ヨ',
-    component: () => import('@/views/main/certificate/index.vue'),
-  },
-]
-
-export default certificate
\ No newline at end of file
diff --git a/src/router/main/examTicket/index.js b/src/router/main/examTicket/index.js
deleted file mode 100644
index 24ccd43..0000000
--- a/src/router/main/examTicket/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const examTicket = [
-  {
-    path: 'examTicket',
-    name: '鍑嗚�冭瘉鏌ヨ',
-    component: () => import('@/views/main/examTicket/index.vue'),
-  },
-]
-
-export default examTicket
\ No newline at end of file
diff --git a/src/router/main/home/index.js b/src/router/main/home/index.js
deleted file mode 100644
index 2b753c4..0000000
--- a/src/router/main/home/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const home = [
-  {
-    path: 'home',
-    name: '棣栭〉',
-    component: () => import('@/views/main/home/index.vue'),
-  },
-]
-
-export default home
\ No newline at end of file
diff --git a/src/router/main/index.js b/src/router/main/index.js
deleted file mode 100644
index be598fb..0000000
--- a/src/router/main/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import home from '@/router/main/home/index.js'
-import notice from '@/router/main/notice/index.js'
-import appraisalPlan from '@/router/main/appraisalPlan'
-import examTicket from '@/router/main/examTicket/index.js'
-import score from '@/router/main/score/index.js'
-import certificate from '@/router/main/certificate/index.js'
-import center from '@/router/main/center/index.js'
-
-const mainRouter = [
-  ...home,
-  ...notice,
-  ...appraisalPlan,
-  ...examTicket,
-  ...score,
-  ...certificate,
-  ...center
-]
-const router = [
-  {
-    path: '/main',
-    name: '鐢ㄦ埛绔�',
-    component: () => import('@/views/main/index.vue'),
-    children: mainRouter,
-  },
-]
-export default router
diff --git a/src/router/main/notice/index.js b/src/router/main/notice/index.js
deleted file mode 100644
index f8777d2..0000000
--- a/src/router/main/notice/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const notice = [
-  {
-    path: 'noticeList',
-    name: '鍏憡鍒楄〃',
-    component: () => import('@/views/main/notice/list.vue'),
-  },
-  {
-    path: 'noticeDetail/:id',
-    name: '鍏憡璇︽儏',
-    component: () => import('@/views/main/notice/detail.vue'),
-  },
-]
-
-export default notice
\ No newline at end of file
diff --git a/src/router/main/score/index.js b/src/router/main/score/index.js
deleted file mode 100644
index f932815..0000000
--- a/src/router/main/score/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const score = [
-  {
-    path: 'score',
-    name: '鎴愮哗鏌ヨ',
-    component: () => import('@/views/main/score/index.vue'),
-  },
-]
-
-export default score
\ No newline at end of file
diff --git a/src/utils/axios.js b/src/utils/axios.js
index 247b2ed..1b2b1e7 100644
--- a/src/utils/axios.js
+++ b/src/utils/axios.js
@@ -46,7 +46,7 @@
     return !!(this.getAccessToken() && this.getRefreshToken());
   },
   reLogin() {
-    router.push({ path: '/h5/login', query: router.currentRoute._value.query })
+    router.push({ path: '/h5/login' })
   }
 }
 let isRefreshing = false;
diff --git a/src/views/components/PdfPreview.vue b/src/views/components/PdfPreview.vue
index 97e23ba..bdc4146 100644
--- a/src/views/components/PdfPreview.vue
+++ b/src/views/components/PdfPreview.vue
@@ -18,11 +18,11 @@
     pdfViewer = new Pdfh5(container.value!, {
       pdfurl: props.url,
       textLayer: true,
-      workerSrc: '/examination/admin/pdf.worker.min.js',
-      cMapUrl: '/examination/admin/cmaps/',
-      standardFontDataUrl: '/examination/admin/standard_fonts/',
-      iccUrl: '/examination/admin/iccs/',
-      wasmUrl: '/examination/admin/wasm/'
+      workerSrc: '/examination/verify/pdf.worker.min.js',
+      cMapUrl: '/examination/verify/cmaps/',
+      standardFontDataUrl: '/examination/verify/standard_fonts/',
+      iccUrl: '/examination/verify/iccs/',
+      wasmUrl: '/examination/verify/wasm/'
     });
     const appElement = document.getElementById('app')
     
diff --git a/src/views/components/Signature.vue b/src/views/components/Signature.vue
index 7d1bf71..a205cf1 100644
--- a/src/views/components/Signature.vue
+++ b/src/views/components/Signature.vue
@@ -2,10 +2,12 @@
   <div class="signature">
     <el-row justify="space-between">
       <el-text>绛惧悕</el-text>
-      <el-text v-if="imageUrl" @click="imageUrl=''">娓呴櫎绛惧悕</el-text>
-      <el-text v-else @click="signatureDialog=true">鐐瑰嚮绛惧悕</el-text>
+      <template v-if="!disabled">
+        <el-text v-if="imageUrl" @click="imageUrl=''">娓呴櫎绛惧悕</el-text>
+        <el-text v-else @click="signatureDialog=true">鐐瑰嚮绛惧悕</el-text>
+      </template>
     </el-row>
-    <el-image v-if="imageUrl" :src="imageUrl"></el-image>
+    <el-image v-if="imageUrl" :src="imageUrl.includes('data:image/png') ? imageUrl : $qxueyou.qxyRes + imageUrl"></el-image>
     <div v-else class="image-slot"></div>
 
     <el-dialog 
@@ -68,6 +70,10 @@
     modelValue: {
       type: String,
       default: ''
+    },
+    disabled: {
+      type: Boolean,
+      default: false
     }
   },
   computed: {
@@ -193,9 +199,11 @@
       }
       let base64 = this.editCanvas.toDataURL('image/png', 1)
       let smallBase64 = await this.resizedataURL(base64, 240, 80)
-      // let url = await uploadByBase64(smallBase64, '绛惧悕')
-      // if (!url) return false
-      this.imageUrl = smallBase64
+      // this.imageUrl = smallBase64
+      let url = await uploadByBase64(smallBase64, '绛惧悕')
+      if (!url) return false
+      this.imageUrl = url
+      this.$emit('update:modelValue', url)
       this.signatureDialog = false
     },
     resizedataURL: function(base64, wantedWidth, wantedHeight){
diff --git a/src/views/h5/addrVerify/index.vue b/src/views/h5/addrVerify/index.vue
index 6c4bc70..4a46ea0 100644
--- a/src/views/h5/addrVerify/index.vue
+++ b/src/views/h5/addrVerify/index.vue
@@ -5,7 +5,9 @@
 export default {
   components: {},
   data() {
-    return {}
+    return {
+      noTaskTip: ''
+    }
   },
   computed: {
     appId() {
@@ -15,7 +17,7 @@
   async created() {
     const canVerify = await this.getCanVerify()
     if (!canVerify) {
-      this.$router.replace('/h5/noVerAccess')
+      this.$router.replace({ path: '/h5/noTask', query: { tip: this.noTaskTip }})
       return
     }
     const getCheckIsSubmit = await this.getCheckIsSubmit()
@@ -36,9 +38,13 @@
         }
         this.$axios.get('/exam/verify-record/can-verify', { params }).then(res => {
           if (res.data.code == 0) {
+            if (!res.data.data) {
+              this.noTaskTip = '鎮ㄩ潪姝よ�冪偣鏍搁獙浜哄憳锛屾棤娉曠鍒帮紝璇疯仈绯诲伐浣滀汉鍛樼‘璁ゃ��'
+            }
             resolve(res.data.data)
           } else {
             resolve(false)
+            this.noTaskTip = res.data.msg
           }
         }, () => {
           resolve(false)
diff --git a/src/views/h5/faceAuth/components/auditDialog.vue b/src/views/h5/faceAuth/components/auditDialog.vue
index 9662901..58c0dc4 100644
--- a/src/views/h5/faceAuth/components/auditDialog.vue
+++ b/src/views/h5/faceAuth/components/auditDialog.vue
@@ -13,7 +13,7 @@
         <el-image :src="base64" style="width: 100%;" fit="cover"></el-image>
         <div v-if="status=='auditing'" class="scan-line"></div>
       </div>
-      <el-row justify="center" v-else-if="['success', 'fail'].includes(status)">
+      <div style="display: flex; flex-direction: column; align-items: center;" v-else-if="['success', 'fail'].includes(status)">
         <el-image :src="$getImageUrl(`/h5/face_${status}.png`)"></el-image>
         <el-row>
           <el-text class="text-lg">浜鸿劯楠岃瘉{{ status=='success'?'':'涓�' }}閫氳繃</el-text>
@@ -22,7 +22,7 @@
           <el-text v-if="status=='success'">绯荤粺宸叉垚鍔熷鏍告偍鐨勮韩浠�</el-text>
           <el-text v-else-if="status=='fail'">璇烽噸鏂伴獙璇佹偍鐨勮韩浠�</el-text>
         </el-row>
-      </el-row>
+      </div>
       <el-row justify="center" class="mt-5" v-if="status=='auditing'">
         <el-text>姝e湪瀹℃牳涓紝璇疯�愬績绛夊緟...</el-text>
       </el-row>
diff --git a/src/views/h5/faceAuth/index.vue b/src/views/h5/faceAuth/index.vue
index 32f2e91..a4fd8cc 100644
--- a/src/views/h5/faceAuth/index.vue
+++ b/src/views/h5/faceAuth/index.vue
@@ -115,7 +115,7 @@
       }
     },
     auditSuccess(evt) {
-      this.$router.replace({ path: '/h5/signup', query: { appId: this.appId, url: evt } })
+      this.$router.replace({ path: '/h5/map', query: { appId: this.appId, url: evt } })
     },
   }
 }
diff --git a/src/views/h5/index.vue b/src/views/h5/index.vue
index fd2c39d..f66d1e8 100644
--- a/src/views/h5/index.vue
+++ b/src/views/h5/index.vue
@@ -6,6 +6,7 @@
 <script>
 import { useSessionStore } from '@/stores/session.js'
 import { storeToRefs } from 'pinia';
+import { tokenUtils } from '@/utils/axios.js'
 export default {
   setup() {
     const { setUserInfo } = useSessionStore()
@@ -15,10 +16,26 @@
   data() {
     return {}
   },
+  computed: {
+    
+  },
   created() {
-    if (this.$route.path == '/h5/verify' && this.$route.query.appId) {
-      localStorage.setItem('verify_url', this.$route.fullPath)
+    const path = this.$route.path 
+    const regionCode = this.$route.query.regionCode
+    const fullPath = this.$route.fullPath
+    let personType = null
+    if (path == '/h5/addrVer') { //0==宸ヤ綔浜哄憳 2==鑰冪偣鏍搁獙鍛�
+      personType = '2'
+    } else if (path == '/h5/staffSignIn') {
+      personType = '0'
     }
+    localStorage.setItem('_personType', personType)
+    localStorage.setItem('_regionCode', regionCode)
+    localStorage.setItem('_enterUrl', fullPath)
+    // const lastPersonType = localStorage.getItem('_personType')
+    // if (lastPersonType && lastPersonType !== personType) {
+    //   tokenUtils.clearTokens()
+    // }
     this.getUserInfo()
   },
   methods: {
diff --git a/src/views/h5/login/bind.vue b/src/views/h5/login/bind.vue
index ede5d35..fb77e56 100644
--- a/src/views/h5/login/bind.vue
+++ b/src/views/h5/login/bind.vue
@@ -34,6 +34,7 @@
 import { tokenUtils } from '@/utils/axios.js';
 import { useLoginStore } from '@/stores/login.js'
 import { storeToRefs } from 'pinia';
+import cityItems from '@/assets/json/cityItems.json'
 export default {
   setup() {
     const { lastRouteInfo } = storeToRefs(useLoginStore())
@@ -106,12 +107,12 @@
       }
     },
     login() {
-      const data = {
+      let data = {
         mobile: this.form.mobile,
         code: this.form.code,
         state: this.state,
         openid: this.openid,
-        wxCode: this.wxCode
+        wxCode: this.wxCode,
       }
       this.loginLoading = true
       this.$axios.post('/system/auth/staff/checkin/bind', data).then(async res => {
@@ -119,7 +120,7 @@
           const resData = res.data.data
           tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
           this.$message.success('缁戝畾鎴愬姛')
-          const path = localStorage.getItem('verify_url')
+          const path = localStorage.getItem('_enterUrl')
           if (path) {
             this.$router.replace(path)
           }
diff --git a/src/views/h5/login/index.vue b/src/views/h5/login/index.vue
index 86af36f..57ef81a 100644
--- a/src/views/h5/login/index.vue
+++ b/src/views/h5/login/index.vue
@@ -35,6 +35,7 @@
 import { useLoginStore } from '@/stores/login.js'
 import { storeToRefs } from 'pinia';
 import { isWeixin } from '@/utils/UA.js'
+import cityItems from '@/assets/json/cityItems.json'
 export default {
   setup() {
     const { lastRouteInfo } = storeToRefs(useLoginStore())
@@ -54,7 +55,6 @@
     }
   },
   created() {
-    
     tokenUtils.clearTokens()
     this.loginType = isWeixin ? 'weixin' : 'mobilePhone'
     if (isWeixin) {
@@ -110,7 +110,7 @@
       }
     },
     login() {
-      const data = {
+      let data = {
         mobile: this.form.mobile,
         code: this.form.code,
       }
@@ -120,7 +120,7 @@
           const resData = res.data.data
           tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
           this.$message.success('鐧诲綍鎴愬姛')
-          const path = localStorage.getItem('verify_url')
+          const path = localStorage.getItem('_enterUrl')
           if (path) {
             this.$router.replace(path)
           }
diff --git a/src/views/h5/login/redirect.vue b/src/views/h5/login/redirect.vue
index cb6b526..f1aebc2 100644
--- a/src/views/h5/login/redirect.vue
+++ b/src/views/h5/login/redirect.vue
@@ -86,11 +86,11 @@
           const resData = res.data.data || {}
           if (resData.userId) {
             tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
-            const path = localStorage.getItem('verify_url')
+            const path = localStorage.getItem('_enterUrl')
             if (path) {
               this.$router.replace(path)
             } else {
-              this.$router.replace('/h5/noVerAccess')
+              this.$message.error('鍙傛暟寮傚父锛岃閲嶆柊鎵爜鎴栬仈绯荤鐞嗗憳')
             }
           } else {
             this.$router.replace({ 
@@ -103,7 +103,9 @@
             })
           }
         } else {
-          this.$message.error(res.data.msg)
+          setTimeout(() => {
+            this.$router.replace({ path: '/h5/noTask', query: { tip: res.data.msg }})
+          }, 1000)
         }
       })
     }
diff --git a/src/views/h5/signup/BaiduMap.vue b/src/views/h5/map/BaiduMap.vue
similarity index 83%
rename from src/views/h5/signup/BaiduMap.vue
rename to src/views/h5/map/BaiduMap.vue
index 68d0b3d..614f694 100644
--- a/src/views/h5/signup/BaiduMap.vue
+++ b/src/views/h5/map/BaiduMap.vue
@@ -39,6 +39,7 @@
       type: Object,
       default: () => ({ lng: 0, lat: 0 })
     },
+    limitDistanceFlag: Boolean
   },
   data() {
     return {
@@ -60,7 +61,7 @@
     center: {
       handler: function(val) {
         const newPoint = new BMapGL.Point(val.lng, val.lat);
-        this.map.map.setCenter(newPoint)
+        this.map.setCenter(newPoint)
       },
       deep: true
     }
@@ -99,10 +100,19 @@
               lng: pt.lng,
               lat: pt.lat
             }
-            that.$emit('getUserPositionStatus', 'success')
-            that.diffDistance()
+            const positionAddressText = r.address.province + r.address.city + r.address.district + r.address.street
+            that.$emit('getUserPositionStatus', {
+              status: 'success',
+              userPositionText: positionAddressText
+            })
+            if (this.limitDistanceFlag) {
+              that.diffDistance()
+            } else {
+              const newPoint = new BMapGL.Point(that.userPosition.lng, that.userPosition.lat);
+              that.map.setCenter(newPoint)
+            }
         } else {
-          that.$emit('getUserPositionStatus', 'fail')
+          that.$emit('getUserPositionStatus', { status: 'fail' })
         }
       });
     },
diff --git a/src/views/h5/signup/index.vue b/src/views/h5/map/index.vue
similarity index 76%
rename from src/views/h5/signup/index.vue
rename to src/views/h5/map/index.vue
index f80cf0c..ded16a6 100644
--- a/src/views/h5/signup/index.vue
+++ b/src/views/h5/map/index.vue
@@ -11,7 +11,8 @@
           <div class="mapBox">
             <BaiduMap
               :center="centerPoint"
-              @getUserPositionStatus="(evt) => userPositionStatus = evt"
+              :limitDistanceFlag="limitDistanceFlag"
+              @getUserPositionStatus="getUserPositionStatus"
               @getMapStatus="(evt) => mapStatus = evt"
               @getDistance="getDistance"
             />
@@ -20,19 +21,21 @@
             <el-image 
               style="width: 50px;height: 50px;" 
               fit="contain" 
-              :src="$getImageUrl(`/map/position-marker-${positionError?'red':'green'}.png`)"
+              :src="$getImageUrl(`/map/position-marker-${limitDistanceFlag&&positionError?'red':'green'}.png`)"
             ></el-image>
           </div>
           <div class="text-sign">
             <el-text style="color: #8c8c8c;" v-if="userPositionStatus=='loading'">瀹氫綅涓�...</el-text>
-            <el-text style="color: #e73f3f;" v-else-if="userPositionStatus=='fail'">鑾峰彇瀹氫綅澶辫触锛屽綋鍓嶈澶囩殑瀹氫綅鏈嶅姟</el-text>
+            <el-text style="color: #e73f3f;" v-else-if="userPositionStatus=='fail'">鑾峰彇瀹氫綅澶辫触锛岃妫�鏌ュ綋鍓嶈澶囩殑瀹氫綅鏈嶅姟</el-text>
             <template v-else-if="userPositionStatus=='success'">
-              <el-text v-if="distance>0&&distance<500" style="color: #56c16d;">
-                浣嶇疆姝e父 璺濈绛惧埌鍦扮偣{{ distance }}绫�
-              </el-text>
-              <el-text v-else style="color: #e73f3f;">
-                瓒呭嚭绛惧埌鑼冨洿锛屼笉鍙鍒�
-              </el-text>
+              <template v-if="limitDistanceFlag">
+                <el-text v-if="distance>0&&distance<500" style="color: #56c16d;">
+                  浣嶇疆姝e父 璺濈绛惧埌鍦扮偣{{ distance }}绫�
+                </el-text>
+                <el-text v-else style="color: #e73f3f;">
+                  瓒呭嚭绛惧埌鑼冨洿锛屼笉鍙鍒�
+                </el-text>
+              </template>
             </template>
           </div>
         </div>
@@ -40,8 +43,8 @@
       <!-- <el-row justify="center">
         <el-text class="text-lg font-bold">{{ positionName }}</el-text>
       </el-row> -->
-      <el-row justify="center" class="mt-1">
-        <el-text class="text-lg text-info">{{ positionAddress }}</el-text>
+      <el-row justify="center" class="mt-7">
+        <el-text class="text-lg text-info" style="text-align: center;">{{ positionAddress }}</el-text>
       </el-row>
     </div>
     <el-row justify="center" class="mt-7">
@@ -59,7 +62,7 @@
 </template>
 
 <script>
-import BaiduMap from '@/views/h5/signup/BaiduMap.vue'
+import BaiduMap from '@/views/h5/map/BaiduMap.vue'
 import { useSessionStore } from '@/stores/session.js'
 import { storeToRefs } from 'pinia';
 export default {
@@ -83,7 +86,9 @@
         lat: 23.135618,
         lng: 113.27077
       },
-      clickCount: 0
+      clickCount: 0,
+      personType: 0,
+      limitDistanceFlag: false
     }
   },
   computed: {
@@ -111,13 +116,20 @@
     }
   },
   created() {
-    this.getSignupAddress()
+    const type = localStorage.getItem('_personType')
+    this.personType = Number(type)
+    if (this.personType == 2) {
+      this.limitDistanceFlag = true
+      this.getVerifyAddress()
+    } else {
+      this.limitDistanceFlag = false
+    }
   },
   async mounted() {
     this.currentTimeText = this.$dayjs().format('HH:mm')
   },
   methods: {
-    getSignupAddress() {
+    getVerifyAddress() {
       const params = { applicationId: this.appId }
       this.$axios.get('/exam/verify-record/get-by-application-id', { params }).then(res => {
         if (res.data.code == 0) {
@@ -135,7 +147,8 @@
       })
     },
     getUserPositionStatus(evt) {
-      this.userPositionStatus = evt
+      this.userPositionStatus = evt.status
+      this.positionAddress = evt.userPositionText
     },
     getDistance(evt) {
       this.distance = evt
@@ -152,19 +165,27 @@
           return
         }
       }
-      const data = {
+      let data = {
         targetId: this.appId,
-        targetType: 2,
+        targetType: this.personType,
         url: this.url,
-        type: 0
+        type: this.url ? 0 : 2
       }
       this.confirmLoading = true
       this.$axios.post('/exam/staff/checkin', data).then(res => {
         if (res.data.code == 0) {
-          this.$message.success('绛惧埌鎴愬姛')
           setTimeout(() => {
-            this.$router.replace({ path: '/h5/verForm', query: { appId: this.appId }})
+            if (data.targetType == 2) {
+              this.$message.success('绛惧埌鎴愬姛')
+              this.$router.replace({ path: '/h5/verForm', query: { appId: this.appId }})
+            } else {
+              this.$router.replace({ path: '/h5/signInSuccess', query: {
+                timeText: this.$dayjs().format('HH:mm:ss'),
+                address: this.positionAddress
+              }})
+            }
           }, 500)
+
         } else {
           this.$message.error(res.data.msg)
         }
diff --git a/src/views/h5/addrVerify/noAccess.vue b/src/views/h5/noTask/index.vue
similarity index 69%
rename from src/views/h5/addrVerify/noAccess.vue
rename to src/views/h5/noTask/index.vue
index 05aef8d..99d95cb 100644
--- a/src/views/h5/addrVerify/noAccess.vue
+++ b/src/views/h5/noTask/index.vue
@@ -2,7 +2,7 @@
   <div class="content">
     <el-image style="width: 150px" fit="contain" :src="$getImageUrl('/h5/noVerify.png')"></el-image>
     <el-row style="margin-top: 40px;">
-      <el-text class="text-center">鎮ㄩ潪鏈�冪偣璧勮川瀹℃牳鐨勬牳楠屽憳锛屾棤娉曟牳楠岋紝璇疯仈绯诲伐浣滀汉鍛樼‘璁ゃ��</el-text>
+      <el-text class="text-center">{{ tip }}</el-text>
     </el-row>
   </div>
 </template>
@@ -12,6 +12,11 @@
     return {
 
     }
+  },
+  computed: {
+    tip() {
+      return this.$route.query.tip || '鎮ㄩ潪鐩稿叧宸ヤ綔浜哄憳锛屾棤娉曠鍒帮紝璇疯仈绯诲伐浣滀汉鍛樼‘璁ゃ��'
+    }
   }
 }
 </script>
diff --git a/src/views/h5/signIn/index.vue b/src/views/h5/signIn/index.vue
new file mode 100644
index 0000000..c0c0cc7
--- /dev/null
+++ b/src/views/h5/signIn/index.vue
@@ -0,0 +1,75 @@
+<template>
+  <div></div>
+</template>
+<script>
+export default {
+  components: {},
+  data() {
+    return {
+      noTaskTip: ''
+    }
+  },
+  computed: {
+    appId() {
+      return this.$route.query.appId
+    }
+  },
+  async created() {
+    const canSignIn = await this.getCanSignIn()
+    if (!canSignIn) {
+      this.$router.replace({ path: '/h5/noTask', query: { tip: this.noTaskTip }})
+      return
+    }
+    const setting = await this.getSignInSetting()
+    
+    if (setting === 0) {
+      this.$router.replace({ path: '/h5/face', query: { appId: this.appId } })
+    } else if (setting === 2) {
+      this.$router.replace({ path: '/h5/map', query: { appId: this.appId } })
+    } else {
+      this.$router.replace({ path: '/h5/noTask', query: { tip: this.noTaskTip }})
+    }
+  },
+  mounted() {
+    document.title = '宸ヤ綔浜哄憳绛惧埌'
+  },
+  methods: {
+    getCanSignIn() {
+      return new Promise((resolve) => {
+        const params = {
+          targetId: '',
+          appraisalPlanId: this.appId
+        }
+        this.$axios.get('/exam/staff/checkin/open', { params }).then(res => {
+          if (res.data.code == 0) {
+            if (!res.data.data) {
+              this.noTaskTip = '褰撳墠璇勪环璁″垝鏈紑鍚鍒�'
+            }
+            resolve(res.data.data)
+          } else {
+            resolve(false)
+            this.$message.error(res.data.msg)
+          }
+        }, () => {
+          resolve(false)
+        })
+      })
+    },
+    getSignInSetting() {
+      return new Promise((resolve) => {
+        const params = { appraisalPlanId: this.appId }
+        this.$axios.get('/exam/staff/checkin/config', { params }).then(res => {
+          if (res.data.code == 0) {
+            resolve(res.data.data)
+          } else {
+            this.noTaskTip = res.data.msg
+            resolve(null)
+          }
+        }, () => {
+          resolve(null)
+        })
+      })
+    },
+  }
+}
+</script>
\ No newline at end of file
diff --git a/src/views/h5/signIn/signInSuccess.vue b/src/views/h5/signIn/signInSuccess.vue
new file mode 100644
index 0000000..94b0919
--- /dev/null
+++ b/src/views/h5/signIn/signInSuccess.vue
@@ -0,0 +1,49 @@
+<template>
+  <div class="p-7">
+    <el-row justify="center" class="mt-7">
+      <el-image style="width: 150px" fit="contain" :src="$getImageUrl('/signInSuccess.png')"></el-image>
+    </el-row>
+    <el-row justify="center">
+      <el-text class="font-bold text-2xl">
+        绛惧埌鎴愬姛
+      </el-text>
+    </el-row>
+    <div style="margin-top: 50px;" class="ml-4">
+      <el-row align="middle">
+        <Icon icon="material-symbols:person-rounded" width="20" height="20" class="mr-1" style="color: #cccccc" />
+        <el-text>濮撳悕锛歿{ userInfo.name }}</el-text>
+      </el-row>
+      <el-row class="mt-2" align="middle">
+        <Icon icon="mingcute:idcard-fill" width="18" height="18" class="mr-1" style="color: #cccccc" />
+        <el-text>韬唤璇佸熬鍙凤細{{ userInfo.idCard?.slice(-4) }}</el-text>
+      </el-row>
+      <el-row class="mt-2" align="middle">
+        <Icon icon="mdi:clock" width="18" height="18" class="mr-1" style="color: #cccccc" />
+        <el-text>绛惧埌鏃堕棿锛歿{ timeText }}</el-text>
+      </el-row>
+      <el-row class="mt-2" align="middle">
+        <Icon icon="game-icons:position-marker" width="18" height="18" class="mr-1" style="color: #cccccc" />
+        <el-text>{{ positionAddress }}</el-text>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import { useSessionStore } from '@/stores/session.js'
+import { storeToRefs } from 'pinia';
+export default {
+  setup() {
+    const { userInfo } = storeToRefs(useSessionStore()) 
+    return { userInfo } 
+  },
+  computed: {
+    positionAddress() {
+      return this.$route.query.address
+    },
+    timeText() {
+      return this.$route.query.timeText
+    }
+  },
+}
+</script>
\ No newline at end of file
diff --git a/vite.config.js b/vite.config.js
index 543eb21..e829416 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -8,9 +8,9 @@
 export default defineConfig({
   base: '/examination/verify',
   plugins: [vue(), vueDevTools()],
-  esbuild: {
-    drop: ['console', 'debugger']
-  },
+  // esbuild: {
+  //   drop: ['console', 'debugger']
+  // },
   define: {
     // 娉ㄥ叆鏋勫缓鏃堕棿鎴冲埌浠g爜涓�
     '__BUILD_TIME__': JSON.stringify(timestamp)
@@ -33,7 +33,7 @@
     host: '0.0.0.0',
     proxy: {
       '/app-api': {
-        target: 'http://101.43.143.75:48180', // dev
+        target: 'http://101.43.143.75:48080', // dev
         changeOrigin: true,
       },
     },

--
Gitblit v1.8.0