layui.config({ base: "/js/" }).use(['form', 'vue', 'ztree', 'layer', 'jquery', 'table', 'droptree', 'hhweb', 'utils'], function () { var form = layui.form, layer = layui.layer, $ = layui.jquery; var table = layui.table; var hhweb = layui.hhweb; var toplayer = (top == undefined || top.layer === undefined) ? layer : top.layer; //顶层的LAYER //给按钮添加快捷键 //Ctrl+I键添加,Ctrl+R键刷新,Ctrl+D键删除,Ctrl+E键编辑,Ctrl+F查询,Ctrl+S保存,Ctrl+A全选,Ctrl+Shift+A取消全选,左 上一页 右 下一页 $(document).bind("keydown", function (e) { //禁用页面F5刷新 if (e.which == 116) { e.preventDefault(); //Skip default behavior of the enter key } }); $(document).ready(function () { function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + AddDayCount);//获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = 0;//获取当前月份的日期 var d = 0; m = dd.getMonth() + 1; d = dd.getDate(); if (m >= 10) { m = m; } else { m = "0" + m; } if (d >= 10) { d = d; } else { d = "0" + d; } return y + "-" + m + "-" + d; } var timeTicket = setInterval(function () { window.location.reload(); }, 90000) clearInterval(timeTicket); //图一:最近7天每日收发货量 $.ajax({ url: "/base/EchartsData/GetWeekTaskInfo", data: {}, type: "POST", dataType: "json", async: true, success: function (data) { //没有数据时提示 //if (data.hasOwnProperty("type")) { // dialogMsg(data.message, 0); // return; //} var chart1 = echarts.init(document.getElementById('chart1')); //chart1.showLoading({ // text: '正在加载中......', // effect: 'whirling' //}); var indata = new Array(); var outdata = new Array(); var ydate = new Array(); var movedata = new Array(); var m = 0; for (var i = 0; i < 7; i++) { for (var k = 0; k > -7; k--) { if (typeof data.data[i] !== 'undefined') { if (data.data[i].type == "receipt") { if (data.data[i].name == GetDateStr(k)) { indata[6 + k] = data.data[i].count; } } else if (data.data[i].type == "shipment") { if (data.data[i].name == GetDateStr(k)) { outdata[6 + k] = data.data[i].count; } } else if (data.data[i].type == "Cyclecount"){ if (data.data[i].name == GetDateStr(k)) { movedata[6 + k] = data.data[i].count; } m++; } } else { if (typeof indata[i] == 'undefined') { indata[i] = 0; } else if (typeof outdata[i] == 'undefined') { outdata[i] = 0; } } } }; if (movedata.length == 0) { movedata = [0, 0, 0, 0, 0, 0, 0]; }; for (var i = 0; i < 7; i++) { if (typeof indata[i] == 'undefined' && typeof outdata[i] == 'undefined') { if (indata[i] = 'undefined') { indata[i] = 0; }; if (outdata[i] = 'undefined') { outdata[i] = 0; } } } //数组去重 function uniq(array) { var temp = []; //一个新的临时数组 for (var i = 0; i < array.length; i++) { if (temp.indexOf(array[i]) == -1) { temp.push(array[i]); } } return temp; } ydate = uniq(ydate); var option = { title: { text: '业务量统计', subtext: '单位:个', left: 'left' }, tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, legend: { data: ['入库', '出库', '移库'] }, toolbox: { show: true, // orient: 'vertical', x: 'right', // y: 'center', feature: { mark: { show: true }, dataView: { show: true, readOnly: false }, magicType: { show: true, type: ['line', 'bar', 'stack', 'tiled'] }, restore: { show: true }, saveAsImage: { show: true } } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', data: [GetDateStr(-6), GetDateStr(-5), GetDateStr(-4), GetDateStr(-3), GetDateStr(-2), GetDateStr(-1), GetDateStr(0)] } ], yAxis: [ { type: 'value' } ], series: [ { name: '入库', type: 'bar', data: [indata[0], indata[1], indata[2], indata[3], indata[4], indata[5], indata[6]], markLine: { data: [ { type: 'average', name: '平均值' } ] }, markLine: { lineStyle: { normal: { type: 'dashed' } }, data: [ [{ type: 'min' }, { type: 'max' }] ] } }, { name: '出库', type: 'bar', stack: '广告', data: [outdata[0], outdata[1], outdata[2], outdata[3], outdata[4], outdata[5], outdata[6]], //data: [77, 823,522, 123, 452, 66, 98], markLine: { data: [ { type: 'average', name: '平均值' } ] }, markLine: { lineStyle: { normal: { type: 'dashed' } }, data: [ [{ type: 'min' }, { type: 'max' }] ] } }, { name: '移库', type: 'bar', data: [movedata[0], movedata[1], movedata[2], movedata[3], movedata[4], movedata[5], movedata[6]], //data: [33, 22, 12, 53, 62, 32, 31], markLine: { lineStyle: { normal: { type: 'dashed' } }, data: [ [{ type: 'min' }, { type: 'max' }] ] } } ] }; chart1.setOption(option); //chart1.hideLoading(); //计算今日总单量 var hsum = document.getElementById("s1"); var hin = document.getElementById("s2"); var hout = document.getElementById("s3"); var hmove = document.getElementById("s4"); hsum.innerHTML = parseInt(indata[6] + outdata[6] + movedata[6]); hin.innerHTML = parseInt(indata[6]); hout.innerHTML = parseInt(outdata[6]); hmove.innerHTML = parseInt(movedata[6]); }, //error: function (XMLHttpRequest, textStatus, errorThrown) { // layer.alert(errorThrown, { icon: 2, title: '提示' }); //} }); //图二:库位利用率 $.ajax({ url: "/base/EchartsData/GetWareCellOption", data: {}, type: "POST", dataType: "json", async: true, success: function (data) { //没有数据时提示 //if (data.hasOwnProperty("type")) { // dialogMsg(data.message, 0); // return; //} var lock = 0, empty = 0, disable = 0, occupy = 0,some=0; for (var i = 0; i <= data.data.length; i++) { if (typeof data.data[i] !== 'undefined') { if (data.data[i].name == "lock") { lock = data.data[i].count; } else if (data.data[i].name == "empty") { empty = data.data[i].count; } else if (data.data[i].name == "some") { some = data.data[i].count; }else if (data.data[i].name == "disable") { disable = data.data[i].count; } else if (data.data[i].name == "emptycontainer") { occupy = data.data[i].count; } } } var myChart = echarts.init(document.getElementById('chart2')); //myChart.showLoading({ // text: '正在加载中......', // effect: 'whirling' //}); var warecelloption = { title: { text: '仓位统计', subtext: '单位:个', left: '5' }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { // orient: 'vertical', // top: 'middle', bottom: 5, left: 'center', data: ['空容器','有货', '锁定', '禁用', '空仓位'] }, toolbox: { show: true, feature: { mark: { show: true }, dataView: { show: true, readOnly: false }, magicType: { show: true, type: ['pie', 'funnel'] }, restore: { show: true }, saveAsImage: { show: true } } }, series: [ { name: '库位使用率', type: 'pie', radius: '50%', center: ['50%', '50%'], selectedMode: 'single', data: [ { value: occupy, name: '空容器' }, { value: some, name: '有货' }, { value: lock, name: '锁定' }, { value: disable, name: '禁用' }, { value: empty, name: '空仓位' }, ], label: { normal: { position: 'outer', formatter: "{b}:{c}\n({d}%)", textStyle: { fontWeight: 'normal', fontSize: 14 } } }, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; myChart.setOption(warecelloption); //myChart.hideLoading(); }, //error: function (XMLHttpRequest, textStatus, errorThrown) { // layer.alert(errorThrown, { icon: 2, title: '提示' }); //} }); var receipt = 0; var shipment = 0; //图三:待执行出入库任务 $.ajax({ url: "/base/EchartsData/GetExceTaskInfo", data: {}, type: "POST", dataType: "json", async: true, success: function (data) { //没有数据时提示 //if (data.hasOwnProperty("type")) { // dialogMsg(data.message, 0); // return; //} for (var i = 0; i <= data.data.length; i++) { if (typeof data.data[i] !== 'undefined') { if (data.data[i].name == "100" || data.data[i].name == "200") { receipt = receipt+1; } else if (data.data[i].name == "300" || data.data[i].name == "400") { shipment = shipment + 1; } else { receipt = receipt; shipment = shipment; } } } var myChart = echarts.init(document.getElementById('chart3')); //myChart.showLoading({ // text: '正在加载中......', // effect: 'whirling' //}); var taskoption = { title: { text: '任务数量统计', subtext: '单位:个', x: 'center' }, tooltip: { formatter: "{a} <br/>{c} {b}" }, toolbox: { show: true, feature: { mark: { show: true }, restore: { show: true }, saveAsImage: { show: true } } }, series: [ { name: '出库任务数:', type: 'gauge', center: ['70%', '55%'], // 默认全局居中 z: 3, min: 0, max: 200, splitNumber: 10, radius: '95%', axisLine: { // 坐标轴线 lineStyle: { // 属性lineStyle控制线条样式 width: 10 } }, axisTick: { // 坐标轴小标记 length: 15, // 属性length控制线长 lineStyle: { // 属性lineStyle控制线条样式 color: 'auto' } }, splitLine: { // 分隔线 length: 20, // 属性length控制线长 lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 color: 'auto' } }, axisLabel: { backgroundColor: 'auto', borderRadius: 2, color: '#eee', padding: 3, textShadowBlur: 2, textShadowOffsetX: 1, textShadowOffsetY: 1, textShadowColor: '#222' }, title: { textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE fontWeight: 'bolder', fontSize: 15, fontStyle: 'italic' } }, detail: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE //formatter: function (value) { // value = (value + '').split('.'); // value.length < 2 && (value.push('00')); // return ('00' + value[0]).slice(-2) // + '.' + (value[1] + '00').slice(0, 2); //}, fontWeight: 'bolder', borderRadius: 3, backgroundColor: '#444', borderColor: '#aaa', shadowBlur: 5, shadowColor: '#333', shadowOffsetX: 0, shadowOffsetY: 3, borderWidth: 2, textBorderColor: '#000', textBorderWidth: 2, textShadowBlur: 2, textShadowColor: '#fff', textShadowOffsetX: 0, textShadowOffsetY: 0, fontFamily: 'Arial', width: 80, color: '#eee', rich: {} }, data: [{ value: shipment, name: '出库任务数' }] }, { name: '入库任务数:', type: 'gauge', center: ['28%', '55%'], // 默认全局居中 radius: '95%', min: 0, max: 200, //endAngle: 1, splitNumber: 10, axisLine: { // 坐标轴线 lineStyle: { // 属性lineStyle控制线条样式 width: 10 } }, axisTick: { // 坐标轴小标记 length: 15, // 属性length控制线长 lineStyle: { // 属性lineStyle控制线条样式 color: 'auto' } }, splitLine: { // 分隔线 length: 20, // 属性length控制线长 lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 color: 'auto' } }, pointer: { width: 5 }, title: { offsetCenter: [0, '-30%'], // x, y,单位px }, detail: { textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE fontWeight: 'bolder' } }, data: [{ value: receipt, name: '入库任务数' }] } ] }; myChart.setOption(taskoption); //myChart.hideLoading(); //计算待执行的任务数量 var htask = document.getElementById("s6"); htask.innerHTML = parseInt(receipt + shipment); }, //error: function (XMLHttpRequest, textStatus, errorThrown) { // layer.alert(errorThrown, { icon: 2, title: '提示' }); //} }); //图四:库存概况 $.ajax({ url: "/base/EchartsData/GetMaterielInfo", data: {}, type: "POST", dataType: "json", async: true, success: function (data) { var selected = {}; var legendData = []; var seriesData = []; for (var i = 0; i <= data.data.length && i < 10; i++) { if (typeof data.data[i] !== 'undefined') { legendData.push(data.data[i].name); seriesData.push({ name: data.data[i].name, value: data.data[i].value }); selected[data.data[i].name] = i < 15; } }; //没有数据时提示 //if (data.hasOwnProperty("type")) { // dialogMsg(data.message, 0); // return; //} var myChart = echarts.init(document.getElementById('chart4')); //myChart.showLoading({ // text: '正在加载中......', // effect: 'whirling' //}); var option = { title: { text: '库内物料库存数量', subtext: '按物料分类', x: 'left' }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { type: 'scroll', orient: 'vertical', right: 10, top: 20, bottom: 20, data: legendData, selected: selected }, series: [ { name: '物料', type: 'pie', radius: '65%', center: ['40%', '55%'], selectedMode: 'single', data: seriesData, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; myChart.setOption(option); //myChart.hideLoading(); //计算库内物料品种数量 var hm = document.getElementById("s5"); hm.innerHTML = parseInt(data.data.length); }, //error: function (XMLHttpRequest, textStatus, errorThrown) { // layer.alert(errorThrown, { icon: 2, title: '提示' }); //} }); }) });