用户管理身份证信息增加

dev_xd
haha 2025-02-22 10:56:47 +08:00
parent c9fb9f9f56
commit 8ccb8fefd5
6 changed files with 123 additions and 29 deletions

View File

@ -81,6 +81,17 @@ public class SmzSspProblemmodifyController extends BaseController
return toAjax(smzSspProblemmodifyService.insertSmzSspProblemmodify(smzSspProblemmodify)); return toAjax(smzSspProblemmodifyService.insertSmzSspProblemmodify(smzSspProblemmodify));
} }
/**
*
*/
@RequiresPermissions("trouble:problemmodify:add")
@Log(title = "安全隐患整改", businessType = BusinessType.INSERT)
@PostMapping("/batchAdd")
public AjaxResult batchAdd(@RequestBody List<SmzSspProblemmodify> list)
{
return toAjax(smzSspProblemmodifyService.insertSmzSspProblemmodifies(list));
}
/** /**
* *
*/ */

View File

@ -58,4 +58,6 @@ public interface ISmzSspProblemmodifyService
* @return * @return
*/ */
public int deleteSmzSspProblemmodifyById(Long id); public int deleteSmzSspProblemmodifyById(Long id);
public int insertSmzSspProblemmodifies(List<SmzSspProblemmodify> list);
} }

View File

@ -246,7 +246,6 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
proProjectInfoSubdeptsUsers.setCreateTime(DateUtils.getNowDate()); proProjectInfoSubdeptsUsers.setCreateTime(DateUtils.getNowDate());
proProjectInfoSubdeptsUsers.setSubStep(2L); proProjectInfoSubdeptsUsers.setSubStep(2L);
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.passed.getCode()); proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.passed.getCode());
proProjectInfoSubdeptsUsers.setUserPost(UserPostEnums.JSDWGL.getCode());
//查询管理班组 //查询管理班组
ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup(); ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();

View File

@ -2,6 +2,7 @@ package com.yanzhu.manage.service.impl;
import java.util.List; import java.util.List;
import com.yanzhu.common.core.context.SecurityContextHolder;
import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -55,6 +56,7 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
public int insertSmzSspProblemmodify(SmzSspProblemmodify smzSspProblemmodify) public int insertSmzSspProblemmodify(SmzSspProblemmodify smzSspProblemmodify)
{ {
smzSspProblemmodify.setCreateTime(DateUtils.getNowDate()); smzSspProblemmodify.setCreateTime(DateUtils.getNowDate());
smzSspProblemmodify.setCreateBy(SecurityContextHolder.getUserName());
return smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify); return smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
} }
@ -68,6 +70,7 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
public int updateSmzSspProblemmodify(SmzSspProblemmodify smzSspProblemmodify) public int updateSmzSspProblemmodify(SmzSspProblemmodify smzSspProblemmodify)
{ {
smzSspProblemmodify.setUpdateTime(DateUtils.getNowDate()); smzSspProblemmodify.setUpdateTime(DateUtils.getNowDate());
smzSspProblemmodify.setUpdateBy(SecurityContextHolder.getUserName());
return smzSspProblemmodifyMapper.updateSmzSspProblemmodify(smzSspProblemmodify); return smzSspProblemmodifyMapper.updateSmzSspProblemmodify(smzSspProblemmodify);
} }
@ -94,4 +97,13 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
{ {
return smzSspProblemmodifyMapper.deleteSmzSspProblemmodifyById(id); return smzSspProblemmodifyMapper.deleteSmzSspProblemmodifyById(id);
} }
@Override
public int insertSmzSspProblemmodifies(List<SmzSspProblemmodify> list) {
list.stream().forEach(it->{
it.setCreateTime(DateUtils.getNowDate());
it.setCreateBy(SecurityContextHolder.getUserName());
});
return 0;
}
} }

View File

