From 16593e60e5fc2dedddf838536046e7a6946a2b8c Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 18 八月 2025 16:50:16 +0800
Subject: [PATCH] fix: bug

---
 src/views/FlexJobManage/components/StaffInfoDialog.vue |   13 +++++++++++--
 src/utils/common/common.ts                             |   24 ++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/utils/common/common.ts b/src/utils/common/common.ts
index b05dfc3..9965df0 100644
--- a/src/utils/common/common.ts
+++ b/src/utils/common/common.ts
@@ -106,3 +106,27 @@
 export function filterNumbersFromString(str: string) {
   return str.replace(/\D/g, '');
 }
+
+export function calculateAge(idCardNumber) {
+  if (BoleRegExp.RegIDCard.test(idCardNumber)) {
+    const birthDateStr = idCardNumber.match(/(\d{6})(\d{8})/)[2];
+    const birthDate = new Date(
+      birthDateStr.substring(0, 4),
+      birthDateStr.substring(4, 6) - 1,
+      birthDateStr.substring(6, 8)
+    );
+
+    // Calculate age
+    const today = new Date();
+    const age =
+      today.getFullYear() -
+      birthDate.getFullYear() -
+      (today.getMonth() < birthDate.getMonth() ||
+      (today.getMonth() === birthDate.getMonth() && today.getDate() < birthDate.getDate())
+        ? 1
+        : 0);
+
+    return age;
+  }
+  return null;
+}
diff --git a/src/views/FlexJobManage/components/StaffInfoDialog.vue b/src/views/FlexJobManage/components/StaffInfoDialog.vue
index f7367a0..0dd52d5 100644
--- a/src/views/FlexJobManage/components/StaffInfoDialog.vue
+++ b/src/views/FlexJobManage/components/StaffInfoDialog.vue
@@ -25,7 +25,11 @@
             prop="identity"
             :check-rules="[{ message: '璇疯緭鍏ヨ韩浠借瘉鍙�', type: 'idCard' }]"
           >
-            <ProFormText placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" v-model.trim="form.identity"></ProFormText>
+            <ProFormText
+              placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"
+              v-model.trim="form.identity"
+              @blur="handleCalculateAge"
+            ></ProFormText>
           </ProFormItemV2>
         </ProFormColItem>
         <ProFormColItem :span="12">
@@ -148,8 +152,9 @@
   ProFormUpload,
   ProFormInputNumber,
 } from '@bole-core/components';
-import { deepClone, format } from '@/utils';
+import { calculateAge, deepClone, format } from '@/utils';
 import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
+import { BoleRegExp } from '@bole-core/core';
 
 defineOptions({
   name: 'StaffInfoDialog',
@@ -215,4 +220,8 @@
 function handleReset() {
   form.value = { ...defaultForm };
 }
+
+function handleCalculateAge() {
+  form.value.age = calculateAge(form.value.identity);
+}
 </script>

--
Gitblit v1.9.1