分包商-清退功能
This commit is contained in:
parent
80a9e2e166
commit
55ed1e2f08
|
|
@ -204,6 +204,7 @@ public class BasePersonBean {
|
||||||
|
|
||||||
private String proName;
|
private String proName;
|
||||||
|
|
||||||
|
private String subId;
|
||||||
private String subName;
|
private String subName;
|
||||||
|
|
||||||
private String einTime;
|
private String einTime;
|
||||||
|
|
@ -243,6 +244,7 @@ public class BasePersonBean {
|
||||||
* 合同id
|
* 合同id
|
||||||
*/
|
*/
|
||||||
private String contractId;
|
private String contractId;
|
||||||
|
private String contractName;
|
||||||
|
|
||||||
private String attendanceMachineId;
|
private String attendanceMachineId;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -179,6 +179,7 @@ public class InOutServiceImpl implements InOutService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public R batchPersonOutPlaceList(BasePersonBean bean) {
|
public R batchPersonOutPlaceList(BasePersonBean bean) {
|
||||||
// 逗号分割的idNumber,exitExamineRemark
|
// 逗号分割的idNumber,exitExamineRemark
|
||||||
List<BasePersonBean> BasePersonBeans = bean.getIdNumberList();
|
List<BasePersonBean> BasePersonBeans = bean.getIdNumberList();
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ package com.bonus.bmw.subContractor.controller;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.bonus.bmw.person.dao.GetChildListDao;
|
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.entity.SubContractorBean;
|
||||||
import com.bonus.bmw.subContractor.service.SubContractorService;
|
import com.bonus.bmw.subContractor.service.SubContractorService;
|
||||||
import com.bonus.common.core.domain.R;
|
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.PageTableRequest;
|
||||||
import com.bonus.common.core.table.PageTableResponse;
|
import com.bonus.common.core.table.PageTableResponse;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
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.annotation.Log;
|
||||||
import com.bonus.common.log.enums.BusinessType;
|
import com.bonus.common.log.enums.BusinessType;
|
||||||
import com.bonus.common.security.annotation.RequiresPermissions;
|
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<SubContractorBean> 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}")
|
@DeleteMapping("/{id}")
|
||||||
@Log(title = "分包商-删除", businessType = BusinessType.DELETE)
|
@Log(title = "分包商-删除", businessType = BusinessType.DELETE)
|
||||||
@RequiresPermissions("sys:subContractor:del")
|
@RequiresPermissions("sys:subContractor:del")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.bonus.bmw.subContractor.dao;
|
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 com.bonus.bmw.subContractor.entity.SubContractorBean;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
@ -43,4 +45,20 @@ public interface SubContractorDao {
|
||||||
|
|
||||||
List<SubContractorBean> getWorker(@Param("params")Map<String, Object> params, @Param("offset")Integer offset,
|
List<SubContractorBean> getWorker(@Param("params")Map<String, Object> params, @Param("offset")Integer offset,
|
||||||
@Param("limit") Integer limit);
|
@Param("limit") Integer limit);
|
||||||
|
|
||||||
|
List<SubContractorBean> 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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.bonus.bmw.subContractor.entity;
|
package com.bonus.bmw.subContractor.entity;
|
||||||
|
|
||||||
|
import com.bonus.bmw.person.entity.BasePersonBean;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SubContractorBean {
|
public class SubContractorBean extends BasePersonBean {
|
||||||
//新
|
//新
|
||||||
private String id;//编号
|
private String id;//编号
|
||||||
private String orgId;
|
private String orgId;
|
||||||
|
|
@ -48,4 +49,9 @@ public class SubContractorBean {
|
||||||
*/
|
*/
|
||||||
private String isDel;
|
private String isDel;
|
||||||
|
|
||||||
|
private String teamNum; // 分包关联的班组数量
|
||||||
|
private String workerNum; // 分包关联的班组数量下的施工人员数量
|
||||||
|
private String idNumber; // 分包关联的班组数量下的施工人员数量
|
||||||
|
private String isClear; // 是否清退
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.bonus.bmw.subContractor.service;
|
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.bmw.subContractor.entity.SubContractorBean;
|
||||||
import com.bonus.common.core.domain.R;
|
import com.bonus.common.core.domain.R;
|
||||||
|
|
||||||
|
|
@ -29,4 +31,10 @@ public interface SubContractorService {
|
||||||
List<SubContractorBean> getSubBearingCapacityList(Map<String, Object> params, Integer offset, Integer limit);
|
List<SubContractorBean> getSubBearingCapacityList(Map<String, Object> params, Integer offset, Integer limit);
|
||||||
|
|
||||||
void exportSubBearingCapacity(SubContractorBean entity, HttpServletResponse response);
|
void exportSubBearingCapacity(SubContractorBean entity, HttpServletResponse response);
|
||||||
|
|
||||||
|
List<SubContractorBean> getClearOutList(String id);
|
||||||
|
|
||||||
|
R clearOutPlaceList(BasePersonBean bean);
|
||||||
|
|
||||||
|
ClearBean getClearOutRecord(String id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,16 @@ package com.bonus.bmw.subContractor.service;
|
||||||
|
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.poi.excel.ExcelWriter;
|
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.dao.SubContractorDao;
|
||||||
import com.bonus.bmw.subContractor.entity.SubContractorBean;
|
import com.bonus.bmw.subContractor.entity.SubContractorBean;
|
||||||
import com.bonus.common.core.constant.Constants;
|
import com.bonus.common.core.constant.Constants;
|
||||||
import com.bonus.common.core.domain.R;
|
import com.bonus.common.core.domain.R;
|
||||||
|
import com.bonus.common.core.utils.uuid.IdUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
|
|
@ -23,6 +28,9 @@ public class SubContractorServiceImp implements SubContractorService {
|
||||||
|
|
||||||
@Resource(name = "SubContractorDao")
|
@Resource(name = "SubContractorDao")
|
||||||
private SubContractorDao dao;
|
private SubContractorDao dao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private InOutService inOutService;
|
||||||
/*
|
/*
|
||||||
* 查询分包商页面
|
* 查询分包商页面
|
||||||
*
|
*
|
||||||
|
|
@ -199,5 +207,49 @@ public class SubContractorServiceImp implements SubContractorService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SubContractorBean> getClearOutList(String id) {
|
||||||
|
return dao.getClearOutList( id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public R clearOutPlaceList(BasePersonBean bean) {
|
||||||
|
List<BasePersonBean> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,16 +18,20 @@
|
||||||
bs.seal_path as sealPath,
|
bs.seal_path as sealPath,
|
||||||
bs.sign_path as signPath,
|
bs.sign_path as signPath,
|
||||||
count(DISTINCT bsc.sub_id) as subContractNum,
|
count(DISTINCT bsc.sub_id) as subContractNum,
|
||||||
|
COUNT(DISTINCT bst.id) AS teamNum,
|
||||||
|
COUNT(DISTINCT btur.id) AS personnelNum,
|
||||||
CASE
|
CASE
|
||||||
WHEN COUNT(bsc.id) > 0 OR COUNT(bst.id) > 0 THEN 1
|
WHEN COUNT(bsc.id) > 0 OR COUNT(bst.id) > 0 THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END AS isDel
|
END AS isDel,
|
||||||
|
bs.is_clear as isClear
|
||||||
from
|
from
|
||||||
bm_subcontractor bs
|
bm_subcontractor bs
|
||||||
LEFT JOIN pm_organization po ON po.id = bs.org_id and po.IS_ACTIVE = '1'
|
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 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 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_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
|
where
|
||||||
bs.IS_ACTIVE = 1
|
bs.IS_ACTIVE = 1
|
||||||
<if test="params != null and params != ''">
|
<if test="params != null and params != ''">
|
||||||
|
|
@ -86,39 +90,36 @@
|
||||||
<insert id="addSub" parameterType="com.bonus.bmw.subContractor.entity.SubContractorBean" useGeneratedKeys="true"
|
<insert id="addSub" parameterType="com.bonus.bmw.subContractor.entity.SubContractorBean" useGeneratedKeys="true"
|
||||||
keyProperty="id">
|
keyProperty="id">
|
||||||
INSERT INTO bm_subcontractor
|
INSERT INTO bm_subcontractor
|
||||||
( SUB_NAME, sub_abbreviation, major_id, org_id, legal_name, legal_phone,office_space,
|
(SUB_NAME, sub_abbreviation, major_id, org_id, legal_name, legal_phone, office_space,
|
||||||
front_idcard_path, back_idcard_path,sub_address,
|
front_idcard_path, back_idcard_path, sub_address,
|
||||||
seal_path, sign_path, IS_ACTIVE )
|
seal_path, sign_path, IS_ACTIVE)
|
||||||
VALUES(#{subName},#{subAbbreviation},#{majorId},#{orgId},#{legalName},
|
VALUES (#{subName}, #{subAbbreviation}, #{majorId}, #{orgId}, #{legalName},
|
||||||
#{legalPhone}, #{officeSpace}, #{frontIdcardPath},#{backIdcardPath},#{subAddress},
|
#{legalPhone}, #{officeSpace}, #{frontIdcardPath}, #{backIdcardPath}, #{subAddress},
|
||||||
#{sealPath},#{signPath},'1')
|
#{sealPath}, #{signPath}, '1')
|
||||||
</insert>
|
</insert>
|
||||||
<!--根据id查找-->
|
<!--根据id查找-->
|
||||||
<select id="getSubContractorById" resultType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
<select id="getSubContractorById" resultType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
||||||
select
|
select IFNULL(pc.`NAME`, pd.`name`) as companyName,
|
||||||
IFNULL(pc.`NAME`,pd.`name`) as companyName,
|
bs.ID as id,
|
||||||
bs.ID as id,
|
bs.org_id as orgId,
|
||||||
bs.org_id as orgId,
|
major_id as majorId,
|
||||||
major_id as majorId,
|
bs.SUB_NAME as subName,
|
||||||
bs.SUB_NAME as subName,
|
bs.sub_address as subAddress,
|
||||||
bs.sub_address as subAddress,
|
bs.sub_abbreviation as subAbbreviation,
|
||||||
bs.sub_abbreviation as subAbbreviation,
|
bs.legal_name as legalName,
|
||||||
bs.legal_name as legalName,
|
bs.legal_phone as legalPhone,
|
||||||
bs.legal_phone as legalPhone,
|
bs.office_space as officeSpace,
|
||||||
bs.office_space as officeSpace,
|
bs.front_idcard_path as frontIdcardPath,
|
||||||
bs.front_idcard_path as frontIdcardPath,
|
bs.back_idcard_path as backIdcardPath,
|
||||||
bs.back_idcard_path as backIdcardPath,
|
bs.seal_path as sealPath,
|
||||||
bs.seal_path as sealPath,
|
bs.sign_path as signPath
|
||||||
bs.sign_path as signPath
|
from bm_subcontractor bs
|
||||||
from
|
LEFT JOIN pm_organization po1 ON po1.id = bs.org_id and po1.PARENT_ID = '0' and po1.IS_ACTIVE = '1'
|
||||||
bm_subcontractor bs
|
LEFT JOIN pm_organization po2 ON po2.id = bs.org_id and po2.PARENT_ID = '1' and po2.IS_ACTIVE = '1'
|
||||||
LEFT JOIN pm_organization po1 ON po1.id = bs.org_id and po1.PARENT_ID = '0' and po1.IS_ACTIVE = '1'
|
LEFT JOIN pm_company pc ON pc.ID = po1.foreign_id and pc.IS_ACTIVE = '1'
|
||||||
LEFT JOIN pm_organization po2 ON po2.id = bs.org_id and po2.PARENT_ID = '1' and po2.IS_ACTIVE = '1'
|
LEFT JOIN pm_dept pd ON pd.ID = po2.foreign_id and pd.IS_ACTIVE = '1'
|
||||||
LEFT JOIN pm_company pc ON pc.ID = po1.foreign_id and pc.IS_ACTIVE = '1'
|
where bs.IS_ACTIVE = '1'
|
||||||
LEFT JOIN pm_dept pd ON pd.ID = po2.foreign_id and pd.IS_ACTIVE = '1'
|
and bs.id = #{id}
|
||||||
where
|
|
||||||
bs.IS_ACTIVE = '1'
|
|
||||||
and bs.id = #{id}
|
|
||||||
</select>
|
</select>
|
||||||
<!--修改-->
|
<!--修改-->
|
||||||
<update id="updateSub" parameterType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
<update id="updateSub" parameterType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
||||||
|
|
@ -170,9 +171,10 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getSubByName" resultType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
<select id="getSubByName" resultType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
||||||
SELECT bs.ID as id,bs.SUB_NAME AS subName
|
SELECT bs.ID as id, bs.SUB_NAME AS subName
|
||||||
FROM bm_subcontractor bs
|
FROM bm_subcontractor bs
|
||||||
WHERE bs.SUB_NAME= #{subName} and bs.IS_ACTIVE = 1
|
WHERE bs.SUB_NAME = #{subName}
|
||||||
|
and bs.IS_ACTIVE = 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getContractCount" resultType="java.lang.Integer">
|
<select id="getContractCount" resultType="java.lang.Integer">
|
||||||
|
|
@ -330,5 +332,118 @@
|
||||||
limit #{offset}, #{limit}
|
limit #{offset}, #{limit}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getClearOutList" resultType="com.bonus.bmw.subContractor.entity.SubContractorBean">
|
||||||
|
SELECT
|
||||||
|
t.*,
|
||||||
|
stats.teamNum AS teamNum,
|
||||||
|
stats.workerNum AS workerNum
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT
|
||||||
|
bweh.id_number AS idNumber,
|
||||||
|
bweh.exit_video_path AS exitVideoPath,
|
||||||
|
bweh.exit_sign_path AS exitSignPath,
|
||||||
|
bweh.exit_prove_path AS exitProvePath,
|
||||||
|
bweh.salary_application_Path AS salaryApplicationPath,
|
||||||
|
bw.name,
|
||||||
|
td.value AS postName,
|
||||||
|
bst.id AS teamId,
|
||||||
|
bst.team_name AS teamName,
|
||||||
|
po.name AS companyName,
|
||||||
|
bp.name AS proName,
|
||||||
|
bs.sub_name AS subName,
|
||||||
|
bweh.ein_time AS einTime,
|
||||||
|
bweh.exit_time AS exitTime,
|
||||||
|
bweh.exit_status AS exitStatus,
|
||||||
|
bweh.is_force AS isForce,
|
||||||
|
bweh.is_furlough_person,
|
||||||
|
bweh.project_id as proId,
|
||||||
|
bweh.sub_id as subId
|
||||||
|
FROM bm_worker_ein_history bweh
|
||||||
|
LEFT JOIN bm_worker bw
|
||||||
|
ON bweh.id_number = bw.id_number AND bw.IS_ACTIVE = '1'
|
||||||
|
LEFT JOIN t_dict td
|
||||||
|
ON bweh.post_id = td.id AND td.type = 'postType' AND td.is_active = '1'
|
||||||
|
LEFT JOIN bm_project bp
|
||||||
|
ON bweh.project_id = bp.id AND bp.is_active = '1'
|
||||||
|
LEFT JOIN pm_organization po
|
||||||
|
ON po.id = bp.two_com_id AND po.is_active = '1'
|
||||||
|
LEFT JOIN bm_subcontractor bs
|
||||||
|
ON bweh.sub_id = bs.id AND bs.is_active = '1'
|
||||||
|
LEFT JOIN bm_sub_team bst
|
||||||
|
ON bst.id = bweh.team_id AND bst.is_active = '1'
|
||||||
|
WHERE bs.id = #{id}
|
||||||
|
AND bweh.exit_status = '-1'
|
||||||
|
AND bweh.is_active = '1'
|
||||||
|
) t
|
||||||
|
CROSS JOIN (
|
||||||
|
SELECT
|
||||||
|
COUNT(DISTINCT bweh.team_id) AS teamNum,
|
||||||
|
COUNT(DISTINCT bweh.id_number) AS workerNum
|
||||||
|
FROM bm_worker_ein_history bweh
|
||||||
|
WHERE bweh.sub_id = #{id}
|
||||||
|
AND bweh.exit_status = '-1'
|
||||||
|
AND bweh.is_active = '1'
|
||||||
|
) stats
|
||||||
|
ORDER BY t.einTime DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="updateContract">
|
||||||
|
update bm_sub_contract set is_active = '0' where sub_id = #{subId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updateTeam">
|
||||||
|
update bm_sub_team set sub_id = null where sub_id = #{subId} and is_active = '1'
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<insert id="addClearOut">
|
||||||
|
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})
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<select id="getSubById" resultType="com.bonus.bmw.person.entity.BasePersonBean">
|
||||||
|
SELECT
|
||||||
|
GROUP_CONCAT(id ORDER by id SEPARATOR ',') AS contractId,
|
||||||
|
GROUP_CONCAT(contract_name ORDER by id SEPARATOR ',') AS contractName
|
||||||
|
FROM `bm_sub_contract`
|
||||||
|
WHERE is_active ='1' and sub_id = #{subId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getTeamById" resultType="com.bonus.bmw.person.entity.BasePersonBean">
|
||||||
|
SELECT
|
||||||
|
GROUP_CONCAT(id ORDER by id SEPARATOR ',') AS teamId,
|
||||||
|
GROUP_CONCAT(team_name ORDER by id SEPARATOR ',') AS teamName
|
||||||
|
FROM `bm_sub_team`
|
||||||
|
WHERE is_active ='1' and sub_id = #{subId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getWorkerById" resultType="com.bonus.bmw.person.entity.BasePersonBean">
|
||||||
|
SELECT
|
||||||
|
GROUP_CONCAT( bw.id_number ORDER BY bw.id_number SEPARATOR ',' ) AS idNumber,
|
||||||
|
GROUP_CONCAT( bw.NAME ORDER BY bw.NAME SEPARATOR ',' ) AS name
|
||||||
|
FROM
|
||||||
|
bm_worker_ein_history bweh
|
||||||
|
LEFT JOIN bm_worker bw ON bweh.id_number = bw.id_number
|
||||||
|
AND bw.IS_ACTIVE = '1'
|
||||||
|
WHERE
|
||||||
|
bweh.sub_id = #{subId}
|
||||||
|
AND bweh.exit_status = '-1'
|
||||||
|
AND bweh.is_active = '1'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getClearOutRecord" resultType="com.bonus.bmw.person.entity.ClearBean">
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
clear_id AS clearId,
|
||||||
|
sub_id AS subId,
|
||||||
|
sub_name AS subName,
|
||||||
|
contract_id AS contractId,
|
||||||
|
contract_name AS contractName,
|
||||||
|
team_id AS teamId,
|
||||||
|
team_name AS teamName,
|
||||||
|
worker_id AS workerId,
|
||||||
|
worker_name AS workerName
|
||||||
|
FROM
|
||||||
|
bm_sub_clear
|
||||||
|
WHERE sub_id = #{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -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 `<a href="${fileUrl + '/' + a}" target="_blank" style="color:#1E9FFF;">已上传</a>`;
|
||||||
|
}
|
||||||
|
return `<div id="exitSignPaths${idx}"></div>
|
||||||
|
<a class="layui-btn layui-btn-xs" id="exitSignPath${idx}" style="margin-left:20px">上传</a>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'exitProvePath', title: '出场证明', align: 'center', width: '10%',
|
||||||
|
templet: d => {
|
||||||
|
let a = d.exitProvePath;
|
||||||
|
let idx = d.LAY_TABLE_INDEX;
|
||||||
|
if (a) {
|
||||||
|
return `<a href="${fileUrl + '/' + a}" target="_blank" style="color:#1E9FFF;">已上传</a>`;
|
||||||
|
}
|
||||||
|
return `<div id="exitProvePaths${idx}"></div>
|
||||||
|
<a class="layui-btn layui-btn-xs" id="exitProvePath${idx}" style="margin-left:20px">上传</a>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'salaryApplicationPath', title: '工资结算申请书', align: 'center', width: '10%',
|
||||||
|
templet: d => {
|
||||||
|
let a = d.salaryApplicationPath;
|
||||||
|
let idx = d.LAY_TABLE_INDEX;
|
||||||
|
if (a) {
|
||||||
|
return `<a href="${fileUrl + '/' + a}" target="_blank" style="color:#1E9FFF;">已上传</a>`;
|
||||||
|
}
|
||||||
|
return `<div id="salaryApplicationPaths${idx}"></div>
|
||||||
|
<a class="layui-btn layui-btn-xs" id="salaryApplicationPath${idx}" style="margin-left:20px">上传</a>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]],
|
||||||
|
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(
|
||||||
|
`<a href="${fileUrl + '/' + res.data.url}" target="_blank" style="color:#1E9FFF;">已上传</a>`
|
||||||
|
);
|
||||||
|
$("#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(
|
||||||
|
`<a href="${fileUrl + '/' + res.data.url}" target="_blank" style="color:#1E9FFF;">已上传</a>`
|
||||||
|
);
|
||||||
|
$("#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(
|
||||||
|
`<a href="${fileUrl + '/' + res.data.url}" target="_blank" style="color:#1E9FFF;">已上传</a>`
|
||||||
|
);
|
||||||
|
$("#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();
|
||||||
|
}
|
||||||
|
|
@ -151,12 +151,21 @@ function init() {
|
||||||
"render": function (data, type, row) {
|
"render": function (data, type, row) {
|
||||||
var id = row['id'];
|
var id = row['id'];
|
||||||
var subContractNum = row['subContractNum'];
|
var subContractNum = row['subContractNum'];
|
||||||
|
var teamNum = row['teamNum'];
|
||||||
var isDel = row['isDel'];
|
var isDel = row['isDel'];
|
||||||
|
var isClear = row['isClear'];
|
||||||
var html = '';
|
var html = '';
|
||||||
html += buttonEdits(id, "sys:subContractor:update", pers);
|
html += buttonEdits(id, "sys:subContractor:update", pers);
|
||||||
|
if(teamNum>0 && subContractNum>0){
|
||||||
|
html += buttonClearOut(id, "", pers);
|
||||||
|
}
|
||||||
if(isDel == 0 || isDel == '0'){
|
if(isDel == 0 || isDel == '0'){
|
||||||
html += buttonDel(id,subContractNum, "sys:subContractor:del", pers);
|
html += buttonDel(id,subContractNum, "sys:subContractor:del", pers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isClear == 1 || isClear == '1'){
|
||||||
|
html += buttonClearOutList(id, "", pers);
|
||||||
|
}
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -191,19 +200,19 @@ function insertSubcontractor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 编辑按钮
|
// 修改按钮
|
||||||
function buttonEdits(id, permission, pers) {
|
function buttonEdits(id, permission, pers) {
|
||||||
if (permission != "") {
|
if (permission != "") {
|
||||||
if ($.inArray(permission, pers) < 0) {
|
if ($.inArray(permission, pers) < 0) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var btn = $("<button class='layui-btn layui-btn-xs' title='编辑' onclick='edit(\"" + id + "\")'><i class='layui-icon'></i></button>");
|
var btn = $("<button class='layui-btn layui-btn-xs' title='修改' onclick='edit(\"" + id + "\")'>修改</button>");
|
||||||
return btn.prop("outerHTML");
|
return btn.prop("outerHTML");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑页面
|
* 修改页面
|
||||||
*/
|
*/
|
||||||
function edit(id) {
|
function edit(id) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|
@ -240,6 +249,131 @@ function edit(id) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buttonClearOut(id, permission, pers) {
|
||||||
|
if (permission != "") {
|
||||||
|
if ($.inArray(permission, pers) < 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var btn = $("<button class='layui-btn layui-btn-xs' title='清退' onclick='clearOut(\"" + id + "\")'>清退</button>");
|
||||||
|
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 = $("<button class='layui-btn layui-btn-xs' title='清退记录' onclick='clearOutRecord(\"" + id + "\")'>清退记录</button>");
|
||||||
|
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 = `
|
||||||
|
<div style="padding: 15px; line-height: 26px;">
|
||||||
|
<p><b>合同:</b>${data.contractName || ''}</p>
|
||||||
|
<p><b>班组:</b>${data.teamName || ''}</p>
|
||||||
|
<p><b>人员:</b>${data.workerName || ''}</p>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
layer.open({
|
||||||
|
title: '清退记录详情',
|
||||||
|
type: 1,
|
||||||
|
area: ['420px', '300px'],
|
||||||
|
content: html
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 删除按钮
|
// 删除按钮
|
||||||
function buttonDel(id,subContractNum, permission, pers) {
|
function buttonDel(id,subContractNum, permission, pers) {
|
||||||
if (permission != "") {
|
if (permission != "") {
|
||||||
|
|
@ -247,7 +381,7 @@ function buttonDel(id,subContractNum, permission, pers) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var btn = $("<button class='layui-btn layui-btn-xs' title='删除' onclick='del(\"" + id + "\",\"" + subContractNum + "\")'><i class='layui-icon'></i></button>");
|
var btn = $("<button class='layui-btn layui-btn-xs' title='删除' onclick='del(\"" + id + "\",\"" + subContractNum + "\")'>删除</button>");
|
||||||
return btn.prop("outerHTML");
|
return btn.prop("outerHTML");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -114,14 +114,14 @@ function init() {
|
||||||
return html;
|
return html;
|
||||||
}, "width": "5%"
|
}, "width": "5%"
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
"render": function (data, type, row) {
|
"render": function (data, type, row) {
|
||||||
var id = row['id'];
|
var id = row['id'];
|
||||||
var personNumber = row['personNumber'];
|
var personNumber = row['personNumber'];
|
||||||
var html = "<span style='color: green;cursor: pointer;' title='' onclick='personView(\"" + id + "\")'> " + personNumber + " </span>";
|
var html = "<span style='color: green;cursor: pointer;' title='' onclick='personView(\"" + id + "\")'> " + personNumber + " </span>";
|
||||||
return html;
|
return html;
|
||||||
}, "width": "5%"
|
}, "width": "5%"
|
||||||
},
|
},*/
|
||||||
{
|
{
|
||||||
"render": function (data, type, row) {
|
"render": function (data, type, row) {
|
||||||
var id = row['id'];
|
var id = row['id'];
|
||||||
|
|
@ -268,7 +268,7 @@ function buttonEditData(id, permission, pers) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var btn = $("<button class='layui-btn layui-btn-xs' title='修改' onclick='editView(\"" + id + "\")'><i class='layui-icon'></i></button>");
|
var btn = $("<button class='layui-btn layui-btn-xs' title='修改' onclick='editView(\"" + id + "\")'>修改</button>");
|
||||||
return btn.prop("outerHTML");
|
return btn.prop("outerHTML");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -357,7 +357,7 @@ function buttonDelData(id, permission, pers) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var btn = $("<button class='layui-btn layui-btn-xs' title='删除' onclick='delView(\"" + id + "\")'><i class='layui-icon'></i></button>");
|
var btn = $("<button class='layui-btn layui-btn-xs' title='删除' onclick='delView(\"" + id + "\")'>删除</button>");
|
||||||
return btn.prop("outerHTML");
|
return btn.prop("outerHTML");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ layui.use(['form'], function () {
|
||||||
form.render();
|
form.render();
|
||||||
|
|
||||||
form.on('select(subId)', function (data) {
|
form.on('select(subId)', function (data) {
|
||||||
$("#teamName").val("");
|
// $("#teamName").val("");
|
||||||
});
|
});
|
||||||
|
|
||||||
// 验证成功后才会执行下面的操作
|
// 验证成功后才会执行下面的操作
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ layui.use(['form'], function () {
|
||||||
);
|
);
|
||||||
|
|
||||||
form.on('select(subId)', function (data) {
|
form.on('select(subId)', function (data) {
|
||||||
var subId = $('#subId').val();
|
/* var subId = $('#subId').val();
|
||||||
var subName = $('option[value= \"' + subId + '\"]').text();
|
var subName = $('option[value= \"' + subId + '\"]').text();
|
||||||
var foremanName = $('#foreman').val();
|
var foremanName = $('#foreman').val();
|
||||||
var teamName = subName + '-' + foremanName + '班组'
|
var teamName = subName + '-' + foremanName + '班组'
|
||||||
$("#teamName").val(teamName);
|
$("#teamName").val(teamName);*/
|
||||||
});
|
});
|
||||||
|
|
||||||
// 验证成功后才会执行下面的操作
|
// 验证成功后才会执行下面的操作
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" style="width: 100%;height: 100%">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/dataTables.bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="../../../../layui/css/layui.css">
|
||||||
|
<link rel="stylesheet" href="../../../../css/ztree/3.5/zTreeStyle.css" type="text/css">
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/work/data_table_setting.css">
|
||||||
|
<style type="text/css">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body style="width: 100%;height: 100%">
|
||||||
|
<form class="layui-form" id="projectForm" action="" method="post" onsubmit=" return false">
|
||||||
|
<div style="width: 100%;height: 100%">
|
||||||
|
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="width: 100%;height: 100%">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="widget-body">
|
||||||
|
<table id="lay-table" lay-filter="table-temp" class="layui-table" lay-size="lg">
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item" style="display: none">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button type="button" class="layui-btn" id="commit" lay-submit lay-filter="formDemo">提交</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<script type="text/javascript" src="../../../../js/libs/jquery-3.6.0.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/jq.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/plugin/datatables/jquery.dataTables.min.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/plugin/datatables/dataTables.bootstrap.min.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/my/permission.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../layui2.7.6/layui.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/publicJs.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/dict.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/select.js"></script>
|
||||||
|
<script type="text/javascript" src="../../../../js/work/SubContractor/BasicMsg/ClearOutApplyView.js"></script>
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
<th>合同金额(元)</th>
|
<th>合同金额(元)</th>
|
||||||
<th>现场负责人</th>
|
<th>现场负责人</th>
|
||||||
<th>备案班组</th>
|
<th>备案班组</th>
|
||||||
<th>备案人员</th>
|
<!-- <th>备案人员</th>-->
|
||||||
<th>附件</th>
|
<th>附件</th>
|
||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
<!-- <div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
||||||
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>班组长</label>
|
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>班组长</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="foreman" id="foreman" readonly placeholder="点击选择班组长" lay-verify="required" class="layui-input">
|
<input type="text" name="foreman" id="foreman" readonly placeholder="点击选择班组长" lay-verify="required" class="layui-input">
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="foremanIdNumber" id="foremanIdNumber" readonly class="layui-input">
|
<input type="text" name="foremanIdNumber" id="foremanIdNumber" readonly class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
|
|
||||||
<div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
<div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
||||||
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>班组名称</label>
|
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>班组名称</label>
|
||||||
|
|
@ -48,12 +48,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
<!-- <div class="layui-input-inline" style="float: left;width: 50%;margin-top: 2%;margin-left: 20%">
|
||||||
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>手机号</label>
|
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>手机号</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="foremanPhone" id="foremanPhone" readonly lay-verify="" class="layui-input">
|
<input type="text" name="foremanPhone" id="foremanPhone" readonly lay-verify="" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
|
|
||||||
<div class="layui-form-item" style="display: none">
|
<div class="layui-form-item" style="display: none">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue