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 } 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', requestParamas) if(budgetAmount.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) // [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] }, 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) { let _this = this let totalShow = {} // 总营收数据统计 let list = [] // 上传营收列表数据 let busniessTypePie = [] // 经营模式饼图统计数据 let busniessTradePie = [] // 经营业态饼图统计数据 let busniessAreaPie = [] // 区域经营饼图统计数据 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) 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 } return [list, totalShow, busniessTypePie, busniessTradePie,busniessAreaPie] } } export default methods ;