@ -184,7 +184,7 @@
<el-form-item label="用户状态"> <el-form-item label="用户状态">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label
}}</el-radio> }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -222,19 +222,25 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.userType == '99'"> <el-col :span="24" v-if="form.userType == '99'">
<el-form-item label="身份证信息" prop="cardImgPos"> <el-form-item label="身份证信息">
<el-col :span="8"> <el-col :span="8">
<div class="div-header">头像面</div> <div class="div-header">头像面</div>
<image-upload v-model="form.cardImgPos" :limit="1" class="identification-card-1" <el-form-item label="" prop="cardImgPos">
@change="doImageUpload(1)" /> <image-upload v-model="form.cardImgPos" :limit="1" class="identification-card-1"
@change="doImageUpload(1)" />
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="div-header">国徽面</div> <div class="div-header">国徽面</div>
<image-upload v-model="form.cardImgInv" :limit="1" class="identification-card-2" /> <el-form-item label="" prop="cardImgInv">
<image-upload v-model="form.cardImgInv" :limit="1" class="identification-card-2" />
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="div-header">人脸识别头像</div> <div class="div-header">人脸识别头像</div>
<image-upload v-model="form.avatar" :limit="1" class="face-image" /> <el-form-item label="" prop="avatar">
<image-upload v-model="form.avatar" :limit="1" class="face-image" />
</el-form-item>
</el-col> </el-col>
</el-form-item> </el-form-item>
<!-- <!--
@ -399,8 +405,8 @@ function doImageUpload(type) {
url = location.origin + url; url = location.origin + url;
//url="http://62.234.3.186/statics/2025/01/19/4491f170cd1609142f9a6f097cbf681f_20250119000046A004.jpg" //url="http://62.234.3.186/statics/2025/01/19/4491f170cd1609142f9a6f097cbf681f_20250119000046A004.jpg"
proxy.$http.get(`/system/tools/id/front?url=${url}`).then(d => { proxy.$http.get(`/system/tools/id/front?url=${url}`).then(d => {
form.value.userName = d.data.name || form.value.userName || ''; form.value.nickName = d.data.name || form.value.nickName || '';
form.value.certificateCode = d.data.cardId || form.value.certificateCode || ''; form.value.cardCode = d.data.cardId || form.value.cardCode || '';
form.value.address = d.data.address || form.value.address || ''; form.value.address = d.data.address || form.value.address || '';
form.value.nativePlace = d.data.native || form.value.native || ''; form.value.nativePlace = d.data.native || form.value.native || '';
let nation = d.data.nation || ""; let nation = d.data.nation || "";
@ -483,6 +489,8 @@ function doRoleChange() {
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }], password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }], phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }], cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
cardImgPos: [{ required: true, message: "身份证正面不能为空", trigger: "change" }],
cardImgInv: [{ required: true, message: "身份证反面不能为空", trigger: "change" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }], avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }], roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
} }
@ -509,6 +517,8 @@ function doRoleChange() {
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }], workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }], phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }], cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
cardImgPos: [{ required: true, message: "身份证正面不能为空", trigger: "change" }],
cardImgInv: [{ required: true, message: "身份证反面不能为空", trigger: "change" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }], avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }], roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
} }

View File

