wtt
2025-05-27 9bf7958d8b932ccacf3aee9d2d2e83076f089333
工厂日历批改功能
1个文件已添加
4个文件已修改
520 ■■■■■ 已修改文件
WebTM/WebTM.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/layuiadmin/Scripts/webConfig.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产管理/欠料运算/JIT_MaterialLevelShorAnalysis.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产管理/生产计划平台/Sc_BulkEditWorkTimeNew.html 500 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产管理/生产计划平台/Sc_ShopCalendar.html 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj
@@ -642,6 +642,7 @@
    <Content Include="views\生产管理\生产计划平台\JIT_DayPlanPlatForm_TKNew.html" />
    <Content Include="views\生产管理\生产计划平台\JIT_DayPlanPlatForm_TK.html" />
    <Content Include="views\生产管理\生产计划平台\JIT_DayPlanPlatForm_BCP.html" />
    <Content Include="views\生产管理\生产计划平台\Sc_BulkEditWorkTimeNew.html" />
    <Content Include="views\生产管理\订单状态分布\Sc_EquipmentProcessList.html" />
    <Content Include="views\生产管理\订单状态分布\Sc_OEEStatusReport.html" />
    <Content Include="views\生产管理\生产计划平台\Sc_BulkEditWorkTime.html" />
WebTM/layuiadmin/Scripts/webConfig.js
@@ -31,7 +31,7 @@
    //var WEBURL = "http://192.168.60.12/API";          //中控
    //var WEBURL = "http://192.168.6.5:8082/API/";    //舜成
    /*var WEBURL = "http://121.36.199.126:8181/API/";    //三升*/
    var WEBURL = "http://localhost:81/API";
    /*var WEBURL = "http://localhost:81/API";*/
    return WEBURL
}
WebTM/views/Éú²ú¹ÜÀí/Ç·ÁÏÔËËã/JIT_MaterialLevelShorAnalysis.html
@@ -94,7 +94,7 @@
                tableSelect.render({
                    elem: '#HWorkShopIDName',//输入框dom选择
                    searchKey: '部门名称,HItemID',//查询的列名
                    sWhere: '',//table搜索sWhere条件 //默认筛选项
                    sWhere: " and ç¦ç”¨æ ‡è®° = '' and è½¦é—´æ ‡è®° = 'Y' ",//table搜索sWhere条件 //默认筛选项
                    ajaxSelect: function (sWhere) {
                        var data = '';
                        $.ajax({
WebTM/views/Éú²ú¹ÜÀí/Éú²ú¼Æ»®Æ½Ì¨/Sc_BulkEditWorkTimeNew.html
New file
@@ -0,0 +1,500 @@
<!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/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>
    <script src="../../../layuiadmin/xm-select.js"></script>
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
    <!--<script src="../../../layuiadmin/soulTable.slim.js"></script>--> <!--标题筛选不能引用此js文件-->
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="formData">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span>更多</span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">生产车间</label>
                                    <div class="layui-input-block" style="margin-left: 77px;">
                                        <input type="hidden" class="layui-input" lay-filter="HDeptID" name="HDeptID" id="HDeptID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                                        <input type="text" class="layui-input" lay-filter="HDeptName" name="HDeptName" id="HDeptName" value="" style="width: 60%;display: inline-block;">
                                        <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHDeptID" id="btnHDeptID" style="padding: 0 10px;float: right;margin-right: 3px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                        </button>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">日期间隔</label>
                                    <div class="layui-input-block">
                                        <select name="HInitTimeCycle" id="HInitTimeCycle" class="ForFilteringSchemes" lay-filter="HInitTimeCycle" style="width:190px;">
                                        </select>
                                    </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="date" class="layui-input" lay-verify="HBeginDate" name="HBeginDate" id="HBeginDate" lay-filter="HBeginDate" style="padding-left: 58px;width:160px;">
                                    </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="date" class="layui-input" lay-verify="HEndDate" name="HEndDate" id="HEndDate" lay-filter="HEndDate" style="padding-left: 58px;width:160px;">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSave" id="btnSave">批量更新</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnExit" id="btnExit"  style="padding:0 5px">退出</button>
                            </div>
                        </div>
                        <div class="layui-row" style="padding:10px 0">
                            <div class="layui-col-xs4 layui-inline" style="border: solid 1.5px #e0d6d64d;">
                                <div id="SourceTable" lay-filter ="SourceTable" style="width:99.5%;"></div>
                            </div>
                            <div class="layui-col-xs7 layui-inline" style="padding-left: 10px;">
                                <table class="" id="mainTable" lay-filter="mainTable"></table>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
<script>
    layui.config({
        base: '../../../layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index', //主入口模块
        soulTable: '../ext/soulTable'
    }).use(['tree', 'index', 'form', 'table', 'element', 'laypage', 'laydate', 'util', 'soulTable', 'tableSelect'], function () {
        //#region å…¬ç”¨å˜é‡
        var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            , util = layui.util
            , tree = layui.tree
            , util = layui.util
            , soulTable = layui.soulTable
            , tableSelect = layui.tableSelect;
        var sWhere = "";
        var option = [];
        var sourceOption = [];
        var ins;                        //用于导出excel
        var HModName = "Sc_SHopCalendarNew";
        var titleData = [];
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
        //初始化界面
        set_ClearBill();
        //#endregion
        //#region è§¦å‘事件:包括form.on(){}格式的所有点击事件、选择事件等
        //#region ç‚¹å‡»è¡Œé€‰ä¸­é«˜äº®
        table.on('row(SourceTable)', 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');  //设置复选框选中样式
                $('div[lay-id="SourceTable"]').find(obj.tr.selector).attr({
                    "style": "background:#ceedfa;color:black"
                });
            } else {
                obj.tr.find('.layui-form-checkbox').removeClass('layui-form-checked');//取消复选框选中样式
                $('div[lay-id="SourceTable"]').find(obj.tr.selector).attr({ "style": "background:" });//取消当前tr颜色
            }
            //mainTable ä¸ºè¡¨æ ¼ID   æ³¨æ„æ­¤å¤„如果ID不正确将导致你在监听复选框时获取不到你选择的数据,前面的只是添加或删除选中未选中样式以及设置背景色,字体颜色
            layui.each(table.cache.SourceTable, function (i, l) {
                if (obj.tr.index() == l.LAY_TABLE_INDEX) {
                    l.LAY_CHECKED = flag;
                }
            });
        })
            //#endregion
        //退出按钮
        form.on('submit(btnExit)', function () {
            Pub_Close(2);
        })
        //退出按钮
        form.on('submit(btnSave)', function () {
            set_SaveBill();
        })
        // ç›‘听日期选择
        $('#HBeginDate').on('change', function () {
            get_DisplayDate();
            // åœ¨è¿™é‡Œå¤„理日期选择后的逻辑
        });
        $('#HEndDate').on('change', function () {
            get_DisplayDate();
            // åœ¨è¿™é‡Œå¤„理日期选择后的逻辑
        });
        //#region æ—¥æœŸé—´éš”下拉列表监听
        form.on('select(HInitTimeCycle)', function (data) {
            var HInitTimeCycle = $("#HInitTimeCycle").val() * 1;
            //若日期间隔不为 ä»»æ„é—´éš”,则禁用开始日期与结束日期的选择
            if (HInitTimeCycle != -1) {
                //$('#HDate').prop('disabled', true);
                //$('#HDate1').prop('disabled', true);
                $("#HBeginDate").val(Format(new Date().setDate(new Date().getDate()), "yyyy-MM-dd"));//欠料日期
                $("#HEndDate").val(Format(new Date().setDate(new Date().getDate() + HInitTimeCycle), "yyyy-MM-dd"));//至
                //执行查询方法
                get_DisplayDate();
            } else {
                //$('#HDate').prop('disabled', false);
                //$('#HDate1').prop('disabled', false);
            }
        });
            //#endregion
        //#region ç”Ÿäº§è½¦é—´
        form.on('submit(btnHDeptID)', function (data) {
            btnHDeptID();
        });
        //#endregion
        //#endregion
        //#region æœ¬é¡µé¢è¢«è°ƒç”¨çš„æ‰€æœ‰æ–¹æ³•
        //#region åˆå§‹åŒ–界面
        function set_ClearBill() {
            //初始化日期间隔、开始日期、结束日期
            setSelect_HInitTimeCycle();
            //若日期间隔不为 ä»»æ„é—´éš”,则禁用开始日期与结束日期的选择
            var HInitTimeCycle = $("#HInitTimeCycle").val() * 1;
            //初始化日期
            $("#HBeginDate").val(Format(new Date(new Date()), "yyyy-MM-dd"));//提料日期
            $("#HEndDate").val(Format(new Date().setDate(new Date().getDate() + HInitTimeCycle), "yyyy-MM-dd"));//至
            //初始化表格
            set_InitGrid();
            //获取默认车间
            GetDefValByUser();
            //查询
            get_DisplayDate();
            get_DisplaySource();
        }
        //#endregion
        //#region åˆå§‹åŒ–表格方法
        function set_InitGrid() {
            //部门输入框
            tableSelect.render({
                elem: '#HDeptName',//输入框dom选择
                searchKey: '部门名称,HItemID',//查询的列名
                sWhere: " and ç¦ç”¨æ ‡è®° = '' and è½¦é—´æ ‡è®° = 'Y' ",//table搜索sWhere条件 //默认筛选项
                ajaxSelect: function (sWhere) {
                    var data = '';
                    $.ajax({
                        url: GetWEBURL() + '/Gy_Department/list',
                        type: "GET",
                        data: { "sWhere": sWhere, "user": sessionStorage["HMaker"], "Organization": sessionStorage["Organization"] },
                        async: false,
                        success: function (data1) {
                            if (data1.count == 1) {
                                data = data1.data
                            }
                        },
                        error: function () {
                            layer.alert('获取列表失败!', { icon: 15, title: '通信错误' });
                        }
                    });
                    return data;
                },//设置前端分页时可以设置的
                table: {
                    //url: GetWEBURL() + 'Gy_Supplier/page',
                    //where: { user: '翁涛涛', Organization: '浙江智云迈思' },
                    cols: [[
                        { type: 'radio', fixed: 'left' },//需要加这个fixed属性不然点击checkbox会触发行点击导致无法正确点击
                        { field: 'HItemID', title: 'HItemID' },
                        { field: '部门名称', title: '部门名称' },
                    ]],
                    page: true,
                    limit: 5,
                    limits: [5]
                },
                done: function (elem, data) {
                    if (data != []) {
                        $("#HDeptName").val(data.data[0]['部门名称']);
                        $("#HDeptID").val(data.data[0]['HItemID']);
                        get_DisplaySource();
                    }
                }
            })
            option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                , height: 'full-50'
                , page: true
                , cellMinWidth: 90
                , totalRow: true
                , limit: 50
                , limits: [50, 500, 1000, 5000]
                //, loading: false
                , cols: [[
                    { field: 'index', title: '序号', width: 80, sort: true },
                    { field: 'date', title: '日期', width: 120 },
                    { field: 'week', title: '星期', width: 120 },
                    { field: 'workHours', title: '上班时间', width: 120, edit: 'text' }
                ]]
                , done: function (res, curr, count) {
                    soulTable.render(this);
                }
            };
            sourceOption = {
                elem: '#SourceTable'
                //, toolbar: '#toolbarDemo'
                , height: 'full-50'
                , page: false
                , cellMinWidth: 90
                , totalRow: true
                , limit: 50
                , cols: [[
                    { type: 'checkbox', fixed: 'left' },
                    { field: 'HItemID', title: 'HItemID', width: 200, hide: true },
                    { field: '生产资源代码', title: '生产资源代码', width: 120 },
                    { field: '生产资源名称', title: '生产资源名称', width: 120 },
                ]]
                , done: function (res, curr, count) {
                    soulTable.render(this);
                }
            };
        }
        //#endregion
        //#region æŸ¥è¯¢
        function get_DisplayDate() {
            var HBeginDate = $('#HBeginDate').val();
            var HEndDate = $('#HEndDate').val();
            if (!HBeginDate || !HEndDate) {
                layer.msg('请选择开始和结束日期');
                return;
            }
            if (HBeginDate > HEndDate) {
                return layer.msg("开始日期不能小于结束日期!");
            }
            // è®¡ç®—日期差并生成表格数据
            var dateArray = getDateRange(HBeginDate, HEndDate);
            var tableData = [];
            for (var i = 0; i < dateArray.length; i++) {
                tableData.push({
                    index: i + 1,
                    date: dateArray[i].date,
                    week: dateArray[i].week,
                    workHours: 0 // é»˜è®¤ä¸Šç­æ—¶é—´ä¸º0
                });
            }
            option.data = tableData;
            // æ¸²æŸ“表格
            table.render(option)
        }
        function get_DisplaySource() {
            var HDeptID = $("#HDeptID").val();
            if (HDeptID != 0 && HDeptID != "") {
                var sWhere = " and ç¦ç”¨æ ‡è®° != 'Y' and HDeptID=" + HDeptID
                //进入页面显示的缓存列表
                $.ajax({
                    url: GetWEBURL() + '/Gy_Source/list',
                    type: "GET",
                    async: false,
                    data: { "sWhere": sWhere, "user": sessionStorage["HUserName"] },
                    success: function (data1) {
                        if (data1.count == 1) {
                            sourceOption.data = data1.data;
                            table.render(sourceOption);
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
            }
        }
        //#endregion
        //#region ç”Ÿäº§è½¦é—´é€‰æ‹©æŒ‰é’®
        function btnHDeptID() {
            layer.open({
                type: 2 //类型
                , skin: 'layui-layer-rim'//加上边框
                , area: ['90%', '90%']//大小
                , title: '部门列表'//标题
                , shift: 2//弹出动画
                , content: ['../../基础资料/公用基础资料/Gy_DepartmentList.html?Type=1&HOrgName=' + sessionStorage["Organization"] , 'yes']
                , btn: ['确定', '取消']
                , btn1: function (index, layero) {//按钮【按钮一】的回调
                    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    if (checkStatus.data.length === 0) {
                        return layer.msg('请选择数据');
                    }
                    //获取数据
                    $("#HDeptID").val(checkStatus.data[0].HItemID);
                    $("#HDeptName").val(checkStatus.data[0].部门名称);
                    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                }
                , btn2: function (index, layero) { }
                , end: function () {
                    get_DisplaySource();
                }
            })
        }
        //#endregion
        //#region åˆå§‹æ—¥æœŸé—´éš” ä¸‹æ‹‰åˆ—表
        function setSelect_HInitTimeCycle() {
            var valueList = [7,30, 45, 60];
            var titleList = ["近7天","近一月", "近45天", "近60天"];
            var HInitTimeCycle_ArrayList = '<option  value="-1" selected="selected" >任意间隔</option>';
            for (var i = 0; i < valueList.length; i++) {
                HInitTimeCycle_ArrayList += '<option  style="color:blue;" value="' + valueList[i] + '">' + titleList[i] + '</option>';
            }
            $("#HInitTimeCycle").empty();
            $("#HInitTimeCycle").append(HInitTimeCycle_ArrayList);
            $("#HInitTimeCycle").val("7");
            form.render('select');
        }
            //#endregion
        //#region æ—¶é—´åˆ—表相关函数
        function getDateRange(startDate, endDate) {
            var dateArray = [];
            var start = new Date(startDate.replace(/-/g, '/'));
            var end = new Date(endDate.replace(/-/g, '/'));
            while (start <= end) {
                var dateStr = Format(start,"yyyy-MM-dd");
                var weekStr = getWeekDay(start);
                dateArray.push({
                    date: dateStr,
                    week: weekStr
                });
                start.setDate(start.getDate() + 1);
            }
            return dateArray;
        }
        // èŽ·å–æ˜ŸæœŸå‡ 
        function getWeekDay(date) {
            var weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
            return weekDays[date.getDay()];
        }
        //#endregion
        //#region é€šè¿‡ç™»å½•用户获取默认值
        function GetDefValByUser() {
            var index = layer.load();
            $.ajax({
                url: GetWEBURL() + "/Cj_StationInBill/GetDefValByUser",
                type: "GET",
                async: false,
                data: { "Czybm": sessionStorage["Czybm"], "Czymc": sessionStorage["HUserName"] },
                success: function (result) {
                    var data = result.data[0];
                    form.val("formData", {
                        "HDeptID": data.HDeptID,
                        "HDeptName": data.部门名称,
                    });
                    layer.close(index);
                }
                , error: function () {
                    layer.close(index);
                    layer.msg("接口请求失败");
                }
            })
        }
            //#endregion
        //#region ä¿å­˜æ–¹æ³•
        function set_SaveBill() {
            var checkStatus = table.checkStatus('SourceTable')
                , data = checkStatus.data;
            var sSubStr = JSON.stringify(table.cache["mainTable"]);
            var sMainSub = JSON.stringify(data) + ';' + sSubStr + ';' + sessionStorage["HUserName"];
            if (data.length > 0) {
                $.ajax({   //异步请求
                    type: "POST",  //请求类型
                    url: GetWEBURL() + "MaterOutEntryReport/Sc_ShopCalendarSaveList", //方法所在页面和方法名
                    async: true,            //是否异步进行请求
                    data: { "sMainSub": sMainSub },    // å°†hmaterid作为请求参数发送发送到服务器的数据
                    dataType: "json",              //类型为json
                    success: function (data) {// å½“请求成功时执行的回调函数
                        if (data.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ   // æ£€æŸ¥è¿”回的数据中count属性的值是否为1,这可能表示操作成功
                            layer.msg("成功", { icon: 1 }); //使用layer插件显示一个消息,图标为1(通常表示成功)
                        }
                        else {
                            layer.alert(data.Message, { icon: 5 });// å¦‚果操作未成功,显示一个包含错误信息的警告框,图标为5(通常表示错误)
                        }
                        layer.closeAll("loading");  //关闭所有正在显示的加载层
                    },
                    error: function (err) { // å½“请求失败时执行的回调函数
                        layer.alert("错误:" + err, { icon: 5 });  //示一个包含错误信息的警告框,图标为5
                        console.log("Reason" + sMainStr); //在控制台打印错误信息
                    }
                })
            } else {
                layer.msg("请选择至少一个工作资源")
            }
        }
            //#endregion
        //#endregion
        //以上是layui模块
    });
    function GetHDeptNameValue(obj)  //返回车间
    {
        $("#HDeptID").val(obj[0].HItemID);//车间id
        $("#HDeptName").val(obj[0].部门名称);//车间名称
    }
</script>
WebTM/views/Éú²ú¹ÜÀí/Éú²ú¼Æ»®Æ½Ì¨/Sc_ShopCalendar.html
@@ -57,6 +57,7 @@
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btn_BulkEditWorkTime" id="btn_BulkEditWorkTime" style="padding:0 5px">批改上班工时</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btn_BulkEditWorkTimeNew" id="btn_BulkEditWorkTimeNew" style="padding:0 5px">批量修改</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btn_Import" id="btn_Import" style="padding:0 5px">导入</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btn_Exit" id="btn_Exit" style="padding:0 5px">退出</button>
                                <!--<button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>-->
@@ -265,6 +266,20 @@
                })
            });
            //批量修改上班工时
            form.on('submit(btn_BulkEditWorkTimeNew)', function (data) {
                layer.open({
                    type: 2
                    , skin: "layui-layer-rim" //加上边框
                    , title: "批改上班工时"  //标题
                    , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                    , shift: 2 //弹出动画
                    , area: ["50%", "80%"] //窗体大小
                    , maxmin: true //设置最大最小按钮是否显示
                    , content: ['./Sc_BulkEditWorkTimeNew.html', "yes"]
                })
            });
            //导入         
            form.on('submit(btn_Import)', function (data) {
                layer.open({