Commit 4a0295e7 by guanzhenshan

完善数据仓销量分析报表,增加sku维度明细,增加总销售字段

parent 60cbf7ca
......@@ -8,8 +8,11 @@ namespace Bailun.DC.Common
{
public class GlobalConfig
{
#if DEBUG
public static string ConnectionString = "server=gz-cdb-kp7s5i79.sql.tencentcdb.com;port=61691;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;";
#else
public static string ConnectionString = "server=10.0.8.15;port=3306;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;";
#endif
public static string OAUrl = "http://www.bailuntec.com";
/// <summary>
......
......@@ -4,6 +4,9 @@ using System.Text;
namespace Bailun.DC.Models.Warehouse
{
/// <summary>
/// 数据仓sku销量分析
/// </summary>
public class dc_mid_skuwarehouse_sales
{
public int id { get; set; }
......@@ -176,5 +179,9 @@ namespace Bailun.DC.Models.Warehouse
/// </summary>
public DateTime? createtime { get; set; }
/// <summary>
/// 销量合计
/// </summary>
public int salecount { get; set; }
}
}
......@@ -409,7 +409,7 @@ namespace Bailun.DC.Services
/// <param name="warehousecode">仓库编码</param>
/// <param name="total">符合条件的总记录数</param>
/// <returns></returns>
public List<dc_mid_warehouse_redundancy> ListWarehouseRedundancy(BtTableParameter request, string warehousetype, string warehousecode,ref int total)
public List<dc_mid_warehouse_redundancy> ListWarehouseRedundancy(BtTableParameter request, string warehousetype, string warehousecode,DateTime? day,ref int total)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
......@@ -419,7 +419,7 @@ namespace Bailun.DC.Services
}
var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_warehouse_redundancy t1 ";
var sql = "select t1.* from dc_mid_warehouse_redundancy t1 ";
if (!string.IsNullOrEmpty(warehousetype))
{
......@@ -427,7 +427,13 @@ namespace Bailun.DC.Services
sqlparam.Add("warehousetype", warehousetype);
}
sql+= "where t1.day = '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "'";
sql+= " where 1=1 ";
if (day.HasValue)
{
sql += " and t1.day=@day";
sqlparam.Add("day", day.Value.ToString("yyyy-MM-dd"));
}
if (!string.IsNullOrEmpty(warehousecode))
{
......@@ -435,7 +441,7 @@ namespace Bailun.DC.Services
sqlparam.Add("code", warehousecode);
}
var obj = cn.Page<dc_mid_warehouse_redundancy>(request.pageIndex, request.limit, sql, ref total);
var obj = cn.Page<dc_mid_warehouse_redundancy>(request.pageIndex, request.limit, sql, ref total,sqlparam);
return obj.AsList();
}
......@@ -447,7 +453,7 @@ namespace Bailun.DC.Services
/// <param name="warehousetype"></param>
/// <param name="warehousecode"></param>
/// <returns></returns>
public dc_mid_warehouse_redundancy ListWarehouseRedundancyCount(string warehousetype, string warehousecode)
public dc_mid_warehouse_redundancy ListWarehouseRedundancyCount(string warehousetype, string warehousecode,DateTime? day)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
......@@ -465,7 +471,13 @@ namespace Bailun.DC.Services
sqlparam.Add("warehousetype", warehousetype);
}
sql += "where t1.day = '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "'";
sql += " where 1=1 ";
if (day.HasValue)
{
sql += " and t1.day=@day";
sqlparam.Add("day", day.Value.ToString("yyyy-MM-dd"));
}
if (!string.IsNullOrEmpty(warehousecode))
{
......@@ -473,7 +485,7 @@ namespace Bailun.DC.Services
sqlparam.Add("code", warehousecode);
}
var obj = cn.QueryFirstOrDefault<dc_mid_warehouse_redundancy>(sql);
var obj = cn.QueryFirstOrDefault<dc_mid_warehouse_redundancy>(sql,sqlparam);
return obj;
}
......@@ -484,7 +496,7 @@ namespace Bailun.DC.Services
/// </summary>
/// <param name="warehousecode"></param>
/// <returns></returns>
public List<List<dc_mid_skuwarehouse_redundancy>> GetSkuRedundancy(string warehousecode)
public List<List<dc_mid_skuwarehouse_redundancy>> GetSkuRedundancy(string warehousecode,DateTime day)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
......@@ -494,16 +506,16 @@ namespace Bailun.DC.Services
}
//前100冗余金额sku分析
var sql1 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='"+warehousecode+ "' and day='"+DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+ "' order by redundancy_amount desc limit 100";
var sql1 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='"+warehousecode+ "' and day='"+day.ToString("yyyy-MM-dd")+ "' order by redundancy_amount desc limit 100";
//前100冗余个数sku分析
var sql2 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by redundancy_product_count desc limit 100";
var sql2 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by redundancy_product_count desc limit 100";
//前100个数动销最快sku分析
var sql3 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by productsale_rate desc limit 100";
var sql3 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by productsale_rate desc limit 100";
//前100金额动销最快sku分析
var sql4 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100";
var sql4 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100";
var obj1 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql1);
var obj2 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql2);
......@@ -521,5 +533,34 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取仓库前两个月的冗余数据
/// </summary>
/// <param name="warehousecode">仓库编码</param>
/// <param name="start">开始日期</param>
/// <param name="end">结束日期</param>
/// <returns></returns>
public List<dc_mid_warehouse_redundancy> ListOver60DaysWarehouseRedundancy(string warehousecode, DateTime start, DateTime end)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_warehouse_redundancy where warehouse_code=@code and day>=@startday and day<=@endday order by day";
sqlparam.Add("code", warehousecode);
sqlparam.Add("startday", start);
sqlparam.Add("endday", end);
var obj = cn.Query<dc_mid_warehouse_redundancy>(sql, sqlparam);
return obj.AsList();
}
}
}
}
......@@ -157,16 +157,14 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousetype">仓库类型</param>
/// <param name="code">仓库编码</param>
/// <returns></returns>
public string WarehouseRedundancyJson(BtTableParameter parameter, string warehousetype, string code)
public string WarehouseRedundancyJson(BtTableParameter parameter, string warehousetype, string code,DateTime? day)
{
var total = 0;
var services = new Services.WareHouseServices();
var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code, ref total);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code);
var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code,day, ref total);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code,day);
var list = obj.Select(a => new {
a.warehouse_code,
a.warehouse_name,
......@@ -219,9 +217,11 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// </summary>
/// <param name="warehousecode"></param>
/// <returns></returns>
public ActionResult SkuRedundancy(string warehousecode)
public ActionResult SkuRedundancy(string warehousecode,DateTime? day,string warehousename)
{
ViewBag.warehousecode = warehousecode;
ViewBag.day = day.HasValue ? day.Value.ToString("yyyy-MM-dd") : "";
ViewBag.warehousename = warehousename;
return View();
}
......@@ -231,14 +231,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousecode"></param>
/// <returns></returns>
[HttpPost]
public JsonResult SkuRedundancyJson(string warehousecode)
public JsonResult SkuRedundancyJson(string warehousecode,DateTime day)
{
var services = new Services.WareHouseServices();
var obj = services.GetSkuRedundancy(warehousecode);
var obj = services.GetSkuRedundancy(warehousecode,day);
return Json(obj);
}
/// <summary>
/// 仓库历史冗余图表展示
/// </summary>
/// <returns></returns>
public ActionResult WHRedundancyChart(string warehousecode,DateTime day,string col,string colname,string warehousename)
{
ViewBag.warehousecode = warehousecode;
ViewBag.day = day.ToString("yyyy-MM-dd");
ViewBag.col = col;
ViewBag.colname = colname;
ViewBag.warehousename = warehousename;
return View();
}
/// <summary>
/// 获取过去两个月的历史数据
/// </summary>
/// <param name="warehousecode">仓库编码</param>
/// <param name="day">结束日期</param>
/// <returns></returns>
[HttpPost]
public JsonResult WHRedundancyChartJson(string warehousecode, DateTime day,string col)
{
var startDay = day.AddDays(-60);
var obj = new Services.WareHouseServices().ListOver60DaysWarehouseRedundancy(warehousecode, startDay, day);
var colname = new List<string>();
var colval = new List<decimal>();
for (var i = 0; i < 61; i++)
{
var item = obj.Where(a => a.day == startDay.AddDays(i)).FirstOrDefault();
colname.Add(startDay.AddDays(i).ToString("MM-dd"));
if (item == null)
{
colval.Add(0);
}
else
{
var propertys = item.GetType().GetProperties();
foreach (var a in propertys)
{
if (a.Name == col)
{
var value = a.GetValue(item, null);
try
{
var b = decimal.Parse(value.ToString());
if (a.Name.IndexOf("比例") > 0)
{
b *= 100;
}
colval.Add(b);
}
catch
{
colval.Add(0);
}
break;
}
}
}
}
return Json(new {
col = colname,
val = colval
});
}
}
}
\ No newline at end of file

@{
ViewData["Title"] = "数据仓Sku销售分销";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<input type="hidden" id="warehousecode" name="warehousecode" value="@ViewBag.warehousecode" />
<div class="form-group">
<label>统计日期</label>
<input id="start" name="start" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计开始日期" />-
<input id="end" name="end" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计结束日期" />
</div>
<div class="form-group">
<label>开发时间</label>
<input id="devstart" name="devstart" class="form-control" value="@ViewBag.devstart" placeholder="开发开始时间" />-
<input id="devend" name="devend" class="form-control" value="@ViewBag.devend" placeholder="开发结束时间" />
</div>
<div class="form-group">
<label>销量</label>
<input id="startcount" name="startcount" class="form-control" placeholder="sku销量开始" value="@ViewBag.startcount" />-
<input id="endcount" name="endcount" class="form-control" placeholder="sku销量结束" value="@ViewBag.endcount" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script type="text/javascript">
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 160));
list();
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
laydate.render({ elem: '#devstart' });
laydate.render({ elem: '#devend' });
})
function list() {
var columns = [
{
field: 'bailun_sku', title: 'Sku', width: '110', sortable: false, iscount: false
},
{
field: 'bailun_sku_name', title: 'sku名称', width: '180', sortable: false, iscount: false, formatter: function (idx, data) {
return '<div class="mules" title="' + data.bailun_sku_name + '">' + data.bailun_sku_name + '</div>';
}
},
{
field: 'warehouse_name', title: '仓库名称', width: '190', sortable: false, iscount: true
},
{ field: 'stock_count', title: '库存数量', width: '110', sortable: true, iscount: true },
{ field: 'stock_amount', title: '库存金额', width: '120', sortable: true, iscount: true },
{ field: 'aliexpress_salecount', title: '速卖通销量', width: '130', sortable: true, iscount: true },
{ field: 'aliexpress_saleamount', title: '速卖通销售额', width: '130', sortable: true, iscount: true },
{ field: 'amazon_salecount', title: '亚马逊销量', width: '120', sortable: true, iscount: true },
{ field: 'amazon_saleamount', title: '亚马逊销售额', width: '120', sortable: true, iscount: true },
{ field: 'fba_salecount', title: 'FBA销量', width: '120', sortable: true, iscount: true },
{ field: 'fba_saleamount', title: 'FBA销售额', width: '120', sortable: true, iscount: true },
{ field: 'ebay_salecount', title: 'Ebay销量', width: '120', sortable: true, iscount: true },
{ field: 'ebay_saleamount', title: 'Ebay销售额', width: '120', sortable: true, iscount: true },
{ field: 'wish_salecount', title: 'Wish销量', width: '120', sortable: true, iscount: true },
{ field: 'wish_saleamount', title: 'Wish销售额', width: '120', sortable: true, iscount: true },
{ field: 'amazon2B_salecount', title: '亚马逊2B销量', width: '130', sortable: true, iscount: true },
{ field: 'amazon2B_saleamount', title: '亚马逊2B销售额', width: '150', sortable: true, iscount: true },
{ field: 'jollychic_salecount', title: 'jollychic销量', width: '120', sortable: true, iscount: true },
{ field: 'jollychic_saleamount', title: 'jollychic销售额', width: '140', sortable: true, iscount: true },
{ field: 'joom_salecount', title: 'Joom销量', width: '120', sortable: true, iscount: true },
{ field: 'joom_saleamount', title: 'Joom销售额', width: '130', sortable: true, iscount: true },
{ field: 'marketing_salecount', title: 'Marketing销量', width: '140', sortable: true, iscount: true },
{ field: 'marketing_saleamount', title: 'Marketing销售额', width: '160', sortable: true, iscount: true },
{ field: 'mymall_salecount', title: 'mymall销量', width: '120', sortable: true, iscount: true },
{ field: 'mymall_saleamount', title: 'mymall销售额', width: '130', sortable: true, iscount: true },
{ field: 'opensky_salecount', title: 'opensky销量', width: '120', sortable: true, iscount: true },
{ field: 'opensky_saleamount', title: 'opensky销售额', width: '140', sortable: true, iscount: true },
{ field: 'priceminister_salecount', title: 'priceminister销量', width: '150', sortable: true, iscount: true },
{ field: 'priceminister_saleamount', title: 'priceminister销售额', width: '160', sortable: true, iscount: true },
{ field: 'qoo10_salecount', title: 'qoo10销量', width: '120', sortable: true, iscount: true },
{ field: 'qoo10_saleamount', title: 'qoo10销售额', width: '140', sortable: true, iscount: true },
{ field: 'shopee_salecount', title: 'shopee销量', width: '120', sortable: true, iscount: true },
{ field: 'shopee_saleamount', title: 'shopee销售额', width: '140', sortable: true, iscount: true },
{ field: 'shopify_salecount', title: 'shopify销量', width: '120', sortable: true, iscount: true },
{ field: 'shopify_saleamount', title: 'shopify销售额', width: '130', sortable: true, iscount: true },
{ field: 'walmart_salecount', title: 'walmart销量', width: '120', sortable: true, iscount: true },
{ field: 'walmart_saleamount', title: 'walmart销售额', width: '130', sortable: true, iscount: true },
{ field: 'salecount', title: '总销量', width: '120', sortable: true, iscount: true },
];
var url = '@Url.Content("~/Reports/Inventory/SkuWarehouseSaleReportJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, loadsuccess: function (d) {
//替换汇总行的相关列值
var tr = $('.fixed-table-footer').find('tr');
for (var c in columns) {
var key = columns[c].field;
if (columns[c].iscount) {
for (var v in d.count_row) {
if (key == v) {
tr.find('td').eq(c).children('div').first().html(d.count_row[v]);
break;
}
}
}
}
}
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
</script>
}
......@@ -2,11 +2,27 @@
@{
ViewData["Title"] = "SkuRedundancy";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "库存分析报表",ViewBag.warehousecode+" 库存冗余分析" };
ViewBag.Nav = new string[] { "库存", "库存分析报表", ViewBag.warehousename + " 库存冗余分析" };
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>&nbsp;</label>
<input id="day" name="day" class="form-control" value="@(ViewBag.day)" placeholder="请选择日期" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="tabs-container">
<ul class="nav nav-tabs">
<li class="active">
......@@ -25,7 +41,7 @@
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<table id="t1" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead>
<tr>
<th>sku</th>
......@@ -41,15 +57,13 @@
<th>冗余金额比例</th>
</tr>
</thead>
<tbody id="tb1">
</tbody>
<tbody id="tb1"></tbody>
</table>
</div>
</div>
<div id="tab-2" class="tab-pane">
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<table id="t2" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead>
<tr>
<th>sku</th>
......@@ -71,7 +85,7 @@
</div>
<div id="tab-3" class="tab-pane">
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<table id="t3" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead>
<tr>
<th>sku</th>
......@@ -89,15 +103,13 @@
<th>缺货数</th>
</tr>
</thead>
<tbody id="tb3">
</tbody>
<tbody id="tb3"></tbody>
</table>
</div>
</div>
<div id="tab-4" class="tab-pane">
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<table id="t4" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead>
<tr>
<th>sku</th>
......@@ -115,9 +127,7 @@
<th>缺货数</th>
</tr>
</thead>
<tbody id="tb4">
</tbody>
<tbody id="tb4"></tbody>
</table>
</div>
</div>
......@@ -127,23 +137,46 @@
</div>
@section css{
<style>
.tablesorter-headerDesc {
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=' );
}
.tablesorter-headerAsc {
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
}
</style>
}
@section scripts{
@section scripts{
<script src="~/js/jquery.tablesorter.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
laydate.render({ elem: '#day' });
list();
})
var indexload;
function list() {
indexload = layer.load();
var day = $('#day').val();
if (day == '') {
layer.msg('请选择日期');
return false;
}
$.submit({
type:'POST',
url: '@Url.Content("~/Reports/Warehouse/SkuRedundancyJson")',
paramData: 'warehousecode=@(ViewBag.warehousecode)',
paramData: 'warehousecode=@(ViewBag.warehousecode)' + '&day=' + day,
func: function (result) {
layer.close(indexload);
if (result != undefined && result != null && result.length == 4) {
......@@ -169,7 +202,8 @@
}
$('#tb' + (parseInt(i) + 1)).append(shtml);
$('#t' + (parseInt(i) + 1)).trigger("destroy");
$('#t' + (parseInt(i) + 1)).tablesorter();
}
else if(i>1 && i<4){ //前100个数动销最快sku分析,前100金额动销最快sku分析
var shtml = '';
......@@ -205,6 +239,8 @@
}
$('#tb' + (parseInt(i) + 1)).append(shtml);
$('#t' + (parseInt(i) + 1)).trigger("destroy");
$('#t' + (parseInt(i) + 1)).tablesorter();
}
}
}
......

