Browse Source

素材池发版

朱鑫波 4 years ago
parent
commit
3cc8f11235

+ 16 - 0
src/filters.js

@@ -421,6 +421,22 @@ const filters = {
                 break;
                 break;
         }
         }
         return str
         return str
+    },
+    deviceBrand(str) {
+        var data = {
+            1:"OPPO",
+            2:"VIVO",
+            3:"华为",
+            4:"小米",
+            5:"荣耀",
+            6:"三星",
+            7:"金立",
+            8:"魅族",
+            9:"乐视",
+            10:"其他",
+            11:"苹果",
+        }
+        return data[str]
     }
     }
 
 
 }
 }

+ 429 - 0
src/views/modules/autoLaunch/material-all/components/selectRegion.vue

@@ -0,0 +1,429 @@
+<style scoped>
+  .transfer {
+    display: flex;
+  }
+
+  .transfer .transfer-box {
+    width: 350px;
+    height: 250px;
+    border: 1px solid #dadfe3;
+    display: flex;
+    overflow-x: auto;
+    overflow-y: hidden;
+    box-sizing: border-box;
+    margin-right: 25px;
+  }
+
+  .content-box {
+    min-width: 174px;
+    width: 100%;
+    height: 100%;
+    border-right: 1px solid #dadfe3;
+  }
+
+  .content-box .content-title {
+    width: 100%;
+    background: #f8f9fa;
+    border-bottom: 1px solid #dadfe3;
+    padding: 5px 15px;
+    font-size: 16px;
+    font-weight: 700;
+    line-height: 30px;
+  }
+
+  .content-box .content {
+    width: 100%;
+    height: 85%;
+    overflow: auto;
+  }
+
+  .content-box .content p:hover {
+    background: #edf1f5;
+    cursor: pointer;
+  }
+
+  .content-box .content p:hover span {
+    display: inline-block;
+  }
+
+  .content-box .content p span {
+    display: none;
+  }
+
+  p {
+    padding: 5px;
+    margin-bottom: 0;
+    border-bottom: 1px solid #f2f2f2;
+  }
+
+  .backgroundOnly {
+    background: #edf1f5;
+  }
+</style>
+<style>
+  .transfer .ant-checkbox-group {
+    width: 100px;
+    overflow-x: hidden;
+  }
+
+  .transfer .ant-checkbox-group-item {
+    display: inline-block;
+    margin-right: 8px;
+    width: 100%;
+  }
+</style>
+
+<template>
+  <div class="transfer">
+    <div class="transfer-box">
+      <div class="content-box">
+        <p class="content-title">省份</p>
+        <div class="content" style="position:relative">
+          <!-- <div style="position:absolute;top:0;left:0;width:100%;height:100%;background: rgba(0, 0, 0, 0.5)"
+            v-if="loading"></div> -->
+          <p><input type="checkbox" class="select_all" @change="checkAllBox" v-model="checkAll" /> 全选</p>
+
+          <p v-for="(item, index) of province" :key="item.value" :class="{ backgroundOnly: provinceIndex == index }">
+            <input class="checkItem" type="checkbox" :value="item.value" :id="item.value" v-model="checkMatched"
+              @change="checkOne(item, index)" />
+            <span @click="showCity(item, index)" style="color:black;display:inline-block;margin-left:5px;width:80%">{{
+              item.label
+            }}</span>
+          </p>
+        </div>
+      </div>
+      <div class="content-box" :style="{ borderRight: !showClass ? '0px' : '1px solid #dadfe3' }" v-show="showCityData">
+        <p class="content-title">城市</p>
+        <div class="content">
+          <!-- <p>
+            <input
+              type="checkbox"
+              class="select_all"
+              @change="checkAllBoxCity"
+              v-model="checkAllCity"
+            /> 全选
+          </p>-->
+          <p v-for="(item, index) of city" :key="item.id" :class="{ backgroundOnly: cityIndex == index }">
+            <input class="checkItem" type="checkbox" :value="item.value" :id="item.value" v-model="checkMatchedCity"
+              @change="checkOneCity(item, index)" />
+            {{ item.label }}
+          </p>
+        </div>
+      </div>
+    </div>
+    <div class="transfer-box" style="width:176px">
+      <div class="content-box">
+        <p class="content-title">
+          已选
+          <span style="float:right;font-weight:normal;color:blue;cursor: pointer;font-size:14px"
+            @click="clear">清空</span>
+        </p>
+        <div class="content">
+          <p v-for="(item, index) of checkData" :key="index">
+            {{ item.label }}
+            <!-- <span
+              style="float:right;font-weight:normal;color:blue;cursor: pointer;font-size:14px"
+              @click="detele(item,index)"
+            >删除</span>-->
+          </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
+  import {
+    getProvince,
+    postAction
+  } from '@/api/manage'
+  import $ from 'jquery'
+  export default {
+    name: 'ByteDanceUserOrientationTemplateList',
+    components: {},
+    props: ['dataValue'],
+    data() {
+      return {
+        showClass: false,
+        showCityData: false,
+        checkData: [],
+        checkMatched: [],
+        province: [],
+        city: [],
+        area: [],
+        CityData: '/kuaishou/batch/getRegion',
+        provinceIndex: null,
+        cityIndex: null,
+        checkAll: false,
+        checkMatchedCity: [],
+        checkAllCity: false,
+        nowProvince: null,
+        loading: false
+      }
+    },
+    computed: {},
+    mounted() {
+      this.$nextTick(() => {
+        this.getData().then(() => {
+            console.log(this.dataValue)
+          if (this.dataValue.length>0&&this.dataValue[0].value) {
+            return
+          } else {
+            postAction('/kuaishou/batch/getRegionDetail', {
+              regionArr: this.dataValue
+            }).then(res => {
+              if (res.success) {
+                //   this.populationData.allForm.region = res.result
+                this.checkData = res.result
+                this.checkMatched = res.result.map(item => {
+                  return item.value
+                })
+                this.checkMatchedCity = res.result.map(item => {
+                  return item.value
+                })
+                this.$emit('update:checkData', this.checkData)
+              }
+            })
+          }
+
+          //   if (this.dataValue.length > 0) {
+
+          //   }
+        })
+
+      })
+    },
+    watch: {
+      dataValue: {
+        deep: true,
+        immediate: true, // immediate选项可以开启首次赋值监听
+        handler(n, o) {
+          if (n.length > 0 && n[0].value) {
+            // this.getData().then(() => {
+            console.log(1)
+            //   if (n.length > 0) {
+            this.$nextTick(() => {
+              this.checkData = n
+              this.checkMatched = n.map(item => {
+                return item.value
+              })
+              this.checkMatchedCity = n.map(item => {
+                return item.value
+              })
+              this.$emit('update:checkData', this.checkData)
+            })
+            //   }
+            // })
+
+          }
+
+        }
+      }
+    },
+    methods: {
+      getData() {
+        this.loading = true
+        var that = this
+        return new Promise(function (resolve, reject) {
+          getProvince(that.CityData, {
+            level: 1
+          }).then(res => {
+            if (res.code == '0') {
+              //   this.province.push(...res.result.records)
+              that.province = res.result.map(item => {
+                return {
+                  label: item.name,
+                  value: item.regionId
+                }
+              })
+              that.province = that.province.filter(item => {
+                return item.label != '台湾' && item.label != '香港' && item.label != '澳门'
+              })
+              that.loading = false
+              resolve()
+            }
+          })
+        })
+
+      },
+      showCity(item, index) {
+        this.city = []
+        this.showCityData = false
+        this.showClass = false
+        this.provinceIndex = index
+        this.cityIndex = null
+        this.nowProvince = item
+        this.checkMatchedCity = []
+        getProvince(this.CityData, {
+          parent: item.value
+        }).then(res => {
+          if (res.code == '0') {
+            this.city = res.result.map(item => {
+              return {
+                label: item.name,
+                value: item.regionId
+              }
+            })
+            if (this.checkMatched.indexOf(item.value) != -1) {
+              this.checkAllCity = true
+              this.checkMatchedCity = this.city.map(item => {
+                return item.value
+              })
+            } else {
+              this.checkMatchedCity = this.checkData.map(item => {
+                return item.value
+              })
+            }
+            //   this.city.push(...res.result.records)
+            this.showCityData = true
+          }
+        })
+      },
+      checkAllBox() {
+        this.checkMatched = []
+        this.checkData = []
+        if (this.checkAll) {
+          this.checkMatched = this.province.map(item => {
+            return item.value
+          })
+          this.checkData.push(...this.province)
+        } else {
+          this.checkMatched = []
+          this.checkData = []
+          this.checkMatchedCity = []
+        }
+        this.$emit('update:checkData', this.checkData)
+      },
+      checkOne(item, index) {
+        if (this.checkMatched.indexOf(item.value) == -1) {
+          var index1 = this.checkData.findIndex(v => v.value === item.value)
+          this.checkData.splice(index1, 1)
+          if (this.nowProvince) {
+            if (this.nowProvince.value == item.value) {
+              this.checkMatchedCity = []
+            }
+          }
+        } else {
+          this.checkData.push(item)
+          var data = []
+          getProvince(this.CityData, {
+            parent: item.value
+          }).then(res => {
+            if (res.code == '0') {
+              data = res.result.map(item => {
+                return {
+                  label: item.name,
+                  value: item.regionId
+                }
+              })
+              for (var i = 0; i < this.checkData.length; i++) {
+                for (let j = 0; j < data.length; j++) {
+                  if (this.checkData[i].value == data[j].value) {
+                    this.checkData.splice(i, 1)
+                  }
+                }
+              }
+            }
+          })
+
+          if (this.nowProvince) {
+            if (item.value == this.nowProvince.value) {
+              this.checkMatchedCity = this.city.map(item => {
+                return item.value
+              })
+            }
+          }
+        }
+        if (this.checkMatched.length == this.province.length) {
+          this.checkAll = true
+        } else {
+          this.checkAll = false
+        }
+        this.$emit('update:checkData', this.checkData)
+      },
+      checkAllBoxCity() {
+        this.checkMatchedCity = []
+        if (this.checkAllCity) {
+          this.checkMatchedCity = this.city.map(item => {
+            return item.value
+          })
+          this.checkMatched.push(this.nowProvince.value)
+          this.checkData.push(this.nowProvince)
+        } else {
+          this.checkMatchedCity = []
+          var index = this.checkData.findIndex(v => v.value === this.nowProvince.value)
+          var index1 = this.checkMatched.findIndex(v => v === this.nowProvince.value)
+          this.checkData.splice(index, 1)
+          this.checkMatched.splice(index1, 1)
+        }
+        this.$emit('update:checkData', this.checkData)
+      },
+      checkOneCity(item, index) {
+        var allCity = this.checkMatchedCity.filter(v => {
+          return v.toString().slice(0, 2) == this.nowProvince.value
+        })
+
+        if (allCity.length == this.city.length) {
+          this.checkMatched.push(this.nowProvince.value)
+          this.checkData.push(this.nowProvince)
+          for (var i = 0; i < allCity.length; i++) {
+            for (var j = 0; j < this.checkData.length; j++) {
+              if (allCity[i] == this.checkData[j].value) {
+                this.checkData.splice(j, 1)
+                j--
+              }
+            }
+          }
+        }
+        if (this.checkMatchedCity.indexOf(item.value) != -1) {
+          if (allCity.length != this.city.length) {
+            this.checkData.push(item)
+          }
+          if (this.checkMatched.length == this.province.length) {
+            this.checkAll = true
+          } else {
+            this.checkAll = false
+          }
+        } else {
+          if (this.checkMatched.indexOf(this.nowProvince.value) != -1) {
+            var index1 = this.checkData.findIndex(v => v.value === this.nowProvince.value)
+            var index2 = this.checkMatched.findIndex(v => v === this.nowProvince.value)
+            this.checkData.splice(index1, 1)
+            this.checkMatched.splice(index2, 1)
+            this.checkAll = false
+            var data = this.city.filter(v => {
+              return v.value != item.value
+            })
+            this.checkData.push(...data)
+          } else {
+            var index1 = this.checkData.findIndex(v => v.value === item.value)
+            this.checkData.splice(index1, 1)
+          }
+        }
+        this.$emit('update:checkData', this.checkData)
+      },
+      clear() {
+        this.checkData = []
+        this.checkMatched = []
+        this.checkMatchedCity = []
+        this.checkAll = false
+        this.$emit('update:checkData', this.checkData)
+      },
+      detele(item, index) {
+        //   if (this.checkMatched.indexOf(this.nowProvince.value) != -1) {
+        var index1 = this.checkMatched.findIndex(v => v === item.value)
+        var index2 = this.checkData.findIndex(v => v.value === item.value)
+        this.checkData.splice(index2, 1)
+        this.checkMatched.splice(index1, 1)
+        this.checkAll = false
+        //   } else {
+        //   }
+
+        this.$emit('update:checkData', this.checkData)
+      }
+    }
+  }
+</script>