@ -67,63 +67,75 @@
<el-table-column align="center" width="180" class-name="td-proble-type" label="隐患类型"> <el-table-column align="center" width="180" class-name="td-proble-type" label="隐患类型">
<template #default="scope"> <template #default="scope">
<div :class="scope.row.errProblemType?'is-err':''"> <div :class="scope.row.errProblemType?'is-err':''">
<el-select v-model="scope.row.problemType" placeholder="请选择检查类型" clearable> <el-select v-model="scope.row.problemType" placeholder="请选择检查类型" clearable @change="scope.row.errProblemType=scope.row.problemType?false:true">
<el-option v-for="dict in ssp_proble_type" :key="dict.value" :label="dict.label" :value="dict.value"> <el-option v-for="dict in ssp_proble_type" :key="dict.value" :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<el-select v-model="scope.row.dangerType" placeholder="请选择隐患类型" clearable style="margin-top:80px;"> <div :class="scope.row.errDangerType?'is-err':''">
<el-select v-model="scope.row.dangerType" placeholder="请选择隐患类型" clearable style="margin-top:80px;" @change="scope.row.errDangerType=scope.row.dangerType?false:true">
<el-option v-for="dict in ssp_proble_sub_type" :key="dict.value" :label="dict.label" :value="dict.value"> <el-option v-for="dict in ssp_proble_sub_type" :key="dict.value" :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="施工部位" align="center" prop="workParts" min-width="240" class-name="td-textarea"> <el-table-column label="施工部位" align="center" prop="workParts" min-width="240" class-name="td-textarea">
<template #default="scope"> <template #default="scope">
<div :class="scope.row.errWorkParts?'is-err':''">
<el-input v-model="scope.row.workParts" placeholder="请输入施工部位" type="textarea" :rows="3" /> <el-input v-model="scope.row.workParts" placeholder="请输入施工部位" type="textarea" :rows="3" @change="scope.row.errWorkParts=scope.row.workParts?false:true" />
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="整改要求" align="center" prop="changeInfo" min-width="240" class-name="td-textarea"> <el-table-column label="整改要求" align="center" prop="changeInfo" min-width="240" class-name="td-textarea">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.changeInfo" placeholder="请输入整改要求" type="textarea" :rows="3" /> <div :class="scope.row.errChangeInfo?'is-err':''">
<el-input v-model="scope.row.changeInfo" placeholder="请输入整改要求" type="textarea" :rows="3" @change="scope.row.errChangeInfo=scope.row.changeInfo?false:true" />
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="问题人员" align="center" width="300" class-name="td-select"> <el-table-column label="问题人员" align="center" width="300" class-name="td-select">
<template #default="scope"> <template #default="scope">
<el-form-item label="整改人"> <el-form-item label="整改人">
<el-select v-model="scope.row.lordSent" placeholder="请选择人员" clearable <div :class="scope.row.errLordSent?'is-err':''" style="width: 100%;">
<el-select v-model="scope.row.lordSent" placeholder="请选择人员" clearable @change="scope.row.errLordSent=scope.row.lordSent?false:true"
popper-class="select-popper-group-pd"> popper-class="select-popper-group-pd">
<el-option-group v-for="group in data.modUserList" :key="group.label" :label="group.label"> <el-option-group v-for="group in data.modUserList" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" />
</el-option-group> </el-option-group>
</el-select> </el-select>
</div>
</el-form-item> </el-form-item>
<el-form-item label="抄送人"> <el-form-item label="抄送人">
<el-select v-model="scope.row.copySend" placeholder="请选择人员" clearable multiple collapse-tags <div :class="scope.row.errCopySend?'is-err':''" style="width: 100%;">
<el-select v-model="scope.row.copySend" placeholder="请选择人员" clearable multiple collapse-tags @change="scope.row.errCopySend=scope.row.copySend?false:true"
popper-class="select-popper-group-pd" collapse-tags-tooltip> popper-class="select-popper-group-pd" collapse-tags-tooltip>
<el-option-group v-for="group in data.ccUserList" :key="group.label" :label="group.label"> <el-option-group v-for="group in data.ccUserList" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" />
</el-option-group> </el-option-group>
</el-select> </el-select>
</div>
</el-form-item> </el-form-item>
<el-form-item label="复检人"> <el-form-item label="复检人">
<el-select v-model="scope.row.recheckSend" placeholder="请选择人员" clearable <div :class="scope.row.errRecheckSend?'is-err':''" style="width: 100%;">
<el-select v-model="scope.row.recheckSend" placeholder="请选择人员" clearable @change="scope.row.errRecheckSend=scope.row.recheckSend?false:true"
popper-class="select-popper-group-pd" collapse-tags-tooltip> popper-class="select-popper-group-pd" collapse-tags-tooltip>
<el-option-group v-for="group in data.recheckUserList" :key="group.label" :label="group.label"> <el-option-group v-for="group in data.recheckUserList" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" />
</el-option-group> </el-option-group>
</el-select> </el-select>
</div>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="整改截至时间" align="center" prop="nickedTime" width="150"> <el-table-column label="整改截至时间" align="center" prop="nickedTime" width="180" class-name="td-select">
<template #default="scope"> <template #default="scope">
<el-form-item label=""> <el-form-item label="">
<el-date-picker v-model="scope.row.nickedTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" <div :class="scope.row.errNickedTime?'is-err':''" style="width: 100%;">
style="width: 200px" /> <el-date-picker v-model="scope.row.nickedTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" @change="scope.row.errNickedTime=scope.row.nickedTime?false:true"
style="width: 100%" />
</div>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -250,26 +262,66 @@ function dataSynchronization() {
}); });
} }
function submitRow(row) { function submitRow(row) {
debugger
if (checkRow(row)) { if (checkRow(row)) {
} }
} }
function batchSubmitForm(){
data.selData.forEach(it => {
if (checkRow(it)) {
data.showList.splice(it,1);
data.dataList.splice(it,1);
}
});
}
function checkRow(row) { function checkRow(row) {
row.errSmarkUrl=false; row.errSmarkUrl=false;
row.errProblemType=false; row.errProblemType=false;
row.errDangerType=false;
row.errWorkParts=false;
row.errChangeInfo=false;
row.errLordSent=false;
row.errCopySend=false;
row.errRecheckSend=false;
row.errNickedTime=false;
let ret = true;
if (!row.smarkUrl) { if (!row.smarkUrl) {
row.errSmarkUrl=true; row.errSmarkUrl=true;
return false; ret= false;
} }
if (!row.problemType) { if (!row.problemType) {
row.errProblemType=true; row.errProblemType=true;
return false; ret= false;
} }
if (!row.dangerType ) { if (!row.dangerType ) {
return false; row.errDangerType=true;
ret= false;
} }
return true; if (!row.workParts ) {
row.errWorkParts=true;
ret= false;
}
if (!row.changeInfo ) {
row.errChangeInfo=true;
ret= false;
}
if (!row.lordSent ) {
row.errLordSent=true;
ret= false;
}
if (!row.copySend ) {
row.errCopySend=true;
ret= false;
}
if (!row.recheckSend ) {
row.errRecheckSend=true;
ret= false;
}
if (!row.nickedTime ) {
row.errNickedTime=true;
ret= false;
}
return ret;
} }
/** 提交按钮 */ /** 提交按钮 */
@ -342,7 +394,6 @@ function makeSelectData(users, type) {
}) })
}) })
} }
console.log("--->", arr)
return arr; return arr;
} }
function getUserTree() { function getUserTree() {
@ -404,9 +455,15 @@ getUserTree();
} }
} }
.td-select { .el-select { .td-select {
.el-select {
width: 100%; width: 100%;
} }
.is-err{
&::after{
bottom:-15px;
}
}
} }
.is-err{ .is-err{
position: relative; position: relative;
@ -420,7 +477,10 @@ getUserTree();
left: 0px; left: 0px;
font-size:12px; font-size:12px;
position:absolute; position:absolute;
bottom: -6px; bottom: -7px;
}
.el-select__wrapper,.el-textarea__inner,.el-input__wrapper{
box-shadow: inset 0 0 0 1px red;
} }
} }
} }