医疗互助系统:导入身份证号时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)) { if (StrUtil.isNotBlank(keyWord)) {
seg.orLike("sfm.loginName", keyWord); seg.orLike("sfm.loginName", keyWord);
seg.orLike("sfm.userName", keyWord); seg.orLike("sfm.userName", keyWord);
seg.or("sfm.idcard", "=", keyWord);
seg.or("u.idcard", "=", keyWord);
cnd.and(seg); cnd.and(seg);
} }
@@ -276,6 +278,8 @@ public class SickFundListController {
if (StrUtil.isNotBlank(keyWord)) { if (StrUtil.isNotBlank(keyWord)) {
seg.orLike("sfm.loginName", keyWord); seg.orLike("sfm.loginName", keyWord);
seg.orLike("sfm.userName", keyWord); seg.orLike("sfm.userName", keyWord);
seg.or("sfm.idcard", "=", keyWord);
seg.or("u.idcard", "=", keyWord);
cnd.and(seg); cnd.and(seg);
} }
cnd.andEX("u.unionid", "=", unionId); 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())); // Map<String, Long> collect = loginNames.stream().filter(v -> StrUtil.isNotBlank(v)).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
for (SickFundMember fundMember : list) { for (SickFundMember fundMember : list) {
fundMember.setIdcard(StrUtil.trim(fundMember.getIdcard()));
// Cnd cnd = Cnd.where("loginName", "=", fundMember.getLoginName()); // Cnd cnd = Cnd.where("loginName", "=", fundMember.getLoginName());
// cnd.and("userName", "=", fundMember.getUserName()); // cnd.and("userName", "=", fundMember.getUserName());
// SickFundMember oldFundMember = dao.fetch(SickFundMember.class, cnd); // SickFundMember oldFundMember = dao.fetch(SickFundMember.class, cnd);
@@ -101,7 +102,7 @@ public class SickHelpMemberController {
fundMember.setUnitName(user.getString("unitname")); fundMember.setUnitName(user.getString("unitname"));
fundMember.setSex(user.getString("sex")); fundMember.setSex(user.getString("sex"));
if (StrUtil.isBlank(fundMember.getIdcard())) { if (StrUtil.isBlank(fundMember.getIdcard())) {
fundMember.setIdcard(user.getString("idcard")); fundMember.setIdcard(StrUtil.trim(user.getString("idcard")));
} }
// fundMember.setIsMember(true); // fundMember.setIsMember(true);
} }
@@ -24,9 +24,9 @@ layout("/layouts/platform.html"){
</div> </div>
<div class="search-item"> <div class="search-item">
<div class="search-item-label">工号姓名:</div> <div class="search-item-label">会员信息:</div>
<div class="search-item-option"> <div class="search-item-option">
<el-input clearable maxlength="10" placeholder="可输入会员的工号或姓名进行查询" <el-input clearable maxlength="50" placeholder="可输入会员的工号、姓名或身份证号进行查询"
v-model.trim="pageForm.keyWord"></el-input> v-model.trim="pageForm.keyWord"></el-input>
</div> </div>
</div> </div>
@@ -148,7 +148,8 @@ layout("/layouts/platform.html"){
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="idcard"> <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>
<el-form-item label="单位" prop="unitId"> <el-form-item label="单位" prop="unitId">
@@ -197,6 +198,20 @@ layout("/layouts/platform.html"){
</div> </div>
<script> <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({ const vue = new Vue({
el: '#app', el: '#app',
mixins: [initTableMixins], mixins: [initTableMixins],
@@ -218,7 +233,7 @@ layout("/layouts/platform.html"){
loginName: [{required: true, message: '请输入工号', trigger: ['change', 'blur']}], loginName: [{required: true, message: '请输入工号', trigger: ['change', 'blur']}],
userName: [{required: true, message: '请输入姓名', trigger: ['change', 'blur']}], userName: [{required: true, message: '请输入姓名', trigger: ['change', 'blur']}],
// sex: [{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']}], unitName: [{required: false, message: '请输入单位', trigger: ['change', 'blur']}],
unitId: [{required: true, message: '请选择单位', trigger: ['change', 'blur']}], unitId: [{required: true, message: '请选择单位', trigger: ['change', 'blur']}],
isMember: [{required: true, message: '请选择是否会员', trigger: ['change', 'blur']}], isMember: [{required: true, message: '请选择是否会员', trigger: ['change', 'blur']}],
@@ -307,6 +322,12 @@ layout("/layouts/platform.html"){
}) })
}, },
async doHandle() { 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() const valid = await this.$refs.form.validate()
if (!valid) return if (!valid) return
const url = this.formData.id ? '/doEdit' : '/doAdd' const url = this.formData.id ? '/doEdit' : '/doAdd'