dev_xd
姜玉琦 2025-02-22 11:19:53 +08:00
commit 98abe2de96
11 changed files with 377 additions and 134 deletions

View File

@ -104,6 +104,7 @@ public class SysUser extends BaseEntity
/** 角色对象 */
private List<SysRole> roles;
private String userInfos;
/** 角色组 */
private Long[] roleIds;
@ -119,6 +120,14 @@ public class SysUser extends BaseEntity
return workType;
}
public String getUserInfos() {
return userInfos;
}
public void setUserInfos(String userInfos) {
this.userInfos = userInfos;
}
public void setWorkType(Long workType) {
this.workType = workType;
}

View File

@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="isActive" column="is_active" />
<result property="phonenumber" column="phonenumber" />
<result property="sex" column="sex" />
<result property="userInfos" column="user_infos" />
<result property="avatar" column="avatar" />
<result property="password" column="password" />
<result property="status" column="status" />
@ -65,7 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select u.user_id, u.com_id, com.dept_name as com_name, u.dept_id, u.user_name, u.nick_name, ex.user_type,ex.work_type, u.card_code, u.email
, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_short_name, d.dept_code, d.dept_type, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,com.dept_name com_dept_name
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,com.dept_name com_dept_name,u.user_infos
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_dept com on u.com_id = com.dept_id
@ -208,6 +209,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="avatar != null and avatar != ''">avatar,</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
<if test="sex != null and sex != ''">sex,</if>
<if test="userInfos != null and userInfos != ''">user_infos,</if>
<if test="password != null and password != ''">password,</if>
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
@ -224,6 +226,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="avatar != null and avatar != ''">#{avatar},</if>
<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
<if test="sex != null and sex != ''">#{sex},</if>
<if test="userInfos != null and userInfos != ''">#{userInfos},</if>
<if test="password != null and password != ''">#{password},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
@ -244,6 +247,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null ">email = #{email},</if>
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
<if test="sex != null and sex != ''">sex = #{sex},</if>
<if test="userInfos != null and userInfos != ''">user_infos = #{userInfos},</if>
<if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
<if test="password != null and password != ''">password = #{password},</if>
<if test="status != null and status != ''">status = #{status},</if>

View File

@ -81,6 +81,17 @@ public class SmzSspProblemmodifyController extends BaseController
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
*/
public int deleteSmzSspProblemmodifyById(Long id);
public int insertSmzSspProblemmodifies(List<SmzSspProblemmodify> list);
}

View File

@ -145,6 +145,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
sysUser.setUpdateTime(DateUtils.getNowDate());
sysUser.setComId(proProjectInfoSubdeptsUsers.getComId());
sysUser.setDeptId(proProjectInfoSubdeptsUsers.getProjectId());
sysUser.setUserInfos(proProjectInfoSubdeptsUsers.getUserInfos());
String subDeptType = proProjectInfoSubdeptsUsers.getSubDeptType();
// 判断单位类型
if(Objects.nonNull(subDeptType)){
@ -245,7 +246,6 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
proProjectInfoSubdeptsUsers.setCreateTime(DateUtils.getNowDate());
proProjectInfoSubdeptsUsers.setSubStep(2L);
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.passed.getCode());
proProjectInfoSubdeptsUsers.setUserPost(UserPostEnums.JSDWGL.getCode());
//查询管理班组
ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();

View File

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

@ -434,6 +434,7 @@ public class SysUserServiceImpl implements ISysUserService
data.put("userId",user.getUserId());
data.put("userName",user.getNickName());
data.put("cardType","1");
data.put("userInfos",user.getUserInfos());
data.put("workType",user.getWorkType());
data.put("cardCode",user.getCardCode());
data.put("userSex",user.getSex());

View File

