diff --git a/antis-ncc-admin/src/api/report.js b/antis-ncc-admin/src/api/report.js
new file mode 100644
index 0000000..d05d2c6
--- /dev/null
+++ b/antis-ncc-admin/src/api/report.js
@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+// 获取门店业绩趋势数据
+export function getStorePerformanceTrend(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-store-performance-trend',
+ method: 'post',
+ data
+ })
+}
+
+// 获取门店业绩排行榜
+export function getStorePerformanceRanking(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-store-performance-ranking',
+ method: 'post',
+ data
+ })
+}
+
+// 获取健康师业绩排行榜
+export function getHealthCoachPerformanceRanking(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-health-coach-performance-ranking',
+ method: 'post',
+ data
+ })
+}
+
+// 获取健康师业绩趋势
+export function getHealthCoachPerformanceTrend(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-health-coach-performance-trend',
+ method: 'post',
+ data
+ })
+}
+
+// 获取金三角业绩排行榜
+export function getGoldTrianglePerformanceRanking(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-gold-triangle-performance-ranking',
+ method: 'post',
+ data
+ })
+}
+
+// 获取金三角业绩趋势
+export function getGoldTrianglePerformanceTrend(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-gold-triangle-performance-trend',
+ method: 'post',
+ data
+ })
+}
+
+// 获取综合仪表盘数据
+export function getDashboardData(data) {
+ return request({
+ url: '/api/Extend/LqReport/get-dashboard-data',
+ method: 'post',
+ data
+ })
+}
diff --git a/antis-ncc-admin/src/router/index.js b/antis-ncc-admin/src/router/index.js
index 4deff43..54ff496 100644
--- a/antis-ncc-admin/src/router/index.js
+++ b/antis-ncc-admin/src/router/index.js
@@ -74,6 +74,22 @@ export const constantRoutes = [{
icon: 'icon-ym icon-ym-s-data'
}
}]
+ },
+ {
+ path: '/report',
+ component: Layout,
+ hidden: true,
+ children: [{
+ path: '',
+ component: (resolve) => require(['@/views/report/index'], resolve),
+ name: 'ReportDashboard',
+ meta: {
+ title: 'ReportDashboard',
+ affix: false,
+ zhTitle: '业务报表中心',
+ icon: 'el-icon-data-analysis'
+ }
+ }]
}
]
diff --git a/antis-ncc-admin/src/views/departmentConsumePerformanceStatistics/index.vue b/antis-ncc-admin/src/views/departmentConsumePerformanceStatistics/index.vue
index a16b20f..d42b42d 100644
--- a/antis-ncc-admin/src/views/departmentConsumePerformanceStatistics/index.vue
+++ b/antis-ncc-admin/src/views/departmentConsumePerformanceStatistics/index.vue
@@ -47,7 +47,7 @@
-
+
@@ -60,7 +60,17 @@
{{ formatMoney(scope.row.ConsumePerformance) }}
-
+
+
+
+ {{ formatNumber(scope.row.HeadCount) }}
+
+
+
+
+ {{ formatNumber(scope.row.PersonCount) }}
+
+
{{ formatDateTime(scope.row.CreateTime) }}
@@ -200,6 +210,21 @@ export default {
maximumFractionDigits: 2
})
},
+ formatNumber(value) {
+ if (value === null || value === undefined) return '0'
+ const num = Number(value)
+ if (num === 0) return '0'
+ if (num % 1 === 0) {
+ // 整数
+ return num.toLocaleString('zh-CN')
+ } else {
+ // 小数
+ return num.toLocaleString('zh-CN', {
+ minimumFractionDigits: 1,
+ maximumFractionDigits: 2
+ })
+ }
+ },
formatDateTime(value) {
if (!value) return '-'
return new Date(value).toLocaleString('zh-CN')
diff --git a/antis-ncc-admin/src/views/report/index.vue b/antis-ncc-admin/src/views/report/index.vue
new file mode 100644
index 0000000..9b8ca98
--- /dev/null
+++ b/antis-ncc-admin/src/views/report/index.vue
@@ -0,0 +1,1205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.title }}
+
{{ formatNumber(item.value) }}
+
{{ item.unit }}
+
+
+ {{ Math.abs(item.trend) }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antis-ncc-admin/src/views/report/test.vue b/antis-ncc-admin/src/views/report/test.vue
new file mode 100644
index 0000000..015dcca
--- /dev/null
+++ b/antis-ncc-admin/src/views/report/test.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
+
+ API接口测试
+
+
+
+ 测试仪表盘数据
+
+
+ 测试门店排行榜
+
+
+ 测试健康师排行榜
+
+
+ 测试金三角排行榜
+
+
+
+
+
+
+
+
+ 测试结果
+ 清空结果
+
+
+
+
+
+
+
+
+
+ 页面导航
+
+
+
+
+ 进入报表页面
+
+
+
+ 进入工资统计
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antis-ncc-admin/src/views/salaryStatistics/index.vue b/antis-ncc-admin/src/views/salaryStatistics/index.vue
index 60e5a2c..ff4c952 100644
--- a/antis-ncc-admin/src/views/salaryStatistics/index.vue
+++ b/antis-ncc-admin/src/views/salaryStatistics/index.vue
@@ -57,25 +57,25 @@
-
+
-
+
{{ formatMoney(scope.row.TotalPerformance) }}
-
+
{{ formatMoney(scope.row.BasePerformance) }}
-
+
{{ formatMoney(scope.row.CooperationPerformance) }}
-
+
{{ formatMoney(scope.row.RewardPerformance) }}
@@ -83,17 +83,17 @@
-
+
{{ formatMoney(scope.row.NewCustomerPerformance) }}
-
+
{{ formatPercent(scope.row.NewCustomerConversionRate) }}
-
+
{{ formatPercent(scope.row.NewCustomerPoint) }}
@@ -102,240 +102,242 @@
-
+
{{ formatMoney(scope.row.UpgradePerformance) }}
-
+
{{ formatPercent(scope.row.UpgradePoint) }}
-
-
-
-
- {{ formatMoney(scope.row.Consumption) }}
-
+
+
+
+
+ {{ formatMoney(scope.row.Consumption) }}
+
+
+
-
-
+
+
{{ formatMoney(scope.row.StoreTotalPerformance) }}
-
+
{{ formatMoney(scope.row.TeamPerformance) }}
-
+
- {{ formatPercent(scope.row.Percentage) }}
+ {{ scope.row.Percentage }}%
-
-
-
-
+
+
+
+
{{ formatPercent(scope.row.CommissionPoint) }}
-
+
{{ formatMoney(scope.row.BasePerformanceCommission) }}
-
+
{{ formatMoney(scope.row.CooperationPerformanceCommission) }}
-
+
{{ formatMoney(scope.row.ConsultantCommission) }}
-
+
{{ formatMoney(scope.row.StoreTZoneCommission) }}
-
+
{{ formatMoney(scope.row.TotalCommission) }}
-
+
{{ formatMoney(scope.row.HealthCoachBaseSalary) }}
-
+
{{ formatMoney(scope.row.HandworkFee) }}
-
+
{{ formatMoney(scope.row.OutherHandworkFee) }}
-
+
{{ formatMoney(scope.row.TransportationAllowance) }}
-
+
{{ formatMoney(scope.row.LessRest) }}
-
+
{{ formatMoney(scope.row.FullAttendance) }}
-
+
{{ formatMoney(scope.row.CalculatedGrossSalary) }}
-
+
{{ formatMoney(scope.row.GuaranteedSalary) }}
-
+
{{ formatMoney(scope.row.GuaranteedLeaveDeduction) }}
-
+
{{ formatMoney(scope.row.GuaranteedBaseSalary) }}
-
+
{{ formatMoney(scope.row.GuaranteedSupplement) }}
-
+
{{ formatMoney(scope.row.FinalGrossSalary) }}
-
+
{{ formatMoney(scope.row.MonthlyTrainingSubsidy) }}
-
+
{{ formatMoney(scope.row.MonthlyTransportSubsidy) }}
-
+
{{ formatMoney(scope.row.LastMonthTrainingSubsidy) }}
-
+
{{ formatMoney(scope.row.LastMonthTransportSubsidy) }}
-
+
{{ formatMoney(scope.row.TotalSubsidy) }}
-
+
{{ formatMoney(scope.row.MissingCard) }}
-
+
{{ formatMoney(scope.row.LateArrival) }}
-
+
{{ formatMoney(scope.row.LeaveDeduction) }}
-
+
{{ formatMoney(scope.row.SocialInsuranceDeduction) }}
-
+
{{ formatMoney(scope.row.RewardDeduction) }}
-
+
{{ formatMoney(scope.row.AccommodationDeduction) }}
-
+
{{ formatMoney(scope.row.StudyPeriodDeduction) }}
-
+
{{ formatMoney(scope.row.WorkClothesDeduction) }}
-
+
{{ formatMoney(scope.row.TotalDeduction) }}
-
+
{{ formatMoney(scope.row.Bonus) }}
-
+
{{ formatMoney(scope.row.ReturnPhoneDeposit) }}
-
+
{{ formatMoney(scope.row.ReturnAccommodationDeposit) }}
-
+
{{ formatMoney(scope.row.ActualSalary) }}
-
+
{{ formatMoney(scope.row.PaidAmount) }}
-
+
{{ formatMoney(scope.row.PendingAmount) }}
-
+
{{ formatMoney(scope.row.LastMonthSupplement) }}
-
+
{{ formatMoney(scope.row.MonthlyTotalPayment) }}
@@ -368,7 +370,7 @@ export default {
return {
loading: false,
tableData: [],
- tableHeight: 500,
+ tableHeight: 890,
queryParams: {
statisticsMonth: '',
storeName: '',
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs
index 82b2a57..1f97e27 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs
@@ -24,6 +24,11 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
public string id { get; set; }
///
+ /// 关键字
+ ///
+ public string keyWord { get; set; }
+
+ ///
/// 客户名称
///
public string khmc { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSalaryStatistics/LqSalaryStatisticsListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSalaryStatistics/LqSalaryStatisticsListOutput.cs
index c4ecf22..c5886d3 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSalaryStatistics/LqSalaryStatisticsListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSalaryStatistics/LqSalaryStatisticsListOutput.cs
@@ -85,7 +85,7 @@ namespace NCC.Extend.Entitys.Dto.LqSalaryStatistics
///
/// 项目数
///
- public int ProjectCount { get; set; }
+ public decimal ProjectCount { get; set; }
///
/// 门店总业绩
@@ -100,7 +100,7 @@ namespace NCC.Extend.Entitys.Dto.LqSalaryStatistics
///
/// 占比
///
- public decimal PerformanceRatio { get; set; }
+ public decimal Percentage { get; set; }
///
/// 新客成交率
@@ -125,17 +125,18 @@ namespace NCC.Extend.Entitys.Dto.LqSalaryStatistics
///
/// 到店人头
///
- public int AttendanceDays { get; set; }
+ public decimal CustomerCount { get; set; }
///
/// 在店天数
///
- public int StoreDays { get; set; }
+ public decimal WorkingDays { get; set; }
+
///
/// 请假天数
///
- public int LeaveDays { get; set; }
+ public decimal LeaveDays { get; set; }
///
/// 提点
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqDepartmentConsumePerformanceStatisticsListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqDepartmentConsumePerformanceStatisticsListOutput.cs
index 9294719..b849401 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqDepartmentConsumePerformanceStatisticsListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqDepartmentConsumePerformanceStatisticsListOutput.cs
@@ -55,7 +55,17 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics
///
/// 订单数量
///
- public int OrderCount { get; set; }
+ public decimal OrderCount { get; set; }
+
+ ///
+ /// 人头数(月度去重客户数)
+ ///
+ public decimal HeadCount { get; set; }
+
+ ///
+ /// 人次(日度去重到店数)
+ ///
+ public decimal PersonCount { get; set; }
///
/// 创建时间
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs
index 303ed67..12a67c6 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs
@@ -54,6 +54,13 @@ namespace NCC.Extend.Entitys.lq_hytk_mx
[SugarColumn(ColumnName = "tkje")]
public decimal? Tkje { get; set; }
+
+ ///
+ /// 退卡时间
+ ///
+ [SugarColumn(ColumnName = "tksj")]
+ public DateTime? Tksj { get; set; }
+
///
/// 项目次数
///
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs
index d4ec98a..4877810 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs
@@ -41,6 +41,13 @@ namespace NCC.Extend.Entitys.lq_kd_pxmx
[SugarColumn(ColumnName = "pxjg")]
public decimal Pxjg { get; set; }
+
+ ///
+ /// 业绩时间
+ ///
+ [SugarColumn(ColumnName = "yjsj")]
+ public DateTime? Yjsj { get; set; }
+
///
/// 会员id
///
@@ -53,6 +60,9 @@ namespace NCC.Extend.Entitys.lq_kd_pxmx
[SugarColumn(ColumnName = "F_CreateTIme")]
public DateTime? CreateTIme { get; set; }
+
+
+
///
/// 项目次数
///
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_salary_statistics/LqSalaryStatisticsEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_salary_statistics/LqSalaryStatisticsEntity.cs
index 03a8d8b..08b4960 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_salary_statistics/LqSalaryStatisticsEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_salary_statistics/LqSalaryStatisticsEntity.cs
@@ -141,25 +141,25 @@ namespace NCC.Extend.Entitys.lq_salary_statistics
/// 项目数
///
[SugarColumn(ColumnName = "F_ProjectCount")]
- public int ProjectCount { get; set; }
+ public decimal ProjectCount { get; set; }
///
/// 到店人头
///
[SugarColumn(ColumnName = "F_CustomerCount")]
- public int CustomerCount { get; set; }
+ public decimal CustomerCount { get; set; }
///
/// 在店天数
///
[SugarColumn(ColumnName = "F_WorkingDays")]
- public int WorkingDays { get; set; }
+ public decimal WorkingDays { get; set; }
///
/// 请假天数
///
[SugarColumn(ColumnName = "F_LeaveDays")]
- public int LeaveDays { get; set; }
+ public decimal LeaveDays { get; set; }
///
/// 提点
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_department_consume_performance/LqStatisticsDepartmentConsumePerformanceEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_department_consume_performance/LqStatisticsDepartmentConsumePerformanceEntity.cs
index 5adf366..e34e6d4 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_department_consume_performance/LqStatisticsDepartmentConsumePerformanceEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_department_consume_performance/LqStatisticsDepartmentConsumePerformanceEntity.cs
@@ -100,5 +100,17 @@ namespace NCC.Extend.Entitys.lq_statistics_department_consume_performance
///
[SugarColumn(ColumnName = "F_IsNewStore")]
public string IsNewStore { get; set; }
+
+ ///
+ /// 人头数(月度去重客户数)
+ ///
+ [SugarColumn(ColumnName = "F_HeadCount")]
+ public decimal HeadCount { get; set; }
+
+ ///
+ /// 人次(日度去重到店数)
+ ///
+ [SugarColumn(ColumnName = "F_PersonCount")]
+ public decimal PersonCount { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqReport/ILqReportService.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqReport/ILqReportService.cs
new file mode 100644
index 0000000..df0507c
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqReport/ILqReportService.cs
@@ -0,0 +1,191 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace NCC.Extend.Interfaces.LqReport
+{
+ ///
+ /// 绿纤报表服务接口
+ ///
+ public interface ILqReportService
+ {
+ ///
+ /// 获取门店业绩趋势数据
+ ///
+ /// 查询参数
+ /// 门店业绩趋势数据
+ Task