diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/controller/PersonComprehensiveController.java b/modules/bmw/src/main/java/com/bonus/bmw/person/controller/PersonComprehensiveController.java index 5569d4f..47b0391 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/controller/PersonComprehensiveController.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/controller/PersonComprehensiveController.java @@ -331,21 +331,29 @@ public class PersonComprehensiveController { } } - //导出 -// @GetMapping("/exportBtnOut") -// @Log(title = "出场人员-导出", businessType = BusinessType.EXPORT) -// public void exportBtnOut(HttpServletResponse response, PersonComprehensiveBean o) { -// try{ -// List list = service.exportBtnOut(o); -// ExcelUtil util = new ExcelUtil(PersonComprehensiveBean.class); -// util.exportExcel(response, list, "入场人员管理"); -// }catch (Exception e){ -// log.error(e.toString(),e); -// } -// } + + @PostMapping("/getWorkerRosterList") + @Log(title = "农民工花名册(用工管理台账)-查询list", businessType = BusinessType.SELECT) + public PageTableResponse getWorkerRosterList(PageTableRequest request) { + return service.getWorkerRosterList(request); + } + + @PostMapping("/getWorkerRosterProList") + @Log(title = "农民工花名册(用工管理台账)-查询list", businessType = BusinessType.SELECT) + public PageTableResponse getWorkerRosterProList(PageTableRequest request) { + return service.getWorkerRosterProList(request); + } + @GetMapping("/exportBtnOut") public void exportBtnOut(HttpServletResponse response, PageTableRequest request) { service.exportBtnOut(response,request.getParams()); } + +// @Log(title = "农民工花名册-根据工程id获取", businessType = BusinessType.SELECT) +// @GetMapping("/getWorkerRosterProList") +// public R getWorkerRosterProList(@PathVariable String proId) { +// return service.getWorkerRosterProList(proId); +// } + } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java b/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java index 4d4cfce..1cababe 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/dao/PersonComprehensiveDao.java @@ -160,4 +160,8 @@ public interface PersonComprehensiveDao { void deleteCheckupFile(PersonComprehensiveBean o); List getDownloads(PersonComprehensiveBean bean); + + List getWorkerRosterList(@Param("params") Map params, @Param("offset") Integer offset, @Param("limit") Integer limit); + + List getWorkerRosterProList(@Param("params") Map params, @Param("offset") Integer offset, @Param("limit") Integer limit); } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/PersonComprehensiveBean.java b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/PersonComprehensiveBean.java index e2f58dd..ff7d4b0 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/PersonComprehensiveBean.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/PersonComprehensiveBean.java @@ -168,6 +168,11 @@ public class PersonComprehensiveBean { */ private String bankCard; + /** + * 银行卡联行号 + */ + private String bankBranch; + /** * 人员类型 */ @@ -400,4 +405,48 @@ public class PersonComprehensiveBean { private String checkupFilePath; private String checkupState; private String checkupDate; + + /** + * 项目部id + */ + private String proGeneralId; + /** + * 项目部name + */ + private String proGeneralName; + /** + * 工程类型 + */ + private String proType; + /** + * 工程状态 + */ + private String proStatusId; + private String proStatusName; + /** + * 当前在场人数 + */ + private String currentOnSiteNum; + /** + * 已出场人数 + */ + private String exitedNum; + /** + * 累计入场人数 + */ + private String totalEntryNum; + /** + * 第一次人员入场时间 + */ + private String firstEntryTime; + + /** + * 用工类型 0 临时用工 1 正式用工 2分包管理人员 + */ + private String workerType; + + /** + * 备注 + */ + private String remark; } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveService.java b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveService.java index bfe14e0..ddfb3db 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveService.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveService.java @@ -44,6 +44,20 @@ public interface PersonComprehensiveService { List getDownloads(PersonComprehensiveBean bean); + /** + * 获取农民工花名册(用工管理台账)-查询list + * @param request + * @return + */ + PageTableResponse getWorkerRosterList(PageTableRequest request); + + /** + * 获取农民工花名册(用工管理台账)-根据工程id获取 + * @param request + * @return + */ + PageTableResponse getWorkerRosterProList(PageTableRequest request); + // List exportBtnOut(PersonComprehensiveBean bean); void exportBtnOut(HttpServletResponse response, Map params); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java index bc48754..99a3c37 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/service/PersonComprehensiveServiceImp.java @@ -573,6 +573,72 @@ public class PersonComprehensiveServiceImp implements PersonComprehensiveService return dao.getDownloads(bean); } + /** + * 获取农民工花名册(用工管理台账)-查询list + * @param request + * @return + */ + @Override + public PageTableResponse getWorkerRosterList(PageTableRequest request) { + + Map params = request.getParams(); + String roleLevel = SecurityUtils.getLoginUser().getSysUser().getRoleLevel(); + String subId = SecurityUtils.getLoginUser().getSysUser().getSubId(); + if("4".equals(roleLevel)) { + String subId1 = (String) params.get("subId"); + if(StringUtils.isEmpty(subId1)){ + params.put("subId",subId); + } + } + + List list = dao.getWorkerRosterList(params, request.getOffset(), request.getLimit()); + + return new PageTableHandler(new PageTableHandler.CountHandler() { + @Override + public int count(PageTableRequest request) { + return list.size(); + } + }, new PageTableHandler.ListHandler() { + @Override + public List list(PageTableRequest request) { + List beanList; + Integer offset = request.getOffset(); + Integer limit = request.getLimit(); + if((offset+limit) < list.size()){ + beanList = list.subList(offset, offset + limit); + }else{ + beanList = list.subList(offset, list.size()); + } + return beanList; + } + }).handle(request); + } + + @Override + public PageTableResponse getWorkerRosterProList(PageTableRequest request) { + Map params = request.getParams(); + List list = dao.getWorkerRosterProList(params, request.getOffset(), request.getLimit()); + return new PageTableHandler(new PageTableHandler.CountHandler() { + @Override + public int count(PageTableRequest request) { + return list.size(); + } + }, new PageTableHandler.ListHandler() { + @Override + public List list(PageTableRequest request) { + List beanList; + Integer offset = request.getOffset(); + Integer limit = request.getLimit(); + if((offset+limit) < list.size()){ + beanList = list.subList(offset, offset + limit); + }else{ + beanList = list.subList(offset, list.size()); + } + return beanList; + } + }).handle(request); + } + private List listThread(List list) { Map map = new HashMap<>(); map.put("type","postType"); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/team/controller/NoSignalTeamAttendController.java b/modules/bmw/src/main/java/com/bonus/bmw/team/controller/NoSignalTeamAttendController.java index d2d01ae..c1a0dd3 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/team/controller/NoSignalTeamAttendController.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/team/controller/NoSignalTeamAttendController.java @@ -2,6 +2,7 @@ package com.bonus.bmw.team.controller; import com.bonus.bmw.team.entity.NoSignalTeamAttendBean; import com.bonus.bmw.team.service.NoSignalTeamAttendService; +import com.bonus.common.core.constant.Constants; import com.bonus.common.core.domain.R; import com.bonus.common.core.table.PageTableHandler; import com.bonus.common.core.table.PageTableRequest; @@ -229,5 +230,15 @@ public class NoSignalTeamAttendController { } return einHisList; } + + @PostMapping("/updateAtt") + @Log(title = "考勤数据-修改", businessType = BusinessType.UPDATE) + public R del(NoSignalTeamAttendBean bean) { + try { + return service.updateAtt(bean); + } catch (Exception e){ + return R.fail(Constants.API_FAILED); + } + } } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/team/dao/NoSignalTeamAttendDao.java b/modules/bmw/src/main/java/com/bonus/bmw/team/dao/NoSignalTeamAttendDao.java index eda630e..041f49d 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/team/dao/NoSignalTeamAttendDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/team/dao/NoSignalTeamAttendDao.java @@ -40,6 +40,8 @@ public interface NoSignalTeamAttendDao { int updEinStatus(NoSignalTeamAttendBean noSignalTeamAttendBean); + int updateAtt(NoSignalTeamAttendBean bean); + diff --git a/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendService.java b/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendService.java index 7173f7f..f85b1c4 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendService.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendService.java @@ -1,6 +1,7 @@ package com.bonus.bmw.team.service; import com.bonus.bmw.team.entity.NoSignalTeamAttendBean; +import com.bonus.common.core.domain.R; import java.util.List; import java.util.Map; @@ -39,6 +40,8 @@ public interface NoSignalTeamAttendService { int updEinStatus(NoSignalTeamAttendBean noSignalTeamAttendBean); + R updateAtt(NoSignalTeamAttendBean bean); + /* int addNoSignalTeam(NoSignalTeamSetUpBean bean); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendServiceImpl.java b/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendServiceImpl.java index 913be55..697feda 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendServiceImpl.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/team/service/NoSignalTeamAttendServiceImpl.java @@ -2,6 +2,9 @@ package com.bonus.bmw.team.service; import com.bonus.bmw.team.dao.NoSignalTeamAttendDao; import com.bonus.bmw.team.entity.NoSignalTeamAttendBean; +import com.bonus.common.core.constant.Constants; +import com.bonus.common.core.domain.R; +import com.bonus.common.security.utils.SecurityUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -112,6 +115,15 @@ public class NoSignalTeamAttendServiceImpl implements NoSignalTeamAttendService return dao.updEinStatus(noSignalTeamAttendBean); } + @Override + public R updateAtt(NoSignalTeamAttendBean bean) { + int res=0; + if (bean.getId() != null) { + res = dao.updateAtt(bean); + } + return res > 0 ? R.ok(Constants.DELETE_SUCCESS) : R.fail(Constants.DELETE_FAIL); + } + /* @Override public int addNoSignalTeam(NoSignalTeamSetUpBean bean) { diff --git a/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml b/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml index 7d8dfe4..7d9c7ad 100644 --- a/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml @@ -139,7 +139,7 @@ ,salary_application_Path = #{salaryApplicationPath} - where id_number = #{idNumber} and ein_time = #{einTime} and is_active = 1 + where id_number = #{idNumber} and ein_time = #{einTime} diff --git a/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml b/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml index 2fa1a7c..4252357 100644 --- a/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/PersonComprehensiveMapper.xml @@ -24,17 +24,25 @@ - replace into bm_worker_bank + replace + into bm_worker_bank (`id_number`, `bank_card`, `bank_name`, `roll_bank_name`) values - (#{idNumber},#{wageBankCard},#{wageBankName},#{wageBankSubBranchName}) + ( + #{idNumber}, + #{wageBankCard}, + #{wageBankName}, + #{wageBankSubBranchName} + ) - update `bm_team_user_relation` set is_active = '0' where `id_number` = #{idNumber}; + update `bm_team_user_relation` + set is_active = '0' + where `id_number` = #{idNumber}; INSERT INTO `bm_team_user_relation` - (`team_id`, `id_number`,is_regular_person, is_foreman, `IS_ACTIVE`) VALUES - (#{teamId},#{idNumber},#{isRegularPerson}, #{isForeman}, '1'); + (`team_id`, `id_number`, is_regular_person, is_foreman, `IS_ACTIVE`) + VALUES (#{teamId}, #{idNumber}, #{isRegularPerson}, #{isForeman}, '1'); insert into bm_worker_contract @@ -44,7 +52,8 @@ ,is_audit ) - values (#{contractId}, #{idNumber},#{name}, #{postId},#{contractCode}, #{laborContractType}, #{role}, #{contractValidDate}, + values (#{contractId}, #{idNumber},#{name}, #{postId},#{contractCode}, #{laborContractType}, #{role}, + #{contractValidDate}, #{contractInvalidDate}, #{contractType}, #{wageApprovedWay}, #{wageCriterion}, #{miurInsurance}, #{whetherOnJob}, #{endowmentInsurance} @@ -62,7 +71,8 @@ ,is_audit ) - select #{contractId}, #{idNumber},#{name}, #{postId},#{contractCode}, #{laborContractType}, #{role}, #{contractValidDate}, + select #{contractId}, #{idNumber},#{name}, #{postId},#{contractCode}, #{laborContractType}, #{role}, + #{contractValidDate}, #{contractInvalidDate}, #{contractType}, #{wageApprovedWay}, #{wageCriterion}, #{miurInsurance}, #{whetherOnJob}, #{endowmentInsurance} @@ -71,11 +81,11 @@ from dual where NOT EXISTS ( - select * from bm_worker_contract where id = #{contractId} + select * from bm_worker_contract where id = #{contractId} ); - + insert into sys_user (username, password, loginname, id_number,phone, @@ -96,21 +106,34 @@ '1', '1') - update bm_worker set social_security_path = #{socialSecurityPath} where id_number = #{idNumber} + update bm_worker + set social_security_path = #{socialSecurityPath} + where id_number = #{idNumber} - insert into bm_worker_payroll(id_number,path,upload_time) values(#{idNumber},#{wageCardPath},#{uploadTime}) + insert into bm_worker_payroll(id_number, path, upload_time) + values (#{idNumber}, #{wageCardPath}, #{uploadTime}) - insert into bm_worker_contract_witness(contract_id,id_number,witness_path,upload_date) - values(#{contractId},#{idNumber},#{contractPath},now()) + insert into bm_worker_contract_witness(contract_id, id_number, witness_path, upload_date) + values (#{contractId}, #{idNumber}, #{contractPath}, now()) - replace into bm_worker_training_result(id_number, pro_id, company_exam_file, dept_exam_file, + replace + into bm_worker_training_result(id_number, pro_id, company_exam_file, dept_exam_file, team_exam_file, company_exam_score, dept_exam_score,team_exam_score, is_pass) - values (#{idNumber}, #{proId}, #{companyExamFilePath}, #{deptExamFilePath}, #{teamExamFilePath}, - #{companyExamScore}, #{deptExamScore}, #{teamExamScore}, #{isPass}) + values ( + #{idNumber}, + #{proId}, + #{companyExamFilePath}, + #{deptExamFilePath}, + #{teamExamFilePath}, + #{companyExamScore}, + #{deptExamScore}, + #{teamExamScore}, + #{isPass} + ) @@ -138,7 +161,7 @@ ,FACE_FEATURES - ) + ) values (#{idNumber}, 3, #{facePhoto}, #{userId} ,#{faceFeatureByte} @@ -147,141 +170,218 @@ - INSERT INTO `bm_worker_checkup`(`ID_NUMBER`, `PHOTO_PATH`, `upload_id`) + INSERT INTO `bm_worker_checkup`(`ID_NUMBER`, `PHOTO_PATH`, `upload_id`) VALUES (#{idNumber}, #{checkupFilePath}, #{userId}) - UPDATE `bm_worker_checkup` SET `IS_ACTIVE` = '0' - WHERE `ID_NUMBER` = #{idNumber} and `PHOTO_PATH` != #{checkupFilePath} and `IS_ACTIVE` = '1' + UPDATE `bm_worker_checkup` + SET `IS_ACTIVE` = '0' + WHERE `ID_NUMBER` = #{idNumber} + and `PHOTO_PATH` != #{checkupFilePath} + and `IS_ACTIVE` = '1' - UPDATE `bm_worker_checkup` SET `IS_ACTIVE` = '0' - WHERE `ID_NUMBER` = #{idNumber} and `IS_ACTIVE` = '1' + UPDATE `bm_worker_checkup` + SET `IS_ACTIVE` = '0' + WHERE `ID_NUMBER` = #{idNumber} + and `IS_ACTIVE` = '1' - update bm_worker set - `name` = #{name}, `sex` = #{sex}, `ethnic` = #{ethnic}, ein_status = 1, - `birthday` = #{birthday}, `address` = #{address}, `issueauthority` = #{issueauthority}, - `sign_date` = #{signDate}, `expiry_date` = #{expiryDate}, `phone` = #{phone}, - `cultrue` = #{cultrue}, `political_outlook` = #{politicalOutlook}, `address_phone` = #{addressPhone}, - `post_id` = #{postId}, `person_type` = #{personType}, `worker_skill` = #{workerSkill}, - `important_person` = #{importantPerson}, `urgent_person` = #{urgentPerson}, - `urgent_person_phone` = #{urgentPersonPhone},id_number = #{idNumber}, - social_security_number = #{socialSecurityNumber},social_security_unit = #{socialSecurityUnit}, - worker_type = #{employmentType}, light_status = #{lightStatus}, is_own_person = #{isOwnPerson}, - id_number = #{idNumber}, employment_type = #{employmentTypes} , checkup_date = #{checkupDate} - where id_number = #{id} and is_active = '1' + update bm_worker + set `name` = #{name}, + `sex` = #{sex}, + `ethnic` = #{ethnic}, + ein_status = 1, + `birthday` = #{birthday}, + `address` = #{address}, + `issueauthority` = #{issueauthority}, + `sign_date` = #{signDate}, + `expiry_date` = #{expiryDate}, + `phone` = #{phone}, + `cultrue` = #{cultrue}, + `political_outlook` = #{politicalOutlook}, + `address_phone` = #{addressPhone}, + `post_id` = #{postId}, + `person_type` = #{personType}, + `worker_skill` = #{workerSkill}, + `important_person` = #{importantPerson}, + `urgent_person` = #{urgentPerson}, + `urgent_person_phone` = #{urgentPersonPhone}, + id_number = #{idNumber}, + social_security_number = #{socialSecurityNumber}, + social_security_unit = #{socialSecurityUnit}, + worker_type = #{employmentType}, + light_status = #{lightStatus}, + is_own_person = #{isOwnPerson}, + id_number = #{idNumber}, + employment_type = #{employmentTypes}, + checkup_date = #{checkupDate} + where id_number = #{id} + and is_active = '1' - update bm_worker_bank set - `bank_card` = #{bankCard}, `bank_name` = #{bankName},id_number = #{idNumber} - where id_number = #{id} and is_active = '1' + update bm_worker_bank + set `bank_card` = #{bankCard}, + `bank_name` = #{bankName}, + id_number = #{idNumber} + where id_number = #{id} + and is_active = '1' - update bm_worker_certificate set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_contract set idCard = #{idNumber} where idCard = #{id}; - update bm_worker_contract_details set id_card = #{idNumber} where id_card = #{id}; - update bm_worker_contract_witness set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_ein_history set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_give set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_goods_collect set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_payroll set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_photo set id_number = #{idNumber} where id_number = #{id}; - update bm_worker_train set id_number = #{idNumber} where id_number = #{id}; - update bm_sub_team set team_Idnumber = #{idNumber} where team_Idnumber = #{id}; - update bm_team_user_relation set id_number = #{idNumber} where id_number = #{id}; + update bm_worker_certificate + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_contract + set idCard = #{idNumber} + where idCard = #{id}; + update bm_worker_contract_details + set id_card = #{idNumber} + where id_card = #{id}; + update bm_worker_contract_witness + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_ein_history + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_give + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_goods_collect + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_payroll + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_photo + set id_number = #{idNumber} + where id_number = #{id}; + update bm_worker_train + set id_number = #{idNumber} + where id_number = #{id}; + update bm_sub_team + set team_Idnumber = #{idNumber} + where team_Idnumber = #{id}; + update bm_team_user_relation + set id_number = #{idNumber} + where id_number = #{id}; - update sys_user set `username` = #{name},`id_number` = #{idNumber}, - `phone` = #{phone}, org_id = #{orgId} + update sys_user + set `username` = #{name}, + `id_number` = #{idNumber}, + `phone` = #{phone}, + org_id = #{orgId} where phone = #{phone} - update bm_worker_bank set - `bank_card` = #{wageBankCard}, - `bank_name` = #{wageBankName}, - `roll_bank_name` = #{wageBankSubBranchName} - where id_number = #{idNumber} and is_active = '1' + update bm_worker_bank + set `bank_card` = #{wageBankCard}, + `bank_name` = #{wageBankName}, + `roll_bank_name` = #{wageBankSubBranchName} + where id_number = #{idNumber} + and is_active = '1' - update bm_worker set - social_security_path = null + update bm_worker + set social_security_path = null where id_number = #{idNumber} - - + + - update bm_worker_ein_history set sub_id = #{subId}, - team_id = #{teamId}, post_id = #{postId} - where id_number = #{idNumber} and project_id = #{proId} and is_active = 1; - update exam_worker_ein_msg set work_type_id = #{postId} - where id_number = #{idNumber} and pro_id = #{proId} and is_active = 1; + update bm_worker_ein_history + set sub_id = #{subId}, + team_id = #{teamId}, + post_id = #{postId} + where id_number = #{idNumber} + and project_id = #{proId} + and is_active = 1; + update exam_worker_ein_msg + set work_type_id = #{postId} + where id_number = #{idNumber} + and pro_id = #{proId} + and is_active = 1; - update bm_worker_red_history set end_time = now(), is_active = 0 + update bm_worker_red_history + set end_time = now(), + is_active = 0 where id = #{id} UPDATE exam_worker_train_complete_result res - INNER JOIN exam_ein_train_bind bind ON res.id = bind.complete_id - INNER JOIN exam_worker_ein_msg ein ON ein.id = bind.ein_id - SET res.is_active = 0 + INNER JOIN exam_ein_train_bind bind + ON res.id = bind.complete_id + INNER JOIN exam_worker_ein_msg ein ON ein.id = bind.ein_id + SET res.is_active = 0 WHERE ein.id = #{id} replace into exam_ein_train_bind(complete_id,ein_id) values - + (#{item.id},#{item.name}) - update exam_worker_ein_msg set online = #{online},is_finish = #{isFinish} where id = #{id} + update exam_worker_ein_msg + set online = #{online}, + is_finish = #{isFinish} + where id = #{id} - update exam_worker_ein_msg set is_active = '0' where id_number = #{idNumber} + update exam_worker_ein_msg + set is_active = '0' + where id_number = #{idNumber} - update sys_user set `username` = #{name},`id_number` = #{idNumber}, - `phone` = #{phone}, org_id = #{orgId} + update sys_user + set `username` = #{name}, + `id_number` = #{idNumber}, + `phone` = #{phone}, + org_id = #{orgId} where phone = #{oldPhone} - update bm_evaluation_worker set light_status = #{lightStatus} - where id_number = #{idNumber} and currentDay = CURRENT_DATE() + update bm_evaluation_worker + set light_status = #{lightStatus} + where id_number = #{idNumber} + and currentDay = CURRENT_DATE() - update bm_worker set - is_active = '0' + update bm_worker + set is_active = '0' where id_number = #{idNumber} - update bm_worker_bank set - is_active = '0' + update bm_worker_bank + set is_active = '0' where id_number = #{idNumber} - update bm_team_user_relation set - is_active = '0' + update bm_team_user_relation + set is_active = '0' where id_number = #{idNumber} - delete from bm_worker_payroll where PATH = #{s} + delete + from bm_worker_payroll + where PATH = #{s} + + + + SELECT + ftac.id, bw.`name` AS personName, LEFT(ftac.attendance_time,10) AS attendanceTime, ftac.remark AS remark diff --git a/modules/bmw/src/main/resources/static/js/work/indexScreen/indexScreen.js b/modules/bmw/src/main/resources/static/js/work/indexScreen/indexScreen.js index f274b1b..92f5072 100644 --- a/modules/bmw/src/main/resources/static/js/work/indexScreen/indexScreen.js +++ b/modules/bmw/src/main/resources/static/js/work/indexScreen/indexScreen.js @@ -1118,15 +1118,20 @@ function workPerson(subCompanyId) { success: function (data) { if (data.code == 200) { var str = data.data - sexECharts(str.maleNum, str.femaleNum); - workTypeECharts(str.pgNum, str.jgNum, str.gkNum, str.dhNum, str.qtNum) - ageECharts(str.twentyNum, str.thirtyNum, str.fortyNum, str.fiftyNum, str.sixtyNum) - rygECharts(str.greenNum, str.yellowNum, str.redNum) - personType(str.formalNum, str.temporaryNum); - personType1(str.localNum, str.noLocalNum); - closeLayer(); - if (flag) { - closeLayer1(); + if(str){ + sexECharts(str.maleNum, str.femaleNum); + workTypeECharts(str.pgNum, str.jgNum, str.gkNum, str.dhNum, str.qtNum) + ageECharts(str.twentyNum, str.thirtyNum, str.fortyNum, str.fiftyNum, str.sixtyNum) + rygECharts(str.greenNum, str.yellowNum, str.redNum) + personType(str.formalNum, str.temporaryNum); + personType1(str.localNum, str.noLocalNum); + closeLayer(); + if (flag) { + closeLayer1(); + } + }else{ + layer.close(index1); + layer.close(index2); } } }, diff --git a/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamAttDetails.js b/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamAttDetails.js index a1b02f9..7c5b5d4 100644 --- a/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamAttDetails.js +++ b/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamAttDetails.js @@ -154,9 +154,77 @@ function init(){ {"data": "personName","width":"10%"}, {"data": "attendanceTime","width":"10%"}, {"data": "remark","width":"10%"}, + {"data": "","width":"10%", + "render": function (data, type, row) { + var state = row['state']; + var teamStatus = row['teamStatus']; + + var id = row['id']; + var html = ''; + html += buttonUpdate(id, "", pers); + return html; + } + }, ], "order": [[0, "desc"], [1, "asc"]] //在栏目列上显示排序功能 }); } +function buttonUpdate(id, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} +/** + * 修改 + * */ +function updateView(id) { + let index = layer.confirm("是否确定取消考勤数据?",function () { + $.ajax({ + type: 'post', + contentType: "application/x-www-form-urlencoded", + url: ctxPath + '/NoSignalTeamAttend/updateAtt', + dataType: 'json', + data: { + "id": id + }, + success: function (data) { + layer.close(index); + if (data.code == 200) { + top.layer.alert('取消考勤成功', {icon: 1}); + example.ajax.reload(); // 刷新页面 + } else { + layer.msg("取消考勤失败", {icon: 2},function () { + example.ajax.reload(); // 刷新页面 + }); + } + } + }) + }) + /*var height = '85%'; + var width = '60%'; + var index = layer.open({ + title: ['无信号考勤修改', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'], + type: 2, + content: './noSignalTeamSetUpAttFrom.html', + area: [width, height], + maxmin: false, + btn: ['确定', '关闭'], + success: function (layero, index) { + //打开页面成功时执行 + var myIframe = window[layero.find('iframe')[0]['name']]; + myIframe.setDat(id); //aaa()为子页面的方法 + }, + yes: function (index, layero) { + // 获取弹出层中的form表单元素 + var formSubmit = layer.getChildFrame('form', index); + var submited = formSubmit.find('button')[0]; + submited.click(); + } + });*/ +} \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.js b/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.js new file mode 100644 index 0000000..4c95b69 --- /dev/null +++ b/modules/bmw/src/main/resources/static/js/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.js @@ -0,0 +1,53 @@ +var layer +var form +layui.use(['layer','laydate','form'], function () { + layer = layui.layer; + var laydate = layui.laydate; + form = layui.form; + // 验证成功后才会执行下面的操作 + form.on('submit(formDemo)', function (data) { + update(data) + }); +}); + +function update(formData) { + // 加载提示 + let loadingMsg = layer.msg('数据请求中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']}); + // form请求地址 + let formUrl = ctxPath + '/NoSignalTeamSetUp/updNoSignalTeam'; + $.ajax({ + type: 'POST', + async: false, // 默认异步true,false表示同步 + url: formUrl, // 请求地址 + contentType: "application/json; charset=utf-8", + dataType: 'json', // 服务器返回数据类型 + data: JSON.stringify(formData.field), //获取提交的表单字段 + success: function (data) { + layer.close(loadingMsg); // 关闭提示层 + if(data.code == 200){ + layer.alert(data.msg, {icon: 1},()=>{ + reloading(); + }); + }else{ + layer.alert(data.msg, {icon: 2}); + } + }, + error: function (XMLHttpRequest, textStatus, e) { + layer.close(loadingMsg); + layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false}); + } + }); +} + +function setDat(id) { + alert(id) + $("#id").val(id) + form.render() +} + +//设置弹窗关闭 +function reloading() { + var index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 + parent.layer.close(index); //再执行关闭 + window.parent.location.reload(); +} \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.html b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.html new file mode 100644 index 0000000..28a6af7 --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.html @@ -0,0 +1,100 @@ + + + + + 农民工花名册 + + + + + + + +
+
+
+
+ + + + +
+
+
+
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + +
序号项目部工程名称工程类型工程状态当前在场人数已出场人数累计入场人数第一次人员入场时间操作
+
+
+
+
+ + + + + + + + + + + + + diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.js b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.js new file mode 100644 index 0000000..abaa121 --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterList.js @@ -0,0 +1,197 @@ +var pers = checkPermission(); +var example; +layui.use(['form','layer'], function () { + $("#searchBt").click(function () { + example.ajax.reload(); + }); + init(); + getProByOrgId("","",""); +}); + +function init(){ + example = + $('#dt-table').DataTable({ + "sort": false, + "searching": false, + "processing": true, //加载数据时显示进度状态 + "serverSide": true, + //表头固定 + "fixedHeader": true, + "scrollX": "500px", + "scrollY": "650px", + "scrollCollapse": true, + "language": { + "url": ctxPath + "/js/plugin/datatables/Chinese.lang" + }, + "ajax": { + "url": ctxPath + "/personComprehensive/getWorkerRosterList", + "type": "post", + "data": function (d) { + d.proGeneralName = $("#proGeneralName").val(); + d.proId = $('#proId').val(); + d.proStatusId = $("#proStatusId").val(); + }, + "error": function (xhr, textStatus, errorThrown) { + var msg = xhr.responseText; + console.log(msg); + var response = JSON.parse(msg); + var code = response.code; + var message = response.message; + if (code == 400) { + layer.msg(message); + } else if (code == 401) { + localStorage.removeItem("smz-token"); + layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { + location.href = ctxPath + '/login.html'; + }); + } else if (code == 403) { + console.log("未授权:" + message); + layer.msg('未授权'); + } else if (code == 500) { + console.log('系统错误:' + message); + } + } + }, + "drawCallback": function() { + // alert( '表格重绘了' ); + var thisDataTable = $('#dt-table').DataTable(); + $(".pagination").append("
  • " + + "" + + "确认
  • "); + //点击按钮跳转指定页数 + $('#dataTable-btn').click(function (e) { + if ($("#changePage").val() && $("#changePage").val() > 0) { + var redirectpage = $("#changePage").val() - 1; + } else { + var redirectpage = 0; + } + thisDataTable.page(redirectpage).draw( 'page' ); + }); + //敲击回车键跳转指定页数 + $("#changePage").keypress(function (e) { + if(event.keyCode==13){ + if ($("#changePage").val() && $("#changePage").val() > 0) { + var redirectpage = $("#changePage").val() - 1; + } else { + var redirectpage = 0; + } + thisDataTable.page(redirectpage).draw( 'page' ); + } + }); + }, + "dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>>", + "columns": [ + { + width: '4%', + data: function (row, type, set, meta) { + var c = meta.settings._iDisplayStart + meta.row + 1; + return c; + } + }, + {"data": "proGeneralName","width":"5%"}, + {"data": "proName","width":"12%"}, + {"data": "proType","width":"7%"}, + {"data": "proStatusName","width":"8%"}, + {"data": "","width":"12%", + "render": function (data, type, row) { + var currentOnSiteNum = row['currentOnSiteNum']; + if (currentOnSiteNum == null || currentOnSiteNum == "null" || currentOnSiteNum == "" || currentOnSiteNum == "0") { + return "0"; + } else { + return `${currentOnSiteNum}`; + } + } + }, + {"data": "","width":"12%", + "render": function (data, type, row) { + var exitedNum = row['exitedNum']; + if (exitedNum == null || exitedNum == "null" || exitedNum == "" || exitedNum == "0") { + return "0"; + } else { + return `${exitedNum}`; + } + } + }, + {"data": "","width":"12%", + "render": function (data, type, row) { + var totalEntryNum = row['totalEntryNum']; + if (totalEntryNum == null || totalEntryNum == "null" || totalEntryNum == "" || totalEntryNum == "0") { + return "0"; + } else { + return `${totalEntryNum}`; + } + } + }, + {"data": "firstEntryTime","width":"12%"}, + { + "data": "", + "width":"12%", + "defaultContent": "", + "orderable": false, + "render": function (data, type, row) { + var proId = row['proId']; + var html = ''; + html += buttonCheck(proId, "", pers); + html += buttonUpdate(proId, "", pers); + return html; + } + } + ], + "order": [[0, "desc"], [1, "asc"]] //在栏目列上显示排序功能 + }); +} + +function buttonCheck(proId, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +/** + * 详情 + * */ +function checkView(proId) { + var height = '90%'; + var width = '80%'; + var index = layer.open({ + title: ['详情', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'], + type: 2, + content: 'workerRosterProList.html', + area: [width, height], + maxmin: false, + success: function (layero, index) { + var myIframe = window[layero.find('iframe')[0]['name']]; + var fnc = myIframe.setData(proId); //aaa()为子页面的方法 + }, + }); + // $.ajax({ + // type: 'get', + // contentType: "application/x-www-form-urlencoded", + // url: ctxPath + '/personComprehensive/getWorkerRosterProList'+proId, + // dataType: 'json', + // success: function (data) { + // + // } + // }) +} + +function buttonUpdate(idNumber, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +/** + * 导出 + * */ +function updateView(idNumber) { + +} \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.html b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.html new file mode 100644 index 0000000..5ceae85 --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.html @@ -0,0 +1,126 @@ + + + + + 农民工花名册-工程 + + + + + + + +
    +
    +
    +
    + + + + +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    序号合同编号身份证信息银行卡信息体检日期工种手机号码所属分包单位所属班组亲属合同工资进场时间退场时间备注用工类型
    姓名性别身份证号出生日期民族签发机关身份证住址身份证有效期银行名称银行卡号银行卡联行号紧急联系人紧急联系人电话合同期限类型签订时间终止日期工资核定方式工资核定标准
    +
    +
    +
    +
    + + + + + + + + + + + + + diff --git a/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.js b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.js new file mode 100644 index 0000000..0bcb9c0 --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/Person/AttendanceMachine/workerRosterProList.js @@ -0,0 +1,272 @@ +var pers = checkPermission(); +var example; +var proIds; +function setData(proId){ + proIds = proId; + layui.use(['form','layer'], function () { + $("#searchBt").click(function () { + example.ajax.reload(); + }); + init(); + // getProByOrgId("","",""); + }); +} + + + +function init(){ + example = + $('#dt-table').DataTable({ + "sort": false, + "searching": false, + "processing": true, //加载数据时显示进度状态 + "serverSide": true, + //表头固定 + "fixedHeader": true, + "scrollCollapse": true, + "scrollX": true, // 启用横向滚动 + "autoWidth": false, // 禁用自动宽度计算 + "scrollY": "600px", // 设置垂直滚动 + "language": { + "url": ctxPath + "/js/plugin/datatables/Chinese.lang" + }, + "ajax": { + "url": ctxPath + "/personComprehensive/getWorkerRosterProList", + "type": "post", + "data": function (d) { + d.proId =proIds + // d.proGeneralName = $("#proGeneralName").val(); + // d.proId = $('#proId').val(); + // d.proStatusId = $("#proStatusId").val(); + }, + "error": function (xhr, textStatus, errorThrown) { + var msg = xhr.responseText; + console.log(msg); + var response = JSON.parse(msg); + var code = response.code; + var message = response.message; + if (code == 400) { + layer.msg(message); + } else if (code == 401) { + localStorage.removeItem("smz-token"); + layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { + location.href = ctxPath + '/login.html'; + }); + } else if (code == 403) { + console.log("未授权:" + message); + layer.msg('未授权'); + } else if (code == 500) { + console.log('系统错误:' + message); + } + } + }, + "drawCallback": function() { + // alert( '表格重绘了' ); + var thisDataTable = $('#dt-table').DataTable(); + $(".pagination").append("
  • " + + "" + + "确认
  • "); + //点击按钮跳转指定页数 + $('#dataTable-btn').click(function (e) { + if ($("#changePage").val() && $("#changePage").val() > 0) { + var redirectpage = $("#changePage").val() - 1; + } else { + var redirectpage = 0; + } + thisDataTable.page(redirectpage).draw( 'page' ); + }); + //敲击回车键跳转指定页数 + $("#changePage").keypress(function (e) { + if(event.keyCode==13){ + if ($("#changePage").val() && $("#changePage").val() > 0) { + var redirectpage = $("#changePage").val() - 1; + } else { + var redirectpage = 0; + } + thisDataTable.page(redirectpage).draw( 'page' ); + } + }); + }, + "dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>>", + "columns": [ + { + width: '60px', + data: function (row, type, set, meta) { + var c = meta.settings._iDisplayStart + meta.row + 1; + return c; + } + }, + {"data": "contractCode", "width":"180px"}, + {"data": "name", "width":"100px"}, + {"data": "sex", "width":"80px"}, + {"data": "idNumber", "width":"180px"}, + {"data": "birthday", "width":"120px"}, + {"data": "ethnic", "width":"100px"}, + {"data": "issueauthority", "width":"200px"}, + {"data": "address", "width":"300px"}, + { + "data": "", + "width":"200px", + "render": function (data, type, row) { + var signDate = row['signDate']; + var expiryDate = row['expiryDate']; + var html = signDate +'~' + expiryDate; + return html; + } + }, + {"data": "bankName", "width":"180px"}, + {"data": "bankCard", "width":"200px"}, + {"data": "bankBranch", "width":"250px"}, + {"data": "checkupDate", "width":"120px"}, + {"data": "postName", "width":"150px"}, + {"data": "phone", "width":"120px"}, + {"data": "subName", "width":"150px"}, + {"data": "teamName", "width":"150px"}, + {"data": "urgentPerson", "width":"120px"}, + {"data": "urgentPersonPhone", "width":"120px"}, + {"data": "laborContractType", "width":"120px"}, + {"data": "contractValidDate", "width":"120px"}, + {"data": "contractInvalidDate", "width":"120px"}, + {"data": "wageApprovedWay", "width":"120px"}, + {"data": "wageCriterion", "width":"120px"}, + {"data": "einTime", "width":"120px"}, + {"data": "exitTime", "width":"120px"}, + {"data": "remark", "width":"200px"}, + {"data": "workerType", "width":"120px"}, + ], + "order": [[0, "desc"], [1, "asc"]], + "createdRow": function(row, data, dataIndex) { + $(row).css({ + "height": "40px" + }); + } + }); + + // 基础样式 + var baseStyle = { + "border": "1px solid #e6e6e6", + "padding": "8px", + "text-align": "center", + "font-size": "13px", + "font-family": "Microsoft YaHei" + }; + + // 表格整体样式 + $('#dt-table').css({ + "border-collapse": "collapse", + "width": "100%", + "background-color": "#fff" + }); + + // 表头样式 + $('#dt-table thead th').css({ + ...baseStyle, + "background-color": "#f2f2f2", + "font-weight": "500", + "color": "#333" + }); + + // 单元格样式 + $('#dt-table tbody td').css({ + ...baseStyle, + "background-color": "#fff", + "color": "#666", + "white-space": "nowrap", + "overflow": "hidden", + "text-overflow": "ellipsis", + "width":"100px" + }); + + // 奇数行样式 + $('#dt-table tbody tr:odd').css({ + "background-color": "#fafafa" + }); + + // hover效果 + $('#dt-table tbody tr').hover( + function() { + $(this).css({ + "background-color": "#f5f5f5" + }); + }, + function() { + var isOdd = $(this).index() % 2 === 1; + $(this).css({ + "background-color": isOdd ? "#fafafa" : "#fff" + }); + } + ); + + // 分页样式 + $('.dataTables_paginate').css({ + "margin-top": "10px" + }); + + $('.paginate_button').css({ + "padding": "5px 10px", + "margin": "0 2px", + "border": "1px solid #ddd", + "background-color": "#fff", + "cursor": "pointer" + }); + + $('.paginate_button.current').css({ + "background-color": "#009688", + "color": "#fff", + "border-color": "#009688" + }); +} + +function buttonCheck(proId, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +/** + * 详情 + * */ +function checkView(proId) { + var height = '90%'; + var width = '80%'; + $.ajax({ + type: 'get', + contentType: "application/x-www-form-urlencoded", + url: ctxPath + '/personComprehensive/getWorkerRosterProList'+proId, + dataType: 'json', + success: function (data) { + var index = layer.open({ + title: ['详情', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'], + type: 2, + content: 'workerRosterProList.html', + area: [width, height], + maxmin: false, + success: function (layero, index) { + var myIframe = window[layero.find('iframe')[0]['name']]; + var fnc = myIframe.setData(data.data); //aaa()为子页面的方法 + }, + }); + } + }) +} + +function buttonUpdate(idNumber, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +/** + * 导出 + * */ +function updateView(idNumber) { + +} \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamAttDetails.html b/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamAttDetails.html index 6b278a3..69f3dcc 100644 --- a/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamAttDetails.html +++ b/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamAttDetails.html @@ -55,6 +55,7 @@ 姓名 自动打卡日期 备注 + 操作 diff --git a/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.html b/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.html new file mode 100644 index 0000000..7629056 --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/team/noSignalTeam/noSignalTeamSetUpAttFrom.html @@ -0,0 +1,34 @@ + + + + + 无信号班组设置-考勤取消 + + + +
    +
    +
    + +
    + +
    + +
    +
    + + +
    +
    +
    + + + + + + +