医疗互助系统:导入身份证号时trim一下; 医疗互助系统-会员台账身份证号码支持精确搜索,身份证号码输入后正则校验;

This commit is contained in:
2026-09-20 18:12:58 +08:00
parent 5c61ec443a
commit 0945ca26ff
3 changed files with 31 additions and 5 deletions
@@ -132,6 +132,8 @@ public class SickFundListController {
if (StrUtil.isNotBlank(keyWord)) {
seg.orLike("sfm.loginName", keyWord);
seg.orLike("sfm.userName", keyWord);
seg.or("sfm.idcard", "=", keyWord);
seg.or("u.idcard", "=", keyWord);
cnd.and(seg);
}
@@ -276,6 +278,8 @@ public class SickFundListController {
if (StrUtil.isNotBlank(keyWord)) {
seg.orLike("sfm.loginName", keyWord);
seg.orLike("sfm.userName", keyWord);
seg.or("sfm.idcard", "=", keyWord);
seg.or("u.idcard", "=", keyWord);
cnd.and(seg);
}
cnd.andEX("u.unionid", "=", unionId);
@@ -85,6 +85,7 @@ public class SickHelpMemberController {
// Map<String, Long> collect = loginNames.stream().filter(v -> StrUtil.isNotBlank(v)).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
for (SickFundMember fundMember : list) {
fundMember.setIdcard(StrUtil.trim(fundMember.getIdcard()));
// Cnd cnd = Cnd.where("loginName", "=", fundMember.getLoginName());
// cnd.and("userName", "=", fundMember.getUserName());
// SickFundMember oldFundMember = dao.fetch(SickFundMember.class, cnd);
@@ -101,7 +102,7 @@ public class SickHelpMemberController {
fundMember.setUnitName(user.getString("unitname"));
fundMember.setSex(user.getString("sex"));
if (StrUtil.isBlank(fundMember.getIdcard())) {
fundMember.setIdcard(user.getString("idcard"));
fundMember.setIdcard(StrUtil.trim(user.getString("idcard")));
}
// fundMember.setIsMember(true);
}
@@ -24,9 +24,9 @@ layout("/layouts/platform.html"){
</div>
<div class="search-item">
<div class="search-item-label">工号姓名:</div>
<div class="search-item-label">会员信息:</div>
<div class="search-item-option">
<el-input clearable maxlength="10" placeholder="可输入会员的工号或姓名进行查询"
<el-input clearable maxlength="50" placeholder="可输入会员的工号、姓名或身份证号进行查询"
v-model.trim="pageForm.keyWord"></el-input>
</div>
</div>
@@ -148,7 +148,8 @@ layout("/layouts/platform.html"){
</el-radio-group>
</el-form-item>
<el-form-item label="身份证号" prop="idcard">
<el-input maxlength="50" v-model.trim="formData.idcard"></el-input>
<el-input @input="$refs.form.validateField('idcard')" maxlength="18"
v-model.trim="formData.idcard"></el-input>
</el-form-item>
<el-form-item label="单位" prop="unitId">
@@ -197,6 +198,20 @@ layout("/layouts/platform.html"){
</div>
<script>
const idcardPattern = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
const validateIdcard = (rule, value, callback) => {
if (!value) {
callback()
return
}
if (!idcardPattern.test(value)) {
callback(new Error('请输入正确的身份证号'))
return
}
callback()
}
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
@@ -218,7 +233,7 @@ layout("/layouts/platform.html"){
loginName: [{required: true, message: '请输入工号', trigger: ['change', 'blur']}],
userName: [{required: true, message: '请输入姓名', trigger: ['change', 'blur']}],
// sex: [{required: true, message: '请选择性别', trigger: ['change', 'blur']}],
idcard: [{required: false, message: '请输入身份证号', trigger: ['change', 'blur']}],
idcard: [{validator: validateIdcard, trigger: ['change', 'blur']}],
unitName: [{required: false, message: '请输入单位', trigger: ['change', 'blur']}],
unitId: [{required: true, message: '请选择单位', trigger: ['change', 'blur']}],
isMember: [{required: true, message: '请选择是否会员', trigger: ['change', 'blur']}],
@@ -307,6 +322,12 @@ layout("/layouts/platform.html"){
})
},
async doHandle() {
const idcard = (this.formData.idcard || '').trim()
if (idcard && !idcardPattern.test(idcard)) {
this.notifyWarning('请输入正确的身份证号')
return
}
this.$set(this.formData, 'idcard', idcard || null)
const valid = await this.$refs.form.validate()
if (!valid) return
const url = this.formData.id ? '/doEdit' : '/doAdd'