bding 1 жил өмнө
parent
commit
0f34caa4fe

+ 14 - 0
src/api/modules/statisticApi.js

@@ -379,6 +379,20 @@ const dataMainInterface = {
  incrementalCompanyContractPermissionList:params => {
  	return http.get('/statistic_report/merge_company/company_contract_permission/list',params);
  },
+  /**
+  * 权益客户续约率统计
+  * @param {PageSize} params 
+  * @param {CurrentIndex} params 
+  * @param {EndDate} params 结束日期
+  * @param {StartDate} params 开始日期
+  * @param {ContractDataType} params 到期合同
+  * @param {AdminId} params 销售id
+
+  * @returns  
+  */
+  incrementalCompanyContractPercentageList:params => {
+	return http.get('/statistic_report/merge_company/company_contract_percentage/list',params);
+},
 }
 
 export {

+ 47 - 32
src/views/dataReport_manage/components/RenewalRateDetail.vue

@@ -1,22 +1,33 @@
 <template>
   <div class="renewal-rate-detail-content">
-    <el-dialog :visible.sync="showRenewalRateDetailDlg" title="续约率详情" :close-on-click-modal="false" :modal-append-to-body="false" @close="cancelHandle" width="860px" v-dialogDrag center>
+    <el-dialog
+      :visible.sync="showRenewalRateDetailDlg"
+      title="续约率详情"
+      top="5vh"
+      :close-on-click-modal="false"
+      :modal-append-to-body="false"
+      @close="cancelHandle"
+      width="1000px"
+      v-dialogDrag
+      center
+    >
       <div>
         <el-tabs v-model="activeName" @tab-click="handleClick">
-          <el-tab-pane label="续约合同" name="first"></el-tab-pane>
-          <el-tab-pane label="到期合同" name="second"></el-tab-pane>
+          <el-tab-pane label="续约合同" name="续约合同"></el-tab-pane>
+          <el-tab-pane label="到期合同" name="到期合同"></el-tab-pane>
         </el-tabs>
       </div>
-      <p>共有续约合同 xx 份,续约总金额 xx 元</p>
+      <p v-if="activeName === '续约合同'">共有续约合同 {{ RenewalDataFormSon.RenewalContractTotal }} 份,续约总金额 {{ RenewalDataFormSon.RenewalContractMoney }} 元</p>
+      <p v-if="activeName === '到期合同'">共有到期合同 {{ RenewalDataFormSon.ExpireRenewalContractTotal }} 份,到期总金额 {{ RenewalDataFormSon.ExpireRenewalContractMoney }} 元</p>
       <div class="table-wrap">
-        <el-table v-if="tableData" :data="tableData" max-height="600" border style="width: 100%; margin-bottom: 20px">
+        <el-table :data="RenewalDataFormSon.List" max-height="600" border style="width: 100%; margin-bottom: 20px">
           <el-table-column label="公司名称" prop="CompanyName" align="center">
             <template slot-scope="{ row }">
               <span class="editsty" @click="goCompanyHandle(row)">{{ row.CompanyName }}</span>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="SellerName" label="所属销售"> </el-table-column>
-          <el-table-column align="center" prop="Money" label="合同金额"> </el-table-column>
+          <el-table-column align="center" prop="SellerName" label="所属销售" width="100"> </el-table-column>
+          <el-table-column align="center" prop="Money" label="合同金额" width="130"> </el-table-column>
           <el-table-column label="合同期限" prop="StartDate" align="center">
             <template slot-scope="{ row }">
               <span>{{ row.StartDate }} ~ {{ row.EndDate }}</span>
@@ -53,7 +64,7 @@ export default {
       default: false,
       type: Boolean,
     },
-    renewalRateDetailType: {
+    renewalRateDetailForm: {
       default: "",
       type: String,
     },
@@ -64,42 +75,43 @@ export default {
       pageSize: 10,
       total: 0,
       tableData: [],
-      activeName: "first",
+      activeName: "续约合同",
+      RenewalDataFormSon: {},
     };
   },
   watch: {
-    renewalRateDetailType: {
+    showRenewalRateDetailDlg: {
       handler(val) {
-        console.log(val);
+        if (val) {
+          this.getTableData();
+        }
       },
-      deep:true
+      deep: true,
     },
   },
   methods: {
     cancelHandle() {
       this.pageNo = 1;
+      this.activeName = "续约合同";
       this.tableData = [];
+      this.pageNo = 1;
+      this.pageSize = 10;
+      this.total = 0;
       this.$emit("update:showRenewalRateDetailDlg", false);
-      this.$emit("update:renewalRateDetailType", '');
+      this.$emit("update:renewalRateDetailForm", {});
     },
-    getTableData() {
-      dataMainInterface
-        .collectDetailList({
-          StartDate: this.StartDate,
-          EndDate: this.EndDate,
-          SellerIds: this.SellerIds,
-          CompanyStatus: this.customStatus,
-          UserId: OldUserId,
-          CurrentIndex: this.pageNo,
-          PageSize: this.pageSize,
-          CollectionType: this.collectionType ? this.collectionType + "" : "",
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          const { Paging, List } = res.Data;
-          this.total = Paging.Totals;
-          this.tableData = List;
-        });
+    async getTableData() {
+      let params = {
+        ...this.renewalRateDetailForm,
+        PageSize: this.pageSize,
+        CurrentIndex: this.pageNo,
+        ContractDataType: this.activeName,
+      };
+      const res = await dataMainInterface.incrementalCompanyContractPercentageList(params);
+      if (res.Ret === 200) {
+        this.RenewalDataFormSon = res.Data;
+        this.total = res.Data.Paging.Totals;
+      }
     },
     // 分页
     handleCurrentChange(page) {
@@ -117,7 +129,10 @@ export default {
       window.open(href, "_blank");
     },
     // 头部的点击事件
-    handleClick() {},
+    handleClick() {
+      this.pageNo = 1;
+      this.getTableData();
+    },
   },
 };
 </script>

+ 54 - 19
src/views/dataReport_manage/equityCustomStatistics.vue

@@ -69,7 +69,16 @@
               </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>
+              <el-date-picker
+                style="width: 105px; margin-right: 6px"
+                v-model="yearValue"
+                :clearable="false"
+                type="year"
+                value-format="yyyy"
+                placeholder="选择年"
+                @change="getIncrementalCompanyContractPercentageList"
+              >
+              </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>
@@ -77,13 +86,13 @@
           </div>
           <div class="select-content">
             <div class="lable-text">合同金额续约率:</div>
-            <span class="editsty" @click="renewalRateLableHandler('金额')">&nbsp;&nbsp;{{}}&nbsp;&nbsp;</span>
-            (xxx万元/xxx万元)
+            <span class="editsty" @click="renewalRateLableHandler">&nbsp;&nbsp;{{ RenewalDataForm.RenewalRateMoney }}&nbsp;&nbsp;</span>
+            ({{ RenewalDataForm.RenewalRateMoneyContent }})
           </div>
           <div class="select-content">
             <div class="lable-text">合同数量续约率:</div>
-            <span class="editsty" @click="renewalRateLableHandler('数量')">&nbsp;&nbsp;{{}}&nbsp;&nbsp;</span>
-            (xxx万元/xxx万元)
+            <span class="editsty" @click="renewalRateLableHandler">&nbsp;&nbsp;{{ RenewalDataForm.RenewalRateTotal }}&nbsp;&nbsp;</span>
+            ({{ RenewalDataForm.RenewalRateTotalContent }})
           </div>
         </div>
       </div>
@@ -192,7 +201,7 @@
       equityType="权益客户统计"
     />
     <previous-detail :previousDetailDlg.sync="previousDetailDlg" :rowInfo="rowInfo" />
-    <RenewalRateDetail :showRenewalRateDetailDlg.sync="showRenewalRateDetailDlg" :renewalRateDetailType.sync="renewalRateDetailType" />
+    <RenewalRateDetail :showRenewalRateDetailDlg.sync="showRenewalRateDetailDlg" :renewalRateDetailForm.sync="renewalRateDetailForm" />
   </div>
 </template>
 
@@ -333,28 +342,29 @@ export default {
       annualSelectList: [
         {
           name: "全年",
-          startTime: "01-01",
-          endTime: "12-31",
+          startTime: "-01-01",
+          endTime: "-12-31",
         },
         {
           name: "第一季度",
-          startTime: "01-01",
-          endTime: "03-31",
+          startTime: "-01-01",
+          endTime: "-03-31",
         },
         {
           name: "前二季度",
-          startTime: "01-01",
-          endTime: "06-30",
+          startTime: "-01-01",
+          endTime: "-06-30",
         },
         {
           name: "前三季度",
-          startTime: "01-01",
-          endTime: "09-30",
+          startTime: "-01-01",
+          endTime: "-09-30",
         },
       ],
       annualSelectActivue: "全年",
       showRenewalRateDetailDlg: false,
-      renewalRateDetailType: '',
+      renewalRateDetailForm: {},
+      RenewalDataForm: {},
     };
   },
   /* 页面跳转前记录参数 */
@@ -510,6 +520,7 @@ export default {
       this.page_no = 1;
       this.searchVal = "";
       this.getTableData();
+      this.getIncrementalCompanyContractPercentageList()
     },
     /* 切换页码 */
     handleCurrentChange(page) {
@@ -620,7 +631,6 @@ export default {
       });
     },
     previousDetailHadler(row) {
-      console.log(123);
       this.rowInfo = row;
       this.previousDetailDlg = true;
     },
@@ -631,16 +641,41 @@ export default {
     // 年度续约的标签点击事件
     annualSelectHandler(item) {
       this.annualSelectActivue = item.name;
+      this.getIncrementalCompanyContractPercentageList();
     },
     // 点击了续约率
-    renewalRateLableHandler(type) {
-      this.renewalRateDetailType = type;
+    renewalRateLableHandler() {
       this.showRenewalRateDetailDlg = true;
-
+      this.renewalRateDetailForm = this.initCompanyContractPercentageList();
+    },
+    // 获取年度续约的数据
+    async getIncrementalCompanyContractPercentageList() {
+      let params = this.initCompanyContractPercentageList();
+      const res = await dataMainInterface.incrementalCompanyContractPercentageList(params);
+      if (res.Ret === 200) {
+        this.RenewalDataForm = res.Data;
+      }
+    },
+    // 处理年度续约的数据
+    initCompanyContractPercentageList() {
+      let salesArr = [];
+      if (this.filterObj.sale.length) {
+        salesArr = this.filterObj.sale.map((item) => {
+          return item[item.length - 1];
+        });
+      }
+      let arr = this.annualSelectList.find((item) => item.name == this.annualSelectActivue);
+      let params = {
+        EndDate: this.yearValue ? this.yearValue + arr.endTime : "",
+        StartDate: this.yearValue ? this.yearValue + arr.startTime : "",
+        AdminId: salesArr.join(","),
+      };
+      return params;
     },
   },
   created() {},
   mounted() {
+    this.getIncrementalCompanyContractPercentageList();
     this.incrementTableColums = equityTableColums(this.filterObj.data_type);
     this.getSale();
     if (sessionStorage.getItem("incrementBack")) {