File diff suppressed because it is too large
+ 1414 - 0
src/views/modules/autoLaunch/material-all/components/targetedPopulation.vue


+ 262 - 0
src/views/modules/autoLaunch/material-all/components/templateModal.vue

@@ -0,0 +1,262 @@
+<style>
+#table_time_selected1 tr {
+  border: 1px solid rgb(102, 162, 243);
+}
+
+.plug-timer-grid th {
+  line-height: 25px;
+}
+
+.group-creat .ant-form-item-required::before {
+  display: inline-block;
+  margin-right: 4px;
+  color: #f5222d;
+  font-size: 14px;
+  font-family: SimSun, sans-serif;
+  line-height: 1;
+  content: '';
+}
+
+.else-label .ant-form-item-label label::after {
+  content: '';
+  position: relative;
+  top: -0.5px;
+  margin: 0 8px 0 2px;
+}
+.ant-form-item-required::before {
+  display: inline-block;
+  margin-right: 4px;
+  color: #f5222d;
+  font-size: 14px;
+  font-family: SimSun, sans-serif;
+  line-height: 1;
+  content: '*';
+}
+</style>
+<style lang="scss" scoped>
+.require-check {
+  /deep/ .ant-form-item-label {
+    label::before {
+      display: inline-block;
+      margin-right: 4px;
+      color: #f5222d;
+      font-size: 14px;
+      font-family: SimSun, sans-serif;
+      line-height: 1;
+      content: '*';
+    }
+  }
+}
+</style>
+<template>
+  <a-modal v-model="visible" :title="type === 'add' ? '编辑素材指定定向包' : '编辑素材指定定向包'" :width="1100" v-if="visible">
+    <a-spin :spinning="spinning">
+      <a-form @submit="handleSubmit" :form="form">
+
+        <targeted-population ref="population" :populationData.sync="populationData" />
+      </a-form>
+    </a-spin>
+    <template slot="footer">
+      <!-- <a-button type="primary" @click="handleSubmit" :loading="loading"> 确定 </a-button> -->
+      <a-button
+        type="default"
+        @click="
+          () => {
+            this.visible = false
+          }
+        "
+      >
+        取消
+      </a-button>
+      <a-button type="primary" @click="handleSubmit" :loading="loading">
+        {{ type == 'add' ? '确定' : '修改' }}
+      </a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { getAction, postAction, deleteAction, putAction } from '@/api/manage'
+import moment from 'moment'
+import { mapGetters } from 'vuex'
+import jq from 'jquery'
+import selectTable from '@/views/modules/Statistics/components/selectPagination.vue'
+import targetedPopulation from './targetedPopulation.vue'
+import pick from 'lodash.pick'
+export default {
+  name: 'new-mould',
+  components: {
+    targetedPopulation,
+    selectTable,
+  },
+  data() {
+    return {
+      visible: false,
+      spinning: false,
+      projectName: '',
+      form: this.$form.createForm(this),
+      projectId: '',
+      populationData: {},
+      accountId: '',
+      templateId: undefined,
+      type: 'add',
+      loading: false,
+      labelCol: { lg: { span: 7 }, sm: { span: 7 } },
+      disabled: false,
+      id:null
+    }
+  },
+  computed: {},
+  methods: {
+    create(accountId, type) {
+      this.disabled = false
+      this.spinning = false
+      this.visible = true
+      this.type = type
+      this.populationData = {}
+      this.accountId = accountId
+    },
+    handleOk(item, type) {
+      this.spinning = true
+      this.visible = true
+      this.type = type
+      // var params = {}
+      // params.id = item.id
+      // this.templateId = item.id
+      // this.projectName = item.projectName
+      // this.projectId = item.projectId
+      // getAction('/kuaishouDirectionalPackage/queryById', params).then((res) => {
+      //   if (res.success) {
+          this.id = item.id;
+          var dataJson = {
+            ...item,
+          }
+
+          this.populationData = dataJson
+
+          this.populationData.devicePrice = dataJson.devicePrice ? JSON.parse(dataJson.devicePrice) : null
+          this.populationData.appInterest = dataJson.appInterest ? JSON.parse(dataJson.appInterest) : null
+          this.populationData.businessInterest = dataJson.businessInterest
+            ? JSON.parse(dataJson.businessInterest)
+            : null
+          this.populationData.fansStar = dataJson.fansStar ? JSON.parse(dataJson.fansStar) : null
+          this.populationData.interestVideo = dataJson.interestVideo ? JSON.parse(dataJson.interestVideo) : null
+          this.populationData.deviceBrand = dataJson.deviceBrand ? JSON.parse(dataJson.deviceBrand) : null
+
+          this.populationData.age = dataJson.min ? [dataJson.min, dataJson.max] : []
+          this.populationData.agesRange = dataJson.agesRange ? JSON.parse(dataJson.agesRange) : []
+          this.populationData.devicePrice = dataJson.devicePrice ? dataJson.devicePrice : null
+
+          this.populationData.behavior = dataJson.label
+          this.populationData.interest = dataJson.interestLabel
+
+          this.populationData.sceneType = dataJson.sceneType ? JSON.parse(dataJson.sceneType) : []
+          this.populationData.allForm = {}
+          this.populationData.allForm.regionType =
+            dataJson.region && JSON.parse(dataJson.region).length > 0 ? 'limit' : 'noLimit'
+
+          this.populationData.allForm.region = dataJson.region
+          // postAction('/kuaishou/batch/getRegionDetail', {
+          //   regionArr: dataJson.region
+          // }).then(res => {
+          //   console.log(res, 11111)
+          //   if (res.success) {
+          //     this.populationData.allForm.region = res.result
+          //   }
+          // })
+
+          this.populationData.allForm.ageType =
+            dataJson.agesRange.length > 0 ? 'ageLimit' : dataJson.min>0 ? 'ageCustom' : 'noLimit'
+          this.populationData.allForm.device = dataJson.deviceBrand && eval(dataJson.deviceBrand).length > 0 ? '1' : '0'
+          this.populationData.allForm.price = dataJson.devicePrice && eval(dataJson.devicePrice).length > 0 ? '1' : '0'
+          this.populationData.allForm.appType =
+            dataJson.appInterest && eval(dataJson.appInterest).length > 0
+              ? '1'
+              : dataJson.appIds && eval(dataJson.appIds).length > 0
+              ? '2'
+              : '0'
+          this.populationData.allForm.fansStar =
+            dataJson.fansStar && eval(dataJson.fansStar).length > 0 ? '1' : '0'
+          this.populationData.allForm.interestVideo =
+            dataJson.interestVideo && eval(dataJson.interestVideo).length > 0 ? '1' : '0'
+          this.populationData.allForm.platform_os = dataJson.platformOs
+          this.populationData.allForm.businessInterestType = dataJson.businessInterestType
+          this.populationData.allForm.isOpen = dataJson.isOpen
+          this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
+          this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
+          this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
+          this.populationData.allForm.behaviorInterest = dataJson.label ? '1' : '0'
+          this.populationData.allForm.checkArr =
+            this.populationData.allForm.appType == '2' ? JSON.parse(dataJson.appIds) : []
+          this.populationData.projectId = dataJson.projectId + ''
+
+          this.disabled = true
+
+          this.$nextTick(() => {
+            this.spinning = false
+          })
+
+    },
+    handleCancel(e) {
+      this.visible = false
+    },
+    handleSubmit(e) {
+      //   this.$refs.population.handleSubmit()
+
+      var data = JSON.parse(localStorage.getItem('materialDetail'))
+      e.preventDefault()
+      this.$refs.population.handleSubmit()
+      this.$refs.population.formAll.validateFields((err, value) => {
+        if (!err) {
+          this.form.validateFieldsAndScroll((err, values) => {
+            if (!err) {
+              this.loading = true
+              // this.loading = true
+
+                var params = {
+                  ...this.populationData,
+                  videoGetId: data.id,
+                  signature: data.md5,
+                  id:this.id
+                }
+                params.label = JSON.stringify(params.behavior)
+                params.interestLabel = JSON.stringify(params.interest)
+                console.log(this.populationData)
+                if (this.populationData.allForm.regionType == 'limit') {
+                  if(this.populationData.allForm.region.length === 0) {
+                    this.$message.error('请选择地域');
+                    this.loading = false
+                    return
+                  }
+                }
+                if (this.type == 'add') {
+                  postAction('/kuaishouVideoDirectionalPackage/saveOrUpdate', params).then((res) => {
+                    if (res.success) {
+                      this.visible = false
+                      this.loading = false
+                      this.$emit('getData')
+                    } else {
+                      this.loading = false
+                      this.$message.error(res.message)
+                    }
+                  })
+                } else if (this.type == 'edit') {
+                  postAction('/kuaishouVideoDirectionalPackage/saveOrUpdate', params).then((res) => {
+                    this.visible = false
+                    if (res.success) {
+                      this.loading = false
+                      this.$emit('getData')
+                    } else {
+                      this.loading = false
+                      this.$message.error(res.message)
+                    }
+                  })
+                }
+            }
+          })
+        }
+      })
+    },
+  },
+}
+</script>

