瀏覽代碼

'穿山甲'

魏志佳 5 年之前
父節點
當前提交
744f698be5
共有 26 個文件被更改,包括 1041 次插入215 次删除
  1. 2 0
      debug.log
  2. 3 0
      src/components/jeecg/JTreeSelect.vue
  3. 214 0
      src/components/jeecg/noParentTreeSelect.vue
  4. 1 1
      src/views/modules/Statistics/accountMaterStatistics.vue
  5. 1 1
      src/views/modules/Statistics/caicaicai/dayStatistics.vue
  6. 15 8
      src/views/modules/Statistics/components/Treeselect.vue
  7. 2 2
      src/views/modules/Statistics/components/selecTable.vue
  8. 41 38
      src/views/modules/Statistics/videoStatics/vDay.vue
  9. 43 30
      src/views/modules/Statistics/videoStatics/vMonth.vue
  10. 56 50
      src/views/modules/Statistics/videoStatics/vSummary.vue
  11. 65 47
      src/views/modules/Statistics/videoStatics/vWeek.vue
  12. 1 1
      src/views/modules/Statistics/yicheStatistics/dayStatistics.vue
  13. 1 1
      src/views/modules/Statistics/yicheStatistics/timeStatistics.vue
  14. 2 2
      src/views/modules/advertiser/AdvertiserList.vue
  15. 22 3
      src/views/modules/advertiser/ProjectList.vue
  16. 2 1
      src/views/modules/advertiser/UserAllocationList.vue
  17. 1 1
      src/views/modules/advertiser/modules/AdvertiserModal.vue
  18. 5 12
      src/views/modules/advertiser/modules/ProjectModal.vue
  19. 2 0
      src/views/modules/advertiser/modules/UserAllocationModal.vue
  20. 1 1
      src/views/modules/kuaishouapp/account/accountIndex.vue
  21. 478 7
      src/views/modules/kuaishouapp/account/stepForm/Step3.vue
  22. 69 4
      src/views/modules/material/videoMaterial.vue
  23. 2 2
      src/views/oceanengine/AdList.vue
  24. 1 1
      src/views/oceanengine/EffectCaseList.vue
  25. 2 2
      src/views/oceanengine/HotMaterialList.vue
  26. 9 0
      vue.config.js

+ 2 - 0
debug.log