@ -1,196 +1,196 @@
import request from '@/utils/request'
import request from "@/utils/request";
import { parseStrEmpty } from "@/utils/ruoyi";
// 查询用户列表
export function listUser(query) {
return request({
url: '/system/user/list',
method: 'get',
params: query
})
url: "/system/user/list",
method: "get",
params: query,
});
}
// 查询用户详细
export function getUser(userId) {
return request({
url: '/system/user/' + parseStrEmpty(userId),
method: 'get'
})
url: "/system/user/" + parseStrEmpty(userId),
method: "get",
});
}
// 按手机号码查询用户
export function selectByPhone(phone) {
return request({
url: '/system/user/selectByPhone/' + phone,
method: 'get'
})
url: "/system/user/selectByPhone/" + phone,
method: "get",
});
}
// 新增用户
export function addUser(data) {
return request({
url: '/system/user',
method: 'post',
data: data
})
url: "/system/user",
method: "post",
data: data,
});
}
// 修改用户
export function updateUser(data) {
return request({
url: '/system/user',
method: 'put',
url: "/system/user",
method: "put",
data: {
userId:data.userId,
nickName:data.nickName,
userType:data.userType,
workType:data.workType,
sex:data.sex,
status:data.status,
postIds:data.postIds,
roles:data.roles,
comId:data.comId,
deptId:data.deptId,
roleIds:data.roleIds
}
})
userId: data.userId,
nickName: data.nickName,
userType: data.userType,
workType: data.workType,
sex: data.sex,
status: data.status,
userInfos: data.userInfos,
postIds: data.postIds,
roles: data.roles,
comId: data.comId,
deptId: data.deptId,
roleIds: data.roleIds,
},
});
}
// 删除用户
export function delUser(userId) {
return request({
url: '/system/user/' + userId,
method: 'delete'
})
url: "/system/user/" + userId,
method: "delete",
});
}
// 用户密码重置
export function resetUserPwd(userId, password) {
const data = {
userId,
password
}
password,
};
return request({
url: '/system/user/resetPwd',
method: 'put',
data: data
})
url: "/system/user/resetPwd",
method: "put",
data: data,
});
}
// 用户状态修改
export function changeUserStatus(userId, status) {
const data = {
userId,
status
}
status,
};
return request({
url: '/system/user/changeStatus',
method: 'put',
data: data
})
url: "/system/user/changeStatus",
method: "put",
data: data,
});
}
// 查询用户个人信息
export function getUserProfile() {
return request({
url: '/system/user/profile',
method: 'get'
})
url: "/system/user/profile",
method: "get",
});
}
// 修改用户个人信息
export function updateUserProfile(data) {
return request({
url: '/system/user/profile',
method: 'put',
data: data
})
url: "/system/user/profile",
method: "put",
data: data,
});
}
// 用户密码重置
export function updateUserPwd(oldPassword, newPassword) {
const data = {
oldPassword,
newPassword
}
newPassword,
};
return request({
url: '/system/user/profile/updatePwd',
method: 'put',
params: data
})
url: "/system/user/profile/updatePwd",
method: "put",
params: data,
});
}
// 用户头像上传
export function uploadAvatar(data) {
return request({
url: '/system/user/profile/avatar',
method: 'post',
url: "/system/user/profile/avatar",
method: "post",
headers: {
'Content-Type': 'multipart/form-data'
"Content-Type": "multipart/form-data",
},
data: data
})
data: data,
});
}
// 查询授权角色
export function getAuthRole(userId) {
return request({
url: '/system/user/authRole/' + userId,
method: 'get'
})
url: "/system/user/authRole/" + userId,
method: "get",
});
}
// 保存授权角色
export function updateAuthRole(data) {
return request({
url: '/system/user/authRole',
method: 'put',
params: data
})
url: "/system/user/authRole",
method: "put",
params: data,
});
}
// 查询部门下拉树结构
export function deptTreeSelect() {
return request({
url: '/system/user/deptTree',
method: 'get'
})
url: "/system/user/deptTree",
method: "get",
});
}
// 查询部门下拉树结构
export function deptFirTreeSelect() {
return request({
url: '/system/user/deptTree',
method: 'get'
})
url: "/system/user/deptTree",
method: "get",
});
}
export function getUserComs(userId){
export function getUserComs(userId) {
return request({
url: '/system/user/profile/getUserComps/'+userId,
method: 'get'
})
url: "/system/user/profile/getUserComps/" + userId,
method: "get",
});
}
export function activeUserCom(userCom){
export function activeUserCom(userCom) {
return request({
url:'/system/user/activeUserCom',
method:'post',
data:userCom
})
url: "/system/user/activeUserCom",
method: "post",
data: userCom,
});
}
export function reload(){
export function reload() {
return request({
url: '/system/user/reload',
method: 'get'
})
url: "/system/user/reload",
method: "get",
});
}
export function getUserByName(userName){
export function getUserByName(userName) {
return request({
url: '/system/user/getUserByName/'+userName,
method: 'get'
})
url: "/system/user/getUserByName/" + userName,
method: "get",
});
}

