定额申请单:添加子表重复校验,子表做颜色区分,子表单元格根据宽度隐藏内容,取消分页,添加合计行,根据物料、工序、资源带出原工价,取消上一行下一行
2个文件已修改
270 ■■■■ 已修改文件
WebTM/Properties/PublishProfiles/JFTM.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/工资管理/定额申请/Pay_ProcPriceRequestBill.html 268 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/Properties/PublishProfiles/JFTM.pubxml.user
@@ -2670,7 +2670,7 @@
      <publishTime>04/11/2023 16:34:43</publishTime>
    </File>
    <File Include="views/工资管理/定额申请/Pay_ProcPriceRequestBill.html">
      <publishTime>07/25/2023 15:25:28</publishTime>
      <publishTime>08/10/2023 15:51:10</publishTime>
    </File>
    <File Include="views/工资管理/定额申请/Pay_ProcPriceRequestBillList.html">
      <publishTime>07/24/2023 14:56:05</publishTime>
WebTM/views/¹¤×ʹÜÀí/¶¨¶îÉêÇë/Pay_ProcPriceRequestBill.html
@@ -14,7 +14,7 @@
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <style>
    <!--<style>
        .main-btn { /*头部主按钮*/
            padding: 0 2px; /*调整按钮左右空隙大小*/
            height: 30px;
@@ -44,7 +44,7 @@
        .layui-form-label {
            width: 25%;
        }
    </style>
    </style>-->
</head>
<body>
@@ -75,14 +75,14 @@
                                <div class="layui-form-item" style="padding-top: 10px;">
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">单据号</label>
                                            <label class="layui-form-label" style="width: 85px;">单据号<label style="color:red"> * </label></label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HBillNo" lay-verify="HBillNo" id="HBillNo" style="background-color:#efefef4d;" readonly>
                                                <input type="hidden" name="HInterID" id="HInterID" lay-verify="HInterID">
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">日期</label>
                                            <label class="layui-form-label" style="width: 85px;">日期<label style="color:red"> * </label></label>
                                            <div class="layui-input-block" style="margin-left: 120px; width:180px;">
                                                <input type="date" class="layui-input" lay-verify="HDate" name="HDate" id="HDate" style="padding-left: 80px;">
                                            </div>
@@ -96,7 +96,7 @@
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">申请部门</label>
                                            <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">申请部门<label style="color:red"> * </label></label>
                                            <div class="layui-input-block" style="margin-left: 77px;">
                                                <input type="text" class="layui-input" lay-verify="HDeptName" name="HDeptName" id="HDeptName" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                                                <input type="hidden" name="HDeptID" id="HDeptID" lay-verify="HDeptID" value="0">
@@ -224,8 +224,8 @@
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-AddLine"><i class="layui-icon layui-icon-form"></i>增加一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-CopyLine"><i class="layui-icon layui-icon-form"></i>复制一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn"><i class="layui-icon layui-icon-form"></i>列设置</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn_up"><i class="layui-icon layui-icon-form"></i>上一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn_under"><i class="layui-icon layui-icon-form"></i>下一行</button>
                            <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn_up"><i class="layui-icon layui-icon-form"></i>上一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn_under"><i class="layui-icon layui-icon-form"></i>下一行</button>-->
                        </div>
                    </script>
                </form>
@@ -335,9 +335,9 @@
            //#region æ“ä½œæŒ‰é’®è§¦å‘事件
            //#region ä¿å­˜æäº¤
            form.on('submit(btnSave)', function (data) {//提交
                //if (AllowLoadData(data)) {
                if (AllowLoadData(data)) {
                    set_AddNew(data);
                //}
                }
            });
            //#endregion
@@ -573,41 +573,39 @@
                option = {
                    elem: '#mainTable'
                    , toolbar: '#toolbarDemo'
                    , page: true
                    , limit: 500
                    , limits: [50, 500, 5000, 50000]
                    , totalRow: true
                    , cellMinWidth: 120
                    , height: 400
                    , cols: [[
                        { type: 'checkbox', totalRowText: '合计行' }
                        , { type: 'numbers', title: '序号', totalRow: true }
                        , { field: 'RowID', title: '行号', hide: true }                                                   //行标识,用于下一行、上一行识别所在行
                        , { field: 'HMaterID', title: '物料ID', hide: true }
                        , { type: 'numbers', title: '序号', style: 'background-color: #f9f9f9;' }
                        , { field: 'RowID', title: '行号', hide: true, style: 'background-color: #f9f9f9;' }                                                   //行标识,用于下一行、上一行识别所在行
                        , { field: 'HMaterID', title: '物料ID', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HMaterNumber', title: '物料代码', edit: 'text', event: "HMaterNumber" }     //f7
                        , { field: 'HMaterName', title: '物料名称' }
                        , { field: 'HMaterModel', title: '规格型号' }
                        , { field: 'HProcID', title: '工序ID', hide: true }
                        , { field: 'HMaterName', title: '物料名称', style: 'background-color: #f9f9f9;' }
                        , { field: 'HMaterModel', title: '规格型号', style: 'background-color: #f9f9f9;' }
                        , { field: 'HProcID', title: '工序ID', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HProcNumber', title: '工序代码', edit: 'text', event: "HProcNumber" }     //f7
                        , { field: 'HProcName', title: '工序名称' }
                        , { field: 'HSourceID', title: '资源ID', hide: true }
                        , { field: 'HProcName', title: '工序名称', style: 'background-color: #f9f9f9;' }
                        , { field: 'HSourceID', title: '资源ID', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HSourceNumber', title: '资源代码', edit: 'text', event: "HSourceNumber" }     //f7
                        , { field: 'HSourceName', title: '资源名称' }
                        , { field: 'HOldPrice', title: '原单价'}
                        , { field: 'HSourceName', title: '资源名称', style: 'background-color: #f9f9f9;' }
                        , { field: 'HOldPrice', title: '原单价', style: 'background-color: #f9f9f9;'}
                        , { field: 'HPrice', title: '单价', edit: 'text' }
                        , { field: 'HOldFixPrice', title: '原小时定额' }
                        , { field: 'HOldFixPrice', title: '原小时定额', style: 'background-color: #f9f9f9;' }
                        , { field: 'HFixPrice', title: '小时定额', edit: 'text' }
                        , { field: 'HBeginDate', title: '开始日期', event: "HBeginDate" }
                        , { field: 'HEndDate', title: '结束日期', event: "HEndDate" }
                        , { field: 'HCostFlag', title: '成本默认标记', templet: "#HCostFlag" }
                        , { field: 'HRemark', title: '备注', edit: 'text' }
                        , { field: 'HSourceInterID', title: '源单主内码' }
                        , { field: 'HSourceEntryID', title: '源单子内码' }
                        , { field: 'HSourceBillNo', title: '源单单号' }
                        , { field: 'HSourceBillType', title: '源单类型' }
                        , { field: 'HRelationQty', title: '关联数量' }
                        , { field: 'HRelationMoney', title: '关联金额' }
                        , { field: 'HCloseMan', title: '行关闭人' }
                        , { field: 'HEntryCloseDate', title: '行关闭时间' }
                        , { field: 'HSourceInterID', title: '源单主内码', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HSourceEntryID', title: '源单子内码', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HSourceBillNo', title: '源单单号', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HSourceBillType', title: '源单类型', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HRelationQty', title: '关联数量', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HRelationMoney', title: '关联金额', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HCloseMan', title: '行关闭人', hide: true, style: 'background-color: #f9f9f9;' }
                        , { field: 'HEntryCloseDate', title: '行关闭时间', hide: true, style: 'background-color: #f9f9f9;' }
                        , { fixed: 'right', title: '操作', toolbar: '#barDemo' }
                    ]]
                }
@@ -895,24 +893,12 @@
                    layer.msg("单据号不能为空!");
                    return false;
                }
                if ($("#HInnerBillNo").val() == "") {
                    layer.msg("内部单据号不能为空!");
                if ($("#HDate").val() == "") {
                    layer.msg("日期不能为空!");
                    return false;
                }
                if ($("#HGroupName").val() == "") {
                    layer.msg("班组未选择!");
                    return false;
                }
                if ($("#HDeptName").val() == "") {
                if ($("#HDeptID").val() == "0") {
                    layer.msg("部门未选择!");
                    return false;
                }
                if ($("#HEmpName").val() == "") {
                    layer.msg("主管未选择!");
                    return false;
                }
                if ($("#HPayTypeName").val() == "") {
                    layer.msg("工资类型未选择!");
                    return false;
                }
                //#endregion
@@ -921,18 +907,18 @@
                var temp;                               //记录需要检验的属性的值,用于检验
                var ref = /^\d+(\.\d+)?$/;          //判断是否是非负浮点数
                var ref1 = /^\d+$/;            //判断是否是非负整数
                var value1 = ["HTimes", "HQty", "HPrice", "HPriceRate", "HSubsidyQty", "HSubsidyMoney", "HSubsidyTotal", "HDeuctTotal", "HPackQty", "HPackPrice", "HPackMoney", "HMoney"];  //子表需要进行浮点数验证的属性清单
                var value1_ = ["工时", "数量", "工价", "定额浮动比率", "补贴数量", "补贴金额", "补贴合计", "扣款小计", "包装数量", "包装单价", "包装金额", "金额"];  ////子表需要进行浮点数验证的属性清单对应的列名清单
                var value2 = ["HICMOInterID", "HProcReportInterID", "HProcReportEntryID", "HProcPlanInterID", "HProcPlanEntryID"];  //子表需要整数检验的属性清单
                var value2_ = ["生产任务单ID", "工序汇报单ID", "工序汇报单子ID", "工序计划单ID", "工序计划单子ID"]; //子表需要整数检验的属性清单对应的列名清单
                var value3 = ["HMaterNumber", "HProcNumber", "HEmpNumber", "HPackMaterName"];       //子表需要进行非空检验的属性清单
                var value3_ = ["物料", "工序", "职员", "包装方式"];                                 //子表需要进行非空检验的属性清单对应的列名清单
                var value1 = ["HOldPrice", "HPrice", "HOldFixPrice", "HFixPrice"];  //子表需要进行浮点数验证的属性清单
                var value1_ = ["原单价", "单价", "原小时定额", "小时定额"];  ////子表需要进行浮点数验证的属性清单对应的列名清单
                var value2 = [];  //子表需要整数检验的属性清单
                var value2_ = []; //子表需要整数检验的属性清单对应的列名清单
                var value3 = ["HMaterID", "HProcID", "HSourceID"];       //子表需要进行非空检验的属性清单
                var value3_ = ["物料", "工序", "资源"];                                 //子表需要进行非空检验的属性清单对应的列名清单
                for (var i = 0; i < option.data.length; i++) {
                    if (option.data[i] != "") {
                        //非空检验
                        for (var j = 0; j < value3.length; j++) {
                            temp = option.data[i][value3[j]] + "";
                            if (temp == "") {
                            if (temp == "0") {
                                layer.msg("第" + (i + 1) + "行:" + value3_[j] + "未选择!");
                                return false;
                            }
@@ -960,6 +946,18 @@
                            }
                        }
                    }
                }
                //#endregion
                //#region å­è¡¨å…³é”®å­—段重复检验
                var num = [];
                for (var i = 0; i < option.data.length; i++) {
                    temp = option.data[i]["HMaterID"] + "|" + option.data[i]["HProcID"] + "|" + option.data[i]["HSourceID"];
                    if ($.inArray(temp, num) != -1) {
                        layer.msg("第" + (i + 1) + "行:物料、工序、资源重复,请重新选择!");
                        return false;
                    }
                    num.push(temp);
                }
                //#endregion
                return true;
@@ -1060,13 +1058,29 @@
                                    if (checkStatus.data.length != 1) {
                                        return layer.msg("请选择一条数据");
                                    }
                                    //获取工价
                                    var HMaterID = checkStatus.data[0].HItemID;
                                    var HProcID = obj.data.hasOwnProperty("HProcID") ? obj.data.HProcID + "" : "0";
                                    var HSourceID = obj.data.hasOwnProperty("HSourceID") ? obj.data.HSourceID + "" : "0";
                                    var HOldPrice = subTable_GetHPrice(HMaterID, HProcID, HSourceID);
                                    if (HOldPrice != -1) {
                                    //更新表格缓存的数据
                                    obj.update({
                                        "HMaterID": checkStatus.data[0].HItemID
                                        , "HMaterNumber": checkStatus.data[0].HNumber
                                        , "HMaterName": checkStatus.data[0].HName
                                        , "HMaterModel": checkStatus.data[0].HModel
                                            , "HOldPrice": HOldPrice
                                    })
                                    } else {
                                        obj.update({
                                            "HMaterID": checkStatus.data[0].HItemID
                                            , "HMaterNumber": checkStatus.data[0].HNumber
                                            , "HMaterName": checkStatus.data[0].HName
                                            , "HMaterModel": checkStatus.data[0].HModel
                                        })
                                    }
                                    layer.close(index);//关闭弹窗
                                }
                            })
@@ -1092,12 +1106,27 @@
                                    if (checkStatus.data.length != 1) {
                                        return layer.msg("请选择一条数据");
                                    }
                                    //获取工价
                                    var HMaterID = obj.data.hasOwnProperty("HMaterID") ? obj.data.HMaterID + "" : "0";
                                    var HProcID = checkStatus.data[0].HItemID;
                                    var HSourceID = obj.data.hasOwnProperty("HSourceID") ? obj.data.HSourceID + "" : "0";
                                    var HOldPrice = subTable_GetHPrice(HMaterID, HProcID, HSourceID);
                                    //更新表格缓存的数据
                                    if (HOldPrice != -1) {
                                        obj.update({
                                            "HProcID": checkStatus.data[0].HItemID
                                            , "HProcNumber": checkStatus.data[0].工序代码
                                            , "HProcName": checkStatus.data[0].工序
                                            , "HOldPrice": HOldPrice
                                        })
                                    } else {
                                    obj.update({
                                        "HProcID": checkStatus.data[0].HItemID
                                        , "HProcNumber": checkStatus.data[0].工序代码
                                        , "HProcName": checkStatus.data[0].工序
                                    })
                                    }
                                    layer.close(index);//关闭弹窗
                                }
                            })
