377 lines
14 KiB
JavaScript
377 lines
14 KiB
JavaScript
import request from '@/util/index.js'
|
|
const methods = {
|
|
async getData(obj,isServerPartDetail,value) { // 获取远程数据 value判断是不是正常进来 是的话俩接口不调
|
|
console.log('obj',obj)
|
|
console.log('isServerPartDetail',isServerPartDetail)
|
|
console.log('getData',value)
|
|
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 ,
|
|
provinceCode:obj.ProvinceCode,
|
|
Serverpart_ID: obj.GroupType != 1020 ? obj.ServerpartIds : '',
|
|
SPRegionType_ID: obj.GroupType == 1020 ? obj.ServerpartIds : '',
|
|
// Revenue_Include: 1
|
|
}
|
|
this.provinceCode = obj.ProvinceCode
|
|
console.log('requestParamas',requestParamas)
|
|
// 营收数据
|
|
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
|
|
|
|
// 业态关系
|
|
console.log('开始请求接口',new Date().getTime())
|
|
const tradeData = await request.$webGet('CommercialApi/BaseInfo/GetBusinessTradeList', requestParamas)
|
|
if (tradeData.Result_Code != 100) return
|
|
|
|
|
|
// 计划营收金额
|
|
let budgetAmount = {
|
|
Result_Data:{
|
|
List:[]
|
|
}
|
|
}
|
|
if (!value){
|
|
budgetAmount = await request.$webGet('CommercialApi/Revenue/GetBudgetExpenseList', requestParamas)
|
|
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
|
|
|
|
// 片区车流量
|
|
let bayonetCount = {
|
|
Result_Data:{
|
|
List:[]
|
|
}
|
|
}
|
|
if (!value){
|
|
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) {
|
|
// <TotalModel>
|
|
/*
|
|
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
|
|
}
|
|
return [list, totalShow, busniessTypePie, busniessTradePie,busniessAreaPie,bayonetPie]
|
|
}
|
|
}
|
|
|
|
export default methods ;
|
|
|