View File

@ -128,7 +128,7 @@
<el-button v-if="scope.row.subDeptType != '4' && scope.row.subDeptType != '5'" link disabled> - </el-button>
</template>
</el-table-column>
<el-table-column label="人员岗位" align="center" prop="craftPost" v-if="1==2">
<el-table-column label="人员岗位" align="center" prop="craftPost">
<template #default="scope">
{{ getWorkType(scope.row.workType) }}
</template>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-container sys-user-manage">
<el-row :gutter="20">
<!--部门数据-->
<el-col :span="4" :xs="24">
@ -123,14 +123,15 @@
</el-row>
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" v-model="open" width="880px" append-to-body>
<el-form :model="form" :rules="rules" ref="userRef" label-width="88px">
<el-dialog :title="title" v-model="open" width="880px" append-to-body modal-class="sys-user-manage-dlg">
<el-form :model="form" :rules="rules" ref="userRef" label-width="88px" :validate-on-rule-change="false">
<el-row>
<el-col :span="24">
<el-form-item label="所属部门" prop="deptId">
<el-tree-select ref="selTreeDept" v-if="data.mode == 'add'" v-model="form.deptId" :data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }" value-key="id"
placeholder="请选择所属部门" check-strictly style="width:100%" @change="v=>handleChangeDept(v)" />
<el-tree-select ref="selTreeDept" v-if="data.mode == 'add'" v-model="form.deptId"
:data="deptOptions" :props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id" placeholder="请选择所属部门" check-strictly style="width:100%"
@change="v => handleChangeDept(v)" />
<el-tag type="primary" v-else>{{ form.dept?.deptName }}</el-tag>
</el-form-item>
@ -221,9 +222,33 @@
</el-form-item>
</el-col>
<el-col :span="24" v-if="form.userType == '99'">
<el-form-item label="身份证信息">
<el-col :span="8">
<div class="div-header">头像面</div>
<el-form-item label="" prop="cardImgPos">
<image-upload v-model="form.cardImgPos" :limit="1" class="identification-card-1"
@change="doImageUpload(1)" />
</el-form-item>
</el-col>
<el-col :span="8">
<div class="div-header">国徽面</div>
<el-form-item label="" prop="cardImgInv">
<image-upload v-model="form.cardImgInv" :limit="1" class="identification-card-2"
@change="doImageUpload(2)" />
</el-form-item>
</el-col>
<el-col :span="8">
<div class="div-header">人脸识别头像</div>
<el-form-item label="" prop="avatar">
<image-upload v-model="form.avatar" :limit="1" class="face-image"
@change="doImageUpload(3)" />
</el-form-item>
</el-col>
</el-form-item>
<!--
<el-form-item label="入场近照" prop="avatar">
<image-upload v-model="form.avatar" :limit="1" />
</el-form-item>
</el-form-item>-->
</el-col>
</el-row>
</el-form>
@ -274,7 +299,7 @@ import {
const router = useRouter();
const { proxy } = getCurrentInstance();
const { sys_user_type, sys_normal_disable, sys_user_sex, user_work_type } = proxy.useDict("sys_user_type", "sys_normal_disable", "sys_user_sex", "user_work_type");
const userRef = ref();
const userList = ref([]);
const open = ref(false);
const loading = ref(true);
@ -371,6 +396,49 @@ function getDeptTree() {
getUserWorkType();
});
};
//
function doImageUpload(type) {
setTimeout(() => {
let url = '';
if (type == 1) {
url = form.value.cardImgPos;
if (url) {
url = location.origin + url;
//url="http://62.234.3.186/statics/2025/01/19/4491f170cd1609142f9a6f097cbf681f_20250119000046A004.jpg"
proxy.$http.get(`/system/tools/id/front?url=${url}`).then(d => {
form.value.nickName = d.data.name || form.value.nickName || '';
form.value.cardCode = d.data.cardId || form.value.cardCode || '';
form.value.address = d.data.address || form.value.address || '';
form.value.nativePlace = d.data.native || form.value.native || '';
let nation = d.data.nation || "";
if (nation) {
let tmps = data.nationOpts.filter(it => it.indexOf(nation) >= 0);
if (tmps.length > 0) {
form.value.nation = tmps[0] || form.value.nation || '';
}
}
let sex = d.data.sex || '';
if (sex) {
form.value.sex = sex ? (sex == '男' ? "0" : "1") : form.value.sex;
}
let birthDay = d.data.birthDay;
if (birthDay && birthDay.length == 8) {
birthDay = birthDay.substr(0, 4) + "-" + birthDay.substr(4, 2) + "-" + birthDay.substr(6);
form.value.birthDay = birthDay || form.value.birthDay;
}
});
}
userRef.value.validateField("cardImgPos")
} else if (type == 2) {
userRef.value.validateField("cardImgInv")
} else {
userRef.value.validateField("avatar")
}
}, 800);
}
//
function doQueryUser() {
selectByPhone(form.value.phonenumber).then(d => {
@ -428,6 +496,8 @@ function doRoleChange() {
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" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
cardImgPos: [{ required: true, message: "身份证正面不能为空", trigger: "change" }],
cardImgInv: [{ required: true, message: "身份证反面不能为空", trigger: "change" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
}
@ -454,6 +524,8 @@ function doRoleChange() {
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" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
cardImgPos: [{ required: true, message: "身份证正面不能为空", trigger: "change" }],
cardImgInv: [{ required: true, message: "身份证反面不能为空", trigger: "change" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
}
@ -598,6 +670,9 @@ function reset() {
nickName: undefined,
password: undefined,
phonenumber: undefined,
cardImgPos: undefined,
cardImgInv: undefined,
avatar: undefined,
email: undefined,
sex: undefined,
status: "0",
@ -652,6 +727,10 @@ function handleUpdate(row) {
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
}
form.value = response.data;
let obj = proxy.$tryToJson(response.data.userInfos || "{}");
form.value.userInfos = obj;
form.value.cardImgPos = obj.cardImgPos || "";
form.value.cardImgInv = obj.cardImgInv || "";
postOptions.value = response.posts;
form.value.postIds = response.postIds;
form.value.roleIds = response.roleIds;
@ -667,9 +746,9 @@ function handleUpdate(row) {
title.value = "修改用户";
form.value.password = "";
data.mode = 'edit'
let oldRoleIds=form.value.roleIds
handleChangeDept(form.value.deptId,()=>{
form.value.roleIds=oldRoleIds;
let oldRoleIds = form.value.roleIds
handleChangeDept(form.value.deptId, () => {
form.value.roleIds = oldRoleIds;
});
});
@ -686,7 +765,7 @@ function getWorkType(wt) {
}
/** 根据单位选择角色 */
function handleChangeDept(value,cb) {
function handleChangeDept(value, cb) {
form.value.roleIds = [];
getDeptRole(value).then(response => {
roleOptions.value = response.data;
@ -718,6 +797,11 @@ function submitForm() {
data.loading = true;
proxy.$refs["userRef"].validate(valid => {
if (valid) {
debugger
let obj = form.value.userInfos || {};
obj.cardImgPos = form.value.cardImgPos;
obj.cardImgInv = form.value.cardImgInv;
form.value.userInfos = JSON.stringify(obj);
if (form.value.userId != undefined) {
updateUser(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功");
@ -727,6 +811,7 @@ function submitForm() {
data.loading = false;
});
} else {
form.value.userInfos = JSON.stringify(obj);
addUser(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
@ -759,3 +844,62 @@ getDeptTree();
getList();
</script>
<style lang="scss">
.sys-user-manage-dlg {
.identification-card-1 {
.el-upload--picture-card {
width: 240px;
background-image: url("../../../assets/images/card1.svg");
background-repeat: no-repeat;
background-position: center;
}
.el-upload__tip {
display: none;
}
.el-upload-list--picture-card {
.el-upload-list__item {
width: 240px;
}
}
}
.identification-card-2 {
.el-upload--picture-card {
width: 240px;
background-image: url("../../../assets/images/card2.svg");
background-repeat: no-repeat;
background-position: center;
background-size: 60%;
}
.el-upload__tip {
display: none;
}
.el-upload-list--picture-card {
.el-upload-list__item {
width: 240px;
}
}
}
.face-image {
&>div {
text-align: center;
}
.el-upload--picture-card {
background-image: url("../../../assets/images/face.svg");
background-repeat: no-repeat;
background-position: center;
background-size: 60%;
}
.el-upload__tip {
display: none;
}
}
}
</style>

View File

@ -67,63 +67,75 @@
<el-table-column align="center" width="180" class-name="td-proble-type" label="隐患类型">
<template #default="scope">
<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>
</el-select>
</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>
</el-select>
</div>
</template>
</el-table-column>
<el-table-column label="施工部位" align="center" prop="workParts" min-width="240" class-name="td-textarea">
<template #default="scope">
<el-input v-model="scope.row.workParts" placeholder="请输入施工部位" type="textarea" :rows="3" />
<div :class="scope.row.errWorkParts?'is-err':''">
<el-input v-model="scope.row.workParts" placeholder="请输入施工部位" type="textarea" :rows="3" @change="scope.row.errWorkParts=scope.row.workParts?false:true" />
</div>
</template>
</el-table-column>
<el-table-column label="整改要求" align="center" prop="changeInfo" min-width="240" class-name="td-textarea">
<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>
</el-table-column>
<el-table-column label="问题人员" align="center" width="300" class-name="td-select">
<template #default="scope">
<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">
<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-group>
</el-select>
</div>
</el-form-item>
<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>
<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-group>
</el-select>
</div>
</el-form-item>
<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>
<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-group>
</el-select>
</div>
</el-form-item>
</template>
</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">
<el-form-item label="">
<el-date-picker v-model="scope.row.nickedTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
style="width: 200px" />
<div :class="scope.row.errNickedTime?'is-err':''" style="width: 100%;">
<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>
</template>
</el-table-column>
@ -250,26 +262,66 @@ function dataSynchronization() {
});
}
function submitRow(row) {
debugger
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) {
row.errSmarkUrl=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) {
row.errSmarkUrl=true;
return false;
ret= false;
}
if (!row.problemType) {
row.errProblemType=true;
return false;
ret= false;
}
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;
}
function getUserTree() {
@ -404,9 +455,15 @@ getUserTree();
}
}
.td-select { .el-select {
.td-select {
.el-select {
width: 100%;
}
.is-err{
&::after{
bottom:-15px;
}
}
}
.is-err{
position: relative;
@ -420,7 +477,10 @@ getUserTree();
left: 0px;
font-size:12px;
position:absolute;
bottom: -6px;
bottom: -7px;
}
.el-select__wrapper,.el-textarea__inner,.el-input__wrapper{
box-shadow: inset 0 0 0 1px red;
}
}
}