wtt
2026-04-08 1f0f42d549a5a5759934096ec40cb70c73531da9
模具每日使用清单,模具使用情况报表
2个文件已添加
5个文件已修改
1386 ■■■■■ 已修改文件
WebTM/WebTM.csproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/模治具管理/器具报表/Sc_MouldDailyUseReport.html 829 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/模治具管理/器具报表/Sc_MouldMonthUseReport.html 541 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/模治具管理/模治具仓库管理/Sc_MouldProdOutBillEdit.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/多级审批/审核流程单/Xt_CheckFlowEdit.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/质量管理/首件检验单/QC_FirstPieceCheckBillList2.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj
@@ -679,6 +679,8 @@
    <Content Include="views\案例代码\华远\HY_HistogramReport_ForPCSCheckNote.html" />
    <Content Include="views\案例代码\华远\HY_HistogramReport.html" />
    <Content Include="views\案例代码\华远\HY_InterfaceTest.html" />
    <Content Include="views\模治具管理\器具报表\Sc_MouldDailyUseReport.html" />
    <Content Include="views\模治具管理\器具报表\Sc_MouldMonthUseReport.html" />
    <Content Include="views\模治具管理\器具报表\Sc_MoldMainoverdueWarnReport.html" />
    <Content Include="views\模治具管理\器具领用申请单\Sc_MouldOutRequestBillEdit.html" />
    <Content Include="views\模治具管理\器具领用申请单\Sc_MouldOutRequestBillList.html" />
WebTM/WebTM.csproj.user
@@ -7,7 +7,7 @@
    <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
    <NameOfLastUsedPublishProfile>D:\智云LMes\MESWMS-LayUI\WebTM\Properties\PublishProfiles\SWETM.pubxml</NameOfLastUsedPublishProfile>
    <NameOfLastUsedPublishProfile>C:\Users\19858\Desktop\智云迈思\MES-WEB-LayUI\WebTM\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
    <ProjectView>ProjectFiles</ProjectView>
    <ProjectView>ShowAllFiles</ProjectView>
    <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
    <UseIISExpress>true</UseIISExpress>
    <Use64BitIISExpress />
