|
|
@@ -592,7 +592,7 @@ |
|
|
|
define-back-color="#204179" |
|
|
|
:width="120" |
|
|
|
color="#32C5FF" |
|
|
|
:percentage="activeProjectAnalyse.onlineCountRate" |
|
|
|
:percentage="activeProjectAnalyse.activeProjectRate" |
|
|
|
></el-progress> |
|
|
|
<div style="margin: 10px 0 0 0; color: #fff">活跃项目率</div> |
|
|
|
</div> |
|
|
@@ -752,24 +752,24 @@ |
|
|
|
define-back-color="#204179" |
|
|
|
:width="120" |
|
|
|
color="#32C5FF" |
|
|
|
:percentage="equipmentOnlineAnalyse.onlineCountRate" |
|
|
|
:percentage="fullRecordAnalyse.fullRate" |
|
|
|
></el-progress> |
|
|
|
<div style="margin: 10px 0 0 0; color: #fff">录音完整率</div> |
|
|
|
</div> |
|
|
|
<div class="rside-text"> |
|
|
|
<div class="text-line"> |
|
|
|
接待总数:<span style="color: #34dbfc">{{ |
|
|
|
equipmentOnlineAnalyse.allCount || 0 |
|
|
|
fullRecordAnalyse.allCount || 0 |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
<div class="text-line"> |
|
|
|
完整录音:<span>{{ |
|
|
|
equipmentOnlineAnalyse.onlineCount || 0 |
|
|
|
fullRecordAnalyse.fullCount || 0 |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
<div class="text-line"> |
|
|
|
录音完整率:<span |
|
|
|
>{{ equipmentOnlineAnalyse.onlineCountRate || 0 }}%</span |
|
|
|
>{{ fullRecordAnalyse.fullRate || 0 }}%</span |
|
|
|
> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@@ -1243,8 +1243,19 @@ export default { |
|
|
|
SalesExecutionTrendsListIndex: 0, // 对应下标 |
|
|
|
|
|
|
|
// 销讲执行分布 |
|
|
|
SalesExecutionDistributionIndex: |
|
|
|
dialogConstList.SalesExecutionDistributionIndex, // 销讲执行分布列表 |
|
|
|
SalesExecutionDistributionIndexFirst: |
|
|
|
dialogConstList.SalesExecutionDistributionIndexFirst, // 销讲执行分布列表 |
|
|
|
SalesExecutionDistributionIndexSecond: |
|
|
|
dialogConstList.SalesExecutionDistributionIndexSecond, // 销讲执行分布列表 |
|
|
|
SalesExecutionDistributionIndexThird: |
|
|
|
dialogConstList.SalesExecutionDistributionIndexThird, // 销讲执行分布列表 |
|
|
|
|
|
|
|
SalesExecutionDistributionIndex: [ |
|
|
|
...dialogConstList.SalesExecutionDistributionIndexFirst, |
|
|
|
...dialogConstList.SalesExecutionDistributionIndexSecond, |
|
|
|
...dialogConstList.SalesExecutionDistributionIndexThird, |
|
|
|
], // |
|
|
|
|
|
|
|
allSalesExecutionDistri: [], // 销讲执行分布数据 |
|
|
|
|
|
|
|
biWarningMessageIndex: [], // 违禁预警消息列表 |
|
|
@@ -1289,7 +1300,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
mounted() { |
|
|
|
this.initPage(); |
|
|
|
// this.initPage(); |
|
|
|
|
|
|
|
console.log(this.$options.data(), "dsakjdkljalds"); |
|
|
|
}, |
|
|
@@ -1884,6 +1895,12 @@ export default { |
|
|
|
|
|
|
|
// 销讲执行分布 |
|
|
|
biCusAgentRelationDistribute() { |
|
|
|
this.biCusAgentRelationDistributeFirst(); |
|
|
|
this.buCusAgentRelationDistributeSecond(); |
|
|
|
this.biCusAgentRelationDistributeThird(); |
|
|
|
}, |
|
|
|
|
|
|
|
biCusAgentRelationDistributeFirst() { |
|
|
|
// 接口入参 |
|
|
|
const params = { |
|
|
|
dateType: this.dateSelectIndex, |
|
|
@@ -1892,120 +1909,300 @@ export default { |
|
|
|
endDate: this.time[1] || "", |
|
|
|
houseId: this.projectValue, |
|
|
|
}; |
|
|
|
this.$api.http.biCusAgentRelationDistribute(params).then((res) => { |
|
|
|
this.$api.http.biCusAgentRelationDistributeFirst(params).then((res) => { |
|
|
|
if (res.code == 10000) { |
|
|
|
this.allSalesExecutionDistri = res.data; |
|
|
|
this.formatAllSalesExecutionDistri(); // 格式化数据 |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 格式化销讲执行分布 |
|
|
|
formatAllSalesExecutionDistri() { |
|
|
|
this.SalesExecutionDistributionIndex.forEach((list) => { |
|
|
|
if (list.params == "visitReceptionDistribute") { |
|
|
|
let gentle = 0; |
|
|
|
let [arr1, arr2] = [[], []]; |
|
|
|
this.allSalesExecutionDistri.visitReceptionDistribute.forEach( |
|
|
|
(item) => { |
|
|
|
if (item.name != "首次到访") { |
|
|
|
gentle += item.value; |
|
|
|
} else { |
|
|
|
arr1.push(item); |
|
|
|
this.SalesExecutionDistributionIndexFirst.forEach((list) => { |
|
|
|
if (list.params == "visitReceptionDistribute") { |
|
|
|
let gentle = 0; |
|
|
|
let [arr1, arr2] = [[], []]; |
|
|
|
res.data.visitReceptionDistribute.forEach((item) => { |
|
|
|
if (item.name != "首次到访") { |
|
|
|
gentle += item.value; |
|
|
|
} else { |
|
|
|
arr1.push(item); |
|
|
|
} |
|
|
|
arr2.push(item); |
|
|
|
}); |
|
|
|
let series = [ |
|
|
|
{ |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
selectedMode: "single", |
|
|
|
radius: [0, "30%"], |
|
|
|
label: { |
|
|
|
position: "inner", |
|
|
|
fontSize: 14, |
|
|
|
}, |
|
|
|
labelLine: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
data: arr1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
radius: ["45%", "60%"], |
|
|
|
labelLine: { |
|
|
|
length: 30, |
|
|
|
}, |
|
|
|
data: arr2, |
|
|
|
}, |
|
|
|
]; |
|
|
|
if (series[0].data.length > 0) { |
|
|
|
series[0].data.push({ |
|
|
|
name: "复访接待", |
|
|
|
value: gentle, |
|
|
|
}); |
|
|
|
} |
|
|
|
arr2.push(item); |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
legend: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
series: series, |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
let legend = res.data[list.params].map((item) => { |
|
|
|
return item.name; |
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
grid: { |
|
|
|
bottom: "20%", |
|
|
|
top: "5%", |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
legend: legend, |
|
|
|
show: list.legend ? true : false, |
|
|
|
orient: "horizontal", |
|
|
|
type: "scroll", |
|
|
|
bottom: "5%", |
|
|
|
textStyle: { |
|
|
|
color: "#fff", |
|
|
|
}, |
|
|
|
}, |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
name: list.title, |
|
|
|
type: "pie", |
|
|
|
radius: "50%", |
|
|
|
labelLine: { |
|
|
|
length: 5, |
|
|
|
showAbove: true, |
|
|
|
}, |
|
|
|
minAngle: 5, |
|
|
|
avoidLabelOverlap: true, |
|
|
|
data: res.data[list.params], |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: function (colors) { |
|
|
|
var colorList = [ |
|
|
|
"#D0444D", |
|
|
|
"#376FE3", |
|
|
|
"#E1B31F", |
|
|
|
"#8D25E4", |
|
|
|
"#DF7323", |
|
|
|
"#2ED1EE", |
|
|
|
]; |
|
|
|
return colorList[colors.dataIndex % 6]; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
); |
|
|
|
let series = [ |
|
|
|
{ |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
selectedMode: "single", |
|
|
|
radius: [0, "30%"], |
|
|
|
label: { |
|
|
|
position: "inner", |
|
|
|
fontSize: 14, |
|
|
|
}, |
|
|
|
labelLine: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
data: arr1, |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
radius: ["45%", "60%"], |
|
|
|
labelLine: { |
|
|
|
length: 30, |
|
|
|
}, |
|
|
|
data: arr2, |
|
|
|
}, |
|
|
|
]; |
|
|
|
if (series[0].data.length > 0) { |
|
|
|
series[0].data.push({ |
|
|
|
name: "复访接待", |
|
|
|
value: gentle, |
|
|
|
}); |
|
|
|
} |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
legend: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
series: series, |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
let legend = this.allSalesExecutionDistri[list.params].map((item) => { |
|
|
|
return item.name; |
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
grid: { |
|
|
|
bottom: "20%", |
|
|
|
top: "5%", |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
legend: legend, |
|
|
|
show: list.legend ? true : false, |
|
|
|
orient: "horizontal", |
|
|
|
type: "scroll", |
|
|
|
bottom: "5%", |
|
|
|
textStyle: { |
|
|
|
color: "#fff", |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
buCusAgentRelationDistributeSecond() { |
|
|
|
// 接口入参 |
|
|
|
const params = { |
|
|
|
dateType: this.dateSelectIndex, |
|
|
|
orgCode: this.companyValue, |
|
|
|
startDate: this.time[0] || "", |
|
|
|
endDate: this.time[1] || "", |
|
|
|
houseId: this.projectValue, |
|
|
|
}; |
|
|
|
this.$api.http.buCusAgentRelationDistributeSecond(params).then((res) => { |
|
|
|
if (res.code == 10000) { |
|
|
|
this.SalesExecutionDistributionIndexSecond.forEach((list) => { |
|
|
|
if (list.params == "visitReceptionDistribute") { |
|
|
|
let gentle = 0; |
|
|
|
let [arr1, arr2] = [[], []]; |
|
|
|
res.data.visitReceptionDistribute.forEach((item) => { |
|
|
|
if (item.name != "首次到访") { |
|
|
|
gentle += item.value; |
|
|
|
} else { |
|
|
|
arr1.push(item); |
|
|
|
} |
|
|
|
arr2.push(item); |
|
|
|
}); |
|
|
|
let series = [ |
|
|
|
{ |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
selectedMode: "single", |
|
|
|
radius: [0, "30%"], |
|
|
|
label: { |
|
|
|
position: "inner", |
|
|
|
fontSize: 14, |
|
|
|
}, |
|
|
|
labelLine: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
data: arr1, |
|
|
|
}, |
|
|
|
}, |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
name: list.title, |
|
|
|
name: "到访次数分布", |
|
|
|
type: "pie", |
|
|
|
radius: "50%", |
|
|
|
radius: ["45%", "60%"], |
|
|
|
labelLine: { |
|
|
|
length: 5, |
|
|
|
showAbove: true, |
|
|
|
length: 30, |
|
|
|
}, |
|
|
|
minAngle: 5, |
|
|
|
avoidLabelOverlap: true, |
|
|
|
data: this.allSalesExecutionDistri[list.params], |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: function (colors) { |
|
|
|
var colorList = [ |
|
|
|
"#D0444D", |
|
|
|
"#376FE3", |
|
|
|
"#E1B31F", |
|
|
|
"#8D25E4", |
|
|
|
"#DF7323", |
|
|
|
"#2ED1EE", |
|
|
|
]; |
|
|
|
return colorList[colors.dataIndex % 6]; |
|
|
|
data: arr2, |
|
|
|
}, |
|
|
|
]; |
|
|
|
if (series[0].data.length > 0) { |
|
|
|
series[0].data.push({ |
|
|
|
name: "复访接待", |
|
|
|
value: gentle, |
|
|
|
}); |
|
|
|
} |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
legend: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
series: series, |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
let legend = res.data[list.params].map((item) => { |
|
|
|
return item.name; |
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
grid: { |
|
|
|
bottom: "20%", |
|
|
|
top: "5%", |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
legend: legend, |
|
|
|
show: list.legend ? true : false, |
|
|
|
orient: "horizontal", |
|
|
|
type: "scroll", |
|
|
|
bottom: "5%", |
|
|
|
textStyle: { |
|
|
|
color: "#fff", |
|
|
|
}, |
|
|
|
}, |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
name: list.title, |
|
|
|
type: "pie", |
|
|
|
radius: "50%", |
|
|
|
labelLine: { |
|
|
|
length: 5, |
|
|
|
showAbove: true, |
|
|
|
}, |
|
|
|
minAngle: 5, |
|
|
|
avoidLabelOverlap: true, |
|
|
|
data: res.data[list.params], |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: function (colors) { |
|
|
|
var colorList = [ |
|
|
|
"#D0444D", |
|
|
|
"#376FE3", |
|
|
|
"#E1B31F", |
|
|
|
"#8D25E4", |
|
|
|
"#DF7323", |
|
|
|
"#2ED1EE", |
|
|
|
]; |
|
|
|
return colorList[colors.dataIndex % 6]; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
biCusAgentRelationDistributeThird() { |
|
|
|
// 接口入参 |
|
|
|
const params = { |
|
|
|
dateType: this.dateSelectIndex, |
|
|
|
orgCode: this.companyValue, |
|
|
|
startDate: this.time[0] || "", |
|
|
|
endDate: this.time[1] || "", |
|
|
|
houseId: this.projectValue, |
|
|
|
}; |
|
|
|
this.$api.http.biCusAgentRelationDistributeThird(params).then((res) => { |
|
|
|
if (res.code == 10000) { |
|
|
|
this.SalesExecutionDistributionIndexThird.forEach((list) => { |
|
|
|
let legend = res.data[list.params].map((item) => { |
|
|
|
return item.name; |
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
this.creatPie({ |
|
|
|
id: `${list.params}SalesExecutionDistributionIndex`, |
|
|
|
grid: { |
|
|
|
bottom: "20%", |
|
|
|
top: "5%", |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
legend: legend, |
|
|
|
show: list.legend ? true : false, |
|
|
|
orient: "horizontal", |
|
|
|
type: "scroll", |
|
|
|
bottom: "5%", |
|
|
|
textStyle: { |
|
|
|
color: "#fff", |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
name: list.title, |
|
|
|
type: "pie", |
|
|
|
radius: "50%", |
|
|
|
labelLine: { |
|
|
|
length: 5, |
|
|
|
showAbove: true, |
|
|
|
}, |
|
|
|
minAngle: 5, |
|
|
|
avoidLabelOverlap: true, |
|
|
|
data: res.data[list.params], |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: function (colors) { |
|
|
|
var colorList = [ |
|
|
|
"#D0444D", |
|
|
|
"#376FE3", |
|
|
|
"#E1B31F", |
|
|
|
"#8D25E4", |
|
|
|
"#DF7323", |
|
|
|
"#2ED1EE", |
|
|
|
]; |
|
|
|
return colorList[colors.dataIndex % 6]; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
@@ -2467,7 +2664,8 @@ export default { |
|
|
|
|
|
|
|
// 获取对比纬度的数据名称 |
|
|
|
let getNames = |
|
|
|
this.SalesExecutionTrendsList[this.SalesExecutionTrendsListIndex].params; |
|
|
|
this.SalesExecutionTrendsList[this.SalesExecutionTrendsListIndex] |
|
|
|
.params; |
|
|
|
|
|
|
|
// 选中时间的数据 |
|
|
|
res.tendencyData.forEach((item) => { |
|
|
@@ -4043,7 +4241,7 @@ export default { |
|
|
|
} |
|
|
|
.numberoftimes-box { |
|
|
|
margin: 0 0 0 12px; |
|
|
|
width: 126px; |
|
|
|
min-width: 126px; |
|
|
|
height: 146px; |
|
|
|
background: url("/img/bidata/wei.png") no-repeat; |
|
|
|
background-size: 100% 14px; |
|
|
|