dashboard.js 30.7 KB
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["pages/dashboard/dashboard"],{"0ce2":function(t,e,a){},"79e1":function(t,e,a){"use strict";(function(t){var n=a("47a9"),r=a("3b2d");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(a("7eb4")),i=n(a("34cf")),s=n(a("ee10")),u=n(a("af34")),l=n(a("7ca3"));n(a("00c7"));function c(t){if("function"!==typeof WeakMap)return null;var e=new WeakMap,a=new WeakMap;return(c=function(t){return t?a:e})(t)}function m(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!==r(t)&&"function"!==typeof t)return{default:t};var a=c(e);if(a&&a.has(t))return a.get(t);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&Object.prototype.hasOwnProperty.call(t,i)){var s=o?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(n,i,s):n[i]=t[i]}return n.default=t,a&&a.set(t,n),n}function d(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function f(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?d(Object(a),!0).forEach((function(e){(0,l.default)(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):d(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}var h={data:function(){return{loading:!1,screenshotLoading:!1,showScreenshotBtn:!0,selectedMonth:"",trendType:"day",coachRankType:"billing",pageScrollTop:0,showMemberDetailModal:!1,detailModalType:"",kpiData:{},memberStatistics:{totalMembers:0,newMembers:0,newMembersLastMonth:0,active_0_3:0,active_4_59:0,activeMembers:0,activeRate:0,activeRate30:0,totalRemainingAmount:0,avgRemainingAmount:0,topRemainingMemberId:"",topRemainingMemberName:"",topRemainingAmount:0,topBillingMemberId:"",topBillingMemberName:"",topBillingAmount:0,topConsumeMemberId:"",topConsumeMemberName:"",topConsumeAmount:0,totalSleepMembers:0,sleep_60_89:0,sleep_90_179:0,sleep_180_359:0,sleep_360_plus:0,beautyMembers:0,medicalMembers:0,techMembers:0,educationMembers:0},memberTypeDistribution:[],customerVisitFrequencyData:[],trendData:[],storeRanking:[],coachRankings:{billing:[],consume:[],refund:[]},goldTriangleRankings:[],consumeItemTop10:[],billingItemTop10:[],tkStatisticsData:null,memberTypeChartData:{},memberTypeChartOpts:{color:["#F56C6C","#67C23A","#409EFF","#E6A23C"],padding:[15,15,0,15],dataLabel:!1,legend:{show:!1},extra:{pie:{activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,border:!0,borderWidth:3,borderColor:"#FFFFFF",ringWidth:30},tooltip:{showBox:!0,showArrow:!0,format:function(t){return t.name+": "+(t.data||0)+"人"}}}},memberCategoryChartData:{},memberCategoryChartOpts:{color:["#409EFF"],padding:[0,0,0,0],dataLabel:!1,legend:{show:!1},extra:{radar:{gridType:"radar",gridCount:4,opacity:.2,labelOffset:0,gridColor:"rgba(64, 158, 255, 0.2)",gridBorderColor:"rgba(64, 158, 255, 0.3)"},tooltip:{showBox:!0,showArrow:!0,format:function(t){return t.name+": "+(t.data||0)+"人"}}}},trendChartData:{},trendChartOpts:{color:["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],padding:[15,10,0,15],enableScroll:!0,dataLabel:!1,dataPointShape:!0,legend:{},xAxis:{disableGrid:!0,scrollShow:!0,itemCount:4},yAxis:{gridType:"dash",dashLength:2,format:function(t){return t>=1e4?(t/1e4).toFixed(1)+"万":t.toString()}},extra:{line:{type:"straight",width:2,activeType:"hollow"},tooltip:{showBox:!0,showArrow:!0,showCategory:!0,format:function(t,e){var a=t.data>=1e4?(t.data/1e4).toFixed(1)+"万":t.data.toString();return e+"\n"+t.name+": "+a}}}},visitFrequencyChartData:{},visitFrequencyChartOpts:{color:["#409EFF"],padding:[20,10,0,10],dataLabel:!0,legend:{show:!1},xAxis:{disableGrid:!1,itemCount:8},yAxis:{gridType:"dash",dashLength:2,format:function(t){return t>=1e4?(t/1e4).toFixed(1)+"万":t.toString()}},extra:{column:{type:"group",width:20,activeBgColor:"#000000",activeBgOpacity:.08},tooltip:{showBox:!0,showArrow:!0,showCategory:!0,format:function(t,e){return e+"\n"+t.name+": "+(t.data||0)+"人"}}}},funnelChartData:{},funnelChartOpts:{color:["#409EFF","#67C23A","#E6A23C","#F56C6C"],padding:[15,15,0,15],dataLabel:!0,extra:{funnel:{activeOpacity:.3,activeWidth:10,border:!0,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,labelAlign:"right"},tooltip:{showBox:!0,showArrow:!0,format:function(t){return t.name+": "+(t.data||0)}}}}}},computed:{selectedMonthText:function(){if(!this.selectedMonth)return"请选择月份";var t=new Date(this.selectedMonth);return"".concat(t.getFullYear(),"年").concat(String(t.getMonth()+1).padStart(2,"0"),"月")},kpiList:function(){var t=this.kpiData||{},e=this.tkStatisticsData&&this.tkStatisticsData.TkCount?this.tkStatisticsData.TkCount:0;return[{tooltip:"本月现金业绩,不包含退款业绩",key:"billing",label:"开单金额",value:this.formatMoney(t.TotalBillingAmount),raw:t.TotalBillingAmount||0,type:"green",isMoney:!0},{tooltip:"实际退卡金额",key:"refund",label:"退卡",value:this.formatMoney(t.TotalRefundAmount),raw:t.TotalRefundAmount||0,type:"red",isMoney:!0},{tooltip:"",key:"tk",label:"人头数",value:e,raw:e,type:"light-blue",isPercent:!1,unit:"人头"},{tooltip:"",key:"visit",label:"人次数",value:0,raw:0,type:"purple",isPercent:!1,unit:"人次"},{tooltip:"",key:"consume",label:"消耗金额",value:this.formatMoney(t.TotalConsumeAmount),raw:t.TotalConsumeAmount||0,type:"light-blue",isMoney:!0},{tooltip:"",key:"manual",label:"手工费",value:this.formatMoney(0),raw:0,type:"orange",isMoney:!0},{tooltip:"",key:"item",label:"项目数",value:0,raw:0,type:"pink",isPercent:!1}]},kpiListTop:function(){return this.kpiList.slice(0,4)},kpiListBottom:function(){return this.kpiList.slice(4,7)},coachRanking:function(){var t=this.coachRankings[this.coachRankType]||[],e=t.length>0?Math.max.apply(Math,(0,u.default)(t.map((function(t){return t.Amount||1}))).concat([1])):100;return t.map((function(t){return f(f({},t),{},{Percent:Math.min(100,Math.round(t.Amount/e*100))})})).slice(0,10)},goldTriangleRankingTop10:function(){return this.goldTriangleRankings&&0!==this.goldTriangleRankings.length?(0,u.default)(this.goldTriangleRankings).sort((function(t,e){return(e.F_TotalPerformance||e.TotalPerformance||0)-(t.F_TotalPerformance||t.TotalPerformance||0)})).slice(0,10).map((function(t){return{GoldTriangleName:t.F_GoldTriangleName||t.GoldTriangleName||"未知",TotalPerformance:t.F_TotalPerformance||t.TotalPerformance||0}})):[]},detailModalTitle:function(){return{total:"总会员数",active:"活跃会员",remaining:"剩余权益",sleep:"沉睡会员"}[this.detailModalType]||"会员"},detailModalData:function(){var t=this.memberStatistics,e={total:[{label:"总会员数",value:this.formatNumber(t.totalMembers)},{label:"本月新增",value:this.formatNumber(t.newMembers)}].concat((0,u.default)(t.newMembersLastMonth>0?[{label:"上月新增",value:this.formatNumber(t.newMembersLastMonth)}]:[])),active:[{label:"活跃会员总数",value:this.formatNumber(t.activeMembers)},{label:"活跃(≤3天)",value:this.formatNumber(t.active_0_3)},{label:"常到店(4-59天)",value:this.formatNumber(t.active_4_59)},{label:"60天活跃率",value:t.activeRate+"%"},{label:"30天活跃率",value:t.activeRate30+"%"}],remaining:[{label:"总剩余权益",value:"¥"+this.formatMoney(t.totalRemainingAmount)},{label:"人均剩余权益",value:this.formatMoney(t.avgRemainingAmount)+"元"}].concat((0,u.default)(t.topRemainingAmount>0?[{label:"最高剩余权益",value:(t.topRemainingMemberName||"无")+" ¥"+this.formatMoney(t.topRemainingAmount)}]:[]),(0,u.default)(t.topBillingAmount>0?[{label:"本月开单最高",value:(t.topBillingMemberName||"无")+" ¥"+this.formatMoney(t.topBillingAmount)}]:[]),(0,u.default)(t.topConsumeAmount>0?[{label:"本月消耗最高",value:(t.topConsumeMemberName||"无")+" ¥"+this.formatMoney(t.topConsumeAmount)}]:[])),sleep:[{label:"沉睡会员总数",value:this.formatNumber(t.totalSleepMembers)},{label:"60-89天",value:this.formatNumber(t.sleep_60_89)},{label:"90-179天",value:this.formatNumber(t.sleep_90_179)},{label:"180-359天",value:this.formatNumber(t.sleep_180_359)},{label:"360天+",value:this.formatNumber(t.sleep_360_plus)}]};return e[this.detailModalType]||[]}},onLoad:function(){var t=new Date;this.selectedMonth="".concat(t.getFullYear(),"-").concat(String(t.getMonth()+1).padStart(2,"0")),this.search()},mounted:function(){this.init()},onPullDownRefresh:function(){this.search().finally((function(){t.stopPullDownRefresh()}))},onPageScroll:function(t){this.pageScrollTop=t.scrollTop||0},methods:{init:function(){var t=new Date;this.selectedMonth="".concat(t.getFullYear(),"-").concat(String(t.getMonth()+1).padStart(2,"0")),this.search()},onMonthChange:function(t){this.selectedMonth=t.detail.value,this.search()},switchTrendType:function(t){this.trendType=t,this.search()},switchCoachRankType:function(t){this.coachRankType=t},search:function(){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r,i,s,u,l,c;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,e.loading=!0,n=e.selectedMonth.replace(/-/,""),r=parseInt(e.selectedMonth.substring(0,4)),i=parseInt(e.selectedMonth.substring(5,7)),s=new Date(r,i-1,1),u=new Date(r,i,0,23,59,59),l=e.formatDateTime(s),c=e.formatDateTime(u),a.next=11,Promise.all([e.loadKPIs({startTime:l,endTime:c}),e.loadTrends({statisticsMonth:n,trendType:e.trendType}),e.loadTkFunnel({startTime:l,endTime:c}),e.loadRankings({statisticsMonth:n,startTime:l,endTime:c}),e.loadInsights({startTime:l,endTime:c}),e.loadMemberStatistics({statisticsMonth:n})]);case 11:a.next=17;break;case 13:a.prev=13,a.t0=a["catch"](0),console.error("加载数据失败:",a.t0),t.showToast({title:"网络错误,请重试",icon:"none"});case 17:return a.prev=17,e.loading=!1,a.finish(17);case 20:case"end":return a.stop()}}),a,null,[[0,13,17,20]])})))()},loadKPIs:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.API.getBusinessStatistics({startTime:t.startTime,endTime:t.endTime,storeIds:[]});case 3:n=a.sent,200===n.code&&n.data&&(r=n.data,e.kpiData={TotalBillingAmount:r.TotalBillingAmount||0,TotalConsumeAmount:r.TotalConsumeAmount||0,CompletedBillingAmount:(r.TotalBillingAmount||0)-(r.TotalRefundAmount||0),BillingCompletionRate:r.BillingCompletionRate||0,TargetBillingAmount:r.TargetBillingAmount||0,TotalRefundAmount:r.TotalRefundAmount||0}),a.next=10;break;case 7:a.prev=7,a.t0=a["catch"](0),console.error("加载KPI数据失败:",a.t0);case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},loadTrends:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r,i,s,u,l,c,m,d;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,n={},"month"===t.trendType?(r=e.getMonthsAgo(11,t.statisticsMonth),n={startMonth:r,endMonth:t.statisticsMonth,periodType:"month",storeIds:[]}):"day"===t.trendType?(i=e.getMonthDateRange(t.statisticsMonth),n={startMonth:i.startDate,endMonth:i.endDate,periodType:"day",storeIds:[]}):"week"===t.trendType&&(s=e.getMonthDateRange(t.statisticsMonth),u=e.getDaysAgo(27,s.startDate),n={startMonth:u,endMonth:s.endDate,periodType:"week",storeIds:[]}),a.next=5,e.API.getStorePerformanceTrend(n);case 5:l=a.sent,200===l.code&&l.data&&(c=l.data.Data||l.data||[],l.data.Success&&(c=l.data.Data||[]),m=[],Array.isArray(c)&&c.forEach((function(t){t&&t.Data&&Array.isArray(t.Data)&&t.Data.forEach((function(t){t&&t.Month&&m.push({Date:t.Month,BillingAmount:parseFloat(t.TotalPerformance||0),ConsumeAmount:parseFloat(t.ConsumeAmount||0)})}))})),d={},m.forEach((function(t){d[t.Date]||(d[t.Date]={Date:t.Date,BillingAmount:0,ConsumeAmount:0}),d[t.Date].BillingAmount+=t.BillingAmount,d[t.Date].ConsumeAmount+=t.ConsumeAmount})),e.trendData=Object.values(d).sort((function(t,e){return t.Date.localeCompare(e.Date)})),e.$nextTick((function(){e.drawTrendChart()}))),a.next=12;break;case 9:a.prev=9,a.t0=a["catch"](0),console.error("加载趋势数据失败:",a.t0);case 12:case"end":return a.stop()}}),a,null,[[0,9]])})))()},loadTkFunnel:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.API.getTkStatistics({startTime:t.startTime,endTime:t.endTime,storeId:[]});case 3:n=a.sent,200===n.code&&n.data&&(e.tkStatisticsData=n.data,e.$nextTick((function(){e.drawFunnelChart()}))),a.next=10;break;case 7:a.prev=7,a.t0=a["catch"](0),console.error("加载拓客漏斗数据失败:",a.t0);case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},loadRankings:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r,s,u,l,c,m,d,f;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Promise.all([e.API.getStorePerformanceRanking({statisticsMonth:t.statisticsMonth,topCount:10}),e.API.getHealthCoachBillingRanking({startTime:t.startTime,endTime:t.endTime,storeIds:[]}),e.API.getHealthCoachConsumeRanking({startTime:t.startTime,endTime:t.endTime,storeIds:[]}),e.API.getHealthCoachRefundRanking({startTime:t.startTime,endTime:t.endTime,storeIds:[]}),e.API.getGoldTrianglePerformanceRanking({statisticsMonth:t.statisticsMonth,topCount:10})]);case 3:n=a.sent,r=(0,i.default)(n,5),s=r[0],u=r[1],l=r[2],c=r[3],m=r[4],200===s.code&&s.data&&(d=s.data.Data||s.data||[],s.data.Success&&(d=s.data.Data||[]),e.storeRanking=d.map((function(t){return{StoreId:t.StoreId,StoreName:t.StoreName,TotalPerformance:t.TotalPerformance||0}}))),e.coachRankings.billing=e.parseCoachRanking(u,"BillingPerformance"),e.coachRankings.consume=e.parseCoachRanking(l,"ConsumePerformance"),e.coachRankings.refund=e.parseCoachRanking(c,"RefundPerformance"),200===m.code&&m.data&&(f=m.data.Data||m.data||[],m.data.Success&&(f=m.data.Data||[]),e.goldTriangleRankings=f.map((function(t){return{F_GoldTriangleName:t.GoldTriangleName,F_TotalPerformance:t.TotalPerformance||0}}))),a.next=20;break;case 17:a.prev=17,a.t0=a["catch"](0),console.error("加载排行榜数据失败:",a.t0);case 20:case"end":return a.stop()}}),a,null,[[0,17]])})))()},parseCoachRanking:function(t,e){if(200===t.code&&t.data){var a=t.data.Data||t.data||[];return t.data.Success&&(a=t.data.Data||[]),a.map((function(t){return{HealthCoachName:t.HealthCoachName||t.Name||"未知",Amount:t[e]||t.Performance||0}}))}return[]},loadInsights:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r,s,l,c,m,d,f;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Promise.all([e.API.getCustomerVisitFrequency({startTime:t.startTime,endTime:t.endTime,storeIds:[]}),e.API.getItemStatistics({startTime:t.startTime,endTime:t.endTime,storeIds:[]})]);case 3:n=a.sent,r=(0,i.default)(n,2),s=r[0],l=r[1],200===s.code&&s.data&&(c=Array.isArray(s.data)?s.data:s.data.Data||[],e.customerVisitFrequencyData=c.map((function(t){return{VisitCount:t.VisitCount||0,CustomerCount:t.CustomerCount||0}})),e.$nextTick((function(){e.drawVisitFrequencyChart()}))),200===l.code&&l.data&&(m=Array.isArray(l.data)?l.data:l.data.Data||[],d=m.length?Math.max.apply(Math,(0,u.default)(m.map((function(t){return t.ConsumeAmount||0}))).concat([1])):100,e.consumeItemTop10=m.filter((function(t){return(t.ConsumeAmount||0)>0})).sort((function(t,e){return(e.ConsumeAmount||0)-(t.ConsumeAmount||0)})).slice(0,10).map((function(t){return{ItemName:t.ItemName||"未知品项",Amount:t.ConsumeAmount||0,Percent:Math.round((t.ConsumeAmount||0)/d*100)}})),f=m.length?Math.max.apply(Math,(0,u.default)(m.map((function(t){return t.BillingAmount||0}))).concat([1])):100,e.billingItemTop10=m.filter((function(t){return(t.BillingAmount||0)>0})).sort((function(t,e){return(e.BillingAmount||0)-(t.BillingAmount||0)})).slice(0,10).map((function(t){return{ItemName:t.ItemName||"未知品项",Amount:t.BillingAmount||0,Percent:Math.round((t.BillingAmount||0)/f*100)}}))),a.next=14;break;case 11:a.prev=11,a.t0=a["catch"](0),console.error("加载洞察数据失败:",a.t0);case 14:case"end":return a.stop()}}),a,null,[[0,11]])})))()},loadMemberStatistics:function(t){var e=this;return(0,s.default)(o.default.mark((function a(){var n,r,i,s,u,l,c,m,d,f;return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.API.getDashboardData({statisticsMonth:t.statisticsMonth});case 3:n=a.sent,200===n.code&&n.data&&(r=null,n.data.Success&&n.data.Data?r=n.data.Data:n.data&&(r=n.data),r&&r.MemberStatistics&&(i=r.MemberStatistics,s=i.ActiveMembers0_3||0,u=i.ActiveMembers4_59||0,l=i.TotalMembers||0,c=i.ActiveMembers||0,m=s+u,d=l>0?Math.round(m/l*1e4)/100:0,f=l>0?Math.round(c/l*1e4)/100:0,e.memberStatistics={totalMembers:l,newMembers:i.NewMembersThisMonth||0,newMembersLastMonth:i.NewMembersLastMonth||0,active_0_3:s,active_4_59:u,activeMembers:m,activeRate:d,activeRate30:f,totalRemainingAmount:i.TotalRemainingAmount||0,avgRemainingAmount:i.AvgRemainingAmount||0,topRemainingMemberId:i.TopRemainingMemberId||"",topRemainingMemberName:i.TopRemainingMemberName||"",topRemainingAmount:i.TopRemainingAmount||0,topBillingMemberId:i.TopBillingMemberId||"",topBillingMemberName:i.TopBillingMemberName||"",topBillingAmount:i.TopBillingAmount||0,topConsumeMemberId:i.TopConsumeMemberId||"",topConsumeMemberName:i.TopConsumeMemberName||"",topConsumeAmount:i.TopConsumeAmount||0,totalSleepMembers:i.TotalSleepMembers||0,sleep_60_89:i.SleepMembers60_89||0,sleep_90_179:i.SleepMembers90_179||0,sleep_180_359:i.SleepMembers180_359||0,sleep_360_plus:i.SleepMembers360Plus||0,beautyMembers:i.BeautyMembers||0,medicalMembers:i.MedicalMembers||0,techMembers:i.TechMembers||0,educationMembers:i.EducationMembers||0},e.memberTypeDistribution=i.MemberTypeDistribution||[],e.$nextTick((function(){e.drawMemberTypeChart(),e.drawMemberCategoryChart()})))),a.next=10;break;case 7:a.prev=7,a.t0=a["catch"](0),console.error("加载会员统计数据失败:",a.t0);case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},formatTrendDate:function(t){if(!t)return"";if(6===t.length){var e=t.substring(0,4),a=t.substring(4,6);return"".concat(e,"-").concat(a)}return t.length,t},handleKpiClick:function(e){t.showToast({title:e.label,icon:"none"})},handleStoreClick:function(e){t.showToast({title:e.StoreName,icon:"none"})},getKpiIconName:function(t){return{billing:"grid",consume:"star",net:"red-packet",target:"red-packet",tk:"account",refund:"warning",visit:"account",manual:"star",item:"grid"}[t]||"chart"},getKpiIconColor:function(t){return{primary:"#1976d2",success:"#388e3c",warning:"#f57c00",info:"#7b1fa2",error:"#d32f2f"}[t]||"#1976d2"},getKpiColor:function(t){return{primary:"#409EFF",success:"#67C23A",warning:"#E6A23C",info:"#909399",error:"#F56C6C",danger:"#F56C6C"}[t]||"#409EFF"},formatNumber:function(t){return null===t||void 0===t?"0":("string"===typeof t&&(t=parseFloat(t)),isNaN(t)?"0":t>=1e4?(t/1e4).toFixed(2)+"万":t.toLocaleString())},formatMoney:function(t){return null===t||void 0===t?"0.00":("string"===typeof t&&(t=parseFloat(t)),isNaN(t)?"0.00":t>=1e4?(t/1e4).toFixed(2)+"万":t.toFixed(2))},formatPercent:function(t){return Math.round(100*t)/100},getTkInviteRate:function(){return this.tkStatisticsData&&this.tkStatisticsData.TkCount?(this.tkStatisticsData.YaoyCount||0)/this.tkStatisticsData.TkCount*100:0},getInviteStoreRate:function(){return this.tkStatisticsData&&this.tkStatisticsData.YaoyCount?(this.tkStatisticsData.DdCount||0)/this.tkStatisticsData.YaoyCount*100:0},formatDateTime:function(t){var e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),r=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),i=String(t.getSeconds()).padStart(2,"0");return"".concat(e,"-").concat(a,"-").concat(n," ").concat(r,":").concat(o,":").concat(i)},getMonthDateRange:function(t){var e=parseInt(t.substring(0,4)),a=parseInt(t.substring(4,6)),n=new Date(e,a-1,1),r=new Date(e,a,0,23,59,59);return{startDate:this.formatDateTime(n).split(" ")[0],endDate:this.formatDateTime(r).split(" ")[0]}},getMonthsAgo:function(t,e){var a=parseInt(e.substring(0,4)),n=parseInt(e.substring(4,6)),r=new Date(a,n-1-t,1);return"".concat(r.getFullYear()).concat(String(r.getMonth()+1).padStart(2,"0"))},getDaysAgo:function(t,e){var a=new Date(e);return a.setDate(a.getDate()-t),a.toISOString().split("T")[0]},initChart:function(){},saveScreenshot:function(){var e=this;return(0,s.default)(o.default.mark((function a(){return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return e.showScreenshotBtn=!1,t.showLoading({title:"截图中"}),e.screenshotLoading=!0,a.prev=3,a.next=6,e.saveScreenshotMiniProgram();case 6:a.next=12;break;case 8:a.prev=8,a.t0=a["catch"](3),console.error("截图生成失败:",a.t0),t.showToast({title:"截图生成失败: "+(a.t0.message||"未知错误"),icon:"none",duration:3e3});case 12:return a.prev=12,e.screenshotLoading=!1,t.hideLoading(),e.showScreenshotBtn=!0,a.finish(12);case 17:case"end":return a.stop()}}),a,null,[[3,8,12,17]])})))()},saveScreenshotH5:function(){var e=this;return(0,s.default)(o.default.mark((function n(){var r,i,s,u,l,c,d,f,h;return o.default.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,Promise.resolve().then((function(){return m(a("a0f7"))}));case 3:if(r=n.sent,i=document.querySelector(".warpbox"),i||(i=document.querySelector(".page")),i){n.next=8;break}throw new Error("未找到要截图的内容");case 8:return n.next=10,new Promise((function(t){return setTimeout(t,1e3)}));case 10:return window.scrollTo(0,0),n.next=13,new Promise((function(t){return setTimeout(t,500)}));case 13:return s=i.style.background,i.style.background="#ffffff",n.next=17,new Promise((function(t){return setTimeout(t,200)}));case 17:return u={allowTaint:!0,useCORS:!0,scale:2,backgroundColor:"#ffffff",logging:!1,imageTimeout:3e4,scrollX:0,scrollY:0,onclone:function(t){t.body.style.backgroundColor="#ffffff",t.documentElement.style.backgroundColor="#ffffff"}},n.prev=18,n.next=21,r.default(i,u);case 21:l=n.sent,n.next=31;break;case 24:return n.prev=24,n.t0=n["catch"](18),console.warn("第一次截图失败,尝试备选方案:",n.t0),c={allowTaint:!0,useCORS:!0,scale:2,backgroundColor:"#ffffff",logging:!1,imageTimeout:3e4},n.next=30,r.default(i,c);case 30:l=n.sent;case 31:d=l.toDataURL("image/png",1),f=document.createElement("a"),h="集团驾驶舱_".concat(e.selectedMonth,"_").concat((new Date).toISOString().slice(0,19).replace(/:/g,"-"),".png"),f.download=h,f.href=d,document.body.appendChild(f),f.click(),document.body.removeChild(f),i.style.background=s,t.showToast({title:"截图保存成功",icon:"success",duration:2e3}),n.next=47;break;case 43:throw n.prev=43,n.t1=n["catch"](0),console.error("H5截图失败:",n.t1),n.t1;case 47:case"end":return n.stop()}}),n,null,[[0,43],[18,24]])})))()},saveScreenshotMiniProgram:function(){var e=this;return(0,s.default)(o.default.mark((function a(){return o.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:a.prev=0,t.getSystemInfoSync(),t.canvasToTempFilePath({canvasId:"screenshot-canvas",success:function(e){t.saveImageToPhotosAlbum({filePath:e.tempFilePath,success:function(){t.showToast({title:"截图已保存到相册",icon:"success",duration:2e3})},fail:function(a){console.error("保存到相册失败:",a),t.previewImage({urls:[e.tempFilePath],current:e.tempFilePath})}})},fail:function(t){throw console.error("导出图片失败:",t),new Error("导出图片失败")}},e),a.next=9;break;case 5:throw a.prev=5,a.t0=a["catch"](0),console.error("小程序截图失败:",a.t0),a.t0;case 9:case"end":return a.stop()}}),a,null,[[0,5]])})))()},saveScreenshotFallback:function(){return(0,s.default)(o.default.mark((function e(){return o.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,new Promise((function(t){return setTimeout(t,2e3)}));case 2:t.showToast({title:"截图功能暂不支持当前平台",icon:"none",duration:2e3});case 3:case"end":return e.stop()}}),e)})))()},drawTrendChart:function(){var t=this;if(this.trendData&&0!==this.trendData.length){var e=this.trendData.map((function(e){var a=e.Date;if(!a)return"";if("month"===t.trendType){if(6===a.length)return a.substring(0,4)+"-"+a.substring(4,6)}else if("day"===t.trendType){if(a.length>=10)return a.substring(5,10)}else if("week"===t.trendType&&a.includes("-W"))return a.replace("-W"," 第")+"周";return a})),a=[{name:"成交额",data:this.trendData.map((function(t){return parseFloat(parseFloat(t.BillingAmount||0).toFixed(2))}))},{name:"服务产出",data:this.trendData.map((function(t){return parseFloat(parseFloat(t.ConsumeAmount||0).toFixed(2))}))}];this.trendChartData={categories:e,series:a}}else this.trendChartData={}},drawMemberTypeChart:function(){if(this.memberTypeDistribution&&0!==this.memberTypeDistribution.length){var t=["#F56C6C","#67C23A","#409EFF","#E6A23C"],e=this.memberTypeDistribution.map((function(e,a){return{name:e.MemberType||"未知",value:e.Count||0,color:t[a%t.length]}}));this.memberTypeChartData={series:[{data:e}]}}else this.memberTypeChartData={}},drawMemberCategoryChart:function(){if(this.memberStatistics){var t=this.memberStatistics.beautyMembers||0,e=this.memberStatistics.medicalMembers||0,a=this.memberStatistics.techMembers||0,n=[{name:"会员分布",data:[t,e,a]}];this.memberCategoryChartData={categories:["生美会员","医美会员","科技部会员"],series:n}}else this.memberCategoryChartData={}},drawVisitFrequencyChart:function(){if(this.customerVisitFrequencyData&&0!==this.customerVisitFrequencyData.length){var t=(0,u.default)(this.customerVisitFrequencyData).sort((function(t,e){return(t.VisitCount||0)-(e.VisitCount||0)})).slice(0,8);if(0!==t.length){var e=t.map((function(t){return(t.VisitCount||0)+"次"})),a=[{name:"客户数",data:t.map((function(t){return t.CustomerCount||0}))}];this.visitFrequencyChartData={categories:e,series:a}}else this.visitFrequencyChartData={}}else this.visitFrequencyChartData={}},getMemberTypeColor:function(t){var e=["#F56C6C","#67C23A","#409EFF","#E6A23C"];return e[t%e.length]},drawFunnelChart:function(){if(this.tkStatisticsData){var t=this.tkStatisticsData,e=[{value:t.TkCount||0,name:"获客",color:"#409EFF"},{value:t.YaoyCount||0,name:"邀约",color:"#67C23A"},{value:t.DdCount||0,name:"到店",color:"#E6A23C"},{value:t.XfCount||0,name:"成交",color:"#F56C6C"}];this.funnelChartData={series:[{data:e.map((function(t){return{name:t.name,value:t.value,color:t.color}}))}]}}else this.funnelChartData={}},openMemberDetailModal:function(t){this.detailModalType=t,this.showMemberDetailModal=!0},closeMemberDetailModal:function(){this.showMemberDetailModal=!1,this.detailModalType=""}}};e.default=h}).call(this,a("df3c")["default"])},"8bf5":function(t,e,a){"use strict";a.r(e);var n=a("ecd7"),r=a("af82");for(var o in r)["default"].indexOf(o)<0&&function(t){a.d(e,t,(function(){return r[t]}))}(o);a("d77b");var i=a("828b"),s=Object(i["a"])(r["default"],n["b"],n["c"],!1,null,"14f44c29",null,!1,n["a"],void 0);e["default"]=s.exports},af82:function(t,e,a){"use strict";a.r(e);var n=a("79e1"),r=a.n(n);for(var o in n)["default"].indexOf(o)<0&&function(t){a.d(e,t,(function(){return n[t]}))}(o);e["default"]=r.a},d77b:function(t,e,a){"use strict";var n=a("0ce2"),r=a.n(n);r.a},dcaa:function(t,e,a){"use strict";(function(t,e){var n=a("47a9");a("2fec");n(a("3240"));var r=n(a("8bf5"));t.__webpack_require_UNI_MP_PLUGIN__=a,e(r.default)}).call(this,a("3223")["default"],a("df3c")["createPage"])},ecd7:function(t,e,a){"use strict";a.d(e,"b",(function(){return r})),a.d(e,"c",(function(){return o})),a.d(e,"a",(function(){return n}));var n={uIcon:function(){return Promise.all([a.e("common/vendor"),a.e("uni_modules/uview-ui/components/u-icon/u-icon")]).then(a.bind(null,"3f69"))},qiunDataCharts:function(){return Promise.all([a.e("common/vendor"),a.e("uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts")]).then(a.bind(null,"55d7"))},uPopup:function(){return Promise.all([a.e("common/vendor"),a.e("uni_modules/uview-ui/components/u-popup/u-popup")]).then(a.bind(null,"e33e"))}},r=function(){var t=this,e=t.$createElement,a=(t._self._c,t.__map(t.kpiListTop.slice(0,2),(function(e,a){var n=t.__get_orig(e),r=t.getKpiIconName(e.key),o=e.isMoney?e.value.toString().replace(/[^\d\.]/g,""):null;return{$orig:n,m0:r,g0:o}}))),n=t.__map(t.kpiListTop.slice(2,4),(function(e,a){var n=t.__get_orig(e),r=t.getKpiIconName(e.key);return{$orig:n,m1:r}})),r=t.__map(t.kpiListBottom,(function(e,a){var n=t.__get_orig(e),r=t.getKpiIconName(e.key),o=e.isMoney?e.value.toString().replace(/[^\d\.]/g,""):null;return{$orig:n,m2:r,g1:o}})),o=t.memberStatistics.totalMembers>0?t.formatNumber(t.memberStatistics.totalMembers):null,i=t.memberStatistics.totalMembers>0?t.formatNumber(t.memberStatistics.activeMembers):null,s=t.memberStatistics.totalMembers>0?t.formatMoney(t.memberStatistics.totalRemainingAmount):null,u=t.memberStatistics.totalMembers>0?t.formatNumber(t.memberStatistics.totalSleepMembers):null,l=t.memberTypeDistribution.length,c=l>0?t.__map(t.memberTypeDistribution,(function(e,a){var n=t.__get_orig(e),r=t.getMemberTypeColor(a),o=t.formatNumber(e.Count||0);return{$orig:n,m7:r,m8:o}})):null,m=t.memberStatistics.beautyMembers>0||t.memberStatistics.medicalMembers>0||t.memberStatistics.techMembers>0?t.formatNumber(t.memberStatistics.beautyMembers):null,d=t.memberStatistics.beautyMembers>0||t.memberStatistics.medicalMembers>0||t.memberStatistics.techMembers>0?t.formatNumber(t.memberStatistics.medicalMembers):null,f=t.memberStatistics.beautyMembers>0||t.memberStatistics.medicalMembers>0||t.memberStatistics.techMembers>0?t.formatNumber(t.memberStatistics.techMembers):null,h=t.trendData.length,p=t.storeRanking.length,g=p>0?t.__map(t.storeRanking.slice(0,10),(function(e,a){var n=t.__get_orig(e),r=t.formatMoney(e.TotalPerformance);return{$orig:n,m12:r}})):null,b=t.coachRanking.length,v=b>0?t.__map(t.coachRanking.slice(0,10),(function(e,a){var n=t.__get_orig(e),r=e.HealthCoachName?e.HealthCoachName.substring(0,1):null,o=t.formatMoney(e.Amount);return{$orig:n,g6:r,m13:o}})):null,M=t.goldTriangleRankings.length,T=M>0?t.__map(t.goldTriangleRankingTop10,(function(e,a){var n=t.__get_orig(e),r=t.formatMoney(e.TotalPerformance);return{$orig:n,m14:r}})):null,y=t.customerVisitFrequencyData.length,C=t.consumeItemTop10.length,w=C>0?t.__map(t.consumeItemTop10,(function(e,a){var n=t.__get_orig(e),r=t.formatMoney(e.Amount);return{$orig:n,m15:r}})):null,k=t.billingItemTop10.length,D=k>0?t.__map(t.billingItemTop10,(function(e,a){var n=t.__get_orig(e),r=t.formatMoney(e.Amount);return{$orig:n,m16:r}})):null,S=t.tkStatisticsData?t.formatPercent(t.getTkInviteRate()):null,A=t.tkStatisticsData?t.formatPercent(t.getInviteStoreRate()):null;t._isMounted||(t.e0=function(e,a){var n=arguments[arguments.length-1].currentTarget.dataset,r=n.eventParams||n["event-params"];a=r.item;return t.handleStoreClick(a)}),t.$mp.data=Object.assign({},{$root:{l0:a,l1:n,l2:r,m3:o,m4:i,m5:s,m6:u,g2:l,l3:c,m9:m,m10:d,m11:f,g3:h,g4:p,l4:g,g5:b,l5:v,g7:M,l6:T,g8:y,g9:C,l7:w,g10:k,l8:D,m17:S,m18:A}})},o=[]}},[["dcaa","common/runtime","common/vendor"]]]);