+ 979 - 0
src/views/modules/autoLaunch/material-all/material-detail.vue

@@ -0,0 +1,979 @@
+<style lang="scss" scoped>
+#office-iframe {
+    height: 800px;
+}
+.directional-border {
+    border: 1px solid #f2f2f2;
+    min-height: 250px;
+    width: 100%;
+    padding: 20px;
+    /deep/.title-border {
+        width: calc(100% + 40px);
+        height:50px;
+        line-height:50px;
+        background:rgb(250,250,250);
+        display: flex;
+        align-items: center;
+        margin-left: -20px;
+        margin-top: -20px;
+        padding: 20px;
+    }
+}
+.flex-main {
+    display: flex;
+    margin-bottom: 10px;
+    p {
+        color: black;
+        font-weight: 600;
+        overflow:hidden; //超出的文本隐藏
+        text-overflow:ellipsis; //溢出用省略号显示
+        white-space:nowrap; //溢出不换行
+    }
+}
+
+</style>
+<style>
+.info-detail .ant-descriptions-item-content {
+    font-weight: bold;
+}
+.info-detail .ant-descriptions-item-label {
+    color: darkgray;
+    min-width: 80px;
+}
+.info-detail table tr td {
+    border: 0;
+}
+.show-data p {
+    color: black;
+    font-weight: 600;
+}
+.show-data p span {
+    display: inline-block;
+    width: 85px;
+    color: slategrey;
+    font-weight: 500;
+    
+}
+</style>
+<template>
+    <a-row :gutter="10">
+        <a-spin :spinning="spinning">
+            <a-col :sm="6" style="margin-bottom: 20px; z-index: 10">
+                <a-card
+                style="min-height: 100px"
+                :style="{
+                    width: (clientWidth / 24) * 6 - 10 + 'px',
+                }"
+                >
+                    <video class="video" :src="url" controls="controls" style="width: 100%" v-if="url">
+                        您的浏览器不支持 video 标签。
+                    </video>
+                    <img :src="noImg" alt="" v-else style="width: 100%" />
+                </a-card>
+            </a-col>
+            <a-col :sm="18" style="margin-bottom: 20px; z-index: 10">
+                <a-card class="info-detail" style="min-height: 200px">
+                    <a-descriptions title="视频信息" v-if="materialInfo">
+                        <a-descriptions-item label="素材标题">
+                        {{ materialInfo.photoName ? materialInfo.photoName : '-' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="素材唯一编码">
+                        {{ materialInfo.signature ? materialInfo.signature : '-' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="素材状态">
+                        {{ materialInfo.status == 0 ? '可用' : '删除' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="素材渠道">
+                        {{
+                            materialInfo.channelType == 0 ? '内部' : '素造'
+                        }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="上传时间">
+                        <span v-if="materialInfo.createTime">
+                            {{ materialInfo.createTime }}
+                        </span>
+                        <span v-else>-</span>
+                        </a-descriptions-item>
+                        <a-descriptions-item label="同步时间">
+                        {{ materialInfo.statDate ? materialInfo.statDate : '-' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="编导">
+                        {{ materialInfo.planName ? (materialInfo.planName == '' ? '无' : materialInfo.planName) : '-' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="拍摄">
+                        {{ materialInfo.shotName ? (materialInfo.shotName == '' ? '无' : materialInfo.shotName) : '-' }}
+                        </a-descriptions-item>
+                        <a-descriptions-item label="剪辑">
+                        {{ materialInfo.clipName ? (materialInfo.clipName == '' ? '无' : materialInfo.clipName) : '-' }}
+                        </a-descriptions-item>
+                    </a-descriptions>
+                </a-card>
+                <a-card style="min-height: 300px; margin: 10px 0" class="info-detail">
+                    <a-descriptions title="素材排期">
+                        <a-descriptions-item  :span="3">
+                            <span slot="label">
+                                <a-tooltip title="当前素材仅可在设置日期内进行投放,其他时段不会投放此素材">
+                                    <a-icon type="info-circle-o" />
+                                </a-tooltip>
+                                可用日期
+                            </span>
+                            <span  v-if="materialInfo&&materialInfo.putStartTime===''">
+                                不限
+                                <a @click="selectTime(null)">请选择</a>
+                            </span>
+                            <span  v-else-if="materialInfo&&materialInfo.putStartTime!==''">
+                                {{materialInfo.putStartTime+'~'+materialInfo.putEndTime}}
+                                <a @click="selectTime(materialInfo)">修改</a>
+                            </span>
+                            
+                        </a-descriptions-item>
+                    </a-descriptions>
+                    <div
+                        style="
+                        margin-bottom: 20px;
+                        color: rgba(0, 0, 0, 0.85);
+                        font-weight: bold;
+                        font-size: 16px;
+                        line-height: 1.5;
+                        "
+                    >
+                        素材定向
+                    </div>
+
+                    <div class="directional-border">
+                        <a-row class="title-border">
+                            <a-col :span="24" class="flex-main" style="justify-content: space-between;margin-bottom:0">
+                                <div>
+                                    <span class="ant-descriptions-item-label" style="color:black;font-weight:500"> 素材可用定向</span>
+                                </div>
+                                <a @click="addNewTemplate">编辑</a>
+                            </a-col>
+                        </a-row>
+                        <a-row style="margin-top:10px">
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 地区:</span>
+                                <div v-if="directionalInfo">
+                                    <span v-if="directionalInfo.region == '' || directionalInfo.region == null||JSON.parse(directionalInfo.region).length==0"> 不限 </span>
+                                    <div v-else>
+                                        {{ region.join(',') }}
+                                    </div>
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 年龄:</span>
+                                <div v-if="directionalInfo">
+                                    <span v-if="
+                                    (directionalInfo.agesRange == '[]' || directionalInfo.agesRange == null) &&
+                                    (directionalInfo.min == -1 || directionalInfo.min == null) &&
+                                    (directionalInfo.max == -1 || directionalInfo.max == null)"> 不限 </span>
+                                    <div v-else>
+                                        <span v-if="directionalInfo.agesRange == '[]' || directionalInfo.agesRange == null">
+                                        {{ directionalInfo.min + '岁~' + directionalInfo.max + '岁' }}
+                                        </span>
+                                        <span v-else>
+                                            <span v-for="(item, index) in JSON.parse(directionalInfo.agesRange)" :key="index">
+                                                {{ item | kuaishouAge }}{{ index == JSON.parse(directionalInfo.agesRange).length - 1 ? '' : ',' }}
+                                            </span>
+                                        </span>
+                                    </div>
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                        </a-row>
+                         <a-row>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 性别:</span>
+                                <div v-if="directionalInfo">
+                                     {{ directionalInfo.gender == 1 ? '女' : directionalInfo.gender == 2 ? '男' : '不限' }}
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 最低版本:</span>
+                                <div v-if="directionalInfo">
+                                    {{ directionalInfo.platformOs == 1 
+                                    ? 'Android系统('+(directionalInfo.androidOsv==3?'不限)':directionalInfo.androidOsv+'x+)') : 
+                                    directionalInfo.platformOs == 2 ? 'IOS系统('+(directionalInfo.iosOsv==6?'不限)':directionalInfo.iosOsv+'x+)') : '不限' }}
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                        </a-row>
+                         <a-row>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 设备品牌:</span>
+                                <div v-if="directionalInfo">
+                                    <span v-if="directionalInfo.deviceBrand == '' || directionalInfo.deviceBrand == null ||JSON.parse(directionalInfo.deviceBrand).length == 0">
+                                        不限
+                                    </span>
+                                    <span v-else>
+                                        <span v-for="(item, index) in JSON.parse(directionalInfo.deviceBrand)" :key="index">
+                                            {{ item | deviceBrand }}{{ index == JSON.parse(directionalInfo.deviceBrand).length - 1 ? '' : ',' }}
+                                        </span>
+                                    </span>
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 设备价格:</span>
+                                <div v-if="directionalInfo">
+                                    <span v-if="directionalInfo.devicePrice == '' || directionalInfo.devicePrice == null ||JSON.parse(directionalInfo.devicePrice).length == 0">
+                                        不限
+                                    </span>
+                                    <span v-else>
+                                        <span v-for="(item, index) in JSON.parse(directionalInfo.devicePrice)" :key="index">
+                                            {{ item | kuaishouPrice }}{{ index == JSON.parse(directionalInfo.devicePrice).length - 1 ? '' : ',' }}
+                                        </span>
+                                    </span>
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                        </a-row>
+                         <!-- <a-row>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> APP行为:</span>
+                                <p title="-">-</p>
+                            </a-col>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 商业兴趣:</span>
+                                <p title="-">-</p>
+                            </a-col>
+                        </a-row> -->
+                         <a-row>
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 网络环境:</span>
+                                <div v-if="directionalInfo">
+                                    {{ directionalInfo.network == 1 ? 'Wi-Fi' : directionalInfo.network == 2 ? '移动网络' : '不限' }}
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                             <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 过滤已转换用户:</span>
+                                <div v-if="directionalInfo">
+                                    {{ directionalInfo.filterConvertedLevel | kuaishouFilterConvertedLevel }}
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                        </a-row>
+                         <a-row>
+                            <!-- <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 兴趣视频用户:</span>
+                                <p title="-">-</p>
+                            </a-col> -->
+                            <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 智能扩量:</span>
+                                <div v-if="directionalInfo">
+                                    {{ directionalInfo.isOpen == 0 ? '关闭' : '开启' }}
+                                </div>
+                                <p title="-" v-else>-</p>
+                            </a-col>
+                        </a-row>
+                         <!-- <a-row>
+                             <a-col :xl="12" :md="24" class="flex-main">
+                                <span class="ant-descriptions-item-label"> 网红类别:</span>
+                                <p title="-">-</p>
+                            </a-col>
+                        </a-row> -->
+                    </div>
+                </a-card>
+                <a-card style="min-height: 300px; margin: 10px 0">
+                    <div
+                        style="
+                        margin-bottom: 20px;
+                        color: rgba(0, 0, 0, 0.85);
+                        font-weight: bold;
+                        font-size: 16px;
+                        line-height: 1.5;
+                        "
+                    >
+                        素材已关联账户  
+                        <a-button type="primary" @click="lowerMaterial" :disabled="selectedRowKeysValue.length==0">下架素材</a-button>
+                    </div> 
+                    <a-table
+                        size="middle"
+                        :loading="loadingList"
+                        :columns="columns"
+                        :dataSource="dataList"
+                        bordered
+                        :scroll="{ x: 2000 }"
+                        :pagination="ipagination"
+                        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+                    >
+
+                    </a-table>
+                </a-card>
+                <a-card style="min-height: 300px; margin: 10px 0">
+                    <div
+                        style="
+                        margin-bottom: 20px;
+                        color: rgba(0, 0, 0, 0.85);
+                        font-weight: bold;
+                        font-size: 16px;
+                        line-height: 1.5;
+                        "
+                    >
+                        素材关联被拒创意 
+                        <a-button type="primary" @click="visibleAgain = true;type = 'all'" :disabled="selectedRowKeysCreative.length==0||accountId==''||accountId==null||accountId==undefined">批量重提</a-button>
+                        <a-select
+                            show-search
+                            placeholder="请选择账户"
+                            option-filter-prop="children"
+                            style="width: 200px;margin-left:20px"
+                            :filter-option="filterOption"
+                            v-model="accountId"
+                            @change="handleChange"
+                            allowClear
+                        >
+                            <a-select-option v-for="(item,index) in accountList" :key="index"
+                            :value="item.accountId">
+                            {{item.authName}}
+                            </a-select-option>
+                        </a-select>
+                    </div> 
+
+                    <a-table
+                        size="middle"
+                        :loading="loadingCreative"
+                        :columns="columnsCreative"
+                        :dataSource="creativeList"
+                        bordered
+                        :pagination="ipaginationCreative"
+                        :rowSelection="{ selectedRowKeys: selectedRowKeysCreative, onChange: onSelectChangeCreative }"
+                    >
+                        <span slot="action"  slot-scope="text, record">
+                            <a  @click="again(record)">重提</a>
+                        </span>
+                        <span slot="coverUrl" slot-scope="text, record">
+                            <img :src="text" alt="" style="width:100px">
+                        </span>
+                    </a-table>
+                </a-card>
+            </a-col>
+        </a-spin>
+        <a-modal 
+            title="素材可用日期" 
+            v-model="timeVisible" 
+            :width="400" 
+            @ok="handleOk"
+            @cancel="timeVisible=false"
+            :confirmLoading="editTimeLoading"
+        >
+            <a-form layout="inline">
+                <a-form-item label="选择日期">
+                    <a-radio-group v-model="timeSelsetData" button-style="solid">
+                        <a-radio-button value="a">
+                            不限
+                        </a-radio-button>
+                        <a-radio-button value="b">
+                            指定日期
+                        </a-radio-button>
+                    </a-radio-group>
+                    
+                   
+                </a-form-item>
+                 <a-range-picker style="margin-top:15px" v-if="timeSelsetData === 'b'" format="YYYY-MM-DD" :disabled-date="disabledDate" v-model="dateRange">
+                    </a-range-picker>
+            </a-form>
+        </a-modal>
+        <a-modal title="一键重提" @cancel="handleClose" :visible="visibleAgain" @ok="handleOkAgain"
+            :confirmLoading="againLoading"
+            :width="650">
+            <a-form :form="form">
+                <a-form-item label="是否修改" :labelCol="{ lg: { span: 4 }, sm: { span: 6 } }"
+                :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }">
+                <a-radio-group buttonStyle="solid" v-decorator="[
+                'type',
+                { initialValue: 0} ]">
+                    <a-radio-button :value="0">否</a-radio-button>
+                    <a-radio-button :value="1">是</a-radio-button>
+                </a-radio-group>
+                </a-form-item>
+                <a-form-item label="广告语" :labelCol="{ lg: { span: 4 }, sm: { span: 6 } }"
+                :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }" v-if="getData('type')==1">
+                <a-input v-model="updateDescription" :max="10" :min="1" style="width:100%" @change="DescriptionChange">
+                </a-input>
+                </a-form-item>
+            </a-form>
+        </a-modal>
+        <templateModal ref="templateModal" @getData="getDirectionalInfo" />
+    </a-row>
+</template>
+
+<script>
+import { getAction, postAction } from '@/api/manage'
+import moment from 'moment'
+import $ from 'jquery'
+import qs from 'qs'
+import UploadToAli from '@femessage/upload-to-ali'
+import uploadFile from '@/components/uploadFile.vue'
+import { mapActions, mapGetters, mapState } from 'vuex'
+import templateModal from './components/templateModal';
+var echarts = require('echarts')
+export default {
+    name: 'online-training-list',
+    data() {
+        return {
+            accountId: undefined,
+            accountList: [],
+            type: 'one',
+            form: this.$form.createForm(this),
+            visibleAgain: false,
+            updateDescription: '',
+            noImg: require('@/assets/noImg.png'),
+            materialInfo: null,
+            dataView: null,
+            clientWidth: 1920,
+            spinning: false,
+            scrollTopAll: 0,
+            scrollTop: 124,
+            mediaId: 0,
+            url: JSON.parse(localStorage.getItem('materialDetail')).url,
+            timeVisible: false,
+            timeSelsetData: 'a',
+            dateRange: [],
+            editTimeLoading: false,
+            useDirectional: 'noUse',
+            directionalInfo: null,
+            region: [],
+            loadingList: false,
+            columns: [
+                {
+                    title: '账户名称',
+                    align: 'center',
+                    dataIndex: 'authName',
+                    fixed: 'left',
+                    width: 150,
+                    scopedSlots: {
+                        customRender: 'authName',
+                    },
+                },
+                {
+                    title: '账户id',
+                    align: 'center',
+                    dataIndex: 'accountId',
+                    fixed: 'left',
+                    width: 150,
+                    scopedSlots: {
+                        customRender: 'accountId',
+                    },
+                },
+                {
+                    title: '被拒创意',
+                    align: 'center',
+                    dataIndex: 'rejectCount',
+                    scopedSlots: {
+                        customRender: 'rejectCount',
+                    },
+                },
+                {
+                    title: '同步时间',
+                    align: 'center',
+                    dataIndex: 'statDate',
+                    scopedSlots: {
+                        customRender: 'statDate',
+                    },
+                },
+                {
+                    title: '关联创意数',
+                    align: 'center',
+                    dataIndex: 'creativeCount',
+                    scopedSlots: {
+                        customRender: 'creativeCount',
+                    },
+                },
+                {
+                    title: '消耗',
+                    align: 'center',
+                    dataIndex: 'charge',
+                    scopedSlots: {
+                        customRender: 'charge',
+                    },
+                },
+                {
+                    title: '封面曝光数',
+                    align: 'center',
+                    dataIndex: 'photoShow',
+                    scopedSlots: {
+                        customRender: 'photoShow',
+                    },
+                },
+                {
+                    title: '封面点击数',
+                    align: 'center',
+                    dataIndex: 'photoClick',
+                    scopedSlots: {
+                        customRender: 'photoClick',
+                    },
+                },
+                {
+                    title: '素材曝光数',
+                    align: 'center',
+                    dataIndex: 'aclick',
+                    scopedSlots: {
+                        customRender: 'aclick',
+                    },
+                },
+                {
+                    title: '行为数',
+                    align: 'center',
+                    dataIndex: 'bclick',
+                    scopedSlots: {
+                        customRender: 'bclick',
+                    },
+                },
+                {
+                    title: '封面点击率',
+                    align: 'center',
+                    dataIndex: 'photoClickRatio',
+                    scopedSlots: {
+                        customRender: 'photoClickRatio',
+                    },
+                },
+                {
+                    title: '行为率',
+                    align: 'center',
+                    dataIndex: 'actionRatio',
+                    scopedSlots: {
+                        customRender: 'actionRatio',
+                    },
+                },
+                {
+                    title: '平均千次封面曝光花费(元)',
+                    align: 'center',
+                    dataIndex: 'impression1kCost',
+                    scopedSlots: {
+                        customRender: 'impression1kCost',
+                    },
+                },
+                {
+                    title: '平均封面点击单价(元)',
+                    align: 'center',
+                    dataIndex: 'photoClickCost',
+                    scopedSlots: {
+                        customRender: 'photoClickCost',
+                    },
+                },
+                {
+                    title: '平均行为单价(元)',
+                    align: 'center',
+                    dataIndex: 'actionCost',
+                    scopedSlots: {
+                        customRender: 'actionCost',
+                    },
+                }
+
+            ],
+            dataList: [],
+            selectedRowKeys: [],
+            selectedRowKeysValue: [],
+            ipagination: {
+                current: 1,
+                pageSize: 10,
+                //   pageSizeOptions: ['10', '20', '30'],
+                showTotal: (total, range) => {
+                return range[0] + '-' + range[1] + ' 共' + total + '条'
+                },
+                showQuickJumper: true,
+                // showSizeChanger: true,
+                // pageSizeOptions: ['10', '30', '50'],
+                total: 0,
+                onChange: (current, pageSize) => {
+                    // 切换分页时的回调,
+                    // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
+                    this.ipagination.current = current
+                    this.ipagination.pageSize = pageSize
+                    this.getAccountVideo();
+                },
+                total: 0,
+            },
+
+            creativeList: [],
+            loadingCreative: false,
+            columnsCreative: [
+                {
+                    title: '账户名称',
+                    align: 'center',
+                    dataIndex: 'authName',
+                    scopedSlots: {
+                        customRender: 'authName',
+                    },
+                },
+                {
+                    title: '账户ID',
+                    align: 'center',
+                    dataIndex: 'accountId',
+                    width:100,
+                    scopedSlots: {
+                        customRender: 'accountId',
+                    },
+                },
+                {
+                    title: '关联创意ID',
+                    align: 'center',
+                    dataIndex: 'creativeId',
+                    scopedSlots: {
+                        customRender: 'creativeId',
+                    },
+                },
+                {
+                    title: '创意名称',
+                    align: 'center',
+                    dataIndex: 'creativeName',
+                    scopedSlots: {
+                        customRender: 'creativeName',
+                    },
+                },
+                {
+                    title: '素材封面',
+                    align: 'center',
+                    dataIndex: 'coverUrl',
+                    scopedSlots: {
+                        customRender: 'coverUrl',
+                    },
+                },
+                {
+                    title: '广告语',
+                    align: 'center',
+                    dataIndex: 'description',
+                    scopedSlots: {
+                        customRender: 'description',
+                    },
+                },
+                {
+                    title: '被拒理由',
+                    align: 'center',
+                    dataIndex: 'reviewDetail',
+                    width:120,
+                    scopedSlots: {
+                        customRender: 'reviewDetail',
+                    },
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    dataIndex: 'action',
+                    width: 50,
+                    scopedSlots: {
+                        customRender: 'action',
+                    },
+                },
+            ],
+            selectedRowKeysCreative: [],
+            selectedRowKeysValueCreative: [],
+            selectedOneKeysValueCreative: [],
+            againLoading: false,
+            ipaginationCreative: {
+                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.ipaginationCreative.current = current
+                    this.ipaginationCreative.pageSize = pageSize
+                    this.getCreativeByVideo({})
+                },
+                total: 0,
+            },
+
+        }
+    },
+    components: {
+        UploadToAli,
+        uploadFile,
+        templateModal
+    },
+    watch: {
+    },
+    methods: {
+        filterOption(input, option) {
+            return (
+                option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+            );
+        },
+        getData(className) {
+            return this.form.getFieldValue(className)
+        },
+        onSelectChange(selectedRowKeys, selectionRows) {
+            this.selectedRowKeys = selectedRowKeys
+            this.selectedRowKeysValue = selectionRows.map((item) => {
+                return item.accountId
+            })
+            //    this.selectedRowKeysValue.length > 0 ? this.selectedRowKeysValue :
+        },
+        onSelectChangeCreative(selectedRowKeys, selectionRows) {
+            this.selectedRowKeysCreative = selectedRowKeys
+            this.selectedRowKeysValueCreative = selectionRows.map((item) => {
+                return {
+                    description: item.description,
+                    creativeId: item.creativeId
+                }
+            })
+            //    this.selectedRowKeysValue.length > 0 ? this.selectedRowKeysValue :
+        },
+        getAccountVideo() {
+            this.loadingList = true;
+            var data = JSON.parse(localStorage.getItem('materialDetail'))
+            let params = {};
+            params.signature = data.md5;
+            params.projectId = data.projectId;
+            params.pageNo = this.ipagination.current;
+            params.pageSize = this.ipagination.pageSize;
+            this.getAction('/kuaishouProjectVideoGet/getAccountVideos', params).then(res => {
+                this.loadingList = false;
+                if(res.success) {
+                    this.dataList = res.result.list;
+                    this.ipagination.total = res.result.total;
+                }
+                else {
+                    this.dataList = [];
+                }
+            })
+        },
+        getCreativeByVideo() {
+            this.loadingCreative = true;
+            var data = JSON.parse(localStorage.getItem('materialDetail'))
+            let params = {};
+            params.signature = data.md5;
+            params.projectId = data.projectId;
+            params.pageNo = this.ipaginationCreative.current;
+            params.pageSize = this.ipaginationCreative.pageSize;
+            params.accountId = this.accountId;
+            this.getAction('/kuaishouProjectVideoGet/queryCreativeByVideo', params).then(res => {
+                this.loadingCreative = false;
+                if(res.success) {
+                    this.creativeList = res.result.list;
+                    this.ipaginationCreative.total = res.result.total;
+                }
+                else {
+                    this.creativeList = [];
+                }
+            })
+        },
+        addNewTemplate() {
+            if(this.directionalInfo) {
+                this.$refs.templateModal.handleOk(this.directionalInfo, 'edit')
+            }
+            else {
+                this.$refs.templateModal.create(null, 'add')
+            }
+           
+        },
+        disabledDate(current) {
+            // Can not select days before today and today
+            return current && current < moment().subtract(1, 'days')
+        },
+        getMaterialInfo() {
+            var data = JSON.parse(localStorage.getItem('materialDetail'))
+            this.spinning = true
+            var params = {
+                signature: data.md5,
+                id: data.id
+            }
+            this.getAction('/kuaishouProjectVideoGet/getVideoDetails', params).then((res) => {
+                if (res.success) {
+                    if (res.result) {
+                        this.materialInfo = res.result;
+                        this.spinning = false;
+                    } 
+                    else {
+                        this.$message.error(res.message);
+                    }
+                }
+            })
+        },
+        getDirectionalInfo() {
+            var data = JSON.parse(localStorage.getItem('materialDetail'))
+            var params = {
+                signature: data.md5,
+                id: data.id
+            }
+            this.getAction('/kuaishouVideoDirectionalPackage/queryDirctional', params).then((res) => {
+                if (res.success&&res.result) {
+                    this.directionalInfo = res.result;
+                    if (res.result&&(res.result.region == '' || res.result.region == null||JSON.parse(res.result.region).length==0)) {
+                    } else {
+                        this.showRegion(res.result.region)
+                    }
+                }
+                 else {
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        showRegion(data) {
+            return new Promise((resolve, reject) => {
+                this.postDataAction('/kuaishou/batch/getRegionDetail', {
+                    regionArr: data,
+                }).then((res) => {
+                    if (res.success) {
+                        //   this.populationData.allForm.region = res.result
+                        this.region = res.result.map((item) => {
+                            return item.label
+                        })
+                    }
+                })
+            })
+        },
+        handleScroll() {
+            var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
+            this.scrollTop = scrollTop
+        },
+        handleChange() {
+            this.ipaginationCreative.current = 1;
+            this.selectedOneKeysValueCreative = [];
+            this.selectedRowKeysValueCreative = [];
+            this.selectedRowKeysCreative = [];
+            this.getCreativeByVideo();
+        },
+        selectTime(item) {
+            if(item) {
+                if(item.putStartTime!='') {
+                    this.timeSelsetData = 'b';
+                    this.dateRange = [moment(item.putStartTime), moment(item.putEndTime)];
+                } 
+                else {
+                    this.timeSelsetData = 'a';
+                    this.dateRange = [];
+                }
+            }
+            else {
+                this.timeSelsetData = 'a';
+                this.dateRange = [];
+            } 
+            this.timeVisible = true;
+            
+        },
+        handleOk() {
+            let data = JSON.parse(localStorage.getItem('materialDetail'))
+            this.editTimeLoading = true;
+            let params = {};
+            params.id = data.id
+            if(this.timeSelsetData === 'a') {
+                params.putStartTime = '';
+                params.putEndTime = '';
+            }
+            else {
+                if(this.dateRange.length === 0) {
+                    this.$message.error('请选择指定日期');
+                    this.editTimeLoading = false;
+                    return
+                }
+                params.putStartTime = moment(this.dateRange[0]).format('YYYY-MM-DD');
+                params.putEndTime = moment(this.dateRange[1]).format('YYYY-MM-DD');;
+            }
+            this.postDataAction('/kuaishouProjectVideoGet/edit', params).then(res => {
+                if(res.success) {
+                    this.editTimeLoading = false;
+                    this.$message.success('修改成功');
+                    this.timeVisible = false;
+                    this.getMaterialInfo();
+                }
+                else {
+                    this.editTimeLoading = false;
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        lowerMaterial() {
+            let data = JSON.parse(localStorage.getItem('materialDetail'))
+            let params = {};
+            params.projectId = data.projectId;
+            params.accountId = this.selectedRowKeysValue;
+            params.signature = data.md5;
+            this.postDataAction('/kuaishouProjectVideoGet/offShelfVideos', params).then(res => {
+                if(res.success) {
+                    this.getAccountVideo();
+                    this.selectedRowKeysValue = [];
+                    this.selectedRowKeys = []
+                }
+            })
+            // /kuaishouProjectVideoGet/offShelfVideos
+        },
+        again(item) {
+            this.visibleAgain = true;
+            this.type = "one"
+            this.selectedOneKeysValueCreative = [{
+                description: item.description,
+                creativeId: item.creativeId,
+                accountId: item.accountId
+            }]
+        },
+        DescriptionChange(e) {
+            if (e.target.value.length > 30) {
+                this.$message.error('广告语最多30字!')
+            }
+        },
+        handleClose(e) {
+            this.visibleAgain = false;
+            this.form.resetFields();
+        },
+        getAccountList() {
+            let data = JSON.parse(localStorage.getItem('materialDetail'))
+            let params = {};
+            params.projectId = data.projectId;
+            this.getAction('/ctop/userAllocation/queryAccountIdsByProjectId', params).then(res => {
+                if(res.success) {
+                    this.accountList = res.result;
+                }
+            })
+        },
+        handleOkAgain() {
+            if (this.updateDescription.length > 30 && this.getData('type') == 1) {
+                this.$message.error('广告语最多30个字,请修正后再次提交!')
+            } else {
+                this.againLoading = true
+                this.form.validateFields((err, values) => {
+                    if (!err) {
+                    values.updateDescription = this.updateDescription;
+                    var params = {
+                        ...values,
+                        accountId: this.type=='one'?this.selectedOneKeysValueCreative[0].accountId:this.accountId,
+                        creativeArr: this.type=='one'?this.selectedOneKeysValueCreative:this.selectedRowKeysValueCreative
+                    }
+                    this.postDataAction('/MaterialRefuse/batchUpdateCreative', params).then(res => {
+                        if (res.success) {
+                            // this.visibleFail = true
+                            this.visibleAgain = false;
+                            this.selectedOneKeysValueCreative = [];
+                            this.selectedRowKeysValueCreative = [];
+                            this.selectedRowKeysCreative = [];
+                            this.ipaginationCreative.current = 1;
+                            this.getCreativeByVideo();
+                            this.againLoading = false;
+                            this.$message.success(res.message);
+                        } else {
+                            this.againLoading = false
+                            this.$message.error(res.message)
+                        }
+                    })
+                    }
+                })
+            }
+        }
+    },
+    mounted() {
+        this.$nextTick(() => {
+            //   this.mediaId = JSON.parse(localStorage.getItem('videoInfo')).mediaId
+            window.addEventListener('scroll', this.handleScroll);
+            this.clientWidth = document.documentElement.clientWidth - 224;
+            //   this.$route.query.mediaId
+            //   this.$route.query.md5
+            this.getMaterialInfo();
+            this.getDirectionalInfo();
+            this.getAccountVideo();
+            this.getCreativeByVideo();
+            this.getAccountList()
+
+        })
+    },
+    created() {},
+}
+</script>

+ 213 - 0
src/views/modules/autoLaunch/material-all/material-service.js

@@ -0,0 +1,213 @@
+/**
+ * @file 人群包管理基础服务
+ * @author jiayufei(jiayufei@c-top.com.cn)
+ */
+
+ class AppMarketService {
+    constructor() {}
+
+    // 相关账户的table列表
+    setAcountColumns() {
+        return [
+            {
+                title: '账户名称',
+                dataIndex: 'authName',
+                width: '50%',
+                align: 'center'
+            },
+            {
+                title: '编辑',
+                dataIndex: 'action',
+                scopedSlots: {customRender: 'action'},
+                width: '50%',
+                align: 'center'
+            }
+        ]
+    }
+
+    // 原因的table列表
+    setCauseColumns() {
+        return [
+            {
+                title: '账户名称',
+                dataIndex: 'authName',
+                width: '25%',
+                align: 'center'
+            },
+            {
+                title: '推送结果',
+                dataIndex: 'result',
+                width: '25%',
+                align: 'center'
+            },
+            {
+                title: '失败原因',
+                dataIndex: 'message',
+                width: '25%',
+                align: 'center',
+                customRender(t) {
+                    if(t === 'OK') {
+                        return '-';
+                    }
+                    else {
+                        return t;
+                    }
+                }
+            },
+            {
+                title: '操作',
+                dataIndex: 'action',
+                scopedSlots: {customRender: 'action'},
+                width: '25%',
+                align: 'center'
+            }
+        ]
+    }
+
+    // 相关项目的table列表
+    setDepColumns() {
+        return [
+            {
+                title: '广告组名称',
+                dataIndex: 'unitName',
+                width: '50%',
+                align: 'center'
+            },
+            {
+                title: '所属账户',
+                dataIndex: 'authName',
+                width: '50%',
+                align: 'center'
+            }
+        ]
+    }
+
+    // 状态枚举
+    setPlatform() {
+        return [
+            {
+                label: 0,
+                value: '不限'
+            },
+            {
+                label: 1,
+                value: 'Android'
+            },
+            {
+                label: 2,
+                value: 'IOS'
+            }
+        ]
+    }
+
+    // 上传人去报的校验规则
+    setPersonRules() {
+        return {
+            name: [
+                {required: true, message: '人群包名称不能为空', trigger: 'blur'},
+                {min: 1, max: 20, message: '人群包名称不能超过20个字符', trigger: 'blur'}
+            ],
+            resource: [
+                {required: true, message: '请选择匹配类型', trigger: 'change'}
+            ]
+        }
+    }
+
+    // 人群包类型枚举值
+    setPopulationTypeTasks() {
+        return [
+            {
+                label: 1,
+                value: '上传人群'
+            }, {
+                label: 2,
+                value: '广告人群'
+            }, {
+                label: 3,
+                value: '主题专区'
+            }, {
+                label: 4,
+                value: '逻辑规则'
+            }, {
+                label: 5,
+                value: '人群扩展'
+            }, {
+                label: 6,
+                value: '平台制定'
+            }, {
+                label: 7,
+                value: '定制付费'
+            }, {
+                label: 8,
+                value: '网红粉丝类别'
+            }, {
+                label: 9,
+                value: '内容付费行为'
+            }, {
+                label: 10,
+                value: '移动应用安装'
+            }, {
+                label: 11,
+                value: '快手使用活跃度'
+            }, {
+                label: 12,
+                value: '行业分类'
+            }, {
+                label: 13,
+                value: '商业兴趣'
+            }, {
+                label: 14,
+                value: '固话标签'
+            }, {
+                label: 15,
+                value: '行业偏好'
+            }, {
+                label: 16,
+                value: '第三方标签'
+            }, {
+                label: 17,
+                value: '产品关键词'
+            }, {
+                label: 19,
+                value: '应用渗透率'
+            }, {
+                label: 22,
+                value: '指定网红'
+            }, {
+                label: 23,
+                value: '行业分类'
+            }
+        ]
+    }
+
+    // 匹配类型枚举值
+    setMateTypeTasks() {
+        return [
+            {
+                label: 1,
+                value: 'IMEI'
+            }, {
+                label: 2,
+                value: 'IDFA'
+            }, {
+                label: 3,
+                value: 'IMEI_MD5'
+            }, {
+                label: 4,
+                value: 'IDFA_MD5'
+            }, {
+                label: 5,
+                value: '手机号-MD5'
+            }, {
+                label: 7,
+                value: 'OAID'
+            }, {
+                label: 8,
+                value: 'OAID_MD5'
+            }
+        ]
+    }
+
+}
+
+export default new AppMarketService();

+ 222 - 0
src/views/modules/autoLaunch/material-all/material.less

@@ -0,0 +1,222 @@
+.directional-content {
+    // background: #fff;
+    // height: calc(100vh - 137px);
+    // padding: 20px;
+    overflow: hidden;
+    .middle-button {
+        margin: 0 8px;
+    }
+    .control-con-header {
+        margin-bottom: 20px;
+        position: relative;
+        /deep/ .ant-form-inline .ant-form-item > .ant-form-item-control-wrapper, .ant-form-inline .ant-form-item > .ant-form-item-label {
+            width: 200px !important;
+        }
+        .reset-class {
+            margin-right: 10px !important;
+        }
+        .upload-person {
+            position: absolute;
+            right: 10px;
+            top: 0;
+        }
+    }
+    .cause-text-class {
+        cursor: pointer;
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+    .acount-search-class {
+        width: 200% !important;
+    }
+    .grid-form-type {
+        margin-left: 210px;
+    }
+}
+/deep/ .push-modal {
+    width: 600px !important;
+    .acount-title {
+        display: flex;
+        font-size: 14px;
+        height: 40px;
+        line-height: 40px;
+        .acount-title-left {
+            margin-right: 20px;
+            width: 100px;
+        }
+    }
+    .push-plate {
+        margin-bottom: 20px;
+    }
+}
+.person-modal {
+    width: 500px;
+    /deep/ .ant-form-item {
+        display: flex;
+    }
+    /deep/ .ant-form-item-label {
+        width: 20%;
+    }
+    /deep/ .ant-form-item-control-wrapper {
+        width: 80%;
+    }
+    .acount-search-class {
+        width: 100% !important;
+    }
+    .upload-txt-rules {
+        margin-top: 10px;
+        margin-bottom: 10px;
+        line-height: 1.5;
+    }
+    /deep/ .ant-radio-group {
+        line-height: 30px;
+    }
+}
+/deep/ .cause-modal {
+    width: 600px !important;
+    .cause-modal-table-class {
+        height: 500px;
+        overflow-y: auto;
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+}
+/deep/ .relax-modal {
+    width: 600px !important;
+    .acount-title {
+        display: flex;
+        font-size: 14px;
+        height: 40px;
+        line-height: 40px;
+        .acount-title-left {
+            margin-right: 20px;
+            width: 100px;
+        }
+    }
+    .push-plate {
+        margin-bottom: 20px;
+    }
+}
+
+.grid-form-item-account {
+    /deep/ .ant-form-item-control {
+        line-height: inherit;
+    }
+}
+.material-total {
+    width: 100%;
+    min-height:100px;
+    margin-top:15px;
+    /deep/ .ant-card-body {
+        padding: 0;
+    }
+}
+.material-main {
+    width: 100%;
+    min-height:300px;
+    margin-top:15px;
+    .home-card {
+        width: 100%;
+        overflow: hidden;
+        padding: 10px 0px;
+        display: flex;
+        flex-wrap: wrap;
+        margin-left: 25px;
+        min-height: 300px;
+        .home-right {
+            width: 100%;
+        }
+      
+        .bg:after {
+            content: '';
+            width: 110%;
+            height: 110%;
+            position: absolute;
+            left: -5%;
+            top: -5%;
+            background: inherit;
+            filter: blur(10px);
+            z-index: 2;
+        }
+    }
+    .home-item {
+        overflow: hidden;
+        position: relative;
+        img {
+            width: 100%;
+            height: auto;
+        }
+        .bottom-details {
+            width: 100%;
+            height: 37%;
+            background: rgba(0, 0, 0, .7);
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            z-index: 10;
+            padding: 10px;
+            .bottom-title {
+                display: flex;
+                justify-content: space-between;
+            }
+            h3 {
+                color: whitesmoke;
+                line-height: 25px;
+                width: 60%;
+                overflow: hidden; //超出的文本隐藏
+                text-overflow: ellipsis; //溢出用省略号显示
+                white-space: nowrap; //溢出不换行  
+            }
+            p {
+                color: whitesmoke;
+                line-height: 1;
+                width: 100%;
+                overflow: hidden; //超出的文本隐藏
+                text-overflow: ellipsis; //溢出用省略号显示
+                white-space: nowrap; //溢出不换行
+            }
+        }
+    }
+      
+    @media only screen and (min-width: 1200px) {
+        .home-item {
+            border-style: solid;
+            border-width: 1px;
+            border-color: #e4e4e4;
+            width: calc(25% - 50px);
+            padding: 10px;
+            margin-right: 50px;
+            margin-bottom: 10px;
+            display: flex;
+            align-items: center;
+            background: #fff;
+            position: relative;
+            z-index: 99;
+        }
+    }
+      
+    @media only screen and (min-width: 1530px) {
+        .home-item {
+            border-style: solid;
+            border-width: 1px;
+            border-color: #e4e4e4;
+            width: calc(20% - 50px);
+            padding: 10px;
+            margin-right: 50px;
+            margin-bottom: 10px;
+            display: flex;
+            align-items: center;
+            background: #fff;
+            position: relative;
+            z-index: 99;
+        }
+    }
+}
+
+

+ 309 - 0
src/views/modules/autoLaunch/material-all/material.vue

@@ -0,0 +1,309 @@
+<template>
+  <div class="directional-content">
+    <a-card style="width: 100%"> 
+        <div class="table-page-search-wrapper">
+            <a-form layout="inline"  :form="form"
+                hide-required-mark :selfUpdate="true" 
+                @submit="handleQueryList">
+                <a-row :gutter="24">
+                     <a-col :md="8" :sm="8" :xxl="6">
+                        <!-- <a-form-item label="项目名称"> -->
+                        <selectTable :projectId.sync="projectId" ref="selectTable" :requireCheck="false"></selectTable>
+                    </a-col>
+                    <a-col :md="8" :sm="8" :xxl="6">
+                        <a-form-item label="唯一编码">
+                            <a-input
+                                v-decorator="['signature']" type="text"
+                                placeholder="请输入想要搜索的素材md5"
+                            />
+                        </a-form-item>
+                    </a-col>
+                    <!--  -->
+                    <a-col :md="8" :sm="8" :xxl="6">
+                        <a-form-item label="素材状态">
+                            <a-select
+                                v-decorator="['status',{initialValue:''}]"
+                                placeholder="请选择"
+                                allow-clear
+                            >
+                                <a-select-option :value="''">不限</a-select-option>
+                                <a-select-option :value="0">可用</a-select-option>
+                                <a-select-option :value="1">删除</a-select-option>
+                            </a-select>
+                        </a-form-item>
+                    </a-col>
+                     <!--  -->
+                    <a-col :md="8" :sm="8" :xxl="6">
+                        <a-form-item label="素材渠道">
+                            <a-select
+                                v-decorator="['channelType',{initialValue:''}]"
+                                placeholder="请选择"
+                                allow-clear
+                            >
+                                <a-select-option :value="''">不限</a-select-option>
+                                <a-select-option :value="0">内部</a-select-option>
+                                <a-select-option :value="1">素造</a-select-option>
+                            </a-select>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :md="8" :sm="8" :xxl="6">
+                        <span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
+                            <a-button type="primary" icon="search" @click="handleQueryList">查询</a-button>
+                            <a-button type="primary" @click="handleResetForm" icon="reload" class="middle-button">重置</a-button>
+                        </span>
+                        
+                    </a-col>
+                </a-row>
+            </a-form>
+        </div>
+    </a-card>
+    <a-row :gutter="24" class="material-total" v-if="totalData">
+        <a-col :sm="24" :md="12" :xl="6">
+            <chart-card title="素材总数" :total="totalData.total + ''">
+                <a-tooltip title="此项目的素材总数" slot="action">
+                    <a-icon type="info-circle-o" />
+                </a-tooltip>
+                <!-- <div slot="percentage">
+                    <trend :flag="costLink > 0 ? 'up' : 'down'">
+                        <span slot="term">环比</span>
+                        {{ (costLink * 100).toFixed(2) }}%
+                    </trend>
+                </div> -->
+            </chart-card>
+        </a-col>
+        <a-col :sm="24" :md="12" :xl="6">
+            <chart-card title="在投素材数" :total="totalData.yesterdayValidCount + ''">
+                <a-tooltip title="此项目昨日在投素材总数" slot="action">
+                    <a-icon type="info-circle-o" />
+                </a-tooltip>
+            </chart-card>
+        </a-col>
+        <a-col :sm="24" :md="12" :xl="6">
+            <chart-card title="今日同步素材数" :total="totalData.todayUpCount + ''">
+                <a-tooltip title="此项目今日同步素材数" slot="action">
+                    <a-icon type="info-circle-o" />
+                </a-tooltip>
+
+                <!-- <div slot="percentage">
+                    <trend :flag="totalData.todayUpCount >= totalData.yesterdayUpCount > 0 ? 'up' : 'down'">
+                        {{ totalData.todayUpCount - totalData.yesterdayUpCount === 0 ? '0' : ((totalData.todayUpCount - totalData.yesterdayUpCount)/totalData.yesterdayUpCount).toFixed(2) }}%
+                    </trend>
+                </div> -->
+            </chart-card>
+        </a-col>
+        <a-col :sm="24" :md="12" :xl="6">
+            <chart-card title="近一周同步素材数" :total="totalData.thisWeekCount + ''">
+                <a-tooltip title="此项目近一周同步素材数" slot="action">
+                    <a-icon type="info-circle-o" />
+                </a-tooltip>
+                <div slot="percentage">
+                    <trend :flag="totalData.thisWeekCount >= totalData.lastWeekCount > 0 ? 'up' : 'down'">
+                        <!-- <span slot="term">环比</span> -->
+                        {{ totalData.thisWeekCount - totalData.lastWeekCount === 0 ? '0' : (((totalData.thisWeekCount - totalData.lastWeekCount)/totalData.lastWeekCount)*100).toFixed(2) }}%
+                    </trend>
+                </div>
+            </chart-card>
+        </a-col>
+    </a-row>
+    <a-card  class="material-main">
+        <a-spin :spinning="spinning">
+            <div v-if="dataSource.length > 0">
+                <div  class="home-card">
+                    <div class="home-item" v-for="(items, index) in dataSource" :key="index" @click="lookView(items)">
+                        <img :src="items.coverUrl" alt="">
+                        <div class="bottom-details">
+                            <div class="bottom-title">
+                                <h3 :title="items.photoName">{{ items.photoName ? items.photoName : '-' }}</h3>
+                                <a @click.stop="lowerMaterial(items)" :disabled="items.status === 1">下架素材</a>
+                            </div>
+                            <p>素材来源:{{ items.channelType === 0 ? '内部' : '素造' }}</p>
+                            <p :title="items.statDate">上传日期:{{ items.statDate }}</p>
+                            <p>素材状态:{{ items.status === 0 ? '可用' : '删除' }}</p>
+                            <p></p>
+                        </div>
+                    </div>
+                </div>
+           
+                <a-pagination
+                size="small"
+                :showTotal="ipagination.showTotal"
+                style="float: right"
+                v-if="dataSource.length > 0"
+                showQuickJumper
+                :pageSize.sync="ipagination.pageSize"
+                :total="ipagination.total"
+                v-model="ipagination.current"
+                @change="getDataSource"
+                />
+            </div>
+            <div v-else class="home-card" style="justify-content: center;align-items: center;">
+                <a-empty />
+            </div>
+        </a-spin>
+    </a-card>
+    <a-modal title="查看视频" v-model="visibleVideo" :width="400" :footer="null">
+        <video class="video" :src="videoUrlShow" controls="controls" style="width: 100%">
+            您的浏览器不支持 video 标签。
+        </video>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+import moment from 'moment';
+import selectTable from '@/views/modules/Statistics/components/selectPagination.vue';
+import ChartCard from '@/components/ChartCard';
+import Trend from '@/components/Trend';
+import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl'; // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+export default {
+    components: {
+        selectTable,
+        ChartCard,
+        Trend
+    },
+    data() {
+        return {
+            visibleVideo: false,
+            videoUrlShow: null,
+            spinning: false,
+            form: this.$form.createForm(this),
+            projectId: '',
+            dataSource: [],
+            dataLoading: false,
+            ipagination: {
+                current: 1,
+                pageSize: 10,
+                //   pageSizeOptions: ['10', '20', '30'],
+                showTotal: (total, range) => {
+                    return range[0] + "-" + range[1] + " 共" + total + "条"
+                },
+                showQuickJumper: true,
+                showSizeChanger:false,
+                pageSizeOptions: ['10', '30', '50'],
+                total: 0,
+                onChange: (current, pageSize) => {
+                    // 切换分页时的回调,
+                    // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
+                    this.ipagination.current = current;
+                    this.ipagination.pageSize= pageSize;
+                    this.handleGetTableList({})
+                }
+            },
+            totalData: null
+        }
+    },
+    watch: {
+        visibleVideo(n, o) {
+            if (!n) {
+                closeAllVideoFun()
+            }
+        },
+    },
+    methods: {
+        lowerMaterial(item) {
+            let params = {};
+            params.id = item.id;
+            let that = this
+            this.$confirm({
+                title: '下架提示',
+                content: '是否下架此素材?',
+                onOk() {
+                    that.postDataAction('/kuaishouProjectVideoGet/offShelfVideo', params).then(result => {
+                        if(result.success) {
+                            that.$message.success('下架成功')
+                            that.handleGetTableList({})
+                        }
+                        else {
+                            that.$message.error(result.message)
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    });
+                }
+            });
+        },
+        lookView(item) {
+            // this.visibleVideo = true
+            // this.videoUrlShow = item.url
+            var params = { md5: item.signature, url:item.url, id:item.id, photoId:item.photoId, projectId:item.projectId }
+            localStorage.setItem('materialDetail', JSON.stringify(params))
+            this.$router.push({
+                path: '/autoLaunch/material-all/material-detail',
+            })
+        },
+        getDataSource(current, pageSize) {
+            // 切换分页时的回调,
+            // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
+            this.ipagination.current = current;
+            this.ipagination.pageSize= pageSize;
+            this.handleGetTableList({})
+        },
+        handleQueryList() {
+            this.ipagination.current = 1;
+            event.preventDefault();
+            const paramsData = this.form.getFieldsValue();
+            this.handleGetTableList(paramsData);
+            this.getVideoTotalNumber();
+        },
+        handleResetForm() {
+            this.totalData = null;
+            this.ipagination.current = 1;
+            this.form.resetFields();
+            this.projectId = undefined;
+            this.handleGetTableList({});
+            this.$refs.selectTable.keyValue = "";
+            this.$refs.selectTable.getData()
+        },
+        handleGetTableList(data) {
+            this.spinning = true;
+            const paramsData = {
+                signature: data.signature,
+                projectId: this.projectId,
+                status: data.status,
+                channelType: data.channelType,
+
+                pageNo:  this.ipagination.current,
+                pageSize: this.ipagination.pageSize
+            };
+            this.dataSource = []
+            this.dataLoading = true;
+            this.getAction('/kuaishouProjectVideoGet/list', paramsData).then(result => {
+                this.dataLoading = false;
+                this.spinning = false;
+                if (result.code === 200) {
+                    this.dataSource = result.result.list || [];
+                    this.ipagination.total = result.result.total || 0;
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                this.spinning = false;
+                this.dataLoading = false;
+                console.log(error, 'eeee');
+            });
+        },
+        getVideoTotalNumber() {
+            if(this.projectId !== '') {
+                let params = {};
+                params.projectId = this.projectId;
+                this.getAction('/kuaishouProjectVideoGet/getVideoTotalNumber', params).then(res => {
+                    if(res.success) {
+                        this.totalData = res.result;
+                    }
+                    else {
+                        this.totalData = null;
+                    }
+                })
+            }
+            
+        }
+    },
+    mounted() {
+        this.handleGetTableList({});
+    },
+}
+</script>
+<style lang="less" scoped>
+    @import "material";
+</style>

+ 2 - 2
vue.config.js

@@ -69,7 +69,7 @@ module.exports = {
     proxy: {
     proxy: {
       '/jeecg-boot': {
       '/jeecg-boot': {
           // target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
           // target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
-          target: 'http://192.168.1.3:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+          // target: 'http://192.168.1.3:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.6.162:9806', //请求本地 需要jeecg-boot后台项目  祚云
         // target: 'http://192.168.6.162:9806', //请求本地 需要jeecg-boot后台项目  祚云
@@ -89,7 +89,7 @@ module.exports = {
         // target: 'http://192.168.1.43:8806', // 子安
         // target: 'http://192.168.1.43:8806', // 子安
         // target: 'http://192.168.1.8:8806', // 学超
         // target: 'http://192.168.1.8:8806', // 学超
       //  target:'http://139.186.165.84:8806', //测试
       //  target:'http://139.186.165.84:8806', //测试
-        // target:'http://apipre.tjyourong.com.cn', //预生产
+        target:'http://apipre.tjyourong.com.cn', //预生产
 
 
         ws: false,
         ws: false,