wtt
2025-06-09 7c91fc11a8af30846d778e05c036992ef2e28fd1
三升添加发货计划平台
2个文件已修改
2个文件已添加
1258 ■■■■■ 已修改文件
WebTM/WebTM.csproj 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产管理/发货计划平台(三升)/Xs_SendGoodsPlanForm.html 924 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产管理/发货计划平台(三升)/Xs_SendGoodsPlanImport.html 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj
@@ -603,6 +603,8 @@
    <Content Include="views\生产管理\三升排产\JIT_DayPlanPlatForm.html" />
    <Content Include="views\生产管理\三升排产\JIT_DayPlanPlatFormImport_SS_Sec.html" />
    <Content Include="views\生产管理\三升排产\JIT_DayPlanPlatFormImport_SS.html" />
    <Content Include="views\生产管理\发货计划平台(三升)\Xs_SendGoodsPlanForm.html" />
    <Content Include="views\生产管理\发货计划平台(三升)\Xs_SendGoodsPlanImport.html" />
    <Content Include="views\生产管理\宝工排产\Cg_PODemandPlanConfigBillReportForLack.html" />
    <Content Include="views\生产管理\宝工排产\Gy_RoutingBillReportForLack.html" />
    <Content Include="views\生产管理\宝工排产\JIT_NeedMaterPlanConfigBillReportForLack.html" />
@@ -612,9 +614,6 @@
    <Content Include="views\生产管理\宝工排产\JIT_LockRequestBill.html" />
    <Content Include="views\生产管理\宝工排产\JIT_DayPlanPlatForm.html" />
    <Content Include="views\生产管理\宝工排产\JIT_LockRequestBillList.html" />
    <Content Include="views\生产管理\客户标签\Sc_CustomerTagInfoExcel.html" />
    <Content Include="views\生产管理\客户标签\Sc_CustomerTagInfoEdit.html" />
    <Content Include="views\生产管理\客户标签\Sc_CustomerTagInfoList.html" />
    <Content Include="views\生产管理\异常反馈单\OA_ErrMsgBackSignBill_BrushCard.html" />
    <Content Include="views\生产管理\异常反馈单\Sc_MESExecptFeedBackBillResumeList.html" />
    <Content Include="views\生产管理\异常反馈单\Sc_MESExecptFeedBackBillType.html" />
WebTM/WebTM.csproj.user
@@ -4,7 +4,7 @@
    <NameOfLastUsedPublishProfile>D:\智云迈思\MES\MES-WEB-LayUI\WebTM\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
    <NameOfLastUsedPublishProfile>D:\WorkBench\MES-WEB-LayUI\WebTM\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
    <ProjectView>ShowAllFiles</ProjectView>
    <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
    <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
    <UseIISExpress>true</UseIISExpress>
    <Use64BitIISExpress />
    <IISExpressSSLPort />
WebTM/views/Éú²ú¹ÜÀí/·¢»õ¼Æ»®Æ½Ì¨£¨ÈýÉý£©/Xs_SendGoodsPlanForm.html
New file
@@ -0,0 +1,924 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>三升发货计划排产</title>
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/ext/soulTable.css" media="all">
    <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/zgqCustom/zgqCustom.js"></script>
    <!--<script src="../../../layuiadmin/soulTable.slim.js"></script>-->
    <script src="../../../layuiadmin/SetColumn.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md13">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div style="padding: 10px; ">
                            <!--<button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="ExcelImport" id="ExcelImport">Excel导入</button>-->
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="ExcelDateImport" id="ExcelDateImport">导入</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnICMOBill" id="btnICMOBill">销售订单选单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnSave" id="btnSave">保存</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnTLYS" id="btnTLYS">提料运算</button>
                        </div>
                        <div class="layui-collapse resizable-container">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span>更多</span>
                                    </div>
                                </div>
                                <div class="layui-inline" style="display:none">
                                    <label class="layui-form-label" style="width: 85px;">组织</label>
                                    <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                                        <select name="HProdORGID" id="HProdORGID" lay-verify="HProdORGID">
                                            <!--动态渲染组织-->
                                        </select>
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">查询</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch">重置</button>
                            </div>
                        </div>
                        <div id="HProgressBar"></div>
                        <div class="layui-row" style="padding:0px 0">
                            <table class="" id="mainTable" lay-filter="mainTable"></table>
                        </div>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_DeleteBill"><i class="layui-icon layui-icon-delete"></i>删除行</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_MoverUp"><i class="layui-icon layui-icon-delete"></i>上移</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_MoverDown"><i class="layui-icon layui-icon-delete"></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="get_export" id="get_export"><i class="layui-icon layui-icon-export"></i>导出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
