|
@@ -37,7 +37,10 @@
|
|
|
{{ lableTextDisplay(item.label) }}数
|
|
|
<el-tooltip class="item" effect="dark" :content="item.label === '新签客户' ? '<br />' : item.label === '续约客户' ? '起始时间在所选时间段内的续约合同' : ''" placement="top">
|
|
|
<template slot="content">
|
|
|
- <div v-if="item.label === '新签客户'">
|
|
|
+ <div v-if="item.label === '新增试用客户'">
|
|
|
+ <p>新建试用客户的时间或跨部门领取的时间,包含在所选时间段内的客户数</p>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.label === '新签客户'">
|
|
|
<p>起始时间在所选时间段内的新签合同</p>
|
|
|
<p>(第一份合同起始时间一年内的再次签约仍属于新签合同)</p>
|
|
|
</div>
|
|
@@ -45,7 +48,7 @@
|
|
|
<p>起始时间在所选时间段内的续约合同</p>
|
|
|
<p>(第一份合同起始时间一年以后的再次签约均属于续约合同)</p>
|
|
|
</div>
|
|
|
- <p v-else>合同截止时间在所选时间段内的非正式、非永续客户</p>
|
|
|
+ <p v-else>当前客户状态为非正式、非X类试用,且截止时间在所选时间段内的合同数(打分客户佣金不计入)</p>
|
|
|
</template>
|
|
|
<i class="el-icon-info"></i>
|
|
|
</el-tooltip>
|
|
@@ -53,7 +56,9 @@
|
|
|
</div>
|
|
|
<div class="card-cont">
|
|
|
{{
|
|
|
- item.label === "新签客户"
|
|
|
+ item.label === "新增试用客户"
|
|
|
+ ? TrialTotal
|
|
|
+ : item.label === "新签客户"
|
|
|
? NewCompanyTotal
|
|
|
: item.label === "续约客户"
|
|
|
? RenewalCompanyTotal
|
|
@@ -64,38 +69,6 @@
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</div>
|
|
|
- <div class="annual-select-content">
|
|
|
- <div class="select-content">
|
|
|
- <div class="lable-text">
|
|
|
- 不续约率
|
|
|
- <el-tooltip style="margin-right: 16px" class="item" effect="dark" content="所选年度的续约合同/所选年度的到期合同" placement="top-start">
|
|
|
- <template slot="content">
|
|
|
- <div>
|
|
|
- <p>所选时间段的已确认不续约的合同金额/所选时间段的到期的合同金额</p>
|
|
|
- <p>(剔除非业务不续约的金额)</p>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <i class="el-icon-info" style="color: #999"></i>
|
|
|
- </el-tooltip>
|
|
|
- </div>
|
|
|
- <el-date-picker
|
|
|
- v-model="yearValue"
|
|
|
- type="daterange"
|
|
|
- format="yyyy-MM-dd"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- :clearable="false"
|
|
|
- @change="getIncrementalCompanyContractPercentageList"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- >
|
|
|
- </el-date-picker>
|
|
|
- </div>
|
|
|
- <div class="select-content">
|
|
|
- <span class="editsty" v-if="RenewalDataForm.RenewalRateMoney" @click="renewalRateLableHandler"> {{ RenewalDataForm.RenewalRateMoney }} </span>
|
|
|
- {{ RenewalDataForm.RenewalRateTotalContent ? `(${RenewalDataForm.RenewalRateTotalContent})` : " - -" }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
</div>
|
|
|
<div class="tabs-box">
|
|
|
<div class="tabs-box-confirm">
|
|
@@ -106,11 +79,30 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="tabs-box" v-if="filterObj.data_type == '未续约客户'">
|
|
|
- <el-radio-group v-model="isNotRenewedConfirm" class="tabs-box-confirm" @change="notRenewedConfirmChange">
|
|
|
- <el-radio-button :label="1">已确认</el-radio-button>
|
|
|
- <div class="center-line"></div>
|
|
|
- <el-radio-button :label="0">待确认</el-radio-button>
|
|
|
- </el-radio-group>
|
|
|
+ <div style="display: flex; align-items: cente; margin-bottom: 20px">
|
|
|
+ <el-radio-group v-model="isNotRenewedConfirm" style="margin: 0px 20px 0 0" class="tabs-box-confirm" @change="notRenewedConfirmChange">
|
|
|
+ <el-radio-button :label="1">已确认</el-radio-button>
|
|
|
+ <div class="center-line"></div>
|
|
|
+ <el-radio-button :label="0">待确认</el-radio-button>
|
|
|
+ <div class="center-line"></div>
|
|
|
+ <el-radio-button :label="2">到期合同</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ <div class="lable-text">
|
|
|
+ 未续约率
|
|
|
+ <el-tooltip style="margin-right: 16px" class="item" effect="dark" content="所选年度的续约合同/所选年度的到期合同" placement="top-start">
|
|
|
+ <template slot="content">
|
|
|
+ <div>
|
|
|
+ <p>所选时间段的已确认不续约的合同金额/所选时间段的到期的合同金额</p>
|
|
|
+ <p>(剔除非业务不续约的金额)</p>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <i class="el-icon-info" style="color: #999"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <p class="editsty" v-if="RenewalDataForm.RenewalRateMoney" @click="renewalRateLableHandler"> {{ RenewalDataForm.RenewalRateMoney }} </p>
|
|
|
+ {{ RenewalDataForm.RenewalRateTotalContent ? `(${RenewalDataForm.RenewalRateTotalContent})` : " - -" }}
|
|
|
+ <el-button v-if="canConfirmNotRenewed" type="primary" size="mini" style="margin-left: 20px" @click="isNotRenewedDlg = true">下载</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<div class="tabs-box-status" v-show="isNotRenewedConfirm">
|
|
|
<el-select v-model="noRenewalReasonId" placeholder="请选择不续约归因" clearable @change="getTableData" style="width: 240px; margin-right: 50px">
|
|
|
<el-option :label="item.AscribeContent" :value="item.CompanyAscribeId" v-for="item in noRenewalReasonList" :key="item.reasonId"></el-option>
|
|
@@ -207,6 +199,7 @@
|
|
|
<previous-detail :previousDetailDlg.sync="previousDetailDlg" :rowInfo="rowInfo" />
|
|
|
<RenewalRateDetail :showRenewalRateDetailDlg.sync="showRenewalRateDetailDlg" :renewalRateDetailForm.sync="renewalRateDetailForm" :noRenewalReasonListSon="noRenewalReasonList" />
|
|
|
<historical-notes-dlg :historicalNotesDlgVisible.sync="historicalNotesDlgVisible" :CompanyId.sync="historicalNotesId" />
|
|
|
+ <NotRenewedDlg :isNotRenewedDlg.sync="isNotRenewedDlg" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -221,12 +214,13 @@ import confirmedNoRenewal from "./components/noRenewalReasonDia/confirmedNoRenew
|
|
|
import PreviousDetail from "./components/previousDetail.vue";
|
|
|
import RenewalRateDetail from "./components/renewalRateDetail.vue";
|
|
|
import HistoricalNotesDlg from "@/components/historicalNotesDlg.vue";
|
|
|
-
|
|
|
+import NotRenewedDlg from "./components/NotRenewedDlg.vue";
|
|
|
var moment = require("moment");
|
|
|
moment().format();
|
|
|
export default {
|
|
|
name: "",
|
|
|
- components: { mPage, renewalListDia, addRemark, viewRemark, confirmedNoRenewal, PreviousDetail, RenewalRateDetail, HistoricalNotesDlg },
|
|
|
+ components: { mPage, renewalListDia, addRemark, viewRemark, confirmedNoRenewal, PreviousDetail, RenewalRateDetail, HistoricalNotesDlg, NotRenewedDlg },
|
|
|
+
|
|
|
computed: {
|
|
|
exportExcel() {
|
|
|
let baseUrl = process.env.API_ROOT + "/statistic_report/merge_company_list";
|
|
@@ -283,7 +277,7 @@ export default {
|
|
|
month: "近1个月",
|
|
|
date: [],
|
|
|
sale: "",
|
|
|
- data_type: "新签客户",
|
|
|
+ data_type: "新增试用客户",
|
|
|
},
|
|
|
monthLabel: [
|
|
|
{
|
|
@@ -307,6 +301,9 @@ export default {
|
|
|
page_no: sessionStorage.getItem("incrementBack") ? JSON.parse(sessionStorage.getItem("incrementBack")).page_no : 1,
|
|
|
total: 0,
|
|
|
data_typeArr: [
|
|
|
+ {
|
|
|
+ label: "新增试用客户",
|
|
|
+ },
|
|
|
{
|
|
|
label: "新签客户",
|
|
|
},
|
|
@@ -328,6 +325,7 @@ export default {
|
|
|
{ name: "冻结/流失", value: "非试用" },
|
|
|
],
|
|
|
tabsActiveName: "",
|
|
|
+ TrialTotal:0,//新增试用数
|
|
|
NotRenewalNotTryOut: 0, //冻结流失的人数
|
|
|
NotRenewalTryOut: 0, //试用的人数
|
|
|
isNotRenewedConfirm: 1, //未续约的是否已确认
|
|
@@ -356,6 +354,8 @@ export default {
|
|
|
|
|
|
historicalNotesDlgVisible: false, //历史备注的弹框
|
|
|
historicalNotesId: 0,
|
|
|
+
|
|
|
+ isNotRenewedDlg: false, //未续约 弹框
|
|
|
};
|
|
|
},
|
|
|
/* 页面跳转前记录参数 */
|
|
@@ -456,6 +456,7 @@ export default {
|
|
|
if (res.Ret === 200) {
|
|
|
this.tableData = res.Data.List || [];
|
|
|
this.total = res.Data.Paging.Totals;
|
|
|
+ this.TrialTotal = res.Data.TrialTotal;
|
|
|
this.NewCompanyTotal = res.Data.NewCompanyTotal;
|
|
|
this.RenewalCompanyTotal = res.Data.RenewalCompanyTotal;
|
|
|
this.NotRenewalCompanyTotal = res.Data.NotRenewalCompanyTotal;
|
|
@@ -479,6 +480,7 @@ export default {
|
|
|
this.filterObj.month = label;
|
|
|
let days = label == "近1个月" ? 1 : label == "近2个月" ? 2 : label == "近3个月" ? 3 : 0;
|
|
|
this.filterDate(days);
|
|
|
+ this.getIncrementalCompanyContractPercentageList();
|
|
|
},
|
|
|
/* 选择服务日期 */
|
|
|
dateChange(e) {
|
|
@@ -500,6 +502,7 @@ export default {
|
|
|
this.incrementTableColums = equityTableColums(this.filterObj.data_type);
|
|
|
this.noRenewalReasonId = "";
|
|
|
if (label == "未续约客户") {
|
|
|
+ this.getIncrementalCompanyContractPercentageList();
|
|
|
this.getNORenewalReasonList();
|
|
|
}
|
|
|
this.tabsActiveName = "";
|
|
@@ -631,11 +634,11 @@ export default {
|
|
|
let str = text == "新签客户" ? "新签合同" : text == "续约客户" ? "续约合同" : "未续约客户";
|
|
|
return str;
|
|
|
},
|
|
|
- // 年度续约的标签点击事件
|
|
|
- annualSelectHandler(item) {
|
|
|
- this.annualSelectActivue = item.name;
|
|
|
- this.getIncrementalCompanyContractPercentageList();
|
|
|
- },
|
|
|
+ // // 年度续约的标签点击事件
|
|
|
+ // annualSelectHandler(item) {
|
|
|
+ // this.annualSelectActivue = item.name;
|
|
|
+ // this.getIncrementalCompanyContractPercentageList();
|
|
|
+ // },
|
|
|
// 点击了续约率
|
|
|
renewalRateLableHandler() {
|
|
|
this.showRenewalRateDetailDlg = true;
|
|
@@ -643,6 +646,7 @@ export default {
|
|
|
},
|
|
|
// 获取年度续约的数据
|
|
|
async getIncrementalCompanyContractPercentageList() {
|
|
|
+ if (this.filterObj.data_type != "未续约客户") return;
|
|
|
let params = this.initCompanyContractPercentageList();
|
|
|
const res = await dataMainInterface.incrementalCompanyContractPercentageListV2(params);
|
|
|
if (res.Ret === 200) {
|
|
@@ -658,8 +662,8 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
let params = {
|
|
|
- EndDate: this.yearValue.length > 0 ? this.yearValue[1] : "",
|
|
|
- StartDate: this.yearValue.length > 0 ? this.yearValue[0] : "",
|
|
|
+ EndDate: this.end_date,
|
|
|
+ StartDate: this.start_date,
|
|
|
AdminId: salesArr.join(","),
|
|
|
};
|
|
|
return params;
|
|
@@ -748,34 +752,29 @@ export default {
|
|
|
.package-difference {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
-.annual-select-content {
|
|
|
- .select-content {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 15px;
|
|
|
- .lable-text {
|
|
|
- flex-shrink: 0;
|
|
|
- }
|
|
|
- .select-lable {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- box-sizing: border-box;
|
|
|
- margin-left: 10px;
|
|
|
- width: 92px;
|
|
|
- height: 40px;
|
|
|
- color: #409eff;
|
|
|
- background-color: #ecf5ff;
|
|
|
- border: 1px solid #b3d8ff;
|
|
|
- border-radius: 4px;
|
|
|
- cursor: pointer;
|
|
|
- }
|
|
|
- .act-select-lable {
|
|
|
- color: #fff;
|
|
|
- background-color: #409eff;
|
|
|
- border: none;
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+.lable-text {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.select-lable {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin-left: 10px;
|
|
|
+ width: 92px;
|
|
|
+ height: 40px;
|
|
|
+ color: #409eff;
|
|
|
+ background-color: #ecf5ff;
|
|
|
+ border: 1px solid #b3d8ff;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+.act-select-lable {
|
|
|
+ color: #fff;
|
|
|
+ background-color: #409eff;
|
|
|
+ border: none;
|
|
|
}
|
|
|
</style>
|
|
|
<style lang="scss">
|