@@ -1123,12 +1152,27 @@
                                    if (checkStatus.data.length != 1) {
                                        return layer.msg("请选择一条数据");
                                    }
                                    //获取工价
                                    var HMaterID = obj.data.hasOwnProperty("HMaterID") ? obj.data.HMaterID + "" : "0";
                                    var HProcID = obj.data.hasOwnProperty("HProcID") ? obj.data.HProcID + "" : "0";
                                    var HSourceID = checkStatus.data[0].HItemID;
                                    var HOldPrice = subTable_GetHPrice(HMaterID, HProcID, HSourceID);
                                    //更新表格缓存的数据
                                    if (HOldPrice != -1) {
                                        obj.update({
                                            "HSourceID": checkStatus.data[0].HItemID
                                            , "HSourceNumber": checkStatus.data[0].生产资源代码
                                            , "HSourceName": checkStatus.data[0].生产资源名称
                                            , "HOldPrice": HOldPrice
                                        })
                                    } else {
                                    obj.update({
                                        "HSourceID": checkStatus.data[0].HItemID
                                        , "HSourceNumber": checkStatus.data[0].生产资源代码
                                        , "HSourceName": checkStatus.data[0].生产资源名称
                                    })
                                    }
                                    layer.close(index);//关闭弹窗
                                }
                            })
