188 lines
5.6 KiB
Vue
188 lines
5.6 KiB
Vue
<template>
|
|
<view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
regionList: [],
|
|
totalData: {},
|
|
busniessTypePie:[],
|
|
busniessTradePie:[]
|
|
}
|
|
},
|
|
methods: {
|
|
async getData(obj) {
|
|
let _this = this
|
|
/* ts 数据类型声明
|
|
type serverpartRegion = {
|
|
serverpartname:string,
|
|
crashpay: string
|
|
}
|
|
tyepy reginListModel = {
|
|
name:string,
|
|
crashpay:number,
|
|
child: serverpartRegion[]
|
|
}
|
|
*/
|
|
// let regionList = [] // 营收上传列表 reginListModel[]
|
|
const requestParamas = {
|
|
Statistics_Date: obj.date || '2021-12-12',
|
|
pushProvinceCode: obj.provinceid || '340000',
|
|
Serverpart_ID: obj.serverpartid || '',
|
|
SPRegionType_ID: obj.regionid || ''
|
|
// Revenue_Include: 1
|
|
}
|
|
// 营收数据
|
|
const data = await this.$request.$webGet('CommercialApi/Revenue/GetRevenuePushList', requestParamas)
|
|
console.log(data)
|
|
if (data.Result_Code != 100) return
|
|
|
|
// 在营门店数量统计
|
|
const busniessCounts = await this.$request.$webGet('CommercialApi/BaseInfo/GetSPShopCountList', requestParamas)
|
|
if(busniessCounts.Result_Code != 100) return
|
|
|
|
// 在营门店数量统计
|
|
const tradeData = await this.$request.$webPost('CommercialApi/BaseInfo/GetBusinessTradeList', {
|
|
"SearchParameter": JSON.stringify({
|
|
"PROVINCE_CODE": 340000
|
|
}),
|
|
"PageIndex": 1,
|
|
"PageSize": 999,
|
|
"SortStr": ""
|
|
})
|
|
if(tradeData.Result_Code != 100) return
|
|
|
|
const [reginList, totalData, busniessTypePie,busniessTradePie] = _this.getReginList(data.Result_Data.List, busniessCounts.Result_Data.List)
|
|
_this.regionList = reginList // 营收上传列表 reginListModel[]
|
|
_this.totalData = totalData
|
|
_this.busniessTypePie = busniessTypePie
|
|
_this.busniessTradePie = busniessTradePie
|
|
},
|
|
getTotalShowData(newData, oldData) {
|
|
var data = {} // <TotalModel>
|
|
/*
|
|
type TotalModel = {
|
|
ticketCount: number // 客单数量 ,
|
|
totalCount: number// 总数量 ,
|
|
totalOffAmount: number// 优惠金额 ,
|
|
mobilePayment: number// 移动支付金额 ,
|
|
cashPay: number// 实收金额 ,
|
|
different_Price_Less: number// 短款金额 ,
|
|
different_Price_More: number// 长款金额 ,
|
|
}
|
|
*/
|
|
|
|
if (oldData && oldData.ticketCount) {
|
|
data.ticketCount = oldData.ticketCount + newData.TicketCount
|
|
data.totalCount = oldData.totalCount + newData.TotalCount
|
|
data.totalOffAmount = oldData.totalOffAmount + newData.TotalOffAmount
|
|
data.mobilePayment = oldData.mobilePayment + newData.MobilePayment
|
|
data.cashPay = oldData.cashPay + newData.CashPay
|
|
data.diffLessPrice = oldData.diffLessPrice + newData.Different_Price_Less
|
|
data.diffMorePrice = oldData.diffMorePrice + newData.Different_Price_More
|
|
|
|
} else {
|
|
data.ticketCount = newData.TicketCount
|
|
data.totalCount = newData.TotalCount
|
|
data.totalOffAmount = newData.TotalOffAmount
|
|
data.mobilePayment = newData.MobilePayment
|
|
data.cashPay = newData.CashPay
|
|
data.diffLessPrice = newData.Different_Price_Less
|
|
data.diffMorePrice = newData.Different_Price_More
|
|
}
|
|
return data
|
|
},
|
|
getBusniessPie(typeName, item,list){ // 经营模式数据
|
|
const oldData = list.find(m=>m.name === item[typeName])
|
|
if(oldData){
|
|
oldData.data += item.CashPay
|
|
|
|
|
|
}else{
|
|
list.push({
|
|
name: item[typeName],
|
|
data: item.CashPay,
|
|
|
|
})
|
|
}
|
|
|
|
return [...list]
|
|
},
|
|
|
|
getReginList(data,shopCountList) {
|
|
let _this = this
|
|
let totalShow = {} // 总营收数据统计
|
|
let list = [] // 上传营收列表数据
|
|
let busniessTypePie = [] // 经营模式饼图统计数据
|
|
let busniessTradePie = [] // 经营业态饼图统计数据
|
|
data.map(async (n,index) => {
|
|
n.show = false
|
|
totalShow = _this.getTotalShowData(n, totalShow);// 总营收数据统计
|
|
|
|
// 上传营收情况
|
|
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) {
|
|
list.push({
|
|
name: n.SPRegionType_Name, // 区域名称
|
|
crashpay: n.CashPay,
|
|
uploadcount: 1, // 区域上传数量
|
|
totalcount: reginShopCount,
|
|
child: [{
|
|
serverpart_Id: n.Serverpart_ID,
|
|
serverpart_Name: n.Serverpart_Name,
|
|
crashpay: n.CashPay,
|
|
uploadcount: 1,
|
|
totalcount: serverpartShopCount
|
|
}]
|
|
})
|
|
} else {
|
|
regin.crashpay += n.CashPay
|
|
regin.uploadcount += 1
|
|
let serverpart = regin.child.find(m => m.serverpart_Name === n.Serverpart_Name)
|
|
if (serverpart) {
|
|
serverpart.crashpay += n.CashPay
|
|
serverpart.uploadcount += 1
|
|
} else {
|
|
regin.child.push({
|
|
serverpart_Id: n.Serverpart_ID,
|
|
serverpart_Name: n.Serverpart_Name,
|
|
crashpay: n.CashPay,
|
|
uploadcount: 1,
|
|
totalcount: serverpartShopCount
|
|
})
|
|
|
|
}
|
|
regin.child.sort((a,b)=> b.crashpay- a.crashpay)
|
|
}
|
|
list.sort((a,b)=> b.crashpay -a.crashpay)
|
|
busniessTypePie = _this.getBusniessPie('Business_TypeName',n,busniessTypePie)
|
|
busniessTradePie = _this.getBusniessPie('BusinessTrade_Name',n,busniessTradePie)
|
|
})
|
|
|
|
return [list, totalShow,busniessTypePie,busniessTradePie]
|
|
}
|
|
},
|
|
onLoad(option) {
|
|
this.getData(option)
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|