|  |  |  | 
|---|
|  |  |  | <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="/static/layui/css/layui.css" media="all"> | 
|---|
|  |  |  | <script type="text/javascript" src="/static/layui/layui.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="/static/js/jquery/jquery-3.3.1.min.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="/static/js/echarts/echarts.min.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="/static/js/echarts/highcharts.js"></script> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/common.js?v=100"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/layui/layui.js?v=100"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js?v=100"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/echarts/echarts.min.js?v=100"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/echarts/highcharts.js?v=100"></script> | 
|---|
|  |  |  | <style> | 
|---|
|  |  |  | body { | 
|---|
|  |  |  | background-color: #f1f1f1; | 
|---|
|  |  |  | 
|---|
|  |  |  | display: inline-block; | 
|---|
|  |  |  | width: 49%; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .chart-elem div { | 
|---|
|  |  |  | padding-top: 15px; | 
|---|
|  |  |  | padding-bottom: 5px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .chart-elem:first-child { | 
|---|
|  |  |  | padding: 0 50px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .chart-elem:last-child { | 
|---|
|  |  |  | padding-left: 20px; | 
|---|
|  |  |  | padding: 0 50px; | 
|---|
|  |  |  | border-left: 1px solid rgba(0,0,0,.1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /*表格工具栏*/ | 
|---|
|  |  |  | 
|---|
|  |  |  | .layui-form.layui-border-box.layui-table-view { | 
|---|
|  |  |  | border-top: 1px solid rgba(0,0,0,.1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #search-box { | 
|---|
|  |  |  | margin-left: 10px; | 
|---|
|  |  |  | z-index: 999; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | padding: 0 30px 10px 30px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | </head> | 
|---|
|  |  |  | <body> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="home-elem loc-retention"> | 
|---|
|  |  |  | <div class="layui-form"> | 
|---|
|  |  |  | <div id="form-header">库存滞留时间统计表</div> | 
|---|
|  |  |  | <div class="layui-card" style="padding: 0 20px 1px 20px;"> | 
|---|
|  |  |  | <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;"> | 
|---|
|  |  |  | <legend>搜索栏</legend> | 
|---|
|  |  |  | <div id="search-box" class="layui-form layui-card-header"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!-- 待添加 --> | 
|---|
|  |  |  | <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> | 
|---|
|  |  |  | <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> | 
|---|
|  |  |  | <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </fieldset> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <table class="layui-hide" id="stayTime" lay-filter="stayTime"></table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | // 饼图 | 
|---|
|  |  |  | function pieCharts(){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url:'/console/loc/pie/charts', | 
|---|
|  |  |  | url:baseUrl+'/console/loc/pie/charts', | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | dataType: 'json', | 
|---|
|  |  |  | contentType: 'application/json;charset=UTF-8', | 
|---|
|  |  |  | crossDomain: true, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success:function(res){ | 
|---|
|  |  |  | var data = res.data; | 
|---|
|  |  |  | 
|---|
|  |  |  | text: '库位使用比例', | 
|---|
|  |  |  | margin:1, | 
|---|
|  |  |  | style: {fontSize: '18px',color: '#777',fontWeight: 'bold'}, | 
|---|
|  |  |  | y: 20 | 
|---|
|  |  |  | y: 5 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var tooltip = { | 
|---|
|  |  |  | pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' | 
|---|
|  |  |  | 
|---|
|  |  |  | name: '库位占比', | 
|---|
|  |  |  | data: dataPie | 
|---|
|  |  |  | }]; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var loading = { | 
|---|
|  |  |  | hideDuration: 3, | 
|---|
|  |  |  | showDuration: 3 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var json = {}; | 
|---|
|  |  |  | json.chart = chart; | 
|---|
|  |  |  | json.title = title; | 
|---|
|  |  |  | json.tooltip = tooltip; | 
|---|
|  |  |  | json.series = series; | 
|---|
|  |  |  | json.plotOptions = plotOptions; | 
|---|
|  |  |  | json.loading = loading; | 
|---|
|  |  |  | json.credits = {enabled: false}; | 
|---|
|  |  |  | $('#pie').highcharts(json); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | // 折线图 | 
|---|
|  |  |  | function lineCharts() { | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: '/console/locIo/line/charts', | 
|---|
|  |  |  | url: baseUrl+'/console/locIo/line/charts', | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | dataType: 'json', | 
|---|
|  |  |  | contentType: 'application/json;charset=UTF-8', | 
|---|
|  |  |  | 
|---|
|  |  |  | text: '日入出库数量', | 
|---|
|  |  |  | margin: 1, | 
|---|
|  |  |  | style: {fontSize: '18px',color: '#777',fontWeight: 'bold'}, | 
|---|
|  |  |  | y: 20 | 
|---|
|  |  |  | y: 5 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var xAxis = { | 
|---|
|  |  |  | categories: [getDate(-11), getDate(-10), getDate(-9), getDate(-8), getDate(-7), getDate(-6), | 
|---|
|  |  |  | 
|---|
|  |  |  | verticalAlign: 'middle', | 
|---|
|  |  |  | borderWidth: 0 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var loading = { | 
|---|
|  |  |  | hideDuration: 3, | 
|---|
|  |  |  | showDuration: 3 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var series = dataPie; | 
|---|
|  |  |  | var json = {}; | 
|---|
|  |  |  | json.title = title; | 
|---|
|  |  |  | 
|---|
|  |  |  | json.yAxis = yAxis; | 
|---|
|  |  |  | json.tooltip = tooltip; | 
|---|
|  |  |  | json.legend = legend; | 
|---|
|  |  |  | json.loading = loading; | 
|---|
|  |  |  | json.series = series; | 
|---|
|  |  |  | json.credits = {enabled: false}; | 
|---|
|  |  |  | $('#line').highcharts(json); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 表格 | 
|---|
|  |  |  | var pageCurr; | 
|---|
|  |  |  | function getCol() { | 
|---|
|  |  |  | var cols = [ | 
|---|
|  |  |  | //{field: 'appeTime$', title: '入库时间', align: 'center', width: 165} | 
|---|
|  |  |  | {field: 'stay_time', align: 'center',title: '滞留天数',width: 90} | 
|---|
|  |  |  | //,{field: 'store_max_date', align: 'center',title: '库龄上限',width: 90} | 
|---|
|  |  |  | //,{field: 'store_min', title: '库存下限', align: 'center'} | 
|---|
|  |  |  | ,{field: 'sum_qty', title: '库存总数', align: 'center'} | 
|---|
|  |  |  | //,{field: 'store_max', title: '库存上限', align: 'center'} | 
|---|
|  |  |  | ,{field: 'loc_no', align: 'center',title: '库位号'} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ]; | 
|---|
|  |  |  | cols.push.apply(cols, detlCols); | 
|---|
|  |  |  | //cols.push({field: 'sum_qty', title: '库存总数', align: 'center'}) | 
|---|
|  |  |  | return cols; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layui.use(['table','laydate', 'form'], function() { | 
|---|
|  |  |  | var table = layui.table; | 
|---|
|  |  |  | var $ = layui.jquery; | 
|---|
|  |  |  | var layer = layui.layer; | 
|---|
|  |  |  | var form = layui.form; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 数据渲染 | 
|---|
|  |  |  | tableIns = table.render({ | 
|---|
|  |  |  | elem: '#stayTime', | 
|---|
|  |  |  | headers: {token: localStorage.getItem('token')}, | 
|---|
|  |  |  | url: '/report/viewStayTimeList.action', | 
|---|
|  |  |  | url: baseUrl+'/report/viewStayTimeList.action', | 
|---|
|  |  |  | page: true, | 
|---|
|  |  |  | limit: 10, | 
|---|
|  |  |  | toolbar: '#toolbar', | 
|---|
|  |  |  | even: true, | 
|---|
|  |  |  | cellMinWidth: 50, | 
|---|
|  |  |  | cols: [[ | 
|---|
|  |  |  | {field: 'appe_time', title: '入库时间', align: 'center', width: 200} | 
|---|
|  |  |  | ,{field: 'stay_time', align: 'center',title: '滞留天数'} | 
|---|
|  |  |  | ,{field: 'loc_no', align: 'center',title: '库位号'} | 
|---|
|  |  |  | ,{field: 'matnr', align: 'center',title: '物料'} | 
|---|
|  |  |  | ,{field: 'maktx', align: 'center',title: '物料描述'} | 
|---|
|  |  |  | ,{field: 'lgnum', align: 'center',title: '仓库号'} | 
|---|
|  |  |  | ,{field: 'tbnum', align: 'center',title: '请求编号'} | 
|---|
|  |  |  | ,{field: 'zmatid', align: 'center',title: '物料标签ID'} | 
|---|
|  |  |  | ,{field: 'werks', align: 'center',title: '工厂'} | 
|---|
|  |  |  | ,{field: 'anfme', align: 'center',title: '数量'} | 
|---|
|  |  |  | ,{field: 'altme', align: 'center',title: '单位'} | 
|---|
|  |  |  | ,{field: 'zpallet', align: 'center',title: '托盘码'} | 
|---|
|  |  |  | ,{field: 'bname', align: 'center',title: '用户ID'} | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | crossDomain: true, | 
|---|
|  |  |  | cols: [getCol()], | 
|---|
|  |  |  | request: { | 
|---|
|  |  |  | pageName: 'curr', | 
|---|
|  |  |  | pageSize: 'limit' | 
|---|
|  |  |  | 
|---|
|  |  |  | statusCode: 200 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function(res, curr, count) { | 
|---|
|  |  |  | var that = this.elem.next(); | 
|---|
|  |  |  | res.data.forEach(function (item, index) { | 
|---|
|  |  |  | var tr = that.find(".layui-table-box tbody tr[data-index='" + index + "']"); | 
|---|
|  |  |  | if (item.store_max_date != null) { | 
|---|
|  |  |  | if (item.stay_time > item.store_max_date) { | 
|---|
|  |  |  | tr.css("background-color", "#ff6f00"); | 
|---|
|  |  |  | tr.css("color", "white"); | 
|---|
|  |  |  | tr.children()[1].style.backgroundColor="#ff0000" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //低于下限 | 
|---|
|  |  |  | if (item.sum_qty < item.store_min) { | 
|---|
|  |  |  | tr.css("background-color", "#ff6f00"); | 
|---|
|  |  |  | tr.css("color", "white"); | 
|---|
|  |  |  | tr.children()[2].style.backgroundColor="rgb(255,0,0)" | 
|---|
|  |  |  | tr.children()[2].style.color="white" | 
|---|
|  |  |  | tr.children()[3].style.backgroundColor="#ff0000" | 
|---|
|  |  |  | tr.children()[3].style.color="white" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //高于上限 | 
|---|
|  |  |  | if(item.store_max != null) { | 
|---|
|  |  |  | if (item.sum_qty > item.store_max) { | 
|---|
|  |  |  | tr.css("background-color", "#ff6f00"); | 
|---|
|  |  |  | tr.css("color", "white"); | 
|---|
|  |  |  | tr.children()[3].style.backgroundColor="#009c04" | 
|---|
|  |  |  | tr.children()[3].style.color="white" | 
|---|
|  |  |  | tr.children()[4].style.backgroundColor="#3da83f" | 
|---|
|  |  |  | tr.children()[4].style.color="white" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = "/"; | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pageCurr=curr; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | curr: 1 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function (res, curr, count) { | 
|---|
|  |  |  | var that = this.elem.next(); | 
|---|
|  |  |  | res.data.forEach(function (item, index) { | 
|---|
|  |  |  | if (item.store_max_date != null) { | 
|---|
|  |  |  | if (item.stay_time > item.store_max_date) { | 
|---|
|  |  |  | var tr = that.find(".layui-table-box tbody tr[data-index='" + index + "']"); | 
|---|
|  |  |  | tr.css("background-color", "#FF5722"); | 
|---|
|  |  |  | tr.css("color", "white"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = "/"; | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pageCurr=curr; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 搜索栏搜索事件 | 
|---|
|  |  |  | form.on('submit(search)', function (data) { | 
|---|
|  |  |  | tableReload(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 搜索栏搜索事件 | 
|---|
|  |  |  | form.on('submit(reset)', function (data) { | 
|---|
|  |  |  | $(':input', $('#search-box')) | 
|---|
|  |  |  | .val('') | 
|---|
|  |  |  | .removeAttr('checked') | 
|---|
|  |  |  | .removeAttr('selected'); | 
|---|
|  |  |  | var searchData = {}; | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | searchData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | where: searchData | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function tableReload() { | 
|---|
|  |  |  | var searchData = {}; | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | searchData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | where: searchData | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|