<script type="text/html" id="barDemo">
    <!--<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script>
    var OptionData = [];
    var OptionData_Emp = [];
    layui.config({
        base: '../../../layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index', //主入口模块
        soulTable: 'soulTable'
    }).use(['index', 'form', 'table', 'element', 'laydate', 'util', 'soulTable','jquery'], function () {
        //#region å…¬ç”¨å˜é‡
        var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , laydate = layui.laydate
            , soulTable = layui.soulTable
            , element = layui.element;
        var ins;
        var sWhere = "";
        var option = [];
        var HModName = "Xs_SendGoodsPlanBill";
        //不需要显示的字段 å¯æ‰©å±•
        var titleData = [];
        var params = get_UrlVars();
        var HType = "";
        if (params[params[0]] != undefined) {
            HType = params[params[0]]; //从参数中获取
        }
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
        //初始化界面
        set_ClearBill();
        //#endregion
        //#region è§¦å‘事件:包括form.on(){}格式的所有点击事件、选择事件等
        //行内鼠标离开事件
        table.on('edit(mainTable)', function (obj) {
        })
        //点击行选中数据
        table.on('row(mainTable)', function (obj) {
            //选中行改变颜色
            var flag = !obj.tr.find(':checkbox:first').prop('checked');
            obj.tr.find(':checkbox').prop('checked', flag);
            if (flag) {
                obj.tr.find('.layui-form-checkbox').addClass('layui-form-checked');  //设置复选框选中样式
                $(obj.tr.selector).attr({ "style": "background:#ceedfa;color:black" });//改变当前tr背景颜色和字体颜色
            } else {
                obj.tr.find('.layui-form-checkbox').removeClass('layui-form-checked');//取消复选框选中样式
                $(obj.tr.selector).attr({ "style": "background:" });//取消当前tr颜色
            }
            //mainTable ä¸ºè¡¨æ ¼ID   æ³¨æ„æ­¤å¤„如果ID不正确将导致你在监听复选框时获取不到你选择的数据,前面的只是添加或删除选中未选中样式以及设置背景色,字体颜色
            layui.each(table.cache.mainTable, function (i, l) {
                if (obj.tr.index() == l.LAY_TABLE_INDEX) {
                    l.LAY_CHECKED = flag;
                }
            });
        })
        //头工具栏事件
        table.on('toolbar(mainTable)', function (obj) {
            var checkStatus = table.checkStatus('mainTable')
                , data = checkStatus.data;
            switch (obj.event) {
                //列设置
                case 'set_HideColumn':
                    get_HideColumnNoPage(HModName,'',option, get_FastQuery);
                    break;
                //删除行
                case 'set_DeleteBill':
                    set_DeleteBill();
                    break;
                //上移
                case 'set_MoverUp':
                    set_MoverUp(data);
                    break;
                //下移
                case 'set_MoverDown':
                    set_MoverDown(data);
                    break;
                //导出excel
                case 'get_export':
                    get_Export();
                    break;
            }
        });
        //完工导入
        form.on('submit(ExcelDateImport)', function () {
            btnExcelDateImport();
        });
        //保存
        form.on('submit(btnSave)', function (data) {
            var HWorkShopID = $("#HWorkShopID").val();//生产车间
            if (HWorkShopID == 0) {
                return layer.msg("生产车间不能为空!");
            } else if (table.cache["mainTable"].length == 0) {
                return layer.msg("无数据,无法保存!");
            } else {
                var HYxjQty = 0;
                for (var i = 0; i < table.cache["mainTable"].length; i++) {
                    if (table.cache["mainTable"][i] != "") {
                        if (parseFloat(table.cache["mainTable"][i]["优先级"]) == 0) {
                            HYxjQty++
                        }
                    }
                }
                if (HYxjQty > 0) {
                    layer.confirm('当前排产页面存在优先级为0的生产订单,是否继续进行保存?', {
                        title: "操作提示",
                        icon: 0,
                        btn: ['确认', '取消']
                    }, function (index, layero) {
                        //确认
                        set_AddNew();
                    }, function (index) {
                        //取消
                        return
                    });
                } else {
                    set_AddNew();
                }
            }
        });
        //快速过滤
        form.on('submit(btnSearch)', function (data) {
            get_FastQuery(2);
        });
        //重置
        form.on('submit(btnReSearch)', function (data) {
            set_ClearQuery();
        });
        //提料运算
        form.on('submit(btnTLYS)', function (data) {
            if (set_ModCheck("Sc_WorkBillSortBill_tlys") == true) {
                layer.confirm('你确定要执行操作吗,请先确保排产数据已保存?', {
                    btn: ['确定', '取消'] //按钮
                    , btn1: function (index, layero) {
                        get_btnTLYS();
                        layer.close(index);
                    }
                })
            }
        })
        //行内事件
        table.on('tool(mainTable)', function (obj) {
            set_GridDelete(obj);   //行内删除
            set_GridCellCheck(obj); //行内快捷键筛选
            //#region ä¿®æ”¹æ—¶é—´
            var data = obj.data;
            //日计划生产日期
            if (obj.event == 'HPlanEndDate') {
                var field = $(this).data('field');
                laydate.render({
                    elem: this.firstChild
                    , show: true //直接显示
                    , closeStop: this
                    , done: function (nowDate) {
                        //时间选择完成,行数据更新
                        data[field] = nowDate;
                        obj.update(data);
                    }
                });
            }
            //#endregion
        });
        //#endregion
        //#region æœ¬é¡µé¢è¢«è°ƒç”¨çš„æ‰€æœ‰æ–¹æ³•
        //权限判定
        function set_ModCheck(ModRightNameCheck) {
            var Permission = false;
            $.ajax({
                type: "GET",
                url: GetWEBURL() + "/LMES/getReportByModRightNameCheck", //方法所在页面和方法名
                async: false,
                data: { "ModRightNameCheck": ModRightNameCheck, "user": sessionStorage["HUserName"] },
                success: function (result) {
                    if (result.count == 1) {
                        Permission = true;
                    } else {
                        layer.alert("当前模块没有查询权限!", { icon: 5 });
                    }
                }, error: function () {
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            return Permission;
        }
        //#region åˆå§‹åŒ–界面
        function set_ClearBill() {
            //组织
            Organ();
            //初始化表格
            set_InitGrid();
            get_FastQuery();
        }
        //#endregion
        //获取组织
        function Organ() {
            //获取登录页组织列
            $.ajax({
                type: "get",
                url: GetWEBURL() + "/Web/GetOrganizations",
                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>';
                        }
                        $("#HProdORGID").append(Organization);
                        $("#HProdORGID").val(sessionStorage["OrganizationID"])
                        form.render('select');
                    }
                    layer.closeAll("loading");
                }
            })
        }
        //表格数据
        function set_InitGrid() {
            option = {
                elem: '#mainTable'
                , toolbar: '#toolbarDemo'
                , title: "发货计划报表"
                , height: 'full-175'
                , page: false
                , cellMinWidth: 90
                , cols: [[]]
                , limit: Number.MAX_VALUE//默认显示全部
                , contextmenu: {
                    // è¡¨æ ¼å†…容右键菜单配置
                    body: [
                        {
                            name: '复制',
                            icon: 'layui-icon layui-icon-template',
                            click: function (obj) {
                                soulTable.copy(obj.text)
                                layer.msg('复制成功!')
                            }
                        },
                        {
                            name: '行-蓝色',
                            click: function (obj) {
                                obj.trElem.css('background', '#01AAED')
                            }
                        },
                        {
                            name: '红色',
                            click: function (obj) {
                                obj.elem.css('color', 'red')
                            }
                        }
                    ]
                }
                , even: true//行拖拽
                , rowDrag: {/*trigger: 'row',*/
                    done: function (obj) {
                        // å®Œæˆæ—¶ï¼ˆæ¾å¼€æ—¶ï¼‰è§¦å‘
                        // å¦‚果拖动前和拖动后无变化,则不会触发此方法
                        console.log(obj.row) // å½“前行数据
                        console.log(obj.cache) // æ”¹åŠ¨åŽå…¨è¡¨æ•°æ®
                        console.log(obj.oldIndex) // åŽŸæ¥çš„æ•°æ®ç´¢å¼•
                        console.log(obj.newIndex) // æ”¹åŠ¨åŽæ•°æ®ç´¢å¼•
                        console.log(table.cache["mainTable"]) // æ”¹åŠ¨åŽæ•°æ®ç´¢å¼•
                        option.data = table.cache["mainTable"];
                    }
                }
                , sort: function (obj) { // æŽ’序事件
                    // èŽ·å–å½“å‰æŽ’åºçš„å­—æ®µå’ŒæŽ’åºç±»åž‹
                    var field = obj.field;
                    var type = obj.type;
                    data.sort(function (a, b) {
                        return type === 'asc' ? (a[field] - b[field]) : (b[field] - a[field]);
                    });
                    // é‡æ–°æ¸²æŸ“表格
                    table.reload('test', {
                        data: data
                    });
                }
                , done: function (res, page, count) {
                    soulTable.render(this);
                    //$('.layui-table thead').on('click', 'th', function () {
                    //    // èŽ·å–ç‚¹å‡»çš„è¡¨å¤´çš„ field å€¼
                    //    var field = $(this).data('field');
                    //    set_InitGrid1(field);
                    //    sWhere = {
                    //        HORGID: sessionStorage["OrganizationID"]
                    //        , HBEGINDATE: field
                    //        , HENDDATE: field
                    //    }
                    //    //get_Display_3(JSON.stringify(sWhere));
                    //});
                    //res.data.forEach(function (item, index) {
                    //    if (data1.data.DataColor != undefined) {
                    //        var sj = data1.data.DataColor;
                    //        //禁用复选框,设置不可选中标识,将该行设置为阴影色
                    //        var tr = $(".layui-table tr[data-index=" + index + "]");
                    //        var td = tr.children('td'); //获取tr下所有的td
                    //        if (sj.length > index) {
                    //            for (var i = 1; i < td.length; i++) {
                    //                var title = option.cols[0][i].field;
                    //                if (sj[index][title] != "" && sj[index][title] != null) {
                    //                    td.eq(i).css("background-color", sj[index][title]);
                    //                }
                    //            }
                    //        }
                    //    }
                    //})
                }
            }
        }
        //查询加载数据
        function get_Display(sql) {
            var ajaxLoad = layer.load();
            $.ajax({
                url: GetWEBURL() + '/CommonModel/searchMethod',
                type: "GET",
                async: true,
                data: { "sql": sql, "user": sessionStorage["HUserName"],"ModRightNameCheck":"" },
                success: function (data1) {
                    if (data1.count == 1) {
                        var data = [];
                        var col = [];
                        //给空的数组赋值
                        for (var key in data1.list) {
                            data.push({ "id": data1.list[key].ColmCols, "name": data1.list[key].ColmCols, "Type": data1.list[key].ColmType });
                            //获取不需要显示的列(H开头的列不显示)
                            var patrn = new RegExp(/^h/i);
                            if (patrn.test(data1.list[key].ColmCols)) {
                                titleData[key] = data1.list[key].ColmCols;
                            }
                        }
                        //在列表左边添加勾选框
                        col.push({ type: 'checkbox', fixed: 'left', totalRowText: '合计行' });
                        for (var i = 0; i < data.length; i++) {
                            if ($.inArray(data[i].name, titleData) > -1) {
                                col.push({ field: data[i].id, title: data[i].name, align: 'center', hide: true }); //隐藏id列
                            } else if (data[i].name == '发货日期') {//添加超链接
                                col.push({
                                    field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 200, event: 'HPlanEndDate', templet: "<div>{{d." + data[i].name + " ==null ?'':layui.util.toDateString(d." + data[i].name + ", 'yyyy-MM-dd')}}</div>", filter: true
                                });
                            }
                            else {
                                switch (data[i].Type) {
                                    //int
                                    case 'DateTime':
                                        col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, templet: "<div>{{d." + data[i].name + " ==null ?'':layui.util.toDateString(d." + data[i].name + ", 'yyyy-MM-dd')}}</div>", width: 200 });
                                        break;
                                    case 'long':
                                    case 'Int32':
                                    case 'Int64':
                                    case 'double':
                                    case 'Decimal':
                                        col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 120, totalRow: true, filter: true });
                                        break;
                                    default:
                                        col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 200, filter: true });
                                }
                            }
                        }
                        option.cols = [col];
                        option.data = data1.data;
                        //列设置
                        DisPlay_HideColumn(HModName, sessionStorage["HUserName"], option, titleData);
                        ins = table.render(option);
                        layer.close(ajaxLoad);
                    } else {
                        layer.close(ajaxLoad);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(ajaxLoad);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
        }
        //Excel完工日期导入
        function btnExcelDateImport() {
            layer.open({
                type: 2
                , skin: 'layui-layer-rim' //加上边框
                , area: ['100%', '100%']
                , title: '发货计划交期导入'
                , shift: 0//弹出动画
                , content: '../发货计划平台(三升)/Xs_SendGoodsPlanImport.html?OperationType=1'
                , end: function () {
                    //刷新页面,
                    location.reload();
                }
            })
        }
        //快速过滤
        function get_FastQuery() {
            sWhere = "select * from h_v_Xs_SendGoodsPlanBillList where 1=1 and (采购订单关闭状态='A' or é‡‡è´­è®¢å•关闭状态 is null) and é”€å”®è®¢å•关闭状态='A'"
            get_Display(sWhere);
            sWhere = ""//调用接口后清空sWhere缓存
        }
        //重置
        function set_ClearQuery() {
            form.render('select');
            sWhere = "";
        }
        //提料运算
        function get_btnTLYS() {
            var ajaxLoad = layer.load();
            var sql = "exec h_p_JIT_PODemandPlanBill_SendGoodsPlan " + sessionStorage["HUserName"] + ",'" + sessionStorage["OrganizationID"] + "'";
            $.ajax({
                url: GetWEBURL() + '/CommonModel/searchMethod',
                type: "GET",
                async: false,
                data: { "sql": sql, "user": sessionStorage["HUserName"], "ModRightNameCheck": ""},
                success: function (data1) {
                    if (data1.count == 1) {
                        get_FastQuery(2);
                        layer.msg(data1.data[0]["Column1"]);
                        layer.close(ajaxLoad);
                    } else {
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
        }
        //行内删除
        function set_GridDelete(obj) {
            var data = obj.data;
            var rowIndex = $(obj.tr).attr("data-index");
            if (obj.event === 'del') {
                layer.confirm('真的删除行吗?', function (index) {
                    //if (rowIndex === '0' && table.cache["mainTable"].length==1) {
                    //    layer.msg('首行无法删除!!!');
                    //} else {
                    //    obj.del();
                    //    table.cache["mainTable"].splice(rowIndex, 1);  //②彻底移除元素,从缓存里移除这一行
                    //    option.data = table.cache["mainTable"];//将数据绑定到data上
                    //    table.render(option);
                    //    //table.reload(option);
                    //    layer.close(index);
                    //}
                    //假删除
                    if (obj.data.hmainid == "" && obj.data.单据号 == "") {
                        obj.del();
                        table.cache["mainTable"].splice(rowIndex, 1);  //②彻底移除元素,从缓存里移除这一行
                        option.data = table.cache["mainTable"];//将数据绑定到data上
                        table.render(option);
                        //table.reload(option);
                        layer.close(index);
                    } else {//真删除
                        var HInterID = [];
                        HInterID.push(obj.data.hmainid); //获取编号
                        $.ajax({
                            url: GetWEBURL() + '/Xs_SendGoodsPlanBill/Delete'
                            , type: "GET"
                            , data: { "HInterID": HInterID.toString(),"User": sessionStorage["HUserName"] }
                            , success: function (result) {
                                if (result.count == 1) {
                                    layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                        // å¾—到frame索引
                                        var index = layer.getFrameIndex(window.name);
                                        //关闭当前frame
                                        layer.close(index);
                                        //修改为功后刷新界面
                                        get_FastQuery(2);
                                        ////重载tree
                                        //tree.reload('treeDepartment', {});
                                        setTimeout(function () {
                                            if (layuiTable != null && layuiTable.length > 0) {
                                                $('.layui-table-main').scrollTop(scrollTop)
                                            }
                                        }, 100)
                                    });
                                } else {
                                    layer.alert(result.code + result.Message, { icon: 5 });
                                }
                            }
                            , error: function (err) {
                                layer.alert("接口请求失败!" + err, { icon: 5 });
                            }
                        })
                    }
                });
            }
        }
        //删除行
        function set_DeleteBill() {
            var CheckStatus = table.checkStatus("mainTable");
            var scrollTop = 0;
            var layuiTable = $('.layui-table-main');
            if (layuiTable != null && layuiTable.length > 0) {
                scrollTop = layuiTable[0].scrollTop;
            }
            if (CheckStatus.data.length == 0) {
                return layer.msg("请选择数据!")
            } else {
                layer.confirm('您确定要删除吗?', {
                    btn: ['确定', '取消'] //按钮
                    , btn1: function () {
                        var HInterID = [];
                        for (var i = 0; i < CheckStatus.data.length; i++) {
                            HInterID.push(CheckStatus.data[i].hmainid); //获取编号
                        }
                        $.ajax({
                            url: GetWEBURL() + '/Xs_SendGoodsPlanBill/Delete'
                            , type: "GET"
                            , data: { "HInterID": HInterID.toString(), "User": sessionStorage["HUserName"] }
                            , success: function (result) {
                                if (result.count == 1) {
                                    layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                        // å¾—到frame索引
                                        var index = layer.getFrameIndex(window.name);
                                        //关闭当前frame
                                        layer.close(index);
                                        //修改为功后刷新界面
                                        get_FastQuery(2);
                                        ////重载tree
                                        //tree.reload('treeDepartment', {});
                                        setTimeout(function () {
                                            if (layuiTable != null && layuiTable.length > 0) {
                                                $('.layui-table-main').scrollTop(scrollTop)
                                            }
                                        }, 100)
                                    });
                                } else {
                                    layer.alert(result.code + result.Message, { icon: 5 });
                                }
                            }
                            , error: function (err) {
                                layer.alert("接口请求失败!" + err, { icon: 5 });
                            }
                        })
                    }
                })
            }
        }
        //上移
        function set_MoverUp(data) {
            if (data.length != 1) {
                layer.msg("请选择一行数据!");
            } else if (option.data[0]["hmainid"] == data[0]["hmainid"]) {
                layer.msg("首行数据无法移动!");
            } else {
                var scrollTop = 0;
                var layuiTable = $('.layui-table-main');
                if (layuiTable != null && layuiTable.length > 0) {
                    scrollTop = layuiTable[0].scrollTop;
                }
                var tables = [];
                for (var i = 0; i < option.data.length; i++) {
                    if (option.data[i]["hmainid"] == data[0]["hmainid"]) {
                        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);
                        break;
                    }
                }
                setTimeout(function () {
                    if (layuiTable != null && layuiTable.length > 0) {
                        $('.layui-table-main').scrollTop(scrollTop)
                    }
                }, 100)
            }
        }
        //下移
        function set_MoverDown(data) {
            if (data.length != 1) {
                layer.msg("请选择一行数据!");
            } else
            if (option.data[option.data.length - 1]["hmainid"] == data[0]["hmainid"]) {
                layer.msg("末行数据无法移动!");
            } else {
                var scrollTop = 0;
                var layuiTable = $('.layui-table-main');
                if (layuiTable != null && layuiTable.length > 0) {
                    scrollTop = layuiTable[0].scrollTop;
                }
                var tables = [];
                for (var i = 0; i < option.data.length; i++) {
                    if (option.data[i]["hmainid"] == data[0]["hmainid"]) {
                        var len = data.length;
                        tables.push(option.data[i + len]);
                        for (var j = 0; j < len; j++) {
                            data[j].LAY_CHECKED = true;
                            option.data[i + 1 + j] = data[j];
                        }
                        option.data[i] = tables[0];
                        table.render(option);
                        break;
                    }
                }
                setTimeout(function () {
                    if (layuiTable != null && layuiTable.length > 0) {
                        $('.layui-table-main').scrollTop(scrollTop)
                    }
                }, 100)
            }
        }
        //保存
        function set_AddNew() {
            //删除子表数据 ä¼šå ç”¨æ•°ç»„的位置,需要重新排一下顺序
            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 = sSubStr +"&和" + sessionStorage["HUserName"];
            var index = layer.load();
            $.ajax({
                type: "POST",
                url: GetWEBURL() + "/Xs_SendGoodsPlanBill/btnSave",
                async: true,
                data: { "sMainSub": sMainSub },
                dataType: "json",
                success: function (data) {
                    if (data.count == 1) {
                        get_FastQuery(2);
                        layer.close(index);
                        layer.msg("保存成功");
                    }
                    else {
                        layer.close(index);
                        layer.msg(data.Message, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    }
                },
                error: function (err) {
                    layer.close(index);
                    layer.msg("错误:" + err, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                }
            });
        }
        //行内快捷键
        function set_GridCellCheck(obj) {
            $(document).off('keydown', ".layui-table-edit").on('keydown', '.layui-table-edit', function (e) {
                if (event.key == "F7") {
                    //生产资源
                    if (obj.event == "HSourceID") {
                        layer.open({
                            type: 2
                            , skin: "layui-layer-rim" //加上边框
                            , title: "生产资源列表"  //标题
                            , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                            , shift: 2 //弹出动画
                            , area: ["90%", "90%"] //窗体大小
                            , maxmin: true //设置最大最小按钮是否显示
                            , content: ["../../基础资料/生产基础资料/Gy_Source.html?Htype=生产线", "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[0] = checkStatus.data[0];
                                //更新表格缓存的数据
                                obj.update({
                                    "HSourceID": checkStatus.data[0].HItemID
                                    , "生产资源": checkStatus.data[0].生产资源名称
                                })
                                layer.close(index);//关闭弹窗
                            }
                            , end: function () {
                                if (OptionData.length > 0) {
                                    obj.update({
                                        "HSourceID": OptionData[0].HItemID
                                        , "生产资源": OptionData[0].生产资源名称
                                    })
                                    OptionData = [];
                                }
                            }
                        })
                    }
                    //操作工
                    if (obj.event == "HEmpID") {
                        layer.open({
                            type: 2
                            , skin: "layui-layer-rim" //加上边框
                            , title: "员工列表"  //标题
                            , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                            , shift: 2 //弹出动画
                            , area: ["90%", "90%"] //窗体大小
                            , maxmin: true //设置最大最小按钮是否显示
                            , content: ["../../基础资料/公用基础资料/Gy_EmployeeList.html?Htype=HEmp", "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_Emp[0] = checkStatus.data[0];
                                //更新表格缓存的数据
                                obj.update({
                                    "HEmpID": checkStatus.data[0].HItemID
                                    , "操作工": checkStatus.data[0].职员名称
                                })
                                layer.close(index);//关闭弹窗
                            }
                            , end: function () {
                                if (OptionData_Emp.length > 0) {
                                    obj.update({
                                        "HEmpID": OptionData_Emp[0].HItemID
                                        , "操作工": OptionData_Emp[0].职员名称
                                    })
                                    OptionData_Emp = [];
                                }
                            }
                        })
                    }
                    obj.event = "";
                    return false;
                } else if (event.key == "F8") {
                    //生产资源
                    if (obj.event == "HSourceID") {
                        layer.open({
                            type: 2
                            , skin: "layui-layer-rim" //加上边框
                            , title: "生产资源列表"  //标题
                            , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                            , shift: 2 //弹出动画
                            , area: ["90%", "90%"] //窗体大小
                            , maxmin: true //设置最大最小按钮是否显示
                            , content: ["../../Baseset/基础资料/Gy_Source.html?HMaterID=" + obj.data["HMaterID"], "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[0] = checkStatus.data[0];
                                //更新表格缓存的数据
                                obj.update({
                                    "HSourceID": checkStatus.data[0].HItemID
                                    , "生产资源": checkStatus.data[0].HName
                                })
                                layer.close(index);//关闭弹窗
                            }
                            , end: function () {
                                if (OptionData.length > 0) {
                                    obj.update({
                                        "HSourceID": OptionData[0].HItemID
                                        , "生产资源": OptionData[0].HName
                                    })
                                    OptionData = [];
                                }
                            }
                        })
                    }
                    obj.event = "";
                }
            })
        }
        function get_Export() {
            var data = option.data
            data.forEach((item) => {
                // å¦‚果某个字段的值太长,需要去除换行符
                if (item.规格型号.length > 0) {  // å‡è®¾å­—段名为field
                    item.规格型号 = item.规格型号.replace(/[\r\n]+/g, '');  // å°†æ¢è¡Œç¬¦æ›¿æ¢ä¸ºç©ºå­—符串
                    item.规格型号 = item.规格型号.replace(/[,]+/g, ',');  // å°†æ¢åˆ†å·æ›¿æ¢ä¸ºç©ºå­—符串
                }
            });
            table.exportFile(ins.config.id, data, "xls");
        }
        //#endregion
        //以上是layui模块
    });
    //双击返回生产资源
    function GetGySource(data) {
        OptionData = data
    }
    //双击返回操作工
    function GetHEmpValue(data) {
        OptionData_Emp = data
    }
