1
zrg
2025-06-09 f0892b93ea156d99b908d2620d330c4b765fa50d
WebTM/views/Éú²ú¹ÜÀí/Éú²ú¼Æ»®Æ½Ì¨/Sc_BulkEditWorkTimeNew.html
New file
@@ -0,0 +1,474 @@
<!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();
        })
        //#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"));//至
            } 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_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: [[
                    { type: 'numbers', title: '序号', width: 80},
                    { field: 'week', title: '星期', width: 120 },
                    { field: 'workHours', title: '上班时间', width: 120, edit: 'text' }
                ]]
                , data: [
                    { "week": "星期日", "workHours": 0 },
                    { "week": "星期一", "workHours": 0 },
                    { "week": "星期二", "workHours": 0 },
                    { "week": "星期三", "workHours": 0 },
                    { "week": "星期四", "workHours": 0 },
                    { "week": "星期五", "workHours": 0 },
                    { "week": "星期六", "workHours": 0 }
                ]
                , done: function (res, curr, count) {
                    soulTable.render(this);
                }
            };
            table.render(option);
            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 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 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 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 generateWorkHoursData(startDate, endDate, originalData) {
            const result = [];
            const currentDate = new Date(startDate);
            const lastDate = new Date(endDate);
            // åˆ›å»ºä¸€ä¸ªæ˜ŸæœŸæ˜ å°„表(中文星期名 -> workHours)
            const weekHoursMap = {};
            originalData.forEach(item => {
                weekHoursMap[item.week] = item.workHours;
            });
            // éåŽ†æ—¥æœŸèŒƒå›´
            while (currentDate <= lastDate) {
                const dayOfWeek = currentDate.toLocaleDateString('zh-CN', { weekday: 'long' }); // èŽ·å–ä¸­æ–‡æ˜ŸæœŸåï¼Œå¦‚ "星期一"
                const formattedDate = currentDate.toISOString().split('T')[0]; // æ ¼å¼åŒ–为 YYYY-MM-DD
                result.push({
                    date: formattedDate,
                    week: dayOfWeek,
                    workHours: weekHoursMap[dayOfWeek] || 0, // å¦‚果没有匹配的星期,默认 0
                });
                currentDate.setDate(currentDate.getDate() + 1); // ä¸‹ä¸€å¤©
            }
            return result;
        }
        //#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 = table.cache["mainTable"];
            //根据开始时间结束日期生成新数据
            const newData = generateWorkHoursData($("#HBeginDate").val(), $("#HEndDate").val(), sSubStr);
            if (newData.length == 0) {
                return layer.msg("请检查开始时间和结束日期是否合理");
            }
            var sMainSub = JSON.stringify(data) + ';' + JSON.stringify(newData) + ';' + 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>