Demo
2024-07-17 3a9b5dcd5dd6ed033f80f1696b07135635b3e9f8
HTML/views/StatisticalReport/PeriodicReport.html
@@ -0,0 +1,340 @@
<!DOCTYPE html>
<html>
   <head>
      <meta 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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
      <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="../../css/public.css" media="all">
      <style type="text/css">
         .layui-form-item .layui-inline {
             margin-bottom: 1px;
             margin-right: 1px;
         }
      </style>
      <script>
         // 这里是需要在页面渲染之前执行的代码
         document.addEventListener("DOMContentLoaded", function() {
            //获取table默认显示数
            pageCntFirst();
            //判断是否开启table列表列宽调整功能。
            GetIsSetColW();
         });
        </script>
   </head>
   <body id="body">
      <div class="layui-fluid" style="padding-bottom: 0;">
         <div class="layui-card">
            <div class="layui-form layui-card-header layuiadmin-card-header-auto" id="top">
               <div class="layui-form-item" style="margin-bottom: 0px;">
                  <div class="layui-inline">
                     <label class="layui-form-label">开始日期</label>
                     <div class="layui-input-inline">
                        <input type="text" autocomplete="off" name="StartTime" id="StartTime" class="layui-input"
                           placeholder="开始日期">
                     </div>
                  </div>
                  <!-- <div class="layui-inline">
                     <label class="layui-form-label">结束日期</label>
                     <div class="layui-input-inline">
                        <input type="text" autocomplete="off" name="EndTime" id="EndTime" class="layui-input"
                           placeholder="结束日期">
                     </div>
                  </div> -->
                  <div class="layui-inline sousuo">
                     <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit lay-filter="LAY-app-contlist-search">
                        <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索
                     </button>
                     <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit
                        lay-filter="daochu">
                        <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>导出
                     </button>
                  </div>
               </div>
            </div>
            <div id="center"></div>
            <div class="layui-card-body">
               <div style="position: relative;">
                  <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                     <div id="center">
                     </div>
                     <div class="layui-tab-content">
                        <!-- 单据总表 -->
                        <div class="position-relative"><!-- class="position-relative" --><!-- 自定义表头加上 -->
                           <table id="LAY-app-content-list" lay-filter="LAY-app-content-list"></table>
                           <!-- #region 自定义表头 -->
                           <div class="headerSetIcon">
                              <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols">
                                 <i class="layui-icon">&#xe610;</i>
                              </button>
                           </div>
                           <!-- #endregion -->
                           <script type="text/html" id="SituationButton">
                              {{#  if(d.IsQualified=='0'){ }}
                                 <p>满足</p>
                              {{#  } else if(d.IsQualified=='1'){ }}
                                 <p>不满足</p>
                              {{#  } }}
                           </script>
                           <script type="text/html" id="CreateTimeButton">
                              {{# console.log(d.CreateTime);
                                    return formatDate(d.CreateTime);
                              }}
                           </script>
                           <script type="text/html" id="UpdateTimeButton">
                              {{# console.log(d.CreateTime);
                                    return formatDate(d.CreateTime);
                              }}
                           </script>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
      <script src="../../layuiadmin/layui/layui.js"></script>
      <script src="../../js/public.js"></script>
      <script src="../../js/jquery-3.5.1.min.js"></script>
      <script src="../../js/jquery.cookie.js"></script>
      <script>
         var uid = $.cookie('userId');
         layui.config({
            base: '../../layuiadmin/' //静态资源所在路径
         }).extend({
            index: 'lib/index' //主入口模块
         }).use(['index', 'table', 'laypage', 'layer','element','laydate'], function() {
            var table = layui.table,
               form = layui.form,
               laypage = layui.laypage,
               layer = layui.layer;
               element = layui.element;
               laydate = layui.laydate;
            laydate.render({
               elem: '#StartTime',
               format: 'yyyy-MM-dd' //可任意组合
            });
            laydate.render({
               elem: '#EndTime',
               format: 'yyyy-MM-dd' //可任意组合
            });
            //获取当前时间
            function getNowTime() {
               var date = new Date();
               //年 getFullYear():四位数字返回年份
               var year = date.getFullYear(); //getFullYear()代替getYear()
               //月 getMonth():0 ~ 11
               var month = date.getMonth() + 1;
               //日 getDate():(1 ~ 31)
               var day = date.getDate();
               //时 getHours():(0 ~ 23)
               var hour = date.getHours();
               //分 getMinutes(): (0 ~ 59)
               var minute = date.getMinutes();
               //秒 getSeconds():(0 ~ 59)
               var second = date.getSeconds();
               var time = year + addZero(month) + addZero(day) + addZero(hour) + addZero(minute) + addZero(second);
               return time;
               //小于10的拼接上0字符串
            };
            function addZero(s) {
               return s < 10 ? ('0' + s) : s;
            };
            // 表单需要的变量
            var infoOptions;
                var myDate = new Date();
                // console.log(myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 00:00:00')
                myDate.getFullYear(); //获取完整的年份(4位,1970-????)
                myDate.getMonth(); //获取当前月份(0-11,0代表1月)
                myDate.getDate(); //获取当前日(1-31)
                // 每日初始时间
                var chudate = myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 00:00:00'
                var jiedate = myDate.getFullYear()+'-'+(myDate.getMonth() + 1)+'-'+myDate.getDate()+' 23:59:59'
            var $ = layui.$;
            var h1 = GetTableHeight();
            refreshTable("",);
                //获取出入库总量
                function refreshTable(StartTime,EndTime) {
               //#region 自定义表头
               var colsJson
               var param1={
                  Href:'Statistical/GetDataStockInfo'
               };
               sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) {
                  if (res.code == 0){
                     if(res.data=='' || res.data==undefined || res.data==null){
                        colsJson=TotalColsArr
                     }else{
                        colsJson= eval(res.data);
                     }
                  }else{
                     colsJson=TotalColsArr
                  }
                  console.log('h1:',h1)
                  infoOptions = {
                     elem: '#LAY-app-content-list',
                     height: h1,
                     id: 'LAY-app-content-list',
                     page: true,
                     limit: pageCnt,
                     limits: pageLimits,
                     even: true,
                     cellMinWidth: 80, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                     done: function(){
                        //自定义列宽
                        SetTableColW('LAY-app-content-list','Statistical/GetDataStockInfo',TotalColsSysArr);
                     },
                     cols:colsJson
                  };
                  var param = {
                     StartTime:$("#StartTime").val(),
                  };
                  sendData(IP + "/Statistical/GetDataStockInfo", param, 'get', function(res) {
                     //console.log(res)
                     if (res.code == 0) { //成功
                        var list = res.data;
                        $.extend(infoOptions, {
                           data: list
                        });
                        infoOptions.page = {
                           curr: 1
                        }
                        tableIns = table.render(infoOptions);
                     }
                     else { //不成功
                        layer.msg('获取库存信息失败', {
                           icon: 2,
                           time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                     }
                  });
               });
               //#endregion
                }
            //#region 自定义表头
            var TotalColsArr = [[
               {field: '',title: '序号',type:'numbers',align: 'center',fixed: 'left', "disabled": true},
               {field: 'SkuNo', title: '物料编码', align: 'center'},
               {field: 'SkuName', title: '物料名称', align: 'center',},
               {field: 'Standard', title: '规格', align: 'center',},
               {field: 'Unit', title: '单位', align: 'center'},
               {field: 'LastMonthQty', title: '上月结存数量', align: 'center'},
               {field: 'LastMonthFoldedQty', title: '上月结存折件', align: 'center'},
               {field: 'ArrDayQty', title: '入库日数量', align: 'center'},
               {field: 'ArrDayFoldedQty', title: '入库日折件', align: 'center'},
               {field: 'ArrMonthQty', title: '入库月数量', align: 'center'},
               {field: 'ArrMonthFoldedQty', title: '入库月折件', align: 'center'},
               {field: 'ArrYearQty', title: '入库年数量', align: 'center'},
               {field: 'ArrYearFoldedQty', title: '入库年折件', align: 'center'},
               {field: 'SoDayQty', title: '出库日数量', align: 'center'},
               {field: 'SoDayFoldedQty', title: '出库日折件', align: 'center'},
               {field: 'SoMonthQty', title: '出库月数量', align: 'center'},
               {field: 'SoMonthFoldedQty', title: '出库月折件', align: 'center'},
               {field: 'SoYearQty', title: '出库年数量', align: 'center'},
               {field: 'SoYearFoldedQty', title: '出库年折件', align: 'center'},
               {field: 'MonthQty', title: '当月结存数量', align: 'center'},
               {field: 'MonthFoldedQty', title: '当月结存折件', align: 'center'},
               {field: 'DepositQty', title: '寄存数量', align: 'center'},
               {field: 'Qty', title: '本月库存数量', align: 'center'},
               {field: 'SecurityQty', title: '安全库存', align: 'center'},
               {field: 'Situation', title: '安全库存情况', align: 'center' , templet: '#SituationButton',},
               {field: 'CreateTime', title: '创建日期', align: 'center' , templet: '#CreateTimeButton',},
               {field: 'UpdateTime', title: '更新日期', align: 'center', templet: '#UpdateTimeButton',},
            ]];
            var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码
            //#endregion
            //监听搜索
            form.on('submit(LAY-app-contlist-search)', function(data) {
                    var StartTime = $("#StartTime").val();
                  refreshTable(StartTime);
            });
            form.on('submit(daochu)', function () {
               layer.confirm('确定导出当前数据吗?', function(index) {
                        var param = {
                            StartTime:$("#StartTime").val(),
                        };
                        sendData(IP + "/Statistical/GetDataStockInfo", param, 'get', function (res) {
                            //console.log(res);
                            if (res.code == 0) { //成功
                                var list = res.data;
                                list.forEach(item => {
                                    if (item.SkuName.split(','))
                                    {
                                        item.SkuName = '"'+item.SkuName+'"'
                                    }
                                });
                                table.exportFile(tableIns.config.id, list,'xls',"库存信息"+getNowTime(),); //data 为该实例中的任意数量的数据
                                layer.msg('导出成功!', {
                                    icon: 1,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                });
                            } else { //不成功
                                layer.msg('获取信息失败!', {
                                    icon: 2,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                }, function () { });
                            }
                        });
               });
            });
            //#region 自定义表头
            //自定义表头
            active = {
               customCols: function(){
                  layer.open({
                     type: 2,
                     title: '自定义列',
                     content: '../SystemSettings/HeaderSetting.html?Href=Statistical/GetDataStockInfo&ColsSysArr='+TotalColsSysArr,
                     maxmin: false,
                     resize: false,
                     area: ['970px', '650px']
                  });
               },
                           };
            $('.layui-btn').on('click', function() {
               var type = $(this).data('type');
               active[type] ? active[type].call(this) : '';
            });
            //#endregion
         });
      </script>
   </body>
</html>