<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8" />
|
<title>考勤汇报单</title>
|
<meta name="renderer" content="webkit">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
<!--引用layui样式文件-->
|
<link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
|
<link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
|
<!--引用layui js文件-->
|
<script src="../../../layuiadmin/layui/layui.js"></script>
|
<script src="../../../layuiadmin/Scripts/json2.js"></script>
|
<script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
|
<script src="../../../layuiadmin/Scripts/webConfig.js"></script>
|
<script src="../../../layuiadmin/PubCustom.js"></script>
|
<script src="../../../layuiadmin/PageTitle.js"></script>
|
<style type="text/css">
|
.layui-form-item .layui-inline {
|
margin-right: 0;
|
}
|
|
html {
|
background-color: white;
|
color: white;
|
}
|
|
.layui-table-cell {
|
overflow: visible !important;
|
}
|
|
td .layui-form-select {
|
margin-top: -10px;
|
margin-left: -15px;
|
margin-right: -15px;
|
}
|
</style>
|
</head>
|
<body>
|
<div class="layui-fluid" style="padding: 0;">
|
<div class="layui-card" style="padding: 15px;">
|
<div class="layui-card-body" style="padding: 1px;">
|
<form class="layui-form" lay-filter="component-form-group" action="">
|
<div class="layui-card-header">
|
<div class="layui-btn-group">
|
<button class="layui-btn layui-btn-normal layui-btn-radius" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btn_Save" id="btn_Save">保存</button>
|
<button class="layui-btn layui-btn-normal layui-btn-radius" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btn_Cancel" id="btn_Cancel">退出</button>
|
</div>
|
</div>
|
<div class="layui-tab" lay-filter="tab-Bill">
|
<h1 style="text-align: center; padding: 10px 0;"><b>考勤汇报单</b></h1>
|
<ul class="layui-tab-title" lay-filter="tab-all">
|
<li lay-id="1" style="padding:1px;" class="layui-this">基本信息</li>
|
<li lay-id="2" style="padding:1px;">制单信息</li>
|
</ul>
|
<div class="layui-tab-content">
|
<!--基本信息-->
|
<div class="layui-tab-item layui-show">
|
<div class="layui-form-item" style="padding-top: 10px;">
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label">单据号</label>
|
<div class="layui-input-inline">
|
<input type="text" class="layui-input" name="HBillNo" id="HBillNo" style="background-color:#efefef4d;" readonly>
|
<input type="hidden" name="HInterID" id="HInterID" value="0">
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label">日期<label style="color:red"> * </label></label>
|
<div class="layui-input-block">
|
<input type="date" class="layui-input" lay-verify="HDate" name="HDate" id="HDate" style="width:190px;">
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label">部门<label style="color:red"> * </label></label>
|
<div class="layui-input-inline">
|
<input type="text" name="HDeptName" id="HDeptName" readonly class="layui-input" value="" style="background-color: #efefef4d; float: left; width: 150px;">
|
<input type="hidden" name="HDeptID" id="HDeptID" class="layui-input" value="0" style="float:left;width:150px;">
|
<button type="button" lay-submit="" class="layui-btn" lay-filter="HDeptList" style="width:40px;">
|
<i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
|
</button>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label">班组<label style="color:red"> * </label></label>
|
<div class="layui-input-inline">
|
<input type="text" name="HGroupName" id="HGroupName" readonly class="layui-input" value="" style="background-color: #efefef4d; float: left; width: 150px;">
|
<input type="hidden" name="HGroupID" id="HGroupID" class="layui-input" value="0" style="float:left;width:150px;">
|
<button type="button" lay-submit="" class="layui-btn" lay-filter="HGroupList" style="width:40px;">
|
<i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
|
</button>
|
</div>
|
</div>
|
</div>
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label">组织<label style="color:red"> * </label></label>
|
<div class="layui-input-block" style="margin-left: 110px; width: 501px;">
|
<select name="HStockOrgID" id="HStockOrgID" lay-verify="HStockOrgID">
|
<!--动态渲染组织-->
|
</select>
|
</div>
|
</div>
|
</div>
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label">备注</label>
|
<div class="layui-input-block">
|
<input class="layui-input" name="HRemark" id="HRemark" autocomplete="off" style="width: 1135px;">
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<!--制单信息-->
|
<div class="layui-tab-item">
|
<div class="layui-form-item">
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">制单人</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HMaker" id="HMaker" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">审核人</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HChecker" id="HChecker" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">关闭人</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HCloseMan" id="HCloseMan" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
</div>
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">制单日期</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HMakeDate" id="HMakeDate" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">审核日期</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HCheckDate" id="HCheckDate" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">关闭日期</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HCloseDate" id="HCloseDate" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
</div>
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">修改人</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HUpDater" id="HUpDater" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">作废人</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HDeleteMan" id="HDeleteMan" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
</div>
|
<div class="layui-row">
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">修改日期</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HUpDateDate" id="HUpDateDate" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
<div class="layui-inline">
|
<label class="layui-form-label" style="width: 85px;">作废日期</label>
|
<div class="layui-input-block" style="margin-left: 120px;">
|
<input type="text" class="layui-input" name="HDeleteDate" id="HDeleteDate" style="background-color:#efefef4d;" readonly>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<table class="layui-hide" id="mainTable" lay-filter="mainTable"></table>
|
<script type="text/html" id="toolbarDemo">
|
<div class="layui-btn-container">
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_AddLine" id="btn_AddLine"><i class="layui-icon layui-icon-form"></i>增加一行</button>
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_InsertLine" id="btn_InsertLine"><i class="layui-icon layui-icon-form"></i>插入一行</button>
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_CopyLine" id="btn_CopyLine"><i class="layui-icon layui-icon-form"></i>复制一行</button>
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_Up" id="btn_Up"><i class="layui-icon layui-icon-form"></i>上移</button>
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_Under" id="btn_Under"><i class="layui-icon layui-icon-form"></i>下移</button>
|
<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_HideColumn" id="btn_HideColumn"><i class="layui-icon layui-icon-form"></i>列设置</button>
|
</div>
|
</script>
|
<script type="text/html" id="xuhao">
|
{{d.LAY_TABLE_INDEX+1}}
|
</script>
|
</form>
|
</div>
|
</div>
|
</div>
|
<!--子表:行删除-->
|
<script type="text/html" id="barDemo">
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
</script>
|
|
<!--复选框 厂休标记-->
|
<script type="text/html" id="HRestFlag">
|
<div class="layui-input-block" style="margin-left: 20px;">
|
<input type="checkbox" name="HRestFlag" lay-filter="HRestFlag" id="HRestFlag{{d.LAY_TABLE_INDEX+1}}" lay-skin="primary">
|
</div>
|
</script>
|
|
<script>
|
var OptionData = [];
|
layui.config({
|
base: '../../../layuiadmin/' //静态资源所在路径
|
}).extend({
|
index: 'lib/index' //主入口模块
|
}).use(['index', 'form', 'laydate', 'table', 'element'], function () {
|
//#region 公共变量
|
var $ = layui.$
|
, admin = layui.admin
|
, layer = layui.layer
|
, table = layui.table
|
, form = layui.form
|
, element = layui.element;
|
var HModName = "Pay_WorkTimesBill";
|
var HBillType = "2203";
|
var HInterID = $('#HInterID').val()
|
var HMaker = sessionStorage["HUserName"]
|
var HStockOrgID = sessionStorage["OrganizationID"] //组织ID
|
var OperationType = 1 //操作类型(1新增、2编辑)
|
var option = {};
|
//#endregion
|
|
//判断是否登录 未登录则跳到登录页
|
if (sessionStorage.login != "login") {
|
layer.confirm("登录失效,请重新登录!", {
|
icon: 4, skin: 'layui-layer-lan', title: "温馨提示", closeBtn: 0, btn: ['重新登录']
|
}, function () { window.location.href = "../../user/login.html"; });
|
}
|
|
//#region 【动态获取模块名称】
|
//通过单据类型,从数据库动态获取单据模块命名,引用js文件 PageTitle.js
|
var HPageTitle = get_PageTitle(HBillType) == "" ? $("h1").html() : get_PageTitle(HBillType);
|
$("h1").html('<b>' + HPageTitle + '</b>');
|
//#endregion
|
|
//初始化子表
|
set_InitGrid();
|
|
//获取组织
|
Organ();
|
|
//#region 获取组织
|
function Organ() {
|
//获取登录页组织列
|
$.ajax({
|
type: "GET",
|
url: GetWEBURL() + "/Web/GetOrganizations",
|
async: false, //async用于控制(false)同步和(true)异步,默认的是true,即请求默认的是异步请求
|
success: function (result) {
|
var Organization = "";
|
if (result.count == 1) { // 说明验证成功了,
|
var data = result.data;
|
for (var i = 0; i < data.length; i++) {
|
Organization += '<option style="color:blue;" value="' + data[i].ID + '">' + data[i].Name + '</option>';
|
}
|
$("#HStockOrgID").append(Organization);
|
$("#HStockOrgID").val(HStockOrgID)
|
form.render('select');
|
}
|
layer.closeAll("loading");
|
},
|
complete: function (XHR, TS) { XHR = null }//回收资源
|
})
|
}
|
//#endregion
|
|
//获取页面跳转参数
|
var params = get_UrlVars();
|
OperationType = params[params[0]]; //操作类型(1新增、2编辑)
|
HInterID = params[params[1]]; //单据内码
|
|
//判断操作类型
|
if (OperationType == undefined || OperationType == 1) { //新增
|
//获取最大单据号
|
get_MAXNum();
|
//初始化日期、创建人、创建时间
|
$("#HDate").val(Pub_Format(new Date(), "yyyy-MM-dd"));
|
$("#HMaker").val(HMaker);
|
$("#HMakeDate").val(Pub_Format(new Date(), "yyyy-MM-dd"));
|
OperationType = 1;
|
}
|
else if (OperationType == 2) { //编辑
|
$("#HInterID").val(HInterID);//修改时主表ID
|
//编辑状态时,根据内码,获取信息并写入界面
|
RoadBillMain(HInterID);
|
}
|
else {
|
layer.alert("未知操作类型!", { icon: 5 });
|
}
|
|
//#region 新增模式 获取最大单据号
|
function get_MAXNum() {
|
$.ajax({
|
type: "GET",
|
url: GetWEBURL() + "/WEBSController/GetMaxBillNo_Json",
|
async: false, //async用于控制(false)同步和(true)异步,默认的是true,即请求默认的是异步请求
|
data: { "HBillType": HBillType },
|
success: function (d) {
|
if (d.count == 1) {
|
$("#HBillNo").val(d.data[0].HBillNo);
|
}
|
else {
|
$("#HBillNo").val("");
|
layer.msg(d.Message, { icon: 0, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
}
|
},
|
complete: function (XHR, TS) { XHR = null }//回收资源
|
});
|
}
|
//#endregion
|
|
//#region 编辑模式 页面初始化
|
function RoadBillMain(HInterID) {
|
var ajaxLoad = layer.load();
|
$.ajax({
|
type: "GET",
|
url: GetWEBURL() + "/Pay_WorkTimesBillController/GetPay_WorkTimesBill_Json",
|
async: false, //async用于控制(false)同步和(true)异步,默认的是true,即请求默认的是异步请求
|
data: { "HInterID": HInterID, "HMaker": HMaker },
|
success: function (result) {
|
if (result.count == 1) {
|
var data = result.data[0];
|
if (data.审核人 != "") {
|
$('#btn_Save').addClass("layui-btn-disabled").attr("disabled", true);
|
}
|
form.val("component-form-group", { //formTest 即 class="layui-form" 所在元素属性 lay-filter="" 对应的值
|
"HBillNo": data.单据号
|
, "HDate": formatDate(data.日期)
|
, "HDeptID": data.HDeptID
|
, "HDeptName": data.部门
|
, "HGroupID": data.HGroupID
|
, "HGroupName": data.班组
|
, "HRemark": data.表头备注
|
, "HStockOrgID": data.HStockOrgID
|
, "HMaker": data.制单人
|
, "HChecker": data.审核人
|
, "HCloseMan": data.关闭人
|
, "HUpDater": data.修改人
|
, "HDeleteMan": data.作废人
|
, "HMakeDate": data.制单日期 == null ? "" : Pub_Format(data.制单日期, "yyyy-MM-dd hh:mm:ss")
|
, "HCheckDate": data.审核日期 == null ? "" : Pub_Format(data.审核日期, "yyyy-MM-dd hh:mm:ss")
|
, "HCloseDate": data.关闭日期 == null ? "" : Pub_Format(data.关闭日期, "yyyy-MM-dd hh:mm:ss")
|
, "HUpDateDate": data.修改日期 == null ? "" : Pub_Format(data.修改日期, "yyyy-MM-dd hh:mm:ss")
|
, "HDeleteDate": data.作废日期 == null ? "" : Pub_Format(data.作废日期, "yyyy-MM-dd hh:mm:ss")
|
});
|
HStockOrgID = data.HStockOrgID == null ? 0 : data.HStockOrgID;
|
|
//子表 赋值
|
var rowdata = [];
|
for (let i = 0; i < result.data.length; i++) {
|
rowdata.push(
|
{
|
"HEmpID": result.data[i].HEmpID
|
, "HEmpNumber": result.data[i].HEmpNumber
|
, "HEmpName": result.data[i].HEmpName
|
, "HEmpRate": result.data[i].HEmpRate
|
, "HPMTimes": result.data[i].HPMTimes
|
, "HAMTimes": result.data[i].HAMTimes
|
, 'HBaseTimes': result.data[i].HBaseTimes
|
, 'HBaseDays': result.data[i].HBaseDays
|
, 'HOverTimes': result.data[i].HOverTimes
|
, 'HOverDays': result.data[i].HOverDays
|
, 'HLeaveTimes': result.data[i].HLeaveTimes
|
, 'HLeaveDays': result.data[i].HLeaveDays
|
, 'HLateQty': result.data[i].HLateQty
|
, 'HLateTimes': result.data[i].HLateTimes
|
, 'HEarlyQty': result.data[i].HEarlyQty
|
, 'HEarlyTimes': result.data[i].HEarlyTimes
|
, 'HOutForEmpQty': result.data[i].HOutForEmpQty
|
, 'HOutForEmpTimes': result.data[i].HOutForEmpTimes
|
, 'HOutForComQty': result.data[i].HOutForComQty
|
, 'HOutForComTimes': result.data[i].HOutForComTimes
|
, 'HAbsentDays': result.data[i].HAbsentDays
|
, 'HRestFlag': result.data[i].HRestFlag
|
, 'HSchClassID': result.data[i].HSchClassID
|
, 'HSchClassNumber': result.data[i].HSchClassNumber
|
, 'HSchClassName': result.data[i].HSchClassName
|
, 'HNeedTimes': result.data[i].HNeedTimes
|
, 'HCTPrjID': result.data[i].HCTPrjID
|
, 'HCTPrjNumber': result.data[i].HCTPrjNumber
|
, 'HCTPrjName': result.data[i].HCTPrjName
|
, 'HWorkTypeID': result.data[i].HWorkTypeID
|
, 'HWorkTypeNumber': result.data[i].HWorkTypeNumber
|
, 'HWorkTypeName': result.data[i].HWorkTypeName
|
, 'HPayMoney': result.data[i].HPayMoney
|
, 'HMoney': result.data[i].HMoney
|
, 'HRemark': result.data[i].HRemark
|
}
|
)
|
}
|
option.data = rowdata;
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
layer.close(ajaxLoad);
|
} else {
|
layer.close(ajaxLoad);
|
layer.alert(result.msg, { icon: 5, btn: ['退出'], time: 100000, offset: 't' });
|
}
|
},
|
complete: function (XHR, TS) { XHR = null },//回收资源
|
error: function () {
|
layer.close(ajaxLoad);
|
layer.alert("发生错误!", { icon: 5 });
|
}
|
});
|
}
|
//#endregion
|
|
//#region 子表初始化
|
function set_InitGrid() {
|
option = {
|
elem: '#mainTable'
|
, toolbar: '#toolbarDemo'
|
, totalRow: true
|
, limit: 500
|
, height: 500
|
, loading: false
|
, cols: [[
|
{ type: 'checkbox', totalRowText: '合计行' }
|
, { type: 'numbers', title: '序号', width: 100 }
|
, { field: 'HEmpID', title: 'HEmpID', width: 100, hide: true, style: 'background-color:#efefef4d;' }
|
, { field: 'HEmpNumber', title: '职员代码', width: 100, edit: 'text', event: "HEmpNumber" } //F7
|
, { field: 'HEmpName', title: '职员名称', width: 100, style: 'background-color:#efefef4d;' }
|
, { field: 'HEmpRate', title: '职员系数', width: 100, edit: 'text' }
|
, { field: 'HAMTimes', title: '上午工时', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HPMTimes', title: '下午工时', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HBaseTimes', title: '基本工时', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HBaseDays', title: '基本天数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOverTimes', title: '加班工时', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOverDays', title: '加班天数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HLeaveTimes', title: '请假工时', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HLeaveDays', title: '请假天数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HLateQty', title: '迟到次数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HLateTimes', title: '迟到时间', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HEarlyQty', title: '早退次数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HEarlyTimes', title: '早退时间', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOutForEmpQty', title: '私出次数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOutForEmpTimes', title: '私出时间', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOutForComQty', title: '公出次数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HOutForComTimes', title: '公出时间', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HAbsentDays', title: '旷工天数', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HRestFlag', title: '厂休', templet: "#HRestFlag" } //checkbox
|
, { field: 'HSchClassID', title: 'HSchClassID', width: 100, hide: true, style: 'background-color:#efefef4d;' }
|
, { field: 'HSchClassNumber', title: '班次代码', width: 100, edit: 'text', event: "HSchClassNumber" } //F7
|
, { field: 'HSchClassName', title: '班次名称', width: 100, style: 'background-color:#efefef4d;' }
|
, { field: 'HNeedTimes', title: '应上班工时', width: 100, edit: 'text' }
|
, { field: 'HCTPrjID', title: 'HCTPrjID', width: 100, hide: true, style: 'background-color:#efefef4d;' }
|
, { field: 'HCTPrjNumber', title: '核算方案代码', width: 100, edit: 'text', event: "HCTPrjNumber" } //F7
|
, { field: 'HCTPrjName', title: '核算方案名称', width: 100, style: 'background-color:#efefef4d;' }
|
, { field: 'HWorkTypeID', title: 'HWorkTypeID', width: 100, hide: true, style: 'background-color:#efefef4d;' }
|
, { field: 'HWorkTypeNumber', title: '工种代码', width: 100, edit: 'text', event: "HWorkTypeNumber" } //F7
|
, { field: 'HWorkTypeName', title: '工种名称', width: 100, style: 'background-color:#efefef4d;' }
|
, { field: 'HPayMoney', title: '小时工资', width: 100, edit: 'text' }
|
, { field: 'HMoney', title: '工资', width: 100, edit: 'text', totalRow: true }
|
, { field: 'HRemark', title: '备注', width: 100, edit: 'text' }
|
, { fixed: 'right', title: '操作', toolbar: '#barDemo', width: 70 }
|
]]
|
}
|
|
var rowdata = [{
|
"HEmpID": "0"
|
, "HEmpNumber": ""
|
, "HEmpName": ""
|
, "HEmpRate": "0"
|
, "HPMTimes": "0"
|
, "HAMTimes": "0"
|
, "HBaseTimes": "0"
|
, "HBaseDays": "0"
|
, "HOverTimes": "0"
|
, "HOverDays": "0"
|
, "HLeaveTimes": "0"
|
, "HLeaveDays": "0"
|
, "HLateQty": "0"
|
, "HLateTimes": "0"
|
, "HEarlyQty": "0"
|
, "HEarlyTimes": "0"
|
, "HOutForEmpQty": "0"
|
, "HOutForEmpTimes": "0"
|
, "HOutForComQty": "0"
|
, "HOutForComTimes": "0"
|
, "HAbsentDays": "0"
|
, "HRestFlag": false
|
, "HSchClassID": "0"
|
, "HSchClassNumber": ""
|
, "HSchClassName": ""
|
, "HNeedTimes": "0"
|
, "HCTPrjID": "0"
|
, "HCTPrjNumber": ""
|
, "HCTPrjName": ""
|
, "HWorkTypeID": "0"
|
, "HWorkTypeNumber": ""
|
, "HWorkTypeName": ""
|
, "HPayMoney": "0"
|
, "HMoney": "0"
|
, "HRemark": ""
|
}];
|
|
option.data = rowdata;
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
}
|
//#endregion
|
|
//#region 选择弹窗事件
|
//#region 选择部门按钮
|
form.on('submit(HDeptList)', function () {
|
get_checkDept();
|
});
|
//#endregion
|
|
//#region 选择班组按钮
|
form.on('submit(HGroupList)', function () {
|
get_checkGroup();
|
});
|
//#endregion
|
|
//#region 弹窗选择方法
|
//#region 选择部门
|
function get_checkDept() {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "部门列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/公用基础资料/Gy_DepartmentList.html', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
$("#HDeptName").val(checkStatus.data[0].部门名称);
|
$("#HDeptID").val(checkStatus.data[0].HItemID);
|
layer.close(index); //关闭弹窗 它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
|
}
|
, btn2: function (index, layero) { }
|
})
|
}
|
//#endregion
|
|
//#region 选择班组
|
function get_checkGroup() {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "班组列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/工资基础资料/Gy_Group.html?Type=HGroup', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
$("#HGroupName").val(checkStatus.data[0].班组名称);
|
$("#HGroupID").val(checkStatus.data[0].HItemID);
|
|
var sSubStr = table.cache['mainTable'];
|
if (parseFloat(sSubStr[0].HEmpID) > 0) {
|
layer.confirm('列表中已经存在职员,是否要覆盖?', { icon: 3, title: '提示' }, function (index) {
|
set_InitGrid(); //初始化子表
|
GetEmployee(); //根据班组返回职员信息
|
layer.close(index); //关闭弹窗 它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
|
});
|
}
|
else {
|
GetEmployee();
|
}
|
layer.close(index); //关闭弹窗 它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
|
}
|
, btn2: function (index, layero) { }
|
, end: function () {
|
var sSubStr = table.cache['mainTable'];
|
if (parseFloat(sSubStr[0].HEmpID) > 0) {
|
layer.confirm('列表中已经存在职员,是否要覆盖?', { icon: 3, title: '提示' }, function (index) {
|
set_InitGrid(); //初始化子表
|
GetEmployee(); //根据班组返回职员信息
|
layer.close(index); //关闭弹窗 它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
|
});
|
}
|
else {
|
GetEmployee();
|
}
|
}
|
})
|
}
|
|
function GetEmployee() {
|
$.ajax({
|
type: "GET",
|
url: GetWEBURL() + "/Gy_EmployeeController/GetEmpInfoByGroup_Json",
|
async: false, //async用于控制(false)同步和(true)异步,默认的是true,即请求默认的是异步请求
|
data: { "HGroupID": $('#HGroupID').val() },
|
success: function (result) {
|
if (result.count == 1) {
|
//子表 赋值
|
var rowdata = [];
|
for (let i = 0; i < result.data.length; i++) {
|
rowdata.push(
|
{
|
"HEmpID": result.data[i].HItemID
|
, "HEmpNumber": result.data[i].职员代码
|
, "HEmpName": result.data[i].职员名称
|
, "HEmpRate": result.data[i].HEmpRate
|
, "HPMTimes": "0"
|
, "HAMTimes": "0"
|
, "HBaseTimes": "0"
|
, "HBaseDays": "0"
|
, "HOverTimes": "0"
|
, "HOverDays": "0"
|
, "HLeaveTimes": "0"
|
, "HLeaveDays": "0"
|
, "HLateQty": "0"
|
, "HLateTimes": "0"
|
, "HEarlyQty": "0"
|
, "HEarlyTimes": "0"
|
, "HOutForEmpQty": "0"
|
, "HOutForEmpTimes": "0"
|
, "HOutForComQty": "0"
|
, "HOutForComTimes": "0"
|
, "HAbsentDays": "0"
|
, "HRestFlag": false
|
, "HSchClassID": "0"
|
, "HSchClassNumber": ""
|
, "HSchClassName": ""
|
, "HNeedTimes": "0"
|
, 'HCTPrjID': result.data[i].HCTPrjID
|
, 'HCTPrjNumber': result.data[i].HCTPrjNumber
|
, 'HCTPrjName': result.data[i].HCTPrjName
|
, 'HWorkTypeID': result.data[i].HWorkTypeID
|
, 'HWorkTypeNumber': result.data[i].HWorkTypeNumber
|
, 'HWorkTypeName': result.data[i].HWorkTypeName
|
, 'HPayMoney': result.data[i].HPayMoney == null ? 0 : result.data[i].HPayMoney
|
, "HMoney": "0"
|
, "HRemark": ""
|
}
|
)
|
}
|
option.data = rowdata;
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
}
|
else {
|
layer.msg(result.Message, { icon: 0, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
}
|
},
|
complete: function (XHR, TS) { XHR = null }//回收资源
|
});
|
}
|
//#endregion
|
|
//#endregion
|
|
//#endregion
|
|
//#region 子表相关监听
|
|
//#region 头工具栏事件
|
table.on('toolbar(mainTable)', function (obj) {
|
var checkStatus = table.checkStatus('mainTable')
|
, data = checkStatus.data;
|
//新增行表格数据
|
var NewRow = {
|
"HEmpID": "0"
|
, "HEmpNumber": ""
|
, "HEmpName": ""
|
, "HEmpRate": "0"
|
, "HPMTimes": "0"
|
, "HAMTimes": "0"
|
, "HBaseTimes": "0"
|
, "HBaseDays": "0"
|
, "HOverTimes": "0"
|
, "HOverDays": "0"
|
, "HLeaveTimes": "0"
|
, "HLeaveDays": "0"
|
, "HLateQty": "0"
|
, "HLateTimes": "0"
|
, "HEarlyQty": "0"
|
, "HEarlyTimes": "0"
|
, "HOutForEmpQty": "0"
|
, "HOutForEmpTimes": "0"
|
, "HOutForComQty": "0"
|
, "HOutForComTimes": "0"
|
, "HAbsentDays": "0"
|
, "HRestFlag": false
|
, "HSchClassID": "0"
|
, "HSchClassNumber": ""
|
, "HSchClassName": ""
|
, "HNeedTimes": "0"
|
, "HCTPrjID": "0"
|
, "HCTPrjNumber": ""
|
, "HCTPrjName": ""
|
, "HWorkTypeID": "0"
|
, "HWorkTypeNumber": ""
|
, "HWorkTypeName": ""
|
, "HPayMoney": "0"
|
, "HMoney": "0"
|
, "HRemark": ""
|
};
|
|
switch (obj.event) {
|
//增加一行
|
case 'btn_AddLine': btnAddLine(NewRow);
|
break;
|
//指定位置下插入一行
|
case 'btn_InsertLine': btnInsertLine(NewRow)
|
break;
|
//复制一行
|
case 'btn_CopyLine': btnCopyLine(data);
|
break;
|
//上移
|
case 'btn_Up': btn_up();
|
break;
|
//下移
|
case 'btn_Under': btn_under();
|
break;
|
//列设置
|
case 'btn_HideColumn': get_HideColumn();
|
break;
|
}
|
});
|
//#endregion
|
|
//#region 在末尾增加一行
|
function btnAddLine(NewRow) {
|
table.cache["mainTable"].push(NewRow);
|
option.data = table.cache["mainTable"];
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
}
|
//#endregion
|
|
//#region 在指定行下插入一行
|
function btnInsertLine(NewRow) {
|
var checkStatus = table.checkStatus('mainTable')
|
, data = checkStatus.data;
|
if (checkStatus.data.length === 1) {
|
var tables = []; //存储插入一行后的表格数据
|
//获取表格的全部行
|
var rowList = table.cache['mainTable'];
|
for (var i = 0; i < rowList.length; i++) { //遍历表格的行
|
tables.push(option.data[i]);
|
if (rowList[i].LAY_CHECKED == true) { //获取选中行的位置
|
tables.push(NewRow);
|
}
|
}
|
option.data = tables;
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
} else {
|
layer.msg('请选择一行数据编辑!');
|
}
|
}
|
//#endregion
|
|
//#region 复制一行
|
function btnCopyLine(data) {
|
var copydata = JSON.stringify(data);
|
if (data.length <= 0) {
|
layer.msg("请选择需要复制的一行!");
|
}
|
else if (data.length > 1) {
|
layer.msg("只能选择复制一行!");
|
}
|
else {
|
var copydata2 = copydata.substring(1, copydata.length);//去除首行字符'['
|
var copyrow = copydata2.substring(0, copydata2.length - 1);//去除末尾字符']'
|
table.cache["mainTable"].push(JSON.parse(copyrow));//将复制的行强转成json追加到表格上
|
option.data = table.cache["mainTable"];//将数据绑定到data上
|
table.render(option);//将数据渲染到表格上
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
}
|
}
|
//#endregion
|
|
//#region 上移
|
function btn_up() {
|
var checkStatus = table.checkStatus('mainTable')
|
, data = checkStatus.data;
|
if (data.length == 1) {
|
var tables = [];
|
//获取表格的全部行
|
var rowList = table.cache['mainTable'];
|
for (var i = 0; i < rowList.length; i++) { //遍历表格的行
|
if (rowList[i].LAY_CHECKED == true) { //获取选中行的位置
|
//如果是第一行上移,则失败并提醒
|
if (i == 0) {
|
layer.msg("第一行数据无法上移!");
|
return;
|
}
|
tables.push(option.data[i - 1]);
|
data[0].LAY_CHECKED = true;
|
option.data[i - 1] = data[0];
|
option.data[i] = tables[0];
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
break;
|
}
|
}
|
} else {
|
layer.msg("请选择一行数据!");
|
}
|
}
|
//#endregion
|
|
//#region 下移
|
function btn_under() {
|
var checkStatus = table.checkStatus('mainTable')
|
, data = checkStatus.data;
|
if (data.length == 1) {
|
var tables = [];
|
//获取表格的全部行
|
var rowList = table.cache['mainTable'];
|
for (var i = 0; i < rowList.length; i++) { //遍历表格的行
|
if (rowList[i].LAY_CHECKED == true) { //获取选中行的位置
|
//如果是最后一行下移,则失败并提醒
|
if (i == option.data.length - 1) {
|
layer.msg("最后一行数据无法下移!");
|
return;
|
}
|
tables.push(option.data[i + 1]);
|
data[0].LAY_CHECKED = true;
|
option.data[i + 1] = data[0];
|
option.data[i] = tables[0];
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
break;
|
}
|
}
|
} else {
|
layer.msg("请选择一行数据!");
|
}
|
}
|
//#endregion
|
|
//#region 列设置
|
function get_HideColumn() {
|
var colName = "";
|
var contentUrl = "";
|
for (var i = 1; i < option.cols[0].length; i++) {
|
colName += option.cols[0][i]["title"] + ",";
|
}
|
var urlStr = window.document.location.pathname;//获取文件路径
|
var urlLen = urlStr.split('/');
|
for (var i = 0; i < urlLen.length - 4; i++) {
|
contentUrl += "../";
|
}
|
colName = encodeURI(colName.substring(0, colName.length - 1));//对 URI 进行编码
|
|
contentUrl += '基础资料/隐藏列设置/Gy_GridView_Hide.html?HModName=' + HModName + '&colName=' + colName;
|
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "隐藏列设置" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["50%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: [contentUrl, "yes"]
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//刷新表格数据
|
DisPlay_HideColumn();
|
//更新表格缓存的数据
|
layer.close(index);//关闭弹窗
|
}
|
})
|
}
|
//#endregion
|
|
//#region 显示列数据
|
function DisPlay_HideColumn() {
|
$.ajax({
|
type: "GET",
|
url: GetWEBURL() + '/Xt_grdAlignment_WMES/grdAlignmentWMESList',
|
async: false,
|
data: { "HModName": HModName, "user": HMaker },
|
success: function (data1) {
|
if (data1.data.length != 0) {
|
var dataCol = [];//数据库查询出的列数据
|
dataCol = data1.data[0].HGridString.split(',');
|
|
for (var i = 0; i < option.cols[0].length - 2; i++) {
|
if (dataCol[i]) {
|
var dataCols = dataCol[i].split('|');
|
}
|
//隐藏列
|
if (dataCols[1] == 1) {
|
option.cols[0][i + 1]["hide"] = true;
|
}
|
//设置列宽
|
if (dataCols[3] > 0) {
|
option.cols[0][i + 1]["width"] = dataCols[3];
|
}
|
//设置内容字体大小
|
if (data1.data[0].HFontSize != 0) {
|
option.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
|
} else {
|
option.cols[0][i + 1]["style"] = "font-size:100%";
|
}
|
//显示列
|
if (dataCols[1] == 0 && $.inArray(option.cols[0][i + 1]["title"], titleData) == -1) {
|
option.cols[0][i + 1]["hide"] = false;
|
}
|
//字体所在位置(左 居中 右)
|
switch (dataCols[2]) {
|
case "L":
|
option.cols[0][i + 1]["align"] = "left";
|
break;
|
case "M":
|
option.cols[0][i + 1]["align"] = "center";
|
break;
|
case "R":
|
option.cols[0][i + 1]["align"] = "right";
|
break;
|
}
|
}
|
|
//取消冻结列
|
for (var i = 1; i < option.cols[0].length - 1; i++) {
|
if (option.cols[0][i]["fixed"] != null) {
|
option.cols[0][i]["fixed"] = null;
|
}
|
else {
|
break;
|
}
|
}
|
//冻结列
|
if (data1.data[0].HFixCols != 0) {
|
for (var i = 0; i < data1.data[0].HFixCols; i++) {
|
if ($.inArray(option.cols[0][i + 1]["title"], titleData) != -1) {
|
data1.data[0].HFixCols += 1;
|
}
|
option.cols[0][i + 1]["fixed"] = "left";
|
}
|
}
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
} else {
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
}
|
|
//刷新按钮显示
|
var btns = document.getElementsByTagName("button"); //获取本页所有按钮对象
|
Display_HideButton(btns, HBillType, HModName, HMaker);
|
|
},
|
complete: function (XHR, TS) { XHR = null },//回收资源
|
error: function () {
|
layer.alert("接口请求失败!", { icon: 5 });
|
}
|
})
|
}
|
//#endregion
|
|
//#region 厂休标记
|
form.on('checkbox(HRestFlag)', function (data) {
|
//获取下拉框选中的值
|
var elem = data.othis.parents('tr');
|
var dataindex = elem.attr("data-index");
|
$.each(option.data, function (index, value) {
|
if (value.LAY_TABLE_INDEX == dataindex) {
|
value.HRestFlag = data.elem.checked;//把选中下拉框id值赋值给表格缓存
|
}
|
});
|
});
|
//#endregion
|
|
//#region 行内事件
|
table.on('tool(mainTable)', function (obj) {
|
set_GridDelete(obj); //行内删除
|
set_GridCellCheck(obj); //行内快捷键筛选
|
|
var data = obj.data;
|
if (obj.event == 'HDate') {
|
var field = $(this).data('field');
|
laydate.render({
|
elem: this.firstChild
|
, show: true //直接显示
|
, closeStop: this
|
, done: function (nowDate) {
|
//时间选择完成,行数据更新
|
data[field] = nowDate;
|
obj.update(data);
|
//刷新复选框
|
//checkRefresh();
|
}
|
});
|
}
|
});
|
//#endregion
|
|
//#region 行内删除
|
function set_GridDelete(obj) {
|
var data = obj.data;
|
var rowIndex = $(obj.tr).attr("data-index");
|
if (obj.event === 'del') {
|
layer.confirm('真的删除行吗?', function (index) {
|
console.log("索引为:" + rowIndex);
|
if (rowIndex === '0') {
|
layer.msg('首行无法删除!!!');
|
} else {
|
obj.del();
|
option.data = table.cache["mainTable"];//将数据绑定到data上
|
table.reload(option);
|
layer.close(index);
|
}
|
});
|
}
|
}
|
//#endregion
|
|
//#region 行内快捷键筛选
|
function set_GridCellCheck(obj) {
|
$(document).off('keydown', ".layui-table-edit").on('keydown', '.layui-table-edit', function (e) {
|
if (event.key == "F7") {
|
//职员
|
if (obj.event == "HEmpNumber") {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "职员列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/公用基础资料/Gy_EmployeeList.html?Type=HEmpList', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
OptionData = checkStatus.data[0];
|
layer.close(index);//关闭弹窗
|
}
|
, end: function () {
|
//更新表格缓存的数据
|
obj.update({
|
"HEmpID": OptionData.HItemID
|
, "HEmpNumber": OptionData.职员代码
|
, "HEmpName": OptionData.职员名称
|
, "HEmpRate": OptionData.HEmpRate
|
, "HCTPrjID": OptionData.HCTPrjID
|
, "HCTPrjNumber": OptionData.HCTPrjNumber
|
, "HCTPrjName": OptionData.HCTPrjName
|
, "HWorkTypeID": OptionData.HWorkTypeID
|
, "HWorkTypeNumber": OptionData.HWorkTypeNumber
|
, "HWorkTypeName": OptionData.HWorkTypeName
|
, "HPayMoney": OptionData.HPayMoney == null ? 0 : OptionData.HPayMoney
|
})
|
}
|
})
|
}
|
//班次
|
if (obj.event == "HSchClassNumber") {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "班次列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/生产基础资料/Gy_ShiftsList.html?Type=HShiftsList&OperationType=2', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
OptionData = checkStatus.data[0];
|
layer.close(index);//关闭弹窗
|
}
|
, end: function () {
|
//更新表格缓存的数据
|
obj.update({
|
"HSchClassID": OptionData.HItemID
|
, "HSchClassNumber": OptionData.班次代码
|
, "HSchClassName": OptionData.班次名称
|
})
|
}
|
})
|
}
|
//核算方案
|
if (obj.event == "HCTPrjNumber") {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "核算方案列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/工资基础资料/Gy_ClassTimePrjList.html?Type=HClassTimePrjList&OperationType=2', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
OptionData = checkStatus.data[0];
|
layer.close(index);//关闭弹窗
|
}
|
, end: function () {
|
//更新表格缓存的数据
|
obj.update({
|
"HCTPrjID": OptionData.HItemID
|
, "HCTPrjNumber": OptionData.核算方式代码
|
, "HCTPrjName": OptionData.核算方式名称
|
})
|
}
|
})
|
}
|
//工种
|
if (obj.event == "HWorkTypeNumber") {
|
layer.open({
|
type: 2
|
, skin: "layui-layer-rim" //加上边框
|
, title: "工种列表" //标题
|
, closeBtn: 1 //窗体右上角关闭 的 样式
|
, shift: 2 //弹出动画
|
, area: ["90%", "90%"] //窗体大小
|
, maxmin: true //设置最大最小按钮是否显示
|
, content: ['../../基础资料/工资基础资料/Gy_WorkTypeList.html?Type=HWorkTypeList&OperationType=2', 'yes']
|
, btn: ["确定", "取消"]
|
, btn1: function (index, laero) {
|
//按钮一 的回调
|
var iframeWindow = window["layui-layer-iframe" + index]; //获取弹框页面
|
var checkStatus = iframeWindow.layui.table.checkStatus("mainTable"); //获取选中的数据
|
|
if (checkStatus.data.length != 1) {
|
return layer.msg("请选择一条数据");
|
}
|
OptionData = checkStatus.data[0];
|
layer.close(index);//关闭弹窗
|
}
|
, end: function () {
|
//更新表格缓存的数据
|
obj.update({
|
"HWorkTypeID": OptionData.HItemID
|
, "HWorkTypeNumber": OptionData.工种代码
|
, "HWorkTypeName": OptionData.工种名称
|
, "HPayMoney": OptionData.小时工资
|
})
|
}
|
})
|
}
|
obj.event = "";
|
return false;
|
}
|
})
|
}
|
//#endregion
|
|
//#region 监听单元格编辑 单元格编辑后 变更
|
table.on('edit(mainTable)', function (obj) {
|
//数值格式校验工具
|
var ref = /^\d+(\.\d+)?$/; //非负数正则表达式
|
var temp = "";
|
|
// 单元格编辑之前的值
|
var oldText = $(this).prev().text();
|
var value = obj.value //得到修改后的值
|
, data = obj.data //得到所在行所有键值
|
, field = obj.field; //得到字段
|
//layer.msg('[ID: ' + data.id + '] ' + field + ' 字段更改为:' + value);
|
|
switch (field) {
|
case "HAMTimes": //上午工时
|
//数据格式校验
|
temp = value + "";
|
if (!ref.test(temp) || temp == 0) {
|
//恢复数据到编辑前
|
obj.update({
|
HAMTimes: oldText
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
|
layer.msg("所输入值必须为大于0的数字!");
|
return;
|
}
|
|
//数据校验合格,重算记录
|
var HAMTimes = isNaN(value) ? 0 : value; //上午工时
|
var HPMTimes = isNaN(obj.data.HPMTimes) ? 0 : obj.data.HPMTimes; //下午工时
|
var HBaseTimes = Number(HPMTimes) + Number(HAMTimes); //基本工时=上午工时+下午工时
|
var HPayMoney = isNaN(obj.data.HPayMoney) ? 0 : obj.data.HPayMoney; //小时工资
|
var HMoney = HPayMoney * HBaseTimes; //工资=小时工资*基本工时
|
|
//同步更新表格和缓存对应的值
|
obj.update({
|
HAMTimes: HAMTimes
|
, HBaseTimes: HBaseTimes
|
, HMoney: HMoney
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
break;
|
case "HPMTimes": //下午工时
|
//数据格式校验
|
temp = value + "";
|
if (!ref.test(temp) || temp == 0) {
|
//恢复数据到编辑前
|
obj.update({
|
HPMTimes: oldText
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
|
layer.msg("所输入值必须为大于0的数字!");
|
return;
|
}
|
|
//数据校验合格,重算记录
|
var HPMTimes = isNaN(value) ? 0 : value; //下午工时
|
var HAMTimes = isNaN(obj.data.HAMTimes) ? 0 : obj.data.HAMTimes; //上午工时
|
var HBaseTimes = Number(HPMTimes) + Number(HAMTimes); //基本工时=上午工时+下午工时
|
var HPayMoney = isNaN(obj.data.HPayMoney) ? 0 : obj.data.HPayMoney; //小时工资
|
var HMoney = HPayMoney * HBaseTimes; //工资=小时工资*基本工时
|
|
//同步更新表格和缓存对应的值
|
obj.update({
|
HPMTimes: HPMTimes
|
, HBaseTimes: HBaseTimes
|
, HMoney: HMoney
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
break;
|
case "HPayMoney": //小时工资
|
//数据格式校验
|
temp = value + "";
|
if (!ref.test(temp) || temp == 0) {
|
//恢复数据到编辑前
|
obj.update({
|
HPayMoney: oldText
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
|
layer.msg("所输入值必须为大于0的数字!");
|
return;
|
}
|
|
//数据校验合格,重算记录
|
var HPayMoney = isNaN(value) ? 0 : value; //小时工资
|
var HBaseTimes = isNaN(obj.data.HBaseTimes) ? 0 : obj.data.HBaseTimes; //基本工时
|
var HMoney = HPayMoney * HBaseTimes; //工资=小时工资*基本工时
|
|
//同步更新表格和缓存对应的值
|
obj.update({
|
HPayMoney: HPayMoney
|
, HMoney: HMoney
|
});
|
table.render(option);
|
//刷新设置复选框状态
|
CheckedSet_tableSub();
|
break;
|
default:
|
}
|
});
|
//#endregion
|
|
//#endregion
|
|
//#region 功能控件
|
|
//#region 提交
|
form.on('submit(btn_Save)', function (data) {
|
set_SaveBill(data);
|
});
|
|
//#region 保存方法
|
function set_SaveBill(data) {
|
//获取子表数据
|
var num = [];
|
for (var i = 0; i < table.cache["mainTable"].length; i++) {
|
if (table.cache["mainTable"][i] != "") {
|
table.cache["mainTable"][i].LAY_TABLE_INDEX = i;
|
num.push(table.cache["mainTable"][i])
|
}
|
}
|
//获取表头数据并序列化
|
var sMainStr = JSON.stringify(data.field); //主表数据
|
//子表数据序列化
|
var sSubStr = JSON.stringify(num);
|
//拼接序列化的数据
|
var sMainSub = sMainStr + ';' + sSubStr + ';' + OperationType + ";" + HMaker;
|
|
if (!AllowLoadData(sSubStr))//数据验证
|
{
|
return false;
|
}
|
var index = layer.load();
|
$.ajax({
|
type: "POST",
|
url: GetWEBURL() + "Pay_WorkTimesBillController/GetPay_WorkTimesBill_Save_Json",
|
async: false, //async用于控制(false)同步和(true)异步,默认的是true,即请求默认的是异步请求
|
data: { "sMainSub": sMainSub },
|
dataType: "json",
|
success: function (data) {
|
if (data.count == 1) {
|
layer.msg(data.Message, { icon: 1 });
|
$('#btn_Save').addClass("layui-btn-disabled").attr("disabled", true);
|
layer.close(index);
|
}
|
else {
|
layer.msg(data.Message, { icon: 2, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
layer.close(index);
|
}
|
},
|
complete: function (XHR, TS) { XHR = null },//回收资源
|
error: function (err) {
|
layer.msg('错误' + err, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
layer.close(index);
|
}
|
});
|
}
|
//#endregion
|
|
//#endregion
|
|
//#region 退出
|
form.on('submit(btn_Cancel)', function () {
|
layer.confirm('您确定要退出吗?', { icon: 3, title: '提示' }, function (index) {
|
//操作类型(OperationType=1新增、OperationType=2编辑)
|
if (OperationType == 2) {
|
Pub_Close(1);
|
}
|
else {
|
Pub_Close(2);
|
}
|
});
|
})
|
//#endregion
|
|
//#endregion
|
|
//#region 刷新设置复选框状态
|
function CheckedSet_tableSub() {
|
var tableSub = option.data;
|
//对子表中的复选框进行选中
|
for (var i = 0; i < tableSub.length; i++) {
|
if (tableSub[i].HRestFlag) {
|
$('#HRestFlag' + (i + 1)).attr("checked", true);
|
}
|
}
|
form.render('checkbox');
|
}
|
//#endregion
|
|
});
|
|
//以上为layui模块
|
//此处方法涉及到被外部页面parent.方法名调用的必须放在Layui方法外部
|
|
//双击返回基础资料数据 表头
|
function GetHDeptNameValue(obj) //返回部门
|
{
|
$("#HDeptName").val(obj[0].部门名称);
|
$("#HDeptID").val(obj[0].HItemID);
|
}
|
function GetHGroupValue(obj) //返回班组
|
{
|
$("#HGroupName").val(obj[0].班组名称);
|
$("#HGroupID").val(obj[0].HItemID);
|
$("#HDeptID").val(obj[0].HDeptID);//部门代码
|
$("#HDeptName").val(obj[0].部门名称);//部门名称
|
}
|
//双击返回基础资料数据 列表
|
function GetHEmpListValue(data) //返回职员
|
{
|
OptionData = data
|
}
|
function GetHShiftsListValue(data) //返回班次
|
{
|
OptionData = data
|
}
|
function GetHClassTimePrjListValue(data) //返回核算方案
|
{
|
OptionData = data
|
}
|
function GetHWorkTypeListValue(data) //返回工种
|
{
|
OptionData = data
|
}
|
|
//单据上传前判断
|
function AllowLoadData(sSubStr) { //非空验证
|
var Result = true;
|
if ($("#HGroupID").val() == '0') {
|
layer.msg("班组没有选择", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
return Result = false;
|
}
|
if ($("#HDeptID").val() == '0') {
|
layer.msg("部门没有选择", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
return Result = false;
|
}
|
if (typeof (sSubStr) == "undefined") {
|
layer.msg("没有明细记录", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
return Result = false;
|
}
|
if (typeof (sSubStr) != "undefined" && typeof (sSubStr) != "") {
|
sSubStr = JSON.parse(sSubStr);
|
for (var i = 0; i <= sSubStr.length - 1; i++) {
|
if (sSubStr[i].HEmpID == "0") {
|
layer.msg("明细记录第" + (i + 1) + "行,职员信息为空!", { icon: 5, btn: ['确认'], time: 2000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
|
return Result = false;
|
}
|
}
|
}
|
else {
|
return Result;
|
}
|
return Result;
|
|
}
|
</script>
|
</body>
|
</html>
|