Basf_FCL/FCL/FineUIPro.Web/KPI/KPI.aspx

801 lines
31 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="KPI.aspx.cs" Inherits="FineUIPro.Web.KPI.KPI" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>KPI</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
<script src="../Scripts/jquery-3.7.1.min.js"></script>
<script src="../Scripts/layer/layer.js"></script>
<script src="../Scripts/echarts/echarts.js"></script>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="Panel1" />
<f:Panel ID="Panel1" runat="server" Layout="VBox" EnableCollapse="false" ShowBorder="false" ShowHeader="false">
<Toolbars>
<f:Toolbar ID="Toolbar1" runat="server">
<Items>
<f:DatePicker runat="server" Label="Time Range" LabelAlign="Right" Required="true" BlockMD="5" DateFormatString="yyyy-MM" ID="StartTime" DisplayType="Month"></f:DatePicker>
<f:DatePicker ID="EndTime" Required="true" Readonly="false" BlockMD="5" DateFormatString="yyyy-MM" CompareOperator="GreaterThan" runat="server" DisplayType="Month" ShowTodayButton="false"></f:DatePicker>
<f:Button ID="btnSubmit" runat="server" BlockMD="2" ValidateForms="SimpleForm1" Text="Submit" OnClientClick="return btnSubmit()">
</f:Button>
<f:Button ID="btnExport" BoxConfigAlign="Center" runat="server" Text="Export" ToolTip="Export Excel" Icon="DoorOut" EnableAjax="false" DisableControlBeforePostBack="false" OnClick="btnExport_Click" EnablePress="true" Pressed="false">
</f:Button>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
</Items>
</f:Toolbar>
</Toolbars>
<Items>
<f:TabStrip ID="TabStrip1" ShowBorder="true" TabPosition="Top"
EnableTabCloseMenu="false" ActiveTabIndex="0" runat="server" BodyPadding="10px">
<Tabs>
<f:Tab Title="KPI Line" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi4" style="width: 100%; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="KPI Scatter" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi5" style="width: auto; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="User KPI" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi6" style="width: auto; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="Sample Analyse" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi7" style="width: auto; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="Contractor/Dis KPI" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi8" style="width: auto; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="User Proportion" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="kpi9" style="width: auto; height: 600px;"></div>
<div style="text-align: center">
Department:
<asp:DropDownList ID="ddlDropDepList" runat="server" onchange="DepChange(this.value)">
<asp:ListItem Text="ALL" Selected="true" Value="0"></asp:ListItem>
<asp:ListItem Text="CTA" Value="1"></asp:ListItem>
<asp:ListItem Text="CTE" Value="2"></asp:ListItem>
<asp:ListItem Text="CTM" Value="3"></asp:ListItem>
</asp:DropDownList>
</div>
</f:ContentPanel>
</Items>
</f:Tab>
<f:Tab Title="Dis Deduction KPI" BodyPadding="1px" runat="server">
<Items>
<f:ContentPanel runat="server" ShowHeader="false" ShowBorder="false">
<div id="other" style="width: auto; height: 600px;"></div>
</f:ContentPanel>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:Panel>
</form>
<script type="text/javascript">
function DepChange(obj) {
var types = obj == 0 ? "5" : "5" + obj;
var StartId = '<%= StartTime.ClientID %>';
var EndId = '<%= EndTime.ClientID %>';
//KPI9
var kpi9legendDate = "";
var kpi9xAxis = "";
var kpi9seriesDate = "";
var kpi9DateEnd = "";
$.ajax({
type: "POST",
dataType: "text",
url: "../common/main.ashx",
data: { "action": "kpisearchdep", "startTime": (F(StartId) == null || F(StartId) == undefined) ? "" : F(StartId).gollO1, "endTime": (F(EndId) == null || F(EndId) == undefined) ? "" : F(EndId).ollO1, "kpitype": types },
async: false,
success: function (result) {
var data = data = jQuery.parseJSON(result);
//kpi9
kpi9legendDate = data.Kpi9json.split('||')[0];
kpi9xAxis = data.Kpi9json.split('||')[1];
kpi9DateEnd = data.Kpi9json.split('||')[2];
kpi9seriesDate = data.kpi9series;
}
});
Kpi9(kpi9legendDate, kpi9xAxis, kpi9seriesDate, kpi9DateEnd);
}
function btnSubmit() {
var StartId = '<%= StartTime.ClientID %>';
var EndId = '<%= EndTime.ClientID %>';
//KPI4
var kpi4xAxis = "";
var kpi4serieshze = "";
var kpi4serieshzl = "";
var kpi4DateEnd = "";
//KPI5
var kpi5series = "";
//KPI6
var kpi6xAxis = "";
var kpi6seriesSsr = "";
var kpi6serieshzl = "";
var kpi6DateEnd = "";
//KPI7
var kpi7xAxis = "";
var kpi7seriesSsr = "";
var kpi7Count = "";
var kpi7DateEnd = "";
var kpi7titleName = "";
//KPI8
var kpi8xAxis = "";
var kpi8ssrCost = "";
var kpi8DateEnd = "";
var kpi8titleName = "";
//KPI9
var kpi9legendDate = "";
var kpi9xAxis = "";
var kpi9seriesDate = "";
var kpi9DateEnd = "";
//KPIOther
var kpioxAxis = "";
var kpioserieshze = "";
var kpioserieshzl = "";
var kpioDateEnd = "";
$.ajax({
type: "POST",
dataType: "text",
url: "../common/main.ashx",
data: { "action": "kpi", "startTime": (F(StartId) == null || F(StartId) == undefined) ? "" : F(StartId).o0o10, "endTime": (F(EndId) == null || F(EndId) == undefined) ? "" : F(EndId).o0o10 },
async: false,
success: function (result) {
var data = data = jQuery.parseJSON(result);
//kpi4
kpi4xAxis = data.Kpi4json.split('||')[0];
kpi4serieshze = data.Kpi4json.split('||')[1];
kpi4serieshzl = data.Kpi4json.split('||')[2];
kpi4DateEnd = data.Kpi4json.split('||')[3];
//kpi5
kpi5series = data.Kpi5json;
//kpi6
kpi6xAxis = data.Kpi6json.split('||')[0];
kpi6seriesSsr = data.Kpi6json.split('||')[1];
kpi6serieshzl = data.Kpi6json.split('||')[2];
kpi6DateEnd = data.Kpi6json.split('||')[3];
//kpi7
kpi7xAxis = data.Kpi7json.split('||')[0];
kpi7seriesSsr = data.Kpi7json.split('||')[1];
kpi7Count = data.Kpi7json.split('||')[2];
kpi7DateEnd = data.Kpi7json.split('||')[3];
kpi7titleName = data.Kpi7json.split('||')[4];
//kpi8
kpi8xAxis = data.Kpi8json.split('||')[0];
kpi8ssrCost = data.Kpi8json.split('||')[1];
kpi8DateEnd = data.Kpi8json.split('||')[2];
kpi8titleName = data.Kpi8json.split('||')[3];
//kpi9
kpi9legendDate = data.Kpi9json.split('||')[0];
kpi9xAxis = data.Kpi9json.split('||')[1];
kpi9DateEnd = data.Kpi9json.split('||')[2];
kpi9seriesDate = data.kpi9series;
//kpio
kpioxAxis = data.Kpiojson.split('||')[0];
kpioserieshze = data.Kpiojson.split('||')[1];
kpioserieshzl = data.Kpiojson.split('||')[2];
kpioDateEnd = data.Kpiojson.split('||')[3];
}
});
Kpi4(kpi4xAxis, kpi4serieshze, kpi4serieshzl, kpi4DateEnd);
Kpi5(kpi5series);
KPI6(kpi6xAxis, kpi6seriesSsr, kpi6serieshzl, kpi6DateEnd);
KPI7(kpi7xAxis, kpi7seriesSsr, kpi7Count, kpi7DateEnd, kpi7titleName);
KPI8(kpi8xAxis, kpi8ssrCost, kpi8DateEnd, kpi8titleName);
Kpi9(kpi9legendDate, kpi9xAxis, kpi9seriesDate, kpi9DateEnd);
Kpio(kpioxAxis, kpioserieshze, kpioserieshzl, kpioDateEnd);
return true;
}
//KPI4
function Kpi4(kpi4xAxis, kpi4serieshze, kpi4serieshzl, kpi4DateEnd) {
$("#kpi4").css('width', $("#Panel1_TabStrip1_ctl00").width());
var KPI4 = echarts.init(document.getElementById("kpi4"));
var optionKpi4 = {
tooltip: {
trigger: 'axis'
},
grid: {
left: '15%',
},
legend: {
data: ['Deduction Cost(RMB)', 'Deduction Rate'],
},
xAxis: [
{
type: 'category',
data: kpi4xAxis.split(','),
axisPointer: {
type: 'shadow'
},
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -90
}
}
],
yAxis: [
{
type: 'value',
name: 'Deduction Cost(RMB)',
},
{
type: 'value',
name: 'Deduction Rate',
max: 100,
axisLabel: {
formatter: '{value} %'
}
}
],
dataZoom: [
{
show: true,
start: 0,
end: parseInt(kpi4DateEnd)
}
],
series: [
{
name: 'Deduction Cost(RMB)',
type: 'bar',
data: kpi4serieshze.split(','),
itemStyle: {
normal: {
color: '#94AF0a'
}
}
},
{
name: 'Deduction Rate',
type: 'line',
itemStyle: {
normal: {
label: {
show: true, //开启显示
formatter: '{c}%',
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 12,
}
}
}
},
yAxisIndex: 1,
data: kpi4serieshzl.split(',')
}
]
};
KPI4.setOption(optionKpi4);
}
//KPI5
function Kpi5(kpi5series) {
var series = [];
var kpi5hze = kpi5series.split('||')[0];
var kpi5hzl = kpi5series.split('||')[1];
var kpi5FoNo = kpi5series.split('||')[2];
var kpi5titleName = kpi5series.split('||')[3];
for (var i = 0; i < kpi5hze.split(',').length; i++) {
var arr = [];
arr.push(parseFloat(kpi5hzl.split(',')[i]), parseFloat(kpi5hze.split(',')[i]));
series.push(arr);
}
$("#kpi5").css('width', $("#kpi4").width());
var KPI5 = echarts.init(document.getElementById("kpi5"));
var optionKpi5 = {
tooltip: {
/*返回需要的信息*/
formatter: function (param) {
var value = param.value;
return '<div style="border-bottom: 1px solid rgba(255,255,255,.3); font-size: 16px;padding-bottom: 7px;margin-bottom: 7px;">' + kpi5FoNo.split(',')[param.dataIndex] + '[' + value[0] + ',' + value[1] + ']' + '</div>';
}
},
title: {
left: 'center',
text: kpi5titleName,
top: '5%',
textStyle: {
//头部字体大小
fontSize: 15
}
},
xAxis: {
scale: true,
name: 'Deduction Rate%',
position: 'left',//位置靠左
nameLocation: 'middle', //位置居中
nameGap: 40, //与y轴距离
nameRotate: 0, //角度
nameTextStyle: {
fontSize: 16,
fontWeight: 'bolder'
}
},
yAxis: {
scale: true,
name: 'Deduction CostRMB',
position: 'left',//位置靠左
nameLocation: 'middle', //位置居中
nameGap: 80, //与y轴距离
nameRotate: 90, //角度
nameTextStyle: {
fontSize: 16,
fontWeight: 'bolder'
}
},
series: [{
type: 'effectScatter',
symbolSize: 20
}, {
type: 'scatter',
data: series,
}]
};
KPI5.setOption(optionKpi5);
}
//KPI6
function KPI6(kpi6xAxis, kpi6seriesSsr, kpi6serieshzl, kpi6DateEnd) {
$("#kpi6").css('width', $("#kpi4").width());
var KPI6 = echarts.init(document.getElementById("kpi6"));
var optionKpi6 = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Deduction Cost(RMB)', 'Deduction Rate']
},
grid: {
left: '15%',
},
xAxis: [
{
type: 'category',
data: kpi6xAxis.split(','),
axisPointer: {
type: 'shadow'
},
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -90
}
}
],
yAxis: [
{
type: 'value',
name: 'Deduction Cost(RMB)'
},
{
type: 'value',
name: 'Deduction Rate',
axisLabel: {
formatter: '{value} %'
}
}
],
dataZoom: [
{
show: true,
start: 0,
end: parseInt(kpi6DateEnd)
}
],
series: [
{
name: 'Deduction Cost(RMB)',
type: 'bar',
data: kpi6seriesSsr.split(','),
itemStyle: {
normal: {
color: '#94AF0a'
}
}
},
{
name: 'Deduction Rate',
type: 'line',
yAxisIndex: 1,
itemStyle: {
normal: {
label: {
show: true, //开启显示
formatter: '{c}%',
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 12,
}
}
}
},
data: kpi6serieshzl.split(',')
}
]
};
KPI6.setOption(optionKpi6);
}
//KPI7
function KPI7(kpi7xAxis, kpi7seriesSsr, kpi7Count, kpi7DateEnd, kpi7titleName) {
$("#kpi7").css('width', $("#kpi4").width());
var KPI7 = echarts.init(document.getElementById("kpi7"));
var optionKpi7 = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['SSR Cost', 'SSR Count']
},
grid: {
left: '15%',
},
title: {
left: 'center',
text: kpi7titleName,
top: '5%',
textStyle: {
//头部字体大小
fontSize: 14
}
},
xAxis: [
{
type: 'category',
data: kpi7xAxis.split(','),
axisPointer: {
type: 'shadow'
},
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -90
}
}
],
yAxis: [
{
type: 'value',
name: 'SSR Cost'
},
{
type: 'value',
name: 'SSR Count',
axisLabel: {
formatter: '{value}'
}
}
],
dataZoom: [
{
show: true,
start: 0,
end: parseInt(kpi7DateEnd)
}
],
series: [
{
name: 'SSR Cost',
type: 'bar',
data: kpi7seriesSsr.split(','),
itemStyle: {
normal: {
color: '#94AF0a'
}
}
},
{
name: 'SSR Count',
type: 'line',
yAxisIndex: 1,
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 12,
}
}
}
},
data: kpi7Count.split(',')
}
]
};
KPI7.setOption(optionKpi7);
}
//KPI8
function KPI8(kpi8xAxis, kpi8ssrCost, kpi8DateEnd, kpi8titleName) {
$("#kpi8").css('width', $("#kpi4").width());
var KPI8 = echarts.init(document.getElementById("kpi8"));
var optionKpi8 = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
containLabel: true
},
title: {
left: 'center',
text: kpi8titleName,
top: '5%',
textStyle: {
//头部字体大小
fontSize: 14
}
},
xAxis: [
{
type: 'category',
data: kpi8xAxis.split(','),
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -20
}
}
],
yAxis: [
{
type: 'value'
}
],
dataZoom: [
{
show: true,
start: 0,
end: parseInt(kpi8DateEnd)
}
],
series: [
{
name: 'CostKRMB',
type: 'bar',
barWidth: '60%',
data: kpi8ssrCost.split(','),
itemStyle: {
normal: {
color: '#94AF0a',
label: {
show: true, //开启显示
formatter: '{c}k',
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 12,
}
}
}
}
}
]
};
KPI8.setOption(optionKpi8);
}
//KPI9
function Kpi9(kpi9legendDate, kpi9xAxis, kpi9seriesDate, kpi9DateEnd) {
$("#kpi9").css('width', $("#kpi4").width());
var KPI9 = echarts.init(document.getElementById("kpi9"));
var optionKpi9 = {
tooltip: {
trigger: 'axis',
formatter: function (params) {
var str = '';
var j = 1;
for (var i = 0; i < params.length; i++) {
if (j % 2 == 0) {
var tar = params[i];
str += (tar.seriesName + ':' + tar.value + '%<br/>');
} else {
var tar = params[i];
str += (tar.seriesName + ':' + tar.value + '%');
}
j++;
}
return params[0].name + '<br/>' + str;
}
},
legend: {
data: kpi9legendDate.split(',')
},
grid: {
left: '3%',
containLabel: true
},
title: {
left: 'center',
text: 'Discipline Proportion of User',
top: '5%',
textStyle: {
//头部字体大小
fontSize: 14
}
},
xAxis: [{
type: 'category',
data: kpi9xAxis.split(','),
axisPointer: {
type: 'shadow'
},
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -90
},
name: '部门'
}],
yAxis: [{
type: 'value',
name: '占比',
max: 100
}],
series: kpi9seriesDate,
dataZoom: [{
show: true,
start: 0,
end: parseInt(kpi9DateEnd)
},
{
show: false,
yAxisIndex: 0,
filterMode: 'empty',
width: 30,
height: '70%',
showDataShadow: true,
left: '93%'
}]
}
KPI9.setOption(optionKpi9);
}
//KPIo
function Kpio(kpioxAxis, kpioserieshze, kpioserieshzl, kpioDateEnd) {
$("#other").css('width', $("#kpi4").width());
var KPIo = echarts.init(document.getElementById("other"));
var optionKpio = {
tooltip: {
trigger: 'axis'
},
grid: {
left: '15%',
},
legend: {
data: ['Deduction Cost(RMB)', 'Deduction Rate(%)'],
},
title: {
left: 'center',
text: 'Dis Deduction',
top: '5%'
},
xAxis: [
{
type: 'category',
data: kpioxAxis.split(','),
axisPointer: {
type: 'shadow'
},
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: -90
}
}
],
yAxis: [
{
type: 'value',
name: 'Deduction Cost(RMB)',
},
{
type: 'value',
name: 'Deduction Rate(%)',
max: 100,
axisLabel: {
formatter: '{value} %'
}
}
],
dataZoom: [
{
show: true,
start: 0,
end: parseInt(kpioDateEnd)
}
],
series: [
{
name: 'Deduction Cost(RMB)',
type: 'bar',
data: kpioserieshze.split(','),
itemStyle: {
normal: {
color: '#94AF0a'
}
}
},
{
name: 'Deduction Rate(%)',
type: 'line',
yAxisIndex: 1,
data: kpioserieshzl.split(','),
itemStyle: {
normal: {
label: {
show: true, //开启显示
formatter: '{c}%',
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 12,
}
}
}
}
}
]
};
KPIo.setOption(optionKpio);
}
</script>
</body>
</html>