qymljy 4 ay önce
ebeveyn
işleme
4e759a0d1b

+ 109 - 0
src/HDrpManagement/contactData/components/allRank.vue

@@ -0,0 +1,109 @@
+<template>
+  <div>
+    <el-button type="primary" size="small" @click="allClick">{{$t(btnTitle)}} ></el-button>
+    <el-drawer
+        :title="$t(allTitle)"
+        :visible.sync="drawerShow"
+        size="90%"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onCLose"
+    >
+      <div class="drawer__panel">
+        <depStatus class="inline-16" ref="depStatusCusRef" @depData="listData" @personData="listData" @leaveData="listData"></depStatus>
+        <tableDetail :layout="tablecols" :data="list" :opwidth="200" :custom="true" height="calc(100vh - 290px)">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'amount'">
+              {{tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥')}}
+            </div>
+            <div v-else>{{scope.column.data[scope.column.columnname]||scope.column.columnname ==='operation'?scope.column.data[scope.column.columnname] : '--'}}</div>
+          </template>
+        </tableDetail>
+        <div  class="container normal-panel" style="text-align:right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[20, 50, 100, 200]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import depStatus from './depStatus'
+export default {
+  name: "allRank",
+  props:['btnTitle','allTitle','paramOld','tablecols'],
+  components:{depStatus},
+  data(){
+    return {
+      drawerShow:false,
+      list:[],
+      currentPage:0,
+      total:0,
+      param:{
+        "id": 2025072410065502,
+        "content": {
+          "type": 1,
+          "dataid": 54,
+          "dateType": "本年",
+          "where": {
+            "begdate": "",
+            "enddate": "",
+            "condition": "",
+            "isleave": ""
+          },
+          "pageSize": 100,
+          "pageNumber": 1
+        },
+      },
+    }
+  },
+  methods:{
+    allClick(){
+      console.log(this.paramOld,'old')
+      this.drawerShow = true
+      this.param.content.pageNumber = 1
+      this.param.id = this.paramOld.id
+      this.param.content.type = this.paramOld.content.type
+      this.param.content.dataid = this.paramOld.content.dataid
+      this.param.content.dateType = this.paramOld.content.dateType
+      this.param.content.where.isleave = this.paramOld.content.where.isleave
+      this.param.content.where.begindate = this.paramOld.content.where.begindate
+      this.param.content.where.enddate = this.paramOld.content.where.enddate
+      this.listData()
+    },
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    onCLose(){
+      this.drawerShow = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 7 - 5
src/HDrpManagement/contactData/components/btnSelectInfo.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-button-group>
-      <el-button v-for="item in btnTitle" :key="item.index" :type="item === dateType ?'primary':''" size="small" @click="btnClick(item)">{{$t(item)}}</el-button>
+      <el-button v-for="item in btnTitle" :key="item.index" :type="item === dataTypeNow ?'primary':''" size="small" @click="btnClick(item)">{{$t(item)}}</el-button>
     </el-button-group>
     <el-date-picker
         style="margin-left: 10px"
@@ -20,15 +20,17 @@ export default {
   name: "btnSelectInfo",
   props:{
     btnTitle: Array,
-    dateType:''
+    dateType:String
   },
   data(){
     return {
-      dateData:[]
+      dateData:[],
+      dataTypeNow:'本年'
     }
   },
   methods:{
     btnClick(data){
+      this.dataTypeNow = data
       if (data == '本年'){
         let year = new Date().getFullYear()
         let begdate = year + '-01'
@@ -45,11 +47,11 @@ export default {
         const monthStartDate = new Date(now.getFullYear(), now.getMonth());
         this.dateData = [monthStartDate,monthStartDate]
       }
-      this.dateType = data
-      this.$emit('btnClick')
+      this.$emit('btnClick',data)
     }
   },
   mounted() {
+    this.dataTypeNow = this.dateType
     this.btnClick(this.dateType)
   }
 }

+ 20 - 7
src/HDrpManagement/contactData/components/salesContribution.vue

@@ -5,11 +5,12 @@
         <el-tabs v-model="activeName" @tab-click="handleClick">
           <el-tab-pane :label="$t(`联系人关联客户销售TOP10`)" name="关联客户">
             <depStatus class="inline-16" ref="depStatusCusRef" @depData="listData" @personData="listData" @leaveData="listData"></depStatus>
-            <btnSelect @btnClick="btnClick" class="inline-16" :btnTitle="['本年','本季','本月']" dateType="本年"></btnSelect>
-            <tableDetail :layout="tablecols" :data="list" :opwidth="200" :custom="true">
+            <btnSelect @btnClick="btnClick" class="inline-16"  :btnTitle="['本年','本季','本月']" dateType="本年"></btnSelect>
+            <allRank ref="allRankCusRef" class="inline-16" btnTitle="全部排名" allTitle="联系人关联客户销售贡献度排行" :paramOld="paramCus" :tablecols="tool.tabelCol(this.$route.name).associatedCustomers.tablecols"></allRank>
+            <tableDetail :layout="tablecols" :data="list" :opwidth="200" :custom="true" >
               <template v-slot:customcol="scope">
                 <div v-if="scope.column.columnname === 'amount'">
-                  {{tool.formatAmount(scope.column.data[scope.column.columnname])}}
+                  {{tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥')}}
                 </div>
                 <div v-else>{{scope.column.data[scope.column.columnname]||scope.column.columnname ==='operation'?scope.column.data[scope.column.columnname] : '--'}}</div>
               </template>
@@ -17,11 +18,12 @@
           </el-tab-pane>
           <el-tab-pane :label="$t(`联系人关联项目销售TOP10`)" name="关联项目">
             <depStatus @btnClick="handleClick" class="inline-16"  ref="depStatusProRef" @depData="listData" @personData="listData" @leaveData="listData"></depStatus>
-            <btnSelect class="inline-16" :btnTitle="['本年','本季','本月']" dateType="本年"></btnSelect>
+            <btnSelect @btnClick="btnClick" class="inline-16" :btnTitle="['本年','本季','本月']" dateType="本年"></btnSelect>
+            <allRank ref="allRankProRef"  class="inline-16" btnTitle="全部排名" allTitle="联系人关联项目销售贡献度排行" :paramOld="paramPro" :tablecols="tool.tabelCol(this.$route.name).associatedProject.tablecols"></allRank>
             <tableDetail :layout="tablecols" :data="list" :opwidth="200" :custom="true">
               <template v-slot:customcol="scope">
                 <div v-if="scope.column.columnname === 'amount'">
-                  {{tool.formatAmount(scope.column.data[scope.column.columnname])}}
+                  {{tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥')}}
                 </div>
                 <div v-else>{{scope.column.data[scope.column.columnname]||scope.column.columnname ==='operation'?scope.column.data[scope.column.columnname] : '--'}}</div>
               </template>
@@ -37,9 +39,10 @@
 import dataTemPlate from '@/components/dataTemplate/index'
 import depStatus from './depStatus'
 import btnSelect from "./btnSelectInfo"
+import allRank from './allRank'
 export default {
   name: "salesContribution",
-  components:{dataTemPlate,depStatus,btnSelect},
+  components:{dataTemPlate,depStatus,btnSelect,allRank},
   data(){
     return {
       activeName: '关联客户',
@@ -80,7 +83,9 @@ export default {
       list:[],
       tablecols:[],
       currentPage:0,
-      total:0
+      total:0,
+      drawerShow:false,
+      allTitle:'关联客户'
     }
   },
   methods:{
@@ -93,6 +98,7 @@ export default {
       this.listData(id,type,isleave,state)
     },
     async listData(id,type,isleave,state){
+      console.log(this.paramCus,'paramCus')
       if (this.activeName == '关联客户') {
         this.paramCus.content.dataid = id
         this.paramCus.content.type = type
@@ -124,6 +130,13 @@ export default {
         this.paramPro.content.dateType = dateType
         this.listData(this.paramPro.content.dataid,this.paramPro.content.type,this.paramPro.content.where.isleave)
       }
+    },
+    allClick(){
+      this.drawerShow = true
+    },
+    onCLose(){
+      console.log('关闭弹窗')
+      this.drawerShow = false
     }
   },
   created() {

+ 15 - 1
src/HDrpManagement/contactData/index.vue

@@ -327,18 +327,30 @@ export default {
       this.$refs.allDepRef.deplist = this.deplist
       this.$refs.salesContributionRef.$refs.depStatusCusRef.deplist = this.deplist
       this.$refs.salesContributionRef.$refs.depStatusProRef.deplist = this.deplist
+      // this.$refs.salesContributionRef.$refs.allRankProRef.$refs.depStatusProRef.deplist = this.deplist
+      // this.$refs.salesContributionRef.$refs.allRankCusRef.$refs.depStatusCusRef.deplist = this.deplist
+
       this.personnelList = res.data.hr
       this.$refs.allDepRef.personnelList = this.personnelList
       this.$refs.salesContributionRef.$refs.depStatusCusRef.personnelList = this.personnelList
       this.$refs.salesContributionRef.$refs.depStatusProRef.personnelList = this.personnelList
+      // this.$refs.salesContributionRef.$refs.allRankCusRef.$refs.depStatusCusRef.personnelList = this.personnelList
+      // this.$refs.salesContributionRef.$refs.allRankProRef.$refs.depStatusProRef.personnelList = this.personnelList
+
       this.depment = ''
       this.$refs.allDepRef.depment = this.depment
       this.$refs.salesContributionRef.$refs.depStatusCusRef.depment = this.depment
       this.$refs.salesContributionRef.$refs.depStatusProRef.depment = this.depment
+      // this.$refs.salesContributionRef.$refs.allRankCusRef.$refs.depStatusCusRef.depment = this.depment
+      // this.$refs.salesContributionRef.$refs.allRankProRef.$refs.depStatusProRef.depment = this.depment
+
       this.person = JSON.parse(window.sessionStorage.getItem('active_account')).name
       this.$refs.allDepRef.person = this.person
       this.$refs.salesContributionRef.$refs.depStatusCusRef.person = this.person
       this.$refs.salesContributionRef.$refs.depStatusProRef.person = this.person
+      // this.$refs.salesContributionRef.$refs.allRankCusRef.$refs.depStatusCusRef.person = this.person
+      // this.$refs.salesContributionRef.$refs.allRankProRef.$refs.depStatusProRef.person = this.person
+
       const userid = JSON.parse(sessionStorage.getItem('active_account')).userid
       this.otherMethod(userid)
     },
@@ -448,7 +460,9 @@ export default {
       /*联系人数据概况*/
       this.paramMain.content.type = '0'
       this.queryMainData(dataid,this.dateType)
-      this.$refs.salesContributionRef.listData(dataid)
+      this.$refs.salesContributionRef.paramCus.content.dateType = '本年'
+      this.$refs.salesContributionRef.paramPro.content.dateType = '本年'
+      this.$refs.salesContributionRef.listData(dataid,0,1)
     },
     /*其他页面再次调用*/
     otherModel(dataid,type,isleave,state){