朱鑫波 %!s(int64=2) %!d(string=hai) anos
pai
achega
b441e76342

+ 2 - 2
.env.development

@@ -2,7 +2,7 @@
 VUE_APP_BASE_API_URL = http://118.24.244.213:3030
 
 #快手账户报表/素材报表接口地址
-VUE_APP_BASE_REPORT_URL = http://api.tjyourong.com.cn/reportModule
+VUE_APP_BASE_REPORT_URL = http://192.168.0.195:9999/reportModule
 # 测试地址 http://gateway.tjyourong.com.cn
 # 线上地址 http://api.tjyourong.com.cn
 # 宋英豪 http://192.168.1.67:9999
@@ -14,7 +14,7 @@ VUE_APP_BASE_SCRIPT_URL = http://192.168.0.195:31013
 
 
 #素材大盘相关接口
-VUE_APP_BASE_MATERIAL_URL = http://192.168.1.59:9999
+VUE_APP_BASE_MATERIAL_URL = http://192.168.0.195:9999/material
 # 字安接口 http://192.168.1.43:9999
 # 测试环境 http://192.168.0.195:9999
 # 西安环境 http://192.168.1.59:7006

+ 1 - 0
src/components/uploadFile.vue

@@ -29,6 +29,7 @@
     <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
       <img alt="example" style="width: 100%" :src="previewImage" v-if="uploadType == 'image'" />
       <video :src="previewImage" v-else-if="uploadType == 'video'" style="width: 100%" controls="controls">您的浏览器不支持 video 标签。</video>
+      <iframe id="iframeData" v-show="uploadType == 'script'" style="width: 100%; height: 500px" :src="previewImage"></iframe>
     </a-modal>
   </div>
 </template>

+ 197 - 65
src/views/dashboard/onlyOneDashboard.vue

@@ -247,7 +247,7 @@
                 </a-col>
             </a-row>
         </a-spin>
-        <a-row :gutter="24" style="margin-top: 20px" id="getWidth">
+        <a-row :gutter="24" style="margin-top: 20px">
             <a-col :xl="24">
                 <!-- <a-spin :spinning="spinningChart"> -->
                 <a-card style="width: 100%" title="项目数据">
@@ -389,6 +389,58 @@
                 </a-card>
             </a-col>
         </a-row>
+
+        <a-row :gutter="24" style="margin-top: 20px">
+            <a-col :xl="24">
+                <a-card style="width: 100%" title="运营数据详情">
+                    <a-table
+                        size="middle"
+                        :dataSource="operateDetailList"
+                        :columns="operateDetailColumns"
+                        bordered
+                        id="outTable"
+                        :pagination="false"
+                        :loading="operateDetailLoading"
+                        ref="accountTable"
+                        :scroll="{ y: 280 }"
+                    >
+                        <span slot="rate" slot-scope="text, records">
+                            {{ text }}
+                            <a-icon v-if="text && parseFloat(text) > 0" type="caret-up" style="color: #f00" />
+                            <a-icon v-else type="caret-down" style="color: green" />
+                        </span>
+                        <span slot="average" slot-scope="text, records">
+                            {{ (records.totalCost / records.accountNum).toFixed(2) }}
+                        </span>
+                    </a-table>
+                </a-card>
+            </a-col>
+        </a-row>
+
+        <a-row :gutter="24" style="margin-top: 20px">
+            <a-col :xl="24">
+                <a-card style="width: 100%" title="运营组数据">
+                    <a-table
+                        size="middle"
+                        :dataSource="operateGroupList"
+                        :columns="operateGroupColumns"
+                        bordered
+                        id="outTable"
+                        :pagination="false"
+                        :loading="operateGroupLoading"
+                        ref="accountTable"
+                        :scroll="{ y: 280 }"
+                        @change="sort"
+                    >
+                        <span slot="yearOnYearCost" slot-scope="text, records">
+                            {{ text }}
+                            <a-icon v-if="text && parseFloat(text) > 0" type="caret-up" style="color: #f00" />
+                            <a-icon v-else type="caret-down" style="color: green" />
+                        </span>
+                    </a-table>
+                </a-card>
+            </a-col>
+        </a-row>
     </div>
 </template>
 <script>
