2025-11-27 16:55:35 +08:00
|
|
|
|
var example = null;
|
|
|
|
|
|
var pers = checkPermission();
|
|
|
|
|
|
var laydate;
|
|
|
|
|
|
var tree;
|
|
|
|
|
|
var parentData;
|
|
|
|
|
|
layui.use(['form', 'layer', 'tree'], function () {
|
|
|
|
|
|
laydate = layui.laydate;
|
|
|
|
|
|
tree = layui.tree;
|
|
|
|
|
|
|
|
|
|
|
|
function fetchTreeData(name, uprewordNum, callback) {
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
type: 'post',
|
2025-12-09 18:44:29 +08:00
|
|
|
|
url: smz_ht_url + "/salaryCheck/getTreeDetail",
|
2025-11-27 16:55:35 +08:00
|
|
|
|
dataType: 'json',
|
|
|
|
|
|
data: {
|
|
|
|
|
|
recordNum: uprewordNum,
|
|
|
|
|
|
title: name
|
|
|
|
|
|
},
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
if (data.code == 200) {
|
|
|
|
|
|
callback(data.data);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
console.error('Failed to fetch tree data:', data.message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function renderTree(data) {
|
|
|
|
|
|
tree.render({
|
|
|
|
|
|
elem: '#treeContent',
|
|
|
|
|
|
data: data,
|
|
|
|
|
|
id: 'treeContent',
|
|
|
|
|
|
spread: true, // 设置为 true,使得根节点默认展开
|
|
|
|
|
|
showLine: false,
|
|
|
|
|
|
onlyIconControl: true,
|
|
|
|
|
|
isSimpleData: true,
|
|
|
|
|
|
click: function (obj) {
|
|
|
|
|
|
console.log(obj);
|
|
|
|
|
|
if (obj.data.id !=1){
|
|
|
|
|
|
setData(obj.data.id, obj.data.title);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$("#searchBt").click(function () {
|
|
|
|
|
|
var name = $("#name").val();
|
|
|
|
|
|
var uprewordNum = localStorage.getItem("uprewordNum");
|
|
|
|
|
|
|
|
|
|
|
|
fetchTreeData(name, uprewordNum, function(data) {
|
|
|
|
|
|
renderTree(data);
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
function initTree() {
|
|
|
|
|
|
var name = $("#name").val();
|
|
|
|
|
|
var uprewordNum = localStorage.getItem("uprewordNum");
|
|
|
|
|
|
|
|
|
|
|
|
fetchTreeData(name, uprewordNum, function(data) {
|
|
|
|
|
|
renderTree(data);
|
|
|
|
|
|
if (data.length > 0 ) {
|
|
|
|
|
|
setData(data[0].id, data[0].title);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Initialize tree on page load
|
|
|
|
|
|
initTree();
|
|
|
|
|
|
// init();
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function setData(idNumber,userName) {
|
|
|
|
|
|
var cdata;
|
|
|
|
|
|
$("#userName").text(userName);
|
|
|
|
|
|
$("#userNo").text(idNumber);
|
|
|
|
|
|
var uprewordNum=localStorage.getItem("uprewordNum")
|
|
|
|
|
|
$.ajax({//id获取详情打开弹窗传值子页面
|
|
|
|
|
|
type: 'post',
|
2025-12-09 18:44:29 +08:00
|
|
|
|
url: smz_ht_url + "/salaryPaymentAndAttendanceRecords/getAbnormalDataByIdNumber",
|
2025-11-27 16:55:35 +08:00
|
|
|
|
dataType: 'json',
|
|
|
|
|
|
async:false,
|
|
|
|
|
|
data: {
|
|
|
|
|
|
idNumber: idNumber,rewordNum:uprewordNum
|
|
|
|
|
|
},
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
|
if(data.code==200){
|
|
|
|
|
|
cdata=data.data;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
console.log("cdata:",cdata)
|
|
|
|
|
|
init(cdata);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function init(cdata) {
|
|
|
|
|
|
$("#abnormalDescribe").val('')
|
|
|
|
|
|
$("#salaryPaymentContent").empty()
|
|
|
|
|
|
$("#rewardConfirmContent").empty()
|
|
|
|
|
|
$("#transferFileDiskContent").empty()
|
|
|
|
|
|
$("#attendanceContent").empty()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var workerhtml='<tr align="center" >\n' +
|
|
|
|
|
|
' <td>所在班组</td>\n' +
|
|
|
|
|
|
' <td>岗位</td>\n' +
|
|
|
|
|
|
' <td>出勤天数</td>\n' +
|
|
|
|
|
|
' <td>应发工资</td>\n' +
|
|
|
|
|
|
' <td>其中代扣/代缴</td>\n' +
|
|
|
|
|
|
' <td>实发工资</td>\n' +
|
|
|
|
|
|
' <td>开户银行</td>\n' +
|
|
|
|
|
|
' <td>银行卡号</td>\n' +
|
|
|
|
|
|
' </tr>';
|
|
|
|
|
|
var confhtnl='<tr align="center" >\n' +
|
|
|
|
|
|
' <td rowspan="2">岗位</td>\n' +
|
|
|
|
|
|
' <td colspan="3">当月发放基本工资</td>\n' +
|
|
|
|
|
|
' <td colspan="3">当月发放加班工资</td>\n' +
|
|
|
|
|
|
' <td colspan="3">当月绩效奖金</td>\n' +
|
|
|
|
|
|
' <td rowspan="2">报酬小计</td>\n' +
|
|
|
|
|
|
' <td rowspan="2">绩效奖金累计(含本月)</td>\n' +
|
|
|
|
|
|
' </tr>\n' +
|
|
|
|
|
|
'\n' +
|
|
|
|
|
|
' <tr align="center" style="background-color: #F7F8FC" >\n' +
|
|
|
|
|
|
' <td>单价</td>\n' +
|
|
|
|
|
|
' <td>考勤天数</td>\n' +
|
|
|
|
|
|
' <td>小计</td>\n' +
|
|
|
|
|
|
' <td>单价</td>\n' +
|
|
|
|
|
|
' <td>考勤天数</td>\n' +
|
|
|
|
|
|
' <td>小计</td>\n' +
|
|
|
|
|
|
' <td>单价</td>\n' +
|
|
|
|
|
|
' <td>考勤天数</td>\n' +
|
|
|
|
|
|
' <td>小计</td>\n' +
|
|
|
|
|
|
' </tr>';
|
|
|
|
|
|
var diskhtml='<tr align="center" >\n' +
|
|
|
|
|
|
' <td>所在班组</td>\n' +
|
|
|
|
|
|
' <td>岗位</td>\n' +
|
|
|
|
|
|
' <td>出勤天数</td>\n' +
|
|
|
|
|
|
' <td>应发工资</td>\n' +
|
|
|
|
|
|
' <td>其中代扣/代缴</td>\n' +
|
|
|
|
|
|
' <td>实发工资</td>\n' +
|
|
|
|
|
|
' <td>银行卡号</td>\n' +
|
|
|
|
|
|
' </tr>';
|
|
|
|
|
|
var attenhtml='<tr align="center" >\n' +
|
|
|
|
|
|
' <td style="width: 7%">工种</td>\n' +
|
|
|
|
|
|
' <td style="width: 13%">工程名称</td>\n' +
|
|
|
|
|
|
' <td style="width: 15%">分包商</td>\n' +
|
|
|
|
|
|
' <td style="width: 12%">班组</td>\n' +
|
|
|
|
|
|
' <td style="width: 4%">出勤天数</td>\n' +
|
|
|
|
|
|
' <td style="width: 4%">休息天数</td>\n' +
|
|
|
|
|
|
' <td style="width: 4%">缺勤天数</td>\n' +
|
|
|
|
|
|
' <td style="width: 5%">合同工资</td>\n' +
|
|
|
|
|
|
' <td style="width: 5%">合同绩效</td>\n' +
|
|
|
|
|
|
' <td style="width: 13%">银行卡号</td>\n' +
|
|
|
|
|
|
' </tr>';
|
|
|
|
|
|
|
|
|
|
|
|
//异常数据
|
|
|
|
|
|
var jxDifferenceRewordList;
|
|
|
|
|
|
if (cdata.jxDifferenceRewordList != null && cdata.jxDifferenceRewordList.length > 0){
|
|
|
|
|
|
jxDifferenceRewordList=cdata.jxDifferenceRewordList[0];
|
|
|
|
|
|
}else {
|
|
|
|
|
|
jxDifferenceRewordList = {describes: ''};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//农名工工资支付表
|
|
|
|
|
|
if (cdata.jxWorkerPayList != null && cdata.jxWorkerPayList.length > 0){
|
|
|
|
|
|
var salaryPayment =cdata.jxWorkerPayList[0];
|
|
|
|
|
|
workerhtml=workerhtml+'<tr className="white">';
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.teamName+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.post==1){
|
|
|
|
|
|
workerhtml=workerhtml+' <td style="color: red">'+salaryPayment.post+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.post+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.attenNum==1){
|
|
|
|
|
|
workerhtml=workerhtml+' <td style="color: red">'+salaryPayment.attenNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.attenNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.payable==1){
|
|
|
|
|
|
workerhtml=workerhtml+' <td style="color: red">'+salaryPayment.payable+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.payable+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.withhold+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.payIn==1){
|
|
|
|
|
|
workerhtml=workerhtml+' <td style="color: red">'+salaryPayment.payIn+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.payIn+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.bank+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.bankNum==1){
|
|
|
|
|
|
workerhtml=workerhtml+' <td style="color: red">'+salaryPayment.bankNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
workerhtml=workerhtml+' <td>'+salaryPayment.bankNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
|
|
|
workerhtml+=isEmpty(8)
|
|
|
|
|
|
}
|
|
|
|
|
|
workerhtml=workerhtml+'</tr>';
|
|
|
|
|
|
|
|
|
|
|
|
//劳动报酬确认单
|
|
|
|
|
|
if (cdata.jxConfimationPayList != null && cdata.jxConfimationPayList.length > 0){
|
|
|
|
|
|
var rewardConfirm =cdata.jxConfimationPayList[0];
|
|
|
|
|
|
confhtnl=confhtnl+'<tr className="white" style="background-color: #FFFFFF">';
|
|
|
|
|
|
if(jxDifferenceRewordList.post==1){
|
|
|
|
|
|
confhtnl=confhtnl+' <td style="color: red">'+rewardConfirm.post+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.post+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.basicPrice==1){
|
|
|
|
|
|
confhtnl=confhtnl+' <td style="color: red">'+rewardConfirm.basePrice+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.basePrice+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.attenNum==1){
|
|
|
|
|
|
confhtnl=confhtnl+' <td style="color: red">'+rewardConfirm.baseNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.baseNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.baseAll+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.overtimePrice+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.overtimeNum+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.overtimeAll+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.achievementsPrice==1){
|
|
|
|
|
|
confhtnl=confhtnl+' <td style="color: red">'+rewardConfirm.achievementsPrice+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.achievementsPrice+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.achievementsNum+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.achievementsAll+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.rewardAll+'</td>';
|
|
|
|
|
|
confhtnl=confhtnl+' <td>'+rewardConfirm.achievementsAll+'</td>';
|
|
|
|
|
|
}else {
|
|
|
|
|
|
confhtnl+=isEmpty(12)
|
|
|
|
|
|
}
|
|
|
|
|
|
confhtnl=confhtnl+'</tr>';
|
|
|
|
|
|
|
|
|
|
|
|
//个人相关信息 - 传盘文件
|
|
|
|
|
|
if (cdata.jxDiskRewordList != null && cdata.jxDiskRewordList.length > 0){
|
|
|
|
|
|
var transferFileDisk =cdata.jxDiskRewordList[0];
|
|
|
|
|
|
diskhtml=diskhtml+'<tr className="white">';
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.teamName+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.post==1){
|
|
|
|
|
|
diskhtml=diskhtml+' <td style="color: red">'+transferFileDisk.post+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.post+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(jxDifferenceRewordList.attenNum==1){
|
|
|
|
|
|
diskhtml=diskhtml+' <td style="color: red">'+transferFileDisk.attenNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.attenNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.payable==1){
|
|
|
|
|
|
diskhtml=diskhtml+' <td style="color: red">'+transferFileDisk.payable+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.payable+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.withhold+'</td>';
|
|
|
|
|
|
if(jxDifferenceRewordList.payIn==1){
|
|
|
|
|
|
diskhtml=diskhtml+' <td style="color: red">'+transferFileDisk.payIn+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.payIn+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.bankNum==1){
|
|
|
|
|
|
diskhtml=diskhtml+' <td style="color: red">'+transferFileDisk.bankNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
diskhtml=diskhtml+' <td>'+transferFileDisk.bankNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
|
|
|
diskhtml+=isEmpty(7)
|
|
|
|
|
|
}
|
|
|
|
|
|
diskhtml=diskhtml+'</tr>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//个人相关信息 - 系统考勤
|
|
|
|
|
|
if (cdata.jxAttendanceRewordList != null && cdata.jxAttendanceRewordList.length > 0){
|
|
|
|
|
|
var attendance =cdata.jxAttendanceRewordList[0];
|
|
|
|
|
|
attenhtml=attenhtml+'<tr className="white">';
|
|
|
|
|
|
if(jxDifferenceRewordList.post==1){
|
|
|
|
|
|
attenhtml=attenhtml+' <td style="color: red">'+attendance.post+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.post+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.proName+'</td>';
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.subName+'</td>';
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.teamName+'</td>';
|
|
|
|
|
|
|
|
|
|
|
|
if(jxDifferenceRewordList.attenNum==1){
|
|
|
|
|
|
attenhtml=attenhtml+' <td style="color: red">'+attendance.attenNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.attenNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.restNum+'</td>';
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.noworkNum+'</td>';
|
|
|
|
|
|
|
|
|
|
|
|
if(jxDifferenceRewordList.basicPrice==1){
|
|
|
|
|
|
attenhtml=attenhtml+' <td style="color: red">'+attendance.basePay+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.basePay+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.achievementsPrice==1){
|
|
|
|
|
|
attenhtml=attenhtml+' <td style="color: red">'+attendance.achievementsPay+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.achievementsPay+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
if(jxDifferenceRewordList.bankNum==1){
|
|
|
|
|
|
attenhtml=attenhtml+' <td style="color: red">'+attendance.bankNum+'</td>';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
attenhtml=attenhtml+' <td>'+attendance.bankNum+'</td>';
|
|
|
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
|
|
|
attenhtml+=isEmpty(10)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
attenhtml=attenhtml+'</tr>';
|
|
|
|
|
|
|
|
|
|
|
|
$("#abnormalDescribe").val(jxDifferenceRewordList.describes);
|
|
|
|
|
|
$("#salaryPaymentContent").append(workerhtml)
|
|
|
|
|
|
$("#rewardConfirmContent").append(confhtnl)
|
|
|
|
|
|
$("#transferFileDiskContent").append(diskhtml)
|
|
|
|
|
|
$("#attendanceContent").append(attenhtml)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//表格空值赋值
|
|
|
|
|
|
function isEmpty(num) {
|
|
|
|
|
|
var html = `
|
|
|
|
|
|
<tr align="center" style="background-color: #fff;">
|
|
|
|
|
|
<td colspan="${ num }">无数据</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
`
|
|
|
|
|
|
return html
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//判断对象是否有值
|
|
|
|
|
|
function isObjectEmpty(obj) {
|
|
|
|
|
|
return Object.keys(obj).length === 0;
|
|
|
|
|
|
}
|