</script>
WebTM/views/Éú²ú¹ÜÀí/·¢»õ¼Æ»®Æ½Ì¨£¨ÈýÉý£©/Xs_SendGoodsPlanImport.html
New file
@@ -0,0 +1,327 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>发货计划交期导入</title>
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
    <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>
</head>
<body>
    <div class="layui-fluid" style="padding: 0;">
        <div class="layui-card" style="padding: 2px;background-color: #efefef;">
            <div class="layui-card-body" style="padding: 1px;">
                <form class="layui-form" action="" lay-filter="formData" style="background-color:white;">
                    <div style="padding: 10px; ">
                        <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnSave" id="btnSave">导入数据</button>
                        <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="Cancel" id="Cancel">退出</button>
                        <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="UpLoad" id="UpLoad">文件上传</button>
                    </div>
                    <div class="layui-tab" lay-filter="tab-POStockInBill">
                        <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">
                                            <div class="layui-inline">
                                                <label class="layui-form-label" style="width: 85px;">单据日期</label>
                                                <div class="layui-input-block" style="margin-left: 120px;">
                                                    <input type="date" class="layui-input" lay-verify="HDate" name="HDate" id="HDate" style="padding-left: 75px;">
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">订单类型</label>
                                            <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                                                <select name="HOrderType" id="HOrderType" lay-verify="HOrderType">
                                                    <option value="销售订单">销售订单</option>
                                                    <!--<option value="委外订单">委外订单</option>-->
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <div class="layui-inline">
                                                <div class="layui-input-block" style="margin-left: 120px;">
                                                    <input type="hidden" name="HPRDORGID" id="HPRDORGID" lay-verify="HPRDORGID">
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <table class="" id="mainTable" lay-filter="mainTable"></table>
                </form>
            </div>
        </div>
    </div>
</body>
</html>
<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script>
    layui.config({
        base: '../../../layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index' //主入口模块
    }).use(['index', 'form', 'laydate', 'table', 'element', 'upload'], function () {
        //#region å…¬å…±å˜é‡
        var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , laydate = layui.laydate
            , excel = layui.excel
            , upload = layui.upload
            , element = layui.element;
        var option = [];
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
        var params = getUrlVars();
        var OperationType = params[params[0]]; //从参数中获取 æ•°æ®ç±»åž‹  æ·»åŠ  ä¿å­˜
        //初始化界面
        set_ClearBill();
        //#endregion
        //#region è§¦å‘事件:包括form.on(){}格式的所有点击事件、选择事件等
        //行内事件
        table.on('tool(mainTable)', function (obj) {
            set_GridDelete(obj);   //行内删除
            set_GridCellCheck(obj);//行内快捷键筛选
            //#region ä¿®æ”¹æ—¶é—´
            var data = obj.data;
            //日计划生产日期
            if (obj.event == 'HPlanEndDate') {
                var field = $(this).data('field');
                laydate.render({
                    elem: this.firstChild
                    , show: true //直接显示
                    , closeStop: this
                    , done: function (nowDate) {
                        //时间选择完成,行数据更新
                        data[field] = nowDate;
                        obj.update(data);
                    }
                });
            }
            //#endregion
        });
        //文件上传
        upload.render({
            elem: '#UpLoad',
            url: GetWEBURL() + '/Xs_SendGoodsPlanBill/ExcelImport',
            contentType: 'application/json',
            exts: 'xls|xlsx', //允许上传的类型
            before: function (data) {
                loadIndex = layer.load(2);
            },
            done: function (data1) {
                if (data1.count == 1) {
                    option.data = data1.data;
                    table.render(option);
                    layer.close(loadIndex);
                } else {
                    layer.close(loadIndex);
                    layer.alert(data1.code + data1.Message, { icon: 5 });
                }
            },
            error: function (err) {
                debugger
                layer.alert('导入出现异常', { icon: 2 });
            }
        });
        //退出
        form.on('submit(Cancel)', function () {
            if (OperationType == 1) {
                Pub_Close(1);
            }
            else {
                Pub_Close(2);
            }
        })
        //导入  ä¿å­˜æ•°æ®
        form.on('submit(btnSave)', function (data) {
            if (table.cache["mainTable"] != null) {
                set_AddNew(data);
            }
            else {
                layer.msg("无数据,请先导入数据!");
            }
        })
        //#endregion
        //#region æ­¤é¡µé¢æ‰€æœ‰çš„æ–¹æ³•
        //#region åˆå§‹åŒ–界面
        function set_ClearBill() {
            //初始化时间
            $("#HDate").val(Format(new Date(), "yyyy-MM-dd"));
            //初始化表格
            set_InitGrid();
        }
         //#endregion
        //初始化表格
        function set_InitGrid() {
            var columns = [];
            columns.push({ type: 'checkbox', fixed: 'left' });
            columns.push({ field: 'HMaterID', title: 'HMaterID', width: 150, hide: true });
            columns.push({ field: 'hmainid', title: 'hmainid', width: 150, hide: true });
            columns.push({ field: 'SeOrderHInterID', title: 'SeOrderHInterID', width: 150, hide: true });
            columns.push({ field: 'SeOrderHEntryID', title: 'SeOrderHEntryID', width: 150, hide: true });
            columns.push({ field: '销售订单号', title: '销售订单号', width: 150, edit: true, hide: true });
            columns.push({ field: '物料编码', title: '物料编码', width: 150, edit: true });
            columns.push({ field: '客户订单号', title: '客户订单号', width: 200, edit: true });
            columns.push({ field: '发货日期', title: '发货日期', width: 150, event: "HPlanEndDate", edit: true});
            columns.push({ fixed: 'right', title: '操作', toolbar: '#barDemo' });
            option = {
                elem: '#mainTable'
                , toolbar: '#toolbarDemo'
                , height: 'full-190'
                , page: true
                , cellMinWidth: 90
                , limit: 50
                , limits: [50, 500, 5000, 20000]
                , loading: false
                , cols: [columns]
            };
            //渲染页面
            table.render(option);
        }
        //导入(保存)
        function set_AddNew(data) {
            var num = [];
            //判断是否有导入权限,如果有则将总装车间之前的日计划工单作废
            //if (!set_ModCheck("")) {
            //    layer.msg("导入失败!无导入权限!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
            //    return;
            //}
            var HDataSub = [];
            var index = layer.load();
            layer.msg("开始导入");
            //JIT导入计划,每次导入100行数据,可修改i的自增值决定每次循环导入的行数
            for (var i = 0; i < option.data.length; i += 100) {
                HDataSub = option.data.slice(i, i + 100)
                data.field.HPRDORGID = sessionStorage["OrganizationID"];//组织
                var sMainStr = JSON.stringify(data.field);
                var sSubStr = JSON.stringify(HDataSub);
                var sMainSub = sMainStr + ';' + sSubStr + ';' + sessionStorage["HUserName"];
                $.ajax({
                    type: "POST",
                    url: GetWEBURL() + "/Xs_SendGoodsPlanBill/ExcelSave",
                    async: false,
                    data: { "sMainSub": sMainSub },
                    dataType: "json",
                    success: function (data) {
                        if (data.count == 1) {
                            layer.close(index);
                            $('#btnSave').addClass("layui-btn-disabled").attr("disabled", true);
                            layer.msg("提交成功");
                        }
                        else {
                            layer.close(index);
                            layer.msg(data.Message, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                        }
                    },
                    error: function (err) {
                        layer.close(index);
                        layer.msg("错误:" + err, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    }
                });
            }
            layer.close(index);
        }
        //行内删除
        function set_GridDelete(obj) {
            var rowIndex = $(obj.tr).attr("data-index");
            if (obj.event === 'del') {
                layer.confirm('真的删除行吗?', function (index) {
                    obj.del();
                    table.cache["mainTable"].splice(rowIndex, 1);  //②彻底移除元素,从缓存里移除这一行
                    option.data = table.cache["mainTable"];//将数据绑定到data上
                    table.render(option);
                    layer.close(index);
                });
            }
        }
        //行内删除快捷键
        function set_GridCellCheck(obj) {
        }
        //获取参数
        function getUrlVars() {
            var vars = [], hash;
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
            for (var i = 0; i < hashes.length; i++) {
                hash = hashes[i].split('=');
                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }
            return vars;
        }
        //#region æƒé™åˆ¤å®š
        function set_ModCheck(ModRightNameCheck) {
            var Permission = false;
            $.ajax({
                type: "GET",
                url: GetWEBURL() + "/LMES/getReportByModRightNameCheck", //方法所在页面和方法名
                async: false,
                data: { "ModRightNameCheck": ModRightNameCheck, "user": sessionStorage["HUserName"] },
                success: function (result) {
                    if (result.count == 1) {
                        Permission = true;
                    } else {
                        //layer.alert("当前模块没有查询权限!", { icon: 5 });
                    }
                }, error: function (e) {
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            return Permission;
        }
        //#endregion
        //#endregion
    });
</script>