@@ -680,6 +732,111 @@ export default {
             resetLoading: false,
             searchLoading: false,
             spinningPopularVideoList: false,
+
+            operateDetailList: [],
+            operateDetailColumns: [
+                {
+                    title: '运营人员',
+                    dataIndex: 'userName',
+                    align: 'center',
+                    scopedSlots: { customRender: 'userName' },
+                },
+                {
+                    title: '项目数量',
+                    dataIndex: 'projectNum',
+                    align: 'center',
+                },
+                {
+                    title: '账户数量',
+                    dataIndex: 'accountNum',
+                    align: 'center',
+                },
+                {
+                    title: '平均账户消耗',
+                    dataIndex: 'average',
+                    align: 'center',
+                    scopedSlots: { customRender: 'average' },
+                },
+                {
+                    title: '消耗',
+                    dataIndex: 'totalCost',
+                    align: 'center',
+                },
+                {
+                    title: '花费环比',
+                    dataIndex: 'rate',
+                    align: 'center',
+                    scopedSlots: { customRender: 'rate' },
+                },
+                {
+                    title: '新上计划数',
+                    dataIndex: 'newCampaignNum',
+                    align: 'center',
+                },
+                {
+                    title: '新上组数',
+                    dataIndex: 'newUnitNum',
+                    align: 'center',
+                },
+            ],
+            operateDetailLoading: false,
+
+            operateGroupList: [],
+            operateGroupColumns: [
+                {
+                    title: '运营经理',
+                    dataIndex: 'realname',
+                    align: 'center',
+                    scopedSlots: { customRender: 'realname' },
+                },
+                {
+                    title: '运营数量',
+                    dataIndex: 'operationNum',
+                    align: 'center',
+                },
+                {
+                    title: '日均消耗',
+                    dataIndex: 'averageDayCost',
+                    align: 'center',
+                },
+                {
+                    title: '人均消耗',
+                    dataIndex: 'averagePeopleCost',
+                    align: 'center',
+                },
+                {
+                    title: '花费',
+                    dataIndex: 'totalCost',
+                    align: 'center',
+                },
+                {
+                    title: '花费环比',
+                    dataIndex: 'yearOnYearCost',
+                    align: 'center',
+                    scopedSlots: { customRender: 'yearOnYearCost' },
+                },
+                {
+                    title: '项目数量',
+                    dataIndex: 'projectNum',
+                    align: 'center',
+                },
+                {
+                    title: '账户数量',
+                    dataIndex: 'accountNum',
+                    align: 'center',
+                },
+                {
+                    title: '平均账户消耗',
+                    dataIndex: 'averageAccountCost',
+                    align: 'center',
+                },
+                {
+                    title: '基建数量',
+                    dataIndex: 'unitNum',
+                    align: 'center',
+                },
+            ],
+            operateGroupLoading: false,
         }
     },
     watch: {
@@ -905,7 +1062,8 @@ export default {
             this.spinningChart = true
             this.active = 'cost'
             this.getProjectList()
-
+            this.getGroupData()
+            this.getDetailData()
             Promise.all([this.getSumData(), this.getChartMediaList(), this.getTableMediaList(null)])
                 .then((res) => {
                     this.spinning = false
@@ -992,20 +1150,20 @@ export default {
             //  target: 'unitNum',
             // order: 'descend',
             if (data && data.target) {
-                if(data.target == 'charge'){
+                if (data.target == 'charge') {
                     params.sortCode = ''
-                }else{
+                } else {
                     params.sortCode = data.target
                 }
-                
+
                 if (data.order == 'descend') {
                     params.order = 'DESC'
                 } else {
                     params.order = 'ASC'
                 }
             } else {
-                params.sortCode = this.target
-                params.order = this.order == 'descend' ? 'DESC' : 'ASC'
+                params.sortCode = null
+                params.order = null
             }
             this.getAction(process.env.VUE_APP_BASE_STARE_URL + '/summary/report/getProjectReport', params).then(
                 (res) => {
@@ -1075,76 +1233,48 @@ export default {
         },
 
         getGroupData() {
-            if (this.dataDimension == 'b') {
-                this.spinningMaterialGroupData = true
-                let that = this
-                let params = {}
-                params.mediaId = this.mediaDimension === 'a' ? 1 : 2
-                params.startDate = this.dateValue.length === 2 ? moment(this.dateValue[0]).format('YYYY-MM-DD') : null
-                params.endDate = this.dateValue.length === 2 ? moment(this.dateValue[1]).format('YYYY-MM-DD') : null
-                params.userId = this.userInfo().id
-                if (this.dataDimension === 'a') {
-                    params.projects = this.dataDimensionValue
-                } else if (this.dataDimension === 'b') {
-                    params.leaderId = this.dataDimensionValue
-                } else {
-                    params.designerId = this.userInfo().id
-                }
+            this.operateGroupLoading = true
+            let that = this
+            let params = {}
+            params.mediaId = this.mediaDimension === 'a' ? 1 : 2
+            params.startTime = this.dateValue.length === 2 ? moment(this.dateValue[0]).format('YYYY-MM-DD') : null
+            params.endTime = this.dateValue.length === 2 ? moment(this.dateValue[1]).format('YYYY-MM-DD') : null
+            params.userId = this.userInfo().id
 
-                return new Promise((resolve, reject) => {
-                    that.postDataAction(
-                        process.env.VUE_APP_BASE_MATERIAL_URL + '/overView/V2/getDesignerAvgData',
-                        params
-                    ).then((res) => {
-                        this.spinningMaterialGroupData = false
+            return new Promise((resolve, reject) => {
+                that.getAction(process.env.VUE_APP_BASE_STARE_URL + '/summary/report/getOperateGroupInfo', params).then(
+                    (res) => {
+                        this.operateGroupLoading = false
                         if (res.success) {
-                            // let defaultList = res.result
-                            // if (this.mediaDimension === 'b') {
-                            //     defaultList.costTotal = this.decimalsHandle(defaultList.costTotal, 3)
-                            //     defaultList.yesterdayCost = this.decimalsHandle(defaultList.yesterdayCost, 3)
-                            // } else {
-                            //     defaultList.costTotal = this.decimalsHandle(defaultList.costTotal, 2)
-                            //     defaultList.yesterdayCost = this.decimalsHandle(defaultList.yesterdayCost, 2)
-                            // }
-                            this.materialGroupData = res.result
+                            this.operateGroupList = res.result.list
                             resolve(res.result)
                         } else {
                             reject(res.message)
                         }
-                    })
-                })
-            }
+                    }
+                )
+            })
         },
-        getAccountIndexData() {
+        getDetailData() {
+            this.operateDetailLoading = true
             let that = this
             let params = {}
             params.mediaId = this.mediaDimension === 'a' ? 1 : 2
-            params.startDate = this.dateValue.length === 2 ? moment(this.dateValue[0]).format('YYYY-MM-DD') : null
-            params.endDate = this.dateValue.length === 2 ? moment(this.dateValue[1]).format('YYYY-MM-DD') : null
-            params.dimension =
-                this.dataDimension === 'a' ? 'project' : this.dataDimension === 'b' ? 'designTeam' : 'designer'
+            params.startTime = this.dateValue.length === 2 ? moment(this.dateValue[0]).format('YYYY-MM-DD') : null
+            params.endTime = this.dateValue.length === 2 ? moment(this.dateValue[1]).format('YYYY-MM-DD') : null
             params.userId = this.userInfo().id
-            if (this.dataDimension === 'a') {
-                params.projects = this.dataDimensionValue
-            } else if (this.dataDimension === 'b') {
-                params.leaderId = this.dataDimensionValue
-            } else {
-                params.designerId = this.userInfo().id
-            }
             return new Promise((resolve, reject) => {
-                that.postDataAction(
-                    process.env.VUE_APP_BASE_MATERIAL_URL + '/overView/V2/sumDataVideoNewEffective',
-                    params
-                ).then((res) => {
-                    if (res.success) {
-                        this.accountIndexList = res.result
-                        this.initEchart('accountIndexEchart', this.initAccountIndexEchart(res.result))
-                        this.initEchart('effectiveVideoEcharts', this.handleEffectiveVideoEcharts(res.result))
-                        resolve(res.result)
-                    } else {
-                        reject(res.message)
+                that.getAction(process.env.VUE_APP_BASE_STARE_URL + '/summary/report/getOperateInfo', params).then(
+                    (res) => {
+                        this.operateDetailLoading = false
+                        if (res.success) {
+                            this.operateDetailList = res.result.list
+                            resolve(res.result)
+                        } else {
+                            reject(res.message)
+                        }
                     }
-                })
+                )
             })
         },
         getPopularVideoData() {
@@ -1294,7 +1424,9 @@ export default {
             this.ipagination.current = 1
             // this.getData()
             this.getChartMediaList()
-            this.getTableMediaList()
+            this.getTableMediaList(null)
+            this.getGroupData()
+            this.getDetailData()
         },
         resetSubmit() {
             this.resetLoading = true

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1098 - 0
src/views/modules/Statistics/operationRecord.vue


+ 4 - 1
src/views/modules/Statistics/videoStatics/KSvideoStatics.vue

@@ -140,7 +140,9 @@
           <div class="tableTop">
               
                <a-button type="primary" @click="customColumns">自定义列</a-button>
-                <a-button type="default" style="float:right" @click="exportExcel('exportTable')" id="mybtn" :loading='exportLoading'>导出报表</a-button>
+                <a-button 
+                
+                type="default" style="float:right" @click="exportExcel('exportTable')" id="mybtn" :loading='exportLoading'>导出报表</a-button>
              
           </div>
             <a-table
@@ -1096,6 +1098,7 @@ filters: {
 
   mounted() {
       this.getDesignList()
+      console.log(this.userInfo())
     //请求自定义列的数据
     postAction('/toutiao/videoReportDaily/videoInfoListTotalExportExcelPermission').then(res => {
       console.log(res, 'mounted-mounted')

+ 4 - 1
src/views/modules/Statistics/videoStatics/TTvideoStatics.vue

@@ -48,7 +48,8 @@
 
 		<div style="margin:15px 0" class="btndiv">
 		<a-button type="primary" @click="customColumns">自定义列</a-button>
-		<a-button type="default" style="float:right" @click="exportExcel('exportTable')" id="mybtn"  :loading='exportLoading'>导出报表</a-button>
+		<a-button 
+    type="default" style="float:right" @click="exportExcel('exportTable')" id="mybtn"  :loading='exportLoading'>导出报表</a-button>
 		</div>
 
 		
@@ -215,6 +216,7 @@ import selectComponent from './selectComponent'
 import Treeselect from '../components/Treeselect'
 import DatePicker from '@/components/DatePicker'
 import customColumn from '../components/customColumn.vue'
+import {mapGetters} from 'vuex';
 const columnsFixd = [
   {
     title: '视频',
@@ -461,6 +463,7 @@ export default {
     customColumn
   },
   methods: {
+    ...mapGetters(['userInfo']),
     //点击查看明细按钮的事件
     opendetail(text, record) {
       console.log(text, record)

+ 691 - 0
src/views/modules/achievements/operateData.vue

@@ -0,0 +1,691 @@
+<style>
+.materialReport .chart-card-content {
+    display: none !important;
+}
+</style>
+<style lang="less" scoped>
+::v-deep .ant-table {
+    //设置表格头部竖向滚动宽度
+    ::v-deep .ant-table-header::-webkit-scrollbar {
+        width: 4px;
+    }
+
+    //设置表格体滚动宽度
+    ::v-deep .ant-table-body,
+    .ant-table-body-inner {
+        &::-webkit-scrollbar {
+            width: 4px;
+            height: 4px;
+        }
+        &::-webkit-scrollbar-thumb {
+            border-radius: 4px;
+            box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+            background: #909090;
+        }
+        &::-webkit-scrollbar-track {
+            box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+            border-radius: 4px;
+            background: #ededed;
+        }
+    }
+
+    //解决固定列底部预留的空隙
+    ::v-deep .ant-table-fixed-left,
+    .ant-table-fixed-right {
+        .ant-table-body-outer {
+            margin-bottom: 0 !important;
+        }
+    }
+}
+</style>
+<style scoped>
+::v-deep .ant-tabs .ant-tabs-large-bar .ant-tabs-tab {
+    padding: 11px 16px;
+}
+.bg {
+    width: 100%;
+    height: 100%;
+}
+.bg:after {
+    content: '';
+    width: 110%;
+    height: 110%;
+    position: absolute;
+    left: -5%;
+    top: -5%;
+    background: inherit;
+    filter: blur(10px);
+    z-index: 2;
+    background: rgba(0, 0, 0, 0.8);
+}
+.top-ul-style {
+    width: 100%;
+    padding-left: 0;
+}
+.top-ul-style li {
+    height: 100px;
+    border: 1px solid #f2f2f2;
+    margin-bottom: 5px;
+    padding: 10px;
+    display: flex;
+    justify-content: space-between;
+}
+.li-cost {
+    display: flex;
+    flex-flow: column;
+    justify-content: center;
+    align-content: flex-end;
+}
+.li-cost span {
+    font-size: 16px;
+    font-weight: 500;
+    min-width: 50px;
+    text-align: right;
+}
+</style>
+<template>
+    <div class="materialReport">
+        <a-row :gutter="24">
+            <a-col :xl="24">
+                <div class="option" style="justify-content: space-between">
+                    <div class="option" style="padding: 0">
+                        <div class="item">
+                            <span>媒体</span>
+                            <a-radio-group v-model="mediaDimension" @change="getProjectList">
+                                <a-radio-button value="b">快手</a-radio-button>
+                                <a-radio-button value="a">头条</a-radio-button>
+                            </a-radio-group>
+                        </div>
+                        <div class="item">
+                            <span>人员</span>
+                            <a-select
+                                v-model="person"
+                                style="width: 150px; margin-left: 10px"
+                                :mode="'default'"
+                                :maxTagCount="2"
+                                :loading="specificLoading"
+                                :filterOption="filterOption"
+                                showSearch
+                                allowClear
+                            >
+                                <a-select-option
+                                    v-for="(item, index) in dataDimensionList"
+                                    :key="index + 1"
+                                    :value="item.userId"
+                                >
+                                    {{ item.userName }}
+                                </a-select-option>
+                            </a-select>
+                        </div>
+                        <div class="item">
+                            <span>岗位</span>
+                            <a-select
+                                v-model="post"
+                                style="width: 150px; margin-left: 10px"
+                                :mode="'default'"
+                                allowClear
+                            >
+                                <a-select-option value="operationAssistant"> 运营助理 </a-select-option>
+                                <a-select-option value="manager"> 运营经理 </a-select-option>
+                                <a-select-option value="operator"> 运营专员 </a-select-option>
+                            </a-select>
+                        </div>
+                        <div class="item">
+                            <span>季度</span>
+                            <a-select v-model="quarter" style="width: 150px; margin-left: 10px" :mode="'default'">
+                                <a-select-option :value="1"> 第一季度 </a-select-option>
+                                <a-select-option :value="2"> 第二季度 </a-select-option>
+                                <a-select-option :value="3"> 第三季度 </a-select-option>
+                                <a-select-option :value="4"> 第四季度 </a-select-option>
+                            </a-select>
+                        </div>
+                        <!-- <div class="item">
+                            <span>类型</span>
+                            <a-select
+                                v-model="dataType"
+                                style="width: 300px; margin-left: 10px"
+                                :mode="'default'"
+                                allowClear
+                            >
+                                <a-select-option :value="0"> 消耗 </a-select-option>
+                                <a-select-option :value="1"> 在投客户数-项目 </a-select-option>
+                                <a-select-option :value="2"> 在投客户数-广告主主体 </a-select-option>
+                                <a-select-option :value="3"> 基建数 </a-select-option>
+                            </a-select>
+                        </div> -->
+                    </div>
+                    <div class="item" style="float: right">
+                        <a-button :loading="resetLoading" type="primary" @click="handleSubmit"> 搜索 </a-button>
+                        <a-button
+                            :disabled="spinning"
+                            :loading="resetLoading"
+                            style="margin-left: 15px"
+                            @click="resetSubmit"
+                        >
+                            重置
+                        </a-button>
+                    </div>
+                </div>
+            </a-col>
+        </a-row>
+        <a-row :gutter="24" style="margin-top: 20px" id="getWidth">
+            <a-col :xl="24">
+                <a-card style="width: 100%" title="运营数据">
+                    <!-- :columns="columns" -->
+                    <a-table
+                        size="middle"
+                        :dataSource="designTopList"
+                        bordered
+                        id="outTable"
+                        :pagination="ipagination"
+                        :loading="designTopLoading"
+                        ref="accountTable"
+                        @change="sort"
+                        :scroll="{ x: scrollX }"
+                    >
+                        <a-table-column title="运营" data-index="userName" :width="120" align="center">
+                        </a-table-column>
+                        <a-table-column title="岗位" data-index="roleName" :width="120" align="center">
+                        </a-table-column>
+                        <a-table-column title="晋升时间" data-index="upTime" align="center">
+                            <template slot-scope="t, r, i">
+                                <span>{{ !!t ? t : '-' }}</span>
+                            </template>
+                        </a-table-column>
+                        <a-table-column :title="onetotalCharge" data-index="1totalCharge" align="center">
+                        </a-table-column>
+                        <a-table-column :title="twototalCharge" data-index="2totalCharge" align="center">
+                        </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="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="离职时间" data-index="quitTime" align="center">
+                            <template slot-scope="t, r, i">
+                                <span>{{ !!t ? t : '-' }}</span>
+                            </template>
+                        </a-table-column>
+                    </a-table>
+                </a-card>
+            </a-col>
+        </a-row>
+    </div>
+</template>
+<script>
+import moment from 'moment'
+import YoutTable from '@/components/youtTable/YoutTable'
+import ChartCard from '@/components/ChartCard'
+import Trend from '@/components/Trend'
+import { mapGetters } from 'vuex'
+import Treeselect from '@/views/modules/Statistics/components/Treeselect.vue'
+import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+const columnsFixd = [
+    {
+        title: '广告组名称',
+        dataIndex: 'unitName',
+        align: 'center',
+        scopedSlots: { customRender: 'unitName' },
+    },
+    {
+        title: '封面曝光数',
+        dataIndex: 'photoShow',
+        align: 'center',
+    },
+    {
+        title: '封面点击数',
+        dataIndex: 'photoClick',
+        align: 'center',
+        scopedSlots: { customRender: 'photoClick' },
+    },
+    {
+        title: '消耗',
+        dataIndex: 'cost',
+        align: 'center',
+    },
+]
+const ksColumns = []
+
+export default {
+    components: {
+        YoutTable,
+        ChartCard,
+        Trend,
+        Treeselect,
+    },
+    data() {
+        return {
+            visible: false, //自定义页面的打开
+            listNum: [],
+            spinningMaterialGroupData: false,
+            scrollX: 0,
+            ipagination: {
+                current: 1,
+                pageSize: 10,
+                //   pageSizeOptions: ['10', '20', '30'],
+                showTotal: (total, range) => {
+                    return range[0] + '-' + range[1] + ' 共' + total + '条'
+                },
+                showQuickJumper: true,
+                // showSizeChanger: true,
+                pageSizeOptions: ['10', '30', '50'],
+                total: 0,
+                onChange: (current, pageSize) => {
+                    // 切换分页时的回调,
+                    // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
+                    this.ipagination.current = current
+                    this.ipagination.pageSize = pageSize
+                    this.getTableMediaList()
+                },
+            },
+            tabListNoTitle: [
+                {
+                    key: '2',
+                    tab: '快手',
+                },
+                {
+                    key: '1',
+                    tab: '头条',
+                },
+            ],
+            noTitleKey: '2',
+            active: 'cost',
+            groupDisabled: false,
+            timeShowEchartsStatus: true,
+            signatureStatus: false,
+            materialGroupData: {},
+            accountIndexList: {},
+            popularVideoList: {},
+            materialRankValue: 0,
+            designRankingValue: 1,
+            designTopLoading: false,
+            noImg: require('@/assets/noImg.png'),
+            visibleVideo: false,
+            videoUrlShow: '',
+            cost: '0',
+            spinning: false,
+            spinningChart: false,
+            spinningChartPie: false,
+            loading: false,
+            chartList: [],
+            videoList: [],
+            designTopList: [],
+            target: '',
+            order: 'descend',
+            columns: [...columnsFixd, ...ksColumns], // table的表头
+            columnsFixd,
+            dateRanges: {
+                今天: [moment(), moment()],
+                近三天: [moment().subtract(3, 'days'), moment().subtract(1, 'days')],
+                近一周: [moment().subtract(7, 'days'), moment().subtract(1, 'days')],
+                // 近14天: [moment().subtract(14, 'days'), moment().subtract(1, 'days')],
+                // 近一月: [moment().subtract(1, 'months'), moment().subtract(1, 'days')],
+                // 近半年: [moment().subtract(6, 'months'), moment().subtract(1, 'days')],
+                // 近一年: [moment().subtract(12, 'months'), moment().subtract(1, 'days')],
+            },
+            dateValue: [moment(), moment()],
+            videoType: 0,
+            labelType: 0,
+            dataDimension: 'a',
+            mediaDimension: 'b',
+            showKf: true,
+            projectId: null,
+            dataDimensionValue: null,
+            quarter: null,
+            person: null,
+            post: null,
+            operationTarget: 'charge',
+            dataDimensionList: [],
+            specificLoading: false,
+            dataType: 0,
+            accountIdKuaishou: undefined,
+            accountIdToutiao: undefined,
+            category: 0,
+            clientWidth: 0,
+            resetLoading: false,
+            searchLoading: false,
+            spinningPopularVideoList: false,
+            oneFWCharge: '',
+            oneJLCharge: '',
+            oneKFCharge: '',
+            onetotalCharge: '',
+            twoFWCharge: '',
+            twoJLCharge: '',
+            twoKFCharge: '',
+            twototalCharge: '',
+            threeFWCharge: '',
+            threeJLCharge: '',
+            threeKFCharge: '',
+            threetotalCharge: '',
+        }
+    },
+    watch: {
+        visibleVideo(n, o) {
+            if (!n) {
+                stopOtherVideo()
+                closeAllVideoFun()
+            }
+        },
+    },
+    methods: {
+        ...mapGetters(['userInfo']),
+        filterOption(input, option) {
+            return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+        },
+        getQuarter() {
+            var today = new Date()
+            var month = today.getMonth() + 1
+            if (month >= 1 && month <= 3) {
+                this.quarter = 1
+            } else if (month >= 4 && month <= 6) {
+                this.quarter = 2
+            } else if (month >= 7 && month <= 9) {
+                this.quarter = 3
+            } else {
+                this.quarter = 4
+            }
+        },
+        getData() {
+            this.spinning = true
+            this.spinningChart = true
+            this.active = 'cost'
+            this.getProjectList()
+
+            Promise.all([this.getChartMediaList()])
+                .then((res) => {
+                    this.spinning = false
+                    this.resetLoading = false
+                    this.searchLoading = false
+                    this.spinningChart = false
+                })
+                .catch((error) => {
+                    this.spinning = false
+                    this.resetLoading = false
+                    this.searchLoading = false
+                    // this.$error({
+                    // 	title: '页面数据加载出错',
+                    // 	content: '请刷新重试或联系管理员查询'
+                    // });
+                })
+        },
+        getTableMediaList(data) {
+            this.designTopLoading = true
+            var params = {}
+            params.time = this.quarter
+            params.mediaId = this.mediaDimension === 'a' ? 1 : 2
+            params.role = this.post
+            params.userId = this.person
+            params.pageSize = this.ipagination.pageSize
+            params.pageNo = this.ipagination.current
+
+            if (this.mediaDimension === 'a') {
+                this.showKf = false
+            } else {
+                this.showKf = true
+            }
+            if (this.quarter == 1) {
+                this.oneFWCharge = '1月服务消耗'
+                this.oneJLCharge = '1月激励消耗'
+                this.oneKFCharge = '1月框返消耗'
+                this.onetotalCharge = '1月总消耗'
+
+                this.twoFWCharge = '2月服务消耗'
+                this.twoJLCharge = '2月激励消耗'
+                this.twoKFCharge = '2月框返消耗'
+                this.twototalCharge = '2月总消耗'
+
+                this.threeFWCharge = '3月服务消耗'
+                this.threeJLCharge = '3月激励消耗'
+                this.threeKFCharge = '3月框返消耗'
+                this.threetotalCharge = '3月总消耗'
+            } else if (this.quarter == 2) {
+                this.oneFWCharge = '4月服务消耗'
+                this.oneJLCharge = '4月激励消耗'
+                this.oneKFCharge = '4月框返消耗'
+                this.onetotalCharge = '4月总消耗'
+
+                this.twoFWCharge = '5月服务消耗'
+                this.twoJLCharge = '5月激励消耗'
+                this.twoKFCharge = '5月框返消耗'
+                this.twototalCharge = '5月总消耗'
+
+                this.threeFWCharge = '6月服务消耗'
+                this.threeJLCharge = '6月激励消耗'
+                this.threeKFCharge = '6月框返消耗'
+                this.threetotalCharge = '6月总消耗'
+            } else if (this.quarter == 3) {
+                this.oneFWCharge = '7月服务消耗'
+                this.oneJLCharge = '7月激励消耗'
+                this.oneKFCharge = '7月框返消耗'
+                this.onetotalCharge = '7月总消耗'
+
+                this.twoFWCharge = '8月服务消耗'
+                this.twoJLCharge = '8月激励消耗'
+                this.twoKFCharge = '8月框返消耗'
+                this.twototalCharge = '8月总消耗'
+
+                this.threeFWCharge = '9月服务消耗'
+                this.threeJLCharge = '9月激励消耗'
+                this.threeKFCharge = '9月框返消耗'
+                this.threetotalCharge = '9月总消耗'
+            } else {
+                this.oneFWCharge = '10月服务消耗'
+                this.oneJLCharge = '10月激励消耗'
+                this.oneKFCharge = '10月框返消耗'
+                this.onetotalCharge = '10月总消耗'
+
+                this.twoFWCharge = '11月服务消耗'
+                this.twoJLCharge = '11月激励消耗'
+                this.twoKFCharge = '11月框返消耗'
+                this.twototalCharge = '11月总消耗'
+
+                this.threeFWCharge = '12月服务消耗'
+                this.threeJLCharge = '12月激励消耗'
+                this.threeKFCharge = '12月框返消耗'
+                this.threetotalCharge = '12月总消耗'
+            }
+
+            this.getAction('/kuaishou/operationReport/queryMonthlyData', params).then((res) => {
+                this.resetLoading = false
+                if (res.success) {
+                    this.designTopLoading = false
+                    this.designTopList = res.result.list || []
+                    this.ipagination.total = res.result.total || 0
+                } else {
+                    this.designTopLoading = false
+                }
+            })
+        },
+
+        getProjectList() {
+            this.specificLoading = true
+            this.dataDimensionList = []
+            this.dataDimensionValue = null
+            this.person = null
+            this.post = null
+            return new Promise((resolve, reject) => {
+                this.getAction(
+                    '/kuaishou/operationReport/getAllOperatorList?mediaId=' + (this.mediaDimension == 'a' ? 1 : 2)
+                ).then((res) => {
+                    this.specificLoading = false
+                    if (res.success) {
+                        this.dataDimensionList = res.result
+                        resolve(res.result)
+                    } else {
+                        reject(res.message)
+                    }
+                })
+            })
+        },
+        sort(pagination, filters, sorter, { currentDataSource }) {
+            this.ipagination.current = pagination.current
+            this.ipagination.pageSize = pagination.pageSize
+
+            // if (sorter.order) {
+            //     this.order = sorter.order ? sorter.order : 'descend'
+            //     this.target = sorter.columnKey
+            //     this.getTableMediaList({
+            //         target: sorter.columnKey,
+            //         order: sorter.order ? sorter.order : 'descend',
+            //     })
+            // }
+        },
+
+        handleSubmit() {
+            this.cancel()
+            this.resetLoading = true
+
+            this.ipagination.current = 1
+            // this.getData()
+
+            this.getTableMediaList()
+        },
+        resetSubmit() {
+            this.getQuarter()
+            this.mediaDimension = 'b'
+            this.dataDimensionValue = null
+            this.post = null
+            this.person = null
+            this.dataType = 0
+            this.handleSubmit()
+        },
+        //获取echart的值
+        initEchart(idName, optionName) {
+            let that = this
+            const chart = this.$refs[idName]
+            if (chart) {
+                echarts.init(document.getElementById(idName)).dispose()
+                const myChart = echarts.init(document.getElementById(idName))
+                myChart.setOption(optionName)
+                window.addEventListener('resize', function () {
+                    that.clientWidth = document.documentElement.clientWidth - 224
+                    myChart.resize()
+                })
+            }
+        },
+
+        disabledDate(current) {
+            return current && current >= moment()
+        },
+    },
+    mounted() {
+        this.clientWidth = document.documentElement.clientWidth - 224
+        this.$nextTick(() => {
+            this.getProjectList()
+            this.getQuarter()
+            setTimeout(() => {
+                this.getTableMediaList()
+            })
+        })
+    },
+    activated() {
+        this.$nextTick(() => {
+            this.clientWidth = document.documentElement.clientWidth - 224
+        })
+    },
+}
+</script>
+<style lang="less" scoped>
+.materialReport {
+    .material-report-card-two {
+        width: 25%;
+        ::v-deep * {
+            border: 0;
+        }
+    }
+
+    .material-report-card {
+        // height: 220px;
+        ::v-deep .ant-card-head {
+            border: none;
+        }
+        ::v-deep .ant-card-body {
+            padding-top: 5px;
+        }
+        .report-card-result {
+            height: 88px;
+        }
+        .report-card-money {
+            font-size: 30px;
+            font-weight: bold;
+        }
+        .report-card-msg {
+            display: flex;
+            justify-content: space-between;
+            font-size: 14px;
+            margin-top: 20px;
+        }
+        .report-card-line {
+            width: 100%;
+            height: 1px;
+            margin-top: 20px;
+            background: #e8e8e8;
+        }
+        .report-card-radio {
+            display: flex;
+            justify-content: space-between;
+            margin-top: 12px;
+            font-size: 14px;
+        }
+    }
+    .option {
+        background: white;
+        padding: 20px;
+        display: flex;
+        justify-content: flex-start;
+        flex-wrap: wrap;
+        .item {
+            margin-right: 15px;
+            margin-bottom: 15px;
+            height: 32px;
+            line-height: 32px;
+            flex-shrink: 0;
+            span {
+                margin-right: 10px;
+            }
+        }
+    }
+    .echart {
+        margin-top: 20px;
+        padding: 0 20px 20px;
+        background: white;
+        .echart-header {
+            padding: 20px 0;
+            font-size: 15px;
+            font-weight: 600;
+        }
+    }
+    .tableBody {
+        margin-top: 20px;
+    }
+}
+</style>
+<style>
+.materialReport .card-containers {
+    overflow: hidden !important;
+}
+.materialReport .card-containers > .ant-tabs-card > .ant-tabs-content {
+    margin-top: -16px !important;
+}
+
+.materialReport .card-containers > .ant-tabs-card > .ant-tabs-content > .ant-tabs-tabpane {
+    background: #fff !important;
+}
+
+.materialReport .card-containers > .ant-tabs-card > .ant-tabs-bar {
+    border-color: #fff !important;
+}
+
+.materialReport .card-containers > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab {
+    border-color: transparent !important;
+    background: transparent !important;
+}
+
+.materialReport .card-containers > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active {
+    border-color: #fff !important;
+    background: #fff !important;
+}
+</style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1347 - 0
src/views/modules/achievements/operateList.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1370 - 1370
src/views/modules/columnConst/accountConst.js


+ 6 - 4
src/views/modules/material/accountCheckBytedance.vue

@@ -273,8 +273,10 @@ export default {
     },
     ...mapGetters(['nickname', 'avatar', 'userInfo']),
     update(node, id) {
-      console.log(node.children)
-      setTimeout(()=>{
+      console.log(node,node.children)
+
+      
+      this.$nextTick(()=>{
         if(node.children.length>0){
 
         }else{
@@ -282,6 +284,7 @@ export default {
             userId: node.id.split('@')[1],
           }).then((res) => {
             console.log(res)
+            node.children = []
             if (res.code == 0) {
                 if (res.result.length > 0&&node.children.length == 0) {
                   node.children = res.result.map((item) => {
@@ -309,7 +312,7 @@ export default {
               }
           })
         }
-      },100)
+      })
       
 
     },
@@ -324,7 +327,6 @@ export default {
       var data = []
       if (node.level == 1) {
         var id = node.key.split('@')[1]
-
         getAction('/ctop/userAllocation/getAccountIdListByUserId', {
           userId: id,
         }).then((res) => {

+ 76 - 39
src/views/modules/material/dxmMaterial.vue

@@ -599,6 +599,13 @@ a {
                                             @click="edit(items, '6')"
                                             >修改</a
                                         >
+                                        <a
+                                            href="javascript:;"
+                                            style="margin-right: 20px"
+                                            v-show="active == '4'"
+                                            @click="edit(items, '4')"
+                                            >修改</a
+                                        >
                                         <a-checkbox
                                             :value="items.id"
                                             style="float: right"
@@ -651,18 +658,7 @@ a {
                 <a-button type="primary" @click="handleOkBatch" :loading="loadingBatch">确定</a-button>
             </template>
             <a-form-model ref="ruleForm" :model="ruleForm" :label-col="{ span: 4 }" :wrapper-col="{ span: 14 }">
-                <a-form-model-item
-                    ref="name"
-                    label="项目选择"
-                    prop="projectId"
-                    :rules="{
-                        required: true,
-                        message: '项目不能为空',
-                        trigger: 'blur',
-                    }"
-                >
-                    度小满金融
-                </a-form-model-item>
+                <a-form-model-item ref="name" label="项目选择" prop="projectId"> 度小满金融 </a-form-model-item>
                 <a-form-item
                     label="素材类型"
                     :rules="{
@@ -949,6 +945,7 @@ a {
                             { rules: [{ required: true, message: '请选择类型!' }] },
                         ]"
                         @change="urlList.url = ''"
+                        :disabled="!add"
                     >
                         <a-select-option value="SCRIPT"> 脚本 </a-select-option>
                         <a-select-option value="VIDEO"> 视频 </a-select-option>
@@ -1248,13 +1245,13 @@ a {
                 <div style="flex: 3; padding: 10px; box-sizing: border-box; height: 500px; overflow: auto">
                     <a-form v-if="allDetailData" class="detail ant-advanced-search-form" layout="inline">
                         <div>
-                            <a-form-item label="视频名称">{{ allDetailData.materialName }}</a-form-item>
+                            <a-form-item label="名称">{{ allDetailData.materialName }}</a-form-item>
                         </div>
                         <div>
                             <a-form-item label="唯一编码">{{ allDetailData.signature }}</a-form-item>
                         </div>
 
-                        <a-form-item label="视频链接">
+                        <a-form-item label="链接">
                             <div style="width: 400px">
                                 {{ allDetailData.url }}
                             </div>
@@ -1262,6 +1259,13 @@ a {
                             <!-- <a-input v-model="allDetailData.url" type="text" read-only
                         /> -->
                         </a-form-item>
+                        <br />
+                        <a-form-item label="下载">
+                            <a-button type="primary" @click="downloadByBlobShowUrl">下载</a-button>
+
+                            <!-- <a-input v-model="allDetailData.url" type="text" read-only
+                        /> -->
+                        </a-form-item>
                         <div v-if="detailPerson" style="display: flex">
                             <a-form-item label="策划" style="flex: 1">{{ detailPerson.planName }}</a-form-item>
                             <a-form-item label="拍摄" style="flex: 1">{{ detailPerson.shotName }}</a-form-item>
@@ -1271,28 +1275,21 @@ a {
                         </div>
                         <div v-if="active == '6'">
                             <a-form-item label="驳回原因">
-                                <div
-                                    v-html="refuseReasonImage"
-                                    style="
-                                        width: 450px;
-                                        height: 200px;
-                                        overflow: auto;
-                                        border: 1px solid #f2f2f2;
-                                        padding: 10px;
-                                    "
-                                ></div>
+                                <div v-html="refuseReasonImage" style="width: 100%"></div>
                             </a-form-item>
                         </div>
                         <div v-else-if="active == '4'">
                             <a-form-item label="驳回原因">
                                 <div style="width: 450px">
                                     {{ refuseReasonImage }}
-                                    <img
-                                        :src="refuseReasonImageShow"
-                                        v-if="!!refuseReasonImageShow"
-                                        style="width: 100%"
-                                        alt=""
-                                    />
+                                    <div>
+                                        <img
+                                            :src="item"
+                                            v-for="(item, index) in refuseReasonImageShow"
+                                            style="width: 100%; margin-bottom: 10px"
+                                            alt=""
+                                        />
+                                    </div>
                                 </div>
                             </a-form-item>
                         </div>
@@ -1826,6 +1823,38 @@ export default {
         },
     },
     methods: {
+        downloadByBlobShowUrl() {
+            // var that = this
+            // var x = new XMLHttpRequest()
+            // x.open('GET', this.allDetailData.url, true)
+            // x.responseType = 'blob'
+            // x.onload = function (e) {
+            //     //会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。
+            //     var url = window.URL.createObjectURL(x.response)
+            //     var a = document.createElement('a')
+            //     a.href = url
+            //     a.download = that.allDetailData.materialName
+            //     a.click()
+            // }
+            // x.send()
+
+            fetch(this.allDetailData.url)
+                .then((res) => res.blob())
+                .then((blob) => {
+                    const a = document.createElement('a')
+                    document.body.appendChild(a)
+                    a.style.display = 'none'
+                    // 使用获取到的blob对象创建的url
+                    const url = window.URL.createObjectURL(blob)
+                    a.href = url
+                    // 指定下载的文件名
+                    a.download = this.allDetailData.materialName
+                    a.click()
+                    document.body.removeChild(a)
+                    // 移除blob对象的url
+                    window.URL.revokeObjectURL(url)
+                })
+        },
         handleRecordCancel() {
             this.recordDetailVisible = false
         },
@@ -2201,7 +2230,7 @@ export default {
                         id: res.result.info.auditImagesId,
                     }).then((img) => {
                         this.refuseReasonImage = res.result.info.refuseReason
-                        this.refuseReasonImageShow = img
+                        this.refuseReasonImageShow = img.result
                     })
                 } else {
                     this.refuseReasonImage = res.result.info.refuseReason
@@ -2298,14 +2327,22 @@ export default {
                 }).then((res) => {
                     if (this.activeKey == 'image') {
                     } else {
-                        this.form.setFieldsValue({
-                            projectId: 2400956,
-                            clipId: res.result.ascription.clipId,
-                            planId: res.result.ascription.planId,
-                            shotId: res.result.ascription.shotId,
-                            materialDescribe: item.materialDescribe,
-                            type: item.type,
-                        })
+                        if (res.result.ascription) {
+                            this.form.setFieldsValue({
+                                projectId: 2400956,
+                                clipId: res.result.ascription.clipId,
+                                planId: res.result.ascription.planId,
+                                shotId: res.result.ascription.shotId,
+                                materialDescribe: item.materialDescribe,
+                                type: item.type,
+                            })
+                        } else {
+                            this.form.setFieldsValue({
+                                projectId: 2400956,
+                                materialDescribe: item.materialDescribe,
+                                type: item.type,
+                            })
+                        }
                     }
                     this.tags = res.tag
                     this.urlList.url = item.url

+ 104 - 1
src/views/modules/material/videoMaterial.vue

@@ -508,6 +508,40 @@ a {
         type="primary"
         >批量通过审核</a-button
       >
+    
+      <a-popconfirm
+        @confirm="rejectTheAudit"
+      >
+        <div slot="title">
+          <div>
+            驳回原因:
+            <a-textarea
+              placeholder="请输入原因"
+              v-model="refuseReasonAll"
+              :autosize="{ minRows: 3, maxRows: 10 }"
+            />
+          </div>
+        
+        </div>
+        <a-button
+          :disabled="checkArr.length == 0"
+          v-if="active == '0'"
+          :loading="rejectTheAuditLoading"
+          type="primary"
+          >批量驳回</a-button
+        >
+      </a-popconfirm>
+
+       <a-button
+        v-if="
+          active == '0'
+        "
+        :disabled="!queryParam.productId"
+        @click="metarialDownLoad"
+        :loading="metarialDownLoadLoading"
+        >素材下载</a-button
+      >
+
       <a-button
         @click="onCheckAllChange"
         v-if="
@@ -1249,6 +1283,10 @@ a {
               </a-form-model-item>
               <a-form-model-item :wrapper-col="{ span: 14,offset:4 }" v-if="index == 0">
                   <a-button type="primary" @click="syncDesign">剩余素材同步设计人员</a-button>
+                  <a-button type="primary"  style="margin-left:10px" @click="syncTag" v-if="
+                  userInfo().id == 'e1f29124450b47cf84a70820122478bf'||
+                  userInfo().id == '6e7f1a35b74a490ba0a5773c2a21748c'||
+                  userInfo().id == 'e9ca23d68d884d4ebb19d07889727dae'">剩余素材同步标签</a-button>
               </a-form-model-item>
             </el-collapse-item>
           </el-collapse>
@@ -2321,7 +2359,7 @@ import { JeecgListMixin } from '@/mixins/videoMaterialMixin'
 import JEllipsis from '@/components/jeecg/JEllipsis'
 import UploadToAli from '@femessage/upload-to-ali'
 import { fileCheck, fileCheckImage, fileEdit, fileEditAll, fileInsertV2 } from '@/api/actor'
-import { deleteAction, getAction, postAction, putAction } from '@/api/manage'
+import { deleteAction, getAction, postAction, putAction,downFile } from '@/api/manage'
 import qs from 'qs'
 import { mapGetters } from 'vuex'
 import moment from 'moment'
@@ -2396,6 +2434,9 @@ export default {
 			},
 		],
     passTheAuditLoading:false,
+    rejectTheAuditLoading:false,
+    metarialDownLoadLoading:false,
+    refuseReasonAll:null,
 		toutiaoMateriaLoading: false,
 		defaultCurrentToutiao: 1,
 		materiaDataTotalToutiao: 0,
@@ -2870,6 +2911,30 @@ export default {
     }
   },
   methods: {
+    metarialDownLoad(){
+      this.metarialDownLoadLoading = true
+      var params = {...this.queryParam}
+      if(params.createTime&&params.createTime.length>0){
+        // params.createTime = moment(params.createTime).format('YYYY-MM-DD')
+        params.startDate = moment(params.createTime[0]).format('YYYY-MM-DD')
+        params.endDate = moment(params.createTime[1]).format('YYYY-MM-DD')
+        params.createTime = null
+      }
+      downFile('/ctop/materialInfo/v2Excel', params).then((res) => {
+        this.metarialDownLoadLoading = false
+        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对象
+      })
+    },
 	  handleMateriaTabsChange(e) {
 		  const defaultData = this.materialUseDetailList;
 		  this.defaultCurrentToutiao = 1;
@@ -3077,6 +3142,23 @@ export default {
         }
       })
     },
+    syncTag(){
+// modTagList
+// senceTagList
+// modalityTagList
+
+      let modTagList = this.ruleForm.urlListData[0].modTagList
+      let senceTagList = this.ruleForm.urlListData[0].senceTagList
+      let modalityTagList = this.ruleForm.urlListData[0].modalityTagList
+       this.ruleForm.urlListData = this.ruleForm.urlListData.map(item=>{
+        return {
+          ...item,
+          modTagList,
+          senceTagList,
+          modalityTagList
+        }
+      })
+    },
     editMaterialName(item) {
       this.editMaterialVisible = true
       this.editMaterialId = item.id
@@ -3563,6 +3645,27 @@ export default {
       eleLink.remove()
     },
     ...mapGetters(['nickname', 'avatar', 'userInfo']),
+    rejectTheAudit(){
+
+      if(this.checkArr.length == 0){
+        this.$message.error('请选择素材')
+      }else{
+        this.rejectTheAuditLoading = true
+        this.postDataAction('/ctop/materialInfo/batchEditStatus', 
+        {ids:this.checkArr, status:'2',userId:this.userInfo().id,refuseReason:this.refuseReasonAll}).then(res=>{
+          this.rejectTheAuditLoading = false
+          if(res.success){
+            this.$message.success('批量驳回已完成')
+            this.refuseReasonAll = null
+            this.checkArr = []
+            this.searchQuery()
+          }else{
+            this.refuseReasonAll = null
+            this.$message.error(res.message)
+          }
+        })
+      }
+    },
     passTheAudit() {
       if(this.checkArr.length == 0){
         this.$message.error('请选择素材')

+ 3 - 0
src/views/modules/policy-management/policy-management.vue

@@ -304,6 +304,8 @@
             :visible="auditPolicyStatus"
             :closable="false"
             :footer="null"
+            v-dialog-drag
+            
         >
             <div>
                 <span class="audit-policy-icon" @click="handleCloseAuditPolicy"><a-icon type="close"/></span>
@@ -867,6 +869,7 @@
             :visible="logVisible"
             @cancel="logVisible = false"
             :footer="null"
+            v-dialog-drag
         > 
             <div style="height:400px;overflow:auto;padding:15px">
                 <a-steps progress-dot direction="vertical" v-model="logActive" style="width:100%" disbaled>

+ 202 - 112
src/views/modules/stockWatch/modules/new-keepManage/group-keepManage.vue

@@ -7,10 +7,17 @@
                         <span style="font-weight: bolder">数据总览</span>
                         <!-- &nbsp;&nbsp; <span style="font-size:13px;">更新时间:{{updateAccountEchart | formatDate}}</span>  -->
                     </div>
+
                     <div class="person-content-title" slot="extra">
                         <div class="content-title-acount"></div>
                         <div class="content-title-checkout">
                             <span class="title-checkout-select" style="margin-right: 10px">
+                                <a-select v-model="mediaId" style="width: 100px" @change="selectMediaIdChange">
+                                    <a-select-option value="1">头条</a-select-option>
+                                    <a-select-option value="2">快手</a-select-option>
+                                </a-select>
+                            </span>
+                            <span class="title-checkout-select" style="margin-right: 10px">
                                 <a-select v-model="selectValue" style="width: 100px" @change="selectValueChange">
                                     <a-select-option value="1">汇总</a-select-option>
                                     <a-select-option value="2">运营个人</a-select-option>
@@ -26,26 +33,27 @@
                             </span>
                         </div>
                     </div>
+                    <a-spin :spinning="spinning">
+                        <div
+                            v-if="yestadyNum == 1"
+                            id="accountIndexEchart"
+                            ref="accountIndexEchart"
+                            style="width: 90%; height: 315px; margin: 0 auto"
+                            :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }"
+                        >
+                            <a-empty />
+                        </div>
 
-                    <div
-                        v-if="yestadyNum == 1"
-                        id="accountIndexEchart"
-                        ref="accountIndexEchart"
-                        style="width: 90%; height: 315px; margin: 0 auto"
-                        :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }"
-                    >
-                        <a-empty />
-                    </div>
-
-                    <div
-                        v-else
-                        id="acctowecharts"
-                        ref="acctowecharts"
-                        style="width: 90%; height: 315px; margin: 0 auto"
-                        :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }"
-                    >
-                        <a-empty />
-                    </div>
+                        <div
+                            v-else
+                            id="acctowecharts"
+                            ref="acctowecharts"
+                            style="width: 90%; height: 315px; margin: 0 auto"
+                            :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }"
+                        >
+                            <a-empty />
+                        </div>
+                    </a-spin>
                 </a-card>
             </a-col>
 
@@ -54,44 +62,46 @@
                     <div slot="title">
                         <span style="font-weight: bolder">运营组数据</span>
                     </div>
-                    <div style="width: 100%; height: 315px">
-                        <ul class="group-keep-ul">
-                            <li>
-                                今日消耗: <span style="font-weight: bold">{{ todayCost | formatNum }}</span>
-                            </li>
-                            <li v-if="!!compare">
-                                <span style="margin-left: 20%" v-if="compare.indexOf('-') == 0">
-                                    <img
-                                        style="width: 25px; height: 25px"
-                                        class="title-radio-img"
-                                        src="@/assets/greendown.png"
-                                        alt=""
-                                    />
-                                    <span style="color: green">{{ compare }}</span>
-                                </span>
-                                <span style="margin-left: 20%" v-else-if="compare.indexOf('-') == -1">
-                                    <img
-                                        style="width: 25px; height: 25px"
-                                        class="title-radio-img"
-                                        src="@/assets/upred.png"
-                                        alt=""
-                                    />
-                                    <span style="color: red">{{ compare }}</span>
-                                </span>
+                    <a-spin :spinning="spinningGroup">
+                        <div style="width: 100%; height: 315px">
+                            <ul class="group-keep-ul">
+                                <li>
+                                    今日消耗: <span style="font-weight: bold">{{ todayCost | formatNum }}</span>
+                                </li>
+                                <li v-if="!!compare">
+                                    <span style="margin-left: 20%" v-if="compare.indexOf('-') == 0">
+                                        <img
+                                            style="width: 25px; height: 25px"
+                                            class="title-radio-img"
+                                            src="@/assets/greendown.png"
+                                            alt=""
+                                        />
+                                        <span style="color: green">{{ compare }}</span>
+                                    </span>
+                                    <span style="margin-left: 20%" v-else-if="compare.indexOf('-') == -1">
+                                        <img
+                                            style="width: 25px; height: 25px"
+                                            class="title-radio-img"
+                                            src="@/assets/upred.png"
+                                            alt=""
+                                        />
+                                        <span style="color: red">{{ compare }}</span>
+                                    </span>
 
-                                <a-tooltip placement="top">
-                                    <template slot="title">
-                                        <span>今天截止此时的消耗跟昨天截止同个时段的消耗变化</span>
-                                    </template>
-                                    <a-icon style="margin-left: 10px" type="question-circle" />
-                                </a-tooltip>
-                            </li>
-                            <li><span style="margin-left: 31px">消耗:</span> {{ sectionCost | formatNum }}</li>
-                            <li>人均带户: {{ userAverageAccount | formatNum }}</li>
-                            <li>人均消耗: {{ userAveragecost | formatNum }}</li>
-                            <li>在投项目数量:{{ projectNum }}</li>
-                        </ul>
-                    </div>
+                                    <a-tooltip placement="top">
+                                        <template slot="title">
+                                            <span>今天截止此时的消耗跟昨天截止同个时段的消耗变化</span>
+                                        </template>
+                                        <a-icon style="margin-left: 10px" type="question-circle" />
+                                    </a-tooltip>
+                                </li>
+                                <li><span style="margin-left: 31px">消耗:</span> {{ sectionCost | formatNum }}</li>
+                                <li>人均带户: {{ userAverageAccount | formatNum }}</li>
+                                <li>人均消耗: {{ userAveragecost | formatNum }}</li>
+                                <li>在投项目数量:{{ projectNum }}</li>
+                            </ul>
+                        </div>
+                    </a-spin>
                 </a-card>
             </a-col>
         </a-row>
@@ -104,7 +114,7 @@
                     <div class="person-content-title" slot="extra">
                         <div class="content-title-acount"></div>
                         <div class="content-title-checkout">
-                            <span style="margin-right: 20px">
+                            <span style="margin-right: 15px">
                                 <a-range-picker
                                     v-model="dateMiddle"
                                     format="YYYY-MM-DD"
@@ -112,9 +122,15 @@
                                     @change="dateMiddleChange"
                                 />
                             </span>
-                            <span>
+                            <span style="margin-right: 15px">
                                 <a-button @click="exportClick">导 出</a-button>
                             </span>
+                            <span>
+                                <a-radio-group v-model="mediaIdDetail" @change="dateMiddleChange">
+                                    <a-radio-button value="2"> 快手 </a-radio-button>
+                                    <a-radio-button value="1"> 头条 </a-radio-button>
+                                </a-radio-group>
+                            </span>
                         </div>
                     </div>
                     <a-table
@@ -154,7 +170,7 @@
                     <div class="person-content-title" slot="extra">
                         <div class="content-title-acount"></div>
                         <div class="content-title-checkout">
-                            <span style="margin-right: 20px">
+                            <span style="margin-right: 15px">
                                 <a-range-picker
                                     v-model="dateMiddleGroup"
                                     format="YYYY-MM-DD"
@@ -162,9 +178,15 @@
                                     @change="dateMiddleChangeGroup"
                                 />
                             </span>
-                            <span>
+                            <span style="margin-right: 15px">
                                 <a-button @click="exportClickGroup">导 出</a-button>
                             </span>
+                            <span>
+                                <a-radio-group v-model="mediaIdGroup" @change="changeGetGroupList">
+                                    <a-radio-button value="2"> 快手 </a-radio-button>
+                                    <a-radio-button value="1"> 头条 </a-radio-button>
+                                </a-radio-group>
+                            </span>
                         </div>
                     </div>
                     <a-table
@@ -207,19 +229,25 @@
                             > -->
                         </div>
                         <div class="content-title-checkout">
-                            <a-button @click="exportExcel" :loading="visibleLoading" style="margin-right: 20px">
-                                导出数据
-                            </a-button>
                             <!-- <span style="margin-right: 20px">
                                 <a-button type="link" @click="customColumn"> 自定义列 </a-button>
                             </span> -->
-                            <span style="margin-right: 20px">
+                            <span style="margin-right: 15px">
                                 <a-range-picker
                                     v-model="dateMiddleProject"
                                     :ranges="dateRanges"
                                     @change="dateMiddleProjectChange"
                                 />
                             </span>
+                            <a-button @click="exportExcel" :loading="visibleLoading" style="margin-right: 15px">
+                                导 出
+                            </a-button>
+                            <span>
+                                <a-radio-group v-model="mediaIdAccount" @change="projectAccountChange">
+                                    <a-radio-button value="2"> 快手 </a-radio-button>
+                                    <a-radio-button value="1"> 头条 </a-radio-button>
+                                </a-radio-group>
+                            </span>
                             <!-- <span>
                                 <a-radio-group v-model="projectAccount" @change="projectAccountChange">
                                     <a-radio-button value="a"> 项目 </a-radio-button>
@@ -242,6 +270,17 @@
                     >
                         <!-- <a slot="projectName" slot-scope="text, record" @click="projectNameClick(record)">{{ text }}</a>
                         <a slot="accountName" slot-scope="text, record" @click="accountNameClick(record)">{{ text }}</a> -->
+
+                        <span slot="yearOnYear" slot-scope="text, records">
+                            {{ text }}
+                            <a-icon v-if="text && parseFloat(text) > 0" type="caret-up" style="color: #f00" />
+                            <a-icon v-else type="caret-down" style="color: green" />
+                        </span>
+                        <span slot="equallyRate" slot-scope="text, records">
+                            {{ text }}
+                            <a-icon v-if="text && parseFloat(text) > 0" type="caret-up" style="color: #f00" />
+                            <a-icon v-else type="caret-down" style="color: green" />
+                        </span>
                         <div slot="jl" slot-scope="text, record">
                             {{
                                 record.adSceneDate.findIndex((item) => {
@@ -344,6 +383,12 @@ export default {
     components: { customColumnProject },
     data() {
         return {
+            spinning: false,
+            spinningGroup: false,
+            mediaId: '2',
+            mediaIdGroup: '2',
+            mediaIdAccount: '2',
+            mediaIdDetail: '2',
             visibleLoading: false,
             scrollX: 1500,
             visible: false,
@@ -596,22 +641,23 @@ export default {
 
             var getUrl = ''
             var params = {}
-            if (this.projectAccount == 'a') {
-                getUrl =
-                    process.env.VUE_APP_BASE_STARE_URL +
-                    '/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateProjectInfo'
-                params.startTime = this.dateMiddleProject[0].format('YYYY-MM-DD')
-                params.endTime = this.dateMiddleProject[1].format('YYYY-MM-DD')
-                params.userId = this.userInfo().id
-            } else {
-                getUrl =
-                    process.env.VUE_APP_BASE_STARE_URL +
-                    '/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateAccountInfo'
-                params.startTime = this.dateMiddleProject[0].format('YYYY-MM-DD')
-                params.endTime = this.dateMiddleProject[1].format('YYYY-MM-DD')
-                params.userId = this.userInfo().id
-                params.projectId = this.projectId
-            }
+            // if (this.projectAccount == 'a') {
+            getUrl =
+                process.env.VUE_APP_BASE_STARE_URL +
+                '/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateProjectInfo'
+            params.startTime = this.dateMiddleProject[0].format('YYYY-MM-DD')
+            params.endTime = this.dateMiddleProject[1].format('YYYY-MM-DD')
+            params.userId = this.userInfo().id
+            params.mediaType = this.mediaIdAccount
+            // } else {
+            //     getUrl =
+            //         process.env.VUE_APP_BASE_STARE_URL +
+            //         '/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateAccountInfo'
+            //     params.startTime = this.dateMiddleProject[0].format('YYYY-MM-DD')
+            //     params.endTime = this.dateMiddleProject[1].format('YYYY-MM-DD')
+            //     params.userId = this.userInfo().id
+            //     params.projectId = this.projectId
+            // }
 
             //   项目 /material/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateProjectInfo?startTime=2022-04-27&endTime=2022-04-27&userId=e9ca23d68d884d4ebb19d07889727dae
             //   账户 /material/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateAccountInfo?projectId=8220885&startTime=2022-04-27&endTime=2022-04-27&userId=e9ca23d68d884d4ebb19d07889727dae
@@ -639,6 +685,7 @@ export default {
                 startTime: this.dateMiddleProject[0].format('YYYY-MM-DD'),
                 endTime: this.dateMiddleProject[1].format('YYYY-MM-DD'),
                 userId: this.userInfo().id,
+                mediaType: this.mediaIdAccount,
                 pageNum: this.echartsIpaginationProject.current,
                 pageSize: this.echartsIpaginationProject.pageSize,
             }
@@ -652,6 +699,9 @@ export default {
                     // columnsProject
                     this.echartsDataProject = res.result.list
                     this.echartsIpaginationProject.total = res.result.total
+                } else {
+                    this.echartsDataProject = []
+                    this.echartsIpaginationProject.total = 0
                 }
             })
         },
@@ -669,17 +719,20 @@ export default {
             // console.log(pagination, filters, sorter)
             this.echartsIpaginationProject.current = pagination.current
             this.echartsIpaginationProject.pageSize = pagination.pageSize
-            if (this.projectAccount == 'a') {
-                this.getItemList()
-            } else {
-                this.getAccountData()
-            }
+            this.getItemList()
+            // if (this.projectAccount == 'a') {
+            //     this.getItemList()
+            // } else {
+            //     this.getAccountData()
+            // }
         },
         getAccountData() {
+            this.echartsLoading = true
             let params = {
                 startTime: this.dateMiddleProject[0].format('YYYY-MM-DD'),
                 endTime: this.dateMiddleProject[1].format('YYYY-MM-DD'),
                 userId: this.userInfo().id,
+                mediaType: this.mediaIdAccount,
                 pageNum: this.echartsIpaginationProject.current,
                 pageSize: this.echartsIpaginationProject.pageSize,
                 projectId: this.projectId,
@@ -709,28 +762,41 @@ export default {
                 this.getAccountData()
             })
         },
+        changeGetGroupList() {
+            this.groupIpagination.current = 1
+            this.getGroupList()
+        },
         projectAccountChange(ent) {
-            this.echartsLoading = true
-            if (ent.target.value == 'a') {
-                this.titleList = '项目列表'
-                this.columnsFixd = keepPersonData.setNoDeleteColumns()
-                this.listNum = keepPersonData.setNoDeleteColumns()
-                this.projectId = ''
-                this.columnsProject = [...this.columnsFixd]
-                this.echartsIpaginationProject.current = 1
-                // this.showColumn()
-                this.getItemList()
+            if (this.mediaIdAccount == '2') {
+                this.scrollX = 1500
+                this.columnsProject = keepPersonData.setNoDeleteColumns()
             } else {
-                this.titleList = '账户列表'
-                this.columnsFixd = keepPersonData.setNoDeleteProjectColumns()
-                this.listNum = keepPersonData.setNoDeleteProjectColumns()
-                console.log(this.columnsFixd)
-                this.columnsProject = [...this.columnsFixd]
-                // this.showColumn()
-                this.echartsIpaginationProject.current = 1
-                this.getAccountData()
+                this.scrollX = 0
+                this.columnsProject = keepPersonData.setNoTtDeleteColumns()
             }
-            this.projectAccount = ent.target.value
+            this.echartsIpaginationProject.current = 1
+            this.getItemList()
+            // this.echartsLoading = true
+            // if (ent.target.value == 'a') {
+            //     this.titleList = '项目列表'
+            //     this.columnsFixd = keepPersonData.setNoDeleteColumns()
+            //     this.listNum = keepPersonData.setNoDeleteColumns()
+            //     this.projectId = ''
+            //     this.columnsProject = [...this.columnsFixd]
+            //     this.echartsIpaginationProject.current = 1
+            //     // this.showColumn()
+            //     this.getItemList()
+            // } else {
+            //     this.titleList = '账户列表'
+            //     this.columnsFixd = keepPersonData.setNoDeleteProjectColumns()
+            //     this.listNum = keepPersonData.setNoDeleteProjectColumns()
+            //     console.log(this.columnsFixd)
+            //     this.columnsProject = [...this.columnsFixd]
+            //     // this.showColumn()
+            //     this.echartsIpaginationProject.current = 1
+            //     this.getAccountData()
+            // }
+            // this.projectAccount = ent.target.value
             // this.showColumn();
         },
         accountNameClick(row) {
@@ -743,10 +809,12 @@ export default {
         },
         // 运营组数据
         getOperationGroupData() {
+            this.cancel()
+            this.spinningGroup = true
             let params = {
                 startTime: this.dateEchart[0].format('YYYY-MM-DD'),
                 endTime: this.dateEchart[1].format('YYYY-MM-DD'),
-                mediaType: 2,
+                mediaType: this.mediaId,
                 userId: this.userInfo().id,
             }
             this.getAction(
@@ -754,6 +822,7 @@ export default {
                     '/kuaiShouOpreate/kuaiShouMaterialStareController/kuaiShouOperateDateTotal',
                 params
             ).then((res) => {
+                this.spinningGroup = false
                 if (res.code == 0) {
                     if (res.result.todayCost) {
                         this.todayCost = res.result.todayCost
@@ -793,6 +862,7 @@ export default {
                 userId: this.userInfo().id,
                 pageNum: this.echartsIpagination.current,
                 pageSize: this.echartsIpagination.pageSize,
+                mediaType: this.mediaIdDetail,
             }
             this.getAction(
                 process.env.VUE_APP_BASE_STARE_URL +
@@ -809,9 +879,12 @@ export default {
 
         // 运营组数据
         getGroupList() {
+            this.groupLoading = true
+            this.groupList = []
             let params = {
                 startTime: this.dateMiddleGroup[0].format('YYYY-MM-DD'),
                 endTime: this.dateMiddleGroup[1].format('YYYY-MM-DD'),
+                mediaType: this.mediaIdGroup,
                 userId: this.userInfo().id,
                 pageNum: this.groupIpagination.current,
                 pageSize: this.groupIpagination.pageSize,
@@ -825,6 +898,9 @@ export default {
                 if (res.code == 0) {
                     this.groupList = res.result.list
                     this.groupIpagination.total = res.result.total
+                } else {
+                    this.groupList = []
+                    this.groupIpagination.total = 0
                 }
             })
         },
@@ -836,6 +912,7 @@ export default {
             this.echartsIpagination.pageSize = pagination.pageSize
             this.getOperateDetails()
         },
+
         dateMiddleChange() {
             this.echartsLoadingYun = true
             this.echartsIpagination.current = 1
@@ -854,12 +931,13 @@ export default {
                 userId: this.userInfo().id,
                 pageNum: this.echartsIpagination.current,
                 pageSize: this.echartsIpagination.pageSize,
+                mediaType: this.mediaIdDetail,
             }
             window.location.href = `${
                 process.env.VUE_APP_BASE_STARE_URL
             }${'/kuaiShouOpreate/kuaiShouMaterialStareController/exportKuaiShouOperateInfo'}?startTime=${
                 params.startTime
-            }&endTime=${params.endTime}&userId=${params.userId}&pageNum=${params.pageNum}&pageSize=${params.pageSize}`
+            }&endTime=${params.endTime}&userId=${params.userId}&pageNum=${params.pageNum}&pageSize=${params.pageSize}&mediaType=${params.mediaType}`
         },
         exportClickGroup() {
             let params = {
@@ -868,18 +946,22 @@ export default {
                 userId: this.userInfo().id,
                 pageNum: this.groupIpagination.current,
                 pageSize: this.groupIpagination.pageSize,
+                mediaType: this.mediaIdGroup,
             }
             window.location.href = `${
                 process.env.VUE_APP_BASE_STARE_URL
             }${'/kuaiShouOpreate/kuaiShouMaterialStareController/exportOperationGroupData'}?startTime=${
                 params.startTime
-            }&endTime=${params.endTime}&userId=${params.userId}&pageNum=${params.pageNum}&pageSize=${params.pageSize}`
+            }&endTime=${params.endTime}&userId=${params.userId}&pageNum=${params.pageNum}&pageSize=${
+                params.pageSize
+            }&mediaType=${params.mediaType}`
         },
         getQueryNewlyData() {
+            this.spinning = true
             let params = {
                 startTime: this.dateEchart[0].format('YYYY-MM-DD'),
                 endTime: this.dateEchart[1].format('YYYY-MM-DD'),
-                mediaType: 2,
+                mediaType: this.mediaId,
                 type: this.selectValue,
                 userId: this.userInfo().id,
             }
@@ -887,9 +969,10 @@ export default {
                 process.env.VUE_APP_BASE_STARE_URL + '/kuaiShouOpreate/kuaiShouMaterialStareController/kuaiShousumData',
                 params
             ).then((res) => {
+                this.spinning = false
                 if (res.code == 0) {
                     this.updateAccountEchart = res.timestamp
-                    if (res.message == '查询-时报-汇总。') {
+                    if (this.selectValue == '1') {
                         this.todayList = res.result.todayList.map((item) => {
                             return item.totalCost
                         })
@@ -927,7 +1010,7 @@ export default {
                                 this.yestadyNum
                             )
                         )
-                    } else if (res.message == '查询-日报-汇总成功。') {
+                    } else if (this.selectValue == '3') {
                         let consumptionSummary = []
                         consumptionSummary = res.result.map((itemday) => {
                             return itemday.totalCost
@@ -949,7 +1032,7 @@ export default {
                                 this.yestadyNum
                             )
                         )
-                    } else if (res.message == '查询-时报-运营个人消耗top5成功。') {
+                    } else if (this.selectValue == '2') {
                         this.lengthData = res.result.map((i) => {
                             return i.userName
                         })
@@ -970,7 +1053,11 @@ export default {
                         let series = []
                         let array = []
                         this.timeData = res.result[0].data.map((element) => {
-                            return element.hour
+                            if (element.hour) {
+                                return element.hour
+                            } else {
+                                return element.dateTime
+                            }
                         })
                         console.log(this.timeData)
                         series = res.result.map((item) => {
@@ -1044,6 +1131,9 @@ export default {
                 }
             })
         },
+        selectMediaIdChange() {
+            this.dateEchartChange()
+        },
         selectValueChange() {
             if (this.selectValue == 1) {
                 this.yestadyNum = 1

+ 82 - 2
src/views/modules/stockWatch/modules/new-keepManage/new-keep-data.js

@@ -47,6 +47,7 @@ class keepPersonServer {
                 width: 150,
                 tip: '',
                 align: 'center',
+                scopedSlots: { customRender: 'yearOnYear' },
 
             }, {
                 title: '花费同比',
@@ -54,7 +55,7 @@ class keepPersonServer {
                 width: 150,
                 tip: '',
                 align: 'center',
-
+                scopedSlots: { customRender: 'equallyRate' },
             }, {
                 title: '爆款素材数',
                 dataIndex: 'newHotNum',
@@ -126,7 +127,7 @@ class keepPersonServer {
 
             },
             {
-                title: '上下大屏广告',
+                title: '上下大屏广告',
                 dataIndex: 'sxh',
                 width: 150,
                 tip: '',
@@ -158,6 +159,85 @@ class keepPersonServer {
         ]
     }
 
+    // 固定不可删除的列
+    setNoTtDeleteColumns() {
+        return [
+            {
+                title: '项目名称',
+                dataIndex: 'projectName',
+                scopedSlots: { customRender: 'projectName' },
+                align: 'center',
+                key: 'date',
+
+            },
+            {
+                title: '账户数量',
+                dataIndex: 'accountNum',
+                align: 'center',
+            },
+            {
+                title: '运营人员',
+                dataIndex: 'userNum',
+                scopedSlots: { customRender: 'userNum' },
+                align: 'center',
+            },
+            {
+                title: '消耗(元)',
+                dataIndex: 'totalCost',
+                align: 'center',
+                sorter: (a, b) => a.totalCost - b.totalCost,
+            },
+            {
+                title: '花费环比',
+                dataIndex: 'yearOnYear',
+                tip: '',
+                align: 'center',
+                scopedSlots: { customRender: 'yearOnYear' },
+
+            }, {
+                title: '花费同比',
+                dataIndex: 'equallyRate',
+                tip: '',
+                align: 'center',
+                scopedSlots: { customRender: 'equallyRate' },
+            }, {
+                title: '爆款素材数',
+                dataIndex: 'newHotNum',
+                tip: '',
+                align: 'center',
+
+            },
+            // {
+            //     title: '上传素材数',
+            //     dataIndex: 'adspNum',
+            //     tip: '',
+            //     align: 'center',
+
+            // },
+            // {
+            //     title: '上新素材数',
+            //     dataIndex: 'mediaNum',
+            //     tip: '',
+            //     align: 'center',
+
+            // },
+            {
+                title: '基建数量',
+                dataIndex: 'newUnitNum',
+                tip: '',
+                align: 'center',
+
+            },
+            // {
+            //     title: '托管基建数',
+            //     dataIndex: 'trustUnitNum',
+            //     tip: '',
+            //     align: 'center',
+
+            // },
+        ]
+    }
+
     setNoDeleteProjectColumns() {
         return [
             {

+ 3 - 6
vue.config.js

@@ -108,7 +108,7 @@ module.exports = {
         // target: 'http://192.168.1.59:7701', //请求本地 需要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后台项目
+        target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
@@ -116,11 +116,8 @@ module.exports = {
         // target:'http://118.24.244.213:8804',
         // target: 'http://192.168.1.43:9999', // 子安
         // target: 'http://192.168.1.8:9999', // 学超
-        // target:'http://gateway.tjyourong.com.cn', //测试
-        // target:'http://apipre.tjyourong.com.cn', //预生产
-        // target: 'http://192.168.1.134:7001', //请求本地 需要jeecg-boot后台项目  周泽宇
-        target:'http://192.168.0.195:9999/',
-        // target:'http://gateway.tjyourong.com.cn/',//测试
+        // target:'http://192.168.0.195:9999/',//测试
+
 
         ws: false,