2.12.1、BI统计报表基础知识
对我们创建的自定义功能,自定义流程系统会自动创建实际的表,并自动保存用户提交的数据。对于已经收集的数据,实际工作中需要进一步的提取各表的数据然后进行统计分析。
统计报表可以分成以下三类:
1、Grid数据列表,自由汇总统计任意表的数据
统计SQL DEMO:
select top 100000000 *,发货状态=(case when 已发货数量=0 then '未发货' else (case when 未发货数量>0 then '部分发货' else '已发货' end) end),开票状态=(case when 已开票金额=0 then '未开票' else (case when 未开票金额>0 then '部分开票' else '已开票' end) end),收款状态=(case when 已收款金额=0 then '未收款' else (case when 未收款金额>0 then '部分收款' else '已收款' end) end) from 销售订单主表 order by ID desc
界面布局模板 DEMO:
<style type="text/css"> #MainContentDIVDataTableDIV .WorkFlowCSSTable { box-shadow: none; } .CommonTabContainer { border-bottom: 1px solid #eee; } .TagList { float: left; margin-top: 28px; margin-left: 10px; } .TagList span { padding: 5px 3px 5px 8px; cursor: pointer; border-radius: 5px; margin-right: 10px; border: 0px solid #33b5e5; color: #33b5e5; } .TagList span i { font-size: 14px; line-height: 14px; margin-left: 2px; } </style> <checkpermission>发起流程权限.销售订单,7e8df374-c12a-40e7-b784-dde97f817d8d</checkpermission> <div class="panel panel-bordered CenterDIV Relative" style="margin-top: 10px; display: table; min-width: 100%;"> <div class="panel-heading Relative"> <h3 class="panel-title FloatLeft">销售订单</h3> <div class="TagList"> <span id="明细列表" class="Hidden">查看明细<i class="mui-icon mui-icon-arrowright"></i></span> </div> <div class="ClearFloat"></div> </div> <div style="padding: 0px 10px;"> <div id="GridQuickFilterSummaryDIV" style="padding-bottom: 0px;"></div> <$DataGrid$> </div> </div> <script> DomReady(function () { var OtherTabMenuCode = "7e8df374-c12a-40e7-b784-dde97f817d8d"; if (Array.contains(CheckPermissionMenuCodeResultList, OtherTabMenuCode)) { Element.RemoveClass($("#明细列表"), "Hidden"); BlindEvent($("#明细列表"), { "click": function () { LoadServicePage(OtherTabMenuCode, '', '', ''); } }); } }); PageDynamicObject.InitiateDataGridOnLoad = false; PageDynamicObject.InitiatedDataGridCallBack = function () { if (Array.contains(CheckPermissionMenuCodeResultList, "发起流程权限.销售订单")) { HTMLGridClass.Config.ControlBarExtraHTML = "<a class=\"dropdown-item\" href=\"javascript:LoadInitiateWorkFlowPage('销售订单','')\" role=\"menuitem\">新建销售订单</a>"; } HTMLGridClass.InitiateCore(); }; </script>
2、图形化统计报表
统计SQL DEMO:
空
界面布局模板 DEMO:
<style type="text/css"> .CellPageSummaryAreaDIV { margin-right: auto; margin-left: auto; background-color: #fff; border-radius: 5px; padding: 5px 5px; margin-bottom: 10px; } .CellPageSummaryAreaDIV .HeaderDIV { border-bottom: 1px solid #eee; padding-bottom: 10px; height: 20px; } .CellPageSummaryAreaDIV .TitleDIV { font-size: 14px; font-weight: 600; color: #888; float: left; margin-top: 2px; } .CellPageSummaryAreaDIV .TabDIV { float: left; margin-left: 20px; } .CellPageSummaryAreaDIV .RightDIV { float: right; } .CellPageSummaryAreaDIV .CommonTabContainer div { color: #666; font-size: 12px; } .CellPageSummaryAreaDIV .CommonTabContainer .Focus { border-bottom: 1px solid #F5790B; line-height: 17px; } </style> <script src="HighCharts/highcharts.js?Version=2018-1-15"></script> <table class="FullWidth FixedTable" style="margin-top: 10px;"> <tr> <td> <div class="CellPageSummaryAreaDIV"> <div id="产品类型层" style="height: 200px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> </td> <td style="width: 12px;"></td> <td> <div class="CellPageSummaryAreaDIV"> <div id="产品类型订单层" style="height: 200px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> </td> <td style="width: 12px;"></td> <td> <div class="CellPageSummaryAreaDIV"> <div id="产品库存层" style="height: 200px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> </td> </tr> </table> <table class="FullWidth FixedTable" style="margin-top: 2px;"> <tr> <td> <div class="CellPageSummaryAreaDIV" style="padding-top: 15px !important; padding-bottom: 0px !important;"> <div id="产品销售排行榜层" style="height: 410px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> </td> <td style="width: 15px;"></td> <td> <div class="CellPageSummaryAreaDIV" style="padding-right: 15px !important; padding-left: 0px !important;"> <div id="产品销售分析层" style="height: 410px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> </td> </tr> </table> <script> function 产品类型统计() { var ContainerDIVID = "产品类型层"; Element.RemoveClass($("#" + ContainerDIVID), "CenterDIV"); Element.SetHtml($("#" + ContainerDIVID), GetLoadingMsg("正在加载...")); LoadServiceClass.LoadServiceInterfaceByDLLSetting("V8插件.dll|标准项目插件.产品分析|产品类型统计", "产品类型统计", false, "", "", {}, function (返回值) { if (返回值.Result.length > 0) { Element.AddClass($("#" + ContainerDIVID), "CenterDIV"); var Config = eval("(" + 返回值.Result + ")"); var datalist = eval("(" + Config.datalist + ")"); Highcharts.chart(ContainerDIVID, { chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, type: 'pie' }, title: { text: '产品类型分析', style: { color: "#888", fontSize: "13px", fontWeight: 'bold' } }, tooltip: { pointFormat: '{series.name}: <b>{point.y} 种产品</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, distance: 1, format: '{point.name}: {point.y} 种产品', style: { color: '#888', textShadow: false, fontWeight: 'bold', fontFamily: "Microsoft YaHei" } } } }, series: [{ name: '产品数量', colorByPoint: true, data: datalist, innerSize: '60%', colors: ["#7CB5EC", "#5DCDDA", "#FCF6A0", "#FAEFC2", "#B7EFAE", "#76E3C3", "#60D0DC"] }] }); } else { Element.SetHtml($("#" + ContainerDIVID), "<div class='GreyText'>暂无记录</div>"); } }, function (返回值) { Element.SetHtml($("#" + ContainerDIVID), 返回值.ErrorMsg); }, { ActionName: "产品类型统计" }); } function 产品类型订单统计() { var ContainerDIVID = "产品类型订单层"; Element.RemoveClass($("#" + ContainerDIVID), "CenterDIV"); Element.SetHtml($("#" + ContainerDIVID), GetLoadingMsg("正在加载...")); LoadServiceClass.LoadServiceInterfaceByDLLSetting("V8插件.dll|标准项目插件.产品分析|产品类型订单统计", "产品类型订单统计", false, "", "", {}, function (返回值) { if (返回值.Result.length > 0) { Element.AddClass($("#" + ContainerDIVID), "CenterDIV"); var Config = eval("(" + 返回值.Result + ")"); var datalist = eval("(" + Config.datalist + ")"); Highcharts.chart(ContainerDIVID, { chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, type: 'pie' }, title: { text: '产品类型销售分析', style: { color: "#888", fontSize: "13px", fontWeight: 'bold' } }, tooltip: { pointFormat: '{series.name}: <b>{point.y} 元</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, distance: 1, format: '{point.name}: {point.y} 元', style: { color: '#888', textShadow: false, fontWeight: 'bold', fontFamily: "Microsoft YaHei" } } } }, series: [{ name: '销售金额', colorByPoint: true, data: datalist, innerSize: '60%', colors: ["#7CB5EC", "#5DCDDA", "#FCF6A0", "#FAEFC2", "#B7EFAE", "#76E3C3", "#60D0DC"] }] }); } else { Element.SetHtml($("#" + ContainerDIVID), "<div class='GreyText'>暂无记录</div>"); } }, function (返回值) { Element.SetHtml($("#" + ContainerDIVID), 返回值.ErrorMsg); }, { ActionName: "产品类型订单统计" }); } function 产品库存统计() { var ContainerDIVID = "产品库存层"; Element.RemoveClass($("#" + ContainerDIVID), "CenterDIV"); Element.SetHtml($("#" + ContainerDIVID), GetLoadingMsg("正在加载...")); LoadServiceClass.LoadServiceInterfaceByDLLSetting("V8插件.dll|标准项目插件.产品分析|产品库存统计", "产品库存统计", false, "", "", {}, function (返回值) { if (返回值.Result.length > 0) { Element.AddClass($("#" + ContainerDIVID), "CenterDIV"); var Config = eval("(" + 返回值.Result + ")"); var datalist = eval("(" + Config.datalist + ")"); Highcharts.chart(ContainerDIVID, { chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, type: 'pie' }, title: { text: '产品库存分析', style: { color: "#888", fontSize: "13px", fontWeight: 'bold' } }, tooltip: { pointFormat: '{series.name}: <b>{point.y} 元</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, distance: 1, format: '{point.name}: {point.y} 元', style: { color: '#888', textShadow: false, fontWeight: 'bold', fontFamily: "Microsoft YaHei" } } } }, series: [{ name: '销售金额', colorByPoint: true, data: datalist, innerSize: '60%', colors: ["#7CB5EC", "#5DCDDA", "#FCF6A0", "#FAEFC2", "#B7EFAE", "#76E3C3", "#60D0DC"] }] }); } else { Element.SetHtml($("#" + ContainerDIVID), "<div class='GreyText'>暂无记录</div>"); } }, function (返回值) { Element.SetHtml($("#" + ContainerDIVID), 返回值.ErrorMsg); }, { ActionName: "产品库存统计" }); } function 产品销售统计() { var ContainerDIVID = "产品销售排行榜层"; Element.RemoveClass($("#" + ContainerDIVID), "CenterDIV"); Element.SetHtml($("#" + ContainerDIVID), GetLoadingMsg("正在加载...")); LoadServiceClass.LoadServiceInterfaceByDLLSetting("V8插件.dll|标准项目插件.产品分析|产品销售统计", "产品销售统计", false, "", "", {}, function (返回值) { if (返回值.Result.length > 0) { Element.AddClass($("#" + ContainerDIVID), "CenterDIV"); var Config = eval("(" + 返回值.Result + ")"); //显示图形 $('#' + ContainerDIVID).highcharts({ chart: { type: 'column', backgroundColor: 'transparent' }, title: { text: "产品销售排行", style: { color: "#888", fontSize: "13px", fontWeight: 'bold' } }, xAxis: { categories: Config.categories, crosshair: true, labels: { enabled: true, align: "center", style: { color: "#888", fontSize: "10px", fontFamily: "Microsoft YaHei" }, y: 35 } }, legend: { enabled: false }, yAxis: { min: 0, title: { text: '销售金额', style: { color: "#888" } }, gridLineColor: '#f3f3f3' }, tooltip: { headerFormat: '<span style="font-size:10px">{point.key}</span><table>', pointFormat: '<tr><td style="padding:0">{series.name}: </td>' + '<td style="padding:0"><b>{point.y}元 </b></td></tr>', footerFormat: '</table>', shared: true, useHTML: true }, plotOptions: { column: { borderWidth: 0, pointWidth: 18 }, series: { colorByPoint: false } }, gridLineColor: '#eee', series: [{ name: '销售金额', data: Config.data, borderRadiusTopLeft: 3, borderRadiusTopRight: 3, borderRadiusBottomRight: 0, borderRadiusBottomLeft: 0 }] }); } else { Element.SetHtml($("#" + ContainerDIVID), "<div class='GreyText'>暂无记录</div>"); } }, function (返回值) { Element.SetHtml($("#" + ContainerDIVID), 返回值.ErrorMsg); }, { ActionName: "产品销售统计" }); } function 产品销售分析() { var ContainerDIVID = "产品销售分析层"; Element.RemoveClass($("#" + ContainerDIVID), "CenterDIV"); Element.SetHtml($("#" + ContainerDIVID), GetLoadingMsg("正在加载...")); LoadServiceClass.LoadServiceInterfaceByDLLSetting("V8插件.dll|标准项目插件.产品分析|产品销售分析", "产品销售分析", false, "", "", {}, function (返回值) { if (返回值.Result.length > 0) { Element.AddClass($("#" + ContainerDIVID), "CenterDIV"); var Config = eval("(" + 返回值.Result + ")"); var datalist = eval("(" + Config.datalist + ")"); Highcharts.chart(ContainerDIVID, { chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, type: 'pie' }, title: { text: '产品销售分析', style: { color: "#888", fontSize: "13px", fontWeight: 'bold' } }, tooltip: { pointFormat: '{series.name}: <b>{point.y} 元</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, distance: 20, format: '{point.name}: {point.y} 元', style: { color: '#888', textShadow: false, fontWeight: 'bold', fontFamily: "Microsoft YaHei" } } } }, series: [{ name: '销售金额', colorByPoint: true, data: datalist, innerSize: '60%', colors: ["#7CB5EC", "#5DCDDA", "#FCF6A0", "#FAEFC2", "#B7EFAE", "#76E3C3", "#60D0DC"] }] }); } else { Element.SetHtml($("#" + ContainerDIVID), "<div class='GreyText'>暂无记录</div>"); } }, function (返回值) { Element.SetHtml($("#" + ContainerDIVID), 返回值.ErrorMsg); }, { ActionName: "产品销售分析" }); } DomReady(function () { 产品类型统计(); 产品类型订单统计(); 产品库存统计(); 产品销售统计(); 产品销售分析(); }); </script>
3、混合式统计报表
统计SQL DEMO:
无
界面布局模板 DEMO:
<checkpermission>CRM.CustomizedWCFUI.ServiceFactory.CRM.CustomerInfoClass.Load_AddNew_Page,CRM.CustomizedWCFUI.ServiceFactory.CRM.CustomerSaleChanceClass.Load_AddNew_Page,发起流程权限.合同会审,c8550fd9-d5b5-4a1c-a06f-50d7bf694e62.Load_AddNew_Page,34be4a11-c822-4aba-bf2b-f3b42574fa79</checkpermission> <style type="text/css"> body { overflow: hidden; } #TotalSummaryTable td, .NewSummaryListTable td { padding: 10px; } #TotalSummaryTable td { padding-top: 12px; padding-bottom: 5px; } .NewSummaryListTable td { padding-top: 12px; } .CellSummaryDIV .Icon { width: 40%; float: left; height: 100px; border-top-left-radius: 5px; border-bottom-left-radius: 5px; text-align: center; } .CellSummaryDIV .Content { width: 60%; float: left; height: 100px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; background-color: #fff; } .CellSummaryDIV .Content .Number { margin-top: 30px; font-size: 18px; text-align: center; color: #888; font-weight: 300; font-family: Roboto; } .CellSummaryDIV .Content .Title { margin-top: 10px; font-size: 12px; text-align: center; color: #aaa; } #TotalCustomer { background-color: #6CCAC9; } #TotalSaleChance { background-color: #FF6C60; } #TotalContract { background-color: #F8D347; } #TotalReceiveMoney { background-color: #57C8F2; } .CellSummaryDIV .Icon span { font-size: 50px; margin-top: 40px; color: #fff; } .CellSummaryDIV .AddNew { cursor: pointer; } .CellSummaryDIV .AddNew * { color: #fff !important; } .CellSummaryDIV .AddNew .Number { margin-top: 25px; } .CellSummaryDIV .AddNew .Number span { font-size: 50px; text-align: center; color: #fff !important; line-height: 30px; } .CellPageSummaryAreaDIV { margin-right: auto; margin-left: auto; background-color: #fff; border-radius: 5px; padding: 12px 15px; margin-bottom: 15px; } .CellPageSummaryAreaDIV .HeaderDIV { border-bottom: 1px solid #eee; padding-bottom: 10px; height: 20px; } .CellPageSummaryAreaDIV .TitleDIV { font-size: 14px; font-weight: 600; color: #888; float: left; margin-top: 2px; /*text-shadow: 1px 1px #fefefe;*/ } .CellPageSummaryAreaDIV .TabDIV { float: left; margin-left: 20px; } .CellPageSummaryAreaDIV .RightDIV { float: right; } .CellPageSummaryAreaDIV .CommonTabContainer div { color: #666; font-size: 12px; } .CellPageSummaryAreaDIV .CommonTabContainer .Focus { border-bottom: 1px solid #F5790B; line-height: 17px; } #审批中心正文层 .percircle { position: relative; font-size: 30px; width: 1em; height: 1em; -webkit-border-radius: 50%; -moz-border-radius: 50%; -ms-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; float: left; margin: 0 0.1em 0.1em 0; background-color: #cccccc; } #审批中心正文层 .percircle > span { font-size: 0.3em; line-height: 10px; } #审批中心正文层 td { vertical-align: middle !important; color: #999 !important; } #审批中心正文层 a, #最新消息正文层 a { color: #3e8ef7 !important; } .NewsDataTable td { padding: 6px 0px; padding-bottom: 7px; } .CellLine { border-bottom: 1px solid #eee; padding-top: 15px; padding-bottom: 15px; padding-left: 5px; padding-right: 5px; cursor: pointer; } .CellLine:hover { background-color: #F8F8F8; border-bottom: 0px; } .CellLine .Icon { float: left; font-size: 20px; width: 20%; color: #ccc; } .CellLine .Title { float: left; width: 60%; font-size: 13px; color: #999; } .CellLine .Number { float: right; width: 15%; font-size: 14px; border-radius: 10px; text-align: right; padding-right: 5px; color: #aaa; } .CellLine .mui-icon { float: right; width: 10%; font-size: 16px; color: #bbb; margin-top: 1px; text-align: right; } .CellUserInfoLine { border-bottom: 1px solid #eee; padding-top: 8px; padding-bottom: 8px; } .CellUserInfoLine .Index { float: left; width: 10%; text-align: center; margin-top: 8px; } .CellUserInfoLine .UserIcon { float: left; width: 20%; } .CellUserInfoLine .UserIcon img { width: 36px; border: 1px solid #ddd; border-radius: 18px; } .CellUserInfoLine .Name { float: left; width: 35%; margin-top: 8px; } .CellUserInfoLine .Money { float: left; width: 35%; margin-top: 8px; } .TopTab { font-size: 12px; font-family:'Microsoft YaHei'; margin-left: 20px; color: #000; cursor: pointer; margin-right: 12px; padding-top: 12px; float: left; } .TopTabContainerDIV { margin-top: 12px; margin-left: 15px; width: 300px; } .FocusTab { color: #fff; font-weight: bold; border-radius:20px; padding:3px 10px; background-color:#3e8ef7; margin-top:10px; font-weight: 600;} .CellLineDIV { padding: 9px; border-top: 1px solid #F1F4F5; } .FirstCellLineDIV { border-top: none !important; padding-top: 0px; } .CellLineDIV .TitleDIV { float: left; width: 100px; color: #aaa; font-size: 12px; } .CellLineDIV .ContentDIV { float: left; padding: 0px !important; color: #555; font-size: 12px; } small { font-size: 12px !important; color: #aaa; } .comment { padding-top: 10px; padding-bottom: 10px; } .comments .comment { border-bottom: 1px solid #F1F4F5 !important; } .avatar { border: 1px solid #F1F4F5; } .list-group-item { font-size: 13px !important; } .text-left { text-align: left; } .user-visitors h5 { font-size: 12px; } .counter-number { font-weight: 500; color: #666; } .card-title, h4 { font-size: 16px; } .user-name { font-size: 18px; } #TemplateID { padding: 5px; border: 1px solid #ddd; border-radius: 5px; } .客户行动历史记录表客户详情页 .dropdown-toggle { width: 282px; } .DetailsTable td { color: #76838F; } .counter-number { font-family: Roboto !important; } .客户行动历史记录表客户详情页 .dropdown-toggle { width: 100% !important; } .IsFinished { display: none; } .IsFinishedFalse { display: inline-block !important; background-color: #ff6a00; border-radius: 5px; color: #fff; font-size: 11px; padding: 1px 3px; font-weight: normal !important; margin-left: 2px; } .NewSummary { } .NewSummaryInner .NewSummaryContent { background-color: #fff; height: 110px; border-radius: 3px; position: relative; } .NewSummaryInner .NewSummaryContent .Number { position: absolute; top: 50px; width: 100%; text-align: center; color: #888; font-size: 18px; font-family: Roboto,sans-serif; font-weight: 300; } .NewSummaryInner .NewSummaryContent .Title { position: absolute; top: 15px; width: 100%; font-family: 'PingFang SC','Microsoft YaHei'; font-size: 12px; color: #aaa; text-align: center; } .NewSummaryInner .NewSummaryContent .Description { position: absolute; bottom: 10px; width: 100%; font-size: 12px; color: #ccc; text-align: center; } .WorkFlowCategory { font-size: 14px; font-weight: 600; color: #888; /*text-shadow: 1px 1px #fefefe;*/ margin-bottom: 10px; } #WorkFlowListInnerDIV .avatar { width: 34px; } #WorkFlowListInnerDIV h5 { color: #666; } #UserHomePageDIV { padding-top: 5px; } h3 { font-size: 18px; padding-top: 0px; padding-bottom: 0px; padding-left: 10px; margin-top: 10px; margin-bottom: 5px; position: relative; padding-left: 18px; } h3 i { display: inline-block; width: 8px; height: 20px; border-radius: 3px; background-color: #3e8ef7; position: absolute; top: 0px; left: 0px; } #UserHomePageDIV .list-group li { opacity: 0.9; } #UserHomePageDIV .list-group li:hover { opacity: 1; } .form-group { display: none; } .btn-round { height: 28px !important; } .ribbon { width: 90px; height: 90px; } .ribbon-badge { top: 10px; } .ribbon-badge.ribbon-reverse { right: 10px; } .ribbon-inner { top: 10px; } .HorizontalSpliter { position: absolute; left: 0px; top: 280px; width: 100%; } .HorizontalSpliter .Left { float: left; font-size: 14px; color: #f96868; font-weight: bold; font-family: 'PingFang SC'; } .HorizontalSpliter .Middle { float: left; border-bottom: 1px solid #eee; margin-top: 8px; } .HorizontalSpliter .Right { float: right; font-size: 14px; color: #11c26d; font-weight: bold; font-family: 'PingFang SC'; } .VerticalSpliter { position: absolute; left: 48%; top: 0px; height: 400px; } .VerticalSpliter .Top { font-size: 14px; color: #f96868; width: 50px; text-align: center; font-weight: bold; font-family: 'PingFang SC'; } .VerticalSpliter .Middle { border-left: 1px solid #eee; margin-left: 20px; } .VerticalSpliter .Bottom { font-size: 14px; color: #11c26d; width: 50px; text-align: center; margin-top: 10px; font-weight: bold; font-family: 'PingFang SC'; } .tabs-line-top { height: auto !important; } #ProjectTaskListContainerDIV .tabs-line-top { width: 98%; } .tabs-line-top li { font-family: 'PingFang SC'; font-size: 13px; } #LeftTopTaskListDIV, #LeftBottomTaskListDIV, #RightTopTaskListDIV, #RightBottomTaskListDIV { width: 47%; height: 250px; position: absolute; } #LeftTopTaskListDIV { position: absolute; left: 0px; top: 0px; } #LeftBottomTaskListDIV { position: absolute; left: 0px; bottom: -5px; } #RightTopTaskListDIV { position: absolute; right: 0px; top: 0px; } #RightBottomTaskListDIV { position: absolute; right: 0px; bottom: -5px; } #ProjectTaskListDIV .table td { color: #999; } #ProjectTaskListDIV .table th, #ProjectListDIV .table th, #TeammateListContainerDIV .table th { font-weight: 600; } h5 { font-size: 13px; } </style> <script src="App/script/LoadDataListClass.js?Version=2018-1-15"></script> <script src="HighCharts/highcharts.js?Version=2018-1-15"></script> <script src="script/Desktop/DesktopSummaryClass.js?Verion=2019-5-8-02"></script> <script src="script/Desktop/DesktopMyPortalClass.js?Verion=2019-5-8-02"></script> <script src="script/ProjectAdmin/ProjectTaskClass.js?Verion=2019-5-8-02"></script> <script src="script/Desktop/DesktopProjectPortalClass.js?Verion=2019-5-8-02"></script> <script src="script/Desktop/DesktopTeamPortalClass.js?Verion=2019-5-8-02"></script> <div style="min-width: 1200px;"> <div id="DesktopSummaryDIV" class="Hidden TabContentContainer"> <table class="FixedTable FullWidth" id="TotalSummaryTable"> <tr> <td> <div class="CellSummaryDIV"> <div class="Icon" id="TotalCustomer"><span class="wb-users"></span></div> <div class="Content"> <div class="Number" id="TotalCustomerSPAN">0</div> <div class="Title">客户</div> </div> <div class="Content AddNew Hidden" style="background-color: #6CCAC9;" onclick="新建客户()"> <div class="Number"><span class="mui-icon mui-icon-plusempty"></span></div> <div class="Title Bold">新建客户</div> </div> <div class="ClearFloat"></div> </div> </td> <td> <div class="CellSummaryDIV"> <div class="Icon" id="TotalSaleChance"><span class="wb-flag"></span></div> <div class="Content"> <div class="Number" id="TotalSaleChanceSPAN">0</div> <div class="Title">商机</div> </div> <div class="Content AddNew Hidden" style="background-color: #FF6C60;" onclick="新建商机()"> <div class="Number"><span class="mui-icon mui-icon-plusempty"></span></div> <div class="Title Bold">新建商机</div> </div> <div class="ClearFloat"></div> </div> </td> <td> <div class="CellSummaryDIV"> <div class="Icon" id="TotalContract"><span class="wb-book"></span></div> <div class="Content"> <div class="Number" id="TotalContractSPAN">¥0.00</div> <div class="Title">合同</div> </div> <div class="Content AddNew Hidden" style="background-color: #F8D347;" onclick="新建合同()"> <div class="Number"><span class="mui-icon mui-icon-plusempty"></span></div> <div class="Title Bold">新建合同</div> </div> <div class="ClearFloat"></div> </div> </td> <td> <div class="CellSummaryDIV"> <div class="Icon" id="TotalReceiveMoney"><span class="wb-payment"></span></div> <div class="Content"> <div class="Number" id="TotalReceiveMoneySPAN">¥0.00</div> <div class="Title">回款</div> </div> <div class="Content AddNew Hidden" style="background-color: #57C8F2;" onclick="新建回款()"> <div class="Number"><span class="mui-icon mui-icon-plusempty"></span></div> <div class="Title Bold">新建回款</div> </div> <div class="ClearFloat"></div> </div> </td> </tr> </table> <table class="FixedTable FullWidth NewSummaryListTable"> <tr> <td> <div class="NewSummary"> <div class="NewSummaryInner" style="padding-left: 0px;"> <div class="NewSummaryContent" id="今日新增客户"> <div class="Number">0</div> <div class="Title">今日新增客户</div> <div class="Description"><span>0%</span>同比前天</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本周新增客户"> <div class="Number">0</div> <div class="Title">本周新增客户</div> <div class="Description"><span>0%</span>同比上周</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本月新增客户"> <div class="Number">0</div> <div class="Title">本月新增客户</div> <div class="Description"><span>0%</span>同比上月</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本年新增客户"> <div class="Number">0</div> <div class="Title">本年新增客户</div> <div class="Description"><span>0%</span>同比上年</div> </div> </div> </div> </td> </tr> </table> <table class="FixedTable FullWidth NewSummaryListTable"> <tr> <td> <div class="NewSummary"> <div class="NewSummaryInner" style="padding-left: 0px;"> <div class="NewSummaryContent" id="今日新增合同"> <div class="Number">0</div> <div class="Title">今日合同</div> <div class="Description"><span>0%</span>同比前天</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本周新增合同"> <div class="Number">0</div> <div class="Title">本周合同</div> <div class="Description"><span>0%</span>同比上周</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本月新增合同"> <div class="Number">0</div> <div class="Title">本月合同</div> <div class="Description"><span>0%</span>同比上月</div> </div> </div> </div> </td> <td> <div class="NewSummary"> <div class="NewSummaryInner"> <div class="NewSummaryContent" id="本年新增合同"> <div class="Number">0</div> <div class="Title">本年合同</div> <div class="Description"><span>0%</span>同比上年</div> </div> </div> </div> </td> </tr> </table> <div style="margin: 10px 11px; height: 255px; margin-top: 12px;"> <div class="Relative"> <div class="CellPageSummaryAreaDIV FloatLeft" style="width: calc(50% - 41px) !important; height: 220px; background-color: #fff;"> <div id="客户量走势图层" style="padding: 0px 0px 5px 0px; height: 220px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> <div class="CellPageSummaryAreaDIV FloatRight" style="width: calc(50% - 41px) !important; height: 220px; background-color: #fff;"> <div id="合同额走势图层" style="padding: 0px 0px 5px 0px; height: 220px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> <div class="ClearFloat"></div> </div> </div> <div style="margin: 10px 10px; margin-top: 12px;"> <div class="Relative"> <div class="CellPageSummaryAreaDIV" style="float: left; height: 305px; width: 35%; background-color: #fff; border-top-left-radius: 5px; border-bottom-left-radius: 5px; padding: 0px !important;"> <div style="padding-top: 12px; padding-left: 15px; padding-right: 15px;"> <div class="HeaderDIV"> <div class="TitleDIV">业绩排行榜</div> <div class="TabDIV"> <div class="CommonTabContainer" id="业绩排行" style="margin-top: 5px; border-bottom: 0px;"> <div class="FistTab" title='今日'>今日</div> <div title='本周'>本周</div> <div title='本月'>本月</div> <div title='本年'>本年</div> <div title='全部'>全部</div> </div> </div> <div class="ClearFloat"></div> </div> </div> <div id="业绩排行人员列表层容器" style="height: 250px; overflow: hidden;"> <div id="业绩排行人员列表层" style="padding-top: 5px; height: 250px;"></div> </div> </div> <div style="float: left; height: 305px; width: 65%; background-color: #41CAC0; border-top-right-radius: 5px; border-bottom-right-radius: 5px;"> <div id="业绩排行正文层" style="padding: 15px 0px 5px 0px; height: 290px; width: 90%; visibility: visible; color: #fff; margin-top: 0px;"></div> </div> <div class="ClearFloat"></div> </div> </div> </div> <div id="UserHomePageDIV" class="Hidden TabContentContainer"> <div style="margin: 10px 10px; height: 265px; margin-top: 10px;"> <div class="Relative"> <div class="CellPageSummaryAreaDIV" style="width: calc(26% - 65px) !important; position: absolute; top: 0px; left: 0px !important; height: 240px;"> <div class="HeaderDIV"> <div class="TitleDIV">今日工作</div> <div class="ClearFloat"></div> </div> <div class="ContentDIV" style="padding-top: 5px;"> <div class="CellLine" onclick="查看今日新增客户()"> <div class="Icon wb-users"></div> <div class="Title">今日新增客户</div> <div class="Number" id="TotalNewCustomerSPAN">0</div> <div class="ClearFloat"></div> </div> <div class="CellLine" onclick="查看今日跟进记录()"> <div class="Icon wb-chat-group"></div> <div class="Title">今日跟进记录</div> <div class="Number" id="TotalActionHistorySPAN">0</div> <div class="ClearFloat"></div> </div> <div class="CellLine" onclick="查看今日应联系客户()"> <div class="Icon wb-user"></div> <div class="Title">今日应联系客户</div> <div class="Number" id="TotalShouldContactSPAN">0</div> <div class="ClearFloat"></div> </div> <div class="CellLine" style="border-bottom: 0px;" onclick="查看今日未联系客户()"> <div class="Icon wb-clipboard"></div> <div class="Title">今日未联系客户</div> <div class="Number" id="TotalPendingContactSPAN">0</div> <div class="ClearFloat"></div> </div> </div> </div> <div class="CellPageSummaryAreaDIV" style="width: calc(37% - 20px) !important; position: absolute; top: 0px; left: calc(26% - 5px) !important; height: 240px;"> <div class="HeaderDIV"> <div class="TitleDIV">审批中心</div> <div class="TabDIV"> <div class="CommonTabContainer" id="审批中心" style="margin-top: 5px; border-bottom: 0px;"> <div class="FistTab" title='待处理'>待处理</div> <div title='抄送我的'>抄送我的</div> <div title='我发起的'>我发起的</div> <div title='我处理的'>我处理的</div> </div> </div> <div class="ClearFloat"></div> </div> <div class="ContentDIV"> <div id="审批中心正文层" style="padding: 10px 0px;"></div> </div> </div> <div class="CellPageSummaryAreaDIV" style="width: calc(37% - 60px) !important; position: absolute; top: 0px; right: 0px; height: 240px;"> <div class="HeaderDIV"> <div class="TitleDIV">最新消息</div> <div class="TabDIV Hidden"> <div class="CommonTabContainer" id="最新消息" style="margin-top: 5px; border-bottom: 0px;"> <div class="FistTab" title='未读公告'>未读公告</div> </div> </div> <div class="ClearFloat"></div> </div> <div class="ContentDIV"> <div id="最新消息正文层" style="padding: 10px 0px;"></div> </div> </div> </div> </div> <div style="margin: 10px 10px; margin-top: 20px; margin-bottom: 0px;" class="Relative Hidden" id="ProjectTaskListContainerDIV"> <a href="javascript:ProjectTaskClass.QuickLoadAddNewTaskPage()" style="z-index: 10000;" class="HandCursor"><span class="mui-icon mui-icon-plusempty" style="position: absolute; top: 18px; right: 100px; z-index: 1000;"></span><span style="position: absolute; top: 20px; right: 80px; z-index: 1000;">任务</span></a> <div class="ribbon ribbon-badge ribbon-primary ribbon-reverse" style="top: 0px; right: 0px;"><span class="ribbon-inner">任务四象限</span></div> <div class="CellPageSummaryAreaDIV" style="height: 640px;"> <div class="nav-tabs-horizontal" data-plugin="tabs"> <ul class="nav nav-tabs nav-tabs-line tabs-line-top" role="tablist"> <li class="nav-item" role="presentation"><a class="nav-link active" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('我的待办')">我的待办<span id="我的待办SPAN" class="badge badge-pill badge-danger" style="margin-left: 3px; padding-left: 2px !important; padding-right: 2px !important; line-height:10px !important;"></span></a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('等我验收的')">等我验收的<span id="等我验收的SPAN" class="badge badge-pill badge-danger" style="margin-left: 3px; padding-left: 2px !important; padding-right: 2px !important; line-height:10px !important;"></span></a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('我发起的')">我发起的</a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('我协作的')">我协作的</a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('抄送我的')">抄送我的</a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('我完成的')">我完成的</a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopOne" aria-controls="exampleTabsLineTopOne" role="tab" onclick="ProjectTaskClass.LoadTaskListClass.Initiate('全部任务')">全部任务</a></li> </ul> <div class="tab-content pt-20"> <div class="tab-pane active" id="exampleTabsLineTopOne" role="tabpanel"> <div class="ContentDIV Relative" style="padding-top: 5px; margin-top: 5px; height: 560px;" id="ProjectTaskListDIV"> <div id="LeftTopTaskListDIV"></div> <div id="LeftBottomTaskListDIV"></div> <div id="RightTopTaskListDIV"></div> <div id="RightBottomTaskListDIV"></div> <div class="HorizontalSpliter"> <div class="Left" style="width: 60px;">紧急</div> <div class="Middle" style="width: calc(100% - 120px) !important;"></div> <div class="Right" style="width: 60px;">不紧急</div> </div> <div class="VerticalSpliter"> <div class="Top" style="height: 30px;">重要</div> <div class="Middle" style="height: 500px;"></div> <div class="Bottom" style="height: 30px;">不重要</div> </div> </div> </div> </div> </div> </div> </div> <div class="NewSummaryDIV Hidden Relative" id="WorkFlowListContainerDIV"> <div class="ribbon ribbon-badge ribbon-primary ribbon-reverse"><span class="ribbon-inner">常用申请</span></div> <div style="padding: 10px;"> <div style="padding: 20px; background-color: #fff; border-radius: 3px;" id="WorkFlowListDIV"> <div id="WorkFlowListInnerDIV"></div> </div> </div> </div> </div> <div id="ProjectHomePageDIV" class="Hidden TabContentContainer"> <div style="margin: 10px 11px; height: 265px; margin-top: 15px;"> <div class="Relative"> <div class="CellPageSummaryAreaDIV FloatLeft" style="width: calc(50% - 41px) !important; height: 230px; background-color: #fff;"> <div id="项目数量统计层" style="padding: 0px 0px 5px 0px; height: 230px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> <div class="CellPageSummaryAreaDIV FloatRight" style="width: calc(50% - 41px) !important; height: 230px; background-color: #fff;"> <div id="项目状态统计层" style="padding: 0px 0px 5px 0px; height: 230px; width: 100%; visibility: visible; margin-top: 0px;"></div> </div> <div class="ClearFloat"></div> </div> </div> <div style="margin: 10px 10px; margin-top: 10px; margin-bottom: 0px;" class="Relative" id="ProjectListContainerDIV"> <a href="javascript:DesktopProjectPortalClass.QuickLoadAddNewTaskPage()" style="z-index: 10000;" class="HandCursor"><span class="mui-icon mui-icon-plusempty" style="position: absolute; top: 18px; right: 40px; z-index: 1000;"></span><span style="position: absolute; top: 20px; right: 20px; z-index: 1000;">项目</span></a> <div class="CellPageSummaryAreaDIV" style="min-height: 800px;"> <div class="nav-tabs-horizontal" data-plugin="tabs"> <ul class="nav nav-tabs nav-tabs-line tabs-line-top" role="tablist"> <li class="nav-item" role="presentation"><a class="nav-link active" data-toggle="tab" href="#exampleTabsLineTopTwo" aria-controls="exampleTabsLineTopTwo" role="tab" onclick="DesktopProjectPortalClass.LoadProjectListClass.Initiate('我参与的项目')">我参与的项目</a></li> <li class="nav-item" role="presentation"><a class="nav-link" data-toggle="tab" href="#exampleTabsLineTopTwo" aria-controls="exampleTabsLineTopTwo" role="tab" onclick="DesktopProjectPortalClass.LoadProjectListClass.Initiate('我创建的项目')">我创建的项目</a></li> </ul> <div class="tab-content pt-20"> <div class="tab-pane active" id="exampleTabsLineTopTwo" role="tabpanel"> <div style="padding-top: 0px; padding-bottom: 20px; padding-right: 30px;"> <div> <div class="FloatLeft" style="margin-top: 13px; font-weight: bold;">项目状态:</div> <div class="FloatLeft"> <table> <tr> <td> <div class="checkbox-custom checkbox-default" style="margin-right: 5px;"> <input type="checkbox" id="筛选项目状态正常" name="筛选项目状态" class="筛选项目状态" value="正常" onclick="DesktopProjectPortalClass.LoadProjectListClass.ProjectStatusChangedEvent()" /> <label for="inputBasicRemember">正常</label> </div> </td> <td> <div class="checkbox-custom checkbox-default" style="margin-right: 5px;"> <input type="checkbox" id="筛选项目状态暂停" name="筛选项目状态" class="筛选项目状态" value="暂停" onclick="DesktopProjectPortalClass.LoadProjectListClass.ProjectStatusChangedEvent()" /> <label for="inputBasicRemember">暂停</label> </div> </td> <td> <div class="checkbox-custom checkbox-default" style="margin-right: 5px;"> <input type="checkbox" id="筛选项目状态完成" name="筛选项目状态" class="筛选项目状态" value="完成" onclick="DesktopProjectPortalClass.LoadProjectListClass.ProjectStatusChangedEvent()" /> <label for="inputBasicRemember">完成</label> </div> </td> <td> <div class="checkbox-custom checkbox-default" style="margin-right: 5px;"> <input type="checkbox" id="筛选项目状态取消" name="筛选项目状态" class="筛选项目状态" value="取消" onclick="DesktopProjectPortalClass.LoadProjectListClass.ProjectStatusChangedEvent()" /> <label for="inputBasicRemember">取消</label> </div> </td> </tr> </table> </div> </div> <input type="text" class="form-control" id="ProjectSearchKeyword" placeholder="查询项目..." style="text-align: center;"> </div> <div class="ContentDIV Relative" style="padding-top: 5px; margin-top: 5px;" id="ProjectListDIV"></div> <div id="ProjectCompleteRatioChartDIV" style="width: 100%; margin-top: 20px;"></div> </div> </div> </div> </div> </div> </div> <div id="TeamHomePageDIV" class="Hidden TabContentContainer"> <div style="margin: 10px 10px; margin-top: 15px; margin-bottom: 0px;" class="Relative" id="TeammateListContainerDIV"> <div class="CellPageSummaryAreaDIV" style="min-height: 1500px; padding-top: 15px;"> <div style="padding-top: 10px; padding-bottom: 0px; padding-right: 30px;"> <input type="text" class="form-control" id="团队筛选人员姓名" autocomplete="off" placeholder="查询人员姓名" onchange="DesktopTeamPortalClass.Initiate()" style="text-align: center;"> </div> <div class="ContentDIV Relative" style="padding-top: 5px; margin-top: 20px;" id="TeammateListDIV"></div> </div> </div> </div> </div> <script> DomReady(function () { AjaxLoadScript(PageParameterObject.CRMSystemBaseURL + "/script/ServiceFactory/UserCustomizedDataSelector/UserCustomizedDataSelectorClass.js"); //滚动条 ScrollBarClass.Initiate($(".main-container-inner")); InitiateTopTab(); LoadDesktopSummary(); //绑定TotalSummaryTable的AddNew $("#TotalSummaryTable .CellSummaryDIV").foreach(function (item, index) { BlindEvent($(item), { "mouseenter": function () { Element.SetStyle($(".Icon", $(item)), "opacity", "0.6"); Element.AddClass($(".Content", $(item)), "Hidden"); Element.RemoveClass($(".AddNew", $(item)), "Hidden"); }, "mouseleave": function () { Element.SetStyle($(".Icon", $(item)), "opacity", "1"); Element.RemoveClass($(".Content", $(item)), "Hidden"); Element.AddClass($(".AddNew", $(item)), "Hidden"); } }); }); }); //初始化顶部TAB function InitiateTopTab() { var html = ""; html += "<div class='TopTabContainerDIV'><div class='TopTab 公司门户 FocusTab' onclick=\"LoadDesktopSummary()\">业绩</div><div class='TopTab 个人门户' onclick=\"LoadUserHomePage()\">待办</div> <div class='TopTab 项目门户 Hidden' onclick=\"LoadProjectHomePage()\">项目</div> <div class='TopTab 团队门户 Hidden' onclick=\"LoadTeamHomePage()\">团队</div> <div class='ClearFloat'></div></div>"; Element.SetHtml($($(".form-group").parent()), html); if (Array.contains(CheckPermissionMenuCodeResultList, "34be4a11-c822-4aba-bf2b-f3b42574fa79")) { Element.RemoveClass($(".项目门户"), "Hidden"); Element.RemoveClass($(".团队门户"), "Hidden"); } } //加载个人门户 function LoadUserHomePage() { Element.RemoveClass($(".TopTabContainerDIV .FocusTab"), "FocusTab"); Element.AddClass($(".TopTabContainerDIV .个人门户"), "FocusTab"); Element.AddClass($(".TabContentContainer"), "Hidden"); Element.RemoveClass($("#UserHomePageDIV"), "Hidden"); DesktopMyPortalClass.Initiate(); if (Array.contains(CheckPermissionMenuCodeResultList, "34be4a11-c822-4aba-bf2b-f3b42574fa79")) { Element.RemoveClass($("#ProjectTaskListContainerDIV"), "Hidden"); ProjectTaskClass.LoadTaskListClass.Initiate('我的待办'); } } //加载项目门户 function LoadProjectHomePage() { Element.RemoveClass($(".TopTabContainerDIV .FocusTab"), "FocusTab"); Element.AddClass($(".TopTabContainerDIV .项目门户"), "FocusTab"); Element.AddClass($(".TabContentContainer"), "Hidden"); Element.RemoveClass($("#ProjectHomePageDIV"), "Hidden"); DesktopProjectPortalClass.Initiate(); //重新计算滚动条 ScrollBarClass.Resize($(".main-container-inner")); } //加载团队门户 function LoadTeamHomePage() { Element.RemoveClass($(".TopTabContainerDIV .FocusTab"), "FocusTab"); Element.AddClass($(".TopTabContainerDIV .团队门户"), "FocusTab"); Element.AddClass($(".TabContentContainer"), "Hidden"); Element.RemoveClass($("#TeamHomePageDIV"), "Hidden"); DesktopTeamPortalClass.Initiate(); //重新计算滚动条 ScrollBarClass.Resize($(".main-container-inner")); } //加载公司门户 function LoadDesktopSummary() { Element.RemoveClass($(".TopTabContainerDIV .FocusTab"), "FocusTab"); Element.AddClass($(".TopTabContainerDIV .公司门户"), "FocusTab"); Element.AddClass($(".TabContentContainer"), "Hidden"); Element.RemoveClass($("#DesktopSummaryDIV"), "Hidden"); 加载统计(); 加载客户量走势(); 加载合同额走势(); 加载业绩排行(); DesktopMyPortalClass.SummaryMyData(); //重新计算滚动条 ScrollBarClass.Resize($(".main-container-inner")); } </script>