import request from '@/util/index.js' const methods = { async getData(obj,isServerPartDetail) { // 获取远程数据 let _this = this /* ts 数据类型声明 type serverpartRegion = { serverpartname:string, cashpay: string } tyepy reginListModel = { name:string, cashpay:number, child: serverpartRegion[] } */ // let regionList = [] // 营收上传列表 reginListModel[] this.groupType = obj.GroupType const requestParamas = { Statistics_Date: obj.time , Statistics_Month: obj.month , Province_Code: obj.ProvinceCode , pushProvinceCode: obj.ProvinceCode , Serverpart_ID: obj.GroupType != 1020 ? obj.ServerpartIds : '', SPRegionType_ID: obj.GroupType == 1020 ? obj.ServerpartIds : '', // Revenue_Include: 1 } const requestParamasBudget = { Statistics_Date: obj.time , Statistics_Month: obj.month , Province_Code: obj.ProvinceCode , pushProvinceCode: obj.ProvinceCode , Serverpart_ID: obj.ServerpartIds ? obj.ServerpartIds : '' } this.provinceCode = obj.ProvinceCode // 营收数据 const data = await request.$webGet('CommercialApi/Revenue/GetRevenuePushList', requestParamas) if (data.Result_Code != 100) return // 在营门店数量统计 const busniessCounts = await request.$webGet('CommercialApi/BaseInfo/GetShopCountList', requestParamas) if (busniessCounts.Result_Code != 100) return // 业态关系 const tradeData = await request.$webGet('CommercialApi/BaseInfo/GetBusinessTradeList', requestParamas) if (tradeData.Result_Code != 100) return // 计划营收金额 const budgetAmount = await request.$webGet('CommercialApi/Revenue/GetBudgetExpenseList', requestParamasBudget) if (budgetAmount.Result_Code != 100) return // 移动支付分账数据 const mobileShare = await request.$webGet('CommercialApi/Revenue/GetMobileShare', requestParamas) if (mobileShare.Result_Code != 100) return // 万佳商城配送数据 const mallDeliver = await request.$webGet('CommercialApi/Revenue/GetMallDeliver', requestParamas) if (mallDeliver.Result_Code != 100) return // 片区车流量 const bayonetCount = await request.$webGet('CommercialApi/Revenue/GetSPBayonetList', requestParamas) if (bayonetCount.Result_Code != 100) return if (isServerPartDetail) { // 是服务区营收推送页面 return _this.getSeverpartReginList(data.Result_Data.List, busniessCounts.Result_Data.List, tradeData.Result_Data.List, budgetAmount.Result_Data.List) } return _this.getReginList(data.Result_Data.List, busniessCounts.Result_Data.List, tradeData.Result_Data.List, budgetAmount.Result_Data.List, bayonetCount.Result_Data.List, mobileShare.Result_Data, mallDeliver.Result_Data) // [reginList, totalData, busniessTypePie, busniessTradePie] }, getTotalShowData(newData, oldData,index) { // /* type TotalModel = { ticketCount: number // 客单数量 , totalCount: number// 总数量 , totalOffAmount: number// 优惠金额 , mobilePayment: number// 移动支付金额 , cashPay: number// 实收金额 , different_Price_Less: number// 短款金额 , different_Price_More: number// 长款金额 , } */ if (index>0) { oldData.ticketCount += newData.TicketCount oldData.totalCount += newData.TotalCount oldData.totalOffAmount += newData.TotalOffAmount oldData.mobilePayment += newData.MobilePayment oldData.cashPay += newData.CashPay oldData.diffLessPrice += newData.Different_Price_Less oldData.diffMorePrice += newData.Different_Price_More if(newData.BusinessType==1000){ // 商超 oldData.scCount = oldData.scCount ? oldData.scCount + 1 : 1 oldData.scCashPay = oldData.scCashPay ? oldData.scCashPay + newData.CashPay : newData.CashPay } if(newData.BusinessType==3000){ // 餐饮 oldData.cyCount = oldData.cyCount ? oldData.cyCount + 1 : 1 oldData.cyCashPay = oldData.cyCashPay ? oldData.cyCashPay + newData.CashPay : newData.CashPay } } else { oldData.ticketCount = newData.TicketCount oldData.totalCount = newData.TotalCount oldData.totalOffAmount = newData.TotalOffAmount oldData.mobilePayment = newData.MobilePayment oldData.cashPay = newData.CashPay oldData.diffLessPrice = newData.Different_Price_Less oldData.diffMorePrice = newData.Different_Price_More if(newData.BusinessType==1000){ // 商超 oldData.scCount = 1 oldData.scCashPay = newData.CashPay } if(newData.BusinessType==3000){ // 餐饮 oldData.cyCount = 1 oldData.cyCashPay = newData.CashPay } } return {...oldData} }, getBusniessPie(typeName, item, list) { // 经营模式数据 const oldData = list.find(m => m.name === item[typeName]) if (oldData) { oldData.data = Number((oldData.data+ item.CashPay).toFixed(2)) oldData.value = Number((oldData.value+ item.CashPay).toFixed(2)) } else { list.push({ name: item[typeName], data: item.CashPay, value: item.CashPay, }) } return [...list] }, getBayonetPie(typeName, item, list) { // 车流量数据 const regionData = list.find(n => n.name === item["SPRegionType_Name"]) if (regionData) { const oldData = regionData.spList.find(m => m.name === item[typeName]) if (oldData) { oldData.Vehicle_Count = Number((oldData.Vehicle_Count + item.Vehicle_Count).toFixed(2)) oldData.SectionFlow_Count = Number((oldData.SectionFlow_Count + item.SectionFlow_Count).toFixed(2)) oldData.MinVehicle_Count = Number((oldData.MinVehicle_Count + item.MinVehicle_Count).toFixed(2)) oldData.MediumVehicle_Count = Number((oldData.MediumVehicle_Count + item.MediumVehicle_Count).toFixed(2)) oldData.LargeVehicle_Count = Number((oldData.LargeVehicle_Count + item.LargeVehicle_Count).toFixed(2)) const oldRegion = oldData.regionList.find(o => o.name === item["Serverpart_Region"]) if (oldRegion) { oldRegion.Vehicle_Count = Number((oldRegion.Vehicle_Count + item.Vehicle_Count).toFixed(2)) oldRegion.SectionFlow_Count = Number((oldRegion.SectionFlow_Count + item.SectionFlow_Count).toFixed(2)) oldRegion.MinVehicle_Count = Number((oldRegion.MinVehicle_Count + item.MinVehicle_Count).toFixed(2)) oldRegion.MediumVehicle_Count = Number((oldRegion.MediumVehicle_Count + item.MediumVehicle_Count).toFixed(2)) oldRegion.LargeVehicle_Count = Number((oldRegion.LargeVehicle_Count + item.LargeVehicle_Count).toFixed(2)) } else{ oldData.regionList.push({ name: item["Serverpart_Region"], Vehicle_Count: item.Vehicle_Count, SectionFlow_Count: item.SectionFlow_Count, MinVehicle_Count: item.MinVehicle_Count, MediumVehicle_Count: item.MediumVehicle_Count, LargeVehicle_Count: item.LargeVehicle_Count, }) } } else { regionData.spList.push({ name: item[typeName], Vehicle_Count: item.Vehicle_Count, SectionFlow_Count: item.SectionFlow_Count, MinVehicle_Count: item.MinVehicle_Count, MediumVehicle_Count: item.MediumVehicle_Count, LargeVehicle_Count: item.LargeVehicle_Count, regionList: [{ name: item["Serverpart_Region"], Vehicle_Count: item.Vehicle_Count, SectionFlow_Count: item.SectionFlow_Count, MinVehicle_Count: item.MinVehicle_Count, MediumVehicle_Count: item.MediumVehicle_Count, LargeVehicle_Count: item.LargeVehicle_Count, }] }) } } else { list.push({ name: item["SPRegionType_Name"], index: item["SPRegionType_Index"], spList: [{ name: item[typeName], Vehicle_Count: item.Vehicle_Count, SectionFlow_Count: item.SectionFlow_Count, MinVehicle_Count: item.MinVehicle_Count, MediumVehicle_Count: item.MediumVehicle_Count, LargeVehicle_Count: item.LargeVehicle_Count, regionList: [{ name: item["Serverpart_Region"], Vehicle_Count: item.Vehicle_Count, SectionFlow_Count: item.SectionFlow_Count, MinVehicle_Count: item.MinVehicle_Count, MediumVehicle_Count: item.MediumVehicle_Count, LargeVehicle_Count: item.LargeVehicle_Count, }], }] }) } return [...list] }, getSeverpartReginList(data, shopCountList,tradeList,budgetAmount){ let _this = this let totalShow = {} // 总营收数据统计 let list = [] // 上传营收列表数据 let busniessTypePie = [] // 经营模式饼图统计数据 let busniessTradePie = [] // 经营业态饼图统计数据 let busniessTradeFathPie = [] // 区域经营饼图统计数据 data.map(async (n, index) => { n.show = false totalShow = _this.getTotalShowData(n, totalShow,index); // 总营收数据统计 // 寻找门店父业态 let trade = tradeList.find(t=>t.BUSINESSTRADE_NAME==n.BusinessTrade_Name) if(trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他')==-1 ) { n.tradename = trade.BUSINESSTRADE_PNAME }else{ n.tradename = '其他' } busniessTypePie = _this.getBusniessPie('Business_TypeName', n, busniessTypePie) busniessTradePie = _this.getBusniessPie('BusinessTrade_Name', n, busniessTradePie) busniessTradeFathPie = _this.getBusniessPie('tradename', n, busniessTradeFathPie) }) totalShow.serverpartname = data[0].Serverpart_Name totalShow.uploadState = data.length+'/'+ (shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT: 0) totalShow.uploadCount = data.filter(n=>n.Revenue_Upload>0).length totalShow.totalUploadCount = shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT: 0 totalShow.budgetAmount = 0 if(budgetAmount.length){ totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT } return [ totalShow, busniessTypePie, busniessTradePie,busniessTradeFathPie ] }, getReginList(data, shopCountList,tradeList,budgetAmount,bayonetCount, mobileShare, mallDeliver) { let _this = this let totalShow = {} // 总营收数据统计 let list = [] // 上传营收列表数据 let busniessTypePie = [] // 经营模式饼图统计数据 let busniessTradePie = [] // 经营业态饼图统计数据 let busniessAreaPie = [] // 区域经营饼图统计数据 let bayonetPie = [] // 区域车流饼图统计数据 let totalUploadCount = 0 data.map(async (n, index) => { n.show = false // 寻找门店父业态 let trade = tradeList.find(t=>t.BUSINESSTRADE_NAME==n.BusinessTrade_Name) if(trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他')==-1 ) { n.tradename = trade.BUSINESSTRADE_PNAME }else{ n.tradename = _this.provinceCode==340000? '其他' : (n.BusinessTrade_Name || '其他') } // 上传营收情况 let regin = list.find(m => m.name === n.SPRegionType_Name) let [reginShopCount, serverpartShopCount] = [0, 0] shopCountList.forEach(shop => { if (shop.SPREGIONTYPE_NAME == n.SPRegionType_Name) { reginShopCount += shop.SHOP_BUSINESSCOUNT } if (shop.SERVERPART_ID == n.Serverpart_ID) { serverpartShopCount = shop.SHOP_BUSINESSCOUNT } }) if (!regin) { totalUploadCount += reginShopCount list.push({ name: n.SPRegionType_Name, // 区域名称 cashpay: n.CashPay, uploadcount: n.Revenue_Upload>0 ? 1: 0, // 区域上传数量 totalcount: reginShopCount, child: [{ serverpart_Id: n.Serverpart_ID, serverpart_Name: n.Serverpart_Name, cashpay: n.CashPay, uploadcount: n.Revenue_Upload>0 ? 1: 0, totalcount: serverpartShopCount }] }) } else { regin.cashpay += n.CashPay regin.uploadcount += n.Revenue_Upload>0 ? 1: 0 let serverpart = regin.child.find(m => m.serverpart_Name === n.Serverpart_Name) if (serverpart) { serverpart.cashpay += n.CashPay serverpart.uploadcount += n.Revenue_Upload>0 ? 1: 0 } else { regin.child.push({ serverpart_Id: n.Serverpart_ID, serverpart_Name: n.Serverpart_Name, cashpay: n.CashPay, uploadcount: n.Revenue_Upload>0 ? 1: 0, totalcount: serverpartShopCount }) } regin.child.sort((a, b) => b.cashpay - a.cashpay) } totalShow = _this.getTotalShowData(n, totalShow,index); // 总营收数据统计 busniessTypePie = _this.getBusniessPie('Business_TypeName', n, busniessTypePie) busniessTradePie = _this.getBusniessPie('tradename', n, busniessTradePie) if (this.groupType == 1000){ busniessAreaPie = _this.getBusniessPie('SPRegionType_Name', n, busniessAreaPie) } }) list.sort((a, b) => b.cashpay - a.cashpay) if (this.groupType == 1000 && _this.provinceCode == 340000) { // 获取移动支付分账数据 if (mobileShare) { totalShow.shareShopCount = mobileShare.ShareShop_Count totalShow.royaltyPrice = mobileShare.Royalty_Price totalShow.subRoyaltyPrice = mobileShare.SubRoyalty_Price totalShow.ticketFee = mobileShare.Ticket_Fee } // 获取移动支付分账数据 if (mallDeliver) { totalShow.deliverBillCount = mallDeliver.DeliverBill_Count totalShow.deliverPrice = mallDeliver.Deliver_Price totalShow.deliverRate = mallDeliver.Deliver_Rate } // 片区车流量数据 bayonetCount.map(async (n, index) => { bayonetPie = _this.getBayonetPie('Serverpart_Name', n, bayonetPie) }) } totalShow.uploadState = data.filter(n=>n.Revenue_Upload>0).length+'/'+totalUploadCount totalShow.budgetAmount = 0 if(_this.provinceCode==620000){ const ele = list.find(n=>n.name=="通美公司") totalShow.tmCrashPay = ele ? ele.cashpay :'0.00' } if(budgetAmount.length){ totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT } console.log('list',list) return [list, totalShow, busniessTypePie, busniessTradePie,busniessAreaPie,bayonetPie] } } export default methods ;