Commit 76f0300e by liuchenxi

update:触达效果

parent 9e44c4bd
......@@ -58,17 +58,26 @@ export const ecmGuideCluesColumnDiagram = params => requests(PREFIX + 'ecmGuideC
export const ecmGuideCluesTable = params => requests(PREFIX + 'ecmGuideCluesTable', params);
export const ecmGuideCluesTaskTable = params => requests(PREFIX + 'ecmGuideCluesTaskTable', params); // 任务完成情况表格
export const ecmGuideCluesTouchEffectTotalTab = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTotalTab', params); // 触达效果-整体转化-表格
export const ecmGuideCluesTouchEffectTabTotalHead = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTabTotalHead', params); // 触达效果-整体转化-表头
export const ecmGuideCluesTouchEffectTab = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTab', params); // 触达效果-其他tab-表格
export const ecmGuideCluesTouchEffectTabHead = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTabHead', params); // 触达效果-其他tab-表头
// 智能营销--后台线索
export const ecmHeadCluesColumnDiagram = params => requests(PREFIX + 'ecmHeadCluesColumnDiagram', params);
export const ecmHeadGuideCluesTable = params => requests(PREFIX + 'ecmHeadGuideCluesTable', params);
export const ecmHeadCluesTaskTab = params => requests(PREFIX + 'ecmHeadCluesTaskTab', params); // 表格
export const ecmHeadCluesTaskTabHead = params => requests(PREFIX + 'ecmHeadCluesTaskTabHead', params); //表头1 计划整体
export const ecmGuideCluesTouchEffectTabTotalHead1 = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTabTotalHead1', params); //表头2 区域合计
// 智能营销--表格的合计和计划整体数据
export const ecmGuideCluesTouchEffectTotalTabHead = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTotalTabHead', params); // 导购线索-触达效果整体计划表头
export const ecmGuideCluesTouchEffectTabHead = params => requests(PREFIX + 'ecmGuideCluesTouchEffectTabHead', params); //导购线索--触达效果其他表格表头
export const ecmGuideCluesTaskTableHead = params => requests(PREFIX + 'ecmGuideCluesTaskTableHead', params); // 触达效果-导购线索-任务完成情况表头
export const ecmHeadCluesTaskTabHead = params => requests(PREFIX + 'ecmHeadCluesTaskTabHead', params); // 总部线索表头
// 智能营销线索页tree
export const getGroupTree = params => requests(PREFIX + 'getGroupTree', params);
// export
export const getTabList = params => requests(PREFIX + 'ecmGuideCluesTableLabel', params);
// 智能营销导出表格
export const otherTableExoport = config.api + PREFIX + 'ecmGuideCluesTouchEffectTabExport'; // // 触达效果-其他tab-表格
export const allConvTableExport = config.api + PREFIX + 'ecmGuideCluesTouchEffectTotalTabExport'; // 触达效果-整体转化-表格
export const taskTableExport = config.api + PREFIX + 'ecmGuideCluesTaskTableExport'; // 触达效果-任务完成情况表格
export const headClueTableExport = config.api + PREFIX + 'ecmHeadCluesTaskTabExport'; // 触达效果-后台线索表格
export const getUseStoredFalg = params => requests(PREFIX + 'get-ecm-store-flag', params);
......
......@@ -31,7 +31,7 @@
</div>
<div>
<p>销售单金额(元)</p>
<p>{{ formatterNum(list.salesAmt, true) }}</p>
<p>{{ parseInt(list.salesAmt || 0).toLocaleString('zh', { minimumFractionDigits: 2 }) }}</p>
</div>
</div>
</div>
......@@ -41,9 +41,9 @@
<div class="name" v-if="scope.row.cardName">
<div class="top">
{{ scope.row.cardName }}
<span class="type">折扣券</span>
<span class="type">{{ scope.row.cardName == 0 ? '抵金券' : scope.row.cardName == 1 ? '折扣券' : scope.row.cardName == 2 ? '兑换券' : '--' }}</span>
</div>
<p>卡券副标题</p>
<p>{{ scope.row.subTitle }}</p>
</div>
</template>
</el-table-column>
......@@ -93,14 +93,10 @@ export default {
},
computed: {
formatterNum() {
return (val, isToFixed) => {
return !val && val != 0 ? '--' : isToFixed ? parseInt(val).toLocaleString('zh', { minimumFractionDigits: 2 }) : parseInt(val).toLocaleString();
};
return val => (!val ? '0' : parseInt(val).toLocaleString());
},
formatterRate() {
return val => {
return !val && val != 0 ? '--' : parseFloat(val).toFixed(2) + '%';
};
return val => (!val ? '0.00%' : parseFloat(val).toFixed(2) + '%');
}
}
};
......@@ -196,7 +192,7 @@ export default {
border: 1px solid #ffa39e;
font-size: 12px;
color: #f5222d;
margin-left: 4px;
margin-left: 6px;
}
}
p {
......
......@@ -97,17 +97,10 @@ export default {
height: 20px;
line-height: 20px;
&:nth-child(1) {
// margin: 0 0 23px 15px;
margin-bottom: 23px;
// margin-left: 15px;
}
&:nth-child(2) {
// margin: 0 0 33px -14px;
margin-bottom: 33px;
// margin-left: -14px;
}
&:nth-child(3) {
// margin: 0 0 0 -44px;
}
}
span {
......
......@@ -23,38 +23,39 @@
<div class="right" :class="[isCluePage ? 'cluePage' : '']" ref="right">
<div v-if="!isCluePage">
<p>计划人次</p>
<p>{{ item.planMbrTimes ? item.planMbrTimes.toLocaleString() : 0 }}</p>
<!-- <p>{{ item.planMbrTimes ? item.planMbrTimes.toLocaleString() : 0 }}</p> -->
<p>{{ formatterNum(item.planMbrTimes) }}</p>
</div>
<div>
<p>{{ isCluePage ? '计划触达人数' : '计划人数' }}</p>
<p>{{ item.planMbrNum ? item.planMbrNum.toLocaleString() : 0 }}</p>
<p>{{ formatterNum(item.planMbrNum) }}</p>
</div>
<div v-if="isCluePage && item.flag" class="taskRate">
<p>
任务完成率<span>(任务总数 {{ item.taskCnt ? item.taskCnt.toLocaleString() : 0 }})</span>
任务完成率<span>(任务总数 {{ formatterNum(item.taskCnt) }})</span>
</p>
<p>{{ item.taskRate ? item.taskRate.toFixed(2) + '%' : '0.00%' }}</p>
<p>{{ formatterRate(item.taskRate) }}</p>
</div>
<div v-if="isCluePage || item.isSales == 1" class="touchMbr">
<p>
触达人数<span>(触达率 {{ item.touchRate ? item.touchRate + '%' : '0.00%' }})</span>
触达人数<span>(触达率 {{ formatterRate(item.touchRate) }})</span>
</p>
<p>{{ item.touchMbrNum ? item.touchMbrNum.toLocaleString() : 0 }}</p>
<p>{{ formatterNum(item.touchMbrNum) }}</p>
</div>
<div v-else class="touchMbr touchMbr2">- -</div>
<div class="convMbr">
<p>
转化人数<span :class="{ active: isReference && item.isSales == 1 && data[0].transformRate < data[1].transformRate }">(转化率 {{ item.transformRate ? item.transformRate + '%' : '0.00%' }})</span>
转化人数<span :class="{ active: isReference && item.isSales == 1 && data[0].transformRate < data[1].transformRate }">(转化率 {{ formatterRate(item.transformRate) }})</span>
</p>
<p>{{ item.convMbrNum ? item.convMbrNum.toLocaleString() : 0 }}</p>
<p>{{ formatterNum(item.convMbrNum) }}</p>
</div>
<div>
<p>转化订单数</p>
<p>{{ item.convOrderCnt ? item.convOrderCnt.toLocaleString() : 0 }}</p>
<p>{{ formatterNum(item.convOrderCnt) }}</p>
</div>
<div>
<p>转化收益</p>
<p>{{ convSalesAmt(item.convSalesAmt) }}</p>
<p>{{ parseInt(item.convSalesAmt || 0).toLocaleString('zh', { minimumFractionDigits: 2 }) }}</p>
</div>
</div>
</div>
......@@ -89,18 +90,11 @@ export default {
batchNum: Number | String
},
computed: {
convSalesAmt(num) {
return num => {
if (num) {
num = parseFloat(num).toFixed(2);
let i = num.indexOf('.');
let before = parseInt(num.slice(0, i)).toLocaleString();
let last = num.slice(i);
return before + last;
} else {
return '0.00';
}
};
formatterNum() {
return val => (!val ? '0' : parseInt(val).toLocaleString());
},
formatterRate() {
return val => (!val ? '0.00%' : parseFloat(val).toFixed(2) + '%');
}
}
};
......
......@@ -28,6 +28,7 @@ export default {
methods: {
draw() {
this.chartData = this.formatterData(this.chartData);
if (!this.chartData.length) return (this.isNone = true); // 营销开始时间为当天
let valueArr = this.chartData.filter(item => item.value >= 0);
let rateArr = this.chartData.filter(item => item.rate >= 0);
let valueFlag = valueArr.every(item => item.value == 0); // value是否出现全为0的情况
......
......@@ -121,7 +121,6 @@ export default {
item.transformRate = item.touchMbrNum * 1 && item.planMbrNum * 1 ? ((item.convMbrNum / item.planMbrNum) * 100).toFixed(2) : 0;
return item;
});
console.log(this.marketListData);
});
},
getFunnelData() {
......@@ -140,17 +139,7 @@ export default {
return item;
});
this.funnelData = this.formatFunnelData(checkData);
this.clueRate = checkData.map(item => {
if (item.线索转化收益 && parseFloat(item.线索转化收益)) {
item = parseFloat(item.线索转化收益).toFixed(2);
let i = item.indexOf('.');
let before = parseInt(item.slice(0, i)).toLocaleString();
let last = item.slice(i);
return before + last;
} else {
return '0.00';
}
});
this.clueRate = checkData.map(item => parseInt(item.convSalesAmt || 0).toLocaleString('zh', { minimumFractionDigits: 2 }));
this.loading = false;
});
},
......@@ -163,14 +152,14 @@ export default {
action: i,
value: parseInt(item[i]) ? item[i] * 1 : 0, // 防止字符串的null
rateAction: '触达率',
rate: (item.触达人数 / item.计划触达人数) * 100 ? ((item.触达人数 / item.计划触达人数) * 100).toFixed(2) + '%' : '0.00%'
rate: this.formatterRate((item.触达人数 / item.计划触达人数) * 100)
});
} else if (i != '收益' && i == '转化人数' && item[i] && item.计划触达人数) {
obj.unshift({
action: i,
value: parseInt(item[i]) ? item[i] * 1 : 0,
rateAction: '转化率',
rate: (item.转化人数 / item.触达人数) * 100 ? ((item.转化人数 / item.触达人数) * 100).toFixed(2) + '%' : '0.00%'
rate: this.formatterRate((item.转化人数 / item.触达人数) * 100)
});
} else {
if (i != '线索转化收益') {
......@@ -188,11 +177,7 @@ export default {
getTouchConfig() {
ecmPlanTouchConfig({ ecmPlanId: this.ecmPlanId }).then(res => {
this.batchNum = res.result.times ? res.result.times : 0;
if (res.result.lastTime) {
this.batchTime = new Date(parseInt(res.result.lastTime)).toLocaleString('zh', { hour12: false }).replace(/[\/]/g, '-');
} else {
this.batchTime = '--';
}
this.batchTime = res.result.lastTime ? new Date(parseInt(res.result.lastTime)).toLocaleString('zh', { hour12: false }).replace(/[\/]/g, '-') : '--';
let analyseJson = JSON.parse(res.result.analyseJson);
if (analyseJson && analyseJson.crowd_flag == 1) {
// 是否开启了参照组开关
......@@ -204,21 +189,28 @@ export default {
if (item.isSales == 0) this.marketListData.splice(index, 1);
});
}
if (res.result.effectType == 1) this.isRepeat = true;
else this.isRepeat = false;
this.isRepeat = res.result.effectType == 1 ? true : false;
});
},
// 获取卡券收益数据
getCardLeadsSum() {
getCardLeads({ ecmPlanId: this.$route.params.id }).then(res => {
this.cardLead = res.result;
this.cardLead = res.result || {};
});
},
getCardLeadTable() {
getCardLeadsList({ ecmPlanId: this.$route.params.id }).then(res => {
this.cardLeadTable = res.result;
this.cardLeadTable = res.result || [];
});
}
},
computed: {
formatterNum() {
return val => (!val ? '0' : parseInt(val).toLocaleString());
},
formatterRate() {
return val => (!val ? '0.00%' : parseFloat(val).toFixed(2) + '%');
}
}
};
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment