Commit 7d600b6a35f4df823524ca8ce2cea0fc45be99ff

Authored by 张红振
1 parent e3309cb2

新增身份证获取详细信息

src/utils/tool.ts
@@ -3,7 +3,7 @@ import type { EnumArrayItem } from "@/@type/module/basic" @@ -3,7 +3,7 @@ import type { EnumArrayItem } from "@/@type/module/basic"
3 /** 3 /**
4 * 页面回退 4 * 页面回退
5 */ 5 */
6 - export function back() { 6 +export function back() {
7 history.go(-1) 7 history.go(-1)
8 } 8 }
9 9
@@ -11,7 +11,7 @@ import type { EnumArrayItem } from "@/@type/module/basic" @@ -11,7 +11,7 @@ import type { EnumArrayItem } from "@/@type/module/basic"
11 * 表单重置 11 * 表单重置
12 * @param {String} formName 表单名称 12 * @param {String} formName 表单名称
13 */ 13 */
14 - export function resetForm(formName) { 14 +export function resetForm(formName) {
15 this.$refs[formName].resetFields() 15 this.$refs[formName].resetFields()
16 } 16 }
17 17
@@ -21,7 +21,7 @@ import type { EnumArrayItem } from "@/@type/module/basic" @@ -21,7 +21,7 @@ import type { EnumArrayItem } from "@/@type/module/basic"
21 * @returns {number} s 小数点两位 21 * @returns {number} s 小数点两位
22 */ 22 */
23 23
24 - export function toDecimal2(x) { 24 +export function toDecimal2(x) {
25 var f = parseFloat(x) 25 var f = parseFloat(x)
26 if (isNaN(f)) { 26 if (isNaN(f)) {
27 return false 27 return false
@@ -45,7 +45,7 @@ import type { EnumArrayItem } from "@/@type/module/basic" @@ -45,7 +45,7 @@ import type { EnumArrayItem } from "@/@type/module/basic"
45 * @param {string} cFormat 转换格式 45 * @param {string} cFormat 转换格式
46 * @returns {string | null} 46 * @returns {string | null}
47 */ 47 */
48 - export function parseTime(time, cFormat) { 48 +export function parseTime(time, cFormat) {
49 if (arguments.length === 0 || !time) { 49 if (arguments.length === 0 || !time) {
50 return null 50 return null
51 } 51 }
@@ -145,8 +145,8 @@ export function formatTime(time, option) { @@ -145,8 +145,8 @@ export function formatTime(time, option) {
145 * @param {Array.EnumData} groupData 145 * @param {Array.EnumData} groupData
146 * @returns {string} 146 * @returns {string}
147 */ 147 */
148 -export function globalFilters (value: number, groupData: EnumArrayItem[]) {  
149 - if(groupData.length && (~~value === 0 || !!value)) { 148 +export function globalFilters(value: number, groupData: EnumArrayItem[]) {
  149 + if (groupData.length && (~~value === 0 || !!value)) {
150 return groupData.find(item => ~~item.value === ~~value)['label'] 150 return groupData.find(item => ~~item.value === ~~value)['label']
151 } else { 151 } else {
152 return value 152 return value
@@ -158,7 +158,7 @@ export function globalFilters (value: number, groupData: EnumArrayItem[]) { @@ -158,7 +158,7 @@ export function globalFilters (value: number, groupData: EnumArrayItem[]) {
158 * @param {object} data 158 * @param {object} data
159 * @returns {FormData} fd 159 * @returns {FormData} fd
160 */ 160 */
161 -export function formDataWrapper (data: any) { 161 +export function formDataWrapper(data: any) {
162 const fd: any = new FormData() 162 const fd: any = new FormData()
163 for (let i in data) { 163 for (let i in data) {
164 fd.append(i, data[i]) 164 fd.append(i, data[i])
@@ -171,11 +171,49 @@ export function formDataWrapper (data: any) { @@ -171,11 +171,49 @@ export function formDataWrapper (data: any) {
171 * @param {object} data 171 * @param {object} data
172 * @returns {FormData} fd 172 * @returns {FormData} fd
173 */ 173 */
174 - export function deleteEmptyParam (params: any) { 174 +export function deleteEmptyParam(params: any) {
175 for (const i in params) { 175 for (const i in params) {
176 if (!(params[i] + '').trim()) { 176 if (!(params[i] + '').trim()) {
177 delete params[i] 177 delete params[i]
178 } 178 }
179 } 179 }
180 return params 180 return params
  181 +}
  182 +
  183 +/***
  184 + * 根据身份证获取性别
  185 + * @param { string } value 身份证号
  186 + * @return { string } 性别
  187 + */
  188 +export function getSex(value: string): string {
  189 + return parseInt(value.substr(16, 1)) % 2 == 1 ? '男' : '女'
  190 +}
  191 +/***
  192 + * 根据身份证获取年龄
  193 + * @param { string } value 身份证号
  194 + * @return { number } 年龄
  195 + */
  196 +export function getAge(value: any ): number {
  197 +
  198 + let myDate = new Date()
  199 + let month = myDate.getMonth() + 1
  200 + let day = myDate.getDate()
  201 + // let valueDate=
  202 + let age = myDate.getFullYear() - value.substring(6, 10) - 1
  203 + if (
  204 + value.substring(10, 12) < month ||
  205 + (value.substring(10, 12) == month &&
  206 + value.substring(12, 14) <= day)
  207 + ) {
  208 + age++
  209 + }
  210 + return age
  211 +}
  212 +/***
  213 + * 根据身份证获取出生日期
  214 + * @param { string } value 身份证号
  215 + * @return { string } 出生日期
  216 + */
  217 +export function getBirthDate(value: string ): string {
  218 + return `${value.substring(6, 10)}-${value.substring(10, 12)}-${value.substring(12, 14)}`
181 } 219 }
182 \ No newline at end of file 220 \ No newline at end of file
src/views/housekeeper/buildinMganager/detail.vue
@@ -3,6 +3,7 @@ import { reactive, ref, getCurrentInstance, defineExpose } from &quot;vue&quot;; @@ -3,6 +3,7 @@ import { reactive, ref, getCurrentInstance, defineExpose } from &quot;vue&quot;;
3 import type { ElForm } from "element-plus"; 3 import type { ElForm } from "element-plus";
4 import { insertOrUpdate } from "@/api/housekeeper/buildinMganager.ts"; 4 import { insertOrUpdate } from "@/api/housekeeper/buildinMganager.ts";
5 import { validMobile, checkIdcard } from "@/utils/validate"; 5 import { validMobile, checkIdcard } from "@/utils/validate";
  6 +import { getSex, getBirthDate } from "@/utils/tool";
6 7
7 const ruleFormRef = ref<InstanceType<typeof ElForm>>(); 8 const ruleFormRef = ref<InstanceType<typeof ElForm>>();
8 let instance: ComponentInternalInstance | null = getCurrentInstance(); //获取app实例 9 let instance: ComponentInternalInstance | null = getCurrentInstance(); //获取app实例
@@ -56,6 +57,8 @@ const checkPhone = (rules, value, callback) =&gt; { @@ -56,6 +57,8 @@ const checkPhone = (rules, value, callback) =&gt; {
56 */ 57 */
57 const checkCard = (rules, value, callback) => { 58 const checkCard = (rules, value, callback) => {
58 if (checkIdcard(value)) { 59 if (checkIdcard(value)) {
  60 + props.formObj.gender= getSex(value)=="男"?1:0
  61 + props.formObj.birthdate= getBirthDate(value)
59 callback(); 62 callback();
60 } else { 63 } else {
61 callback(new Error("请填写正确的身份证")); 64 callback(new Error("请填写正确的身份证"));
src/views/serviceman/detail.vue
@@ -9,7 +9,8 @@ import { @@ -9,7 +9,8 @@ import {
9 import type { ElForm } from "element-plus"; 9 import type { ElForm } from "element-plus";
10 import { addOrUpdate } from "@/api/notify/serviceman.ts"; 10 import { addOrUpdate } from "@/api/notify/serviceman.ts";
11 import { getTableList } from "@/api/community/residence.ts"; 11 import { getTableList } from "@/api/community/residence.ts";
12 -import { validMobile, idcardEasy } from "@/utils/validate"; 12 +import { validMobile, checkIdcard } from "@/utils/validate";
  13 +import { getSex, getAge } from "@/utils/tool";
13 14
14 const ruleFormRef = ref<InstanceType<typeof ElForm>>(); 15 const ruleFormRef = ref<InstanceType<typeof ElForm>>();
15 let instance: ComponentInternalInstance | null = getCurrentInstance(); //获取app实例 16 let instance: ComponentInternalInstance | null = getCurrentInstance(); //获取app实例
@@ -52,7 +53,9 @@ const checkPhone = (rules, value, callback) =&gt; { @@ -52,7 +53,9 @@ const checkPhone = (rules, value, callback) =&gt; {
52 * @callback checkCard~checkCallback 53 * @callback checkCard~checkCallback
53 */ 54 */
54 const checkCard = (rules, value, callback) => { 55 const checkCard = (rules, value, callback) => {
55 - if (idcardEasy(value)) { 56 + if (checkIdcard(value)) {
  57 + props.formObj.sex = getSex(value);
  58 + props.formObj.age = getAge(value);
56 callback(); 59 callback();
57 } else { 60 } else {
58 callback(new Error("请填写正确的身份证")); 61 callback(new Error("请填写正确的身份证"));
@@ -74,7 +77,7 @@ const rules = reactive({ @@ -74,7 +77,7 @@ const rules = reactive({
74 message: "请输入年龄", 77 message: "请输入年龄",
75 trigger: "blur", 78 trigger: "blur",
76 }, 79 },
77 - { type: "number", message: "请输入正确的年龄", max: 120,min:1 }, 80 + { type: "number", message: "请输入正确的年龄", max: 120, min: 1 },
78 ], 81 ],
79 mobile: [ 82 mobile: [
80 { 83 {
@@ -139,7 +142,6 @@ let submitForm = (formEl: InstanceType&lt;typeof ElForm&gt; | undefined) =&gt; { @@ -139,7 +142,6 @@ let submitForm = (formEl: InstanceType&lt;typeof ElForm&gt; | undefined) =&gt; {
139 }) 142 })
140 .toString(); 143 .toString();
141 params = Object.assign(params, { ids: ids }); 144 params = Object.assign(params, { ids: ids });
142 - // console.log({ accendant: params, neighborhoodIds: ids })  
143 addOrUpdate(params) 145 addOrUpdate(params)
144 .then((res) => { 146 .then((res) => {
145 data.loading = false; 147 data.loading = false;
@@ -189,12 +191,14 @@ onMounted(() =&gt; { @@ -189,12 +191,14 @@ onMounted(() =&gt; {
189 maxlength="10" 191 maxlength="10"
190 ></el-input> 192 ></el-input>
191 </el-form-item> 193 </el-form-item>
192 - <el-form-item label="年龄:" prop="age"> 194 + <el-form-item label="身份证号:" prop="idCard">
193 <el-input 195 <el-input
194 - v-model.number="props.formObj.age"  
195 - placeholder="请输入年龄" 196 + v-model="props.formObj.idCard"
  197 + placeholder="请输入身份证号"
  198 + maxlength="18"
196 ></el-input> 199 ></el-input>
197 </el-form-item> 200 </el-form-item>
  201 +
198 <el-form-item label="联系电话:" prop="mobile"> 202 <el-form-item label="联系电话:" prop="mobile">
199 <el-input 203 <el-input
200 v-model="props.formObj.mobile" 204 v-model="props.formObj.mobile"
@@ -203,13 +207,7 @@ onMounted(() =&gt; { @@ -203,13 +207,7 @@ onMounted(() =&gt; {
203 :disabled="props.formObj.id" 207 :disabled="props.formObj.id"
204 ></el-input> 208 ></el-input>
205 </el-form-item> 209 </el-form-item>
206 - <el-form-item label="身份证号:" prop="idCard">  
207 - <el-input  
208 - v-model="props.formObj.idCard"  
209 - placeholder="请输入身份证号"  
210 - maxlength="18"  
211 - ></el-input>  
212 - </el-form-item> 210 +
213 <el-form-item label="服务小区:" prop="neighborhoods"> 211 <el-form-item label="服务小区:" prop="neighborhoods">
214 <el-select 212 <el-select
215 v-model="props.formObj.neighborhoods" 213 v-model="props.formObj.neighborhoods"
@@ -227,8 +225,16 @@ onMounted(() =&gt; { @@ -227,8 +225,16 @@ onMounted(() =&gt; {
227 </el-option> 225 </el-option>
228 </el-select> 226 </el-select>
229 </el-form-item> 227 </el-form-item>
  228 + <el-form-item label="年龄:" prop="age">
  229 + <el-input
  230 + :disabled="true"
  231 + v-model.number="props.formObj.age"
  232 + placeholder="请输入年龄"
  233 + ></el-input>
  234 + </el-form-item>
230 <el-form-item label="性别:" prop="sex"> 235 <el-form-item label="性别:" prop="sex">
231 <el-select 236 <el-select
  237 + :disabled="true"
232 v-model="props.formObj.sex" 238 v-model="props.formObj.sex"
233 placeholder="请选择性别" 239 placeholder="请选择性别"
234 style="width: 100%" 240 style="width: 100%"