dev_xd
姜玉琦 2024-10-15 00:33:26 +08:00
commit 181d2e9d53
10 changed files with 314 additions and 48 deletions

View File

@ -19,35 +19,51 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Excel(name = "所属项目")
private String projectName;
/** 分包单位名称 */
@Excel(name = "所属单位")
private String subDeptName;
/** 主键 */ /** 主键 */
private Long id; private Long id;
@Excel(name = "姓名")
private String userName;
@Excel(name = "身份证")
private String cardCode;
@Excel(name = "性别")
private String userSex;
@Excel(name = "民族")
private String userNation;
@Excel(name = "年龄")
private Integer userAge;
/** 公司主键 */ /** 公司主键 */
@Excel(name = "公司主键")
private Long comId; private Long comId;
/** 项目主键 */ /** 项目主键 */
@Excel(name = "项目主键")
private Long projectId; private Long projectId;
/** 分包单位 */ /** 分包单位 */
@Excel(name = "分包单位")
private Long subDeptId; private Long subDeptId;
/** 单位类型 */ /** 单位类型 */
@Excel(name = "单位类型")
private String subDeptType; private String subDeptType;
/** 分包单位名称 */
@Excel(name = "分包单位名称")
private String subDeptName;
/** 用户主键 */ /** 用户主键 */
@Excel(name = "用户主键")
private Long userId; private Long userId;
/** 班组编号(外键) */ /** 班组编号(外键) */
@Excel(name = "班组编号(外键)")
private Long subDeptGroup; private Long subDeptGroup;
/** 班组名称 */ /** 班组名称 */
@ -55,50 +71,129 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
private String subDeptGroupName; private String subDeptGroupName;
/** 工种类型 */ /** 工种类型 */
@Excel(name = "工种类型")
private String craftType; private String craftType;
@Excel(name = "工种类型")
private String craftTypeName;
/** 工种岗位 */ /** 工种岗位 */
@Excel(name = "工种岗位")
private String craftPost;
private String craftPost;
@Excel(name = "工种岗位")
private String craftPostName;
@Excel(name = "状态")
private String enterState;
/** 学习状态 */ /** 学习状态 */
@Excel(name = "学习状态") @Excel(name = "学习状态")
private String eduStatus; private String eduStatus;
/** 学习文件地址 */ /** 学习文件地址 */
@Excel(name = "学习文件地址")
private String eduFilePath; private String eduFilePath;
/** 学习签名地址 */ /** 学习签名地址 */
@Excel(name = "学习签名地址")
private String eduSignPath; private String eduSignPath;
/** 学习时间 */ /** 学习时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "学习时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date eduDate; private Date eduDate;
/** 审批状态 */ /** 审批状态 */
@Excel(name = "审批状态")
private Long approveStatus; private Long approveStatus;
/** 进场状态 */ /** 进场状态 */
@Excel(name = "进场状态")
private String useStatus; private String useStatus;
/** 进行步骤 */ /** 进行步骤 */
@Excel(name = "进行步骤")
private Long subStep; private Long subStep;
private String comName;
public String getComName() {
return comName;
}
public void setComName(String comName) {
this.comName = comName;
}
/** 疾病状态 */ /** 疾病状态 */
@Excel(name = "疾病状态")
private Long illnessStatus; private Long illnessStatus;
/** 严重疾病状态 */ /** 严重疾病状态 */
@Excel(name = "严重疾病状态")
private Long supIllnessStatus; private Long supIllnessStatus;
public String getEnterState() {
return enterState;
}
public void setEnterState(String enterState) {
this.enterState = enterState;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public String getUserNation() {
return userNation;
}
public void setUserNation(String userNation) {
this.userNation = userNation;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getCraftTypeName() {
return craftTypeName;
}
public void setCraftTypeName(String craftTypeName) {
this.craftTypeName = craftTypeName;
}
public String getCraftPostName() {
return craftPostName;
}
public void setCraftPostName(String craftPostName) {
this.craftPostName = craftPostName;
}
public SysUser getUser() { public SysUser getUser() {
return user; return user;
} }
@ -119,7 +214,7 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
private SysUser user; private SysUser user;
/** 删除标识 */ /** 删除标识 */
@Excel(name = "删除标识")
private Long isDel; private Long isDel;
public void setId(Long id) public void setId(Long id)
@ -312,7 +407,6 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
return isDel; return isDel;
} }
private String projectName;
public String getProjectName() { public String getProjectName() {
return projectName; return projectName;

View File

@ -7,7 +7,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ProProjectInfoSubdeptsUsers" id="ProProjectInfoSubdeptsUsersResult"> <resultMap type="ProProjectInfoSubdeptsUsers" id="ProProjectInfoSubdeptsUsersResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="comId" column="com_id" /> <result property="comId" column="com_id" />
<result property="comName" column="comName"/>
<result property="projectId" column="project_id" /> <result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="subDeptId" column="sub_dept_id" /> <result property="subDeptId" column="sub_dept_id" />
<result property="subDeptType" column="sub_dept_type" /> <result property="subDeptType" column="sub_dept_type" />
<result property="subDeptName" column="sub_dept_name" /> <result property="subDeptName" column="sub_dept_name" />
@ -26,6 +28,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="illnessStatus" column="illness_status" /> <result property="illnessStatus" column="illness_status" />
<result property="supIllnessStatus" column="sup_illness_status" /> <result property="supIllnessStatus" column="sup_illness_status" />
<result property="isDel" column="is_del" /> <result property="isDel" column="is_del" />
<result property="enterState" column="enter_state" />
<result property="craftTypeName" column="craft_type_name" />
<result property="craftPostName" column="craft_post_name" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
@ -60,11 +65,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status, psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status,
psu.use_status, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time, psu.use_status, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time,
psu.remark,su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`,su.admitGuid,su.admitGuid usAdmitGuid, psu.remark,su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`,su.admitGuid,su.admitGuid usAdmitGuid,
dic1.dict_label craft_type_name,dic2.dict_label craft_post_name,psu.enter_state,sd.dept_name comName,
su.`user_picture`, su.`card_img_inv`,su.`card_img_pos`,su.`user_infos`,su.`email`,su.`phonenumber`,su.`sex`,su.`avatar`,su.`login_ip`,su.`login_date` su.`user_picture`, su.`card_img_inv`,su.`card_img_pos`,su.`user_infos`,su.`email`,su.`phonenumber`,su.`sex`,su.`avatar`,su.`login_ip`,su.`login_date`
FROM pro_project_info_subdepts_users psu FROM pro_project_info_subdepts_users psu
LEFT JOIN sys_user su ON psu.user_id=su.user_id LEFT JOIN sys_user su ON psu.user_id=su.user_id
LEFT JOIN pro_project_info PI ON pi.id = psu.project_id LEFT JOIN pro_project_info PI ON pi.id = psu.project_id
LEFT JOIN sys_dept sd ON sd.dept_id = pi.com_id LEFT JOIN sys_dept sd ON sd.dept_id = pi.com_id
LEFT JOIN sys_dict_data dic1 ON psu.`craft_type`=dic1.`dict_value` AND dic1.`dict_type`='pro_craft_type'
LEFT JOIN sys_dict_data dic2 ON psu.`craft_post`=dic2.`dict_value` AND dic2.`dict_type`='pro_craft_post'
</sql> </sql>
@ -82,6 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="craftType != null and craftType != ''"> and psu.craft_type = #{craftType}</if> <if test="craftType != null and craftType != ''"> and psu.craft_type = #{craftType}</if>
<if test="craftPost != null and craftPost != ''"> and psu.craft_post = #{craftPost}</if> <if test="craftPost != null and craftPost != ''"> and psu.craft_post = #{craftPost}</if>
<if test="eduStatus != null and eduStatus != ''"> and psu.edu_status = #{eduStatus}</if> <if test="eduStatus != null and eduStatus != ''"> and psu.edu_status = #{eduStatus}</if>
<if test="enterState != null and enterState != ''"> and psu.enter_state = #{enterState}</if>
<if test="eduFilePath != null and eduFilePath != ''"> and psu.edu_file_path = #{eduFilePath}</if> <if test="eduFilePath != null and eduFilePath != ''"> and psu.edu_file_path = #{eduFilePath}</if>
<if test="eduSignPath != null and eduSignPath != ''"> and psu.edu_sign_path = #{eduSignPath}</if> <if test="eduSignPath != null and eduSignPath != ''"> and psu.edu_sign_path = #{eduSignPath}</if>
<if test="eduDate != null "> and psu.edu_date = #{eduDate}</if> <if test="eduDate != null "> and psu.edu_date = #{eduDate}</if>
@ -124,6 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="illnessStatus != null">illness_status,</if> <if test="illnessStatus != null">illness_status,</if>
<if test="supIllnessStatus != null">sup_illness_status,</if> <if test="supIllnessStatus != null">sup_illness_status,</if>
<if test="isDel != null">is_del,</if> <if test="isDel != null">is_del,</if>
<if test="enterState != null">enter_state,</if>
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
@ -151,6 +161,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="illnessStatus != null">#{illnessStatus},</if> <if test="illnessStatus != null">#{illnessStatus},</if>
<if test="supIllnessStatus != null">#{supIllnessStatus},</if> <if test="supIllnessStatus != null">#{supIllnessStatus},</if>
<if test="isDel != null">#{isDel},</if> <if test="isDel != null">#{isDel},</if>
<if test="enterState != null">#{enterState},</if>
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
@ -182,6 +193,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="illnessStatus != null">illness_status = #{illnessStatus},</if> <if test="illnessStatus != null">illness_status = #{illnessStatus},</if>
<if test="supIllnessStatus != null">sup_illness_status = #{supIllnessStatus},</if> <if test="supIllnessStatus != null">sup_illness_status = #{supIllnessStatus},</if>
<if test="isDel != null">is_del = #{isDel},</if> <if test="isDel != null">is_del = #{isDel},</if>
<if test="enterState != null">enter_state = #{enterState},</if>
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>

View File

@ -1,5 +1,8 @@
package com.yanzhu.manage.controller; package com.yanzhu.manage.controller;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.core.utils.poi.ExcelUtil; import com.yanzhu.common.core.utils.poi.ExcelUtil;
import com.yanzhu.common.core.web.controller.BaseController; import com.yanzhu.common.core.web.controller.BaseController;
import com.yanzhu.common.core.web.domain.AjaxResult; import com.yanzhu.common.core.web.domain.AjaxResult;
@ -9,13 +12,15 @@ import com.yanzhu.common.log.enums.BusinessType;
import com.yanzhu.common.security.annotation.RequiresPermissions; import com.yanzhu.common.security.annotation.RequiresPermissions;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService; import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService;
import com.yanzhu.manage.service.IUniService;
import com.yanzhu.system.api.domain.SysUser; import com.yanzhu.system.api.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Controller * Controller
@ -30,6 +35,8 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController
@Autowired @Autowired
private IProProjectInfoSubdeptsUsersService proProjectInfoSubdeptsUsersService; private IProProjectInfoSubdeptsUsersService proProjectInfoSubdeptsUsersService;
@Autowired
private IUniService uniService;
/** /**
* *
*/ */
@ -51,6 +58,20 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController
public void export(HttpServletResponse response, ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers) public void export(HttpServletResponse response, ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers)
{ {
List<ProProjectInfoSubdeptsUsers> list = proProjectInfoSubdeptsUsersService.selectProProjectInfoSubdeptsUsersList(proProjectInfoSubdeptsUsers); List<ProProjectInfoSubdeptsUsers> list = proProjectInfoSubdeptsUsersService.selectProProjectInfoSubdeptsUsersList(proProjectInfoSubdeptsUsers);
for(ProProjectInfoSubdeptsUsers u :list){
SysUser su=u.getUser();
u.setUserName(su.getUserName());
u.setCardCode(su.getCardCode());
u.setUserSex(su.getSex());
u.setEnterState("0".equals(u.getEnterState())?"在场":"离场");
JSONObject jo=JSONObject.parseObject(su.getUserInfos());
u.setUserNation(jo.getString("nation"));
Date dt=jo.getDate("birthDay");
if(dt!=null){
int age=(int)((new Date().getTime()-dt.getTime())/1000/3600/24/365);
u.setUserAge(age);
}
}
ExcelUtil<ProProjectInfoSubdeptsUsers> util = new ExcelUtil<ProProjectInfoSubdeptsUsers>(ProProjectInfoSubdeptsUsers.class); ExcelUtil<ProProjectInfoSubdeptsUsers> util = new ExcelUtil<ProProjectInfoSubdeptsUsers>(ProProjectInfoSubdeptsUsers.class);
util.exportExcel(response, list, "分包单位工人数据"); util.exportExcel(response, list, "分包单位工人数据");
} }
@ -97,4 +118,25 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController
{ {
return toAjax(proProjectInfoSubdeptsUsersService.deleteProProjectInfoSubdeptsUsersByIds(ids)); return toAjax(proProjectInfoSubdeptsUsersService.deleteProProjectInfoSubdeptsUsersByIds(ids));
} }
@RequiresPermissions("manage:proProjectInfoSubdeptsUsers:remove")
@PostMapping("/enterState/{state}")
public AjaxResult updateEnterState(@RequestBody List<Long> ids,@PathVariable int state){
try {
for (Long id : ids) {
ProProjectInfoSubdeptsUsers user=proProjectInfoSubdeptsUsersService.selectProProjectInfoSubdeptsUsersById(id);
if(user!=null) {
if (state == 0) {//进场
uniService.syncUserAuthDevice(id);
} else {
uniService.syncUserRevoke(id);
}
user.setEnterState(""+state);
proProjectInfoSubdeptsUsersService.updateProProjectInfoSubdeptsUsers(user);
}
}
return AjaxResult.success();
}catch (Exception ex){
return AjaxResult.error(ex.getMessage());
}
}
} }