@@ -1 +1,3 @@
 [0525/133323.308:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
+[0529/110148.397:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
+[0529/112937.608:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0

+ 3 - 0
src/components/jeecg/JTreeSelect.vue

@@ -91,6 +91,7 @@
           this.treeValue = ""
         } else {
           getAction(`${this.view}${this.dict}`, {key: this.value}).then(res => {
+              console.log(res.result)
             if (res.success) {
               this.treeValue = {
                 key: this.value,
@@ -166,8 +167,10 @@
         }
         getAction(this.url, param).then(res => {
           if (res.success && res.result) {
+              console.log(res.result)
             for (let i of res.result) {
               i.value = i.key
+            //   i.disabled = true
               if (i.leaf == false) {
                 i.isLeaf = false
               } else if (i.leaf == true) {

+ 214 - 0
src/components/jeecg/noParentTreeSelect.vue

@@ -0,0 +1,214 @@
+<template>
+  <a-tree-select
+    allowClear
+    labelInValue
+    style="width: 100%"
+    :disabled="disabled"
+    :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
+    :placeholder="placeholder"
+    :loadData="asyncLoadTreeData"
+    :value="treeValue"
+    :treeData="treeData"
+    @change="onChange"
+    @search="onSearch">
+  </a-tree-select>
+</template>
+<script>
+
+  /*
+  * 异步树加载组件 通过传入表名 显示字段 存储字段 加载一个树控件
+  * <j-tree-select dict="aa_tree_test,aad,id" pid-field="pid" ></j-tree-select>
+  * */
+  import {getAction} from '@/api/manage'
+
+  export default {
+    name: 'JTreeSelect',
+    props: {
+      value: {
+        type: String,
+        required: false
+      },
+      placeholder: {
+        type: String,
+        default: '请选择',
+        required: false
+      },
+      dict: {
+        type: String,
+        default: '',
+        required: false
+      },
+      pidField: {
+        type: String,
+        default: 'pid',
+        required: false
+      },
+      pidValue: {
+        type: String,
+        default: '0',
+        required: false
+      },
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      },
+      hasChildField: {
+        type: String,
+        default: '',
+        required: false
+      }
+    },
+    data() {
+      return {
+        treeValue: "",
+        treeData: [],
+        url: "/sys/dict/loadTreeData",
+        view: '/sys/dict/loadDictItem/',
+        tableName: "",
+        text: "",
+        code: "",
+
+      }
+    },
+    watch: {
+      value() {
+        this.loadItemByCode()
+      },
+      dict() {
+        this.initDictInfo()
+        this.loadRoot();
+      }
+    },
+    created() {
+      this.initDictInfo()
+      this.loadRoot()
+      this.loadItemByCode()
+    },
+    methods: {
+      loadItemByCode() {
+        if (!this.value || this.value == "0") {
+          this.treeValue = ""
+        } else {
+          getAction(`${this.view}${this.dict}`, {key: this.value}).then(res => {
+            if (res.success) {
+              this.treeValue = {
+                key: this.value,
+                value: this.value,
+                label: res.result
+              }
+            }
+          })
+        }
+      },
+      initDictInfo() {
+        let arr = this.dict.split(",")
+        this.tableName = arr[0]
+        this.text = arr[1]
+        this.code = arr[2]
+      },
+      asyncLoadTreeData(treeNode) {
+        return new Promise((resolve) => {
+          if (treeNode.$vnode.children) {
+            resolve()
+            return
+          }
+          let pid = treeNode.$vnode.key
+          let param = {
+            pid: pid,
+            tableName: this.tableName,
+            text: this.text,
+            code: this.code,
+            pidField: this.pidField,
+            hasChildField: this.hasChildField
+          }
+          getAction(this.url, param).then(res => {
+            if (res.success) {
+              for (let i of res.result) {
+                i.value = i.key
+                if (i.leaf == false) {
+                  i.isLeaf = true
+                } else if (i.leaf == true) {
+                  i.isLeaf = true
+                }
+              }
+              this.addChildren(pid, res.result, this.treeData)
+              this.treeData = [...this.treeData]
+            }
+            resolve()
+          })
+        })
+      },
+      addChildren(pid, children, treeArray) {
+        if (treeArray && treeArray.length > 0) {
+          for (let item of treeArray) {
+            if (item.key == pid) {
+              if (!children || children.length == 0) {
+                item.isLeaf = true
+              } else {
+                item.children = children
+              }
+              break
+            } else {
+              this.addChildren(pid, children, item.children)
+            }
+          }
+        }
+      },
+      loadRoot() {
+        let param = {
+          pid: this.pidValue,
+          tableName: this.tableName,
+          text: this.text,
+          code: this.code,
+          pidField: this.pidField,
+          hasChildField: this.hasChildField
+        }
+        getAction(this.url, param).then(res => {
+          if (res.success && res.result) {
+              console.log(res.result)
+            for (let i of res.result) {
+              i.value = i.key
+              i.selectable = false
+              if (i.leaf == false) {
+                i.isLeaf = false
+              } else if (i.leaf == true) {
+                i.isLeaf = true
+              }
+            }
+            this.treeData = [...res.result]
+          } else {
+            console.log("数根节点查询结果-else", res)
+          }
+        })
+      },
+      onChange(value,label,extra) {
+          console.log(extra)
+        if (!value) {
+          this.$emit('change', '');
+          this.treeValue = ''
+        } else {
+            // if(extra.triggerNode.$children.length==0){
+                this.$emit('change', value.value);
+                this.treeValue = value
+            // }else{
+
+            // }
+          
+        }
+
+      },
+      onSearch(value) {
+        console.log(value)
+      },
+      getCurrTreeData() {
+        return this.treeData
+      }
+    },
+    //2.2新增 在组件内定义 指定父组件调用时候的传值属性和事件类型 这个牛逼
+    model: {
+      prop: 'value',
+      event: 'change'
+    }
+  }
+</script>

+ 1 - 1
src/views/modules/Statistics/accountMaterStatistics.vue

@@ -47,7 +47,7 @@ th div {
       <a-row type="flex" align="middle" justify="space-between" class="panel-body">
         <div class="search-bar" style="width:100%">
           <span>账户选择:</span>
-          <treeselect :appId.sync="appId" request="2"/>
+          <treeselect :appId.sync="appId" request="2,4"/>
           <a-button type="primary" style="margin:10px" @click="addUser">搜索</a-button>
           <a-button
             type="primary"

+ 1 - 1
src/views/modules/Statistics/caicaicai/dayStatistics.vue

@@ -78,7 +78,7 @@ th div {
           >
             <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
               {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
-                item.mediaId == '1' ? '头条' : '快手'
+                item.mediaId == "1" ? '头条' :item.mediaId == "2"? '快手':item.mediaId == "3"?'头条内广':'快手内广'
               }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.advertiserName }}
             </a-select-option>
           </a-select>

+ 15 - 8
src/views/modules/Statistics/components/Treeselect.vue

@@ -16,6 +16,7 @@
       :auto-load-root-options="false"
       @select="update"
       @input="emitValue"
+      @open="getParticipateList"
       :limit="2"
       :limitText="
         count => {
@@ -57,7 +58,7 @@ export default {
     request: {
       type: String,
       default() {
-        return '2'
+        return '2,4'
       }
     },
     reqUrl: {
@@ -73,7 +74,7 @@ export default {
     $route(n, o) {},
     appId: {
       handler(n, o) {
-        console.log(n)
+        // console.log(n)
         if (n.length == 0) {
           if (this.multiple) {
             this.value = []
@@ -88,9 +89,8 @@ export default {
   methods: {
     ...mapGetters(['nickname', 'avatar', 'userInfo']),
     update(node, id) {
-
       getAction('/ctop/userAllocation/getAccountListByProjectId', { projectId: node.id }).then(res => {
-        console.log(res)
+        // console.log(res)
         if (res.code == 0) {
           if (res.result.length > 0) {
             node.children = res.result.map(item => {
@@ -117,7 +117,6 @@ export default {
       // assign children options to the parent node & call the callback.
       if (action === LOAD_CHILDREN_OPTIONS) {
         getAction('/ctop/userAllocation/getAccountListByProjectId', { projectId: parentNode.id }).then(res => {
-          console.log(res)
           if (res.code == 0) {
             if (res.result.length > 0) {
               parentNode.children = res.result.map(item => {
@@ -142,10 +141,18 @@ export default {
       //   toutiaoParticipateList
       getAction(this.reqUrl, { userId: this.userInfo().id }).then(res => {
         if (res.code == 0) {
+          var arr = this.request.split(',')
+          var dataTwo  = []
           var data = res.result.filter(item => {
-            return item.mediaId == this.request
+                 return item.mediaId == arr[0]
           })
-          this.options = data.map(item => {
+          if(arr.length>1){
+            dataTwo = res.result.filter(item => {
+                return item.mediaId == arr[1]
+            })
+          }
+          var allData = data.concat(dataTwo)
+          this.options = allData.map(item => {
             return {
               id: item.projectId,
               label: item.projectName + '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0' + item.advertiserName,
@@ -158,7 +165,7 @@ export default {
   },
 
   mounted() {
-    this.getParticipateList()
+    // this.getParticipateList()
   }
 }
 </script>

+ 2 - 2
src/views/modules/Statistics/components/selecTable.vue

@@ -30,7 +30,7 @@
         :scroll="{ y: 300 }"
         :customRow="rowClick"
       >
-        <span slot="mediaId" slot-scope="text">{{ text == '1' ? '头条' : '快手' }}</span>
+        <span slot="mediaId" slot-scope="text">{{ text == '1' ? '头条' : text == '2'? '快手':text == '3'?'头条内广':'快手内广' }}</span>
       </a-table>
     </div>
   </a-form-item>
@@ -120,7 +120,7 @@ export default {
         // 事件
         on: {
           click: () => {
-            var str = record.mediaId == '1' ? '头条' : '快手'
+            var str = record.mediaId == '1' ? '头条' : record.mediaId == '2'? '快手':record.mediaId == '3'?'头条内广':'快手内广'
             this.keyValue = record.projectName + ' ' + str
             this.topMiddle = false
             this.data = this.dataElse

+ 41 - 38
src/views/modules/Statistics/videoStatics/vDay.vue

@@ -2,7 +2,7 @@
   <div class="vsummary">
     <div class="xiangmuxuanze">
       <span>项目选择:</span>
-       <Treeselect  :appId.sync="appId"  style="display: inline-block;position: relative;top: 10px;"/>
+       <Treeselect  :appId.sync="appId" request="1,3" reqUrl="/ctop/projectMember/bytedanceProjectParticipateInList"  style="display: inline-block;position: relative;top: 10px;"/>
     </div>
     <div class="timeDiv">
       <div>
@@ -49,11 +49,11 @@
           <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
           <ul class="selectlist">
             <li v-for="(item,index) in listNum" :key="index">
-              <span v-if=" index <4">
+              <span v-if=" index <5">
                 <a-icon type="lock" />
                 <span class="listText">{{item.title}}</span>
               </span>
-              <span v-else-if=" index >=4">
+              <span v-else-if=" index >=5">
                 <a-icon type="menu" style="color:#ccc" />
                 <span class="listText">{{item.title}}</span>
                 <a-icon
@@ -81,7 +81,7 @@
       ref="vSummaryTable"
       :width='tableWidth'
       style="word-break: break-all;"
-      
+      @change="sort"
     >
       <div slot="videoU" slot-scope="test,records">
         <img  :src="records.url+'?x-oss-process=video/snapshot,t_0,m_fast'"  alt=""  style="width:140px"  @click="openVideo(records.url)" @load="loadShow">
@@ -148,7 +148,7 @@ import moment from 'moment'
 import { JeecgListMixin } from '@/mixins/ipagination'
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
 import selectComponent from './selectComponent'
-import Treeselect from './Treeselect.vue'
+import Treeselect from '../components/Treeselect'
 const columnsFixd = [
   {
     title: '时间',
@@ -166,6 +166,13 @@ const columnsFixd = [
     key: 'videoU',
     scopedSlots: { customRender: 'videoU' }
   },
+   {
+    title: '项目名称',
+    dataIndex: 'projectName',
+    align: 'center',
+    width: 100,
+    fixed: 'left'
+  },
   {
     title: '视频ID',
     dataIndex: 'signature',
@@ -307,19 +314,25 @@ export default {
   },
    watch:{
       'ipagination.current':function(n,o){
-          console.log(n,o)
-          if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
+         
             this.HttpPost()
-          }
           
       }
   },
   mixins: [JeecgListMixin],
   methods: {
+      sort(pagination, filters, sorter, { currentDataSource }){
+         if(sorter.order == 'ascend'){
+              this.HttpPost(sorter.columnKey+'+')
+          }else if(sorter.order == 'descend'){
+              this.HttpPost(sorter.columnKey+'-')
+          }
+
+
+      },
     moment,
     loadShow(){
         show++
-        console.log(show)
         if(this.data.length>0){
             if(show == (this.data.length*2)){
                 this.data = [...this.data]
@@ -356,33 +369,32 @@ export default {
           .subtract(1, 'days')
           .format('YYYY-MM-DD')
       this.dateRange=moment(yesterday)
-      console.log(this.dateRange);
       this.timedata=moment(yesterday).format('YYYY-MM-DD')
       // this.totalSelect = 1
       // this.daysFlag = true
-      if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+     
+        this.HttpPost()
       
     },
     //table数据查询时间
-    HttpPost(){
+    HttpPost(sort){
       this.loading = true
       this.date = []
       show = 0
       postAction('/toutiao/videoReportDaily/bytedanceVideoInfoListDaily', {
-        date: this.timedata,
+        // date: this.timedata,
+        startDate: this.timedata,
+        endDate: this.timedata,
         cost: this.consumeValue,
         signature:this.videoID,
         pageNo:this.ipagination.current,
         pageSize:this.ipagination.pageSize,
-        projectIds:this.appId
+        // projectIds:this.appId,
+        accountIds:this.appId,
+        sort:sort?sort:''
       }).then(res => {
         let resArr = []
         this.loading = false
-        console.log(res)
         if (res.success) {
           let result = res.result
           this.data = result.list.map((item,index)=>{
@@ -397,12 +409,7 @@ export default {
     },
     //查询按钮
     searchRes() {
-      console.log(this.timedata[0])
-      if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+        this.HttpPost()
       
     },
 
@@ -421,12 +428,10 @@ export default {
 
     tableHandle(){
       // this.listNum = [...this.columns]
-      console.log(this.listNum.length,this.columns)
       this.scrollX=0;
       if(this.listNum.length >= 12|| this.columns.length>=12){
           this.tableWidth=120;
           this.scrollX=this.columns.length*140
-          console.log(this.scrollX)
       }else{
         this.scrollX = 0
       }
@@ -448,7 +453,7 @@ export default {
       }
 
       // console.log(this.columns.length)
-      if (this.columns.length == 3) {
+      if (this.columns.length == 4) {
         // console.log(this.listNum.length)
         this.columns.map((item, index) => {
           item.width = 500
@@ -458,7 +463,7 @@ export default {
         this.columns.map((item, index) => {
           if (index == 1||index==2) {
             item.width = 150
-          } else if (index >= 2 && index < 4 || index == 0) {
+          } else if (index >= 2 && index < 5 || index == 0) {
             item.width = 100
           }
         })
@@ -529,8 +534,9 @@ export default {
       // console.log(res)
       if(res.success){
       // console.log(JSON.parse(res.result))
-      let columns=JSON.parse(res.result)
-      if(columns.length){
+      if(res.result){
+        let columns=JSON.parse(res.result)
+        if(columns.length){
            columns.map((item,index)=>{
              if(index>columnsFixd.length-1){
                  item.sorter=function(a,b){  return a[item.dataIndex]-b[item.dataIndex]}
@@ -539,10 +545,10 @@ export default {
             this.columns=[...columnsFixd,...columns]
             this.tableHandle()
         }
-           
-        
         // console.log(this.columns)
       }
+      }
+      
 
     })
   },
@@ -569,11 +575,8 @@ export default {
   mounted() {
       this.dateRange=moment().subtract(1,'days')  
       this.timedata=moment().subtract(1,'days').format('YYYY-MM-DD')
-    if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+    
+        this.HttpPost()
   },
 
 }

+ 43 - 30
src/views/modules/Statistics/videoStatics/vMonth.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="vsummary">
     <div class="xiangmuxuanze">
-      <span>项目选择:</span>
-       <Treeselect  :appId.sync="appId"  style="display: inline-block;position: relative;top: 10px;"/>
+        <span>项目选择:</span>
+       <Treeselect  :appId.sync="appId" request="1,3" reqUrl="/ctop/projectMember/bytedanceProjectParticipateInList"  style="display: inline-block;position: relative;top: 10px;"/>
     </div>
     <div class="timeDiv">
       <div>
@@ -51,11 +51,11 @@
           <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
           <ul class="selectlist">
             <li v-for="(item,index) in listNum" :key="index">
-              <span v-if=" index <5">
+              <span v-if=" index <6">
                 <a-icon type="lock" />
                 <span class="listText">{{item.title}}</span>
               </span>
-              <span v-else-if=" index >=5">
+              <span v-else-if=" index >=6">
                 <a-icon type="menu" style="color:#ccc" />
                 <span class="listText">{{item.title}}</span>
                 <a-icon
@@ -84,6 +84,7 @@
       ref="vSummaryTable"
       style="word-break: break-all;"
       :width='tableWidth'
+      @change="sort"
     >
      
 
@@ -173,7 +174,7 @@ import moment from 'moment'
 import { JeecgListMixin } from '@/mixins/ipagination'
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
 import selectComponent from './selectComponent'
-import Treeselect from './Treeselect.vue'
+import Treeselect from '../components/Treeselect'
 const columnsFixd = [
   {
     title: '时间',
@@ -199,6 +200,13 @@ const columnsFixd = [
     width: 100,
     fixed: 'left'
   },
+   {
+    title: '项目名称',
+    dataIndex: 'projectName',
+    align: 'center',
+    width: 100,
+    fixed: 'left'
+  },
 //   {
 //     title: '视频链接',
 //     dataIndex: 'videoUrl',
@@ -311,10 +319,10 @@ let detailConsum = [
     }
   },
   {
-    title: '视频链接',
-    dataIndex: 'url',
+    title: '项目名称',
+    dataIndex: 'projectName',
     align: 'center',
-    width:250,
+    width:150,
     customRender: (value, row, index) => {
       const obj = {
         children: value,
@@ -412,13 +420,23 @@ export default {
   watch:{
       'ipagination.current':function(n,o){
           console.log(n,o)
-           if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
+          
             this.HttpPost()
-          }
           
       }
   },
   methods: {
+      sort(pagination, filters, sorter, { currentDataSource }){
+          console.log(pagination, filters, sorter)
+          if(sorter.order == 'ascend'){
+              this.HttpPost(sorter.columnKey+'+')
+          }else if(sorter.order == 'descend'){
+              this.HttpPost(sorter.columnKey+'-')
+          }else{
+              this.HttpPost("")
+          }
+
+      },
     moment,
     //select切换---项目
     selectChange(key){
@@ -455,17 +473,14 @@ export default {
       this.totalSelect = (this.dateRange[1]._d - this.dateRange[0]._d) / (24 * 60 * 60 * 1000) + 1;
       this.timedata=[this.dateRange[0]._i,this.dateRange[1]._i]
       this.daysFlag = true
-       if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-          this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+      
+          this.HttpPost()
      
     },
 
     consumeOnChange() {},
     //获取table数据请求
-    HttpPost(){
+    HttpPost(sort){
       this.loading=true;
       this.date=[];
       show = 0
@@ -476,7 +491,8 @@ export default {
         signature: this.videoID,
         pageNo:this.ipagination.current,
         pageSize:this.ipagination.pageSize,
-        projectIds:this.appId
+        accountIds:this.appId,
+        sort:sort?sort:''
       }).then(res => {
         let resArr = []
         this.loading = false
@@ -496,11 +512,8 @@ export default {
     },
     //查询按钮
     searchRes() {
-         if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-            this.HttpPost(); 
-        }else{
-            this.$message.error('请选择项目')
-        }
+        
+        this.HttpPost()
            
     },
 
@@ -595,7 +608,7 @@ export default {
 
       
 
-      if (this.listNum.length == 5) {
+      if (this.listNum.length == 6) {
         this.columns.map((item, index) => {
           item.width = 300
         })
@@ -603,7 +616,7 @@ export default {
         this.columns.map((item, index) => {
           if (index == 1||index==3) {
             item.width = 150
-          } else if (index >= 2 && index < 5 || index == 0) {
+          } else if (index >= 2 && index < 6 || index == 0) {
             item.width = 100
           }
         })
@@ -680,7 +693,8 @@ export default {
       postAction('/toutiao/videoReportDaily/bytedanceVideoInfoListDetail', {
         startDate: this.timedata[0],
         endDate: this.timedata[1],
-        signature: record.signature
+        signature: record.signature,
+        accountIds:this.appId
       }).then(res => {
         let resArr = []
 
@@ -709,6 +723,7 @@ export default {
       // console.log(res)
       if(res.success){
       // console.log(JSON.parse(res.result))
+      if(res.result){
       let columns=JSON.parse(res.result)
       if(columns.length){
         if(columns.length>=columnsFixd.length){
@@ -724,6 +739,7 @@ export default {
         
         // console.log(this.columns)
       }
+      }
      
       }
 
@@ -765,11 +781,8 @@ export default {
       this.totalSelect = (this.dateRange[1]._d - this.dateRange[0]._d) / (24 * 60 * 60 * 1000) + 1;
       this.timedata=[this.dateRange[0]._i,this.dateRange[1]._i]
       this.daysFlag = true
-      if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+      
+        this.HttpPost()
 
   },
 }

+ 56 - 50
src/views/modules/Statistics/videoStatics/vSummary.vue

@@ -2,15 +2,7 @@
   <div class="vsummary">
     <div class="xiangmuxuanze">
       <span>项目选择:</span>
-       <Treeselect  :appId.sync="appId"  style="display: inline-block;position: relative;top: 10px;"/>
-       <!-- <a-tree-select style="width: 60%"
-       v-model="value"
-      :tree-data="treeData"
-      tree-checkable
-      :show-checked-strategy="SHOW_PARENT"
-      search-placeholder="Please select">
-
-       </a-tree-select> -->
+       <Treeselect  :appId.sync="appId" request="1,3" reqUrl="/ctop/projectMember/bytedanceProjectParticipateInList"  style="display: inline-block;position: relative;top: 10px;"/>
     </div>
     <div class="timeDiv">
       <div>
@@ -64,11 +56,11 @@
           <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
           <ul class="selectlist">
             <li v-for="(item,index) in listNum" :key="index">
-              <span v-if=" index <3">
+              <span v-if=" index <4">
                 <a-icon type="lock" />
                 <span class="listText">{{item.title}}</span>
               </span>
-              <span v-else-if=" index >=3">
+              <span v-else-if=" index >=4">
                 <a-icon type="menu" style="color:#ccc" />
                 <span class="listText">{{item.title}}</span>
                 <a-icon
@@ -96,6 +88,7 @@
       ref="vSummaryTable"
       :width="tableWidth"
       @customHeaderCell="customHeaderCell(columns)"
+      @change="sort"
       style="word-break: break-all;"
     >
       <div slot="videoU" slot-scope="test,records">
@@ -187,7 +180,7 @@ import moment from 'moment'
 import { JeecgListMixin } from '@/mixins/ipagination'
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
 import selectComponent from './selectComponent'
-import Treeselect from './Treeselect.vue'
+import Treeselect from '../components/Treeselect'
 const columnsFixd = [
   {
     title: '视频',
@@ -206,6 +199,13 @@ const columnsFixd = [
     fixed: 'left'
   },
   {
+    title: '项目名称',
+    dataIndex: 'projectName',
+    align: 'center',
+    width: 100,
+    fixed: 'left'
+  },
+  {
     title: '视频描述',
     dataIndex: 'materialDesc',
     align: 'center',
@@ -229,6 +229,7 @@ let variableCol = [
 
     scopedSlots: { customRender: 'clickMaterial' },
     sorter: (a, b) => a.clickMaterial - b.clickMaterial
+    // (a, b) => a.clickMaterial - b.clickMaterial
   },
   {
     title: '点击率',
@@ -331,6 +332,15 @@ export default {
     Treeselect
   },
   methods: {
+      sort(pagination, filters, sorter, { currentDataSource }){
+          console.log(pagination, filters, sorter)
+          if(sorter.order == 'ascend'){
+              this.HttpPost(sorter.columnKey+'+')
+          }else if(sorter.order == 'descend'){
+              this.HttpPost(sorter.columnKey+'-')
+          }
+
+      },
     moment,
     //select切换---项目
     selectChange(key){
@@ -355,15 +365,12 @@ export default {
     //查询按钮
     searchRes() {
       this.date = []
-      if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+     
+      this.HttpPost()
       
     },
     //网络请求table数据函数
-    HttpPost(){
+    HttpPost(sort){
       this.loading=true;
       show = 0
       postAction('/toutiao/videoReportDaily/videoInfoListTotal', {
@@ -373,7 +380,8 @@ export default {
         signature: this.videoID,
         pageNo:this.ipagination.current,
         pageSize:this.ipagination.pageSize,
-        projectIds:this.appId
+        accountIds:this.appId,
+        sort:sort?sort:''
       }).then(res => {
         let resArr = []
         
@@ -409,16 +417,18 @@ export default {
       // downFilePost('/ctop/yiche/report/exportDailyReport', params).then(res => {
       //   let blob = new Blob([res], {
       //     type: 'application/vnd.ms-excel'
-      let columns = this.columns.map((item, index) => {
+      let column = this.columns.map((item, index) => {
         return item.dataIndex
       })
-
+        let columns=['url',...column]
+        
       downFilePost('/toutiao/videoReportDaily/bytedanceVideoInfoListTotalExportExcel', {
         columns,
         signature: this.videoID,
         startDate: this.timedata[0],
         endDate: this.timedata[1],
-        cost: this.consumeValue
+        cost: this.consumeValue,
+        accountIds:this.appId,
       }).then(res => {
         let blob = new Blob([res], {
           type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
@@ -460,20 +470,19 @@ export default {
 
     //设置头部单元格属性
     customHeaderCell(columns) {
-      console.log(columns)
+    //   console.log(columns)
     },
 
     tableHandle() {
       // this.listNum = [...this.columns]
-      console.log(this.listNum.length, this.columns)
+    //   console.log(this.listNum.length, this.columns)
 
       if (this.listNum.length >= 9 || this.columns.length >= 9) {
         this.tableWidth = 120
         this.scrollX = this.columns.length * 120
-        console.log(this.scrollX)
+        // console.log(this.scrollX)
       } else {
         this.scrollX = 0
-        console.log('scroll==0')
       }
     },
 
@@ -491,7 +500,7 @@ export default {
         this.columns = [...this.listNum]
       }
 
-      if (this.listNum.length == 3) {
+      if (this.listNum.length == 4) {
         // console.log(this.listNum.length)
         this.scrollX = 0
         this.columns.map((item, index) => {
@@ -602,10 +611,7 @@ export default {
   watch:{
       'ipagination.current':function(n,o){
           console.log(n,o)
-          if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-            this.HttpPost()
-          }
-          
+          this.HttpPost()
       }
   },
   activated() {
@@ -621,23 +627,26 @@ export default {
       // console.log(res)
       if (res.success) {
         // console.log(JSON.parse(res.result))
-        let columns = JSON.parse(res.result)
-        if (columns.length) {
-          if (columns.length >= columnsFixd.length) {
-            columns.map((item, index) => {
-              if (index > columnsFixd.length - 1) {
-                item.sorter = function(a, b) {
-                  return a[item.dataIndex] - b[item.dataIndex]
+        if(res.result){
+            let columns = JSON.parse(res.result)
+            if (columns.length) {
+            if (columns.length >= columnsFixd.length) {
+                columns.map((item, index) => {
+                if (index > columnsFixd.length - 1) {
+                    item.sorter = function(a, b) {
+                    return a[item.dataIndex] - b[item.dataIndex]
+                    }
                 }
-              }
-            })
-            columns = columns.slice(columnsFixd.length)
-            this.columns = [...columnsFixd, ...columns]
-            this.tableHandle()
-          }
+                })
+                columns = columns.slice(columnsFixd.length)
+                this.columns = [...columnsFixd, ...columns]
+                this.tableHandle()
+            }
 
-          // console.log(this.columns)
+            // console.log(this.columns)
+            }
         }
+        
       }
     })
   },
@@ -686,11 +695,8 @@ export default {
     this.dateRange=[moment().subtract(1,'days'),moment()]
     this.timedata=[moment().subtract(1,'days').format('YYYY-MM-DD'),moment().format('YYYY-MM-DD')]
     // this.loading=true;
-    if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+   
+        this.HttpPost()
     
   }
 }

+ 65 - 47
src/views/modules/Statistics/videoStatics/vWeek.vue

@@ -2,7 +2,7 @@
   <div class="vsummary">
     <div class="xiangmuxuanze">
       <span>项目选择:</span>
-       <Treeselect  :appId.sync="appId"  style="display: inline-block;position: relative;top: 10px;"/>
+       <Treeselect  :appId.sync="appId" request="1,3" reqUrl="/ctop/projectMember/bytedanceProjectParticipateInList"  style="display: inline-block;position: relative;top: 10px;"/>
     </div>
     <div class="timeDiv">
       <div>
@@ -51,11 +51,11 @@
           <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
           <ul class="selectlist">
             <li v-for="(item,index) in listNum" :key="index">
-              <span v-if=" index <5">
+              <span v-if=" index <6">
                 <a-icon type="lock" />
                 <span class="listText">{{item.title}}</span>
               </span>
-              <span v-else-if=" index >=5">
+              <span v-else-if=" index >=6">
                 <a-icon type="menu" style="color:#ccc" />
                 <span class="listText">{{item.title}}</span>
                 <a-icon
@@ -84,6 +84,7 @@
       ref="vSummaryTable"
       style="word-break: break-all;"
       :width='tableWidth'
+      @change="sort"
     >
      
 
@@ -173,7 +174,7 @@ import moment from 'moment'
 import { JeecgListMixin } from '@/mixins/ipagination'
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
 import selectComponent from './selectComponent'
-import Treeselect from './Treeselect.vue'
+import Treeselect from '../components/Treeselect'
 const columnsFixd = [
   {
     title: '时间',
@@ -199,6 +200,13 @@ const columnsFixd = [
     width: 100,
     fixed: 'left'
   },
+  {
+    title: '项目名称',
+    dataIndex: 'projectName',
+    align: 'center',
+    width: 100,
+    fixed: 'left'
+  },
 //   {
 //     title: '视频链接',
 //     dataIndex: 'url',
@@ -305,24 +313,24 @@ let detailConsum = [
       return obj
     }
   },
-//   {
-//     title: '视频链接',
-//     dataIndex: 'videoUrl',
-//     align: 'center',
-//     width:250,
-//     customRender: (value, row, index) => {
-//       const obj = {
-//         children: value,
-//         attrs: {}
-//       }
-//       if (index == 0) {
-//         obj.attrs.rowSpan = 7
-//       }else {
-//         obj.attrs.rowSpan = 0
-//       }
-//       return obj
-//     }
-//   },
+  {
+    title: '项目名称',
+    dataIndex: 'projectName',
+    align: 'center',
+    width:150,
+    customRender: (value, row, index) => {
+      const obj = {
+        children: value,
+        attrs: {}
+      }
+      if (index == 0) {
+        obj.attrs.rowSpan = 7
+      }else {
+        obj.attrs.rowSpan = 0
+      }
+      return obj
+    }
+  },
   {
     title: '时间',
     dataIndex: 'statDatetime',
@@ -398,11 +406,7 @@ export default {
      watch:{
       'ipagination.current':function(n,o){
           console.log(n,o)
-         
-          if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-            this.HttpPost()
-          }
-          
+          this.HttpPost()
       }
   },
   components: {
@@ -415,6 +419,15 @@ export default {
   },
   mixins: [JeecgListMixin],
   methods: {
+      sort(pagination, filters, sorter, { currentDataSource }){
+          console.log(pagination, filters, sorter)
+          if(sorter.order == 'ascend'){
+              this.HttpPost(sorter.columnKey+'+')
+          }else if(sorter.order == 'descend'){
+              this.HttpPost(sorter.columnKey+'-')
+          }
+
+      },
     moment,
     loadShow(){
         show++
@@ -457,17 +470,14 @@ export default {
       this.daysFlag = true
       this.timedata=[moment(this.dateRange[0]).format('YYYY-MM-DD'),moment(this.dateRange[1]).format('YYYY-MM-DD')]
       
-          if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+         
+        this.HttpPost()
 
     },
 
     consumeOnChange() {},
     //tableshuju请求
-    HttpPost(){
+    HttpPost(sort){
       this.date = []
       this.loading = true
       show = 0
@@ -478,7 +488,9 @@ export default {
         signature: this.videoID,
          pageNo:this.ipagination.current,
         pageSize:this.ipagination.pageSize,
-        projectIds:this.appId
+        // projectIds:this.appId
+        accountIds:this.appId,
+        sort:sort?sort:''
       }).then(res => {
         let resArr = []
         this.loading = false
@@ -497,11 +509,8 @@ export default {
     //查询按钮
     searchRes() {
       
-      if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+      
+        this.HttpPost()
     },
 
     //导出报表
@@ -586,7 +595,7 @@ export default {
       }
 
 
-      if (this.listNum.length == 5) {
+      if (this.listNum.length == 6) {
         this.columns.map((item, index) => {
           item.width = 300
         })
@@ -594,7 +603,7 @@ export default {
         this.columns.map((item, index) => {
           if (index == 1||index==3) {
             item.width = 150
-          } else if (index >= 2 && index < 5 || index == 0) {
+          } else if (index >= 2 && index < 6 || index == 0) {
             item.width = 100
           }
         })
@@ -671,7 +680,8 @@ export default {
       postAction('/toutiao/videoReportDaily/bytedanceVideoInfoListDetail', {
         startDate: this.timedata[0],
         endDate: this.timedata[1],
-        signature: record.signature
+        signature: record.signature,
+        accountIds:this.appId
       }).then(res => {
         let resArr = []
 
@@ -693,11 +703,14 @@ export default {
     this.statDate = moment().subtract(1, 'day')
     moment().format('YYYY-MM-DD_HH:mm')
 
+
+
     postAction('/toutiao/videoReportDaily/getColumnJson', {
       columnType:3,
     }).then((res)=>{
       // console.log(res)
       if(res.success){
+      if(res.result){
       // console.log(JSON.parse(res.result))
       let columns=JSON.parse(res.result)
       if(columns.length){
@@ -715,6 +728,7 @@ export default {
         // console.log(this.columns)
       }
       }
+      }
 
     })
   },
@@ -745,11 +759,15 @@ export default {
   },
   mounted() {
     // this.lastWeekHandle();
-    if(this.appId.length>0||this.roleCode=='admin'||this.roleCode=='plane'||this.roleCode=='plan'||this.roleCode=='shot'||this.roleCode=='clip'||this.roleCode=='designTeamLeader'||this.roleCode=='planeLeader'){
-        this.HttpPost();
-      }else{
-          this.$message.error('请选择项目')
-      }
+    let lastStart = 
+        moment()
+          .subtract(7, 'days')
+    let lastEnd =   moment()
+          .subtract(1, 'days')
+      
+
+    this.dateRange=[lastStart,lastEnd]
+    this.lastWeekHandle()
   },
 }
 </script>

+ 1 - 1
src/views/modules/Statistics/yicheStatistics/dayStatistics.vue

@@ -78,7 +78,7 @@ th div {
           >
             <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
               {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
-                item.mediaId == '1' ? '头条' : '快手'
+                item.mediaId == "1" ? '头条' :item.mediaId == "2"? '快手':item.mediaId == "3"?'头条内广':'快手内广'
               }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.advertiserName }}
             </a-select-option>
           </a-select>

+ 1 - 1
src/views/modules/Statistics/yicheStatistics/timeStatistics.vue

@@ -78,7 +78,7 @@ th div {
           >
             <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
               {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
-                item.mediaId == '1' ? '头条' : '快手'
+                item.mediaId == "1" ? '头条' :item.mediaId == "2"? '快手':item.mediaId == "3"?'头条内广':'快手内广'
               }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.advertiserName }}
             </a-select-option>
           </a-select>

+ 2 - 2
src/views/modules/advertiser/AdvertiserList.vue

@@ -221,7 +221,7 @@ export default {
         {
           title: '行业',
           align: 'center',
-          dataIndex: 'industryId'
+          dataIndex: 'industryId_dictText'
         },
         {
           title: '联系人姓名',
@@ -241,7 +241,7 @@ export default {
         {
           title: '销售',
           align: 'center',
-          dataIndex: 'saleName'
+          dataIndex: 'saleId_dictText'
         },
 
         {

+ 22 - 3
src/views/modules/advertiser/ProjectList.vue

@@ -9,7 +9,7 @@
               <a-input placeholder="请输入项目名称" v-model="queryParam.projectName"></a-input>
             </a-form-item>
           </a-col>
-           
+
           <a-col :md="6" :sm="8">
             <a-form-item label="广告主名称">
               <a-input placeholder="请输入广告主名称" v-model="queryParam.advertiserName"></a-input>
@@ -40,6 +40,19 @@
                 </a-select>
               </a-form-item>
             </a-col>
+            <a-col :md="6" :sm="6">
+            <a-form-item label="行业">
+                <j-tree-select
+                    v-model="queryParam.industryId"
+                    ref="treeSelect"
+                    placeholder="请选择行业"
+                    dict="sys_category,name,id"
+                    pidField="pid"
+                    pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76"
+                >
+                </j-tree-select>
+                </a-form-item>
+            </a-col>
           </template>
           <a-col :md="6" :sm="8">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
@@ -87,6 +100,7 @@
 
 <script>
   import ProjectModal from './modules/ProjectModal'
+  import JTreeSelect from '@/components/jeecg/JTreeSelect'
   import {
     httpAction,
     getAction
@@ -99,7 +113,8 @@
     name: 'ProjectList',
     mixins: [JeecgListMixin],
     components: {
-      ProjectModal
+      ProjectModal,
+      JTreeSelect
     },
     data() {
       return {
@@ -110,13 +125,17 @@
             align: 'center',
             dataIndex: 'projectName'
           },
-          
           {
             title: '广告主名称',
             align: 'center',
             dataIndex: 'advertiserName'
           },
           {
+            title: '行业类型',
+            align: 'center',
+            dataIndex: 'industryId_dictText'
+          },
+          {
             title: '最高出价',
             align: 'center',
             dataIndex: 'maxBid',

+ 2 - 1
src/views/modules/advertiser/UserAllocationList.vue

@@ -36,7 +36,8 @@
               <a-select v-model="queryParam.projectId" showSearch optionFilterProp="children"
                 :filterOption="filterOption">
                 <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
-                  {{ item.mediaId == '1' ? '头条' : '快手' }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
+                  {{ item.mediaId == "1" ? '头条' :item.mediaId == "2"? '快手':item.mediaId == "3"?'头条内广':'快手内广'
+                   }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
                     item.projectName
                   }}
                 </a-select-option>

+ 1 - 1
src/views/modules/advertiser/modules/AdvertiserModal.vue

@@ -59,7 +59,7 @@
     getAction
   } from '@/api/manage'
   import pick from 'lodash.pick'
-  import JTreeSelect from '@/components/jeecg/JTreeSelect'
+  import JTreeSelect from '@/components/jeecg/noParentTreeSelect'
   import moment from "moment"
   import {
     mapGetters

+ 5 - 12
src/views/modules/advertiser/modules/ProjectModal.vue

@@ -21,17 +21,9 @@
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="项目名称">
           <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" />
         </a-form-item>
-        
-        <a-form-item label="行业" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <j-tree-select 
-            ref="treeSelect"
-            placeholder="请选择行业"
-            dict="sys_category,name,id"
-            pidField="pid"
-            pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76"
-            v-decorator="['industryId', validatorRules.industryId]"
-           
-          >
+         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="行业">
+          <j-tree-select ref="treeSelect" placeholder="请选择行业" v-decorator="['industryId', validatorRules.pid]"
+            dict="sys_category,name,id" pidField="pid" pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76">
           </j-tree-select>
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="广告主名称">
@@ -131,7 +123,7 @@ import pick from 'lodash.pick'
 import moment from 'moment'
 import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
 import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
-import JTreeSelect from '@/components/jeecg/JTreeSelect'
+import JTreeSelect from '@/components/jeecg/noParentTreeSelect'
 import { mapGetters } from 'vuex'
 export default {
   name: 'ProjectModal',
@@ -248,6 +240,7 @@ export default {
             'userId',
             'designResponsibleId',
             'responsibleId',
+            'industryId'
             // 'advertiserType',
             // 'saleId'
           )

+ 2 - 0
src/views/modules/advertiser/modules/UserAllocationModal.vue

@@ -48,6 +48,8 @@
           <a-select v-decorator="['mediaId', {}]" disabled>
             <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>
         </a-form-item>
         <a-form-item label="系统名称" :labelCol="labelCol" :wrapperCol="wrapperCol">

+ 1 - 1
src/views/modules/kuaishouapp/account/accountIndex.vue

@@ -12,7 +12,7 @@
   <div class="account-index">
     <a-row class="image-list-heading vm-panel">
       <a-col :span="24" style="display:flex">
-        <Treeselect :appId.sync="appId" :multiple="false" ref="treeSelect" style="margin:8px 20px" />
+        <Treeselect :appId.sync="appId"  :multiple="false" request="2,4" ref="treeSelect" style="margin:8px 20px" />
         <a-button type="primary" style="margin:10px" @click="addUser">搜索</a-button>
       </a-col>
     </a-row>

+ 478 - 7
src/views/modules/kuaishouapp/account/stepForm/Step3.vue

@@ -1,4 +1,40 @@
+<style>
+  .chouzhen span {
+    display: inline-block;
+  }
+</style>
 <style scoped lang="scss">
+  .chouzhen {
+    border-style: solid;
+    border-width: 1px;
+    border-color: #e4e4e4;
+    width: calc(20% - 10px);
+    padding: 10px;
+    margin-right: 10px;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+    background: #fff;
+    position: relative;
+    z-index: 99;
+    float: left
+  }
+
+  li.chouzhen.first:before {
+    font-size: 12px;
+    content: "首帧";
+    position: absolute;
+    top: 7px;
+    left: 5px;
+    width: 36px;
+    height: 20px;
+    color: rgb(255, 255, 255);
+    line-height: 20px;
+    text-align: center;
+    background: rgba(255, 0, 0, 0.5);
+    border-radius: 2px;
+  }
+
   .actor-photo-list {
     display: flex;
     padding-left: 0;
@@ -49,6 +85,7 @@
                       <div class="dynamically_add_form_item">
                         <a-form-item label="">
                           <a @click="getVideoList('video', index, item, bestIndex)">选择视频</a>
+                          <a @click="uploadVideo(index,bestIndex)" style="margin-left:10px">上传视频</a>
                           <br />
                           <video :src="item.videoList.url" controls="controls" style="width:25%"
                             v-if="item.videoList"></video>
@@ -68,9 +105,17 @@
                         </div>
                         <a-form-item label="">
                           <a @click="getVideoList('image', index, item, bestIndex)">选择封面</a>
+                          <a @click="uploadImages(index,bestIndex)" style="margin-left:10px">上传封面</a>
+                          <a @click="showImages(index,bestIndex)" v-if="item.chouzhenShow"
+                            style="margin-left:10px">推荐封面</a>
                           <br />
-                          <img :src="item.url" style="width:18%;margin:1%;" v-for="item of item.imageList"
-                            :key="item.url" />
+                          <span v-for="(item,deleteIndex) of item.imageList" style="position:relative;">
+                            <img :src="item.url" style="width:18%;margin:1%;" :key="item.url" />
+                            <a-icon type="close-circle" @click="deleteData(index,bestIndex,deleteIndex)"
+                              style="position: absolute;right: 0px;" />
+                          </span>
+
+
                         </a-form-item>
                         <a-form-item label="广告语">
                           <a-textarea class="rending" placeholder="请输入广告语" v-model="item.description"
@@ -141,6 +186,66 @@
         </a-button>
       </template>
     </a-modal>
+    <a-modal title="封面上传" @cancel="closeImage" @afterClose="closeImage" v-model="addImageVisible">
+      <template slot="footer">
+        <a-button key="back" @click="closeImage">取消</a-button>
+        <a-button key="submit" type="primary" @click="handleOkImage" :loading="loadingImage">
+          确定
+        </a-button>
+      </template>
+      <a-form-item label="" class="add-image-material">
+        <upload-to-ali style="width:100%" v-model="urlListImage.url" :customDomain="customDomain" :multiple="true"
+          preview :region="region" :bucket="bucket" :accept="acceptImage" :max="10" :size="1024000"
+          :accessKeyId="accessKeyId" :accessKeySecret="accessKeySecret" :before-upload="fileWater" :dir="dirImg"
+          @delete='deleteImage' @loaded="overUploadImage"></upload-to-ali>
+        <span v-if="material.filter(item => item == false).length > 0 && urlListImage.url.length > 0"
+          style="color:red">上传素材的尺寸不符,请修改(<span v-for="(item, index) of material" :key="index"
+            v-show="!item">第{{ index + 1 }}张</span>出错)</span>
+        <span v-else-if="urlListImage.url.length > 0 && material.filter(item => item == false).length == 0"
+          style="color:green">上传成功</span>
+      </a-form-item>
+    </a-modal>
+
+    <a-modal title="视频上传" @cancel="closeVideo" @afterClose="closeVideo" v-model="addVideoVisible">
+      <template slot="footer">
+        <a-button key="back" @click="closeVideo">取消</a-button>
+        <a-button key="submit" type="primary" @click="handleOkVideo" :loading="loadingVideo">
+          确定
+        </a-button>
+      </template>
+      <a-form-item label="" class="add-image-material">
+        <upload-to-ali v-model="urlList.url" :customDomain="customDomain" preview :region="region" :bucket="bucket"
+          :accept="acceptVideo" :max="10" :size="1024000" :accessKeyId="accessKeyId" :accessKeySecret="accessKeySecret"
+          :before-upload="file" :dir="dirVideo" @loaded="overUpload">
+        </upload-to-ali>
+        <span v-if="messageTip" style="color:red">{{messageTip}}</span>
+      </a-form-item>
+    </a-modal>
+    <a-modal title="抽帧展示" v-model="chouzhen" width="60%">
+      <template slot="footer">
+        <a-button key="back" @click="chouzhen=false">关闭</a-button>
+        <a-button key="submit" type="primary" @click="handleOkChouzhen">
+          确定
+        </a-button>
+      </template>
+      <a-button type="primary" @click="onCheckAllChange">
+        全选
+      </a-button>
+      <!-- </a-checkbox> -->
+      <ul v-if="chouzhenList.length>0" style="height:600px;overflow:auto;padding-left:0">
+
+        <a-checkbox-group v-model="checkList" @change="onChange">
+          <li v-for="(item,index) of chouzhenList" :key="index" class="chouzhen" :class="{'first':index == 0}">
+
+            <img :src="item.url" alt="" style="width:100%">
+            <a-checkbox :value="item.signature" style="position:absolute;z-index: 100;right:0;top:0;"></a-checkbox>
+
+          </li>
+        </a-checkbox-group>
+      </ul>
+
+    </a-modal>
+
   </a-card>
 </template>
 
@@ -161,6 +266,12 @@
     closeAllVideoFun
   } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
   import checkMatemal from './stepModule/checkMatemal'
+  import BMF from 'browser-md5-file'
+
+
+  let nowIndex = 0
+  let bestIndex = 0
+  let showRemove = false
   export default {
     name: 'BaseForm',
     components: {
@@ -170,8 +281,17 @@
     },
     data() {
       return {
+        chouzhen: false,
+        chouzhenList: [],
+        checkList: [],
+        indeterminate: true,
+        checkAll: false,
         pans: [],
         pansKey: '',
+        addImageVisible: false,
+        addVideoVisible: false,
+        loadingVideo: false,
+        loadingImage: false,
         allForm: {
           videoList: '',
           imageList: [],
@@ -216,10 +336,51 @@
         imageUrlList: [],
         checkAllImage: false,
         checkArrImage: [],
-        content: 0
+        content: 0,
+        urlListImage: {
+          url: [],
+          md5: []
+        },
+        urlList: {
+          url: '',
+          md5: "",
+          photoId: ""
+        },
+        imageArrList: [],
+        material: [],
+        creativeCopywriter: '',
+        customDomain: '',
+        region: 'oss-cn-beijing',
+        bucket: 'ctop-media',
+        acceptVideo: 'video/mpeg,video/mp4',
+        acceptImage: 'image/jpeg,image/jpg,image/png',
+        accessKeyId: 'LTAIbNbqWzSOklQV',
+        accessKeySecret: '1rkPz7JNoXk8sJevPaeYHWqfkQXBGh',
+        messageTip: null
       }
     },
     methods: {
+      onChange(checkedList) {
+        this.indeterminate = !!checkedList.length && checkedList.length < this.chouzhenList.length;
+        this.checkAll = checkedList.length === this.chouzhenList.length;
+      },
+      onCheckAllChange(e) {
+        if (this.checkAll) {
+          this.checkList = []
+        } else {
+          this.checkList = this.chouzhenList.map(item => {
+            return item.signature
+          })
+        }
+        this.checkAll = !this.checkAll
+        // Object.assign(this, {
+        //   checkList: e.target.checked ? this.chouzhenList.map(item => {
+        //     return item.signature
+        //   }) : [],
+        //   indeterminate: false,
+        //   checkAll: e.target.checked,
+        // });
+      },
       onCheckAllImageChange(index, item) {
 
         if (this.pans[index].list[item.key].checkAllImage) {
@@ -268,6 +429,21 @@
               })
             }
           })
+          var params = {
+            videoSignature: item.video.signature,
+            pageSize: 20,
+            pageNo: 1
+          }
+          getAction('/cutFrame/material/list', params).then(res => {
+            console.log(res)
+            if (res.success) {
+              if (res.result.records.length > 0) {
+                this.pans[index].list[item.key].chouzhenShow = true
+              } else {
+                this.pans[index].list[item.key].chouzhenShow = false
+              }
+            }
+          })
         } else {
           this.pans[index].list[item.key].imageList.push(...item.image)
         }
@@ -423,7 +599,8 @@
           actionBarText: '',
           imageUrlList: [],
           checkArrImage: [],
-          checkAllImage: false
+          checkAllImage: false,
+          chouzhenShow: false
         })
       },
       deleteCreative(bestIndex, index) {
@@ -431,6 +608,300 @@
       },
       filterOption(input, option) {
         return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      },
+      uploadVideo(index, bestIndex) {
+        console.log(index, bestIndex)
+        nowIndex = index
+        bestIndex = bestIndex
+        this.addVideoVisible = true
+      },
+      handleOkChouzhen(e) {
+
+        var arr = []
+        for (let i = 0; i < this.chouzhenList.length; i++) {
+          for (let j = 0; j < this.checkList.length; j++) {
+            if (this.chouzhenList[i].signature == this.checkList[j]) {
+              arr.push(this.chouzhenList[i])
+            }
+
+          }
+
+        }
+        this.pans[bestIndex].list[nowIndex].imageList = arr
+        this.chouzhen = false
+        this.chouzhenList = []
+        this.checkList = []
+        this.checkAll = false
+      },
+      showImages(index, bestIndex) {
+        this.chouzhen = true
+        this.chouzhenList = []
+        nowIndex = index
+        bestIndex = bestIndex
+        var params = {
+          videoSignature: this.pans[index].list[bestIndex].videoList.signature,
+          pageSize: 20,
+          pageNo: 1
+        }
+        getAction('/cutFrame/material/list', params).then(res => {
+          console.log(res)
+          if (res.success) {
+            this.chouzhenList.push(...res.result.records)
+          }
+        })
+      },
+      uploadImages(index, bestIndex) {
+        nowIndex = index
+        bestIndex = bestIndex
+        this.addImageVisible = true
+      },
+      closeImage() {
+        this.addImageVisible = false
+        this.urlListImage = {
+          url: [],
+          md5: [],
+        }
+        this.imageArrList = []
+        nowIndex = 0
+        bestIndex = 0
+
+      },
+      closeVideo() {
+        this.addVideoVisible = false
+        this.urlList = {
+          url: "",
+          md5: "",
+          photoId: ""
+        }
+        nowIndex = 0
+        bestIndex = 0
+        this.messageTip = null
+      },
+      handleOkImage(e) {
+        this.loadingImage = true
+        var params = {
+          accountId: localStorage.getItem('accountId'),
+          uploadImageArr: this.imageArrList
+        }
+        postAction("/kusiShouUpload/image", params).then(res => {
+          if (res.success) {
+            this.pans[bestIndex].list[nowIndex].imageList = res.result
+            this.closeImage()
+            this.loadingImage = false
+          } else {
+            this.$message.error('封面上传失败')
+            this.loadingImage = false
+          }
+        })
+      },
+      deleteImage(url) {
+        console.log(url, this.urlListImage.url)
+        var index = this.imageArrList.findIndex(v => v.url === url)
+        this.imageArrList.splice(index, 1)
+        console.log(index)
+      },
+      overUploadImage(urlAll) {
+        //   var index = this.urlList.url.findIndex(item => item === urlAll[0])
+        //   var data = { url: urlAll[0], code: this.urlList.md5[index], name: this.urlList.name[index] }
+        //   this.imageArr.push(data)
+        var that = this
+        that.material = []
+        that.imageArrList = []
+        var img
+        if (urlAll.length > 0) {
+          for (var i = 0; i < this.urlListImage.url.length; i++) {
+            that.imageArrList.push({
+              // width: img.width,
+              // height: img.height,
+              // size: this.urlListImage.size[i],
+              signature: this.urlListImage.md5[i],
+              url: this.urlListImage.url[i],
+            })
+
+            img = new Image()
+            img.src = this.urlListImage.url[i]
+            if (img.complete) {
+              // 打印
+              if (img.width == 720) {
+                if (img.height == 1280) {
+                  that.material.push(true)
+                } else {
+                  that.material.push(false)
+                }
+              } else if (img.width == 1080) {
+                if (img.height == 1920) {
+                  that.material.push(true)
+                } else {
+                  that.material.push(false)
+                }
+              } else if (img.width == 1280) {
+                if (img.height == 720) {
+                  that.material.push(true)
+                } else {
+                  that.material.push(false)
+                }
+              } else if (img.width == 1920) {
+                if (img.height == 1080) {
+                  that.material.push(true)
+                } else {
+                  that.material.push(false)
+                }
+              } else {
+                that.material.push(false)
+              }
+            } else {
+
+              img.onload = () => {
+                if (img.width == 720) {
+                  if (img.height == 1280) {
+                    that.material.push(true)
+                  } else {
+                    that.material.push(false)
+                  }
+                } else if (img.width == 1080) {
+                  if (img.height == 1920) {
+                    that.material.push(true)
+                  } else {
+                    that.material.push(false)
+                  }
+                } else if (img.width == 1280) {
+                  if (img.height == 720) {
+                    that.material.push(true)
+                  } else {
+                    that.material.push(false)
+                  }
+                } else if (img.width == 1920) {
+                  if (img.height == 1080) {
+                    that.material.push(true)
+                  } else {
+                    that.material.push(false)
+                  }
+                } else {
+                  that.material.push(false)
+                }
+
+              }
+            }
+          }
+        } else {
+
+        }
+
+      },
+      fileWater(file) {
+        var bmf = new BMF()
+        var that = this
+        this.urlListImage = {
+          url: [],
+          md5: []
+        }
+        return new Promise(function (resolve, reject) {
+          for (let i = 0; i < file.length; i++) {
+            bmf.md5(file[i], (err, md5) => {
+              // that.urlListImage.name.push(file[i].name)
+              that.urlListImage.md5.push(md5)
+              resolve()
+
+            })
+          }
+        })
+      },
+      overUpload(urlAll) {
+        console.log(this.urlList)
+      },
+      file(file) {
+        var bmf = new BMF()
+        var that = this
+        return new Promise(function (resolve, reject) {
+          bmf.md5(file[0], (err, md5) => {
+
+
+            getAction('/kusiShouUpload/checkVideo', {
+              signature: md5,
+              accountId: localStorage.getItem('accountId')
+            }).then(res => {
+              if (res.code == 0) {
+                if (res.result.isExistence) {
+                  showRemove = res.result.isExistence
+                  that.urlList.md5 = res.result.signature
+                  that.urlList.url = res.result.videoUrl
+                  that.urlList.photoId = res.result.photoId
+                  reject()
+                } else {
+                  showRemove = res.result.isExistence
+                  that.urlList.md5 = md5
+                  resolve()
+                }
+
+
+              } else {
+
+                reject()
+              }
+            })
+
+          })
+        })
+      },
+      handleOkVideo(e) {
+        this.loadingVideo = true
+        if (showRemove) {
+          this.pans[bestIndex].list[nowIndex].videoList = {
+            photoId: this.urlList.photoId,
+            url: this.urlList.url
+          }
+          this.loadingVideo = false
+          var params = {
+            videoSignature: this.urlList.md5,
+            pageSize: 20,
+            pageNo: 1
+          }
+          getAction('/cutFrame/material/list', params).then(res => {
+            console.log(res)
+            if (res.success) {
+              if (res.result.records.length > 0) {
+                this.pans[bestIndex].list[nowIndex].chouzhenShow = true
+              } else {
+                this.pans[bestIndex].list[nowIndex].chouzhenShow = false
+              }
+            }
+          })
+          this.closeVideo()
+        } else {
+          var params = {
+            url: this.urlList.url,
+            type: this.getData('creativeMaterialType'),
+            signature: this.urlList.md5,
+            accountId: localStorage.getItem('accountId')
+          }
+          postAction("/kusiShouUpload/video", params).then(res => {
+            console.log(res)
+            if (res.success) {
+              this.pans[bestIndex].list[nowIndex].videoList = {
+                photoId: res.result.photoId,
+                url: this.urlList.url
+              }
+              this.loadingVideo = false
+              this.closeVideo()
+            } else {
+              this.messageTip = res.message
+              this.loadingVideo = false
+              this.urlList = {
+                url: "",
+                md5: "",
+                photoId: ""
+              }
+              nowIndex = 0
+              bestIndex = 0
+            }
+
+          })
+        }
+
+
+      },
+      deleteData(index, bestIndex, deleteIndex) {
+        this.pans[index].list[bestIndex].imageList.splice(deleteIndex, 1)
       }
     },
     computed: {
@@ -442,7 +913,7 @@
         let d = date.getDate()
         d = d < 10 ? '0' + d : d
 
-        return 'image/' + y + '-' + MM + '-' + d + '/'
+        return 'image/Operate/' + y + '-' + MM + '-' + d + '/'
       },
       dirVideo() {
         let date = new Date()
@@ -452,14 +923,14 @@
         let d = date.getDate()
         d = d < 10 ? '0' + d : d
 
-        return 'video/' + y + '-' + MM + '-' + d + '/'
+        return 'video/Operate/' + y + '-' + MM + '-' + d + '/'
       },
       contentAll() {
         var count, arr = []
         if (this.pans[0].list.length > 0) {
           for (let i = 0; i < this.pans[0].list.length; i++) {
 
-            arr.push(...this.pans[0].list[i].imageUrlList, ...this.pans[0].list[i].imageList)
+            arr.push(...this.pans[0].list[i].checkArrImage, ...this.pans[0].list[i].imageList)
           }
           return arr.length + this.content
         } else {

+ 69 - 4
src/views/modules/material/videoMaterial.vue

@@ -54,8 +54,38 @@
 .add-image-material .draggable-list {
   display: block !important;
 }
+li.chouzhen.first:before{
+    font-size: 12px;
+    content: "首帧";
+    position: absolute;
+    top: 7px;
+    left: 5px;
+    width: 36px;
+    height: 20px;
+    color: rgb(255, 255, 255);
+    line-height: 20px;
+    text-align: center;
+    background: rgba(255, 0, 0, 0.5);
+    border-radius: 2px;
+}
 </style>
 <style lang="scss" scoped>
+.chouzhen{
+    border-style: solid;
+    border-width: 1px;
+    border-color: #e4e4e4;
+    width: calc(20% - 10px);
+    padding: 10px;
+    margin-right: 10px;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+    background: #fff;
+    position: relative;
+    z-index: 99;
+    float:left
+}
+
 .content {
   display: flex !important;
   flex-direction: column;
@@ -355,7 +385,7 @@ a {
                   <span
                     style="color: #999; fontSize: 16px;padding-bottom:10px;display:block;width:100%;overflow: hidden;text-overflow: ellipsis;"
                   >
-                    {{ items.materialName }}
+                    {{ items.projectName }}
                   </span>
                   <a-icon
                     type="close-circle"
@@ -554,6 +584,11 @@ a {
                     @click="addImage(items)"
                     >添加封面</a
                   >
+                  <a
+                    style="margin-right:20px"
+                    @click="showImage(items)"
+                    >推荐封面</a
+                  >
                   <a-checkbox :value="items.id" style="float:right" v-show="active == '1'"></a-checkbox>
                   <br>
                   {{ items.createTime | getDate }}
@@ -672,7 +707,7 @@ a {
           >
             <a-select-option :value="item.projectId" v-for="item of dataElse" :key="item.id">
               {{ item.projectName }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{
-                item.mediaId == '1' ? '头条' : '快手'
+               item.mediaId == "1" ? '头条' :item.mediaId == "2"? '快手':item.mediaId == "3"?'头条内广':'快手内广'
               }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.advertiserName }}
             </a-select-option>
           </a-select>
@@ -1160,7 +1195,18 @@ a {
           </a-form-item>
         </a-form>
     </a-modal>
+    <a-modal title="抽帧展示" v-model="chouzhen" width="60%">
+        <template slot="footer">
+            <a-button key="back" @click="chouzhen=false">关闭</a-button>
+        </template>
+        <ul v-if="chouzhenList.length>0" style="height:600px;overflow:auto">
+            <li v-for="(item,index) of chouzhenList" :key="index" class="chouzhen" :class="{'first':index == 0}">
+                <img :src="item.url" alt="" style="width:100%">
+            </li>
 
+        </ul>
+        <div style="clear:both"></div>
+    </a-modal>
 
     <account-check ref="check" @synchro="implement"></account-check>
   </a-card>
@@ -1194,6 +1240,8 @@ export default {
   data() {
     return {
       coverPreviewVisible: false,
+      chouzhen:false,
+      chouzhenList:[],
       model: [],
       modelNew: [],
       goodsColumns: [
@@ -2051,6 +2099,21 @@ export default {
       this.addImageVisible = true
       this.addImageData = item
     },
+    showImage(item){
+        this.chouzhen = true
+        this.chouzhenList = []
+        var params = {
+            videoSignature:item.code,
+            pageSize:20,
+            pageNo:1
+        }
+        getAction('/cutFrame/material/list',params).then(res=>{
+            console.log(res)
+            if(res.success){
+                this.chouzhenList.push(...res.result.records)
+            }
+        })
+    },
     closeImage() {
       this.addImageVisible = false
       this.urlListImage = {
@@ -2098,8 +2161,10 @@ export default {
       this.$message.success('上传成功')
     },
     deleteImage(url){
-        console.log(url,this.urlListImage.url)
-
+       console.log(url, this.urlListImage.url)
+        var index = this.imageArrList.findIndex(v => v.url === url)
+        this.imageArrList.splice(index,1)
+        console.log(index)
 
     },
     overUploadImage(urlAll) {

+ 2 - 2
src/views/oceanengine/AdList.vue

@@ -285,8 +285,8 @@ export default {
             arr.play = res.result.records[i].play;
             arr.share = res.result.records[i].share;
             arr.comment = res.result.records[i].comment;
-            arr.coverImage = res.result.records[i].coverImage;
-            arr.src = res.result.records[i].coverImage;
+            arr.coverImage = res.result.records[i].coverUrl;
+            arr.src = res.result.records[i].coverUrl;
             arr.url = res.result.records[i].url;
             arr.videoId = res.result.records[i].video_id;
             arr.coreUserId = res.result.records[i].core_user_id;

+ 1 - 1
src/views/oceanengine/EffectCaseList.vue

@@ -271,7 +271,7 @@ export default {
             arr.updateTime = res.result.records[i].updateTime;
             arr.creativeLabel = res.result.records[i].creativeLabel;
             arr.coverImage = res.result.records[i].coverImage;
-            arr.src = res.result.records[i].coverImage;
+            arr.src = res.result.records[i].coverUrl;
             arr.create_date = res.result.records[i].create_date;
             arr.creative_id = res.result.records[i].creative_id;
             arr.video_url = res.result.records[i].video_url;

+ 2 - 2
src/views/oceanengine/HotMaterialList.vue

@@ -274,8 +274,8 @@ export default {
             arr.id = res.result.records[i].material_id;
             arr.vid = res.result.records[i].vid;
             arr.videoUrl = res.result.records[i].videoUrl;
-            arr.coverImage = res.result.records[i].coverImage;
-            arr.src = res.result.records[i].coverImage;
+            arr.coverImage = res.result.records[i].url;
+            arr.src = res.result.records[i].coverUrl;
             arr.title = res.result.records[i].title;
             arr.appCode = res.result.records[i].appCode;
             arr.appName = res.result.records[i].appName;

+ 9 - 0
vue.config.js

@@ -66,6 +66,7 @@ module.exports = {
       '/jeecg-boot': {
         // target: 'http://39.97.120.42:8080', //请求本地 需要jeecg-boot后台项目  生产环境
         // target: 'http://39.106.184.70:8080', //请求本地 需要jeecg-boot后台项目
+<<<<<<< HEAD
         // target: 'http://192.168.1.13:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.1.22:8080', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.0.125:8080', //请求本地 需要jeecg-boot后台项目  英豪
@@ -73,6 +74,14 @@ module.exports = {
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
         // target: 'http://192.168.1.54:8080', //请求本地 需要jeecg-boot后台项目  孙震
         target: 'http://192.168.1.165:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
+=======
+        target: 'http://192.168.1.23:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+        // target: 'http://192.168.1.22:8080', //请求本地 需要jeecg-boot后台项目  英豪
+        // target: 'http://192.168.1.103:8080', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
+        // target: 'http://192.168.1.54:8080', //请求本地 需要jeecg-boot后台项目  孙震
+        // target: 'http://192.168.1.165:8080', //请求本地 需要jeecg-boot后台项目  毕洁泉
+>>>>>>> a27f3b64d100e3e51d26f42b0fcae6625fd0d1ea
         ws: false,
         changeOrigin: true
       },