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

801 lines
31 KiB
Plaintext
Raw Normal View History

2024-05-08 10:17:02 +08:00
<%@ 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.6.4.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>