View File

@ -127,7 +127,7 @@ public class UniCallBackController {
if(proUser!=null && proUser.getUser()!=null){ if(proUser!=null && proUser.getUser()!=null){
AttendanceUbiData addData=new AttendanceUbiData(); AttendanceUbiData addData=new AttendanceUbiData();
addData.setAdmitGuid(admitGuid); addData.setAdmitGuid(admitGuid);
addData.setComName(proUser.getActiveComName()); addData.setComName(proUser.getComName());
addData.setProjectName(proUser.getProjectName()); addData.setProjectName(proUser.getProjectName());
addData.setComId(proUser.getComId()); addData.setComId(proUser.getComId());
addData.setUserId(proUser.getUserId()); addData.setUserId(proUser.getUserId());

View File

@ -152,4 +152,16 @@ public interface IUniService {
public Long syncUniDeviceUser(Long deviceId,Long projectId); public Long syncUniDeviceUser(Long deviceId,Long projectId);
public long syncUniDeviceDelete(Long[] ids); public long syncUniDeviceDelete(Long[] ids);
/**
*
* @param id
*/
public void syncUserRevoke(Long id);
/**
*
* @param id
*/
public void syncUserAuthDevice(Long id);
} }

View File

@ -31,6 +31,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
@Autowired @Autowired
private IUniService uniService; private IUniService uniService;
/** /**
* *
* *
@ -112,6 +113,9 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
@Override @Override
public int deleteProProjectInfoSubdeptsUsersByIds(Long[] ids) public int deleteProProjectInfoSubdeptsUsersByIds(Long[] ids)
{ {
for(Long id:ids){
uniService.syncUserRevoke(id);
}
return proProjectInfoSubdeptsUsersMapper.deleteProProjectInfoSubdeptsUsersByIds(ids); return proProjectInfoSubdeptsUsersMapper.deleteProProjectInfoSubdeptsUsersByIds(ids);
} }
@ -124,6 +128,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
@Override @Override
public int deleteProProjectInfoSubdeptsUsersById(Long id) public int deleteProProjectInfoSubdeptsUsersById(Long id)
{ {
uniService.syncUserRevoke(id);
return proProjectInfoSubdeptsUsersMapper.deleteProProjectInfoSubdeptsUsersById(id); return proProjectInfoSubdeptsUsersMapper.deleteProProjectInfoSubdeptsUsersById(id);
} }
} }

View File

@ -357,12 +357,56 @@ public class UniServiceImpl implements IUniService{
public long syncUniDeviceDelete(Long[] ids) { public long syncUniDeviceDelete(Long[] ids) {
long cnt=0; long cnt=0;
for(Long id :ids){ for(Long id :ids){
cnt+=deletDevice(id); cnt+=deleteDevice(id);
} }
return cnt; return cnt;
} }
private Long deletDevice(Long id) { /**
*
* @param id
*/
@Override
public void syncUserRevoke(Long id) {
ProProjectInfoSubdeptsUsers user= proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id);
if(user==null){
return;
}
AttendanceUbiDevice where=new AttendanceUbiDevice();
where.setProjectId(user.getProjectId());
List<AttendanceUbiDevice> devList=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceList(where);
for(AttendanceUbiDevice device :devList){
JSONObject jo=new JSONObject();
jo.put("projectId",user.getProjectId());
jo.put("deviceNo",device.getDeviceNo());
jo.put("admitGuids",user.getAdmitGuid());
authDeviceRevoke(jo);
}
}
/**
*
* @param id
*/
@Override
public void syncUserAuthDevice(Long id) {
ProProjectInfoSubdeptsUsers user= proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(id);
if(user==null){
return;
}
AttendanceUbiDevice where=new AttendanceUbiDevice();
where.setProjectId(user.getProjectId());
List<AttendanceUbiDevice> devList=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceList(where);
for(AttendanceUbiDevice device :devList) {
JSONObject jo=new JSONObject();
jo.put("projectId",user.getProjectId());
jo.put("deviceNo",device.getDeviceNo());
jo.put("admitGuids",user.getAdmitGuid());
authDevice(jo);
}
}
private Long deleteDevice(Long id) {
AttendanceUbiDevice device=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceById(id); AttendanceUbiDevice device=attendanceUbiDeviceMapper.selectAttendanceUbiDeviceById(id);
if(device==null){ if(device==null){
return 0l; return 0l;
@ -440,7 +484,7 @@ public class UniServiceImpl implements IUniService{
userJo.put("tag",user.getNickName()); userJo.put("tag",user.getNickName());
userJo.put("cardNo",user.getUserId()+","+projectId); userJo.put("cardNo",user.getUserId()+","+projectId);
userJo.put("idCardNo",user.getCardCode()); userJo.put("idCardNo",user.getCardCode());
userJo.put("password","123456"); userJo.put("password","");
userJo.put("addition",""); userJo.put("addition","");
boolean hasUpdate=false; boolean hasUpdate=false;
if(StringUtils.isEmpty(admitGuid)){ if(StringUtils.isEmpty(admitGuid)){
@ -492,6 +536,7 @@ public class UniServiceImpl implements IUniService{
} }
return ret.longValue(); return ret.longValue();
} }
return 0l; return 0l;
} }

View File

@ -42,3 +42,12 @@ export function delProProjectInfoSubdeptsUsers(id) {
method: 'delete' method: 'delete'
}) })
} }
// 删除分包单位工人
export function updateEnterState(ids,state) {
return request({
url: '/manage/proProjectInfoSubdeptsUsers/enterState/' + state,
method: 'post',
data: ids
})
}

