From 55ed1e2f08d10c0bbc05e65908aa508eb8d53b24 Mon Sep 17 00:00:00 2001 From: lSun <15893999301@qq.com> Date: Wed, 4 Feb 2026 17:41:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=8C=85=E5=95=86-=E6=B8=85=E9=80=80?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bmw/person/entity/BasePersonBean.java | 2 + .../bonus/bmw/person/entity/ClearBean.java | 52 ++++ .../bmw/person/service/InOutServiceImpl.java | 1 + .../controller/SubContractorController.java | 34 +++ .../subContractor/dao/SubContractorDao.java | 18 ++ .../entity/SubContractorBean.java | 8 +- .../service/SubContractorService.java | 8 + .../service/SubContractorServiceImp.java | 52 ++++ .../SubContractor/SubContractorMapper.xml | 181 +++++++++++--- .../BasicMsg/ClearOutApplyView.js | 233 ++++++++++++++++++ .../SubContractor/BasicMsg/SubContractor.js | 142 ++++++++++- .../SubContract/SubContractList.js | 8 +- .../js/work/team/BasicMsg/TeamBasicFrom.js | 2 +- .../work/team/BasicMsg/TeamSwitchSubFrom.js | 4 +- .../BasicMsg/ClearOutApplyView.html | 46 ++++ .../SubContract/SubContractList.html | 2 +- .../work/team/BasicMsg/TeamSwitchSubFrom.html | 8 +- 17 files changed, 751 insertions(+), 50 deletions(-) create mode 100644 modules/bmw/src/main/java/com/bonus/bmw/person/entity/ClearBean.java create mode 100644 modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/ClearOutApplyView.js create mode 100644 modules/bmw/src/main/resources/static/pages/work/SubContractor/BasicMsg/ClearOutApplyView.html diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/BasePersonBean.java b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/BasePersonBean.java index 2c9a5aa..9486f9a 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/BasePersonBean.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/BasePersonBean.java @@ -204,6 +204,7 @@ public class BasePersonBean { private String proName; + private String subId; private String subName; private String einTime; @@ -243,6 +244,7 @@ public class BasePersonBean { * 合同id */ private String contractId; + private String contractName; private String attendanceMachineId; diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ClearBean.java b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ClearBean.java new file mode 100644 index 0000000..5701f32 --- /dev/null +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/entity/ClearBean.java @@ -0,0 +1,52 @@ +package com.bonus.bmw.person.entity; + +import lombok.Data; + +/** + * 清退信息 + */ +@Data +public class ClearBean { + /** + * id + */ + private String id; + /** + * 批次编号id + */ + private String clearId; + /** + * 分包id + */ + private String subId; + /** + * 分包名称 + */ + private String subName; + /** + * 合同id 多个用,隔开 + */ + private String contractId; + /** + * 合同名称 多个用,隔开 + */ + private String contractName; + /** + * 班组id多个用,隔开 + */ + private String teamId; + /** + * 班组名称 多个用,隔开 + */ + private String teamName; + + /** + * 班组id多个用,隔开 + */ + private String workerId; + /** + * 班组名称 多个用,隔开 + */ + private String workerName; + +} diff --git a/modules/bmw/src/main/java/com/bonus/bmw/person/service/InOutServiceImpl.java b/modules/bmw/src/main/java/com/bonus/bmw/person/service/InOutServiceImpl.java index fdad7a6..bf1eee0 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/person/service/InOutServiceImpl.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/person/service/InOutServiceImpl.java @@ -179,6 +179,7 @@ public class InOutServiceImpl implements InOutService { } @Override + @Transactional(rollbackFor = Exception.class) public R batchPersonOutPlaceList(BasePersonBean bean) { // 逗号分割的idNumber,exitExamineRemark List BasePersonBeans = bean.getIdNumberList(); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/controller/SubContractorController.java b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/controller/SubContractorController.java index 98d3949..72ec7d0 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/controller/SubContractorController.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/controller/SubContractorController.java @@ -2,6 +2,8 @@ package com.bonus.bmw.subContractor.controller; import com.alibaba.fastjson2.JSON; import com.bonus.bmw.person.dao.GetChildListDao; +import com.bonus.bmw.person.entity.BasePersonBean; +import com.bonus.bmw.person.entity.ClearBean; import com.bonus.bmw.subContractor.entity.SubContractorBean; import com.bonus.bmw.subContractor.service.SubContractorService; import com.bonus.common.core.domain.R; @@ -9,6 +11,7 @@ import com.bonus.common.core.table.PageTableHandler; import com.bonus.common.core.table.PageTableRequest; import com.bonus.common.core.table.PageTableResponse; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.log.annotation.Log; import com.bonus.common.log.enums.BusinessType; import com.bonus.common.security.annotation.RequiresPermissions; @@ -95,6 +98,37 @@ public class SubContractorController { } + @PostMapping("getClearOutList") + @Log(title = "分包商清退-根据id查询班组人员", businessType = BusinessType.SELECT) + public AjaxResult getClearOutList(String id) { + try { + List list = service.getClearOutList(id); + return AjaxResult.success(list); + } catch (Exception e) { + log.error("查询清退人员失败,id={}", id, e); + return AjaxResult.error("查询失败"); + } + } + + @PostMapping("/clearOutPlaceList") + @Log(title = "分包商清退-批量出场申请", businessType = BusinessType.UPDATE) + @ResponseBody + public R batchPersonOutPlaceList(@RequestBody BasePersonBean bean) { + return service.clearOutPlaceList(bean); + } + + @PostMapping("getClearOutRecord") + @Log(title = "分包商清退-批量出场申请列表", businessType = BusinessType.SELECT) + public ClearBean getClearOutRecord(String id) { + ClearBean bean = null; + try { + bean = service.getClearOutRecord(id); + } catch (Exception e) { + e.printStackTrace(); + } + return bean; + } + @DeleteMapping("/{id}") @Log(title = "分包商-删除", businessType = BusinessType.DELETE) @RequiresPermissions("sys:subContractor:del") diff --git a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/dao/SubContractorDao.java b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/dao/SubContractorDao.java index 00d97bf..f552169 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/dao/SubContractorDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/dao/SubContractorDao.java @@ -1,6 +1,8 @@ package com.bonus.bmw.subContractor.dao; +import com.bonus.bmw.person.entity.BasePersonBean; +import com.bonus.bmw.person.entity.ClearBean; import com.bonus.bmw.subContractor.entity.SubContractorBean; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -43,4 +45,20 @@ public interface SubContractorDao { List getWorker(@Param("params")Map params, @Param("offset")Integer offset, @Param("limit") Integer limit); + + List getClearOutList(String id); + + int updateContract(BasePersonBean bean); + + int updateTeam(BasePersonBean bean); + + int addClearOut(ClearBean clearOutBean); + + BasePersonBean getSubById(String subId); + + BasePersonBean getTeamById(String subId); + + BasePersonBean getWorkerById(String subId); + + ClearBean getClearOutRecord(String id); } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/entity/SubContractorBean.java b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/entity/SubContractorBean.java index 8646de9..8d4e066 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/entity/SubContractorBean.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/entity/SubContractorBean.java @@ -1,9 +1,10 @@ package com.bonus.bmw.subContractor.entity; +import com.bonus.bmw.person.entity.BasePersonBean; import lombok.Data; @Data -public class SubContractorBean { +public class SubContractorBean extends BasePersonBean { //新 private String id;//编号 private String orgId; @@ -48,4 +49,9 @@ public class SubContractorBean { */ private String isDel; + private String teamNum; // 分包关联的班组数量 + private String workerNum; // 分包关联的班组数量下的施工人员数量 + private String idNumber; // 分包关联的班组数量下的施工人员数量 + private String isClear; // 是否清退 + } \ No newline at end of file diff --git a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorService.java b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorService.java index a6cda84..eada83b 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorService.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorService.java @@ -1,6 +1,8 @@ package com.bonus.bmw.subContractor.service; +import com.bonus.bmw.person.entity.BasePersonBean; +import com.bonus.bmw.person.entity.ClearBean; import com.bonus.bmw.subContractor.entity.SubContractorBean; import com.bonus.common.core.domain.R; @@ -29,4 +31,10 @@ public interface SubContractorService { List getSubBearingCapacityList(Map params, Integer offset, Integer limit); void exportSubBearingCapacity(SubContractorBean entity, HttpServletResponse response); + + List getClearOutList(String id); + + R clearOutPlaceList(BasePersonBean bean); + + ClearBean getClearOutRecord(String id); } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorServiceImp.java b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorServiceImp.java index c7aa7b6..4523fed 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorServiceImp.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/subContractor/service/SubContractorServiceImp.java @@ -2,11 +2,16 @@ package com.bonus.bmw.subContractor.service; import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelWriter; +import com.bonus.bmw.person.entity.BasePersonBean; +import com.bonus.bmw.person.entity.ClearBean; +import com.bonus.bmw.person.service.InOutService; import com.bonus.bmw.subContractor.dao.SubContractorDao; import com.bonus.bmw.subContractor.entity.SubContractorBean; import com.bonus.common.core.constant.Constants; import com.bonus.common.core.domain.R; +import com.bonus.common.core.utils.uuid.IdUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; @@ -23,6 +28,9 @@ public class SubContractorServiceImp implements SubContractorService { @Resource(name = "SubContractorDao") private SubContractorDao dao; + + @Resource + private InOutService inOutService; /* * 查询分包商页面 * @@ -199,5 +207,49 @@ public class SubContractorServiceImp implements SubContractorService { } + @Override + public List getClearOutList(String id) { + return dao.getClearOutList( id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R clearOutPlaceList(BasePersonBean bean) { + List BasePersonBeans = bean.getIdNumberList(); + bean.setSubId(BasePersonBeans.get(0).getSubId()); + BasePersonBean workerBean = dao.getWorkerById(bean.getSubId()); + //先调批量出场的方法 + inOutService.batchPersonOutPlaceList(bean); + + //2. 根据分包商id更新合同表和班组表 + BasePersonBean contractBean = dao.getSubById(bean.getSubId()); + int contractRows = dao.updateContract(bean); + + BasePersonBean teamBean = dao.getTeamById(bean.getSubId()); + int teamRows = dao.updateTeam(bean); + + //将清退信息插入清退表 + ClearBean clearOutBean = new ClearBean(); + clearOutBean.setClearId(IdUtils.randomUUID().toString()); + clearOutBean.setSubId(bean.getSubId()); + clearOutBean.setContractId(contractBean.getContractId()); + clearOutBean.setContractName(contractBean.getContractName()); + clearOutBean.setTeamId(teamBean.getTeamId()); + clearOutBean.setTeamName(teamBean.getTeamName()); + clearOutBean.setWorkerId(workerBean.getIdNumber()); + clearOutBean.setWorkerName(workerBean.getName()); + int clearRows = dao.addClearOut(clearOutBean); + + if (contractRows <= 0 || teamRows <= 0 || clearRows <= 0) { + throw new RuntimeException("清退失败,触发事务回滚"); + } + return R.ok("清退操作成功"); + } + + @Override + public ClearBean getClearOutRecord(String id) { + return dao.getClearOutRecord(id); + } + } diff --git a/modules/bmw/src/main/resources/mapper/SubContractor/SubContractorMapper.xml b/modules/bmw/src/main/resources/mapper/SubContractor/SubContractorMapper.xml index 635fff2..3ba663a 100644 --- a/modules/bmw/src/main/resources/mapper/SubContractor/SubContractorMapper.xml +++ b/modules/bmw/src/main/resources/mapper/SubContractor/SubContractorMapper.xml @@ -18,16 +18,20 @@ bs.seal_path as sealPath, bs.sign_path as signPath, count(DISTINCT bsc.sub_id) as subContractNum, + COUNT(DISTINCT bst.id) AS teamNum, + COUNT(DISTINCT btur.id) AS personnelNum, CASE WHEN COUNT(bsc.id) > 0 OR COUNT(bst.id) > 0 THEN 1 ELSE 0 - END AS isDel + END AS isDel, + bs.is_clear as isClear from bm_subcontractor bs LEFT JOIN pm_organization po ON po.id = bs.org_id and po.IS_ACTIVE = '1' LEFT JOIN bm_sub_contract bsc on bsc.sub_id = bs.id and bsc.is_active = '1' left join t_dict td on bs.major_id = td.id and td.is_active = '1' and td.type = 'sub_level' left join bm_sub_team bst on bs.id = bst.sub_id and bst.is_active = '1' + LEFT JOIN bm_team_user_relation btur on btur.team_id = bst.id and btur.is_active = '1' where bs.IS_ACTIVE = 1 @@ -86,39 +90,36 @@ INSERT INTO bm_subcontractor - ( SUB_NAME, sub_abbreviation, major_id, org_id, legal_name, legal_phone,office_space, - front_idcard_path, back_idcard_path,sub_address, - seal_path, sign_path, IS_ACTIVE ) - VALUES(#{subName},#{subAbbreviation},#{majorId},#{orgId},#{legalName}, - #{legalPhone}, #{officeSpace}, #{frontIdcardPath},#{backIdcardPath},#{subAddress}, - #{sealPath},#{signPath},'1') + (SUB_NAME, sub_abbreviation, major_id, org_id, legal_name, legal_phone, office_space, + front_idcard_path, back_idcard_path, sub_address, + seal_path, sign_path, IS_ACTIVE) + VALUES (#{subName}, #{subAbbreviation}, #{majorId}, #{orgId}, #{legalName}, + #{legalPhone}, #{officeSpace}, #{frontIdcardPath}, #{backIdcardPath}, #{subAddress}, + #{sealPath}, #{signPath}, '1') @@ -170,9 +171,10 @@ + + + update bm_sub_contract set is_active = '0' where sub_id = #{subId} + + + + update bm_sub_team set sub_id = null where sub_id = #{subId} and is_active = '1' + + + + INSERT INTO bm_sub_clear(`clear_id`, `sub_id`, `sub_name`, `contract_id`, `contract_name`, `team_id`, `team_name`, `worker_id`, `worker_name`) + VALUES (#{clearId},#{subId}, #{subName}, #{contractId}, #{contractName}, #{teamId}, #{teamName}, #{workerId}, #{workerName}) + + + + + + + + + \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/ClearOutApplyView.js b/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/ClearOutApplyView.js new file mode 100644 index 0000000..91102b6 --- /dev/null +++ b/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/ClearOutApplyView.js @@ -0,0 +1,233 @@ +let own = localStorage.getItem('own'); +let dataArr; +let table, form, upload; +let layTableIndexVideos = []; + +function setInOutData(data) { + console.log("data=", data); + dataArr = data.map(function (item) { + var parts = item.split(','); + return { + user: parts[0] , + idNumber: parts[1], + postName: parts[2], + proName: parts[3], + subName: parts[4], + teamName: parts[5], + exitVideoPath: parts[6] == "null" ? "" : parts[6], + exitSignPath: parts[7] == "null" ? "" : parts[7], + exitProvePath: parts[8] == "null" ? "" : parts[8], + salaryApplicationPath: parts[9] == "null" ? "" : parts[9], + subId : parts[10] == "null" ? "" : parts[10], + proId : parts[11] == "null" ? "" : parts[11], + teamId : parts[12] == "null" ? "" : parts[12], + }; + }); + + console.log("sss=", dataArr); + + layui.use(['table', 'form', 'upload'], function () { + table = layui.table; + upload = layui.upload; + form = layui.form; + form.render(); + + table.render({ + elem: '#lay-table', + title: '施工人员基本信息', + cols: [[ + { type: 'numbers', title: '序号', align: 'center', width: '6%' }, + { field: 'user', title: '姓名', align: 'center', width: '8%' }, + { field: 'idNumber', title: '身份证', align: 'center', width: '15%' }, + { field: 'postName', title: '工种', align: 'center', width: '11%' }, + { field: 'proName', title: '所属工程', align: 'center', width: '10%' }, + { + title: '所属分包商', align: 'center', width: '10%', + templet: d => d.subName && d.subName !== "null" ? d.subName : "" + }, + { + title: '所属班组', align: 'center', width: '10%', + templet: d => d.teamName && d.teamName !== "null" ? d.teamName : "" + }, + { + field: 'exitSignPath', title: '出场签名', align: 'center', width: '10%', + templet: d => { + let a = d.exitSignPath; + let idx = d.LAY_TABLE_INDEX; + if (a) { + return `已上传`; + } + return `
+ 上传`; + } + }, + { + field: 'exitProvePath', title: '出场证明', align: 'center', width: '10%', + templet: d => { + let a = d.exitProvePath; + let idx = d.LAY_TABLE_INDEX; + if (a) { + return `已上传`; + } + return `
+ 上传`; + } + }, + { + field: 'salaryApplicationPath', title: '工资结算申请书', align: 'center', width: '10%', + templet: d => { + let a = d.salaryApplicationPath; + let idx = d.LAY_TABLE_INDEX; + if (a) { + return `已上传`; + } + return `
+ 上传`; + } + }, + ]], + data: dataArr, + page: true, + limit: 5, + limits: [5, 10, 20], + response: { statusCode: 200 }, + done: function () { + initUploads(); // 表格渲染完成后初始化上传 + } + }); + + form.on('submit(formDemo)', function () { + batchOutApply(); + }); + + $('#searchBt').on('click', doSearch); + }); +} + +// 初始化上传控件(支持表格刷新后重新绑定) +function initUploads() { + let tableData = table.cache['lay-table'] || []; + + tableData.forEach(function (d) { + let idx = d.LAY_TABLE_INDEX; + + // 出场签名上传 + upload.render({ + elem: '#exitSignPath' + idx, + url: fileUrl + '/file/upload', + exts: 'jpg|png|jpeg|pdf', + auto: true, + size: 1024 * 30, + field: 'file', + done: function (res) { + $("#exitSignPaths" + idx).html( + `已上传` + ); + $("#exitSignPath" + idx).hide(); + d.exitSignPath = res.data.url; + } + }); + + // 出场证明上传 + upload.render({ + elem: '#exitProvePath' + idx, + url: fileUrl + '/file/upload', + exts: 'jpg|png|jpeg|pdf', + auto: true, + size: 1024 * 30, + field: 'file', + done: function (res) { + $("#exitProvePaths" + idx).html( + `已上传` + ); + $("#exitProvePath" + idx).hide(); + d.exitProvePath = res.data.url; + } + }); + + // 工资结算申请书上传 + upload.render({ + elem: '#salaryApplicationPath' + idx, + url: fileUrl + '/file/upload', + exts: 'jpg|png|jpeg|pdf', + auto: true, + size: 1024 * 30, + field: 'file', + done: function (res) { + $("#salaryApplicationPaths" + idx).html( + `已上传` + ); + $("#salaryApplicationPath" + idx).hide(); + d.salaryApplicationPath = res.data.url; + } + }); + }); +} + +// 搜索功能(重载表格并重新绑定上传) +function doSearch() { + var keyword = $('#keyWord').val().trim(); + var filteredData = dataArr.filter(item => item.user.indexOf(keyword) !== -1); + + layui.table.reload('lay-table', { + data: filteredData, + page: { curr: 1 }, + done: function () { + initUploads(); // 搜索后重新绑定上传 + } + }); +} + +// 删除行 +function deleteRow(idNumber) { + layer.confirm('是否删除?', function (index) { + var i = dataArr.findIndex(item => item.idNumber == idNumber); + if (i !== -1) { + dataArr.splice(i, 1); + layer.closeAll(); + table.reload('lay-table', { + data: dataArr, + done: function () { + initUploads(); + } + }); + } + }); +} + +// 批量出场 +function batchOutApply() { + if (dataArr.length === 0) { + layer.msg('未选择人员', { icon: 5, time: 2000 }); + return; + } + + $.ajax({ + type: 'post', + url: ctxPath + '/subContractor/clearOutPlaceList', + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ idNumberList: dataArr }), + dataType: 'json', + success: function (data) { + if (data.code == 200) { + layer.msg('出场申请成功', { icon: 1, time: 3000 }); + reloading(); + } else { + layer.msg(data.msg, { icon: 2, time: 3000 }); + } + } + }); +} + +/** + * 关闭当前iframe层并刷新父页面 + * 该函数主要用于在iframe操作完成后,关闭当前弹窗并刷新父页面以显示最新数据 + */ +function reloading() { + // 获取当前iframe的索引值 + var index = parent.layer.getFrameIndex(window.name); + // 关闭当前iframe层 + parent.layer.close(index); + // 刷新父页面 + window.parent.location.reload(); +} diff --git a/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/SubContractor.js b/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/SubContractor.js index 7c943e1..335787e 100644 --- a/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/SubContractor.js +++ b/modules/bmw/src/main/resources/static/js/work/SubContractor/BasicMsg/SubContractor.js @@ -151,12 +151,21 @@ function init() { "render": function (data, type, row) { var id = row['id']; var subContractNum = row['subContractNum']; + var teamNum = row['teamNum']; var isDel = row['isDel']; + var isClear = row['isClear']; var html = ''; html += buttonEdits(id, "sys:subContractor:update", pers); + if(teamNum>0 && subContractNum>0){ + html += buttonClearOut(id, "", pers); + } if(isDel == 0 || isDel == '0'){ html += buttonDel(id,subContractNum, "sys:subContractor:del", pers); } + + if(isClear == 1 || isClear == '1'){ + html += buttonClearOutList(id, "", pers); + } return html; } }, @@ -191,19 +200,19 @@ function insertSubcontractor() { } -// 编辑按钮 +// 修改按钮 function buttonEdits(id, permission, pers) { if (permission != "") { if ($.inArray(permission, pers) < 0) { return ""; } } - var btn = $(""); + var btn = $(""); return btn.prop("outerHTML"); } /** - * 编辑页面 + * 修改页面 */ function edit(id) { $.ajax({ @@ -240,6 +249,131 @@ function edit(id) { }) } +function buttonClearOut(id, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +// 清退按钮 +function clearOut(id) { + $.ajax({ + type: 'POST', + contentType: "application/x-www-form-urlencoded", + url: ctxPath + '/subContractor/getClearOutList', + data: {"id": id}, + dataType: 'json', + success: function (data) { + if(data.code == 200){ + if(data.data.length < 1){ + layer.msg("没有可清退的成员"); + return; + } + var teamNum = data.data[0].teamNum || 0; + var workerNum = data.data[0].workerNum || 0; + var checkedArr = []; + for(var i = 0; i < data.data.length; i++){ + var row = data.data[i]; + // 处理每个字段,如果是 null 或 "null",则替换为空字符串 + var name = row.name && row.name !== "null" ? row.name : ""; + var idNumber = row.idNumber && row.idNumber !== "null" ? row.idNumber : ""; + var postName = row.postName && row.postName !== "null" ? row.postName : ""; + var proName = row.proName && row.proName !== "null" ? row.proName : ""; + var subName = row.subName && row.subName !== "null" ? row.subName : ""; + var teamName = row.teamName && row.teamName !== "null" ? row.teamName : ""; + var exitVideoPath = row.exitVideoPath && row.exitVideoPath !== "null" ? row.exitVideoPath : ""; + var exitSignPath = row.exitSignPath && row.exitSignPath !== "null" ? row.exitSignPath : ""; + var exitProvePath = row.exitProvePath && row.exitProvePath !== "null" ? row.exitProvePath : ""; + var salaryApplicationPath = row.salaryApplicationPath && row.salaryApplicationPath !== "null" ? row.salaryApplicationPath : ""; + + var subId = row.subId && row.subId !== "null" ? row.subId : ""; + var proId = row.proId && row.proId !== "null" ? row.proId : ""; + var teamId = row.teamId && row.teamId !== "null" ? row.teamId : ""; + + // 拼接 value 字符串 + var valueStr = name + ',' + idNumber + ',' + postName + ',' + proName + ',' + subName + ',' + teamName + ',' + exitVideoPath + ',' + exitSignPath + ',' + exitProvePath + ',' + salaryApplicationPath + ',' + subId + ',' + proId + ',' + teamId; + checkedArr.push(valueStr); + } + let index = layer.confirm("确定清退当前分包商下" + teamNum+"个班组,"+ workerNum+"个在场人员吗?", + { + title: '清退' + }, function () { + layer.close(index); + let width = "80%"; + let height = "80%"; + + var layerIndex = layer.open({ + id: 'layer_in_out_evaluate', + title: ['人员出场', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'], + type: 2, + content: 'ClearOutApplyView.html', + area: [width, height], + maxmin: false, + btn: ['确认', '取消'], + success: function (layero, index) { + let iframeWin = window["layui-layer-iframe" + layerIndex]; + iframeWin.setInOutData(checkedArr); + }, + yes: function (index, layero) { + // 获取弹出层中的form表单元素 + var formSubmit = layer.getChildFrame('form', index); + var submited = formSubmit.find('button')[1]; + // console.log(submited) + // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息 + // batchOutApply(dataArr); + submited.click(); + }, + }); + }); + }else{ + layer.alert(data.msg, {icon: 2}); + } + + } + }) +} + + +function buttonClearOutList(id, permission, pers) { + if (permission != "") { + if ($.inArray(permission, pers) < 0) { + return ""; + } + } + var btn = $(""); + return btn.prop("outerHTML"); +} + +function clearOutRecord(id){ + $.ajax({ + type: 'POST', + contentType: "application/x-www-form-urlencoded", + url: ctxPath + '/subContractor/getClearOutRecord', + data: {"id": id}, + dataType: 'json', + success: function (data) { + let html = ` +
+

合同:${data.contractName || ''}

+

班组:${data.teamName || ''}

+

人员:${data.workerName || ''}

+
+ `; + + layer.open({ + title: '清退记录详情', + type: 1, + area: ['420px', '300px'], + content: html + }); + } + }) +} + // 删除按钮 function buttonDel(id,subContractNum, permission, pers) { if (permission != "") { @@ -247,7 +381,7 @@ function buttonDel(id,subContractNum, permission, pers) { return ""; } } - var btn = $(""); + var btn = $(""); return btn.prop("outerHTML"); } diff --git a/modules/bmw/src/main/resources/static/js/work/SubContractor/SubContract/SubContractList.js b/modules/bmw/src/main/resources/static/js/work/SubContractor/SubContract/SubContractList.js index 5cd80e8..2051a8a 100644 --- a/modules/bmw/src/main/resources/static/js/work/SubContractor/SubContract/SubContractList.js +++ b/modules/bmw/src/main/resources/static/js/work/SubContractor/SubContract/SubContractList.js @@ -114,14 +114,14 @@ function init() { return html; }, "width": "5%" }, - { + /*{ "render": function (data, type, row) { var id = row['id']; var personNumber = row['personNumber']; var html = " " + personNumber + " "; return html; }, "width": "5%" - }, + },*/ { "render": function (data, type, row) { var id = row['id']; @@ -268,7 +268,7 @@ function buttonEditData(id, permission, pers) { return ""; } } - var btn = $(""); + var btn = $(""); return btn.prop("outerHTML"); } @@ -357,7 +357,7 @@ function buttonDelData(id, permission, pers) { return ""; } } - var btn = $(""); + var btn = $(""); return btn.prop("outerHTML"); } diff --git a/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamBasicFrom.js b/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamBasicFrom.js index b513da4..6269ac5 100644 --- a/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamBasicFrom.js +++ b/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamBasicFrom.js @@ -3,7 +3,7 @@ layui.use(['form'], function () { form.render(); form.on('select(subId)', function (data) { - $("#teamName").val(""); + // $("#teamName").val(""); }); // 验证成功后才会执行下面的操作 diff --git a/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamSwitchSubFrom.js b/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamSwitchSubFrom.js index 970a190..331c831 100644 --- a/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamSwitchSubFrom.js +++ b/modules/bmw/src/main/resources/static/js/work/team/BasicMsg/TeamSwitchSubFrom.js @@ -8,11 +8,11 @@ layui.use(['form'], function () { ); form.on('select(subId)', function (data) { - var subId = $('#subId').val(); +/* var subId = $('#subId').val(); var subName = $('option[value= \"' + subId + '\"]').text(); var foremanName = $('#foreman').val(); var teamName = subName + '-' + foremanName + '班组' - $("#teamName").val(teamName); + $("#teamName").val(teamName);*/ }); // 验证成功后才会执行下面的操作 diff --git a/modules/bmw/src/main/resources/static/pages/work/SubContractor/BasicMsg/ClearOutApplyView.html b/modules/bmw/src/main/resources/static/pages/work/SubContractor/BasicMsg/ClearOutApplyView.html new file mode 100644 index 0000000..7d529ee --- /dev/null +++ b/modules/bmw/src/main/resources/static/pages/work/SubContractor/BasicMsg/ClearOutApplyView.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + +
+
+
+ + +
+ +
+
+ + + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/bmw/src/main/resources/static/pages/work/SubContractor/SubContract/SubContractList.html b/modules/bmw/src/main/resources/static/pages/work/SubContractor/SubContract/SubContractList.html index a4633c8..42deb2a 100644 --- a/modules/bmw/src/main/resources/static/pages/work/SubContractor/SubContract/SubContractList.html +++ b/modules/bmw/src/main/resources/static/pages/work/SubContractor/SubContract/SubContractList.html @@ -55,7 +55,7 @@ 合同金额(元) 现场负责人 备案班组 - 备案人员 + 附件 操作 diff --git a/modules/bmw/src/main/resources/static/pages/work/team/BasicMsg/TeamSwitchSubFrom.html b/modules/bmw/src/main/resources/static/pages/work/team/BasicMsg/TeamSwitchSubFrom.html index aea78b6..3cca5fa 100644 --- a/modules/bmw/src/main/resources/static/pages/work/team/BasicMsg/TeamSwitchSubFrom.html +++ b/modules/bmw/src/main/resources/static/pages/work/team/BasicMsg/TeamSwitchSubFrom.html @@ -27,7 +27,7 @@ -
+
@@ -48,12 +48,12 @@
-
+