Browse Source

Merge branch 'test-2' of http://git.tjyourong.com.cn/ctop/adsp-vue into test-2

朱鑫波 4 năm trước cách đây
mục cha
commit
ff6c0268a9

BIN
public/avatar2.jpg


BIN
public/feishu.png


BIN
public/goright.png


BIN
public/logo.png


+ 1 - 0
src/App.vue

@@ -51,6 +51,7 @@ export default {
 <style>
 #app {
   height: 100%;
+  min-width: 1280px;
 }
 
 body {

BIN
src/assets/logo.png


+ 3 - 0
src/components/uploadFile.vue

@@ -97,6 +97,9 @@ export default {
     },
     value: {
       required: true,
+      default() {
+        return ''
+      },
     },
     size: {
       type: Number,

+ 266 - 0
src/components/youtTable/YoutTable.vue

@@ -0,0 +1,266 @@
+
+<template>
+    <div class="youtTable">
+        <div class="yout-header">
+            <p class="headTitle">{{headTitle}}</p>
+            <div class="opt-btn">
+                <a-button type='default' v-if="isNeedCustomColumn" @click="customColumns" style="margin-right:15px">自定义列</a-button>
+                <a-button type='default' v-if='isNeedExport' @click="exportExcel" :loading="exportloading">导出报表</a-button>
+            </div>
+        </div>
+        <div class="tableBody">
+            <a-table
+                :size="size"
+                :columns="columns"
+                :dataSource="data"
+                bordered
+                id="outTable"
+                :pagination="pagination"
+                :scroll="{ x: scrollX, y: scrollY }"
+                :loading="loading"
+                ref="accountTable"
+                @change="change"                
+              >
+
+                <span slot="ctr" slot-scope="ctr">{{ ctr | toPercentage }}</span>
+                <span slot="cost" slot-scope="cost">{{ cost | decimalsHandle }}</span>
+                <span slot="clickMaterial" slot-scope="clickMaterial">{{ clickMaterial | formatCurrency }}</span>
+                <span slot="showMaterial" slot-scope="showMaterial">{{ showMaterial | formatCurrency }}</span>
+                <span slot="convertMaterial" slot-scope="convertMaterial">{{ convertMaterial | formatCurrency }}</span>
+                <span slot="play25FeedBreak" slot-scope="play25FeedBreak">{{ play25FeedBreak | formatCurrency }}</span>
+                <span slot="play50FeedBreak" slot-scope="play50FeedBreak">{{ play50FeedBreak | formatCurrency }}</span>
+                <span slot="play75FeedBreak" slot-scope="play75FeedBreak">{{ play75FeedBreak | formatCurrency }}</span>
+                <span slot="play100FeedBreak" slot-scope="play100FeedBreak">{{ play100FeedBreak | formatCurrency }}</span>
+                <span slot="nextDayOpen" slot-scope="nextDayOpen">{{ nextDayOpen | formatCurrency }}</span>
+                <span slot="downloadFinish" slot-scope="downloadFinish">{{ downloadFinish | formatCurrency }}</span>
+                <span slot="downloadStart" slot-scope="downloadStart">{{ downloadStart | formatCurrency }}</span>
+                <span slot="likeMaterial" slot-scope="likeMaterial">{{ likeMaterial | formatCurrency }}</span>
+                <span slot="shareMaterial" slot-scope="shareMaterial">{{ shareMaterial | formatCurrency }}</span>
+                <span slot="register" slot-scope="register">{{ register | formatCurrency }}</span>
+                <span slot="follow" slot-scope="follow">{{ follow | formatCurrency }}</span>
+                <span slot="formCount" slot-scope="formCount">{{ formCount | formatCurrency }}</span>
+                <span slot="formCountCost" slot-scope="formCountCost">{{ formCountCost | decimalsHandle }}</span>
+                <span slot="aClick" slot-scope="aClick">{{ aClick | formatCurrency }}</span>
+                <span slot="photoShow" slot-scope="photoShow">{{ photoShow | formatCurrency }}</span>
+                <span slot="photoClick" slot-scope="photoClick">{{ photoClick | formatCurrency }}</span>
+                <span slot="bClick" slot-scope="bClick">{{ bClick | formatCurrency }}</span>
+                <span slot="active" slot-scope="active">{{ active | formatCurrency }}</span>
+                <span slot="submit" slot-scope="submit">{{ submit | formatCurrency }}</span>
+                <span slot="nextDayOpen" slot-scope="nextDayOpen">{{ nextDayOpen | formatCurrency }}</span>
+                <span slot="eventCreditGrantLandingPage" slot-scope="eventCreditGrantLandingPage">{{ eventCreditGrantLandingPage | formatCurrency }}</span>
+                <span slot="submitCost" slot-scope="submitCost">{{ submitCost | decimalsHandle }}</span>
+                <span slot="eventCreditGrantLandingPageCost" slot-scope="eventCreditGrantLandingPageCost">{{ eventCreditGrantLandingPageCost | decimalsHandle }}</span>
+                <span slot="submitRate" slot-scope="submitRate">{{ submitRate | toPercentage }}</span>
+                <span slot="eventCreditGrantLandingPageRate" slot-scope="eventCreditGrantLandingPageRate">{{ eventCreditGrantLandingPageRate | toPercentage }}</span>
+                <span
+                  slot="play25FeedBreakRate"
+                  slot-scope="play25FeedBreakRate"
+                >{{ play25FeedBreakRate | toPercentage }}</span>
+                <span slot="playOverRate" slot-scope="playOverRate">{{ playOverRate | toPercentage }}</span>
+                <!-- 新加数据 -->
+
+                <span slot="convertRate" slot-scope="convertRate">{{ convertRate | toPercentage }}</span>
+                <span slot="nextDayOpenRate" slot-scope="nextDayOpenRate">{{ nextDayOpenRate | toPercentage }}</span>
+                <span slot="ctr" slot-scope="ctr">{{ ctr | toPercentage }}</span>
+                <span slot="cpc" slot-scope="cpc">{{ cpc | decimalsHandle }}</span>
+                <span slot="cpm" slot-scope="cpm">{{ cpm | decimalsHandle }}</span>
+                <span slot="activeRate" slot-scope="activeRate">{{ activeRate | toPercentage }}</span>
+                <span
+                  slot="installFinishRate"
+                  slot-scope="installFinishRate"
+                >{{ installFinishRate | toPercentage }}</span>
+                <span slot="validPlayRate" slot-scope="validPlayRate">{{ validPlayRate | toPercentage }}</span>
+                <span slot="activePayCost" slot-scope="activePayCost">{{ activePayCost | decimalsHandle }}</span>
+                <span slot="nextDayOpenCost" slot-scope="nextDayOpenCost">{{ nextDayOpenCost | decimalsHandle }}</span>
+                <span slot="validPlayCost" slot-scope="validPlayCost">{{ validPlayCost | decimalsHandle }}</span>
+                <span slot="activeCost" slot-scope="activeCost">{{ activeCost | decimalsHandle }}</span>
+                <span slot="nextDayOpenCost" slot-scope="nextDayOpenCost">{{ nextDayOpenCost | decimalsHandle }}</span>
+                <span
+                  slot="gameAddictionCost"
+                  slot-scope="gameAddictionCost"
+                >{{ gameAddictionCost | decimalsHandle }}</span>
+                <span
+                  slot="downloadFinishCost"
+                  slot-scope="downloadFinishCost"
+                >{{ downloadFinishCost | decimalsHandle }}</span>
+                <span
+                  slot="downloadStartCost"
+                  slot-scope="downloadStartCost"
+                >{{ downloadStartCost | decimalsHandle }}</span>
+                <span
+                  slot="installFinishCost"
+                  slot-scope="installFinishCost"
+                >{{ installFinishCost | decimalsHandle }}</span>
+                <span slot="convertCost" slot-scope="convertCost">{{ convertCost | decimalsHandle }}</span>
+
+                <!--  -->
+                <span
+                  slot="downloadStartRate"
+                  slot-scope="downloadStartRate"
+                >{{ downloadStartRate | toPercentage }}</span>
+                <span
+                  slot="downloadFinishRate"
+                  slot-scope="downloadFinishRate"
+                >{{ downloadFinishRate | toPercentage }}</span>
+                <span slot="activeRate" slot-scope="activeRate">{{ activeRate | toPercentage }}</span>
+                <span
+                  slot="activeRegisterRate"
+                  slot-scope="activeRegisterRate"
+                >{{ activeRegisterRate | toPercentage }}</span>
+                <span
+                  slot="gameAddictionRate"
+                  slot-scope="gameAddictionRate"
+                >{{ gameAddictionRate | toPercentage }}</span>
+                <span slot="nextDayOpenRate" slot-scope="nextDayOpenRate">{{ nextDayOpenRate | toPercentage }}</span>
+                <!-- <span slot="nextDayOpenRate" slot-scope="nextDayOpenRate">{{ nextDayOpenRate | toPercentage }}</span> -->
+
+
+                <slot name="customContext"></slot>
+                
+            </a-table>
+            <customColumn :visible='visible'  :listNum='listNum' :fiexColumn='columnsFixd' :mediaType='mediaType'  @closeCustomColumn='closeCustomColumn' @changeColumn='changeColumn' />
+        </div>
+    </div>
+</template>
+
+<script>
+import customColumn from './customColumn.vue'
+    export default {
+        components:{
+            
+            customColumn,
+        },
+        data() {
+            return {
+                exportloading:false,
+                visible:false,
+                listNum:[],
+            }
+        },
+        props:{
+            // 表格的标题
+            headTitle:{
+                type:String,
+                default:'',
+            },
+            // 是否需要自定义列
+            isNeedCustomColumn:{
+                type:Boolean,
+                default:false,
+            },
+            // 是否需要导出报表
+            isNeedExport:{
+                type:Boolean,
+                default:false,
+            },
+            
+            // 表格大小
+            size:{
+                type:String,
+                default:'middle'
+            },
+            columns:{
+                type:Array,
+                require:true,
+            },
+            columnsFixd:{
+                type:Array,
+                require:true,
+            },
+            data:{
+                type:Array,
+                default(){
+                    return []
+                }
+            },
+            pagination:{
+                default(){
+                    return false
+                }
+            },
+            loading:{
+                default:false,
+            },
+            scrollX:{
+                default:0
+            },
+            scrollY:{
+                default:0
+            },
+            mediaType:{
+                // 1-头条,2-快手
+                type:Number,
+                require:true,
+            },
+            
+
+        },
+        methods: {
+            exportExcel(){
+                this.$emit('exportExcel')
+            },
+            change(pagination, filters, sorter, { currentDataSource }){
+                this.$emit('tableChange',{pagination, filters, sorter,  currentDataSource })
+            },
+            closeCustomColumn(){
+                this.visible=false;
+            },
+            //自定义之后修改父元素表头
+            changeColumn(val){
+                this.columns=[...val];
+                this.columns=[...val];
+                if(this.columns.length> this.columnsFixd.length&&this.columns.length<8){
+                this.columns.forEach((element,index) => {
+                    if(index<this.columns.length-1){
+                    element.width='auto'
+                    element.fixed=false
+                    }             
+                });
+
+                // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
+                }else if(this.columns.length>=8){
+                this.columns.forEach((element,index) => {
+                    if(index<this.columnsFixd.length){
+                    element.width=200
+                    element.fixed='left'
+                    }             
+                });
+
+                this.scrollX=1000+200*(this.columns.length-this.columnsFixd.length)
+                } else{
+                this.scrollX=0;
+                this.columns.forEach(element => {
+                    element.width='auto'
+                    element.fixed=false
+                });
+                }
+            },
+            //弹出框打开,自定义列
+            customColumns() {
+                this.visible = true
+                this.listNum = [...this.columns]
+            },
+            
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.youtTable{
+    background: white;
+    margin-bottom: 20px;
+    
+    .yout-header{       
+        padding: 20px ;
+        display: flex;
+        justify-content:space-between;
+        .headTitle{
+            margin-bottom: 0;
+            font-size: 15px;
+            font-weight: 600;
+            height: 32px;
+            line-height: 32px;
+        }
+    }
+}
+</style>

+ 300 - 0
src/components/youtTable/customColumn.vue

@@ -0,0 +1,300 @@
+<template>
+  <div class="customColumnKS">
+    <a-modal v-model="visibleOk" title="自定义列" on-ok="handleOk" @cancel="handleCancel" width="65%">
+      <template slot="footer">
+        <a-button key="back" @click="handleCancel">取消</a-button>
+        <a-button key="submit" type="primary" :loading="loading" @click="handleOk">应用</a-button>
+      </template>
+      <!-- <a-input-search placeholder="输入要添加的列的名称" style="width: 40%" enter-button @search="onSearch" /> -->
+      <div class="zhuti">
+        <div class="addlist">
+          <p>可添加的列</p>
+          <div class="selectionList">
+            <!--  v-for="(item,index) in addColumns" :key="index" -->
+            <!-- <div v-if="mediaType==1"> -->
+              <selectComponent
+              :showCol="mylistNum"
+              @getshowlist="getshowlist"
+              :fixedCol="fiexColumn"
+              :mediaType='mediaType'
+              
+              />
+            <!-- </div> -->
+            <!-- <div v-if="mediaType==2">
+              <selectComponentKS
+              :showCol="mylistNum"
+              @getshowlist="getshowlist"
+              :fixedCol="fiexColumn"
+              :mediaType='mediaType'
+              
+            />
+            </div> -->
+            
+          </div>
+        </div>
+        <div class="listNum">
+          <p>已选{{mylistNum.length}}列</p>
+          <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
+          <ul class="selectlist">
+                <!-- draggable="true"
+                  @dragstart="handleDragStart($event, item.dataIndex)"
+                  @dragover.prevent="handleDragOver($event, item.dataIndex)"
+                  @dragenter="handleDragEnter($event, item.dataIndex)"
+                  @dragend="handleDragEnd($event, item.dataIndex)" -->
+            <li v-for="(item,index) in mylistNum" :key="index">
+              <span v-if=" index < fiexColumn.length">
+                <a-icon type="lock" />
+                <span class="listText">{{item.title}}</span>
+              </span>
+              <span v-else-if=" index >=fiexColumn.length"  >
+                <a-icon type="menu" style="color:#ccc" />
+                <span class="listText">{{item.title}}</span>
+                <a-icon
+                  type="close"
+                  @click="deleteCol(item,index)"
+                  id="closeStyle"
+                  style="fontSize:12px;"
+                />
+              </span>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+import selectComponent from './selectComponent'
+import selectComponentKS from './selectComponentKS'
+export default {
+  components: {
+    selectComponent,
+    selectComponentKS,
+  },
+  props: ['visible', 'listNum', 'fiexColumn','mediaType'],
+
+  data() {
+    return {
+      dragging: null,
+      dataKey: 0,
+      visibleOk: false,
+      mylistNum: [],
+      loading: false
+    }
+  },
+  watch: {
+    visible(n, o) {
+      // console.log(n,o)
+      this.visibleOk = this.visible
+    },
+    listNum: {
+      handler(newValue, oldValue) {
+        console.log(newValue, oldValue)
+        this.mylistNum = newValue
+      },
+      immediate: true
+      // deep: true
+    }
+  },
+  methods: {
+     //li展示里的关闭按钮 删除当前被选中的这一个列
+    deleteCol(item, index) {
+      this.mylistNum = this.mylistNum.filter((item1, num) => {
+        return num != index
+      })
+    },
+    handleDragStart(e, item) {
+      this.dragging = item
+    },
+    handleDragEnd(e, item) {
+      this.dragging = null
+    },
+    //首先把div变成可以放置的元素,即重写dragenter/dragover
+    handleDragOver(e) {
+      e.dataTransfer.dropEffect = 'move' // e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
+    },
+    handleDragEnter(e, item) {
+      e.dataTransfer.effectAllowed = 'move' //为需要移动的元素设置dragstart事件
+      if (item === this.dragging) {
+        return
+      }
+      const newItems = [...this.mylistNum]
+      console.log(newItems)
+      const src = newItems.findIndex(v => v.dataIndex === this.dragging)
+      const dst = newItems.findIndex(v => v.dataIndex === item)
+
+      newItems.splice(dst, 0, ...newItems.splice(src, 1))
+
+      this.mylistNum = newItems
+    },
+    //弹出框确定
+    handleOk(e) {
+      this.loading = false
+      this.visibleOk = false
+      this.$emit('closeCustomColumn', false)
+      this.$emit('changeColumn', this.mylistNum)
+    },
+    //取消按钮
+    handleCancel() {
+      this.visibleOk = false
+      this.$emit('closeCustomColumn', false)
+    },
+    //清空全部
+    clearAllList() {
+      this.mylistNum = [...this.fiexColumn]
+    },
+    //从自定义列拿选择的项
+    getshowlist(val) {
+      var arr = []
+
+      // console.log(val)
+      if (val.length) {
+        if (val.flag) {
+          let newArr = val.arr
+          newVal.map((item, index) => {
+            // if(JSON.stringify(this.listNum).indexOf(JSON.stringify(item))==-1){
+            //  this.listNum.push(item); // 进行动态的操作
+            // }
+            var result = this.listNum.some(items => {
+              if (items.dataIndex == item.dataIndex) {
+                return true
+              }
+            })
+
+            // console.log(result)
+            if (result) {
+              newArr.splice(index, 1)
+            }
+          })
+
+          this.mylistNum = [...this.mylistNum, ...newArr]
+        } else {
+          //取消全选  清楚listNum中的val里的值
+          val.arr.map((item, index) => {
+            var result = this.mylistNum.some(items => {
+              if (items.dataIndex == item.dataIndex) {
+                return true
+              }
+            })
+            // console.log(result)
+            if (result) {
+              this.mylistNum.splice(index, 1)
+            }
+          })
+        }
+      } else {
+        arr = this.mylistNum.filter((item, index) => {
+          return item.dataIndex == val.dataIndex
+        })
+      }
+      if (arr.length) {
+        var index
+        this.mylistNum.map((item, ind) => {
+          if (item.dataIndex == val.dataIndex) {
+            index = ind
+          }
+        })
+        console.log(index)
+        this.mylistNum.splice(index, 1)
+      } else {
+        this.mylistNum.push(val)
+      }
+    }
+  },
+  mounted() {}
+}
+</script>
+
+<style lang="scss" scoped>
+
+
+.addlist {
+  float: left;
+  width: 70%;
+  border: 1px solid #eee;
+  .selectionList {
+    padding: 10px 15px;
+    height: 450px;
+    overflow: auto;
+    .leibie {
+      .leiName {
+        font-size: 26px;
+        text-align: left;
+      }
+    }
+    .jutixiang {
+      display: inline-block;
+      width: 32%;
+      box-sizing: border-box;
+      padding: 10px 3px;
+    }
+  }
+}
+.listNum {
+  float: right;
+  width: 28%;
+  border: 1px solid #eee;
+  position: relative;
+}
+.zhuti {
+  margin-top: 15px;
+  overflow: hidden;
+
+  p {
+    height: 40px;
+    line-height: 20px;
+    padding: 10px 15px;
+
+    background: rgb(249, 250, 253);
+    border-bottom: 1px solid #eee;
+  }
+  #btn {
+    position: absolute;
+    right: 0;
+    top: 5px;
+  }
+  .selectlist {
+    width: 100%;
+    list-style: none;
+    margin: 0;
+    height: 450px;
+    padding: 0 15px 10px;
+    overflow: auto;
+
+    li {
+      width: 100%;
+      padding: 5px 8px;
+      margin: 6px 0;
+      border-radius: 10px;
+      background: rgb(248, 248, 248);
+      height: 32px;
+      position: relative;
+      span {
+        width: 80%;
+        height: 100%;
+        display: inline-block;
+        margin: 0 10px;
+        // overflow:hidden;
+        // text-overflow:ellipsis;
+        // white-space: nowrap;
+      }
+      .listText {
+        position: absolute;
+        top: 2;
+        left: 10;
+        width: 60%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+      }
+      #closeStyle {
+        position: absolute;
+        top: 9px;
+        right: 7px;
+      }
+    }
+  }
+}
+
+</style>

+ 240 - 0
src/components/youtTable/selectComponent.vue

@@ -0,0 +1,240 @@
+<template>
+  <div>
+    <div v-for="(item,index) in customFields" :key="index">
+      <div class="leibie">
+        <p class="leiName">{{item.title}}</p>
+        <!-- <span class="jutixiang">
+          <a-checkbox
+            :value="index"
+            name="type"
+            @change="isSelectAll($event,index)"
+            :checked="item.checkall"
+          >全选</a-checkbox>
+        </span> -->
+        <!-- {{item.form}} -->
+        <a-checkbox-group v-model="item.form" >
+          <span class="jutixiang" v-for="(zhi,num) in item.specificFields " :key="num">
+
+            <a-checkbox :value="zhi.dataIndex" :disabled="zhi.disabled"  name="type" @change="checkboxClick(zhi)">
+              <a-tooltip
+                class="select-component"
+                placement="top"
+                :title="zhi.tip"
+                :overlayClassName="tooltipShow"
+              >{{zhi.title}}</a-tooltip>
+            </a-checkbox>
+          </span>
+        </a-checkbox-group>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import  {TTcustomFields ,KScustomFields}  from '../../utils/columnConst/accountConst'
+// let customFields=customFields
+export default {
+  props: ['showCol','fixedCol','mediaType'],
+  data() {
+    return {
+        // customFields,
+      customFields:[],
+      quanxuanflag: [],
+      hovered: false,
+      tooltipShow: 'tooltipShow',
+      toParentArr: []
+    }
+  },
+  watch: {
+    
+    showCol(n) {
+      // console.log(n)
+      //
+      if (this.showCol.length == this.fixedCol.length) {
+
+        for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]          
+        }
+        this.showCol.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      } else {
+        
+       for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]
+          
+        }
+        n.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      }
+      // console.log(this.form)
+    },
+  
+  },
+  mounted() {
+    if(this.mediaType==1){
+      //头条自定义列
+      this.customFields=TTcustomFields
+    }else if(this.mediaType==2){
+      //快手自定义列
+      this.customFields=KScustomFields
+    }
+    for (let i = 0; i < this.customFields.length; i++) {
+      this.customFields[i].form=[]
+    }
+    // console.log(1)
+    this.showCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            it.form.push(item.dataIndex)
+          }
+        })
+      })
+    })
+    this.fixedCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            i.disabled=true;
+          }
+        })
+      })
+    })
+
+
+    // console.log(this.customFields);
+    
+  },
+  methods: {
+    hide() {
+      this.clicked = false
+      this.hovered = false
+    },
+    handleHoverChange(visible) {
+      this.clicked = false
+      this.hovered = visible
+    },
+    getPopupContainer() {
+      console.log(this)
+    },
+
+    //全选框   判断是否全选
+    isSelectAll(e, val) {
+      //像父元素传递
+      console.log(e, val)
+      let arr=JSON.parse(JSON.stringify(this.customFields[val].specificFields))
+      let valArr={
+        flag:true,
+        arr
+      }
+      this.customFields[val].checkall = e.target.checked
+      console.log(this.customFields[val].checkall)
+
+      if (this.customFields[val].checkall) {
+       
+        this.customFields[val].form=[]
+ 
+        this.customFields[val].specificFields.map((item, index) => {
+
+          this.customFields[val].form.push(item.dataIndex)
+
+        })
+        valArr.flag=true;
+        this.$emit('getshowlist', valArr)
+      } else {
+        console.log(this.customFields[val])
+        this.customFields[val].form=[];
+        valArr.flag=false;
+        console.log(this.customFields[val].form=[])
+        this.$emit('getshowlist', valArr)
+      }
+
+      console.log(this.form[val])
+    },
+
+    onChange(){
+        
+    },
+
+    //复选框的点击事件
+    checkboxClick(val) {
+      // console.log(val)
+    //   this.$emit('update:count',)
+      this.$emit('getshowlist', val)
+      // console.log(val,this.customFields[0].form)
+      // this.customFields[val].checkall=!this.customFields[val].checkall
+      // for (let i = 0; i < this.customFields.length; i++) {
+      //   // console.log(this.customFields[0].form,this.customFields[i].specificFields.length)
+      //   if(this.customFields[i].form.length==this.customFields[i].specificFields.length-1){
+      //       this.customFields[i].checkall=true;
+      //   }else{
+      //     this.customFields[i].checkall=false;
+      //   }
+          
+      //   }
+    }
+  }
+}
+</script>
+<style>
+.tooltipShow {
+  max-width: 30%;
+}
+.tooltipShow .ant-tooltip-content .ant-tooltip-inner {
+  background: white;
+  font-size: 10px;
+  color: #333;
+}
+.ant-tooltip-content .ant-tooltip-arrow::before {
+  background-color: white;
+}
+</style>
+<style lang="scss" scoped>
+.leibie {
+  width: 100%;
+  margin-bottom: 10px;
+  .leiName {
+    font-size: 20px;
+    text-align: left;
+    margin-bottom: 5px;
+    margin-top: 0px;
+  }
+}
+.jutixiang {
+  display: inline-block;
+  width: 32%;
+  box-sizing: border-box;
+  padding: 8px 3px;
+  height: 30px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.ant-tooltip-content .tooltipShow {
+  background: #eee;
+  font-size: 10px;
+  color: #333;
+}
+
+.ant-checkbox-group {
+  width: 100%;
+}
+</style>

+ 240 - 0
src/components/youtTable/selectComponentKS.vue

@@ -0,0 +1,240 @@
+<template>
+  <div>
+    <div v-for="(item,index) in customFields" :key="index">
+      <div class="leibie">
+        <p class="leiName">{{item.title}}</p>
+        <!-- <span class="jutixiang">
+          <a-checkbox
+            :value="index"
+            name="type"
+            @change="isSelectAll($event,index)"
+            :checked="item.checkall"
+          >全选</a-checkbox>
+        </span> -->
+        <!-- {{item.form}} -->
+        <a-checkbox-group v-model="item.form" >
+          <span class="jutixiang" v-for="(zhi,num) in item.specificFields " :key="num">
+
+            <a-checkbox :value="zhi.dataIndex" :disabled="zhi.disabled"  name="type" @change="checkboxClick(zhi)">
+              <a-tooltip
+                class="select-component"
+                placement="top"
+                :title="zhi.tip"
+                :overlayClassName="tooltipShow"
+              >{{zhi.title}}</a-tooltip>
+            </a-checkbox>
+          </span>
+        </a-checkbox-group>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import  {TTcustomFields ,KScustomFields}  from '../../utils/columnConst/accountConst'
+// let customFields=customFields
+export default {
+  props: ['showCol','fixedCol','mediaType'],
+  data() {
+    return {
+        // customFields,
+      customFields:[],
+      quanxuanflag: [],
+      hovered: false,
+      tooltipShow: 'tooltipShow',
+      toParentArr: []
+    }
+  },
+  watch: {
+    
+    showCol(n) {
+      // console.log(n)
+      //
+      if (this.showCol.length == this.fixedCol.length) {
+
+        for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]          
+        }
+        this.showCol.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      } else {
+        
+       for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]
+          
+        }
+        n.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      }
+      // console.log(this.form)
+    },
+  
+  },
+  mounted() {
+    if(this.mediaType==1){
+      //头条自定义列
+      this.customFields=TTcustomFields
+    }else if(this.mediaType==2){
+      //快手自定义列
+      this.customFields=KScustomFields
+    }
+    for (let i = 0; i < this.customFields.length; i++) {
+      this.customFields[i].form=[]
+    }
+    // console.log(1)
+    this.showCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            it.form.push(item.dataIndex)
+          }
+        })
+      })
+    })
+    this.fixedCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            i.disabled=true;
+          }
+        })
+      })
+    })
+
+
+    // console.log(this.customFields);
+    
+  },
+  methods: {
+    hide() {
+      this.clicked = false
+      this.hovered = false
+    },
+    handleHoverChange(visible) {
+      this.clicked = false
+      this.hovered = visible
+    },
+    getPopupContainer() {
+      console.log(this)
+    },
+
+    //全选框   判断是否全选
+    isSelectAll(e, val) {
+      //像父元素传递
+      console.log(e, val)
+      let arr=JSON.parse(JSON.stringify(this.customFields[val].specificFields))
+      let valArr={
+        flag:true,
+        arr
+      }
+      this.customFields[val].checkall = e.target.checked
+      console.log(this.customFields[val].checkall)
+
+      if (this.customFields[val].checkall) {
+       
+        this.customFields[val].form=[]
+ 
+        this.customFields[val].specificFields.map((item, index) => {
+
+          this.customFields[val].form.push(item.dataIndex)
+
+        })
+        valArr.flag=true;
+        this.$emit('getshowlist', valArr)
+      } else {
+        console.log(this.customFields[val])
+        this.customFields[val].form=[];
+        valArr.flag=false;
+        console.log(this.customFields[val].form=[])
+        this.$emit('getshowlist', valArr)
+      }
+
+      console.log(this.form[val])
+    },
+
+    onChange(){
+        
+    },
+
+    //复选框的点击事件
+    checkboxClick(val) {
+      // console.log(val)
+    //   this.$emit('update:count',)
+      this.$emit('getshowlist', val)
+      // console.log(val,this.customFields[0].form)
+      // this.customFields[val].checkall=!this.customFields[val].checkall
+      // for (let i = 0; i < this.customFields.length; i++) {
+      //   // console.log(this.customFields[0].form,this.customFields[i].specificFields.length)
+      //   if(this.customFields[i].form.length==this.customFields[i].specificFields.length-1){
+      //       this.customFields[i].checkall=true;
+      //   }else{
+      //     this.customFields[i].checkall=false;
+      //   }
+          
+      //   }
+    }
+  }
+}
+</script>
+<style>
+.tooltipShow {
+  max-width: 30%;
+}
+.tooltipShow .ant-tooltip-content .ant-tooltip-inner {
+  background: white;
+  font-size: 10px;
+  color: #333;
+}
+.ant-tooltip-content .ant-tooltip-arrow::before {
+  background-color: white;
+}
+</style>
+<style lang="scss" scoped>
+.leibie {
+  width: 100%;
+  margin-bottom: 10px;
+  .leiName {
+    font-size: 20px;
+    text-align: left;
+    margin-bottom: 5px;
+    margin-top: 0px;
+  }
+}
+.jutixiang {
+  display: inline-block;
+  width: 32%;
+  box-sizing: border-box;
+  padding: 8px 3px;
+  height: 30px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.ant-tooltip-content .tooltipShow {
+  background: #eee;
+  font-size: 10px;
+  color: #333;
+}
+
+.ant-checkbox-group {
+  width: 100%;
+}
+</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1323 - 0
src/utils/columnConst/accountConst.js


+ 0 - 0
src/utils/columnConst/videoConst.js


+ 2 - 2
src/utils/request.js

@@ -15,8 +15,8 @@ else if (process.env.NODE_ENV == 'debug') {
 else if (process.env.NODE_ENV == 'production') { 
   
   // axios.defaults.baseURL = 'http://192.168.1.251/jeecg-boot';
-  // axios.defaults.baseURL = 'http://139.186.151.174:8804/jeecg-boot';     
-  axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';
+  axios.defaults.baseURL = 'http://139.186.151.174:8804/jeecg-boot';     
+  // axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';
 }
 const service = axios.create({
 //   baseURL: '/jeecg-boot', // api base_url

+ 7 - 7
src/views/modules/Statistics/KSAccountReport.vue

@@ -1284,13 +1284,13 @@ export default {
     },
   },
   mounted() {
-    this.accountHttp()
-    new Promise((resolve, reject) => {
-      this.getEchartData('sectionChart', this.sectionOption)
-      resolve()
-    }).then(()=>{
-      this.myChart.clear()
-    })
+    // this.accountHttp()
+    // new Promise((resolve, reject) => {
+    //   this.getEchartData('sectionChart', this.sectionOption)
+    //   resolve()
+    // }).then(()=>{
+    //   this.myChart.clear()
+    // })
     
     postAction('/toutiao/videoReportDaily/getColumnJson', {
       columnType: 2

+ 4 - 7
src/views/modules/Statistics/Statistics.vue

@@ -148,7 +148,7 @@ p{
       </div>
       <a-row :gutter="15" style="margin-bottom:15px;margin-top:15px" v-if="contrastDataAll">
         <a-col :span="6">
-          <a-card title="总消耗对比" :bordered="false">
+          <a-card title="总消耗对比">
             <p>{{ contrastDataAll.beCompared.statDate }}:{{ contrastDataAll.beCompared.cost }}</p>
             <p>
               {{ contrastDataAll.compared.statDate }}:{{ contrastDataAll.compared.cost }}
@@ -180,7 +180,7 @@ p{
           </a-card>
         </a-col>
         <a-col :span="6">
-          <a-card title="封面点击数对比" :bordered="false">
+          <a-card title="封面点击数对比">
             <p>{{ contrastDataAll.beCompared.statDate }}:{{ contrastDataAll.beCompared.photoClick }}</p>
             <p>
               {{ contrastDataAll.compared.statDate }}:{{ contrastDataAll.compared.photoClick }}
@@ -212,7 +212,7 @@ p{
           </a-card>
         </a-col>
         <a-col :span="6">
-          <a-card title="封面曝光数对比" :bordered="false">
+          <a-card title="封面曝光数对比">
             <p>{{ contrastDataAll.beCompared.statDate }}:{{ contrastDataAll.beCompared.photoShow }}</p>
             <p>
               {{ contrastDataAll.compared.statDate }}:{{ contrastDataAll.compared.photoShow }}
@@ -244,7 +244,7 @@ p{
           </a-card>
         </a-col>
         <a-col :span="6">
-          <a-card title="素材曝光数对比" :bordered="false">
+          <a-card title="素材曝光数对比">
             <p>{{ contrastDataAll.beCompared.statDate }}:{{ contrastDataAll.beCompared.aclick }}</p>
             <p>
               {{ contrastDataAll.compared.statDate }}:{{ contrastDataAll.compared.aclick }}
@@ -282,7 +282,6 @@ p{
       <a-row :gutter="10">
         <a-col :span="24">
           <a-card
-          :bordered="false"
             style="width:100%"
             :tabList="tabListNoTitle"
             :activeTabKey="noTitleKeyTwo"
@@ -295,7 +294,6 @@ p{
       <a-row style="margin-bottom:15px;margin-top:15px" v-if="dataTableTwo.length > 0">
         <a-col :span="24">
           <a-card
-          :bordered="false"
             :tabList="tableCard"
             :activeTabKey="noTitleKeyTableTwo"
             @tabChange="key => onTabChange(key, 'noTitleKeyTableTwo')"
@@ -308,7 +306,6 @@ p{
     <a-row style="margin-bottom:15px;margin-top:12px">
       <a-col :span="24">
         <a-card
-        :bordered="false"
           :tabList="tableNowCard"
 
           :activeTabKey="noTitleKeyTable"

+ 509 - 0
src/views/modules/Statistics/materialReport/materialReport.vue

@@ -0,0 +1,509 @@
+<template>
+    <div class="materialReport">
+        <div class="card-container">
+            <a-tabs type="card">
+            <a-tab-pane key="1" >
+                <span slot="tab">
+                    <a-icon type="apple" />
+                    大盘
+                </span>  
+            </a-tab-pane>
+            <a-tab-pane key="2" >
+                <span slot="tab">
+                    <a-icon type="apple" />
+                   快手
+                </span>
+            </a-tab-pane>
+            <a-tab-pane key="3" >
+                <span slot="tab">
+                    <a-icon type="apple" />
+                    头条
+                </span>
+            </a-tab-pane>
+            </a-tabs>
+            <div class="option">
+                <div class="item">
+                    <span>上传时间</span>
+                    <a-range-picker
+                    v-model="dateValue"
+                    :ranges="dateRanges"
+                    
+                    :disabled-date="disabledDate"
+                    style="width:250px"
+                    />
+                </div>
+                <div class="item">
+                    <span>数据日期</span>
+                    <a-range-picker
+                    v-model="dateValue"
+                    :ranges="dateRanges"
+                    
+                    :disabled-date="disabledDate"
+                    style="width:250px"
+                    />
+                </div>
+                <div class="item">
+                    <span>数据维度</span>
+                    <a-radio-group v-model="dataDimension" @change="dataDimensionChange">
+                        <a-radio-button value="a">媒体</a-radio-button>
+                        <a-radio-button value="b">组别</a-radio-button>
+                        <a-radio-button value="c">项目</a-radio-button>
+                        <a-radio-button value="d">设计</a-radio-button>
+                    </a-radio-group>
+                    <a-select  style="width: 200px;margin-left:10px" v-model="dataDimensionValue" allowClear  :loading='specificLoading'>
+                        <a-select-option v-for="(item,index) in dataDimensionList" :key="index" :value='item.id'>
+                            {{item.name}}
+                        </a-select-option>
+                    </a-select>
+                </div>
+            </div>
+        </div>
+
+        <div class="echart">
+            <div class="echart-header">
+                数据趋势
+            </div>
+            <div class="echartBody">
+                <div id="echart" ref="echart" style="width:100%;height:350px">
+                    <!-- <a-empty style="position: relative; top: 50%; margin-top: -65px" /> -->
+                </div>
+            </div>
+        </div>
+
+        <div class="tableBody">
+            <YoutTable 
+                headTitle='详细数据'
+                :isNeedCustomColumn='true'
+                :isNeedExport='true'
+                :mediaType='1'
+                :columns='column'
+                :columnsFixd='columnsFixd'
+                :scrollX='2500'
+                :pagination='ipagination'
+                @exportExcel='exportExcel'
+                @change='tableChange'
+            >
+
+            </YoutTable>
+        </div>
+    </div>
+</template>
+
+<script>
+import moment from 'moment';
+import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
+import YoutTable from '@/components/youtTable/YoutTable'
+var echarts = require('echarts')
+
+const columnsFixd = [
+    {
+        title: '时间',
+        dataIndex: 'date',
+        scopedSlots: { customRender: 'date' },
+        align: 'center',
+        key:'date',
+        width:200,
+        fixed:'left',
+        
+    },
+    {
+        title: '账户ID',
+        dataIndex: 'accountId',
+        align: 'center',
+        width: 200,
+        fixed:'left',
+        scopedSlots: { customRender: 'accountId' }
+    },
+    {
+        title: '账户昵称',
+        dataIndex: 'authName',
+        align: 'center',
+        width: 200,
+        fixed:'left',
+    },
+    
+]
+
+const initVariableColimns=[
+    {
+          title: '消耗(元)',
+          dataIndex: 'cost',
+          width:150,
+          tip: '广告在投放期间的花费总额',
+          align: 'center',
+          scopedSlots: { customRender: 'cost' },
+          sorter: () => {}
+    },
+      // {
+      //     title: '折后消耗(元)',
+      //     dataIndex: 'discountCost',
+      //     width:150,
+      //     tip: '广告在投放期间的花费总额',
+      //     align: 'center',
+      //     scopedSlots: { customRender: 'discountCost' },
+      //     sorter: () => {}
+      // },
+    {
+        title: '封面曝光数',
+        dataIndex: 'photoShow',
+        tip: '广告在瀑布流被观看次数',
+        align: 'center',       
+        scopedSlots: { customRender: 'photoShow' },
+        sorter:() => {}
+    },
+    {
+        title: '封面点击数',
+        dataIndex: 'photoClick',
+        tip: '用户点击封面进入视频播放页的次数(数据会进行反作弊去重)',
+        align: 'center',
+    
+        scopedSlots: { customRender: 'photoClick' },
+        sorter: () => {}
+    },
+    {
+        title: '封面点击率',
+        dataIndex: 'clickRate',
+        tip: '封面点击数占封面展示数百分比',
+        align: 'center',    
+        scopedSlots: { customRender: 'clickRate' },
+        sorter:() => {}
+    },
+    {
+        title: '素材曝光数',
+        dataIndex: 'aClick',
+        tip: '用户进入视频播放页观看的次数(数据会进行反作弊去重)',
+        align: 'center',
+    
+        scopedSlots: { customRender: 'aClick' },
+        sorter:() => {}
+    },
+    {
+        title: '行为数',
+        dataIndex: 'bClick',
+        tip: '用户在视频播放页单击转化按钮的次数/展示数*100%',
+        align: 'center',
+    
+        scopedSlots: { customRender: 'bClick' },
+        sorter:() => {}
+    },
+    
+    {
+        title: '行为率',
+        dataIndex: 'bClickRate',
+        tip: '行为数占素材曝光数百分比',
+        align: 'center',    
+        scopedSlots: { customRender: 'bClickRate' },
+        sorter:() => {}
+    },
+    {
+        title: '平均千次封面曝光花费(元)',
+        dataIndex: 'cpm',
+        tip: '花费/封面曝光数*1000',
+        align: 'center',    
+        scopedSlots: { customRender: 'cpm' },
+        sorter:() => {}
+    },
+    {
+        title: '平均封面点击单价(元)',
+        dataIndex: 'cpc',
+        tip: '花费/封面点击数',
+        align: 'center',    
+        scopedSlots: { customRender: 'cpc' },
+        sorter:() => {}
+    },
+    {
+        title: '平均行为单价(元)',
+        dataIndex: 'cpb',
+        tip: '总花费/行为数',
+        align: 'center',    
+        scopedSlots: { customRender: 'cpb' },
+        sorter:() => {}
+    },
+]
+    export default {
+        components:{
+            YoutTable,
+        },
+        data() {
+            return {
+                column:[...columnsFixd,...initVariableColimns] ,//table的表头
+                columnsFixd,
+                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;
+                    }
+                },
+
+                dateRanges:{ '今天': [moment(), moment()],
+                '昨天':[moment().subtract(1,'days'), moment().subtract(1,'days')],
+                '半个月': [moment(), moment().endOf('month')], 
+                '一个月': [moment(), moment().endOf('month')], 
+                },
+                dateValue:[],
+                dataDimension:'a',
+                dataDimensionValue:'',
+                dataDimensionList:[],
+                specificLoading:false,
+            }
+        },
+        methods: {
+            //导出报表
+            exportExcel() {
+                console.log('触发导出事件')
+                let column = this.columns.map((item, index) => {
+                    
+                        return item.dataIndex      
+                        
+                })
+                let columns=column.splice(3)
+                    // console.log(columns)
+                downFilePost('/ctop/kuaishou/dailyPage/report/excel', {
+                    
+                    mediaId:this.mediaId,
+                    discount:this.discount,
+                    accountIds:this.accountId,
+                    startDate:this.dateValue[0].format('YYYY-MM-DD'),
+                    endDate:this.dateValue[1].format('YYYY-MM-DD'),
+                    hour:this.timeSelectValue,
+                    target:this.target,
+                    order:this.order,
+                    columns,
+                    
+                }).then(res => {
+                    let blob = new Blob([res], {
+                    type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+                    })
+                    let downloadElement = document.createElement('a')
+                    let href = window.URL.createObjectURL(blob) //创建下载的链接
+                    downloadElement.href = href
+                    downloadElement.download = moment().format('YYYY-MM-DD') + '账户报表.xlsx' //下载后文件名
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click() //点击下载
+                    document.body.removeChild(downloadElement) //下载完成移除元素
+                    window.URL.revokeObjectURL(href) //释放掉blob对象
+                })
+            },
+            tableChange(data){
+                console.log(data)
+            },
+            //获取echart的值
+            initEchart(idName, optionName) {
+                const chart = this.$refs[idName]
+                //   console.log(chart)
+                if (chart) {
+                    const myChart = echarts.init(document.getElementById(idName))
+                    // myChart.showLoading({
+                    //     text: "图表数据正在努力加载..."
+                    // });
+                    
+                    myChart.setOption(optionName)
+                    window.addEventListener('resize', function() {
+                    myChart.resize()
+                    })
+                }
+            },
+            handlerEchartOption(data){
+                
+                var option ={
+                    // title: {
+                    //     text: '折线图堆叠'
+                    // },
+                    tooltip: {
+                        trigger: 'axis'
+                    },
+                    // legend: {
+                    //     data: ['邮件营销', '联盟广告', ]
+                    // },
+                    grid: {
+                        left: '3%',
+                        right: '4%',
+                        bottom: '3%',
+                        containLabel: true
+                    },
+                    legend: {
+                        icon: 'circle',
+                        top: '5%',
+                        right: '5%',
+                        itemWidth: 6,
+                        itemGap: 20,
+                        textStyle: {
+                            color: '#556677'
+                        }
+                    },
+                    toolbox: {
+                        // feature: {
+                        //     saveAsImage: {}
+                        // }
+                    },
+                    xAxis: {
+                        type: 'category',
+                        data: ['1','2','3','4','5','6','7'],
+                        boundaryGap: false,
+                        // 坐标轴线
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                            color: '#999'
+                            }
+                        },
+                        // 分割线
+                        splitLine: {
+                            show: true,
+                            lineStyle: {
+                            type: 'dashed',
+                            color: '#e5e5e5'
+                            }
+                        }
+                    },
+                    yAxis: {
+                        type: 'value',
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: '#999'
+                            }
+                        },
+                        splitLine: {
+                            lineStyle: {
+                                type: 'dashed',
+                                color: '#e5e5e5'
+                            }
+                        }
+                    },
+                    series: [
+                        {
+                            name: '邮件营销',
+                            type: 'line',
+                            stack: '总量',
+                            data: [120, 132, 101, 134, 90, 230, 210],
+                            symbol: 'circle',
+                            symbolSize: 1,
+                            lineStyle: {
+                            normal: {
+                                width: 2,
+                                // color: '#0bcd74'
+                            }
+                            },
+                            itemStyle: {
+                                borderColor: '#ffffff',
+                                borderWidth: 0
+                            },
+                        },
+                        {
+                            name: '联盟广告',
+                            type: 'line',
+                            stack: '总量',
+                            data: [220, 182, 191, 234, 290, 330, 310],
+                            symbol: 'circle',
+                            symbolSize: 1,
+                            lineStyle: {
+                                normal: {
+                                    width: 2,
+                                    // color: '#0bcd74'
+                                }
+                            },
+                            itemStyle: {
+                                borderColor: '#ffffff',
+                                borderWidth: 3
+                            },
+                        },
+                        
+                    ]
+                }
+
+                return option
+            },
+            disabledDate(current) {
+                return current && current > moment().endOf('day');
+            },
+            dataDimensionChange(e){
+                console.log(`checked = ${e.target.value}`);
+            },
+            
+        },
+        mounted() {
+            this.$nextTick(()=>{
+                this.initEchart('echart',this.handlerEchartOption([]))
+            })
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.materialReport{
+    .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>
+    .card-container {
+        
+        overflow: hidden;
+        /* padding: 24px; */
+    }
+    .card-container > .ant-tabs-card > .ant-tabs-content {
+        /* height: 120px; */
+        margin-top: -16px;
+    }
+
+    .card-container > .ant-tabs-card > .ant-tabs-content > .ant-tabs-tabpane {
+        background: #fff ;
+        /* padding: 16px; */
+    }
+
+    .card-container > .ant-tabs-card > .ant-tabs-bar {
+        border-color: #fff;
+    }
+
+    .card-container > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab {
+        border-color: transparent;
+        background: transparent !important;
+    }
+
+    .card-container > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active {
+        border-color: #fff;
+        background: #fff !important;
+    }
+</style>

+ 4 - 4
src/views/modules/advertiser/modules/ProjectModal.vue

@@ -19,11 +19,11 @@
           </a-radio-group>
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="项目名称">
-          <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]"/>
+          <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" />
         </a-form-item>
         <!-- <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="行业">
           <j-tree-select ref="treeSelect" placeholder="请选择行业" v-decorator="['industryId']"
-                         dict="sys_category,name,id" pidField="pid" pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76">
+            dict="sys_category,name,id" pidField="pid" pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76">
           </j-tree-select>
         </a-form-item>-->
         <a-form-item
@@ -88,7 +88,7 @@
           />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="最高转化出价">
-          <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元"/>
+          <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元" />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="销售">
           <a-select
@@ -133,7 +133,7 @@
             v-decorator="['designResponsibleId', { rules: [{ required: true, message: '请选择设计负责人' }] }]"
           >
             <a-select-option
-              v-for="appModel in designs"
+              v-for="appModel in options"
               :key="appModel.userId + new Date().getTime()"
               :value="appModel.userId"
             >{{ appModel.realName }}&#12288;&#12288;{{ appModel.roleName }}</a-select-option>

+ 4 - 4
src/views/modules/autoLaunch/strategyList.vue

@@ -610,8 +610,8 @@ export default {
         goAnalysis(record){
             console.log(record)
             localStorage.setItem('currentStrategy',JSON.stringify(record))
-            this.$router.push('/autoLaunch/autoLaunchReport')
-            // this.$router.push('/autoLaunch/autoReportIndex')
+            // this.$router.push('/autoLaunch/autoLaunchReport')
+            this.$router.push('/autoLaunch/autoReportIndex')
         },
         filterOption(input, option) {
             return (
@@ -1054,9 +1054,9 @@ export default {
     .optionBtn{
         // display: inline-block;
         float: right;
-        .searchBtn{
+        // .searchBtn{
             // margin-right: 10px;
-        }
+        // }
     }
     .tableArea{
         .tableOption{

+ 1 - 1
src/views/modules/workBench/designLeader/platForm.vue

@@ -106,7 +106,7 @@
                                         
                                         <div class="progress" v-if="item.orderStatus==1||item.orderStatus==3">
                                             <a-progress type="circle" :percent="(item.materialFinishAmount/item.materialAmount)*100" :width='30' :showInfo='false'  :strokeWidth='10' />
-                                            <span style="margin-left:15px">{{(item.materialFinishAmount/item.materialAmount)*100}}%</span>
+                                            <span style="margin-left:15px">{{Math.round((item.materialFinishAmount/item.materialAmount)*100)}}%</span>
                                         </div>
                                         <div class="progress" v-else>
                                             {{item.orderStatus|handleOrderStatus}}

+ 1 - 1
src/views/modules/workBench/designPeople/platForm.vue

@@ -86,7 +86,7 @@
                                         
                                         <div class="progress" v-if="item.orderStatus==1||item.orderStatus==3">
                                             <a-progress type="circle" :percent="(item.materialFinishAmount/item.materialAmount)*100" :width='30' :showInfo='false'  :strokeWidth='10' />
-                                            <span style="margin-left:15px">{{(item.materialFinishAmount/item.materialAmount)*100}}%</span>
+                                            <span style="margin-left:15px">{{Math.round((item.materialFinishAmount/item.materialAmount)*100)}}%</span>
                                         </div>
                                         <div class="progress" v-else>
                                             {{item.orderStatus|handleOrderStatus}}

+ 223 - 143
src/views/modules/workBench/materialList.vue

@@ -420,7 +420,9 @@
                                 :visible="childrenDrawer"
                                 @close="onChildrenDrawerClose"
                             >  
+                                <a-spin :spinning="videoUploadLoading"> 
                                 <a-form :form="form" :label-col="labelCol" :wrapper-col="wrapperCol">
+                                     
                                     <a-form-item label="视频上传">
                                         
                                         <uploadFile
@@ -559,6 +561,7 @@
                                         />
                                     </a-form-item>
                                 </a-form>
+                                </a-spin>
                                <div
                                     :style="{
                                     position: 'absolute',
@@ -575,7 +578,7 @@
                                 >
                                     
                                     <a-button key="back" @click="onChildrenDrawerClose" style="margin-right:15px">取消</a-button>
-                                    <a-button type="primary" :disabled="!confirmLoading" @click="onChildrenDrawerOk" :loading="loadingElse2">确定</a-button>
+                                    <a-button type="primary" :disabled="!confirmLoading" @click="onChildrenDrawerOk" :loading="loadingElse">确定</a-button>
                                 
                                 </div>
                             </a-drawer>
@@ -635,7 +638,7 @@
                             </div>
                             <!-- <div class="info-item btnBody"> -->
                                 <div class="bottom-btn">
-                                    <a-button type='primary' v-if="currentVideo.videoStatus==2" @click="modifyVideo" style="margin-right:20px">修改视频信息</a-button>
+                                    <a-button type='primary' v-if="currentVideo.videoStatus>=1" @click="modifyVideo"  :disabled="!(currentVideo.clip==userInfo.id)" style="margin-right:20px">修改视频信息</a-button>
                                     <a-button type='default' @click="onClose">关闭</a-button>
                                 </div>
                             <!-- </div> -->
@@ -684,7 +687,7 @@
                                 <div v-if="currentScript.scriptStatus>0" style="margin-right:20px">
                                     <a :href="currentScript.url">{{currentScript.scriptName}}</a>
                                 </div>
-                                <div v-if="currentScript.scriptStatus==0||currentScript.scriptStatus==2">
+                                <div v-if="currentScript.scriptStatus<3">
                                    
                                     <p v-if="currentMaterial.plan==userInfo.id">
                                         <a-upload
@@ -917,11 +920,23 @@ export default {
             
         ]
         return {
+            videoEchoInfo:{},
+            videoUploadLoading:false,
+            videoinfo:{
+                url: '',
+                md5: '',
+                name: '',
+                width:undefined,
+                height:undefined,
+
+            },
+            imageinfo:[],
+
             assignVisibleLoading:false,
             visibleLoading:false,
 
             loadingElse2:false,
-             rules: {
+            rules: {
                 
                 clip: [{ required: true, message: '剪辑人员必须指派', trigger: 'change' }],
                 // shot: [{ required: true, message: '拍摄人员必须指派', trigger: 'change' }],
@@ -1164,18 +1179,42 @@ export default {
         },
         modifyVideo(){
             this.childrenDrawer=true;
-            console.log(this.currentVideo);
-            // urlList: {
-            //     url: '',
-            //     md5: '',
-            //     name: '',
-            // },
-            // urlListImage: {
-            //     url: [],
-            //     md5: [],
-            //     name: [],
-            //     size: [],
-            // },
+            // console.log(this.currentVideo);
+            
+            this.videoUploadLoading=true
+            getAction('/platform/material/videoEcho',{
+                videoId:this.currentVideo.videoId
+            }).then(res=>{
+                console.log(res)
+                console.log(res)
+                this.videoUploadLoading=false;
+                this.confirmLoading=true;
+                if(res.result.video){
+                    this.urlList=res.result.video
+                    this.videoinfo=res.result.video;
+                    this.videoinfo.url=this.videoinfo.url.replace(/https:/g,'')
+                }
+                if(res.result.covers){
+                    this.imageinfo=res.result.covers;
+                    this.urlListImage= {
+                        url : res.result.covers.map(item=>{return item.url}),
+                        md5 : res.result.covers.map(item=>item.md5),
+                        name : res.result.covers.map(item=>item.name),
+                        size : res.result.covers.map(item=>item.size),
+                        format : res.result.covers.map(item=>item.format),
+                    }
+                }
+                
+                this.form.setFieldsValue({
+                    contentTagList: res.result.tags.contentTagList.map(item=>{return item.tagId}),
+                    modalityTagList:  res.result.tags.modalityTagList.map(item=>{return item.tagId}),
+                    modTagList:  res.result.tags.modTagList.map(item=>{return item.tagId}),
+                    senceTagList:  res.result.tags.senceTagList.map(item=>{return item.tagId}),
+                })
+
+                this.videoEchoInfo=res.result
+            })
+            
         },
         goOrderDetail(record){
             console.log(record)
@@ -1384,10 +1423,10 @@ export default {
         },
 
 
-
-
         beforeUpload(file) {
-            this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.materialId}&projectId=${this.currentMaterial.projectId}`
+
+            // this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.materialId}&projectId=${this.currentMaterial.projectId}`
+            this.uploadAction= `http://139.186.151.174:8804/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.materialId}&projectId=${this.currentMaterial.projectId}`
             this.loadDisabled = true
             const size = (Number(file.size) / (1024 * 1024)).toFixed(2)
             const fileName = file.name
@@ -1433,7 +1472,7 @@ export default {
         },
         onChildrenDrawerClose() {
             this.childrenDrawer = false;
-            this.loadingElse2=false
+            this.loadingElse=false
             this.dataElse = []
             this.form.resetFields()
             this.urlList = {
@@ -1448,113 +1487,95 @@ export default {
                 name: [],
                 size: [],
             }
-            this.imageArrList = []
+            this.imageArrList = [];
+            this.videoinfo={
+                url: '',
+                md5: '',
+                name: '',
+                width:undefined,
+                height:undefined,
+            };
+            this.imageinfo=[];
+            this.form.setFieldsValue({
+                contentTagList: null,
+                modalityTagList: null,
+                modTagList: null,
+                senceTagList: null,
+            })
         },
 
         onChildrenDrawerOk(){
             this.form.validateFieldsAndScroll((err, values) => {
                 if (!err) {
                     console.log(values)
-                    this.loadingElse2 = true
+                    this.loadingElse = true
                     var params = {
                         ...values,
+                        ...this.videoinfo,
+                        covers:[...this.imageinfo]
                     }
-                    // var roleCode = {}
-                    // for (const key in this.role) {
-                    //     if (key == 'roleCode') {
-                    //         this.role[key] = this.role[key] + 'Id'
-                    //         roleCode[this.role[key]] = this.userInfo.id
-                    //     }
-                    // }
+                   
                     params.id = this.add ? null : this.id
-                    params.code = this.urlList.md5
-                    params.url = this.urlList.url
-                    params.materialName = this.urlList.name
-                
                     params.userId = this.userInfo.id
-                    params.projectId = values.projectId
-                    params.materialDescribe = values.materialDescribe
-                    params.type = 'VIDEO'
-                    //   params.tagList = values.tagList
-                    params.ascription ={
-                        planId: this.currentMaterial.plan,
-                        shotId: this.currentMaterial.shot,
-                        clipId: this.currentMaterial.clip,
-                    }
+
                     params.projectId=this.currentMaterial.projectId
-                    params.materialId=this.currentMaterial.id||this.currentMaterial.materialId
-                    params.tag = this.tags
-                    params.imageArr = this.imageArrList
-                    if (this.add) {
-                        orderFileInsert(params).then((res) => {
-                        if (res.success) {
-                            this.form.resetFields()
-                            this.urlList = {
-                            url: '',
-                            md5: '',
-                            name: '',
-                            }
-                            
-                            this.urlListImage = {
-                            url: [],
-                            md5: [],
-                            name: [],
-                            size: [],
-                            }
-                            this.imageArrList = []
-                            this.tags = []
-                            
-                            this.childrenDrawer = false
-                            this.visible=false;
-                            this.add = true
-                            for (const key in this.role) {
-                            if (key == 'roleCode') {
-                                this.role[key] = this.role[key].substr(0, this.role[key].length - 2)
-                            }
-                            }
-                            this.$message.success('素材上传成功')
-                            this.loadingElse2 = false
-                            this.materialHttp(this.activeKey)
-                            //   this.departValue = []
-                        } else {
-                            this.$message.error(res.message)
-                            this.loadingElse2 = false
-                            this.childrenDrawer = false
-                            this.visible=false;
-                        }
-                        })
-                    } else {
-                        fileEdit({
-                        ...params,
-                        status: '0',
-                        }).then((res) => {
-                        if (res.success) {
-                            this.form.resetFields()
-                            this.urlList = {
-                            url: '',
-                            md5: '',
-                            name: '',
-                            }
-                            
-                            this.tags = []                      
-                            this.childrenDrawer = false
-                            this.add = true
-                            for (const key in this.role) {
+                    params.materialId=this.currentMaterial.id ||this.currentMaterial.materialId
+                    params.materialCode=this.currentMaterial.materialCode
+                    
+                        postAction('/platform/file/uploadVideo',params).then(res=>{
+                            this.loading=false;
+                            if (res.success) {
+                                this.form.resetFields()
+                                this.urlList = {
+                                    url: '',
+                                    md5: '',
+                                    name: '',
+                                }
+                                
+                                this.urlListImage = {
+                                    url: [],
+                                    md5: [],
+                                    name: [],
+                                    size: [],
+                                }
+                                this.imageArrList = []
+                                this.tags = []
+                                
+                                this.childrenDrawer = false
+                                this.visible=false;
+                                this.add = true
+                                for (const key in this.role) {
                                 if (key == 'roleCode') {
                                     this.role[key] = this.role[key].substr(0, this.role[key].length - 2)
                                 }
+                                }
+                                this.$message.success('素材上传成功')
+                                this.loadingElse = false
+                                this.videoinfo={
+                                    url: '',
+                                    md5: '',
+                                    name: '',
+                                    width:undefined,
+                                    height:undefined,
+                                };
+                                this.imageinfo=[];
+                                this.materialHttp(this.activeKey)
+                                //   this.departValue = []
+                            } else {
+                                this.$message.error(res.message)
+                                this.loadingElse = false
+                                // this.childrenDrawer = false
+                                // this.visible=false;
                             }
-                        } else {
-                            this.$message.error(res.message)                       
-                            this.childrenDrawer = false
-                        }
                         })
-                    }
-                }else {
-
+                        
+                } else {
+                    this.$message.error('请正确填写必填项目')
                 }
+                
             })
         },
+
         // 上传视频相关方法
         removeUpload() {
             this.form.setFieldsValue({
@@ -1569,10 +1590,12 @@ export default {
             this.confirmLoading = true
             this.repeat = false
             this.urlList.url = urlAll[0].url
+            
+            this.videoinfo.url=urlAll[0].url
             this.$message.success('上传成功')
 
             getAction('/ctop/materialTagInfo/detail', {
-                code: this.urlList.md5,
+                code: this.videoinfo.md5,
             }).then((res) => {
                 if (res.success) {
                 if (res.modalityTagList.length > 0) {
@@ -1601,25 +1624,23 @@ export default {
             console.log(index)
         },
         overUploadImage(urlAll) {
-        
+            console.log(urlAll)
             var that = this
             that.material = []
             that.imageArrList = []
             var img
             if (urlAll.length > 0) {
-                for (var i = 0; i < urlAll.length; i++) {
-                that.imageArrList.push({
-                    // width: img.width,
-                    // height: img.height,
-                    // size: this.urlListImage.size[i],
-                    code: this.urlListImage.md5[i],
-                    url: urlAll[i].url,
-                    materialName: this.urlListImage.name[i],
+                urlAll.forEach((ele,index)=>{
+
+                    this.imageinfo.forEach(item=>{
+                        if(item.name==ele.name){
+                            item.url=ele.url
+                        }
+                    })
+                    // img = new Image()
+                    // img.src = urlAll[index].url
                 })
-                img = new Image()
-                img.src = urlAll[i].url
                 
-                }
             } else {}
         },
         addImage(item) {
@@ -1650,35 +1671,79 @@ export default {
                 size: [],
             }
             this.imageArrList = []
+            
         },
         file(file) {
+            console.log(file)
             var bmf = new BMF()
             var that = this
-            return new Promise(function (resolve, reject) {
-                bmf.md5(file, (err, md5) => {
-                that.urlList.name = file.name
-                that.urlList.md5 = md5
-                fileCheck({
-                    code: md5,
-                    projectId: that.currentMaterial.projectId,
-                }).then((res) => {
-                    if (res.code == 0) {
-                    that.$message.error('此素材已经上传')
-                    that.repeat = true
-                    reject()
-                    } else {
-                    that.repeat = false
+            
+            return new Promise( (resolve, reject)=> {
+                
+                this.getVideoMsg(file).then((videoinfo) => {
+                    const { duration, height, width } = videoinfo;
+                    //获取到视频的时长,高度,宽度
+                    bmf.md5(file, (err, md5) => {
+                        videoinfo.name = file.name
+                        videoinfo.md5 = md5
+                        that.repeat = false
+                    })
+                    videoinfo.size=file.size;
+                    videoinfo.format=file.type
+                    console.log(videoinfo);
+                    this.videoinfo=videoinfo
                     resolve()
-                    //   reject()
-                    }
-                })
-                })
+                });
             })
+
+            
+
+            
+        },
+        
+        getVideoMsg(file) {
+            // console.log('getVideoMsg')
+            return new Promise((resolve) => {
+                let videoElement = document.createElement("video");
+                videoElement.src = URL.createObjectURL(file);
+                videoElement.addEventListener("loadedmetadata", function () {
+                    let obj={
+                        duration: videoElement.duration,
+                        height: videoElement.videoHeight,
+                        width: videoElement.videoWidth,
+                    }
+                    
+                    window.URL.revokeObjectURL(videoElement.src);
+                    videoElement.remove()
+                    resolve(obj);
+                });
+            });
+        },
+
+        getImageMsg(file){
+            return new Promise((resolve) => {
+                // let imageElement = document.createElement("image");
+                let imageElement = new Image();
+                let obj={}
+                imageElement.src = URL.createObjectURL(file);
+                // console.log(imageElement)
+                imageElement.onload=function(){
+                    // console.log(imageElement.width)
+                    obj={
+                        height:imageElement.height,
+                        width:imageElement.width
+                    }
+                    console.log(obj)
+                    resolve(obj)
+                }
+                
+            });
         },
         fileWater(file) {
+            console.log(file)
             var bmf = new BMF()
             var that = this
-            var codeData = that.urlList.md5 != '' ? that.urlList.md5 : that.addImageData.code
+            var codeData = that.videoinfo.md5 != '' ? that.videoinfo.md5 : that.addImageData.code
             console.log(codeData)
             this.urlListImage = {
                 url: [],
@@ -1686,14 +1751,27 @@ export default {
                 name: [],
                 size: [],
             }
-            return new Promise(function (resolve, reject) {
+            this.imageinfo=[]
+            return new Promise( (resolve, reject)=> {
                 bmf.md5(file, (err, md5) => {
                 that.urlListImage.name.push(file.name)
                 that.urlListImage.md5.push(md5)
-                that.urlListImage.size.push(file.size)
-                resolve()
+                that.urlListImage.size.push(file.size)})
                 
-                })
+                this.getImageMsg(file).then((imageinfo) => {
+                   
+                    imageinfo.size=file.size;
+                    imageinfo.format=file.type;
+                    imageinfo.name=file.name
+                    bmf.md5(file, (err, md5) => {                        
+                        imageinfo.md5=md5   
+                        this.imageinfo.push({
+                            ...imageinfo
+                        })   
+                        resolve()                                    
+                    })
+                    
+                });
             })
         },
 
@@ -1802,6 +1880,7 @@ export default {
         this.role=this.$parent.role;  
         this.activeKey=this.$parent.materialStatus
         this.materialHttp(this.$parent.materialStatus)
+        this.getTagListAll()
     },
     activated() {
         if(this.$parent.role=='operator'){
@@ -1813,6 +1892,7 @@ export default {
         }
         this.activeKey=this.$parent.materialStatus
         this.materialHttp(this.$parent.materialStatus)
+        this.getTagListAll()
     },
     filters:{
         handlerMaterialStatus(val){

+ 44 - 32
src/views/modules/workBench/operator/materialList.vue

@@ -828,23 +828,29 @@ export default {
         // 脚本驳回
         scriptReject(){
             this.loadingElse=true
-            postAction(this.url.scriptReject,{
-                id:this.currentMaterial.materialId,
-                scriptAdvise:this.scriptAdvise,
-                materialCode:this.currentMaterial.materialCode
-            }).then(res=>{
-                console.log(res);
-
-                this.scriptVisible=false;
+            if(this.scriptAdvise){
+                postAction(this.url.scriptReject,{
+                    id:this.currentMaterial.materialId,
+                    scriptAdvise:this.scriptAdvise,
+                    materialCode:this.currentMaterial.materialCode
+                }).then(res=>{
+                    console.log(res);
+                    this.scriptAdvise=''
+                    this.scriptVisible=false;
+                    this.loadingElse=false;
+                    this.scriptRejectVisiable=false
+                    if(res.success){
+                        this.$message.success(res.message);
+                        this.tableHttp(this.$parent.materialStatus)
+                    }else{
+                        this.$message.error(res.message)
+                    }
+                })
+            }else{
                 this.loadingElse=false;
-                this.scriptRejectVisiable=false
-                if(res.success){
-                    this.$message.success(res.message);
-                    this.tableHttp(this.$parent.materialStatus)
-                }else{
-                    this.$message.error(res.message)
-                }
-            })
+                this.$messgae.error('请填写驳回理由')
+            }
+            
         },
         // 视频通过审核
         approved(){
@@ -869,23 +875,29 @@ export default {
         // 视频驳回
         reject(){
             this.loadingElse=true
-            postAction(this.url.videoReject,{
-                id:this.currentMaterial.materialId,
-                videoAdvise:this.videoAdvise,
-                materialCode:this.currentMaterial.materialCode
-            }).then(res=>{
-                console.log(res);
-
-                this.visible=false;
+            if(this.videoAdvise){
+                postAction(this.url.videoReject,{
+                    id:this.currentMaterial.materialId,
+                    videoAdvise:this.videoAdvise,
+                    materialCode:this.currentMaterial.materialCode
+                }).then(res=>{
+                    console.log(res);
+                    this.videoAdvise='';
+                    this.visible=false;
+                    this.loadingElse=false;
+                    this.videoRejectVisiable=false
+                    if(res.success){
+                        this.$message.success(res.message);
+                        this.tableHttp(this.$parent.materialStatus)
+                    }else{
+                        this.$message.error(res.message)
+                    }
+                })
+            }else{
                 this.loadingElse=false;
-                this.videoRejectVisiable=false
-                if(res.success){
-                    this.$message.success(res.message);
-                    this.tableHttp(this.$parent.materialStatus)
-                }else{
-                    this.$message.error(res.message)
-                }
-            })
+                this.$message.error('请填写驳回理由')
+            }
+            
         },
         
         search(){

+ 1 - 1
src/views/modules/workBench/operator/platForm.vue

@@ -99,7 +99,7 @@
                                         
                                         <div class="progress" v-if="item.orderStatus==1||item.orderStatus==3">
                                             <a-progress type="circle" :percent="(item.materialFinishAmount/item.materialAmount)*100" :width='30' :showInfo='false'  :strokeWidth='10' />
-                                            <span style="margin-left:15px">{{(item.materialFinishAmount/item.materialAmount)*100}}%</span>
+                                            <span style="margin-left:15px;">{{Math.round((item.materialFinishAmount/item.materialAmount)*100)}}%</span>
                                         </div>
                                         <div class="progress" v-else>
                                             {{item.orderStatus|handleOrderStatus}}

+ 316 - 157
src/views/modules/workBench/orderDetail.vue

@@ -402,7 +402,7 @@
                         </div>
                         <div>
                             <p class="markName">订单进度</p>
-                            <p class="big">{{(currentOrderInfo.materialFinishAmount/currentOrderInfo.materialAmount)*100|| 0 }}%</p>
+                            <p class="big">{{Math.round((currentOrderInfo.materialFinishAmount/currentOrderInfo.materialAmount)*100)|| 0 }}%</p>
                         </div>
                     </div>
                 </div>
@@ -525,7 +525,7 @@
                                
                                 
                                 <span class="wancheng" v-if="text==7"> </span>
-                                <span class="bohui" v-else-if="text==3"> </span>
+                                <span class="bohui" v-else-if="text==3 || text==6"> </span>
                                 <span class="shenhe" v-else> </span>
                                 {{text | handlerMaterialStatus}}
                             </div>
@@ -564,7 +564,7 @@
                     @close="onClose"
                     >
                         
-                         <a-spin :spinning="visibleLoading">   
+                        <a-spin :spinning="visibleLoading">   
                             <a-drawer
                                 :title="add ? '上传视频' : '修改视频'"
                                 width="600"
@@ -572,25 +572,26 @@
                                 :visible="childrenDrawer"
                                 @close="onChildrenDrawerClose"
                             >
+                                <a-spin :spinning="videoUploadLoading"> 
                                 <a-form :form="form" :label-col="labelCol" :wrapper-col="wrapperCol">
                                     <a-form-item label="视频上传">
-                                        <!-- :checkFile="file" -->
+                                        <!--  -->
                                         <uploadFile
-                                            
+                                            :checkFile="file"
                                             :value.sync="urlList.url"
                                             @overUpload="overUpload"
                                             @removeUpload="removeUpload"
-                                            :fileCount="10"
+                                            :fileCount="1"
                                             uploadType="video"
                                             :multiple="false"
                                         />
                                         <span v-if="repeat" style="color: red">此素材重复,请重新选择上传</span>
-                                        <span v-if="confirmLoading && urlList.url != ''" style="color: green">上传成功</span>
+                                        <span v-if="confirmLoading && videoinfo.url != ''" style="color: green">上传成功</span>
                                     </a-form-item>
                                     <a-form-item
                                         label="封面上传"
                                         class="add-image-material"
-                                        v-if="currentMaterial.projectId && add && urlList.url != ''"
+                                        v-if="currentMaterial.projectId && add && videoinfo.url != ''"
                                         >
                                         <uploadFile
                                             :value.sync="urlListImage.url"
@@ -732,12 +733,13 @@
                                         <a-textarea
                                             placeholder="请输入描述"
                                             v-decorator="[
-                                            'materialDescribe', // 给表单赋值或拉取表单时,该input对应的key
+                                            'describe', // 给表单赋值或拉取表单时,该input对应的key
                                             ]"
                                             :auto-size="{ minRows: 3, maxRows: 10 }"
                                         />
                                     </a-form-item>
                                 </a-form>
+                                </a-spin>
                                <div
                                     :style="{
                                     position: 'absolute',
@@ -814,11 +816,12 @@
                             </div>
                             <div class="bottom-btn">
                                 <a-button type='primary' @click="approved" v-if="role=='operator'&&currentMaterial.materialStatus==5" style="margin-right:20px">通过审核</a-button>
-                                <a-button type='default' @click="()=>{videoRejectVisiable=true}" v-if="role=='operator'&&currentMaterial.materialStatus==5"  style="margin-right:20px">驳回</a-button>                                                               
+                                <a-button type='default' @click="()=>{videoRejectVisiable=true}" v-if="role=='operator'&&currentMaterial.materialStatus==5"  style="margin-right:20px">驳回</a-button>            
+                                 <a-button type='primary' v-if="role!='operator'&&currentVideo.videoStatus>=1" :disabled="currentVideo.clip!=userInfo.id" @click="modifyVideo" style="margin-right:20px">修改视频信息</a-button>                                                   
                                 <a-button type='default' @click="onClose">关闭</a-button>
                             </div>
                         </div>
-                         </a-spin>   
+                        </a-spin>   
                     </a-drawer>
                     
 
@@ -861,7 +864,7 @@
                                 <div v-if="currentScript.scriptStatus>0" style="margin-right:20px">
                                     <a :href="currentScript.url">{{currentScript.scriptName}}</a>
                                 </div>
-                                <div v-if="currentScript.scriptStatus==0||currentScript.scriptStatus==2">
+                                <div v-if="currentScript.scriptStatus<3">
                                    
                                     <p v-if="currentMaterial.plan==userInfo.id">
                                         <a-upload
@@ -967,15 +970,6 @@
                         <a-button key="back" @click="()=>{videoRejectVisiable=false}">取消</a-button>
                         <a-button type="primary"  @click="reject" :loading="loadingElse">确定驳回</a-button>
                     </template>
-                    <!-- <div>
-                        <span>驳回类型:</span>
-                        <a-radio-group v-model="videoRejectType" >
-                            <a-radio-button value="video">视频不合格</a-radio-button>
-                            <a-radio-button value="image">封面不合格</a-radio-button>
-                            <a-radio-button value="tag">标签不合格</a-radio-button>
-                           
-                        </a-radio-group>
-                    </div> -->
                     
                    <a-textarea
                     v-model="videoAdvise"
@@ -1136,6 +1130,8 @@ export default {
     },
     data() {
         return {
+            videoEchoInfo:{},
+            videoUploadLoading:false,
             videoRejectType:'1',
             assignVisibleLoading:false,
             visibleLoading:false,
@@ -1163,7 +1159,7 @@ export default {
             loadDisabled:false,
             labelCol: { span: 4 },
             wrapperCol: { span: 14 },
-            loadingElse: false,
+            
             formPerson:{
                 plan:'',
                 shot:'',
@@ -1292,9 +1288,59 @@ export default {
             add: true,
             inputVisible: false,
             inputValue: '',
+
+
+            videoinfo:{
+                url: '',
+                md5: '',
+                name: '',
+                width:undefined,
+                height:undefined,
+
+            },
+            imageinfo:[],
         }
     },
     methods: {
+        modifyVideo(){
+            this.childrenDrawer=true;
+            // console.log(this.currentVideo);
+            
+            this.videoUploadLoading=true
+            getAction('/platform/material/videoEcho',{
+                videoId:this.currentVideo.videoId
+            }).then(res=>{
+                console.log(res)
+                
+                this.videoUploadLoading=false;
+                this.confirmLoading=true;
+                if(res.result.video){
+                    this.urlList=res.result.video
+                    this.videoinfo=res.result.video;
+                    this.videoinfo.url=this.videoinfo.url.replace(/https:/g,'')
+                }
+                if(res.result.covers){
+                    this.imageinfo=res.result.covers;
+                    this.urlListImage= {
+                        url : res.result.covers.map(item=>{return item.url}),
+                        md5 : res.result.covers.map(item=>item.md5),
+                        name : res.result.covers.map(item=>item.name),
+                        size : res.result.covers.map(item=>item.size),
+                        format : res.result.covers.map(item=>item.format),
+                    }
+                }
+                
+                this.form.setFieldsValue({
+                    contentTagList: res.result.tags.contentTagList.map(item=>{return item.tagId}),
+                    modalityTagList:  res.result.tags.modalityTagList.map(item=>{return item.tagId}),
+                    modTagList:  res.result.tags.modTagList.map(item=>{return item.tagId}),
+                    senceTagList:  res.result.tags.senceTagList.map(item=>{return item.tagId}),
+                })
+
+                this.videoEchoInfo=res.result
+            })
+            
+        },
         editOrder(){
             this.$parent.isEdit=true;
             this.$parent.orderId=this.currentOrderInfo.id;
@@ -1605,27 +1651,36 @@ export default {
             })
         },
         // 视频驳回
-        reject(){           
-            postAction(this.url.videoReject,{
-                id:this.currentMaterial.id,
-                videoAdvise:this.videoAdvise,
-                materialCode:this.currentMaterial.materialCode
-                
-            }).then(res=>{
-                console.log(res);
-                this.videoAdvise=''
-                this.visible=false;
-                if(res.success){
-                    this.$message.success(res.message);
-                    this.materialHttp()
-                }else{
-                    this.$message.error(res.message)
-                }
-            })
+        reject(){   
+            this.loadingElse=true;
+            if(this.videoAdvise){
+                postAction(this.url.videoReject,{
+                    id:this.currentMaterial.id,
+                    videoAdvise:this.videoAdvise,
+                    materialCode:this.currentMaterial.materialCode
+                    
+                }).then(res=>{
+                    console.log(res);
+                    this.videoAdvise=''
+                    this.visible=false;
+                    this.videoRejectVisiable=false;
+                    if(res.success){
+                        this.$message.success(res.message);
+                        this.materialHttp()
+                    }else{
+                        this.$message.error(res.message)
+                    }
+                })
+            }else{
+                this.loadingElse=false;
+                this.$message.error('请填写驳回理由')
+            }        
+            
 
         },
         // 脚本通过审核
         scriptApproved(){
+            console.log(this.currentMaterial)
             postAction(this.url.scriptAccept,{
                 id:this.currentMaterial.id,
                  orderCode:this.currentMaterial.orderCode,
@@ -1644,22 +1699,31 @@ export default {
         },
         // 脚本驳回
         scriptReject(){
-            postAction(this.url.scriptReject,{
-                id:this.currentMaterial.id,
-                scriptAdvise:this.scriptAdvise,
-                materialCode:this.currentMaterial.materialCode
-            }).then(res=>{
-                console.log(res);
+            this.loadingElse=true;
+            if(this.scriptAdvise){
+                postAction(this.url.scriptReject,{
+                    id:this.currentMaterial.id,
+                    scriptAdvise:this.scriptAdvise,
+                    materialCode:this.currentMaterial.materialCode
+                }).then(res=>{
+                    console.log(res);
 
-                this.scriptVisible=false;
-                this.scriptReject=''
-                if(res.success){
-                    this.$message.success(res.message);
-                    this.materialHttp()
-                }else{
-                    this.$message.error(res.message)
-                }
-            })
+                    this.scriptVisible=false;
+                    this.scriptAdvise=''
+                    this.scriptRejectVisiable=false;
+                    this.loadingElse=false;
+                    if(res.success){
+                        this.$message.success(res.message);
+                        this.materialHttp()
+                    }else{
+                        this.$message.error(res.message)
+                    }
+                })
+            }else{
+                this.loadingElse=false;
+                this.$messgae.error('请填写驳回理由')
+            }
+            
         },
         // 生成水印
         getWater() {
@@ -1740,7 +1804,9 @@ export default {
 
 
         beforeUpload(file) {
-            this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.id}&projectId=${this.currentMaterial.projectId}`
+            // this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.id}&projectId=${this.currentMaterial.projectId}`
+            this.uploadAction= `http://139.186.151.174:8804/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.id}&projectId=${this.currentMaterial.projectId}`
+
             this.loadDisabled = true
             const size = (Number(file.size) / (1024 * 1024)).toFixed(2)
             const fileName = file.name
@@ -1801,7 +1867,21 @@ export default {
                 name: [],
                 size: [],
             }
-            this.imageArrList = []
+            this.imageArrList = [];
+            this.videoinfo={
+                url: '',
+                md5: '',
+                name: '',
+                width:undefined,
+                height:undefined,
+            };
+            this.imageinfo=[];
+            this.form.setFieldsValue({
+                contentTagList: null,
+                modalityTagList: null,
+                modTagList: null,
+                senceTagList: null,
+            })
         },
 
         onChildrenDrawerOk(){
@@ -1811,71 +1891,101 @@ export default {
                     this.loadingElse = true
                     var params = {
                         ...values,
+                        ...this.videoinfo,
+                        covers:[...this.imageinfo]
                     }
-                    // var roleCode = {}
-                    // for (const key in this.role) {
-                    //     if (key == 'roleCode') {
-                    //         this.role[key] = this.role[key] + 'Id'
-                    //         roleCode[this.role[key]] = this.userInfo.id
-                    //     }
-                    // }
+                   
                     params.id = this.add ? null : this.id
-                    params.code = this.urlList.md5
-                    params.url = this.urlList.url
-                    params.materialName = this.urlList.name
-                
                     params.userId = this.userInfo.id
-                    params.projectId = values.projectId
-                    params.materialDescribe = values.materialDescribe
-                    params.type = 'VIDEO'
-                    //   params.tagList = values.tagList
-                    params.ascription ={
-                        planId: this.currentMaterial.plan,
-                        shotId: this.currentMaterial.shot,
-                        clipId: this.currentMaterial.clip,
-                    }
+
                     params.projectId=this.currentMaterial.projectId
-                    params.materialId=this.currentMaterial.id||this.currentMaterial.materialId
-                    params.tag = this.tags
-                    params.imageArr = this.imageArrList
+                    params.materialId=this.currentMaterial.id ||this.currentMaterial.materialId
+                    params.materialCode=this.currentMaterial.materialCode
                     if (this.add) {
-                        orderFileInsert(params).then((res) => {
-                        if (res.success) {
-                            this.form.resetFields()
-                            this.urlList = {
-                            url: '',
-                            md5: '',
-                            name: '',
+                        postAction('/platform/file/uploadVideo',params).then(res=>{
+                            if (res.success) {
+                                this.form.resetFields()
+                                this.urlList = {
+                                    url: '',
+                                    md5: '',
+                                    name: '',
+                                }
+                                
+                                this.urlListImage = {
+                                    url: [],
+                                    md5: [],
+                                    name: [],
+                                    size: [],
+                                }
+                                this.imageArrList = []
+                                this.tags = []
+                                
+                                this.childrenDrawer = false
+                                this.visible=false;
+                                this.add = true
+                                for (const key in this.role) {
+                                if (key == 'roleCode') {
+                                    this.role[key] = this.role[key].substr(0, this.role[key].length - 2)
+                                }
+                                }
+                                this.$message.success('素材上传成功')
+                                this.loadingElse = false
+                                this.videoinfo={
+                                    url: '',
+                                    md5: '',
+                                    name: '',
+                                    width:undefined,
+                                    height:undefined,
+                                };
+                                this.imageinfo=[];
+                                this.materialHttp()
+                                //   this.departValue = []
+                            } else {
+                                this.$message.error(res.message)
+                                this.loadingElse = false
+                                // this.childrenDrawer = false
+                                // this.visible=false;
                             }
+                        })
+                        // orderFileInsert(params).then((res) => {
+                        // if (res.success) {
+                        //     this.form.resetFields()
+                        //     this.urlList = {
+                        //         url: '',
+                        //         md5: '',
+                        //         name: '',
+                        //     }
                             
-                            this.urlListImage = {
-                            url: [],
-                            md5: [],
-                            name: [],
-                            size: [],
-                            }
-                            this.imageArrList = []
-                            this.tags = []
+                        //     this.urlListImage = {
+                        //         url: [],
+                        //         md5: [],
+                        //         name: [],
+                        //         size: [],
+                        //     }
+                        //     this.imageArrList = []
+                        //     this.tags = []
                             
-                            this.childrenDrawer = false
-                            this.visible=false;
-                            this.add = true
-                            for (const key in this.role) {
-                            if (key == 'roleCode') {
-                                this.role[key] = this.role[key].substr(0, this.role[key].length - 2)
-                            }
-                            }
-                            this.$message.success('素材上传成功')
-                            this.loadingElse = false
-                            this.materialHttp()
-                            //   this.departValue = []
-                        } else {
-                            this.$message.error(res.message)
-                            this.loadingElse = false
-                            this.childrenDrawer = false
-                            this.visible=false;
-                        }
-                        })
+                        //     this.childrenDrawer = false
+                        //     this.visible=false;
+                        //     this.add = true
+                        //     for (const key in this.role) {
+                        //     if (key == 'roleCode') {
+                        //         this.role[key] = this.role[key].substr(0, this.role[key].length - 2)
+                        //     }
+                        //     }
+                        //     this.$message.success('素材上传成功')
+                        //     this.loadingElse = false
+                        //     this.videoinfo={};
+                        //     this.imageinfo=[];
+                        //     this.materialHttp()
+                        //     //   this.departValue = []
+                        // } else {
+                        //     this.$message.error(res.message)
+                        //     this.loadingElse = false
+                        //     this.childrenDrawer = false
+                        //     this.visible=false;
+                        // }
+                        // })
                     } else {
                         fileEdit({
                         ...params,
@@ -1915,14 +2025,6 @@ export default {
 
 
 
-
-
-
-
-
-
-
-
         // 上传视频相关方法
         removeUpload() {
             this.form.setFieldsValue({
@@ -1937,10 +2039,12 @@ export default {
             this.confirmLoading = true
             this.repeat = false
             this.urlList.url = urlAll[0].url
+            
+            this.videoinfo.url=urlAll[0].url
             this.$message.success('上传成功')
 
             getAction('/ctop/materialTagInfo/detail', {
-                code: this.urlList.md5,
+                code: this.videoinfo.md5,
             }).then((res) => {
                 if (res.success) {
                 if (res.modalityTagList.length > 0) {
@@ -1969,25 +2073,23 @@ export default {
             console.log(index)
         },
         overUploadImage(urlAll) {
-        
+            console.log(urlAll)
             var that = this
             that.material = []
             that.imageArrList = []
             var img
             if (urlAll.length > 0) {
-                for (var i = 0; i < urlAll.length; i++) {
-                that.imageArrList.push({
-                    // width: img.width,
-                    // height: img.height,
-                    // size: this.urlListImage.size[i],
-                    code: this.urlListImage.md5[i],
-                    url: urlAll[i].url,
-                    materialName: this.urlListImage.name[i],
+                urlAll.forEach((ele,index)=>{
+
+                    this.imageinfo.forEach(item=>{
+                        if(item.name==ele.name){
+                            item.url=ele.url
+                        }
+                    })
+                    // img = new Image()
+                    // img.src = urlAll[index].url
                 })
-                img = new Image()
-                img.src = urlAll[i].url
                 
-                }
             } else {}
         },
         addImage(item) {
@@ -2018,35 +2120,79 @@ export default {
                 size: [],
             }
             this.imageArrList = []
+            
         },
         file(file) {
+            console.log(file)
             var bmf = new BMF()
             var that = this
-            return new Promise(function (resolve, reject) {
-                bmf.md5(file, (err, md5) => {
-                that.urlList.name = file.name
-                that.urlList.md5 = md5
-                fileCheck({
-                    code: md5,
-                    projectId: that.currentMaterial.projectId,
-                }).then((res) => {
-                    if (res.code == 0) {
-                    that.$message.error('此素材已经上传')
-                    that.repeat = true
-                    reject()
-                    } else {
-                    that.repeat = false
+            
+            return new Promise( (resolve, reject)=> {
+                
+                this.getVideoMsg(file).then((videoinfo) => {
+                    const { duration, height, width } = videoinfo;
+                    //获取到视频的时长,高度,宽度
+                    bmf.md5(file, (err, md5) => {
+                        videoinfo.name = file.name
+                        videoinfo.md5 = md5
+                        that.repeat = false
+                    })
+                    videoinfo.size=file.size;
+                    videoinfo.format=file.type
+                    console.log(videoinfo);
+                    this.videoinfo=videoinfo
                     resolve()
-                    //   reject()
-                    }
-                })
-                })
+                });
             })
+
+            
+
+            
+        },
+        
+        getVideoMsg(file) {
+            // console.log('getVideoMsg')
+            return new Promise((resolve) => {
+                let videoElement = document.createElement("video");
+                videoElement.src = URL.createObjectURL(file);
+                videoElement.addEventListener("loadedmetadata", function () {
+                    let obj={
+                        duration: videoElement.duration,
+                        height: videoElement.videoHeight,
+                        width: videoElement.videoWidth,
+                    }
+                    
+                    window.URL.revokeObjectURL(videoElement.src);
+                    videoElement.remove()
+                    resolve(obj);
+                });
+            });
+        },
+
+        getImageMsg(file){
+            return new Promise((resolve) => {
+                // let imageElement = document.createElement("image");
+                let imageElement = new Image();
+                let obj={}
+                imageElement.src = URL.createObjectURL(file);
+                // console.log(imageElement)
+                imageElement.onload=function(){
+                    // console.log(imageElement.width)
+                    obj={
+                        height:imageElement.height,
+                        width:imageElement.width
+                    }
+                    console.log(obj)
+                    resolve(obj)
+                }
+                
+            });
         },
         fileWater(file) {
+            console.log(file)
             var bmf = new BMF()
             var that = this
-            var codeData = that.urlList.md5 != '' ? that.urlList.md5 : that.addImageData.code
+            var codeData = that.videoinfo.md5 != '' ? that.videoinfo.md5 : that.addImageData.code
             console.log(codeData)
             this.urlListImage = {
                 url: [],
@@ -2054,14 +2200,27 @@ export default {
                 name: [],
                 size: [],
             }
-            return new Promise(function (resolve, reject) {
+            this.imageinfo=[]
+            return new Promise( (resolve, reject)=> {
                 bmf.md5(file, (err, md5) => {
                 that.urlListImage.name.push(file.name)
                 that.urlListImage.md5.push(md5)
-                that.urlListImage.size.push(file.size)
-                resolve()
+                that.urlListImage.size.push(file.size)})
                 
-                })
+                this.getImageMsg(file).then((imageinfo) => {
+                   
+                    imageinfo.size=file.size;
+                    imageinfo.format=file.type;
+                    imageinfo.name=file.name
+                    bmf.md5(file, (err, md5) => {                        
+                        imageinfo.md5=md5   
+                        this.imageinfo.push({
+                            ...imageinfo
+                        })   
+                        resolve()                                    
+                    })
+                    
+                });
             })
         },
 

+ 2 - 1
src/views/modules/workBench/placeOrder.vue

@@ -698,7 +698,8 @@ export default {
 
         beforeUpload(file) {
             // ${this.form.project}
-            this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadAttachment?projectId=772`
+            // this.uploadAction= `http://api.tjyourong.com.cn/jeecg-boot/platform/file/uploadAttachment?projectId=772`
+            this.uploadAction= `http://139.186.151.174:8804/jeecg-boot/platform/file/uploadAttachment?projectId=772`
             this.loadDisabled = true
             const size = (Number(file.size) / (1024 * 1024)).toFixed(2)
             const fileName = file.name

+ 2 - 2
src/views/user/Login.vue

@@ -148,7 +148,7 @@
     },
     data() {
       return {
-        customActiveKey: 'tab2',
+        customActiveKey: 'tab1',
         loginBtn: false,
         // login type: 0 email, 1 username, 2 telephone
         loginType: 0,
@@ -239,7 +239,7 @@
           id: 'wx_reg',
           appid: 'ww24b8a47826f5875f',
           agentid: '1000002',
-          redirect_uri: 'http://callback.shyouteng.com.cn:8080/jeecg-boot/qywexin',
+          redirect_uri: 'http://callback.c-top.com.cn:8080/jeecg-boot/qywexin',
           state: url + '/user/transfer-local',
           href: ''
         })

+ 3 - 6
vue.config.js

@@ -77,14 +77,11 @@ module.exports = {
         // target: 'http://192.168.1.43:8087', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.219:8080', //请求本地 需要jeecg-boot后台项目  赵西安
-        // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
-         target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
-        // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://192.168.1.193:8088', //请求本地 需要jeecg-boot后台项目  李煜一
+
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
-        // target: 'http://192.168.1.251/', //请求本地 需要jeecg-boot后台项目
-        // target:'http://118.24.244.213:8804',
-        // target:'http://139.186.151.174:8804', //测试
+        target:'http://139.186.151.174:8804', //测试
 
 
         ws: false,