Parcourir la source

'绩效-运营'

魏志佳 il y a 5 ans
Parent
commit
d78ef64d39

+ 167 - 85
src/views/modules/Statistics/performanceRelated/performanceRelated.vue

@@ -8,7 +8,7 @@
                         <a-select-option value="">
                             全部
                             </a-select-option>
-                            <a-select-option v-for="(item) in selectOption.company" :value='item.companyCode' :key="item.companyId">
+                            <a-select-option v-for="(item) in selectOption.company" :value='item.companyId' :key="item.companyId">
                                {{item.area}}
                             </a-select-option>                   
                         </a-select>
@@ -16,18 +16,18 @@
                 <div>
                     <span>媒体类型:</span>
                     <a-select v-model="mediaType" style="width: 120px" @change="mediaTypeChange">
-                        <a-select-option value="">
+                        <a-select-option :value="0">
                             全部
                         </a-select-option>
-                        <a-select-option v-for="(value,key) in selectOption.mediaType" :value='key' :key='key'>
-                            {{value}}
+                        <a-select-option v-for="(item) in selectOption.mediaType" :value='item.num' :key='item.code'>
+                            {{item.name}}
                         </a-select-option>                    
                     </a-select>
                 </div>
                 <div>
                     <span>年份:</span>
                     <a-select v-model="years" style="width: 120px" @change="yearsChange">
-                        <a-select-option value="">
+                        <a-select-option :value='0'>
                             全部
                         </a-select-option>
                         <a-select-option v-for="(item,index) in yearsArr" :value="item" :key='index'>
@@ -54,10 +54,10 @@
                 <div>                
                     <span>职位:</span>
                     <a-select v-model="position" style="width: 120px" @change="positionChange">
-                        <a-select-option value="">
+                        <a-select-option value=''>
                             全部
                         </a-select-option>
-                        <a-select-option v-for="item in selectOption.post" :value="item.id" :key="item.id">
+                        <a-select-option v-for="item in selectOption.post" :value="item.roleCode" :key="item.id">
                             {{item.roleName}}
                         </a-select-option>                   
                     </a-select>
@@ -81,7 +81,7 @@
                 :dataSource="tableData"
                 bordered
                 id="outTable"
-                :pagination="false"
+                :pagination="ipagination"
                 :scroll="{ x: scrollX }"
                 :loading="loading"
                 ref="accountTable"
@@ -92,13 +92,23 @@
                 <span slot="operation" slot-scope="text, record">
                         <a href="javascript:;" @click="opendetail(text, record)">查看明细</a>
                  </span>
+                 <span slot="cost" slot-scope="cost">{{cost | decimalsHandle}}</span>
+                 
+                 <span slot="performance" slot-scope="performance">{{performance | decimalsHandle}}</span>
+                 <span slot="mediaType" slot-scope="text">
+                     <span v-if="text==1">头条</span>
+                     <span v-if="text==2">快手</span>
+                     <span v-if="text==3">头条内广</span>
+                     <span v-if="text==4">快手内广</span>
+                 </span>
             </a-table>
         </div>
          <!-- 明细表 -->
         <div class="detailBox">
-            <a-modal v-model="visibleDetail" title="详细信息" width="60%" :footer="null" >
-                <a-button type="default" @click="exportExcel" id="mybtn">导出报表</a-button>
-                <a-table
+            <a-modal v-model="visibleDetail" title="详细信息" width="50%" :footer="null" id="detailBox">
+                <!-- <a-button type="default" @click="exportExcel" id="mybtn">导出报表</a-button> -->
+                <div class="myTable">
+                    <a-table
                     :columns="detailColumns"
                     :data-source="detailData"
                     bordered
@@ -106,9 +116,13 @@
                     :pagination="false"
                     :loading='loadingDetail'
                     style="word-break: break-all;"
-                >
-                    <span slot="cost" slot-scope="cost">{{ cost | decimalsHandle }}</span>
-                </a-table>
+                    id="myTable"
+                    :scroll="{ y: 500 }"
+                    >
+                        <span slot="cost" slot-scope="cost">{{ cost | decimalsHandle }}</span>
+                    </a-table>
+                </div>
+               
             </a-modal>
         </div>
         
@@ -124,59 +138,59 @@ import { JeecgListMixin } from '@/mixins/ipagination'
 const columnsFixd = [
   {
     title: '姓名',
-    dataIndex: 'name',
+    dataIndex: 'userName',
     align: 'center',
-    key:'name',
-    scopedSlots: { customRender: 'name' }
+    key:'userName',
+    scopedSlots: { customRender: 'userName' }
   },
   {
     title: '职位',
-    dataIndex: 'position',
+    dataIndex: 'roleName',
     align: 'center',
     
-    key: 'position',
-    scopedSlots: { customRender: 'position' }
+    key: 'roleName',
+    scopedSlots: { customRender: 'roleName' }
   },
   {
     title: '媒体类型',
-    dataIndex: 'mediatype',
+    dataIndex: 'mediaType',
     align: 'center',
-    
+    scopedSlots: { customRender: 'mediaType' }
   },
    {
     title: '季度',
-    dataIndex: 'projectName',
+    dataIndex: 'quarters',
     align: 'center',
-    
+    scopedSlots: { customRender: 'quarters' }
   },
   {
     title: '消耗',
-    dataIndex: 'materialDesc',
+    dataIndex: 'cost',
     align: 'center',
-    scopedSlots: { customRender: 'operation' },
+    scopedSlots: { customRender: 'cost' },
     sorter:()=>{}
   },
   {
     title: '提成比例',
-    dataIndex: 'tc',
+    dataIndex: 'point',
     align: 'center',
-    scopedSlots: { customRender: 'operation' },
-    sorter:()=>{}
-  },
-  {
-    title: '应得绩效',
-    dataIndex: 'jx',
-    align: 'center',
-    scopedSlots: { customRender: 'operation' },
-    sorter:()=>{}
-  },
-  {
-    title: '管理岗绩效',
-    dataIndex: 'gl',
-    align: 'center',
-    scopedSlots: { customRender: 'operation' },
+    scopedSlots: { customRender: 'point' },
     sorter:()=>{}
   },
+            // {
+            //     title: '应得绩效',
+            //     dataIndex: 'performance',
+            //     align: 'center',
+            //     scopedSlots: { customRender: 'performance' },
+            //     sorter:()=>{}
+            // },
+            // {
+            //     title: '管理岗绩效',
+            //     dataIndex: 'additionalFees',
+            //     align: 'center',
+            //     scopedSlots: { customRender: 'additionalFees' },
+            //     sorter:()=>{}
+            // },
   {
     title: '操作',
     dataIndex: 'operation',
@@ -188,46 +202,50 @@ const columnsFixd = [
 
 const detailColumns=[
     {
-        title: '时间',
-        dataIndex: 'date',
+        title: '季度',
+        dataIndex: 'quarters',
         align: 'center',
-        scopedSlots: { customRender: 'date' },
-        sorter:()=>{}
+        scopedSlots: { customRender: 'quarters' },
+        sorter:()=>{},
+        width:150
     },
     {
         title: '项目',
         dataIndex: 'projectName',
         align: 'center',
         scopedSlots: { customRender: 'projectName' },
-        sorter:()=>{}
+        sorter:()=>{},
+        width:200
     },
     {
         title: '账户名称',
-        dataIndex: 'accountName',
+        dataIndex: 'authName',
         align: 'center',
-        scopedSlots: { customRender: 'accountName' },
-        sorter:()=>{}
+        scopedSlots: { customRender: 'authName' },
+        sorter:()=>{},
+        width:350,
     },
     {
         title: '消耗',
-        dataIndex: 'materialDesc',
+        dataIndex: 'cost',
         align: 'center',
-        scopedSlots: { customRender: 'operation' },
+        scopedSlots: { customRender: 'cost' },
         sorter:()=>{}
   },
 ]
 
 export default {
+    mixins:[JeecgListMixin],
     data() {
         return {
             selectOption:{},
             yearsArr:[],
             quarterArr:[],
             company:'',
-            mediaType:'',
+            mediaType:0,
             position:'',
             quarter:'',//季度数据
-            years:'',
+            years:0,
             nameValue:'',
             //table数据
             columns:JSON.parse(JSON.stringify(columnsFixd)) ,//table的表头
@@ -237,6 +255,8 @@ export default {
             tableWidth: '',//设置表格的列宽
             loading:false,
 
+
+
             visibleDetail:false, //明细表的开关
             detailData:[],
             loadingDetail:false,
@@ -248,26 +268,40 @@ export default {
         moment,
         //chaxun anniu 
         search(){
-
+            this.tableHttp();
         },
          //导出报表
         exportExcel() {
            
-            var name = this.data.filter(item => {
-                return item.signature == this.signature
-            })[0].projectName
-            downFilePost('/toutiao/videoReportDaily/bytedanceVideoInfoListDetailExportExcel', {
-                startDate: this.timedata[0],
-                endDate: this.timedata[1],
-                signature: this.signature
+            // var name = this.data.filter(item => {
+            //     return item.signature == this.signature
+            // })[0].projectName
+            let companyName=''
+            if(this.company){
+                this.selectOption.company.forEach((item)=>{
+                    if(item.companyId==this.company){
+                        companyName=item.area
+                    }
+                   
+                })
+            }
+            var name =`${companyName || '全公司'}_${this.year || '全年份'}_${this.quarter || '全季度'}_${this.mediaType|| '全部类型'}`;
+            
+            downFilePost('/ctop/performance/show/excel', {
+                year:this.years,
+                quarter:this.quarter,
+                company:this.company,
+                userName:this.nameValue,
+                roleCode:this.position,
+                mediaType:this.mediaType
             }).then(res => {
                 let blob = new Blob([res], {
-                type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+                    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
                 })
                 let downloadElement = document.createElement('a')
                 let href = window.URL.createObjectURL(blob) //创建下载的链接
                 downloadElement.href = href
-                downloadElement.download = name + '-' +this.timedata[0] + '-' + this.timedata[1]+'.xlsx'    //下载后文件名
+                downloadElement.download = name+'.xlsx'    //下载后文件名
                 document.body.appendChild(downloadElement)
                 downloadElement.click() //点击下载
                 document.body.removeChild(downloadElement) //下载完成移除元素
@@ -281,24 +315,23 @@ export default {
             this.visibleDetail = true
             this.detailData = []
             this.loadingDetail=true
-            this.signature=record.signature
-            console.log(this.signature)
-            postAction('/toutiao/videoReportDaily/bytedanceVideoInfoListDetail', {
-                startDate: this.timedata[0],
-                endDate: this.timedata[1],
-                signature: record.signature,
-                accountIds:this.appId
+            postAction('/ctop/performance/show/operateDetail', {
+                year:record.year,
+                quarter:record.quarter,
+                userId:record.userId,
+                mediaType:record.mediaType
             }).then(res => {
-                let resArr = []
+                // let resArr = []
                 this.loadingDetail=false
                 console.log(res)
                 if (res.success) {
-                let result = res.result
-                this.detailData.push({ ...result, key: 1 })
-                result.map((item, index) => {
-                    item.key = index
-                })
-                this.detailData = result
+                    let result = res.result
+                    // this.detailData.push({ ...result, key: 1 })
+                    result.map((item, index) => {
+                        item.key = index;
+                        item.quarters=record.quarters
+                    })
+                    this.detailData = result
                 }
             })
         },
@@ -306,11 +339,11 @@ export default {
         //获取选择框的信息
         getInfoHttp(){
             getAction('/ctop/performance/show/getPerformanceInfo',{}).then((res)=>{
-                console.log(res);
+                // console.log(res);
                 
                 this.selectOption=res.result;
                 this.yearsArr=Reflect.ownKeys(res.result.data).splice(0,Reflect.ownKeys(res.result.data).length-1)
-                console.log(this.yearsArr)
+                // console.log(this.yearsArr)
             })
         },
         //职位改变
@@ -320,17 +353,17 @@ export default {
         },
         //公司改变
         companyChange(val){
-            console.log(val)
+            // console.log(val)
             this.company=val
         },
         //媒体类型
         mediaTypeChange(val){
-            console.log(val)
+            // console.log(val)
             this.mediaType=val
         },
         //年份改变
         yearsChange(val){
-            console.log(val)
+            // console.log(val)
             this.years=val;
             if(val==''){
                 this.quarterArr=[];
@@ -341,7 +374,7 @@ export default {
         },
         //季度改变
         quarterChange(val){
-            console.log(val)
+            // console.log(val)
             this.quarter=val;
             
         },
@@ -362,9 +395,58 @@ export default {
             this.tableHttp();
         },
 
+        //请求table的数据
+        tableHttp(){
+            this.loading=true
+            this.tableData=[]
+            postAction(`ctop/performance/show/${this.ipagination.current}/${this.ipagination.pageSize}/desc`,{
+                year:this.years,
+                quarter:this.quarter,
+                company:this.company,
+                userName:this.nameValue,
+                roleCode:this.position,
+                mediaType:this.mediaType
+            }).then(res=>{
+                console.log(res)
+                this.loading=false;
+                if(res.success&&res.result.list.length>0){
+                    res.result.list.forEach((item,index)=>{
+                        item.key=index;
+                        item.quarters=item.year+'_'+item.quarter;
+                    })
+                    this.tableData=[...res.result.list]
+                }
+                this.ipagination.total = res.result.total   
+            })
+        },
+
+        //请求详细信息
+        detailHttp(){
+            this.loadingDetail=true
+            postAction(`ctop/performance/show/${this.ipagination.current}/${this.ipagination.pageSize}/desc`,{
+                year:this.years,
+                quarter:this.quarter,
+                company:this.company,
+                userName:this.nameValue,
+                roleCode:this.position,
+                mediaType:this.mediaType
+            }).then(res=>{
+                console.log(res)
+                this.loadingDetail=false;
+                if(res.success&&res.result.list.length>0){
+                    res.result.list.forEach((item,index)=>{
+                        item.key=index;
+                        item.quarter=item.year+'_'+item.quarter;
+                    })
+                    this.tableData=[...res.result.list]
+                }
+                this.ipagination.total = res.result.total   
+            })
+        },
     },
     mounted() {
-        this.getInfoHttp()
+        this.getInfoHttp();
+        this.tableHttp();
     },
     filters: {
         toPercentage(val) {