|
@@ -30,38 +30,62 @@
|
|
|
</el-cascader>
|
|
|
</div>
|
|
|
<div class="main-section">
|
|
|
- <el-row :gutter="36">
|
|
|
- <el-col :span="8" v-for="item in data_typeArr" :key="item.label">
|
|
|
- <el-card :class="['base-card', { 'main-card': filterObj.data_type === item.label }]" shadow="hover" @click.native="toggleType(item.label)">
|
|
|
- <div slot="header" class="clearfix">
|
|
|
- <span>
|
|
|
- {{ lableTextDisplay(item.label) }}数
|
|
|
- <el-tooltip
|
|
|
- class="item"
|
|
|
- effect="dark"
|
|
|
- :content="
|
|
|
- item.label === '新签客户' ? '起始时间在所选时间段内的新签合同' : item.label === '续约客户' ? '起始时间在所选时间段内的续约合同' : '合同截止时间在所选时间段内的非正式、非永续客户'
|
|
|
- "
|
|
|
- placement="top"
|
|
|
- >
|
|
|
- <i class="el-icon-info"></i>
|
|
|
- </el-tooltip>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <div class="card-cont">
|
|
|
- {{
|
|
|
- item.label === "新签客户"
|
|
|
- ? NewCompanyTotal
|
|
|
- : item.label === "续约客户"
|
|
|
- ? RenewalCompanyTotal
|
|
|
- : item.label === "未续约客户"
|
|
|
- ? NotRenewalCompanyTotal + " / " + NotRenewalCompanyToBeConfirmTotal
|
|
|
- : ""
|
|
|
- }}
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <div v-for="item in data_typeArr" :key="item.label">
|
|
|
+ <el-card style="margin-right: 50px" :class="['base-card', { 'main-card': filterObj.data_type === item.label }]" shadow="hover" @click.native="toggleType(item.label)">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>
|
|
|
+ {{ lableTextDisplay(item.label) }}数
|
|
|
+ <el-tooltip
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ :content="
|
|
|
+ item.label === '新签客户' ? '起始时间在所选时间段内的新签合同' : item.label === '续约客户' ? '起始时间在所选时间段内的续约合同' : '合同截止时间在所选时间段内的非正式、非永续客户'
|
|
|
+ "
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i class="el-icon-info"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="card-cont">
|
|
|
+ {{
|
|
|
+ item.label === "新签客户"
|
|
|
+ ? NewCompanyTotal
|
|
|
+ : item.label === "续约客户"
|
|
|
+ ? RenewalCompanyTotal
|
|
|
+ : item.label === "未续约客户"
|
|
|
+ ? NotRenewalCompanyTotal + " / " + NotRenewalCompanyToBeConfirmTotal
|
|
|
+ : ""
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ <div class="annual-select-content" v-if="filterObj.data_type == '续约客户'">
|
|
|
+ <div class="select-content">
|
|
|
+ <div class="lable-text">
|
|
|
+ 年度续约率
|
|
|
+ <el-tooltip style="margin-right: 16px" class="item" effect="dark" content="所选的续约合同/所选年度的到期合同" placement="top-start">
|
|
|
+ <i class="el-icon-warning"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex; align-items: center">
|
|
|
+ <el-date-picker style="width: 105px; margin-right: 6px" v-model="yearValue" type="year" value-format="yyyy" placeholder="选择年"> </el-date-picker>
|
|
|
+ <span @click="annualSelectHandler(item)" :class="['select-lable', annualSelectActivue == item.name && 'act-select-lable']" v-for="item in annualSelectList" :key="item.name">
|
|
|
+ {{ item.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="select-content">
|
|
|
+ <div class="lable-text">合同金额续约率:</div>
|
|
|
+ <span class="editsty" @click="renewalRateLableHandler('金额')"> {{}} </span>
|
|
|
+ (xxx万元/xxx万元)
|
|
|
+ </div>
|
|
|
+ <div class="select-content">
|
|
|
+ <div class="lable-text">合同数量续约率:</div>
|
|
|
+ <span class="editsty" @click="renewalRateLableHandler('数量')"> {{}} </span>
|
|
|
+ (xxx万元/xxx万元)
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="tabs-box" v-if="filterObj.data_type == '续约客户'">
|
|
|
<div class="tabs-box-confirm">
|
|
@@ -81,9 +105,6 @@
|
|
|
<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>
|
|
|
</el-select>
|
|
|
- <!-- <span @click="tabsHandler(item)" :class="tabsActiveName === item.value ? 'active' : ''" v-for="item in tabsList" :key="item">
|
|
|
- {{ item.name }}({{ item.name === "试用" ? NotRenewalTryOut : NotRenewalNotTryOut }})
|
|
|
- </span> -->
|
|
|
<el-select v-model="tabsActiveName" placeholder="当前状态" clearable @change="getTableData" style="width: 240px; margin-right: 50px">
|
|
|
<el-option :label="item.name" :value="item.value" v-for="item in tabsList" :key="item.value"></el-option>
|
|
|
</el-select>
|
|
@@ -171,6 +192,7 @@
|
|
|
equityType="权益客户统计"
|
|
|
/>
|
|
|
<previous-detail :previousDetailDlg.sync="previousDetailDlg" :rowInfo="rowInfo" />
|
|
|
+ <RenewalRateDetail :showRenewalRateDetailDlg.sync="showRenewalRateDetailDlg" :renewalRateDetailType.sync="renewalRateDetailType" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -183,12 +205,12 @@ import addRemark from "./components/noRenewalReasonDia/addRemark.vue";
|
|
|
import viewRemark from "./components/noRenewalReasonDia/viewRemark.vue";
|
|
|
import confirmedNoRenewal from "./components/noRenewalReasonDia/confirmedNoRenewal.vue";
|
|
|
import PreviousDetail from "./components/previousDetail.vue";
|
|
|
-
|
|
|
+import RenewalRateDetail from "./components/renewalRateDetail.vue";
|
|
|
var moment = require("moment");
|
|
|
moment().format();
|
|
|
export default {
|
|
|
name: "",
|
|
|
- components: { mPage, renewalListDia, addRemark, viewRemark, confirmedNoRenewal, PreviousDetail },
|
|
|
+ components: { mPage, renewalListDia, addRemark, viewRemark, confirmedNoRenewal, PreviousDetail, RenewalRateDetail },
|
|
|
computed: {
|
|
|
exportExcel() {
|
|
|
let baseUrl = process.env.API_ROOT + "/statistic_report/merge_company_list";
|
|
@@ -307,6 +329,32 @@ export default {
|
|
|
PackageDifference: "",
|
|
|
previousDetailDlg: false,
|
|
|
packageTypeList: ["增加套餐", "减少套餐", "维持套餐"],
|
|
|
+ yearValue: new Date().getFullYear().toString(),
|
|
|
+ annualSelectList: [
|
|
|
+ {
|
|
|
+ name: "全年",
|
|
|
+ startTime: "01-01",
|
|
|
+ endTime: "12-31",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "第一季度",
|
|
|
+ startTime: "01-01",
|
|
|
+ endTime: "03-31",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "前二季度",
|
|
|
+ startTime: "01-01",
|
|
|
+ endTime: "06-30",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "前三季度",
|
|
|
+ startTime: "01-01",
|
|
|
+ endTime: "09-30",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ annualSelectActivue: "全年",
|
|
|
+ showRenewalRateDetailDlg: false,
|
|
|
+ renewalRateDetailType: '',
|
|
|
};
|
|
|
},
|
|
|
/* 页面跳转前记录参数 */
|
|
@@ -580,6 +628,16 @@ export default {
|
|
|
let str = text == "新签客户" ? "新签合同" : text == "续约客户" ? "续约合同" : "未续约客户";
|
|
|
return str;
|
|
|
},
|
|
|
+ // 年度续约的标签点击事件
|
|
|
+ annualSelectHandler(item) {
|
|
|
+ this.annualSelectActivue = item.name;
|
|
|
+ },
|
|
|
+ // 点击了续约率
|
|
|
+ renewalRateLableHandler(type) {
|
|
|
+ this.renewalRateDetailType = type;
|
|
|
+ this.showRenewalRateDetailDlg = true;
|
|
|
+
|
|
|
+ },
|
|
|
},
|
|
|
created() {},
|
|
|
mounted() {
|
|
@@ -659,6 +717,35 @@ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|
|
|
<style lang="scss">
|
|
|
#dataReport-container {
|