提交代码
This commit is contained in:
@@ -71,7 +71,34 @@
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrap">
|
||||
<div class="bottom-wrap">
|
||||
<div class="top">
|
||||
<div class="item">
|
||||
<div class="bw-b-bottom ptop6">
|
||||
<div class="bw-b-bottom-up">
|
||||
<div class="bw-item-content">
|
||||
<div id='one' style="width: 100%; height: 100%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="bw-b-bottom ptop6">
|
||||
<div class="bw-b-bottom-up">
|
||||
<div class="bw-item-content">
|
||||
<div id='two' style="width: 100%; height: 100%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<%--<div class="wrap">
|
||||
<div class="bottom-wrap">
|
||||
<div class="top">
|
||||
<div class="item">
|
||||
@@ -166,12 +193,208 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>--%>
|
||||
</body>
|
||||
<script type="text/javascript" src="../res/index/js/jquery-3.4.1.min.js"></script>
|
||||
<script type="text/javascript" src="../res/index/js/swiper-3.4.2.jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../res/index/js/echarts.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var oneArrStr = "<%=oneArrStr%>";
|
||||
var oneDataStr = '<%=oneDataStr%>';
|
||||
var oneNameData = [];
|
||||
var oneArr = JSON.parse(oneArrStr);
|
||||
var oneData = JSON.parse(oneDataStr);
|
||||
$.each(oneData, function (inxex, item) {
|
||||
var obj = { name: item };
|
||||
oneNameData.push(obj);
|
||||
});
|
||||
//图1
|
||||
var bar_data = oneArr;//模拟数据
|
||||
var chart = echarts.init(document.getElementById('one'));
|
||||
var option = {
|
||||
title: {
|
||||
text: '预试车进度信息',
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontWeight: 'normal',
|
||||
fontSize: 16
|
||||
},
|
||||
show: true
|
||||
},
|
||||
tooltip: {
|
||||
formatter: '{a}:{c}%'//a 是series中每条数据name值,c 是data数值
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical', // 'horizontal'
|
||||
data: JSON.parse(oneDataStr),
|
||||
textStyle: { // 图列内容样式
|
||||
color: '#fff', // 字体颜色
|
||||
},
|
||||
x: '70%',//图例位置,设置right发现图例和文字位置反了,设置一个数值就好了
|
||||
y: 'center'//延Y轴居中
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '30%',
|
||||
top: '15%',
|
||||
bottom: '3%',
|
||||
containLabel: true,
|
||||
backgroundColor: 'rgba(0,162,233, 0.01)',
|
||||
},
|
||||
xAxis: [ //横坐标
|
||||
{
|
||||
type: 'category',
|
||||
data: [''],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "#fff",//横坐标线条颜色
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [ //纵坐标
|
||||
{
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
show: true,
|
||||
formatter: '{value}%',//给Y轴数值添加百分号
|
||||
},
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "#fff",//纵坐标线条颜色
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
color: ['#0287f8', '#33CCCC', '#58b1fc', '#2fb6f6', '#CC3366', '#00FF99', '#33FFFF', '#669900', '#CC0099', '#FF66FF', '#330099', '#00FFCC', '#FFFF33', '#FF9966', '#FF6633'],//柱状图的颜色
|
||||
series: oneNameData
|
||||
};
|
||||
for (var i = 0; i < option.series.length; i++) {
|
||||
var style = { //定义柱状图的样式
|
||||
normal: {
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top', //柱子上方显示 数值
|
||||
rotate: 25,
|
||||
/*formatter: '{c}%'*/
|
||||
formatter: function (params) {
|
||||
if (params.value > 0) {
|
||||
return params.value + '%';
|
||||
} else {
|
||||
return ' ';
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
option.series[i].type = 'bar'; //每条数据指定类型为'bar'
|
||||
option.series[i].itemStyle = style; // series中每条数据都加的样式
|
||||
option.series[i].data = [bar_data[i]]; //series 中 data赋值
|
||||
};
|
||||
chart.setOption(option);
|
||||
|
||||
//图2
|
||||
debugger;
|
||||
var twoDataStr = '<%=twoDataStr%>';
|
||||
var towData = JSON.parse(twoDataStr);
|
||||
var data = towData.map((item, index) => item.Rate);
|
||||
var chart1 = echarts.init(document.getElementById('two'));
|
||||
var barWidth = 20;
|
||||
var maxNum = 100;
|
||||
option = {
|
||||
grid: {
|
||||
top: '10%',
|
||||
left: '20%',
|
||||
right: '10%',
|
||||
bottom: '0%',
|
||||
},
|
||||
title: {
|
||||
text: '试车进度信息',
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontWeight: 'normal',
|
||||
fontSize: 16
|
||||
},
|
||||
},
|
||||
xAxis: {
|
||||
show: false,
|
||||
},
|
||||
yAxis: {
|
||||
data: towData.map((item, index) => item.Name),
|
||||
splitLine: {
|
||||
show: false,
|
||||
},
|
||||
axisLabel: {
|
||||
textStyle: { fontSize: '80%', color: '#02afff' },
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
},
|
||||
axisTick: false,
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'bar',
|
||||
barWidth: barWidth,
|
||||
zlevel: 2,
|
||||
data: data.map(function (item) {
|
||||
return {
|
||||
value: item,
|
||||
maxNum: maxNum,
|
||||
};
|
||||
}),
|
||||
label: {
|
||||
show: true,
|
||||
position: 'inside',
|
||||
align: 'left',
|
||||
formatter: function (params) {
|
||||
var percent = Number((params.data.value / params.data.maxNum) * 100).toFixed(2) + '%';
|
||||
return percent;
|
||||
},
|
||||
color: '#fff',
|
||||
fontSize: 12,
|
||||
},
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
color: new echarts.graphic.LinearGradient(0, 1, 1, 1, [
|
||||
{ offset: 0, color: '#395CFE' },
|
||||
{ offset: 1, color: '#2EC7CF' },
|
||||
]),
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'bar',
|
||||
barWidth: barWidth,
|
||||
barGap: '-100%',
|
||||
data: data.map(function (item) {
|
||||
return {
|
||||
realValue: item,
|
||||
value: maxNum,
|
||||
};
|
||||
}),
|
||||
//label: {
|
||||
// show: true,
|
||||
// position: 'right',
|
||||
// distance: 80,
|
||||
// align: 'right',
|
||||
// //formatter: function (params) {
|
||||
// // return params.data.realValue + ' 件';
|
||||
// //},
|
||||
// color: '#02afff',
|
||||
// fontSize: 18,
|
||||
//},
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
color: 'rgba(3,169,244, 0.5)',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
chart1.setOption(option);
|
||||
|
||||
</script>
|
||||
|
||||
<%--<script type="text/javascript">
|
||||
function category_One(id, xArr, data) {
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById(id))
|
||||
@@ -747,6 +970,6 @@
|
||||
loop: true,
|
||||
slidesPerView: 6
|
||||
})
|
||||
</script>
|
||||
</script>--%>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -1,17 +1,140 @@
|
||||
using System;
|
||||
using BLL;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using static FineUIPro.Web.TestRun.Report.ScheduleSetUp;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using Model;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace FineUIPro.Web
|
||||
{
|
||||
public partial class mainMenu_TestRun : System.Web.UI.Page
|
||||
public partial class mainMenu_TestRun : PageBase
|
||||
{
|
||||
public string oneArrStr { get; set; }
|
||||
public string oneDataStr { get; set; }
|
||||
public string twoDataStr { get; set; }
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
PageInit();
|
||||
}
|
||||
}
|
||||
|
||||
public void PageInit()
|
||||
{
|
||||
OneYsc();
|
||||
TwoSc();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 预试车
|
||||
/// </summary>
|
||||
public void OneYsc()
|
||||
{
|
||||
List<float> oneArr = new List<float>();
|
||||
List<string> oneData = new List<string>();
|
||||
var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 1).ToList();
|
||||
if (list.Count > 0)
|
||||
{
|
||||
var workpages = Funs.DB.PreRun_WorkPackage.OrderBy(x => x.Sort).ToList();
|
||||
foreach (var item in workpages)
|
||||
{
|
||||
var model = list.FirstOrDefault(x => x.WorkPackId == item.WorkPackId);
|
||||
if (model != null)
|
||||
{
|
||||
var rate = model.CompleteNum > 0 ? (float)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
|
||||
if (rate > 100) rate = 100;
|
||||
oneArr.Add(rate);
|
||||
oneData.Add(item.WorkPackName);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from PreRun_WorkPackage as a order by a.Sort"; List<SqlParameter> listStr = new List<SqlParameter>();
|
||||
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
|
||||
SqlParameter[] parameter = listStr.ToArray();
|
||||
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||||
if (tb.Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow row in tb.Rows)
|
||||
{
|
||||
float allNum = float.Parse(row["AllNum"].ToString());
|
||||
float completeNum = float.Parse(row["CompleteNum"].ToString());
|
||||
var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum * 100), 2, MidpointRounding.AwayFromZero) : 0;
|
||||
if (rate > 100) rate = 100;
|
||||
oneArr.Add(rate);
|
||||
oneData.Add(row["WorkPackName"].ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
oneArrStr = JsonConvert.SerializeObject(oneArr);
|
||||
oneDataStr = JsonConvert.SerializeObject(oneData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 试车
|
||||
/// </summary>
|
||||
public void TwoSc()
|
||||
{
|
||||
var result = new List<TwoDto>();
|
||||
var list = Funs.DB.Run_ScheduleSetUp.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == 2).ToList();
|
||||
if (list.Count > 0)
|
||||
{
|
||||
var workpages = Funs.DB.TestRun_WorkPackage.OrderBy(x => x.Sort).ToList();
|
||||
foreach (var item in workpages)
|
||||
{
|
||||
var model = list.FirstOrDefault(x => x.WorkPackId == item.WorkPackId);
|
||||
if (model != null)
|
||||
{
|
||||
var rate = model.CompleteNum > 0 ? (float)Math.Round((float)model.CompleteNum / (float)model.AllNum * 100, 2, MidpointRounding.AwayFromZero) : 0;
|
||||
if (rate > 100) rate = 100;
|
||||
result.Add(new TwoDto()
|
||||
{
|
||||
Name = item.WorkPackName,
|
||||
Rate = rate
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from TestRun_WorkPackage as a order by a.Sort"; List<SqlParameter> listStr = new List<SqlParameter>();
|
||||
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
|
||||
SqlParameter[] parameter = listStr.ToArray();
|
||||
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||||
if (tb.Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow row in tb.Rows)
|
||||
{
|
||||
float allNum = float.Parse(row["AllNum"].ToString());
|
||||
float completeNum = float.Parse(row["CompleteNum"].ToString());
|
||||
var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum) * 100, 2, MidpointRounding.AwayFromZero) : 0;
|
||||
if (rate > 100) rate = 100;
|
||||
result.Add(new TwoDto()
|
||||
{
|
||||
Name = row["WorkPackName"].ToString(),
|
||||
Rate = rate
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
twoDataStr = JsonConvert.SerializeObject(result);
|
||||
}
|
||||
|
||||
public class TwoDto
|
||||
{
|
||||
public float Rate { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user