@@ -1138,83 +1182,6 @@
                    }
                })
                //#endregion
                //#region å¤±ç„¦è§¦å‘事件
                //$(document).off('change', ".layui-table-edit").on('change', '.layui-table-edit', function (e) {
                //    var fieldList = ["HQty", "HPrice", "HPriceRate", "HSubsidyQty", "HSubsidyTotal", "HDeuctTotal", "HPackQty", "HPackPrice"];  //绑定该事件的元素的event属性值清单
                //    if ($.inArray(obj.event, fieldList) >= 0) {
                //        //获取change后的新值
                //        var HQty = obj.data.HQty;                                       //数量
                //        var HPrice = obj.data.HPrice;                                 //工价
                //        var HPriceRate = obj.data.HPriceRate;                     //定额浮动比率
                //        var HSubsidyQty = obj.data.HSubsidyQty;                  //补贴数量
                //        var HSubsidyTotal = obj.data.HSubsidyTotal;            //补贴合计
                //        var HDeuctTotal = obj.data.HDeuctTotal;                  //扣款小计
                //        var HPackQty = obj.data.HPackQty;                           //包装数量
                //        var HPackPrice = obj.data.HPackPrice;                     //包装单价
                //        var valueList = [];
                //        valueList.push(HQty);
                //        valueList.push(HPrice);
                //        valueList.push(HPriceRate);
                //        valueList.push(HSubsidyQty);
                //        valueList.push(HSubsidyTotal);
                //        valueList.push(HDeuctTotal);
                //        valueList.push(HPackQty);
                //        valueList.push(HPackPrice);
                //        //检验数据格式
                //        var temp;                           //存储需要校验的数据
                //        var ref = /^\d+(\.\d+)?$/;          //正则表达式-校验是否为非负数字
                //        for (var i = 0; i < valueList.length; i++) {
                //            temp = valueList[i] + "";
                //            if (temp == "") {
                //                //valueList[i] = 0;
                //                layer.msg("数据不可以为空!");
                //                //若校验存在问题,则将值变更为change前的值
                //                //HQty = valueList[0];
                //                //HPrice = valueList[1];
                //                //HPriceRate = valueList[2];
                //                //HSubsidyQty = valueList[3];
                //                //HSubsidyTotal = valueList[4];
                //                //HDeuctTotal = valueList[5];
                //                //HPackQty = valueList[6];
                //                //HPackPrice = valueList[7];
                //                return;
                //            } else if (!ref.test(temp)) {
                //                //valueList[i] = 0;
                //                layer.msg("请输入非负数字!")
                //                //若校验存在问题,则将值变更为change前的值
                //                //HQty = valueList[0];
                //                //HPrice = valueList[1];
                //                //HPriceRate = valueList[2];
                //                //HSubsidyQty = valueList[3];
                //                //HSubsidyTotal = valueList[4];
                //                //HDeuctTotal = valueList[5];
                //                //HPackQty = valueList[6];
                //                //HPackPrice = valueList[7];
                //                return;
                //            }
                //        }
                //        var baseSum = HQty * HPrice * HPriceRate;
                //        var HSubsidyMoney = HSubsidyQty * HPrice;                                                   //补贴金额
                //        var HPackMoney = HPackQty * HPackPrice;                                                     //包装金额
                //        var HMoney = baseSum + HSubsidyMoney + HSubsidyTotal + HSubsidyTotal + HPackMoney - HDeuctTotal;                //金额 = æ•°é‡*工价*额定浮动比率 + è¡¥è´´æ•°é‡*工价 + è¡¥è´´åˆè®¡ + åŒ…装数量*包装单价 - æ‰£æ¬¾å°è®¡
                //        //更新表格缓存的数据
                //        //obj.update({
                //        //    "HQty": HQty
                //        //    , "HPrice": HPrice
                //        //    , "HPriceRate": HPriceRate
                //        //    , "HSubsidyQty": HSubsidyQty
                //        //    , "HSubsidyMoney": HSubsidyMoney
                //        //    , "HSubsidyTotal": HSubsidyTotal
                //        //    , "HDeuctTotal": HDeuctTotal
                //        //    , "HPackQty": HPackQty
                //        //    , "HPackPrice": HPackPrice
                //        //    , "HPackMoney": HPackMoney
                //        //    , "HMoney": HMoney
                //        //})
                //    }
                //});
                //#endregion
            }
            //#endregion
@@ -1264,7 +1231,7 @@
                    success: function (data1) {
                        if (data1.data.length != 0) {
                            var dataCol = [];//数据库查询出的列数据
                            var titleData = ["行号", "物料ID", "工序ID", "职员ID", "包装类型ID"];//不需要显示的字段 å¯æ‰©å±•
                            var titleData = ["行号", "物料ID", "工序ID", "职员ID", "资源ID", "源单主内码", "源单子内码", "源单单号", "源单类型", "关联数量", "关联金额", "行关闭人", "行关闭时间"];//不需要显示的字段 å¯æ‰©å±•
                            dataCol = data1.data[0].HGridString.split(',');
@@ -1280,9 +1247,9 @@
                                }
                                //设置内容字体大小
                                if (data1.data[0].HFontSize != 0) {
                                    option.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
                                    option.cols[0][i + 1]["style"] += "font-size:" + data1.data[0].HFontSize + "px;";
                                } else {
                                    option.cols[0][i + 1]["style"] = "font-size:100%";
                                    option.cols[0][i + 1]["style"] += "font-size:100%";
                                }
                                //设置列宽
                                //if (data1.data[0].HColumnWidth != 0) {
@@ -1351,11 +1318,38 @@
                form.render('checkbox');
            }
            //#endregion
            //#region å­è¡¨ç‰©æ–™ã€å·¥åºå¸¦å‡ºå·¥ä»·
            function subTable_GetHPrice(HMaterID, HProcID, HSourceID) {
                var HPrice;
                if (HMaterID != "0" && HProcID != "0") {
                    $.ajax({
                        type: "Get",
                        url: GetWEBURL() + "/Pay_SingleBalBill/get_HPrice_BaseMaterHProcHSource",
                        async: false,
                        data: { "HMaterID": HMaterID, "HProcID": HProcID, "HSourceID": HSourceID },
                        success: function (res) {
                            if (res.count == 1) {
                                HPrice = res.data;
                            }
                            else {
                                layer.msg(res.Message, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                                HPrice = 0;
                            }
                        },
                        error: function (err) {
                            layer.msg("错误:" + err, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                            HPrice = 0;
                        }
                    });
                    return HPrice;
                } else {
                    HPrice = -1;
                    return HPrice;
                }
            }
            //#endregion
            //#endregion
        });