WebTM/views/Ä£Öξ߹ÜÀí/Æ÷¾ß±¨±í/Sc_MouldDailyUseReport.html
New file
@@ -0,0 +1,829 @@
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>每日使用情况报表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.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/HideButton.js"></script>
    <script src='../../../layuiadmin/lib/extend/echarts.min.js'></script>
    <style type="text/css">
        * { margin: 0; padding: 0; box-sizing: border-box; }
        html, body { height: 100%; }
        .page-container {
            height: 100%;
            padding: 10px;
            background: linear-gradient(180deg, #eef2f5 0%, #e4e8eb 100%);
            display: flex;
            flex-direction: column;
        }
        .query-bar {
            background: #fff;
            padding: 10px 15px;
            border-radius: 6px;
            margin-bottom: 10px;
            box-shadow: 0 1px 4px rgba(0,0,0,0.08);
            flex-shrink: 0;
        }
        .summary-row {
            display: flex;
            flex-wrap: wrap;
            margin-bottom: 10px;
            flex-shrink: 0;
        }
        .chart-container {
            background: #fff;
            border-radius: 6px;
            padding: 8px;
            box-shadow: 0 1px 4px rgba(0,0,0,0.08);
            flex: 1;
            overflow: hidden;
            min-height: 0;
        }
        .chart-row { display: flex; height: 100%; }
        .chart-box { flex: 1; margin: 4px; border: 1px solid #eee; border-radius: 4px; background: #fafbfc; }
        /* æ±‡æ€»ç»Ÿè®¡å¡ç‰‡æ ·å¼ */
        .summary-card {
            margin: 4px;
            border: 1px solid #eee;
            border-radius: 4px;
            background: #fafbfc;
            text-align: center;
            padding: 8px 4px;
            min-width: 200px;
        }
        .summary-card.total-card {
            background: linear-gradient(135deg, #1e9fff 0%, #5fb3ff 100%);
            border-color: #1e9fff;
        }
        .summary-card.total-card .summary-number,
        .summary-card.total-card .summary-label { color: #fff; }
        .summary-number { font-size: 16px; font-weight: bold; color: #1e9fff; }
        .summary-label { font-size: 11px; color: #888; margin-top: 2px; }
    </style>
</head>
<body>
    <div class="page-container">
        <!-- æŸ¥è¯¢æ  -->
        <div class="query-bar">
            <form class="layui-form" action="" lay-filter="component-form-group">
                <div class="layui-inline">
                    <label class="layui-form-label" style="width: 75px;">开始日期</label>
                    <div class="layui-input-inline">
                        <input type="date" class="layui-input" id="HBeginDate" style="width:140px;">
                    </div>
                </div>
                <div class="layui-inline">
                    <label class="layui-form-label" style="width: 75px;">结束日期</label>
                    <div class="layui-input-inline">
                        <input type="date" class="layui-input" id="HEndDate" style="width:140px;">
                    </div>
                </div>
                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
                </button>
                <button class="layui-btn layui-btn-primary layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch">重置</button>
            </form>
        </div>
        <!-- æ±‡æ€»ç»Ÿè®¡ï¼ˆåŠ¨æ€ç”Ÿæˆï¼‰ -->
        <div class="summary-row" id="summaryRow"></div>
        <!-- å›¾è¡¨åŒºåŸŸï¼ˆåŠ¨æ€ç”Ÿæˆï¼‰ -->
        <div class="chart-container" id="chartContainer"></div>
    </div>
    <script>
        layui.config({
            base: '../../../layuiadmin/'
        }).extend({
            index: 'lib/index',
        }).use(['index', 'form', 'element'], function () {
            var $ = layui.$, layer = layui.layer, form = layui.form;
            var chartInstances = {};
            var chartConfigKeys = []; // å­˜å‚¨é…ç½®key顺序
            //#region ========== å›¾è¡¨é…ç½®ï¼ˆæ–°å¢žå›¾è¡¨åªéœ€åœ¨æ­¤å¤„添加配置)==========
            /*
             * é…ç½®è¯´æ˜Žï¼š
             * - chartTitle: å›¾è¡¨æ ‡é¢˜
             * - chartType: å›¾è¡¨ç±»åž‹ (pie/bar)
             * - chartColors: å›¾è¡¨é¢œè‰²æ•°ç»„
             * - api: æŽ¥å£é…ç½®
             *   - url: æŽ¥å£åœ°å€
             *   - method: è¯·æ±‚方法 (GET/POST)
             *   - buildParams: æž„建参数的函数(beginDate, endDate)
             *   - dataPath: æ•°æ®åœ¨è¿”回结果中的路径,如 'data' æˆ– 'data.list'
             *   - successCode: æˆåŠŸçš„çŠ¶æ€ç 
             * - statusMap: çŠ¶æ€æ˜ å°„é…ç½®
             *   - name: çŠ¶æ€åç§°
             *   - condition: åˆ¤æ–­æ¡ä»¶è¡¨è¾¾å¼
             *
             * æ–°å¢žå›¾è¡¨åªéœ€åœ¨æ­¤å¤„添加配置,页面会自动生成对应的汇总卡片和图表
             */
            var ChartConfig = {
                // é¢†ç”¨å•
                lingyong: {
                    chartTitle: '领用单统计',
                    chartType: 'pie',
                    chartColors: ['#5470c6', '#91cc75', '#fac858', '#ee6666'],
                    api: {
                        url: '/Sc_MouldProdOutBillController/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'" + " and å¾€æ¥ç±»åž‹='部门'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999,
                                Type: '3802'
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null && (关闭人=="" || å…³é—­äºº==null)' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // é€€åº“单
                tuiku: {
                    chartTitle: '退库单统计',
                    chartType: 'pie',
                    chartColors: ['#73c0de', '#3ba272', '#fc8452', '#9a60b4'],
                    api: {
                        url: '/Sc_MouldProdBackBillController/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'" + " and å¾€æ¥ç±»åž‹='部门'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999,
                                Type: '3803'
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // è°ƒæ‹¨å•
                diaobo: {
                    chartTitle: '调拨单统计',
                    chartType: 'pie',
                    chartColors: ['#ea7ccc', '#5470c6', '#91cc75', '#fac858'],
                    api: {
                        url: '/Sc_MouldProdMoveBillController/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999,
                                Type: '3814'
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // å€Ÿå‡ºå•
                jiechu: {
                    chartTitle: '借出单统计',
                    chartType: 'pie',
                    chartColors: ['#fc8452', '#73c0de', '#3ba272', '#ee6666'],
                    api: {
                        url: '/Sc_MouldProdOutBillController/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'" + " and å¾€æ¥ç±»åž‹='供应商'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999,
                                Type: '3802'
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // å½’还单
                guihuan: {
                    chartTitle: '归还单统计',
                    chartType: 'pie',
                    chartColors: ['#9a60b4', '#ea7ccc', '#5470c6', '#fac858'],
                    api: {
                        url: '/Sc_MouldProdBackBillController/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'" + " and å¾€æ¥ç±»åž‹='供应商'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999,
                                Type: '3803'
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // ä¸Šæ¨¡å•
                shangmo: {
                    chartTitle: '上模单统计',
                    chartType: 'pie',
                    chartColors: ['#3ba272', '#fc8452', '#73c0de', '#ee6666'],
                    api: {
                        url: '/Sc_MouldUpperBill/Sc_MouldUpperBillListPage',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // ä¸‹æ¨¡å•
                xiamo: {
                    chartTitle: '下模单统计',
                    chartType: 'pie',
                    chartColors: ['#5470c6', '#91cc75', '#fac858', '#ee6666'],
                    api: {
                        url: '/Sc_MouldUpperBill/Sc_MouldLowerBillListPage',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // ä¿å…»è®°å½•
                baoyang: {
                    chartTitle: '保养记录统计',
                    chartType: 'pie',
                    chartColors: ['#73c0de', '#3ba272', '#fc8452', '#ee6666'],
                    api: {
                        url: '/Sc_MouldMaintainBill/GetMouldMaintainBillListPage',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '待保养', condition: '1==1' }
                    ]
                },
                // ç‚¹æ£€è®°å½•
                dianjian: {
                    chartTitle: '点检记录统计',
                    chartType: 'pie',
                    chartColors: ['#91cc75', '#fac858', '#5470c6', '#ee6666'],
                    api: {
                        url: '/Sc_MouldDotCheckBill/GetMouldDotCheckBillListPage',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '异常', condition: '1==1' }
                    ]
                },
                // ç»´ä¿®è®°å½•
                weixiu: {
                    chartTitle: '维修记录统计',
                    chartType: 'pie',
                    chartColors: ['#3ba272', '#fc8452', '#73c0de', '#9a60b4'],
                    api: {
                        url: '/Sb_MouldRepairWorkBill/GetMouldRepairWorkBillListPage',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // å¯¿å‘½è°ƒæ•´å•
                shoumingtiaozheng: {
                    chartTitle: '寿命调整单',
                    chartType: 'pie',
                    chartColors: ['#5470c6', '#fac858', '#ee6666', '#73c0de'],
                    api: {
                        url: '/Sc_MouldLifeChangeBill/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                Organization: sessionStorage["Organization"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                },
                // å¯¿å‘½è€—用单
                shouminghaoyon: {
                    chartTitle: '寿命耗用单',
                    chartType: 'pie',
                    chartColors: ['#91cc75', '#3ba272', '#fc8452', '#ea7ccc'],
                    api: {
                        url: '/Sc_MouldLifeUseBill/page',
                        method: 'GET',
                        buildParams: function(beginDate, endDate) {
                            return {
                                sWhere: " and æ—¥æœŸ between '" + beginDate + "' and '" + endDate + "'",
                                user: sessionStorage["HUserName"] || '',
                                Organization: sessionStorage["Organization"] || '',
                                page: 1,
                                size: 999999
                            };
                        },
                        dataPath: 'data',
                        successCode: 1
                    },
                    statusMap: [
                        { name: '创建', condition: '审核人=="" || å®¡æ ¸äºº==null' },
                        { name: '已审核', condition: '审核人!="" && å®¡æ ¸äºº!=null' },
                        { name: '已关闭', condition: '关闭人!="" && å…³é—­äºº!=null' }
                    ]
                }
            };
            //#endregion
            //#region ========== åŠ¨æ€ç”Ÿæˆé¡µé¢ç»“æž„ ==========
            /**
             * æ ¹æ®ChartConfig动态生成汇总卡片和图表容器
             */
            function generatePageStructure() {
                // èŽ·å–é…ç½®key顺序
                chartConfigKeys = [];
                for (var key in ChartConfig) {
                    chartConfigKeys.push(key);
                }
                var chartCount = chartConfigKeys.length;
                // ç”Ÿæˆæ±‡æ€»å¡ç‰‡
                generateSummaryCards(chartCount);
                // ç”Ÿæˆå›¾è¡¨å®¹å™¨
                generateChartBoxes(chartCount);
                // è®¡ç®—高度
                calculateHeights(chartCount);
            }
            /**
             * ç”Ÿæˆæ±‡æ€»å¡ç‰‡
             */
            function generateSummaryCards(chartCount) {
                var $summaryRow = $('#summaryRow');
                $summaryRow.empty();
                // æ€»è®¡å¡ç‰‡
                var cardWidth = calculateCardWidth(chartCount + 1);
                $summaryRow.append('<div class="summary-card total-card" id="card-total" style="width:' + cardWidth + '">' +
                    '<div class="summary-number">0</div><div class="summary-label">总计</div></div>');
                // å„类型卡片
                for (var i = 0; i < chartConfigKeys.length; i++) {
                    var key = chartConfigKeys[i];
                    var config = ChartConfig[key];
                    var label = config.chartTitle.replace('统计', '').replace('单', '');
                    $summaryRow.append('<div class="summary-card" id="card-' + key + '" style="width:' + cardWidth + '">' +
                        '<div class="summary-number">0</div><div class="summary-label">' + label + '</div></div>');
                }
            }
            /**
             * è®¡ç®—卡片宽度
             */
            function calculateCardWidth(count) {
                // æ¯è¡Œæœ€å¤š12个,根据数量计算宽度
                var perRow = Math.min(count, 12);
                return 'calc(' + (100 / perRow) + '% - 8px)';
            }
            /**
             * ç”Ÿæˆå›¾è¡¨å®¹å™¨ï¼ˆæ¯è¡Œ4个)
             */
            function generateChartBoxes(chartCount) {
                var $chartContainer = $('#chartContainer');
                $chartContainer.empty();
                var colsPerRow = 4; // æ¯è¡Œ4个图表
                var rows = Math.ceil(chartCount / colsPerRow);
                for (var row = 0; row < rows; row++) {
                    var $rowDiv = $('<div class="chart-row"></div>');
                    for (var col = 0; col < colsPerRow; col++) {
                        var index = row * colsPerRow + col;
                        if (index < chartCount) {
                            var key = chartConfigKeys[index];
                            $rowDiv.append('<div class="chart-box" id="chart-' + key + '"></div>');
                        } else {
                            // å¡«å……空白盒子保持布局
                            $rowDiv.append('<div class="chart-box" style="visibility:hidden;"></div>');
                        }
                    }
                    $chartContainer.append($rowDiv);
                }
            }
            /**
             * è®¡ç®—各部分高度
             */
            function calculateHeights(chartCount) {
                var rows = Math.ceil(chartCount / 4);
                // chart-container已通过flex:1自动填充,只需设置每行高度
                $('.chart-row').css('height', (100 / rows) + '%');
            }
            //#endregion
            //#region ========== é€šç”¨æ•°æ®èŽ·å–æ–¹æ³• ==========
            function getValueByPath(obj, path) {
                if (!path) return obj;
                var keys = path.split('.');
                var result = obj;
                for (var i = 0; i < keys.length; i++) {
                    if (result && result[keys[i]] !== undefined) {
                        result = result[keys[i]];
                    } else {
                        return null;
                    }
                }
                return result;
            }
            function fetchChartData(chartKey, beginDate, endDate) {
                var config = ChartConfig[chartKey];
                if (!config) return Promise.resolve([]);
                return new Promise(function(resolve) {
                    var params = {};
                    if (config.api.buildParams) {
                        params = config.api.buildParams(beginDate, endDate);
                    }
                    $.ajax({
                        url: GetWEBURL() + config.api.url,
                        type: config.api.method || 'GET',
                        data: params,
                        success: function(result) {
                            var successCode = config.api.successCode || 1;
                            var dataPath = config.api.dataPath || 'data';
                            if (result.code == successCode || result.count == successCode) {
                                var data = getValueByPath(result, dataPath);
                                resolve(data || []);
                            } else {
                                resolve([]);
                            }
                        },
                        error: function() {
                            resolve([]);
                        }
                    });
                });
            }
            function countByStatusConfig(dataList, config) {
                var result = [];
                var statusMap = config.statusMap;
                for (var i = 0; i < statusMap.length; i++) {
                    var statusItem = statusMap[i];
                    var count = 0;
                    for (var j = 0; j < dataList.length; j++) {
                        if (evalCondition(dataList[j], statusItem.condition)) {
                            count++;
                        }
                    }
                    result.push({
                        name: statusItem.name,
                        value: count
                    });
                }
                return result;
            }
            function evalCondition(item, condition) {
                if (!condition) return true;
                if (condition.indexOf('==""') > -1 || condition.indexOf('==null') > -1) {
                    var fieldMatch = condition.match(/(\S+)==""/);
                    if (fieldMatch) {
                        var field = fieldMatch[1];
                        return !item[field] || item[field] === '';
                    }
                }
                if (condition.indexOf('!=""') > -1 || condition.indexOf('!=null') > -1) {
                    var notEmptyMatch = condition.match(/(\S+)!=""/);
                    if (notEmptyMatch) {
                        var field = notEmptyMatch[1];
                        return item[field] && item[field] !== '';
                    }
                }
                var equalMatch = condition.match(/(\S+)==\"([^\"]+)\"/);
                if (equalMatch) {
                    var field = equalMatch[1];
                    var value = equalMatch[2];
                    return item[field] === value;
                }
                return condition === '1==1';
            }
            function fetchAllChartData(beginDate, endDate) {
                var promises = [];
                var results = {};
                for (var i = 0; i < chartConfigKeys.length; i++) {
                    var key = chartConfigKeys[i];
                    (function(chartKey) {
                        var promise = fetchChartData(chartKey, beginDate, endDate).then(function(data) {
                            results[chartKey] = countByStatusConfig(data, ChartConfig[chartKey]);
                        });
                        promises.push(promise);
                    })(key);
                }
                return Promise.all(promises).then(function() {
                    return results;
                });
            }
            //#endregion
            //#region ========== å›¾è¡¨æ¸²æŸ“ ==========
            function renderPieChart(chartId, title, data, colors) {
                var chartDom = document.getElementById(chartId);
                if (!chartDom) return;
                var chart = echarts.init(chartDom);
                chartInstances[chartId] = chart;
                var pieData = data.map(function(item) {
                    return { name: item.name, value: item.value };
                });
                chart.setOption({
                    title: {
                        text: title,
                        left: 'center',
                        top: 5,
                        textStyle: { fontSize: 12, fontWeight: 'bold' }
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{b}: {c} ({d}%)'
                    },
                    series: [{
                        type: 'pie',
                        radius: ['30%', '50%'],
                        center: ['50%', '55%'],
                        data: pieData,
                        itemStyle: { borderRadius: 3, borderColor: '#fff', borderWidth: 1 },
                        label: { show: true, fontSize: 10, formatter: '{b}\n{c}' },
                        color: colors || ['#91cc75', '#fac858', '#ee6666', '#73c0de']
                    }]
                });
            }
            function renderAllCharts(data) {
                for (var i = 0; i < chartConfigKeys.length; i++) {
                    var key = chartConfigKeys[i];
                    var config = ChartConfig[key];
                    if (config.chartType === 'pie') {
                        renderPieChart('chart-' + key, config.chartTitle, data[key] || [], config.chartColors);
                    }
                }
                updateSummaryCards(data);
            }
            function updateSummaryCards(data) {
                var grandTotal = 0;
                for (var i = 0; i < chartConfigKeys.length; i++) {
                    var key = chartConfigKeys[i];
                    var config = ChartConfig[key];
                    var total = 0;
                    if (data[key]) {
                        for (var j = 0; j < data[key].length; j++) {
                            total += data[key][j].value;
                        }
                    }
                    grandTotal += total;
                    $('#card-' + key).find('.summary-number').text(total);
                }
                $('#card-total').find('.summary-number').text(grandTotal);
            }
            //#endregion
            //#region ========== äº‹ä»¶ç»‘定 ==========
            form.on('submit(btnReSearch)', function(data) {
                set_ClearQuery();
            });
            form.on('submit(btnSearch)', function(data) {
                get_FastQuery();
            });
            function set_ClearBill() {
                // å…ˆç”Ÿæˆé¡µé¢ç»“æž„
                generatePageStructure();
                // è®¾ç½®æ—¥æœŸå¹¶æŸ¥è¯¢
                var today = Format(new Date(), "yyyy-MM-dd");
                $("#HBeginDate").val(Format(new Date(new Date().setDate(new Date().getDate() - 5)), "yyyy-MM-dd"));
                $("#HEndDate").val(today);
                get_FastQuery();
            }
            function get_FastQuery() {
                var wait = layer.load();
                var beginDate = $("#HBeginDate").val();
                var endDate = $("#HEndDate").val();
                fetchAllChartData(beginDate, endDate).then(function(statsData) {
                    var hasData = false;
                    for (var i = 0; i < chartConfigKeys.length; i++) {
                        var key = chartConfigKeys[i];
                        if (statsData[key] && statsData[key].length > 0) {
                            var sum = 0;
                            for (var j = 0; j < statsData[key].length; j++) {
                                sum += statsData[key][j].value;
                            }
                            if (sum > 0) {
                                hasData = true;
                                break;
                            }
                        }
                    }
                    if (hasData) {
                        renderAllCharts(statsData);
                    } else {
                        renderAllCharts(getMockData());
                    }
                    layer.close(wait);
                }).catch(function() {
                    renderAllCharts(getMockData());
                    layer.close(wait);
                });
            }
            function set_ClearQuery() {
                var today = Format(new Date(), "yyyy-MM-dd");
                $("#HBeginDate").val(today);
                $("#HEndDate").val(today);
                get_FastQuery();
            }
            //#endregion
            //#region ========== æ¨¡æ‹Ÿæ•°æ® ==========
            function getMockData() {
                var mockData = {};
                for (var i = 0; i < chartConfigKeys.length; i++) {
                    var key = chartConfigKeys[i];
                    var config = ChartConfig[key];
                    mockData[key] = [];
                    for (var j = 0; j < config.statusMap.length; j++) {
                        mockData[key].push({
                            name: config.statusMap[j].name,
                            value: Math.floor(Math.random() * 20) + 5
                        });
                    }
                }
                return mockData;
            }
            //#endregion
            // åˆå§‹åŒ–
            set_ClearBill();
            // çª—口大小变化时重新渲染图表
            window.onresize = function() {
                setTimeout(function() {
                    for (var key in chartInstances) {
                        if (chartInstances[key]) {
                            chartInstances[key].resize();
                        }
                    }
                }, 100);
            };
        });
    </script>
</body>
</html>
WebTM/views/Ä£Öξ߹ÜÀí/Æ÷¾ß±¨±í/Sc_MouldMonthUseReport.html
New file
@@ -0,0 +1,541 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>模具使用情况报表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <!-- æ³¨æ„ï¼šæ‰€æœ‰å¼•用路径保持与原项目一致,确保功能完整 -->
    <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>
    <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/SetColumn.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card">
                <div class="layui-card-body">
                    <form class="layui-form" action="" lay-filter="component-form-group" autocomplete="off">
                        <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">生产车间</label>
                                    <div class="layui-input-block">
                                        <select name="HDeptID" id="HDeptID" lay-verify="required" lay-search class="layui-input ForFilteringSchemes">-->
                                            <!-- åŠ¨æ€æ¸²æŸ“è½¦é—´ -->
                                        <!--</select>
                                    </div>
                                </div>-->
                                <!-- ç‰©æ–™ -->
                                <div class="layui-inline">
                                    <label class="layui-form-label">模具</label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" name="HMouldNumber" id="HMouldNumber" style="float:left;width:150px;">
                                        <input type="hidden" class="layui-input" name="HMouldID" id="HMouldID" value="0">
                                        <button type="button" lay-submit="" class="layui-btn" lay-filter="HMaterList" style="width:40px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                        </button>
                                    </div>
                                </div>
                                <!--<div class="layui-inline">
                                    <label class="layui-form-label">费用项目</label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" name="HItMoneyName" id="HItMoneyName" style="float:left;width:150px;">
                                        <input type="hidden" class="layui-input" name="HItMoneyID" id="HItMoneyID" value="0">
                                        <button type="button" lay-submit="" class="layui-btn" lay-filter="HItemMoneyList" style="width:40px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                        </button>
                                    </div>
                                </div>-->
                                <!--<div class="layui-inline">
                                    <label class="layui-form-label">成本对象 </label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" name="HCostObjectName" id="HCostObjectName" style="float:left;width:150px;">
                                        <input type="hidden" class="layui-input" name="HCostObjectID" id="HCostObjectID" value="0">
                                        <button type="button" lay-submit="" class="layui-btn" lay-filter="HCostobjList" style="width:40px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                        </button>
                                    </div>
                                </div>-->
                                <!--<div class="layui-inline">
                                    <label class="layui-form-label">工序</label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" name="HProcName" id="HProcName" style="float:left;width:150px;">
                                        <input type="hidden" class="layui-input" name="HProcID" id="HProcID" value="0">
                                        <button type="button" lay-submit="" class="layui-btn" lay-filter="HProcList" style="width:40px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                        </button>
                                    </div>
                                </div>-->
                                <!-- å¼€å§‹å¹´æœˆ -->
                                <div class="layui-inline" style="margin-left: 20px;">
                                    <label class="layui-form-label">开始年月</label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" id="ID-laydate-start-month" placeholder="选择开始年月" readonly>
                                    </div>
                                </div>
                                <!-- ç»“束年月 -->
                                <div class="layui-inline" style="margin-left: 20px;">
                                    <label class="layui-form-label">结束年月</label>
                                    <div class="layui-input-inline">
                                        <input type="text" class="layui-input" id="ID-laydate-end-month" placeholder="选择结束年月" readonly>
                                    </div>
                                </div>
                                <!-- æŸ¥è¯¢æŒ‰é’® -->
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <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="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                    </form>
                    <div style="margin-top: 10px;">
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <!-- è¡¨æ ¼å¤´å·¥å…·æ  -->
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload2"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="get_export2"><i class="layui-icon layui-icon-export"></i>导出</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn2"><i class="layui-icon layui-icon-form"></i>列设置</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_SouceExcel" id="set_SouceExcel"><i class="layui-icon layui-icon-delete"></i>导入</button>
                            </div>
                        </script>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script>
        layui.config({
            base: '../../../layuiadmin/'
        }).extend({
            index: 'lib/index',
        }).use(['index', 'form', 'table', 'element', 'laydate', 'soulTable', 'tableSelect'], function () {
            var $ = layui.$,
                admin = layui.admin,
                layer = layui.layer,
                table = layui.table,
                form = layui.form,
                element = layui.element,
                laydate = layui.laydate,
                soulTable = layui.soulTable,
                tableSelect = layui.tableSelect;
            // æ¨¡å—名(用于列设置存储)
            var HModName = "Sc_MouldMonthUseReport";
            // è¡¨æ ¼é€‰é¡¹
            var option = {
                elem: '#mainTable',
                toolbar: '#toolbarDemo',
                height: 'full-120',      // é€‚当留出底部空间
                page: true,
                cellMinWidth: 90,
                totalRow: true,
                limit: 500,
                limits: [50, 500, 5000, 20000],
                done: function (res, curr, count) {
                    soulTable.render(this);
                },
                cols: [[]]
            };
            // å¯åŠ¨é¡µé¢
            initPage();
            function initPage() {
                // æ¸²æŸ“车间下拉框
                loadDeptSelect();
                // è®¾ç½®é»˜è®¤æ—¥æœŸ: å¼€å§‹å¹´æœˆä¸º7个月前,结束年月为今天
                var currentDate = new Date();
                var lastMonth = new Date(currentDate);
                lastMonth.setMonth(currentDate.getMonth() - 6);
                // æ–°å¢žï¼šæ¸²æŸ“开始年月选择器
                laydate.render({
                    elem: '#ID-laydate-start-month',
                    type: 'month',
                    format: 'yyyy-MM',
                    value: lastMonth,
                    done: function (value, date) {
                        // å¯ä»¥é€‰æ‹©åœ¨è¿™é‡Œè§¦å‘查询
                        // getFastQuery(2);
                    }
                });
                // æ–°å¢žï¼šæ¸²æŸ“结束年月选择器
                laydate.render({
                    elem: '#ID-laydate-end-month',
                    type: 'month',
                    format: 'yyyy-MM',
                    value: currentDate,
                    done: function (value, date) {
                        // å¯ä»¥é€‰æ‹©åœ¨è¿™é‡Œè§¦å‘查询
                        // getFastQuery(2);
                    }
                });
                getFastQuery(2);
                // é‡æ–°æ¸²æŸ“表单元素(select等)
                form.render('select');
            }
            // èŽ·å–è½¦é—´ä¸‹æ‹‰
            function loadDeptSelect() {
                $.ajax({
                    type: "GET",
                    url: GetWEBURL() + "/Sc_ICMOBill/GetHDeptList",
                    async: false,
                    data: { "HOrgID": sessionStorage["OrganizationID"] || 1 }, // é»˜è®¤ç»„织1
                    success: function (result) {
                        var html = '<option value="0" style="color:red;" selected>全部车间</option>';
                        if (result.count == 1 && result.data) {
                            var data = result.data;
                            for (var i = 0; i < data.length; i++) {
                                html += '<option style="color:blue;" value="' + data[i].HItemID + '">' + data[i].HName + '</option>';
                            }
                        }
                        $("#HDeptID").html(html);
                        form.render('select');
                    },
                    error: function () {
                        layer.alert('获取车间列表失败', { icon: 2 });
                    }
                });
            }
            // ä¿®æ”¹åŽçš„getFastQuery函数
            function getFastQuery(type) {
                // ä¿®æ”¹ï¼šä»Žå¹´æœˆé€‰æ‹©å™¨èŽ·å–å€¼ï¼Œè€Œä¸æ˜¯ä»Žæ—¥æœŸè¾“å…¥æ¡†
                var HStartYearMonth = $("#ID-laydate-start-month").val();
                var HEndYearMonth = $("#ID-laydate-end-month").val();
                // æ–°å¢žï¼šéªŒè¯æ˜¯å¦é€‰æ‹©äº†å¼€å§‹å¹´æœˆ
                if (!HStartYearMonth) {
                    layer.msg('请选择开始年月', { icon: 2 });
                    return;
                }
                // æ–°å¢žï¼šéªŒè¯æ˜¯å¦é€‰æ‹©äº†ç»“束年月
                if (!HEndYearMonth) {
                    layer.msg('请选择结束年月', { icon: 2 });
                    return;
                }
                // æ–°å¢žï¼šè§£æžå¼€å§‹å¹´æœˆä¸ºå¹´å’Œæœˆ
                var startParts = HStartYearMonth.split('-');
                var HStartYear = startParts[0];
                var HStartPeriod = startParts[1];
                // æ–°å¢žï¼šè§£æžç»“束年月为年和月
                var endParts = HEndYearMonth.split('-');
                var HEndYear = endParts[0];
                var HEndPeriod = endParts[1];
                // æ–°å¢žï¼šéªŒè¯å¹´æœˆèŒƒå›´æ˜¯å¦æœ‰æ•ˆ
                var startValue = parseInt(HStartYear) * 100 + parseInt(HStartPeriod);
                var endValue = parseInt(HEndYear) * 100 + parseInt(HEndPeriod);
                if (startValue > endValue) {
                    layer.msg('开始年月不能大于结束年月', { icon: 2 });
                    return;
                }
                var HCostObjID = $("#HMouldID").val() || '0';
                var HWorkShopID = $("#HDeptID").val() || '0';
                var HWorkShopID = $("#HDeptID").val() || '0';
                var HProcID = $("#HProcID").val() || '0';
                // ä¿®æ”¹ï¼šå­˜å‚¨è¿‡ç¨‹å‚数改为开始年、开始月、结束年、结束月、车间、物料
                var spParams = "'" + HStartYear + "','" + HStartPeriod + "','" +
                    HEndYear + "','" + HEndPeriod + "','" +
                    HWorkShopID + "','" + HCostObjID + "'" + ",'" + HProcID+"'";
                sWhere = spParams;
                if (type == 2) {
                    get_Display(spParams);
                }
            }
            // åŠ è½½é˜¶æ¢¯è®¡ä»¶æ•°æ®
            function get_Display(params) {
                var loadIndex = layer.load(1, { shade: false });
                var sql = "exec h_p_CB_ActualItemMoneyCost" + params;
                $.ajax({
                    url: GetWEBURL() + '/CB_ActualItemMoneyCostController/CB_ActualItemMoneyCostList',
                    type: "GET",
                    data: { "sWhere": sql },
                    success: function (data1) {
                        layer.close(loadIndex);
                        if (data1.count == 1) {
                            // è§£æžåˆ—定义
                            var colDefs = []; // å­˜æ”¾ {id, name, Type}
                            if (data1.list && data1.list.length > 0) {
                                for (var k in data1.list) {
                                    colDefs.push({
                                        id: data1.list[k].ColmCols,
                                        name: data1.list[k].ColmCols,
                                        Type: data1.list[k].ColmType
                                    });
                                }
                            }
                            // æž„建表格列
                            var cols = [];
                            // å¤šé€‰æ¡†åˆ—
                            cols.push({ type: 'checkbox', fixed: 'left', totalRowText: '合计' });
                            // è¾…助判断日期字段(形如"2025-02-20"),原代码用isValidDate但未定义,简单按字段名是否含横线判断,实际根据业务调整
                            for (var i = 0; i < colDefs.length; i++) {
                                var fieldName = colDefs[i].name;
                                var fieldId = colDefs[i].id;
                                var fieldType = colDefs[i].Type;
                                // é’ˆå¯¹é˜¶æ¢¯æŠ¥è¡¨ï¼Œæœ‰äº›åˆ—可能是动态日期(例如“02-20”),原代码用isValidDate判断,我们简单模拟:如果字段名包含 '-' ä¸”长度<=10 è§†ä¸ºæ—¥æœŸçŸ­åˆ—
                                var isShortDate = (fieldName.indexOf('-') > 0 && fieldName.length <= 10);
                                if (isShortDate) {
                                    // æ˜¾ç¤ºæˆ MM-dd æ ¼å¼ï¼ŒåŽŸä»£ç å°è¯•Format但未定义,此处直接显示原字段名
                                    cols.push({
                                        field: fieldId,
                                        title: fieldName,  // åŽŸä»£ç : Format(fieldName,'MM-dd') ä½†Format函数可能未引入,保持原样
                                        width: 70,
                                        totalRow: true,
                                        filter: true,
                                        align: 'center'
                                    });
                                } else if (fieldType == 'DateTime') {
                                    cols.push({
                                        field: fieldId,
                                        title: fieldName,
                                        align: 'center',
                                        sort: true,
                                        filter: true,
                                        templet: "<div>{{ d." + fieldId + " == '' ? '' : layui.util.toDateString(d." + fieldId + ", 'yyyy-MM-dd HH:mm:ss') }}</div>",
                                        width: 180
                                    });
                                } else {
                                    cols.push({
                                        field: fieldId,
                                        title: fieldName,
                                        align: 'center',
                                        sort: true,
                                        width: 150,
                                        filter: true
                                    });
                                }
                            }
                            // æ›´æ–°è¡¨æ ¼é…ç½®
                            option.cols = [cols];
                            option.data = data1.data || [];
                            // åº”用列隐藏设置(如果存在)
                            DisPlay_HideColumn(HModName, sessionStorage["HUserName"] || 'admin', option, []);
                            // æ¸²æŸ“表格
                            table.render(option);
                        } else {
                            layer.alert(data1.code + ' ' + data1.Message, { icon: 5 });
                        }
                    },
                    error: function () {
                        layer.close(loadIndex);
                        layer.alert("接口请求失败", { icon: 5 });
                    }
                });
            }
            // é‡ç½®è¿‡æ»¤æ¡ä»¶
            // ä¿®æ”¹åŽçš„clearQuery函数
            function clearQuery() {
                var currentDate = new Date();
                var lastMonth = new Date(currentDate);
                lastMonth.setMonth(currentDate.getMonth() - 7);
                // ä¿®æ”¹ï¼šé‡æ–°è®¾ç½®å¼€å§‹å¹´æœˆé€‰æ‹©å™¨çš„值
                laydate.render({
                    elem: '#ID-laydate-start-month',
                    type: 'month',
                    format: 'yyyy-MM',
                    value: lastMonth,
                    show: false  // ä¸æ˜¾ç¤ºé¢æ¿
                });
                // ä¿®æ”¹ï¼šé‡æ–°è®¾ç½®ç»“束年月选择器的值
                laydate.render({
                    elem: '#ID-laydate-end-month',
                    type: 'month',
                    format: 'yyyy-MM',
                    value: currentDate,
                    show: false  // ä¸æ˜¾ç¤ºé¢æ¿
                });
                $("#HDeptID").val(0);
                $("#HMouldID").val("0");
                $("#HMouldNumber").val("");
                $("#HProcID").val("0");
                $("#HProcName").val("");
                form.render('select');
            }
            // ---------- äº‹ä»¶ç»‘定 ----------
            // æŸ¥è¯¢æŒ‰é’®
            form.on('submit(btnSearch)', function () {
                getFastQuery(2);
                return false;
            });
            // é‡ç½®æŒ‰é’®
            form.on('submit(btnReSearch)', function () {
                clearQuery();
                getFastQuery(2);
                return false;
            });
            // ç­ç»„弹出框(保留原有弹窗方式,与tableSelect共存,优先使用tableSelect;同时支持弹窗选择)
            // èŒå‘˜å¼¹å‡ºæ¡† HItemMoneyList
            form.on('submit(HMaterList)', function () {
                openHMaterDialog();
                return false;
            });
            // æ‰“开模具 (原 get_checkEmp)
            function openHMaterDialog() {
                layer.open({
                    type: 2,
                    skin: 'layui-layer-rim',
                    title: '职',
                    closeBtn: 1,
                    shift: 2,
                    area: ['80%', '80%'],
                    maxmin: true,
                    content: ['../../模治具管理/模治具管理/Gy_MouldFileList.html?openType=2', 'yes'],
                    btn: ['确定', '取消'],
                    btn1: function (index, layero) {
                        var iframeWindow = window['layui-layer-iframe' + index];
                        var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HMouldID").val(checkStatus.data[0].hmainid);
                        $("#HMouldNumber").val(checkStatus.data[0].模具名称);
                        layer.close(index);
                    }
                });
            }
            // å¤´å·¥å…·æ äº‹ä»¶ (mainTable)
            table.on('toolbar(mainTable)', function (obj) {
                switch (obj.event) {
                    case 'set_HideColumn2':
                        get_HideColumnNoPage(HModName, sessionStorage["HUserName"] || 'admin', option, function () { getFastQuery(2); });
                        break;
                    case 'btn-reload2':
                        getFastQuery(2);
                        break;
                    case 'get_export2':
                        exportExcel();
                        break;
                    //导入
                    case 'set_SouceExcel': set_SouceExcel();
                        break;
                    default:
                        break;
                }
            });
            // å¯¼å‡ºExcel (原 get_Export2)
            function exportExcel() {
                var ModRightNameCheck = "Pay_PaymentEntryReportExcel";
                $.ajax({
                    type: "GET",
                    url: GetWEBURL() + "/LMES/getReportByModRightNameCheck",
                    data: { "ModRightNameCheck": ModRightNameCheck, "user": sessionStorage["HUserName"] },
                    success: function (result) {
                        if (result.count == 1) {
                            var data = option.data || [];
                            // æ¸…洗数据
                            data.forEach(function (item) {
                                for (var key in item) {
                                    if (item[key] == null) item[key] = "";
                                    if (typeof item[key] === 'string') {
                                        item[key] = item[key].replace(/[\r\n]+/g, '').replace(/,/g, '');
                                    }
                                }
                            });
                            table.exportFile("mainTable", data, "xls");
                        } else {
                            layer.alert("当前模块没有导出权限!", { icon: 5 });
                        }
                    },
                    error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
            }
            //导入
            function set_SouceExcel() {
                layer.open({
                    type: 2
                    , area: ['100%', '100%']
                    , title: '资料导入'
                    , shift: 0//弹出动画
                    , content: './Gy_WIPBal_Excel.html?OperationType=dao&HSouceBillType='
                })
            }
            // å…¨å±€è¾…助函数 Format (如果不存在,简单定义)
            if (typeof Format !== 'function') {
                window.Format = function (date, fmt) {
                    if (!date) return '';
                    var d = new Date(date);
                    var o = {
                        "M+": d.getMonth() + 1,
                        "d+": d.getDate(),
                        "H+": d.getHours(),
                        "m+": d.getMinutes(),
                        "s+": d.getSeconds()
                    };
                    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
                    for (var k in o)
                        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                    return fmt;
                };
            }
        });
        // ä¸‹é¢ä¸¤ä¸ªæ–¹æ³•供弹窗回调使用 (Gy_EmployeeList.html å’Œ Gy_Group.html ä¼šè°ƒç”¨)
        function GetMouldFileValue(obj)           //器具
        {
            $("#HMouldID").val(obj[0].hmainid);
            $("#HMouldNumber").val(obj[0].模具名称);
        }
    </script>
</body>
</html>
WebTM/views/Ä£Öξ߹ÜÀí/Ä£Öξֿ߲â¹ÜÀí/Sc_MouldProdOutBillEdit.html
@@ -68,7 +68,8 @@
                                            <div class="layui-input-inline">
                                                <input type="text" class="layui-input" name="HBillNo" id="HBillNo" style="background-color:#efefef4d;" readonly>
                                                <input type="hidden" name="HInterID" id="HInterID" value="0">
                                                <input type="hidden" name="HRedBlueFlag" id="HRedBlueFlag" value="false" >
                                                <input type="hidden" name="HRedBlueFlag" id="HRedBlueFlag" value="false">
                                                <input type="hidden" name="HBillSubType" id="HBillSubType" value="3802">
                                            </div>
                                        </div>
                                        <div class="layui-inline">
WebTM/views/ϵͳ¹ÜÀí/¶à¼¶ÉóÅú/ÉóºËÁ÷³Ìµ¥/Xt_CheckFlowEdit.html
@@ -306,16 +306,17 @@
            //选择部门
            function get_btnHDeptID() {
                var HOrgName = sessionStorage["Organization"]
                //打开部门小窗体
                layer.open({
                    type: 2
                    , skin: "layui-layer-rim" //加上边框
                    , title: "供应商列表"  //标题
                    , title: "部门列表"  //标题
                    , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                    , shift: 2 //弹出动画
                    , area: ["90%", "90%"] //窗体大小
                    , maxmin: true //设置最大最小按钮是否显示
                    , content: ["../../../Baseset/基础资料/Gy_DepartmentList.html", "yes"]
                    , content: ['../../../基础资料/公用基础资料/Gy_DepartmentList.html?Type=2&HOrgName=' + HOrgName, 'yes']
                    , btn: ["确定", "取消"]
                    , btn1: function (index, laero) {
                        //按钮一  çš„回调
@@ -327,7 +328,7 @@
                        }
                        //更新表格缓存的数据
                        $("#HDeptID").val(checkStatus.data[0].HItemID);
                        $("#HDeptIDName").val(checkStatus.data[0].HName);
                        $("#HDeptIDName").val(checkStatus.data[0].部门名称);
                        layer.close(index);//关闭弹窗
                    }
                })
WebTM/views/ÖÊÁ¿¹ÜÀí/Ê×¼þ¼ìÑéµ¥/QC_FirstPieceCheckBillList2.html
@@ -782,7 +782,7 @@
            //#region å¿«é€Ÿè¿‡æ»¤
            function get_FastQuery(number) {
                var sqlWhere = " and 1=1 ";
                var sqlWhere = " ";
                var HBillNo = $("#HBillNo").val();//单据号
                var HProject = $("#HProject").val();//项目号
                var HNumber = $("#HNumber").val();//物料编码