2025-11-27 16:55:35 +08:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
<html lang="en" xmlns="http://www.w3.org/1999/html">
|
|
|
|
|
|
<head>
|
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
|
<title>分包商班组表单</title>
|
|
|
|
|
|
<link rel="stylesheet" href="../../layui-v2.8.18/layui/css/layui.css" media="all"/>
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<style>
|
|
|
|
|
|
.layui-form-label {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
padding: 9px 15px;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
line-height: 20px;
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.layui-table-cell .layui-btn {
|
|
|
|
|
|
vertical-align: inherit;
|
|
|
|
|
|
margin-top: -8px;
|
|
|
|
|
|
width: 80px;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|
|
|
|
|
|
<body>
|
|
|
|
|
|
<form class="layui-form" action="" onsubmit="return false">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<div class="layui-form-item" style="margin-top: 1%;">
|
|
|
|
|
|
<div class="layui-input-inline">
|
|
|
|
|
|
<label class="layui-form-label"><i class="tip-required"
|
|
|
|
|
|
style="color: red;font-size: 20px">*</i>班组名称:</label>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline" style="border: 0px dashed dimgrey;width: 30%;">
|
|
|
|
|
|
<input class="teamName layui-input" id="teamName" name="teamName"
|
|
|
|
|
|
lay-verify="required">
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline">
|
|
|
|
|
|
<label class="layui-form-label"><i class="tip-required"
|
|
|
|
|
|
style="color: red;font-size: 20px">*</i>所属分包商:</label>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline" style="border: 0px dashed dimgrey;width: 30%;">
|
|
|
|
|
|
<select id="subId" name="subId" class="layui-select" lay-search="" lay-verify="required"
|
|
|
|
|
|
lay-filter="subId"></select>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-form-item" style="margin-top: 1%;">
|
|
|
|
|
|
<div class="layui-input-inline">
|
|
|
|
|
|
<label class="layui-form-label"><i class="tip-required"
|
|
|
|
|
|
style="color: red;font-size: 20px">*</i>班组类型:</label>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline" style="border: 0px dashed dimgrey;width:30%;">
|
|
|
|
|
|
<select id="subTeamTypeId" name="subTeamTypeId" class="form-control input-sm" lay-verify="required"
|
|
|
|
|
|
lay-filter="subTeamTypeId">
|
|
|
|
|
|
<option value="">请选择班组类型</option>
|
|
|
|
|
|
<option value="1">基础</option>
|
|
|
|
|
|
<option value="2">杆塔</option>
|
|
|
|
|
|
<option value="3">架线</option>
|
|
|
|
|
|
</select>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline">
|
|
|
|
|
|
<label class="layui-form-label"><i class="tip-required"
|
|
|
|
|
|
style="color: red;font-size: 20px">*</i>标准班组类型:</label>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-input-inline" style="border: 0px dashed dimgrey;width: 30%;">
|
|
|
|
|
|
<select id="teamTypeId" name="teamTypeId" class="layui-select" lay-search="" lay-verify="required"
|
|
|
|
|
|
lay-filter="teamTypeId"></select>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-form-item">
|
|
|
|
|
|
<br class="layui-inline">
|
|
|
|
|
|
<p>
|
|
|
|
|
|
<i class="tip-required" style="color: red;font-size: 20px">*</i> 班组成员:
|
|
|
|
|
|
<span style="color: red;">注:1. 团队组建最低标准:</span>
|
|
|
|
|
|
<span id="span1"></span>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
|
|
|
|
|
|
|
|
|
<span style="color: red;"> 2. 单项成员若多于标准团队数量,请点击 “新增” 添加多人</span>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
|
|
|
|
|
|
|
|
|
<span style="color: red;"> 3. 如已选择相关人员,请勿重新选择分包商,否则已选人员会刷新!!!</span>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="layui-form-item" style="display: none">
|
|
|
|
|
|
<div class="layui-input-block">
|
|
|
|
|
|
<button type="submit" class="layui-btn subBtn" id="commit" lay-submit lay-filter="formDemo">提交</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<table id="demo" lay-filter="test" style="padding: 10px"></table>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
|
</html>
|
|
|
|
|
|
<script type="text/html" id="isSocialSecurityToos">
|
|
|
|
|
|
<button class="layui-btn layui-btn-primary dropdpwn-isSocialSecurityToos">
|
|
|
|
|
|
<span>{{= d.isSocialSecurity || '是' }}</span>
|
|
|
|
|
|
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script type="text/html" id="isEmploymentAgreementToos">
|
|
|
|
|
|
<button class="layui-btn layui-btn-primary dropdpwn-isEmploymentAgreementToos">
|
|
|
|
|
|
<span>{{= d.isEmploymentAgreement || '是' }}</span>
|
|
|
|
|
|
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script type="text/html" id="isSalaryPaymentCertificateToos">
|
|
|
|
|
|
<button class="layui-btn layui-btn-primary dropdpwn-isSalaryPaymentCertificateToos">
|
|
|
|
|
|
<span>{{= d.isSalaryPaymentCertificate || '是' }}</span>
|
|
|
|
|
|
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<!-- {{# if(d.type == 2){ }}-->
|
|
|
|
|
|
<!-- {{# } }}-->
|
|
|
|
|
|
<script type="text/html" id="barDemo">
|
|
|
|
|
|
<!-- <a lay-event="add" style="color: #009688;cursor: pointer;font-size: 15px">新增</a>-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- {{# if(d.type != 3){ }}-->
|
|
|
|
|
|
<!-- <span style="font-size: 15px;"> | </span>-->
|
|
|
|
|
|
<!-- <a lay-event="del" style="color: #009688;cursor: pointer;font-size: 15px">删除</a>-->
|
|
|
|
|
|
<!-- {{# } }}-->
|
|
|
|
|
|
<a lay-event="add" style="color: #009688;cursor: pointer;font-size: 15px">新增</a>
|
|
|
|
|
|
{{# if(d.isData == 1 || d.isData == '1'){ }}
|
|
|
|
|
|
<span style="font-size: 15px;"> | </span>
|
|
|
|
|
|
<a lay-event="reElection" style="color: #009688;cursor: pointer;font-size: 15px">重选</a>
|
|
|
|
|
|
{{# } }}
|
|
|
|
|
|
{{# if(d.isData == 0 || d.isData == '0'){ }}
|
|
|
|
|
|
<span style="font-size: 15px;"> | </span>
|
|
|
|
|
|
<a lay-event="choosePerson" style="color: #009688;cursor: pointer;font-size: 15px">选人</a>
|
|
|
|
|
|
{{# } }}
|
|
|
|
|
|
{{# if(d.type != 3){ }}
|
|
|
|
|
|
<span style="font-size: 15px;"> | </span>
|
|
|
|
|
|
<a lay-event="del" style="color: #009688;cursor: pointer;font-size: 15px">删除</a>
|
|
|
|
|
|
{{# } }}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script src="../../js/jquery/jquery-3.6.0.js"></script>
|
|
|
|
|
|
<script src="../../layui-v2.8.18/layui/layui.js"></script>
|
|
|
|
|
|
<script type="text/javascript" src="../../js/jq.js"></script>
|
|
|
|
|
|
<script src="../../js/common_methon.js"></script>
|
2025-12-09 18:44:29 +08:00
|
|
|
|
<script type="text/javascript" src="../../../public/public.js"></script>
|
2025-11-27 16:55:35 +08:00
|
|
|
|
<script type="text/javascript" src="../../js/publicJs.js"></script>
|
|
|
|
|
|
<script type="text/javascript" src="../../js/select.js"></script>
|
|
|
|
|
|
<script type="text/javascript" src="../../js/my/permission.js"></script>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
|
|
layui.config({
|
|
|
|
|
|
base: '../../js/layuiModules/', // 第三方模块所在目录
|
|
|
|
|
|
version: 'v1.6.4' // 插件版本号
|
|
|
|
|
|
}).extend({
|
|
|
|
|
|
soulTable: 'notice,layNotify', // 模块
|
|
|
|
|
|
});
|
|
|
|
|
|
var form;
|
|
|
|
|
|
var table;
|
|
|
|
|
|
var newData;
|
|
|
|
|
|
var notice;
|
|
|
|
|
|
var dropdown;
|
|
|
|
|
|
var layNotify;
|
|
|
|
|
|
var id = localStorage.getItem("id");
|
|
|
|
|
|
var subId = localStorage.getItem("subId");
|
|
|
|
|
|
var subTeamTypeId = localStorage.getItem("subTeamTypeId");
|
|
|
|
|
|
var teamTypeId = localStorage.getItem("teamTypeId");
|
|
|
|
|
|
var teamName = localStorage.getItem("teamName");
|
|
|
|
|
|
var finalData;
|
|
|
|
|
|
var type = "1";
|
|
|
|
|
|
var selectSubId;
|
|
|
|
|
|
var titleMap = new Map();
|
|
|
|
|
|
var delTitleMap = new Map();
|
|
|
|
|
|
|
|
|
|
|
|
layui.use(['table', 'form', 'notice', 'layNotify', 'dropdown'], function () {
|
|
|
|
|
|
table = layui.table;
|
|
|
|
|
|
form = layui.form;
|
|
|
|
|
|
notice = layui.notice;
|
|
|
|
|
|
dropdown = layui.dropdown;
|
|
|
|
|
|
layNotify = layui.layNotify;
|
|
|
|
|
|
if (isEmpty(id)) {
|
|
|
|
|
|
//新增
|
|
|
|
|
|
getSub(form, "");
|
|
|
|
|
|
form.on('select(subId)', function (data) {
|
|
|
|
|
|
if (!isEmpty(selectSubId)){
|
|
|
|
|
|
showTable();
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
form.on('select(subTeamTypeId)', function (data) {
|
|
|
|
|
|
getStandardTeamTypeForSubTeamId(form, data.value);
|
|
|
|
|
|
});
|
|
|
|
|
|
form.on('select(teamTypeId)', function (data) {
|
|
|
|
|
|
showTitle();
|
|
|
|
|
|
showTable();
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
type = "2";
|
|
|
|
|
|
//修改
|
|
|
|
|
|
getSub(form, subId);
|
|
|
|
|
|
$("#subTeamTypeId").find("option[value=" + subTeamTypeId + "]").prop("selected", true);
|
|
|
|
|
|
getStandardTeamType(form, teamTypeId);
|
|
|
|
|
|
$("#teamName").val(teamName);
|
|
|
|
|
|
|
|
|
|
|
|
document.getElementById('subTeamTypeId').disabled = true;
|
|
|
|
|
|
document.getElementById('teamTypeId').disabled = true;
|
|
|
|
|
|
document.getElementById('subId').disabled = true;
|
|
|
|
|
|
form.render();
|
|
|
|
|
|
showTitle();
|
|
|
|
|
|
showTable();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//监听工具条
|
|
|
|
|
|
table.on('tool(test)', function (obj) {
|
|
|
|
|
|
var id = obj.config.id;
|
|
|
|
|
|
var data = obj.data; //当前行数据
|
|
|
|
|
|
var rowIndex = obj.index;
|
|
|
|
|
|
var layEvent = obj.event; //当前点击的事件名
|
|
|
|
|
|
if (layEvent == 'choosePerson') {
|
|
|
|
|
|
var newData = table.cache.demo; //获取当前表格的数据
|
|
|
|
|
|
var index = obj.tr.index(); //获取当前行的索引
|
|
|
|
|
|
|
|
|
|
|
|
//打开人员页面,勾选人员,并返回相关值
|
|
|
|
|
|
choosePersonHtml(newData, index);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (layEvent == 'reElection') {
|
|
|
|
|
|
var newData = table.cache.demo; //获取当前表格的数据
|
|
|
|
|
|
var index = obj.tr.index(); //获取当前行的索引
|
|
|
|
|
|
choosePersonHtml(newData, index);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (layEvent === 'add') {
|
|
|
|
|
|
var newRow = {
|
|
|
|
|
|
postName: data.postName,
|
|
|
|
|
|
type: 2,
|
|
|
|
|
|
postNum: data.postNum,
|
|
|
|
|
|
manageId: data.manageId,
|
|
|
|
|
|
id: data.tmPersonId,
|
|
|
|
|
|
isData: 0,
|
|
|
|
|
|
isRequired: data.isRequired
|
|
|
|
|
|
}; //新增行的数据
|
|
|
|
|
|
var newData = table.cache.demo; //获取当前表格的数据
|
|
|
|
|
|
var index = obj.tr.index(); //获取当前行的索引
|
|
|
|
|
|
|
|
|
|
|
|
newData.splice(index + 1, 0, newRow); // 假设 tableData 是表格的数据源
|
|
|
|
|
|
|
|
|
|
|
|
// 重新渲染表格
|
|
|
|
|
|
table.reload('demo', {
|
|
|
|
|
|
data: newData, // 重新加载时传入新的数据源
|
|
|
|
|
|
});
|
|
|
|
|
|
delTitleMap.set(data.postName, parseInt(delTitleMap.get(data.postName)) + 1)
|
|
|
|
|
|
reloadTip("新增团队人员", '新增成功', 'success');
|
|
|
|
|
|
}
|
|
|
|
|
|
if (layEvent === 'del') {
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
|
|
|
|
|
|
|
}, 500)
|
|
|
|
|
|
var initialNumber = titleMap.get(data.postName);
|
|
|
|
|
|
var numberAfterDeletion = delTitleMap.get(data.postName);
|
|
|
|
|
|
if (parseInt(numberAfterDeletion) > parseInt(initialNumber)) {
|
|
|
|
|
|
if (data.type == '2') {
|
|
|
|
|
|
layer.confirm('确认删除该行数据?', function (index) {
|
|
|
|
|
|
newData = table.cache.demo; //获取当前表格的数据
|
|
|
|
|
|
newData.splice(rowIndex, 1); //从数组中删除指定索引的元素
|
|
|
|
|
|
table.reload('demo', {
|
|
|
|
|
|
data: newData //重新加载表格数据
|
|
|
|
|
|
});
|
|
|
|
|
|
layer.close(index);
|
|
|
|
|
|
reloadTip("删除", '删除成功', 'success');
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
if (data.type == '1') {
|
|
|
|
|
|
var delIndex = layer.confirm('确认删除该行数据?', function (index) {
|
|
|
|
|
|
newData = table.cache.demo; //获取当前表格的数据
|
|
|
|
|
|
newData.splice(rowIndex, 1); //从数组中删除指定索引的元素
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
type: 'POST',
|
|
|
|
|
|
async: false, // 默认异步true,false表示同步
|
2025-12-09 18:44:29 +08:00
|
|
|
|
url: czl_ht_url + "/subTeam/delSubTeamPersonById",// 请求地址
|
2025-11-27 16:55:35 +08:00
|
|
|
|
contentType: "application/x-www-form-urlencoded",
|
|
|
|
|
|
dataType: 'json', // 服务器返回数据类型
|
|
|
|
|
|
data: {
|
|
|
|
|
|
id: data.tmPersonId
|
|
|
|
|
|
}, //获取提交的表单字段
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
var resMsg = data.resMsg;
|
|
|
|
|
|
if ("数据获取成功" == resMsg) {
|
|
|
|
|
|
reloadTip("删除", "删除成功", 'success');
|
|
|
|
|
|
table.reload('demo', {
|
|
|
|
|
|
data: newData //重新加载表格数据
|
|
|
|
|
|
});
|
|
|
|
|
|
layer.close(delIndex);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
reloadTip("删除", error, "error");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
reloadTip("团队人员删减", "当前" + data.postName + "岗位人数已经与团队最低标准相同,不可再进行删减!!!", 'error')
|
|
|
|
|
|
// layer.msg("当前"+data.postName+"岗位人数已经与团队最低标准相同,不可再进行删减!!!",{icon:0,timeout:2000});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 单元格编辑事件
|
|
|
|
|
|
table.on('edit(test)', function (obj) {
|
|
|
|
|
|
var field = obj.field; // 得到字段
|
|
|
|
|
|
var value = obj.value; // 得到修改后的值
|
|
|
|
|
|
var oldValue = obj.oldValue;
|
|
|
|
|
|
var data = obj.data; // 得到所在行所有键值
|
|
|
|
|
|
var update = {};
|
|
|
|
|
|
// 值的校验
|
|
|
|
|
|
if (field === 'idNumber') {
|
|
|
|
|
|
if (value.length != 18) {
|
|
|
|
|
|
update[field] = oldValue;
|
|
|
|
|
|
obj.update(update);
|
|
|
|
|
|
layer.tips('输入的身份证不正确,请重新编辑', this, {tips: 1});
|
|
|
|
|
|
return obj.reedit(); // 重新编辑 -- v2.8.0 新增
|
|
|
|
|
|
} else {
|
|
|
|
|
|
update[field] = value;
|
|
|
|
|
|
obj.update(update);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (field == 'name' || field == 'sex' || field == 'nation') {
|
|
|
|
|
|
var limit = 10; // 设置最大字数限制为 10
|
|
|
|
|
|
if (value.length > limit) {
|
|
|
|
|
|
layer.tips('最大字数限制为' + limit + '个字符', this, {tips: 1});
|
|
|
|
|
|
// 这里可以根据实际情况进行处理,比如截断字符串或者阻止编辑
|
|
|
|
|
|
update[field] = oldValue;
|
|
|
|
|
|
obj.update(update);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
update[field] = value;
|
|
|
|
|
|
obj.update(update);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// layer.msg('编辑成功', {icon: 1});
|
|
|
|
|
|
reloadTip("表格编辑", data.postName + "编辑成功", 'success')
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 验证成功后才会执行下面的操作
|
|
|
|
|
|
form.on('submit(formDemo)', function (data) {
|
|
|
|
|
|
addInfo("1"); ///新增方法
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
function showTable() {
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
type: 'post',
|
2025-12-09 18:44:29 +08:00
|
|
|
|
url: czl_ht_url + '/subTeam/getSubTeamsFormList',//数据接口
|
2025-11-27 16:55:35 +08:00
|
|
|
|
dataType: 'json', // 服务器返回数据类型
|
|
|
|
|
|
async: false,
|
|
|
|
|
|
data: {
|
|
|
|
|
|
teamTypeId: $("#teamTypeId").val(),
|
|
|
|
|
|
subId: $("#subId").val(),
|
|
|
|
|
|
id: id,
|
|
|
|
|
|
type: type
|
|
|
|
|
|
},
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
table.render({
|
|
|
|
|
|
elem: '#demo'
|
|
|
|
|
|
, toolbar: 'default'
|
|
|
|
|
|
, cellMinWidth: 80
|
|
|
|
|
|
, cols: [[ //表头
|
|
|
|
|
|
{
|
|
|
|
|
|
field: 'postName', title: '岗位', align: 'center', templet: d => {
|
|
|
|
|
|
let text = "";
|
|
|
|
|
|
if (d.isRequired == "1") {
|
|
|
|
|
|
text = '<i class="tip-required" style="color: red;font-size: 20px">*</i>' + d.postName;
|
|
|
|
|
|
} else if (d.isRequired == "0") {
|
|
|
|
|
|
text = d.postName;
|
|
|
|
|
|
}
|
|
|
|
|
|
return text;
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{field: 'name', title: '姓名', align: 'center'},
|
|
|
|
|
|
{field: 'sex', title: '性别', align: 'center'},
|
|
|
|
|
|
{field: 'nation', title: '民族', align: 'center'},
|
|
|
|
|
|
{field: 'idNumber', title: '身份证', align: 'center'},
|
|
|
|
|
|
{field: 'isSocialSecurity', title: '是否有社保', align: 'center'},
|
|
|
|
|
|
{field: 'isSalaryPaymentCertificate', title: '是否有用工协议', align: 'center'},
|
|
|
|
|
|
{field: 'isSalaryPaymentCertificate', title: '工资发放证明', align: 'center'},
|
|
|
|
|
|
// {
|
|
|
|
|
|
// field: 'isSocialSecurity',
|
|
|
|
|
|
// title: '是否有社保',
|
|
|
|
|
|
// align: 'center',
|
|
|
|
|
|
// unresize: true,
|
|
|
|
|
|
// templet: '#isSocialSecurityToos'
|
|
|
|
|
|
// },
|
|
|
|
|
|
// {
|
|
|
|
|
|
// field: 'isEmploymentAgreement',
|
|
|
|
|
|
// title: '是否有用工协议',
|
|
|
|
|
|
// align: 'center',
|
|
|
|
|
|
// unresize: true,
|
|
|
|
|
|
// templet: '#isEmploymentAgreementToos'
|
|
|
|
|
|
// },
|
|
|
|
|
|
// {
|
|
|
|
|
|
// field: 'isSalaryPaymentCertificate',
|
|
|
|
|
|
// title: '工资发放证明',
|
|
|
|
|
|
// align: 'center',
|
|
|
|
|
|
// unresize: true,
|
|
|
|
|
|
// templet: '#isSalaryPaymentCertificateToos'
|
|
|
|
|
|
// },
|
|
|
|
|
|
{title: '操作', toolbar: '#barDemo', align: 'center'} //自定义操作栏模板
|
|
|
|
|
|
]],
|
|
|
|
|
|
data: data,
|
|
|
|
|
|
done: function (res, curr, count) {
|
|
|
|
|
|
merge(res);
|
|
|
|
|
|
// dropdown 方式的下拉选择
|
|
|
|
|
|
// 第一个 dropdown 的初始化设置
|
|
|
|
|
|
// dropdown.render({
|
|
|
|
|
|
// elem: '.dropdpwn-isSocialSecurityToos',
|
|
|
|
|
|
// data: [{
|
|
|
|
|
|
// title: '是',
|
|
|
|
|
|
// id: 1
|
|
|
|
|
|
// }, {
|
|
|
|
|
|
// title: '否',
|
|
|
|
|
|
// id: 0
|
|
|
|
|
|
// }],
|
|
|
|
|
|
// click: function (obj) {
|
|
|
|
|
|
// var rowIndex = $(this.elem).parents('tr').data('index');
|
|
|
|
|
|
// var rowData = res.data[rowIndex];
|
|
|
|
|
|
// this.elem.find('span').html(obj.title);
|
|
|
|
|
|
// rowData.isSocialSecurity = obj.title;
|
|
|
|
|
|
// $(this.elem).closest('.dropdown-menu').removeClass('show');
|
|
|
|
|
|
// reloadTip("表格编辑", rowData.postName + "编辑成功", 'success');
|
|
|
|
|
|
// }
|
|
|
|
|
|
// });
|
|
|
|
|
|
//
|
|
|
|
|
|
// // 第二个 dropdown 的初始化设置
|
|
|
|
|
|
// dropdown.render({
|
|
|
|
|
|
// elem: '.dropdpwn-isEmploymentAgreementToos',
|
|
|
|
|
|
// data: [{
|
|
|
|
|
|
// title: '是',
|
|
|
|
|
|
// id: 1
|
|
|
|
|
|
// }, {
|
|
|
|
|
|
// title: '否',
|
|
|
|
|
|
// id: 0
|
|
|
|
|
|
// }],
|
|
|
|
|
|
// click: function (obj) {
|
|
|
|
|
|
// var rowIndex = $(this.elem).parents('tr').data('index');
|
|
|
|
|
|
// var rowData = res.data[rowIndex];
|
|
|
|
|
|
// this.elem.find('span').html(obj.title);
|
|
|
|
|
|
// rowData.isEmploymentAgreement = obj.title; // 这里修正为 isEmploymentAgreement
|
|
|
|
|
|
// $(this.elem).closest('.dropdown-menu').removeClass('show');
|
|
|
|
|
|
// reloadTip("表格编辑", rowData.postName + "编辑成功", 'success');
|
|
|
|
|
|
// }
|
|
|
|
|
|
// });
|
|
|
|
|
|
//
|
|
|
|
|
|
// // 第三个 dropdown 的初始化设置
|
|
|
|
|
|
// dropdown.render({
|
|
|
|
|
|
// elem: '.dropdpwn-isSalaryPaymentCertificateToos',
|
|
|
|
|
|
// data: [{
|
|
|
|
|
|
// title: '是',
|
|
|
|
|
|
// id: 1
|
|
|
|
|
|
// }, {
|
|
|
|
|
|
// title: '否',
|
|
|
|
|
|
// id: 0
|
|
|
|
|
|
// }],
|
|
|
|
|
|
// click: function (obj) {
|
|
|
|
|
|
// var rowIndex = $(this.elem).parents('tr').data('index');
|
|
|
|
|
|
// var rowData = res.data[rowIndex];
|
|
|
|
|
|
// this.elem.find('span').html(obj.title);
|
|
|
|
|
|
// rowData.isSalaryPaymentCertificate = obj.title;
|
|
|
|
|
|
// $(this.elem).closest('.dropdown-menu').removeClass('show');
|
|
|
|
|
|
// reloadTip("表格编辑", rowData.postName + "编辑成功", 'success');
|
|
|
|
|
|
// }
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
var mergeCount = 0; // 合并行数初始为0
|
|
|
|
|
|
var prevCategory = data[0].postName; // 上一行的类别名称
|
|
|
|
|
|
|
|
|
|
|
|
res.data.forEach(function (item) {
|
|
|
|
|
|
if (item.postName !== prevCategory) {
|
|
|
|
|
|
if (prevCategory !== null) {
|
|
|
|
|
|
delTitleMap.set(prevCategory, mergeCount); // 存储上一种类的合并行数
|
|
|
|
|
|
}
|
|
|
|
|
|
prevCategory = item.postName; // 更新上一行的类别名称
|
|
|
|
|
|
mergeCount = 1; // 重置合并行数
|
|
|
|
|
|
} else {
|
|
|
|
|
|
mergeCount++; // 同一种类,合并行数加一
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
delTitleMap.set(prevCategory, mergeCount); // 存储最后一种类的合并行数
|
|
|
|
|
|
},
|
|
|
|
|
|
toolbar: '#toolbarDemo' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
error: function (err) {
|
|
|
|
|
|
console.log("获取工程下拉列表出错:", err);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function showTitle() {
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
type: 'post',
|
2025-12-09 18:44:29 +08:00
|
|
|
|
url: czl_ht_url + '/subTeam/getSubTeamNum',
|
2025-11-27 16:55:35 +08:00
|
|
|
|
dataType: 'json', // 服务器返回数据类型
|
|
|
|
|
|
async: false,
|
|
|
|
|
|
data: {
|
|
|
|
|
|
teamTypeId: $("#teamTypeId").val(),
|
|
|
|
|
|
},
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
var resMsg = data.resMsg;
|
|
|
|
|
|
if ("数据获取成功" == resMsg) {
|
|
|
|
|
|
$("#span1").empty();
|
|
|
|
|
|
let info = data.obj.SubTeamBean;
|
|
|
|
|
|
console.log(info);
|
|
|
|
|
|
console.log(JSON.stringify(info));
|
|
|
|
|
|
var html = '';
|
|
|
|
|
|
for (let i = 0; i < info.length; i++) {
|
|
|
|
|
|
html += info[i].postName + ':<span style="color: red;"> ' + info[i].postNum + '</span>';
|
|
|
|
|
|
titleMap.set(info[i].postName, info[i].postNum);
|
|
|
|
|
|
}
|
|
|
|
|
|
$("#span1").append(html)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
error: function (err) {
|
|
|
|
|
|
console.log("获取工程下拉列表出错:", err);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 合并行方法
|
|
|
|
|
|
**/
|
|
|
|
|
|
function merge(res) {
|
|
|
|
|
|
var data = res.data;
|
|
|
|
|
|
var mergeIndex = 0;//定位需要添加合并属性的行数
|
|
|
|
|
|
var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数
|
|
|
|
|
|
var columsName = ['postName'];//需要合并的列名称 ['business_tenant_name','land','contract_begin','contract_end','history_arrears','period'];
|
|
|
|
|
|
var columsIndex = [0];//需要合并的列索引值 [2,3,5,6,14,15];
|
|
|
|
|
|
for (var k = 0; k < columsName.length; k++) { //这里循环所有要合并的列
|
|
|
|
|
|
var trArr = $(".layui-table-body>.layui-table").find("tr");//所有行
|
|
|
|
|
|
if (!isEmpty(res.data)) {
|
|
|
|
|
|
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
|
|
|
|
|
|
var tdCurArr = trArr.eq(i).find("td").eq(columsIndex[k]);//获取当前行的当前列
|
|
|
|
|
|
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[k]);//获取相同列的第一列
|
|
|
|
|
|
if (data[i][columsName[0]] === data[i - 1][columsName[0]]) {
|
|
|
|
|
|
layui.hint().error(i);
|
|
|
|
|
|
if (data[i][columsName[k]] === data[i - 1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并
|
|
|
|
|
|
mark += 1;
|
|
|
|
|
|
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
|
|
|
|
|
|
$(this).attr("rowspan", mark);
|
|
|
|
|
|
});
|
|
|
|
|
|
tdCurArr.each(function () {//当前行隐藏
|
|
|
|
|
|
$(this).css("display", "none");
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
mergeIndex = i;
|
|
|
|
|
|
mark = 1;//一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
mergeIndex = 0;
|
|
|
|
|
|
mark = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function addInfo(submitType) {
|
|
|
|
|
|
var tip = '保存';
|
|
|
|
|
|
finalData = table.cache.demo;
|
|
|
|
|
|
console.log(finalData)
|
|
|
|
|
|
for (let i = 0; i < finalData.length; i++) {
|
|
|
|
|
|
if (finalData[i].isRequired == '1') {
|
|
|
|
|
|
if (isEmpty(finalData[i].name) || isEmpty(finalData[i].sex) || isEmpty(finalData[i].nation)
|
|
|
|
|
|
|| isEmpty(finalData[i].idNumber)) {
|
|
|
|
|
|
// return layer.msg("相关表格数据请填写完整在进行提交,谢谢^_^!")
|
|
|
|
|
|
reloadTip("数据提交", "相关表格数据请填写完整在进行提交,谢谢^_^!", 'error');
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
var data = {
|
|
|
|
|
|
finalData: JSON.stringify(finalData),
|
|
|
|
|
|
subTeamType: $("#subTeamTypeId option:selected").text(),
|
|
|
|
|
|
subTeamTypeId: $("#subTeamTypeId").val(),
|
|
|
|
|
|
teamTypeId: $("#teamTypeId").val(),
|
|
|
|
|
|
teamTypeName: $("#teamTypeId option:selected").text(),
|
|
|
|
|
|
teamName: $("#teamName").val(),
|
|
|
|
|
|
subId: $("#subId").val(),
|
|
|
|
|
|
subName: $("#subId option:selected").text(),
|
|
|
|
|
|
id: id,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-09 18:44:29 +08:00
|
|
|
|
var formUrl = czl_ht_url + "/subTeam/addSubTeam";
|
2025-11-27 16:55:35 +08:00
|
|
|
|
if (id != '') {
|
2025-12-09 18:44:29 +08:00
|
|
|
|
formUrl = czl_ht_url + "/subTeam/updateSubTeam";
|
2025-11-27 16:55:35 +08:00
|
|
|
|
tip = '修改';
|
|
|
|
|
|
}
|
|
|
|
|
|
// 加载提示
|
|
|
|
|
|
var addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {
|
|
|
|
|
|
icon: 16,
|
|
|
|
|
|
scrollbar: false,
|
|
|
|
|
|
time: 0,
|
|
|
|
|
|
shade: [0.8, '#393D49']
|
|
|
|
|
|
});
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
type: 'post',
|
|
|
|
|
|
async: false, // 默认异步true,false表示同步
|
|
|
|
|
|
url: formUrl, // 请求地址
|
|
|
|
|
|
contentType: "application/json; charset=utf-8",
|
|
|
|
|
|
dataType: 'json', // 服务器返回数据类型
|
|
|
|
|
|
data: JSON.stringify(data), //获取提交的表单字段
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
if (submitType == '1') {
|
|
|
|
|
|
if (data.resMsg == "发起成功") {
|
|
|
|
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
|
|
|
|
reloadTip(tip + "提示", tip + "成功", "success");
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
|
parent.layer.closeAll();
|
|
|
|
|
|
}, 2000);
|
|
|
|
|
|
} else if (data.resMsg == "班组名称已存在") {
|
|
|
|
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
|
|
|
|
reloadTip(tip + "提示", "班组名称已存在", "error");
|
|
|
|
|
|
} else {
|
|
|
|
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
|
|
|
|
reloadTip(tip + "提示", tip + "失败", "error");
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
|
|
|
|
parent.layer.closeAll();
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
error: function (XMLHttpRequest, textStatus, e) {
|
|
|
|
|
|
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
|
|
|
|
|
|
top.layer.close(addLoadingMsg); //再执行关闭
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function checkInfo() {
|
|
|
|
|
|
finalData = table.cache.demo;
|
|
|
|
|
|
console.log(finalData)
|
|
|
|
|
|
for (let i = 0; i < finalData.length; i++) {
|
|
|
|
|
|
if (finalData[i].isRequired == '1') {
|
|
|
|
|
|
if (isEmpty(finalData[i].name) || isEmpty(finalData[i].sex) || isEmpty(finalData[i].nation)
|
|
|
|
|
|
|| isEmpty(finalData[i].idNumber)) {
|
|
|
|
|
|
// return layer.msg("相关表格数据请填写完整在进行提交,谢谢^_^!")
|
|
|
|
|
|
reloadTip("返回", "您在表格数据中进行了改动,请确保现有数据都已填写完整!然后点击确定按钮数据", 'error');
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function choosePersonHtml(newData,i){
|
|
|
|
|
|
var d;
|
|
|
|
|
|
localStorage.setItem('selectSubId',$("#subId").val())
|
|
|
|
|
|
var index = layer.open({
|
|
|
|
|
|
title: ['选择班组人员', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
|
|
|
|
|
type: 2,
|
|
|
|
|
|
content: "./choosePerson.html",
|
|
|
|
|
|
area: ['80%', '95%'],
|
|
|
|
|
|
maxmin: false,
|
|
|
|
|
|
btn: ['确定'],
|
|
|
|
|
|
success: function (layero, index) {
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
yes: function (index, layero) {
|
|
|
|
|
|
//提交子页面时执行
|
|
|
|
|
|
// 获取弹出层中的form表单元素
|
|
|
|
|
|
var formSubmit = layer.getChildFrame('form', index);
|
|
|
|
|
|
// 查找class样式为submitBtn的按钮
|
|
|
|
|
|
let submited = formSubmit.find('button.subBtn');
|
|
|
|
|
|
// 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
|
|
|
|
|
|
submited.click();
|
|
|
|
|
|
var iframeWin = window[layero.find('iframe')[0]['name']];
|
|
|
|
|
|
// 获取子页面的表单数据
|
|
|
|
|
|
d = iframeWin.getData();
|
|
|
|
|
|
newData[i].name = d.name;
|
|
|
|
|
|
newData[i].sex = d.sex;
|
|
|
|
|
|
newData[i].idNumber = d.idNumber;
|
|
|
|
|
|
newData[i].nation = d.nation;
|
|
|
|
|
|
newData[i].isSocialSecurity = d.isSocialSecurity;
|
|
|
|
|
|
newData[i].isEmploymentAgreement = d.isEmploymentAgreement;
|
|
|
|
|
|
newData[i].isSalaryPaymentCertificate = d.isSalaryPaymentCertificate;
|
|
|
|
|
|
newData[i].isData = 1;
|
|
|
|
|
|
// 重新渲染表格
|
|
|
|
|
|
table.reload('demo', {
|
|
|
|
|
|
data: newData, // 重新加载时传入新的数据源
|
|
|
|
|
|
});
|
|
|
|
|
|
layer.close(index);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function reloadTip(tip, message, type) {
|
|
|
|
|
|
parent.layNotify.notice({
|
|
|
|
|
|
title: tip + "提示",
|
|
|
|
|
|
type: type,
|
|
|
|
|
|
message: message
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|