@{
ViewData["Title"] = "仓库历史冗余分析数据";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div id="chart-contain" style="width:100%;height:550px;">
</div>
</div>
</div>
@section scripts{
<script src="~/js/echarts.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
getData();
})
function getData() {
$.submit({
type:'POST',
url: '@Url.Content("~/Reports/Warehouse/WHRedundancyChartJson")',
paramData: 'warehousecode=@(ViewBag.warehousecode)&day=@(ViewBag.day)&col=@(ViewBag.col)',
func: function (result) {
if (result) {
showChart('@Html.Raw(ViewBag.warehousename)'+'仓库冗余前两个月的数据', result.col, result.val);
}
}
})
}
function showChart(title,category,vals) {
option = {
title: {
text: title
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['@Html.Raw(ViewBag.colname)']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: category
},
yAxis: {
type: 'value'
},
series: [
{
name: '@Html.Raw(ViewBag.colname)',
type: 'line',
stack: '总量',
data: vals
}
]
};
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('chart-contain'));
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
</script>
}
......@@ -69,6 +69,11 @@
</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Inventory/WarehouseSaleReport")" data-index="0" style="padding-left:74px;">
<span class="nav-label">数据仓销量分析</span>
</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/LogicWarehouse")" data-index="0" style="padding-left:74px;">逻辑仓库</a>
</li>
<li>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment