Procházet zdrojové kódy

报销流程测试版本

朱鑫波 před 2 roky
rodič
revize
58dc972bb5

+ 2 - 2
.env.development

@@ -14,12 +14,12 @@ VUE_APP_BASE_SCRIPT_URL = http://192.168.0.195:31013
 
 
 #素材大盘相关接口
-VUE_APP_BASE_MATERIAL_URL = http://192.168.0.195:9999/material
+VUE_APP_BASE_MATERIAL_URL = http://api.tjyourong.com.cn/material
 # 字安接口 http://192.168.1.43:9999
 # 测试环境 http://192.168.0.195:9999
 # 西安环境 http://192.168.1.59:7006
 
 #盯盘相关接口
-VUE_APP_BASE_STARE_URL =  http://192.168.0.195:9999/material
+VUE_APP_BASE_STARE_URL =  http://api.tjyourong.com.cn/material
 # 字安接口 http://192.168.1.43:9999
 # 测试环境 http://192.168.0.195:9999

+ 2 - 1
src/api/manage.js

@@ -150,7 +150,8 @@ export function downFile(url, parameter) {
     url: url,
     params: parameter,
     method: 'get',
-    responseType: 'blob'
+    responseType: 'blob',
+    timeout: 12000000, // 请求超时时间
   })
 }
 export function getProvince(url, parameter) {

+ 40 - 19
src/views/modules/achievements/design/data.vue

@@ -162,6 +162,14 @@
             <a-col :xl="24">
                 <a-card style="width: 100%" title="设计数据">
                     <!-- :columns="columns" -->
+                    <a-button
+                        type="primary"
+                        class="export"
+                        @click="exportExcel"
+                        :loading="exportLoading"
+                        style="margin-bottom: 15px"
+                        >导出报表</a-button
+                    >
                     <a-table
                         size="middle"
                         :dataSource="designTopList"
@@ -186,44 +194,32 @@
                         </a-table-column>
                         <a-table-column :title="onetotalCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{ t.hotVideoInfo.length > 0 ? t.hotVideoInfo[1].kuaishou[0].hotNum : '-' }}</span
-                                >
+                                <span> {{ t.kuaishou.hotNum1 }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="twototalCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>{{
-                                    t.hotVideoInfo.length > 0 ? t.hotVideoInfo[1].kuaishou[1].hotNum : '-'
-                                }}</span>
+                                <span> {{ t.kuaishou.hotNum2 }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threetotalCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>{{
-                                    t.hotVideoInfo.length > 0 ? t.hotVideoInfo[1].kuaishou[2].hotNum : '-'
-                                }}</span>
+                                <span> {{ t.kuaishou.hotNum3 }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="oneFWCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{ t.hotVideoInfo.length > 0 ? t.hotVideoInfo[0].byteDance[0].hotNum : '-' }}</span
-                                >
+                                <span> {{ t.bytedance.hotNum1 }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoFWCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{ t.hotVideoInfo.length > 0 ? t.hotVideoInfo[0].byteDance[1].hotNum : '-' }}</span
-                                >
+                                <span> {{ t.bytedance.hotNum2 }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeFWCharge" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{ t.hotVideoInfo.length > 0 ? t.hotVideoInfo[0].byteDance[2].hotNum : '-' }}</span
-                                >
+                                <span> {{ t.bytedance.hotNum3 }}</span>
                             </template>
                         </a-table-column>
                         <!-- <a-table-column title="离职时间" data-index="quitTime" align="center">
@@ -245,6 +241,7 @@ import Trend from '@/components/Trend'
 import { mapGetters } from 'vuex'
 import Treeselect from '@/views/modules/Statistics/components/Treeselect.vue'
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+import { downFile } from '@/api/manage'
 const columnsFixd = [
     {
         title: '广告组名称',
@@ -335,6 +332,7 @@ export default {
             chartList: [],
             videoList: [],
             designTopList: [],
+            exportLoading: false,
             target: '',
             order: 'descend',
             columns: [...columnsFixd, ...ksColumns], // table的表头
@@ -397,6 +395,29 @@ export default {
         filterOption(input, option) {
             return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
         },
+        exportExcel() {
+            this.exportLoading = true
+            var params = {}
+            params.monthTime = this.quarter
+            params.userId = !!this.person ? this.person : this.userInfo().id
+            params.yearTime = 2022
+            downFile('/designer/designerAchievementsController/getDesignerBasicsAndHotVideoInfoExcel', params).then(
+                (res) => {
+                    let blob = new Blob([res], {
+                        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                    })
+                    let downloadElement = document.createElement('a')
+                    let href = window.URL.createObjectURL(blob) //创建下载的链接
+                    downloadElement.href = href
+                    downloadElement.download = '爆款素材数据.xlsx' //下载后文件名
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click() //点击下载
+                    document.body.removeChild(downloadElement) //下载完成移除元素
+                    window.URL.revokeObjectURL(href) //释放掉blob对象
+                    this.exportLoading = false
+                }
+            )
+        },
         getQuarter() {
             var today = new Date()
             var month = today.getMonth() + 1
@@ -552,7 +573,7 @@ export default {
             this.post = null
             this.person = null
             this.dataType = 0
-            
+
             this.ipagination.current = 1
             this.handleSubmit()
         },

+ 55 - 11
src/views/modules/achievements/design/index.vue

@@ -169,6 +169,14 @@
         <a-row :gutter="24" style="margin-top: 20px" id="getWidth">
             <a-col :xl="24">
                 <a-card style="width: 100%" title="设计数据">
+                     <a-button
+                        type="primary"
+                        class="export"
+                        @click="exportExcel"
+                        :loading="exportLoading"
+                        style="margin-bottom: 15px"
+                        >导出报表</a-button
+                    >
                     <a-table
                         size="middle"
                         :dataSource="designTopList"
@@ -195,7 +203,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.quarterCostList.length > 0
-                                            ? t.userFrozen.quarterCostList[0].cost.toFixed(3)
+                                            ? t.userFrozen.quarterCostList[0].cost
                                             : '-'
                                     }}</span
                                 >
@@ -206,7 +214,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.quarterCostList.length >= 0
-                                            ? t.userFrozen.quarterCostList[1].cost.toFixed(3)
+                                            ? t.userFrozen.quarterCostList[1].cost
                                             : '-'
                                     }}</span
                                 >
@@ -215,13 +223,17 @@
                         <a-table-column title="素材总消耗" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{ t.userFrozen.tatolQuarterCost >= 0 ? t.userFrozen.tatolQuarterCost.toFixed(3) : '-' }}</span
+                                    {{
+                                        t.userFrozen.tatolQuarterCost >= 0
+                                            ? t.userFrozen.tatolQuarterCost
+                                            : '-'
+                                    }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column title="管理消耗" align="center">
                             <template slot-scope="t, r, i">
-                                <span> {{ !!t.userFrozen.leaderCost ? t.userFrozen.leaderCost.toFixed(3) : '-' }}</span>
+                                <span> {{ !!t.userFrozen.leaderCost ? t.userFrozen.leaderCost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column title="是否达标" align="center">
@@ -266,7 +278,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.commissionList.length > 0
-                                            ? t.userFrozen.commissionList[0].commission.toFixed(3)
+                                            ? t.userFrozen.commissionList[0].commission
                                             : '-'
                                     }}</span
                                 >
@@ -277,7 +289,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.commissionList.length > 0
-                                            ? t.userFrozen.commissionList[1].commission.toFixed(3)
+                                            ? t.userFrozen.commissionList[1].commission
                                             : '-'
                                     }}</span
                                 >
@@ -288,7 +300,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.commissionList.length > 0
-                                            ? t.userFrozen.commissionList[2].commission.toFixed(3)
+                                            ? t.userFrozen.commissionList[2].commission
                                             : '-'
                                     }}</span
                                 >
@@ -298,7 +310,11 @@
                         <a-table-column title="季度提成汇总" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{ t.userFrozen.totalCommission >= 0 ? t.userFrozen.totalCommission.toFixed(3) : '-' }}</span
+                                    {{
+                                        t.userFrozen.totalCommission >= 0
+                                            ? t.userFrozen.totalCommission
+                                            : '-'
+                                    }}</span
                                 >
                             </template>
                         </a-table-column>
@@ -307,7 +323,7 @@
                                 <span>
                                     {{
                                         t.userFrozen.designerLeaderCommission >= 0
-                                            ? t.userFrozen.designerLeaderCommission.toFixed(3)
+                                            ? t.userFrozen.designerLeaderCommission
                                             : '-'
                                     }}</span
                                 >
@@ -317,7 +333,9 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.userFrozen.userHappyGetMoney >= 0 ? t.userFrozen.userHappyGetMoney.toFixed(3) : '-'
+                                        t.userFrozen.userHappyGetMoney >= 0
+                                            ? t.userFrozen.userHappyGetMoney
+                                            : '-'
                                     }}</span
                                 >
                             </template>
@@ -350,7 +368,7 @@
                                         t.userFrozen.paySalary == 0
                                             ? 0
                                             : t.userFrozen.userHappyGetMoney >= 0
-                                            ? t.userFrozen.userHappyGetMoney.toFixed(3)
+                                            ? t.userFrozen.userHappyGetMoney
                                             : 0
                                     }}</span
                                 >
@@ -466,6 +484,7 @@ import Treeselect from '@riophae/vue-treeselect' // 引用树组件
 import '@riophae/vue-treeselect/dist/vue-treeselect.css' //树组件样式
 import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' //树组件参数
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+import { downFile } from '@/api/manage'
 const columnsFixd = [
     {
         title: '广告组名称',
@@ -643,6 +662,7 @@ export default {
             options: [],
             personList: [],
             userId: undefined,
+            exportLoading:false,
         }
     },
     watch: {
@@ -665,6 +685,30 @@ export default {
     },
     methods: {
         moment,
+        exportExcel() {
+            this.exportLoading = true
+            var params = {}
+            params.yearTime = 2022
+            params.monthTime = this.quarter
+            params.role = this.post
+            params.userId = !!this.person ? this.person : this.userInfo().id
+            downFile('/designer/designerAchievementsController/getDesignerBasicsAndAchAndComInfoExcel', params).then(
+                (res) => {
+                    let blob = new Blob([res], {
+                        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                    })
+                    let downloadElement = document.createElement('a')
+                    let href = window.URL.createObjectURL(blob) //创建下载的链接
+                    downloadElement.href = href
+                    downloadElement.download = '爆款素材数据.xlsx' //下载后文件名
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click() //点击下载
+                    document.body.removeChild(downloadElement) //下载完成移除元素
+                    window.URL.revokeObjectURL(href) //释放掉blob对象
+                    this.exportLoading = false
+                }
+            )
+        },
         editPuyData(item) {
             console.log(item)
             this.editData = item

+ 70 - 148
src/views/modules/achievements/design/information.vue

@@ -161,6 +161,14 @@
         <a-row :gutter="24" style="margin-top: 20px" id="getWidth">
             <a-col :xl="24">
                 <a-card style="width: 100%" title="设计数据">
+                    <a-button
+                        type="primary"
+                        class="export"
+                        @click="exportExcel"
+                        :loading="exportLoading"
+                        style="margin-bottom: 15px"
+                        >导出报表</a-button
+                    >
                     <!-- :columns="columns" -->
                     <a-table
                         size="middle"
@@ -187,31 +195,17 @@
 
                         <a-table-column :title="oneKsClip" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[0].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[0].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="oneKsShot" align="center">
                             <template slot-scope="t, r, i">
-                                <span>{{
-                                    t.achievementsMap
-                                        ? showTypeCost('shot', t.achievementsMap.kuaiShouData[0].kuaiShou)[0].cost
-                                        : '-'
-                                }}</span>
+                                <span>{{ t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[0].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="oneKsPlan" align="center">
                             <template slot-scope="t, r, i">
-                                <span>{{
-                                    t.achievementsMap
-                                        ? showTypeCost('plan', t.achievementsMap.kuaiShouData[0].kuaiShou)[0].cost
-                                        : '-'
-                                }}</span>
+                                <span>{{ t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[0].cost : '-' }}</span>
                             </template>
                         </a-table-column>
 
@@ -219,10 +213,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[0].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[0].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -231,10 +222,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.kuaiShouData[0].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[0].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -243,10 +231,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.kuaiShouData[0].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[0].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -254,45 +239,24 @@
 
                         <a-table-column :title="twoKsClip" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[1].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[1].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoKsShot" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.kuaiShouData[1].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[1].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoKsPlan" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.kuaiShouData[1].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[1].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoKsClipMoney" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[1].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -301,10 +265,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.kuaiShouData[1].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -313,10 +274,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.kuaiShouData[1].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -324,45 +282,24 @@
 
                         <a-table-column :title="threeKsClip" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[2].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[2].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeKsShot" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.kuaiShouData[2].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[2].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeKsPlan" align="center">
                             <template slot-scope="t, r, i">
-                                <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.kuaiShouData[2].kuaiShou)[0].cost
-                                            : '-'
-                                    }}</span
-                                >
+                                <span> {{ t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[2].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeKsClipMoney" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.kuaiShouData[2].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('clip', t.kuaiShouData)[2].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -371,10 +308,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.kuaiShouData[2].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('shot', t.kuaiShouData)[2].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -383,10 +317,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.kuaiShouData[2].kuaiShou)[0]
-                                                  .commission
-                                            : '-'
+                                        t.kuaiShouData ? showTypeCost('plan', t.kuaiShouData)[2].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -395,29 +326,21 @@
                         <a-table-column :title="oneTtClip" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.byteDanceData[0].byteDance)[0].cost
-                                            : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[0].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column :title="oneTtShot" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('shot', t.achievementsMap.byteDanceData[0].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[0].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column :title="oneTtPlan" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('plan', t.achievementsMap.byteDanceData[0].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[0].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
@@ -425,9 +348,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.byteDanceData[0].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[0].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -436,9 +357,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.byteDanceData[0].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[0].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -446,7 +365,7 @@
                         <a-table-column :title="oneTtPlanMoney" align="center">
                             <template slot-scope="t, r, i">
                                 <span>{{
-                                    t.achievementsMap ? showTypeCost('plan', t.achievementsMap.byteDanceData[0].byteDance)[0].commission : '-'
+                                    t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[0].commission : '-'
                                 }}</span>
                             </template>
                         </a-table-column>
@@ -454,27 +373,21 @@
                         <a-table-column :title="twoTtClip" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('clip', t.achievementsMap.byteDanceData[1].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[1].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoTtShot" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ?showTypeCost('shot', t.achievementsMap.byteDanceData[1].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[1].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column :title="twoTtPlan" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('plan', t.achievementsMap.byteDanceData[1].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[1].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
@@ -482,9 +395,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.byteDanceData[1].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -493,9 +404,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.byteDanceData[1].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -504,9 +413,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('plan', t.achievementsMap.byteDanceData[1].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[1].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -515,25 +422,19 @@
                         <a-table-column :title="threeTtClip" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('clip', t.achievementsMap.byteDanceData[2].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[2].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeTtShot" align="center">
                             <template slot-scope="t, r, i">
-                                <span>{{
-                                    t.achievementsMap ? showTypeCost('shot', t.achievementsMap.byteDanceData[2].byteDance)[0].cost : '-'
-                                }}</span>
+                                <span>{{ t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[2].cost : '-' }}</span>
                             </template>
                         </a-table-column>
                         <a-table-column :title="threeTtPlan" align="center">
                             <template slot-scope="t, r, i">
                                 <span>
-                                    {{
-                                        t.achievementsMap ? showTypeCost('plan', t.achievementsMap.byteDanceData[2].byteDance)[0].cost : '-'
-                                    }}</span
+                                    {{ t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[2].cost : '-' }}</span
                                 >
                             </template>
                         </a-table-column>
@@ -541,9 +442,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('clip', t.achievementsMap.byteDanceData[2].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('clip', t.byteDanceData)[2].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -552,9 +451,7 @@
                             <template slot-scope="t, r, i">
                                 <span>
                                     {{
-                                        t.achievementsMap
-                                            ? showTypeCost('shot', t.achievementsMap.byteDanceData[2].byteDance)[0].commission
-                                            : '-'
+                                        t.byteDanceData ? showTypeCost('shot', t.byteDanceData)[2].commission : '-'
                                     }}</span
                                 >
                             </template>
@@ -562,7 +459,7 @@
                         <a-table-column :title="threeTtPlanMoney" align="center">
                             <template slot-scope="t, r, i">
                                 <span>{{
-                                    t.achievementsMap ? showTypeCost('plan', t.achievementsMap.byteDanceData[2].byteDance)[0].commission : '-'
+                                    t.byteDanceData ? showTypeCost('plan', t.byteDanceData)[2].commission : '-'
                                 }}</span>
                             </template>
                         </a-table-column>
@@ -580,6 +477,7 @@ import Trend from '@/components/Trend'
 import { mapGetters } from 'vuex'
 import Treeselect from '@/views/modules/Statistics/components/Treeselect.vue'
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+import { downFile } from '@/api/manage'
 const columnsFixd = [
     {
         title: '广告组名称',
@@ -670,6 +568,7 @@ export default {
             chartList: [],
             videoList: [],
             designTopList: [],
+            exportLoading: false,
             target: '',
             order: 'descend',
             columns: [...columnsFixd, ...ksColumns], // table的表头
@@ -758,7 +657,30 @@ export default {
         filterOption(input, option) {
             return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
         },
-        showTypeCost(type, data) {
+        exportExcel() {
+            this.exportLoading = true
+            var params = {}
+            params.monthTime = this.quarter
+            params.userId = !!this.person ? this.person : this.userInfo().id
+            params.yearTime = 2022
+            downFile('/designer/designerAchievementsController/getDesignerBasicsAndAchExcel', params).then(
+                (res) => {
+                    let blob = new Blob([res], {
+                        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                    })
+                    let downloadElement = document.createElement('a')
+                    let href = window.URL.createObjectURL(blob) //创建下载的链接
+                    downloadElement.href = href
+                    downloadElement.download = '基础数据.xlsx' //下载后文件名
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click() //点击下载
+                    document.body.removeChild(downloadElement) //下载完成移除元素
+                    window.URL.revokeObjectURL(href) //释放掉blob对象
+                    this.exportLoading = false
+                }
+            )
+        },
+        showTypeCost(type, data, time) {
             var cost = data.filter((item) => {
                 return item.type == type
             })

+ 46 - 4
src/views/modules/achievements/operateData.vue

@@ -172,6 +172,14 @@
             <a-col :xl="24">
                 <a-card style="width: 100%" title="运营数据">
                     <!-- :columns="columns" -->
+                    <a-button
+                        type="primary"
+                        class="export"
+                        @click="exportExcel"
+                        :loading="exportLoading"
+                        style="margin-bottom: 15px"
+                        >导出报表</a-button
+                    >
                     <a-table
                         size="middle"
                         :dataSource="designTopList"
@@ -198,12 +206,19 @@
                         </a-table-column>
                         <a-table-column :title="threetotalCharge" data-index="3totalCharge" align="center">
                         </a-table-column>
-                        <a-table-column :title="oneKFCharge" data-index="1KFCharge" align="center" v-if="showKf"> </a-table-column>
-                        <a-table-column :title="twoKFCharge" data-index="2KFCharge" align="center" v-if="showKf"> </a-table-column>
-                        <a-table-column :title="threeKFCharge" data-index="3KFCharge" align="center" v-if="showKf"> </a-table-column>
+                        <a-table-column :title="oneKFCharge" data-index="1KFCharge" align="center" v-if="showKf">
+                        </a-table-column>
+                        <a-table-column :title="twoKFCharge" data-index="2KFCharge" align="center" v-if="showKf">
+                        </a-table-column>
+                        <a-table-column :title="threeKFCharge" data-index="3KFCharge" align="center" v-if="showKf">
+                        </a-table-column>
                         <a-table-column :title="oneFWCharge" data-index="1FWCharge" align="center"> </a-table-column>
                         <a-table-column :title="twoFWCharge" data-index="2FWCharge" align="center"> </a-table-column>
                         <a-table-column :title="threeFWCharge" data-index="3FWCharge" align="center"> </a-table-column>
+                        <a-table-column :title="oneJLCharge" data-index="1JLCharge" align="center"> </a-table-column>
+                        <a-table-column :title="twoJLCharge" data-index="2JLCharge" align="center"> </a-table-column>
+                        <a-table-column :title="threeJLCharge" data-index="3JLCharge" align="center"> </a-table-column>
+
                         <a-table-column title="离职时间" data-index="quitTime" align="center">
                             <template slot-scope="t, r, i">
                                 <span>{{ !!t ? t : '-' }}</span>
@@ -223,6 +238,7 @@ import Trend from '@/components/Trend'
 import { mapGetters } from 'vuex'
 import Treeselect from '@/views/modules/Statistics/components/Treeselect.vue'
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+import { downFile } from '@/api/manage'
 const columnsFixd = [
     {
         title: '广告组名称',
@@ -258,6 +274,7 @@ export default {
     },
     data() {
         return {
+            exportLoading: false,
             visible: false, //自定义页面的打开
             listNum: [],
             spinningMaterialGroupData: false,
@@ -372,6 +389,29 @@ export default {
     },
     methods: {
         ...mapGetters(['userInfo']),
+        //导出报表
+        exportExcel() {
+            this.exportLoading = true
+            var params = {}
+            params.time = this.quarter
+            params.mediaId = this.mediaDimension === 'a' ? 1 : 2
+            params.role = this.post
+            params.userId = this.person
+            downFile('/kuaishou/operationReport/queryMonthlyDataExcel', params).then((res) => {
+                let blob = new Blob([res], {
+                    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                })
+                let downloadElement = document.createElement('a')
+                let href = window.URL.createObjectURL(blob) //创建下载的链接
+                downloadElement.href = href
+                downloadElement.download = '绩效数据.xlsx' //下载后文件名
+                document.body.appendChild(downloadElement)
+                downloadElement.click() //点击下载
+                document.body.removeChild(downloadElement) //下载完成移除元素
+                window.URL.revokeObjectURL(href) //释放掉blob对象
+                this.exportLoading = false
+            })
+        },
         filterOption(input, option) {
             return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
         },
@@ -496,6 +536,8 @@ export default {
                     this.ipagination.total = res.result.total || 0
                 } else {
                     this.designTopLoading = false
+                    this.designTopList = []
+                    this.$message.error(res.message)
                 }
             })
         },
@@ -592,7 +634,7 @@ export default {
 .materialReport {
     .material-report-card-two {
         width: 25%;
-        ::v-deep * {
+        z ::v-deep * {
             border: 0;
         }
     }

+ 32 - 3
src/views/modules/achievements/operateList.vue

@@ -176,6 +176,9 @@
                     </a-button>
                     <a-button type="primary" @click="addCompensation" style="margin: 0 15px 15px"> 新增赔付 </a-button>
                     <a-button type="primary" @click="compensationShow" style="margin-bottom: 15px"> 赔付列表 </a-button>
+                     <a-button type="primary" class="export" @click="exportExcel" :loading="exportLoading" style="margin-bottom: 15px;margin-left:15px"
+                        >导出报表</a-button
+                    >
                     <!-- :columns="columns" -->
                     <a-table
                         size="middle"
@@ -190,7 +193,7 @@
                     >
                         <a-table-column title="运营" data-index="userName" :width="120" align="center" fixed="left">
                         </a-table-column>
-                        <a-table-column title="岗位" data-index="roleName" :width="120" align="center"  fixed="left">
+                        <a-table-column title="岗位" data-index="roleName" :width="120" align="center" fixed="left">
                         </a-table-column>
                         <a-table-column title="晋升时间" data-index="upTime" align="center">
                             <template slot-scope="t, r, i">
@@ -218,8 +221,7 @@
                         <a-table-column title="助理消耗" data-index="assistantCharge" align="center"> </a-table-column>
                         <a-table-column title="服务消耗提成" data-index="FWChargeCommission" align="center">
                         </a-table-column>
-                        
-                        
+
                         <a-table-column
                             title="框返消耗提成"
                             data-index="KFChargeCommission"
@@ -580,6 +582,7 @@ import { mapGetters } from 'vuex'
 import Treeselect from '@riophae/vue-treeselect' // 引用树组件
 import '@riophae/vue-treeselect/dist/vue-treeselect.css' //树组件样式
 import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' //树组件参数
+import { downFile } from '@/api/manage'
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
 const columnsFixd = [
     {
@@ -616,6 +619,7 @@ export default {
     },
     data() {
         return {
+            exportLoading:false,
             editPuy: false,
             editData: null,
             formEdit: this.$form.createForm(this),
@@ -1108,6 +1112,29 @@ export default {
                     // });
                 })
         },
+        //导出报表
+        exportExcel() {
+            this.exportLoading = true
+            var params = {}
+            params.time = this.quarter
+            params.mediaId = this.mediaDimension === 'a' ? 1 : 2
+            params.role = this.post
+            params.userId = this.person
+            downFile('/kuaishou/operationReport/queryQuarterlyDataExcel', params).then((res) => {
+                let blob = new Blob([res], {
+                    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                })
+                let downloadElement = document.createElement('a')
+                let href = window.URL.createObjectURL(blob) //创建下载的链接
+                downloadElement.href = href
+                downloadElement.download = '绩效报表.xlsx' //下载后文件名
+                document.body.appendChild(downloadElement)
+                downloadElement.click() //点击下载
+                document.body.removeChild(downloadElement) //下载完成移除元素
+                window.URL.revokeObjectURL(href) //释放掉blob对象
+                this.exportLoading = false
+            })
+        },
         getTableMediaList(data) {
             this.designTopLoading = true
             var params = {}
@@ -1152,6 +1179,8 @@ export default {
                     // this.ipagination.total = res.result.total || 0
                 } else {
                     this.designTopLoading = false
+                    this.designTopList = []
+                    this.$message.error(res.message)
                 }
             })
         },

+ 16 - 0
src/views/modules/columnConst/accountConst.js

@@ -1024,6 +1024,22 @@ export const KScustomFields = [
         sorter: () => { }
       },
       {
+        title: '新增付费人数成本',
+        dataIndex: 'eventNewUserPayCost',
+        align: 'center',
+
+        scopedSlots: { customRender: 'eventNewUserPayCost' },
+        sorter: () => { }
+      },
+      {
+        title: '新增付费人数',
+        dataIndex: 'eventNewUserPay',
+        align: 'center',
+
+        scopedSlots: { customRender: 'eventNewUserPay' },
+        sorter: () => { }
+      },
+      {
         title: '安卓下载完成数',
         dataIndex: 'downloadFinish',
         tip: '安卓端调起下载器并完成下载的次数',

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2097 - 0
src/views/modules/policy-management/reimbursement.vue


+ 784 - 0
src/views/modules/policy-management/reimbursementAdd.vue

@@ -0,0 +1,784 @@
+<style scoped>
+::v-deep .ant-steps-dot .ant-steps-item-content {
+    width: auto;
+}
+::v-deep .ant-steps-dot .ant-steps-item-active .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+    background: rgb(11, 190, 135);
+    width: 15px;
+    height: 15px;
+    /* margin-top: 5px; */
+    margin-left: 2px;
+}
+::v-deep .endStatus .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+    background: #1890ff !important;
+    width: 15px;
+    height: 15px;
+    /* margin-top: 5px; */
+    /* margin-left: 2px; */
+}
+::v-deep .ant-steps-dot .ant-steps-item-icon {
+    width: 15px;
+    height: 15px;
+    margin-top: 5px;
+    margin-left: -4px;
+}
+::v-deep .ant-form-item {
+    width: 100%;
+}
+::v-deep .look-show .ant-form-item-label {
+    font-size: 20px;
+}
+::v-deep .look-show .ant-form-item-control-wrapper {
+    font-size: 16px;
+}
+</style>
+<template>
+    <div class="reimbursement">
+        <div class="chartBox">
+            <a-row :gutter="20">
+                <a-col :sm="24" style="margin-bottom: 20px; z-index: 10">
+                    <a-card
+                        class="search-box step-jump"
+                        title="个人信息"
+                        v-if="!!$route.query.type && ($route.query.type == 'add' || $route.query.type == 'edit')"
+                    >
+                        <a-form
+                            ref="formRef"
+                            name="advanced_search"
+                            class="ant-advanced-search-form"
+                            :form="form"
+                            layout="inline"
+                            :label-col="labelCol"
+                            :wrapper-col="wrapperCol"
+                        >
+                            <a-row :gutter="24">
+                                <a-col :span="6">
+                                    <a-form-item label="申请人">
+                                        {{ userInfo().realname }}
+                                    </a-form-item>
+                                </a-col>
+                                <a-col :span="6">
+                                    <a-form-item label="申请日期">
+                                        <a-month-picker
+                                            v-decorator="[
+                                                'statDate',
+                                                {
+                                                    rules: [{ required: true, message: '请选择申请日期' }],
+                                                    initialValue: moment().format('YYYY-MM'),
+                                                },
+                                            ]"
+                                            format="YYYY-MM"
+                                        />
+                                    </a-form-item>
+                                </a-col>
+                                <a-col :span="6">
+                                    <a-form-item label="部门">
+                                        <j-tree-select
+                                            v-decorator="[
+                                                'departId',
+                                                {
+                                                    rules: [{ required: true, message: '请选择部门' }],
+                                                },
+                                            ]"
+                                            placeholder="请选择部门"
+                                            dict="sys_depart,depart_name,id"
+                                            pidField="parent_id"
+                                            style="width: 200px"
+                                        >
+                                        </j-tree-select>
+                                    </a-form-item>
+                                </a-col>
+                            </a-row>
+                            <a-row :gutter="24">
+                                <a-col :span="6">
+                                    <a-form-item label="公司主体">
+                                        <a-select
+                                            v-decorator="[
+                                                'companyId',
+                                                {
+                                                    rules: [{ required: true, message: '请选择公司' }],
+                                                },
+                                            ]"
+                                            style="width: 200px"
+                                            :filterOption="filterOption"
+                                            showSearch
+                                            allowClear
+                                            labelInValue
+                                        >
+                                            <a-select-option
+                                                v-for="(item, index) in dataDimensionList"
+                                                :key="index + 1"
+                                                :value="item.companyId"
+                                            >
+                                                {{ item.companyName }}
+                                            </a-select-option>
+                                        </a-select>
+                                    </a-form-item>
+                                </a-col>
+                                <a-col :span="6">
+                                    <a-form-item label="媒体">
+                                        <a-select
+                                            v-decorator="[
+                                                'media',
+                                                {
+                                                    rules: [{ required: true, message: '请选择媒体' }],
+                                                },
+                                            ]"
+                                            style="width: 200px"
+                                            :filterOption="filterOption"
+                                            showSearch
+                                            allowClear
+                                            placeholder="请选择媒体"
+                                        >
+                                            <a-select-option value="快手"> 快手 </a-select-option>
+                                            <a-select-option value="聚星"> 聚星 </a-select-option>
+                                            <a-select-option value="磁力金牛"> 磁力金牛 </a-select-option>
+                                            <a-select-option value="头条"> 头条 </a-select-option>
+                                            <a-select-option value="头条千川"> 头条千川 </a-select-option>
+                                        </a-select>
+                                    </a-form-item>
+                                </a-col>
+                                <a-col :span="6" v-if="expenseList.length > 0">
+                                    <a-form-item v-bind="tailFormItemLayout">
+                                        <a-button type="primary" @click="handleSubmit">提交</a-button>
+                                    </a-form-item>
+                                </a-col>
+                            </a-row>
+                        </a-form>
+                    </a-card>
+                    <a-card class="search-box step-jump look-show" title="个人信息" v-else>
+                        <a-form layout="inline" :label-col="labelCol" :wrapper-col="wrapperCol">
+                            <a-row :gutter="24" v-if="lookData">
+                                <a-col :span="9">
+                                    <a-form-item label="公司主体"> {{ lookData.companyName }}</a-form-item>
+                                </a-col>
+                                <a-col :span="9">
+                                    <a-form-item label="媒体"> {{ lookData.media }}</a-form-item>
+                                </a-col>
+                                <a-col :span="9">
+                                    <a-form-item label="申请时间"> {{ lookData.statDate }}</a-form-item>
+                                </a-col>
+                                <a-col :span="9">
+                                    <a-form-item label="部门"> {{ lookData.departName }}</a-form-item>
+                                </a-col>
+                                <a-col :span="9">
+                                    <a-form-item label="申请人"> {{ lookData.userName }}</a-form-item>
+                                </a-col>
+                            </a-row>
+                        </a-form>
+                    </a-card>
+                </a-col>
+                <a-col :sm="24" style="margin-bottom: 20px">
+                    <a-card class="search-box step-jump" title="费用信息">
+                        <a-button type="primary" @click="policyOperationStatus = true" style="margin-bottom: 15px"
+                            >新增费用信息</a-button
+                        >
+                        <div v-if="lookData" style="display: flex">
+                            <h2 style="margin-right: 50px">报销金额:{{ lookData.amount }}</h2>
+                            <h2>发票总数: {{ lookData.invoices }}</h2>
+                        </div>
+                        <a-table
+                            :columns="expenseColumns"
+                            :data-source="expenseList"
+                            bordered
+                            tableLayout="auto"
+                            :pagination="false"
+                            :loading="expenseLoading"
+                            style="word-break: break-all"
+                        >
+                            <span slot="project" slot-scope="text, record">
+                                {{ projectName(text) }}
+                            </span>
+                            <span slot="fileUrls" slot-scope="text, record">
+                                <div v-if="!!text">
+                                    <a @click="showFileOk(record)">查看</a>
+                                </div>
+                                <div v-else>-</div>
+                            </span>
+                            <span slot="auditDescription" slot-scope="text, record">
+                                <div v-if="!!text">
+                                    <a @click="reasonReject(record)">查看</a>
+                                    <!-- <div v-html="refuseReasonImage" style="width: 100%"></div> -->
+                                </div>
+                                <div v-else>-</div>
+                            </span>
+
+                            <div slot="action" slot-scope="text, record">
+                                <span v-if="!$route.query.person || $route.query.person == 1">
+                                    <a
+                                        @click="editProject(record)"
+                                        :disabled="
+                                            !!$route.query.type &&
+                                            ($route.query.type == 'look' || $route.query.type == 'add')
+                                        "
+                                        >编辑</a
+                                    >
+                                    <a-divider type="vertical" />
+                                    <a-popconfirm title="确定删除吗?" @confirm="() => deleteProject(record)">
+                                        <a
+                                            :disabled="
+                                                !!$route.query.type &&
+                                                ($route.query.type == 'look' || $route.query.type == 'add')
+                                            "
+                                            >删除</a
+                                        >
+                                    </a-popconfirm>
+                                </span>
+                                <span v-else>
+                                    <a
+                                        @click="editStatusOpen(record)"
+                                        :disabled="
+                                            !!$route.query.person &&
+                                            ($route.query.person == '1' || $route.query.person == '3')
+                                        "
+                                        >驳回</a
+                                    >
+                                </span>
+                            </div>
+                        </a-table>
+                    </a-card>
+                </a-col>
+            </a-row>
+            <div
+                style="width: 100%; display: flex; justify-content: flex-end"
+                v-if="!!$route.query.person && $route.query.person != '1'"
+            >
+                <a-button type="primary" @click="bfOk" :disabled="!disabledJudge||$route.query.person == '3'">部分通过</a-button>
+                <a-button type="primary" @click="refuse" style="margin: 0 15px" :disabled="$route.query.person == '3'">审核拒绝</a-button>
+                <a-button type="primary" @click="allOk" :disabled="disabledJudge||$route.query.person == '3'">审核通过</a-button>
+            </div>
+        </div>
+
+        <a-modal v-if="showFile" title="查看附件" :visible="showFile" :footer="null" @cancel="showFile = false">
+            <div v-if="fileList">
+                <img :src="item" v-for="(item, index) in JSON.parse(fileList)" alt="" style="width: 150px" />
+            </div>
+        </a-modal>
+
+        <a-modal
+            v-if="reasonRejectVisible"
+            title="驳回原因"
+            :visible="reasonRejectVisible"
+            :footer="null"
+            @cancel="reasonRejectVisible = false"
+        >
+            <div v-if="reasonRejectData">
+                <div v-html="reasonRejectData" style="width: 100%"></div>
+            </div>
+        </a-modal>
+        <!-- 新增、编辑政策 -->
+        <a-modal
+            v-if="policyOperationStatus"
+            dialog-class="policy-operation-class"
+            :title="addType === 'add' ? '新增费用' : '编辑费用'"
+            :visible="policyOperationStatus"
+            :confirmLoading="confirmLoading"
+            @ok="handlePolicyOperationSure"
+            @cancel="handlePolicyOperationCancel"
+        >
+            <div>
+                <a-form-model
+                    class="policy-operation-form"
+                    ref="policyOperationForm"
+                    :model="policyOperationForm"
+                    :rules="policyOperationRules"
+                    :label-col="labelCol"
+                    :wrapper-col="wrapperCol"
+                >
+                    <a-row class="policy-operation-form-left">
+                        <a-form-model-item label="报销项目" prop="project">
+                            <a-select v-model="policyOperationForm.project" placeholder="请选择报销项目" allow-clear>
+                                <a-select-option
+                                    :value="item.dcode"
+                                    v-for="(item, index) in projectList"
+                                    :key="index"
+                                    >{{ item.dname }}</a-select-option
+                                >
+                            </a-select>
+                        </a-form-model-item>
+                        <a-form-model-item
+                            label="费用"
+                            prop="amount"
+                            :rules="{
+                                required: true,
+                                message: '请输入报销费用',
+                                trigger: 'blur',
+                            }"
+                        >
+                            <a-input-number v-model="policyOperationForm.amount" :step="0.01" :precision="2" />
+                        </a-form-model-item>
+                        <a-form-model-item
+                            label="费用产生日期"
+                            prop="statDate"
+                            :rules="{
+                                required: true,
+                                message: '费用产生日期必填',
+                                trigger: 'change',
+                            }"
+                        >
+                            <a-month-picker v-model="policyOperationForm.statDate" format="YYYY-MM" />
+                        </a-form-model-item>
+                        <a-form-model-item label="附件">
+                            <uploadFile
+                                :value.sync="policyOperationForm.fileUrls"
+                                :multiple="true"
+                                @overUpload="overUpload"
+                                :fileCount="10"
+                                uploadType="image"
+                            />
+                        </a-form-model-item>
+                    </a-row>
+                    <a-row class="policy-operation-form-right">
+                        <a-form-model-item
+                            label="报销类别"
+                            prop="type"
+                            :rules="{
+                                required: true,
+                                message: '报销类别必选',
+                                trigger: 'change',
+                            }"
+                        >
+                            <a-select v-model="policyOperationForm.type" placeholder="请选择报销类别" allow-clear>
+                                <a-select-option value="报销">报销</a-select-option>
+                            </a-select>
+                        </a-form-model-item>
+                        <a-form-model-item
+                            label="发票张数"
+                            prop="invoices"
+                            :rules="{
+                                required: true,
+                                message: '发票张数必填',
+                                trigger: 'blur',
+                            }"
+                        >
+                            <a-input-number v-model="policyOperationForm.invoices" :step="1" :precision="0" />
+                        </a-form-model-item>
+
+                        <a-form-model-item label="备注" prop="remarks">
+                            <a-input v-model="policyOperationForm.remarks" placeholder="请输入备注" allow-clear />
+                        </a-form-model-item>
+                    </a-row>
+                </a-form-model>
+            </div>
+        </a-modal>
+
+        <!-- 驳回原因 -->
+
+        <a-modal
+            v-if="rejectVisible"
+            title="驳回原因"
+            :visible="rejectVisible"
+            @cancel="rejectVisible = false"
+            @ok="auditDescriptionOk"
+        >
+            <j-code-editor language="javascript" v-model="auditDescription" style="min-height: 100px" />
+        </a-modal>
+    </div>
+</template>
+<script>
+import moment from 'moment'
+
+import { getAction, postAction, downFile } from '@/api/manage'
+import { mapGetters } from 'vuex'
+import { urlAcount } from './policy-management-server.js'
+import pick from 'lodash.pick'
+import JTreeSelect from '@/components/jeecg/JTreeSelect'
+import uploadFile from '@/components/uploadFile.vue'
+import { defineComponent, ref } from 'vue'
+import JCodeEditor from '@/components/jeecg/JEditor'
+export default {
+    name: 'policy-management-reimbursement-add',
+    data() {
+        return {
+            form: this.$form.createForm(this),
+            showFile: false,
+            fileList: null,
+            labelCol: {
+                span: 8,
+            },
+            wrapperCol: {
+                span: 16,
+            },
+            tailFormItemLayout: {
+                wrapperCol: {
+                    sm: {
+                        span: 24,
+                        offset: 8,
+                    },
+                },
+            },
+            dataDimensionList: [],
+            expenseColumns: [
+                {
+                    title: '报销项目',
+                    align: 'center',
+                    dataIndex: 'project',
+                    scopedSlots: { customRender: 'project' },
+                },
+                {
+                    title: '报销类别',
+                    align: 'center',
+                    dataIndex: 'type',
+                },
+                {
+                    title: '费用金额',
+                    align: 'center',
+                    dataIndex: 'amount',
+                    scopedSlots: { customRender: 'amount' },
+                },
+                {
+                    title: '产生日期',
+                    align: 'center',
+                    dataIndex: 'statDate',
+                    scopedSlots: { customRender: 'statDate' },
+                },
+                {
+                    title: '发票张数',
+                    align: 'center',
+                    dataIndex: 'invoices',
+                    scopedSlots: { customRender: 'invoices' },
+                },
+                {
+                    title: '备注',
+                    align: 'center',
+                    ellipsis: true,
+                    dataIndex: 'remarks',
+                    scopedSlots: { customRender: 'remarks' },
+                    width: 120,
+                },
+                {
+                    title: '附件',
+                    align: 'center',
+                    dataIndex: 'fileUrls',
+                    scopedSlots: { customRender: 'fileUrls' },
+                },
+                {
+                    title: '驳回原因',
+                    align: 'center',
+                    dataIndex: 'auditDescription',
+                    scopedSlots: { customRender: 'auditDescription' },
+                },
+
+                {
+                    title: '操作',
+                    align: 'center',
+                    dataIndex: 'action',
+                    scopedSlots: { customRender: 'action' },
+                },
+            ],
+            expenseList: [],
+            expenseLoading: false,
+
+            addType: 'add',
+            projectList: [],
+            policyOperationStatus: false,
+            confirmLoading: false,
+            policyOperationRules: {
+                project: [{ required: true, message: '请选择报销项目', trigger: 'change' }],
+            },
+            policyOperationForm: {},
+
+            expenseIds: [],
+            lookData: null,
+
+            rejectVisible: false,
+            auditDescription: null,
+            rejectId: null,
+
+            reasonRejectVisible: false,
+            reasonRejectData: null,
+        }
+    },
+    components: {
+        JTreeSelect,
+        uploadFile,
+        JCodeEditor,
+    },
+    created() {
+        this.getCompanyList()
+        this.getProjectList()
+        let editRecordId = this.$route.query.id
+        let editRecordType = this.$route.query.type
+        if (editRecordId) {
+            this.getDetail(editRecordId)
+        } else {
+        }
+    },
+    computed: {
+        disabledJudge() {
+            var index = this.expenseList.findIndex((item) => {
+                return item.status == '0'
+            })
+            return index > -1 ? true : false
+        },
+    },
+    mounted() {},
+    methods: {
+        ...mapGetters(['userInfo']),
+        moment,
+        getDetail(id) {
+            this.getAction('/reimburse/apply/queryById', { id: id }).then((res) => {
+                if (res.success) {
+                    this.expenseIds = JSON.parse(res.result.ids)
+                    if (this.$route.query.type == 'look') {
+                        this.lookData = res.result
+                    } else {
+                        var data = res.result
+                        data.statDate = moment(data.statDate)
+                        data.companyId = { key: data.companyId, label: data.companyName }
+                        this.form.setFieldsValue(pick(res.result, 'departId', 'media', 'statDate', 'companyId'))
+                    }
+
+                    this.getExpenseList(this.expenseIds)
+                }
+            })
+        },
+        showFileOk(item) {
+            this.showFile = true
+            this.fileList = item.fileUrls
+        },
+        reasonReject(item) {
+            this.reasonRejectVisible = true
+            this.reasonRejectData = item.auditDescription
+        },
+        projectName(theme) {
+            if (this.projectList.length > 0) {
+                var data = this.projectList.find((item) => {
+                    return item.dcode == theme
+                })
+                return data.dname
+            }
+        },
+        filterOption(input, option) {
+            return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+        },
+        disabledDate(current) {
+            return current > moment().subtract(1, 'day')
+        },
+        getFormData(form, className) {
+            return this[form].getFieldValue(className)
+        },
+        //获取公司列表
+        getCompanyList() {
+            return new Promise((resolve, reject) => {
+                this.getAction('/reimburse/apply/getCompanyList').then(
+                    (res) => {
+                        if (res.success) {
+                            this.dataDimensionList = res.result
+                            resolve(res.result)
+                        } else {
+                            reject(res.message)
+                        }
+                    }
+                )
+            })
+        },
+        //获取报销项目
+        getProjectList() {
+            return new Promise((resolve, reject) => {
+                this.getAction('/reimburse/dict/list').then((res) => {
+                    if (res.success) {
+                        this.projectList = res.result
+                        resolve(res.result)
+                    } else {
+                        reject(res.message)
+                    }
+                })
+            })
+        },
+        //获取费用信息
+        getExpenseList(ids) {
+            return new Promise((resolve, reject) => {
+                this.expenseLoading = true
+                this.postDataAction('/reimburse/project/queryByIds', ids).then((res) => {
+                    if (res.success) {
+                        this.expenseLoading = false
+                        this.expenseList = res.result
+                        resolve(res.result)
+                    } else {
+                        this.expenseLoading = false
+                        reject(res.message)
+                    }
+                })
+            })
+        },
+        overUpload(urlAll) {
+            console.log(urlAll)
+        },
+        editProject(item) {
+            this.getAction('/reimburse/project/queryById', { id: item.id }).then((res) => {
+                if (res.success) {
+                    this.addType = 'edit'
+                    this.policyOperationStatus = true
+                    var data = res.result
+                    this.policyOperationForm = {
+                        amount: +data.amount,
+                        fileUrls: JSON.parse(data.fileUrls),
+                        id: data.id,
+                        invoices: data.invoices,
+                        project: data.project,
+                        remarks: data.remarks,
+                        statDate: moment(data.statDate),
+                        type: data.type,
+                    }
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        deleteProject(item) {
+            this.getAction('/reimburse/project/delete', { id: item.id }).then((res) => {
+                if (res.success) {
+                    let index = this.expenseIds.indexOf(item.id)
+                    this.expenseIds.splice(index, 1)
+                    this.getExpenseList(this.expenseIds)
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        // 新增费用确定按钮
+        handlePolicyOperationSure() {
+            console.log(this.policyOperationForm)
+
+            var paramsData = { ...this.policyOperationForm }
+            paramsData.statDate = moment(paramsData.statDate).format('YYYY-MM')
+            paramsData.fileUrls = JSON.stringify(paramsData.fileUrls)
+            this.$refs.policyOperationForm.validate((valid) => {
+                if (valid) {
+                    this.confirmLoading = true
+                    if (this.addType === 'add') {
+                        this.handleAddSureBtn(paramsData, '/reimburse/project/add')
+                    } else {
+                        this.handleAddSureBtn(paramsData, '/reimburse/project/edit')
+                    }
+                } else {
+                    return false
+                }
+            })
+        },
+        handleAddSureBtn(data, url) {
+            postAction(url, data)
+                .then((result) => {
+                    if (result.code === 200) {
+                        this.$message.success(result.message)
+                        this.handlePolicyOperationCancel()
+                        this.expenseIds.push(result.result)
+                        this.getExpenseList(this.expenseIds)
+                    } else {
+                        this.$message.error(result.message)
+                    }
+                })
+                .catch((error) => {
+                    console.log(error, 'eeee')
+                })
+                .finally(() => {
+                    this.confirmLoading = false
+                })
+        },
+        // 新增费用取消按钮
+        handlePolicyOperationCancel() {
+            this.policyOperationForm = {}
+            this.policyOperationStatus = false
+        },
+        handleSubmit() {
+            this.form.validateFields((err, values) => {
+                if (!err) {
+                    console.log(values)
+                    let params = {}
+
+                    params.userId = this.userInfo().id
+                    params.departId = values.departId
+                    params.media = values.media
+                    params.statDate = moment(values.statDate).format('YYYY-MM')
+                    params.companyId = values.companyId.key
+                    params.companyName = values.companyId.label.replace(/[\r\n]/g, '').trim()
+                    params.ids = JSON.stringify(this.expenseIds)
+
+                    if (this.$route.query.type == 'edit') {
+                        params.loginId = this.userInfo().id
+                        params.id = this.$route.query.id
+                        this.postDataAction('/reimburse/apply/edit', params).then((res) => {
+                            if (res.success) {
+                            }
+                        })
+                    } else {
+                        this.postDataAction('/reimburse/apply/add', params).then((res) => {
+                            if (res.success) {
+                            }
+                        })
+                    }
+                }
+            })
+        },
+
+        editStatusOpen(item) {
+            this.rejectVisible = true
+            this.rejectId = item.id
+        },
+        auditDescriptionOk() {
+            if (!!this.auditDescription) {
+                var params = {}
+                params.id = this.rejectId
+                params.auditDescription = this.auditDescription
+                params.status = 0
+                this.postDataAction('/reimburse/project/edit', params).then((res) => {
+                    if (res.success) {
+                        this.getExpenseList(this.expenseIds)
+                    } else {
+                        this.$message.error(res.message)
+                    }
+                })
+            } else {
+                this.$message.error('请填写驳回理由')
+            }
+        },
+
+        refuse() {
+            var params ={}
+            params.loginId = this.userInfo().id
+            params.userId = this.lookData.userId
+            params.id = this.$route.query.id
+            params.status = 3
+            this.postDataAction('/reimburse/apply/edit', params).then((res) => {
+                if (res.success) {
+                    this.$message.error(res.message)
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        bfOk() {
+            var params ={}
+            params.loginId = this.userInfo().id
+            params.userId = this.lookData.userId
+            params.id = this.$route.query.id
+            params.status = 5
+            this.postDataAction('/reimburse/apply/edit', params).then((res) => {
+                if (res.success) {
+                    this.$message.error(res.message)
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        allOk() {
+            var params ={}
+            params.loginId = this.userInfo().id
+            params.userId = this.lookData.userId
+            params.id = this.$route.query.id
+            params.status = 2
+            this.postDataAction('/reimburse/apply/edit', params).then((res) => {
+                if (res.success) {
+                    this.$message.error(res.message)
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+    },
+}
+</script>
+<style lang="less" scoped>
+@import 'policy-management';
+</style>

+ 1 - 1
vue.config.js

@@ -105,7 +105,7 @@ module.exports = {
         // target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.43:8806', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://192.168.1.59:7701', //请求本地 需要jeecg-boot后台项目  赵西安
+        // target: 'http://192.168.1.59:7001', //请求本地 需要jeecg-boot后台项目  赵西安
         // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目