View File

@ -79,7 +79,7 @@
<el-tag effect="plain">{{ form.projectName }}</el-tag> <el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item> </el-form-item>
<el-form-item label="设备序列号" prop="deviceNo"> <el-form-item label="设备序列号" prop="deviceNo">
<el-input v-model="form.deviceNo" placeholder="请输入设备序列号" /> <el-input v-model="form.deviceNo" :disabled="data.mode=='edit'" placeholder="请输入设备序列号" />
</el-form-item> </el-form-item>
<el-form-item label="通道编号" prop="channel"> <el-form-item label="通道编号" prop="channel">
<el-input v-model="form.channel" placeholder="请输入通道编号" /> <el-input v-model="form.channel" placeholder="请输入通道编号" />
@ -157,6 +157,10 @@ const data = reactive({
}) })
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
/*行进场,离场操作 */
function handleEnter(row){
}
/** /**
* 设备人员同步 * 设备人员同步
*/ */
@ -244,6 +248,7 @@ function handleSelectionChange(selection) {
/** 新增按钮操作 */ /** 新增按钮操作 */
function handleAdd() { function handleAdd() {
reset(); reset();
data.mode="add"
form.value.projectId = data.row.projectId; form.value.projectId = data.row.projectId;
form.value.projectName = data.row.projectName; form.value.projectName = data.row.projectName;
form.value.source=ubi_device_source.value[0].value; form.value.source=ubi_device_source.value[0].value;
@ -254,6 +259,7 @@ function handleAdd() {
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
reset(); reset();
data.mode="edit"
const _id = row.id || ids.value const _id = row.id || ids.value
getAttendance_ubi_device(_id).then(response => { getAttendance_ubi_device(_id).then(response => {
form.value = response.data; form.value = response.data;

View File

@ -56,11 +56,11 @@
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">导出花名册</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">导出花名册</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="Download" @click="handleExport" <el-button type="danger" plain icon="Download" @click="handleBatchEnterState(1)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">批量离场</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">批量离场</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="Download" @click="handleExport" <el-button type="success" plain icon="Download" @click="handleBatchEnterState(0)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">批量入场</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:export']">批量入场</el-button>
</el-col> </el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
@ -68,14 +68,19 @@
<el-table v-loading="loading" :data="proProjectInfoSubdeptsUsersList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="proProjectInfoSubdeptsUsersList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="所属单位" align="center" prop="subDeptName" />
<el-table-column label="姓名" align="center" prop="user.userName" />
<el-table-column label="头像" align="center"> <el-table-column label="头像" align="center">
<template #default="scope"> <template #default="scope">
<el-image :src="scope.row.user.userPicture" style="height:80px;" :preview-teleported="true" :preview-src-list="[scope.row.user.userPicture]"></el-image> <el-image :src="scope.row.user.userPicture" style="height:80px;" :preview-teleported="true" :preview-src-list="[scope.row.user.userPicture]"></el-image>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" align="center" prop="user.phonenumber" /> <el-table-column label="姓名" align="center" prop="user.userName" />
<el-table-column label="身份证" align="center" prop="user.cardCode" />
<el-table-column label="性别" align="center" prop="user.sex" width="80" />
<el-table-column label="民族" align="center" prop="info.nation" width="80" />
<el-table-column label="年龄" align="center" prop="info.age" width="80" />
<el-table-column label="所属单位" align="center" prop="subDeptName" />
<el-table-column label="联系电话" align="center" prop="user.phonenumber" v-if="false"/>
<el-table-column label="班组" align="center" prop="subDeptGroupName" /> <el-table-column label="班组" align="center" prop="subDeptGroupName" />
<el-table-column label="工种类型" align="center" prop="craftType"> <el-table-column label="工种类型" align="center" prop="craftType">
<template #default="scope"> <template #default="scope">
@ -87,17 +92,25 @@
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost" /> <dict-tag :options="pro_craft_post" :value="scope.row.craftPost" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="民族" align="center" prop="info.nation" width="80" />
<el-table-column label="年龄" align="center" prop="info.age" width="80" /> <el-table-column label="状态" align="center" prop="enterState">
<el-table-column label="性别" align="center" prop="user.sex" width="80" /> <template #default="scope">
<el-table-column label="出生日期" align="center" prop="info.birthDayStr" /> <span v-if="scope.row.enterState==0" style="color: green;"></span>
<el-table-column label="籍贯" align="center" prop="info.nativePlace" /> <span v-else style="color: red">离场</span>
</template>
</el-table-column>
<el-table-column label="出生日期" align="center" prop="info.birthDayStr" v-if="false"/>
<el-table-column label="籍贯" align="center" prop="info.nativePlace" v-if="false"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">删除</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">删除</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-if="scope.row.enterState==0"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">离场</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-else
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">进场</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -248,7 +261,7 @@
</template> </template>
<script setup name="ProProjectInfoSubdeptsUsers"> <script setup name="ProProjectInfoSubdeptsUsers">
import { listProProjectInfoSubdeptsUsers, getProProjectInfoSubdeptsUsers, delProProjectInfoSubdeptsUsers, addProProjectInfoSubdeptsUsers, updateProProjectInfoSubdeptsUsers } from "@/api/manage/proProjectInfoSubdeptsUsers"; import { listProProjectInfoSubdeptsUsers, getProProjectInfoSubdeptsUsers,updateEnterState, delProProjectInfoSubdeptsUsers, addProProjectInfoSubdeptsUsers, updateProProjectInfoSubdeptsUsers } from "@/api/manage/proProjectInfoSubdeptsUsers";
import { listProProjectInfoSubdepts } from "@/api/manage/proProjectInfoSubdepts"; import { listProProjectInfoSubdepts } from "@/api/manage/proProjectInfoSubdepts";
import { listProProjectInfoSubdeptsGroup } from "@/api/manage/proProjectInfoSubdeptsGroup"; import { listProProjectInfoSubdeptsGroup } from "@/api/manage/proProjectInfoSubdeptsGroup";
import { listUser } from "@/api/system/user"; import { listUser } from "@/api/system/user";
@ -323,10 +336,40 @@ const data = reactive({
phoneState: '', phoneState: '',
userInfo: null, userInfo: null,
mode: '', mode: '',
editData:null,
}); });
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
//
function handleEnter(row){
let ids=[row.id];
if(row.enterState==0){
updateEnterState(ids,1).then(d=>{
row.enterState=1;
});
}else{
updateEnterState(ids,0).then(d=>{
row.enterState=0;
});
}
}
//,
function handleBatchEnterState(state){
if(ids.value.length==0){
proxy.$modal.msgWarning("请选择数据!!!");
return;
}
updateEnterState(ids.value,state).then(d=>{
proProjectInfoSubdeptsUsersList.value.forEach(it=>{
if(ids.value.indexOf(it.id)>=0){
it.enterState=state;
}
});
});
}
// //
function doImageUpload() { function doImageUpload() {
setTimeout(() => { setTimeout(() => {
@ -527,6 +570,7 @@ function handleAdd() {
return false; return false;
} }
reset(); reset();
data.editData=null;
data.mode = 'add'; data.mode = 'add';
form.value.certificateType = ""; form.value.certificateType = "";
form.value.projectId = userStore.currentProId; form.value.projectId = userStore.currentProId;
@ -539,13 +583,10 @@ function handleAdd() {
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
if (!userStore.currentProId) {
proxy.$modal.msgWarning("请切换到项目数据!!!");
return false;
}
reset(); reset();
const _id = row.id || ids.value const _id = row.id || ids.value
data.mode = 'edit' data.mode = 'edit'
data.editData=row;
getProProjectInfoSubdeptsUsers(_id).then(response => { getProProjectInfoSubdeptsUsers(_id).then(response => {
let obj = JSON.parse(JSON.stringify(response.data)); let obj = JSON.parse(JSON.stringify(response.data));
obj.info = tryToJson(obj.user?.userInfos || "{}") obj.info = tryToJson(obj.user?.userInfos || "{}")
@ -554,8 +595,8 @@ function handleUpdate(row) {
form.value = obj; form.value = obj;
form.value.userId = obj.userId; form.value.userId = obj.userId;
form.value.projectId = userStore.currentProId; form.value.projectId = row.projectId;
form.value.projectName = userStore.currentProName; form.value.projectName = row.projectName;
showEditUser(obj.user); showEditUser(obj.user);
data.phoneState = "edit"; data.phoneState = "edit";
open.value = true; open.value = true;