zhuxinbo 5 年之前
父節點
當前提交
93ecd57f33

+ 4 - 1
src/views/modules/advertiser/ProjectMemberList.vue

@@ -335,7 +335,10 @@ export default {
         admin: '管理员',
         operator: '运营专员',
         kuaishouOperationManager: '快手运营经理',
-        designTeamLeader: '设计组长'
+        designTeamLeader: '设计组长',
+        planeLeader:"平面组长",
+        touTiaoOperationManager:'头条运营经理',
+        operationAssistant:"运营助理"
       }
 
       if (value) {

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

@@ -87,6 +87,7 @@
           contact: {rules: [{required: true, message: '请输入联系人姓名!'}]},
           mobile: {rules: [{required: true, message: '请输入联系人手机!'}]},
           email: {rules: [{required: true, message: '请输入联系人邮箱!'}]},
+          pid: {rules: [{required: true, message: '请选择行业!'}]},
         },
         url: {
           add: "/ctop/advertiser/add",

+ 8 - 1
src/views/modules/advertiser/modules/ProjectModal.vue

@@ -20,7 +20,14 @@
           <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="广告主名称">
-          <a-select @change="handleChange" labelInValue v-decorator="['advertiserId', validatorRules.advertiserId]">
+          <a-select
+            @change="handleChange"
+            labelInValue
+            optionFilterProp="children"
+            showSearch
+            :filterOption="filterOption"
+            v-decorator="['advertiserId', validatorRules.advertiserId]"
+          >
             <a-select-option :value="item.id" v-for="(item, index) of list" :key="index">{{
               item.name
             }}</a-select-option>

+ 1 - 0
src/views/modules/kuaishouapp/account/stepForm/Step2.vue

@@ -189,6 +189,7 @@
         </div>
       </a-form-item>
       <targeted-population ref="population" />
+      
       <a-form-item :wrapperCol="{ span: 20 }" style="text-align: center">
         <a-button htmlType="submit" type="primary" :loading="loading">下一步</a-button>
         <a-button style="margin-left: 8px" @click="prevStep" v-show="step == 1">上一步</a-button>

+ 340 - 52
src/views/modules/kuaishouapp/account/stepForm/stepModule/targetedPopulation.vue

@@ -261,36 +261,223 @@ li:hover {
       v-if="getData('platform_os') == '1' && allForm.appType == '2'"
       class="else-label"
     >
-      {{ getData('app_ids') }}
-      <div style="position:relative;">
-        <a-input placeholder="请输入搜索内容" @change="getAppAll" style="width:100%;position:relative;" />
+      <div style="position:relative;" v-clickoutside="handleClose">
+        <a-input
+          placeholder="请输入搜索内容"
+          @change="getAppAll"
+          @focus="getAppAll"
+          style="width:100%;position:relative;"
+        />
         <div
           style="width:100%;position:absolute;z-index:10;height:200px;background:white;overflow:auto;box-shadow: 0 2px 8px 0 rgba(0,0,0,.15);"
-          v-show="optionsApp.length > 0"
+          v-if="closeDialog"
         >
           <ul>
-            <li><a-checkbox style="float:left" @change="onCheckAllChange"></a-checkbox>全选</li>
-            <a-checkbox-group @change="onChangeCheck" v-model="checkArr" class="home-card">
-              <li v-for="item of optionsApp" :key="item.app_id">
-                <a-checkbox :value="item.app_id" style="float:left"></a-checkbox>{{ item.app_name }}
+            <li style="padding:0 10px">
+              <a-checkbox
+                style="float:left;margin:0 5px"
+                @change="onCheckAllChange"
+                :indeterminate="indeterminate"
+                :checked="checkAll"
+              ></a-checkbox
+              >全选
+            </li>
+            <a-checkbox-group @change="onChange" v-model="checkArr" class="home-card" style="width:100%">
+              <li style="padding:0 10px;width:100%;" v-for="item of optionsApp" :key="item.app_id">
+                <a-checkbox :value="item.app_id" style="float:left;margin:0 5px"></a-checkbox>{{ item.app_name }}
               </li>
             </a-checkbox-group>
           </ul>
         </div>
+        <div style="width:100%" v-if="checkArr.length > 0">
+          <a-button @click="clearAll">清空</a-button>
+          <br />
+          <a-tag v-for="item of checkArr" :key="item" closable :afterClose="() => log(item)">
+            {{ showAppName(item) }}
+          </a-tag>
+        </div>
       </div>
     </a-form-item>
     <a-form-item
-      label="APP行为"
+      label="商业兴趣"
       :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
       :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
-      v-if="getData('platform_os') == '1'"
     >
-      <a-radio-group buttonStyle="solid" v-model="allForm.appType" @change="getAppType">
+      <a-radio-group
+        buttonStyle="solid"
+        @change="businessInterest"
+        v-decorator="[
+          'business_interest_type',
+          {
+            initialValue: '0'
+          }
+        ]"
+      >
         <a-radio-button value="0">不限</a-radio-button>
-        <a-radio-button value="1">按分类</a-radio-button>
-        <a-radio-button value="2">按APP名称</a-radio-button>
+        <a-radio-button value="2">兴趣标签</a-radio-button>
+      </a-radio-group>
+    </a-form-item>
+    <a-form-item
+      label=" "
+      :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+      class="else-label"
+      v-if="getData('business_interest_type') == '2'"
+    >
+      {{ getData('business_interest') }}
+      <a-select
+        mode="multiple"
+        style="width: 100%"
+        optionFilterProp="children"
+        showSearch
+        :filterOption="filterOption"
+        v-decorator="['business_interest', { rules: [{ required: true, message: '请选择商业兴趣' }] }]"
+      >
+        <a-select-option v-for="item in businessOptions" :key="item.tagId" :value="item.tagId">{{
+          item.tagName
+        }}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item
+      label="网络环境"
+      :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+    >
+      <a-radio-group
+        buttonStyle="solid"
+        @change="businessInterest"
+        v-decorator="[
+          'network',
+          {
+            initialValue: '0'
+          }
+        ]"
+      >
+        <a-radio-button value="0">不限</a-radio-button>
+        <a-radio-button value="1">Wi-Fi</a-radio-button>
+        <a-radio-button value="2">移动网络</a-radio-button>
+      </a-radio-group>
+    </a-form-item>
+
+    <a-form-item
+      label="网红粉丝"
+      :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+    >
+      <a-radio-group buttonStyle="solid" v-model="allForm.fansStar" @change="fansStar">
+        <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: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+      class="else-label"
+      v-if="allForm.fansStar == '1'"
+    >
+      <a-select
+        mode="multiple"
+        style="width: 100%"
+        optionFilterProp="children"
+        showSearch
+        :filterOption="filterOption"
+        v-decorator="['fans_star', { rules: [{ required: true, message: '请选择网红类别' }] }]"
+      >
+        <a-select-option v-for="item in fansStarOptions" :key="item.tagId" :value="item.tagId">{{
+          item.tagName
+        }}</a-select-option>
+      </a-select>
+    </a-form-item>
+
+    <a-form-item
+      label="兴趣视频用户"
+      :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+    >
+      <a-radio-group buttonStyle="solid" v-model="allForm.interestVideo" @change="interestVideo">
+        <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: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+      class="else-label"
+      v-if="allForm.interestVideo == '1'"
+    >
+      <a-select
+        mode="multiple"
+        style="width: 100%"
+        optionFilterProp="children"
+        showSearch
+        :filterOption="filterOption"
+        v-decorator="['interest_video', { rules: [{ required: true, message: '请选择视频标签' }] }]"
+      >
+        <a-select-option v-for="item in interestVideoOptions" :key="item.tagId" :value="item.tagId">{{
+          item.tagName
+        }}</a-select-option>
+      </a-select>
+    </a-form-item>
+
+    <a-form-item
+      label="智能扩量"
+      :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+    >
+      <a-radio-group
+        buttonStyle="solid"
+        v-decorator="[
+          'is_open',
+          {
+            initialValue: '0'
+          }
+        ]"
+        @change="interestVideo"
+      >
+        <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: 7 }, sm: { span: 7 } }"
+      :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+      class="else-label"
+      v-if="getData('is_open') == '1'"
+    >
+      <a-checkbox
+        :disabled="allForm.ageType != 'ageCustom'"
+        v-decorator="[
+          'no_age_break',
+          {
+            initialValue: false
+          }
+        ]"
+        >不可突破年龄</a-checkbox
+      >
+      <a-checkbox
+        :disabled="getData('gender') == '0'"
+        v-decorator="[
+          'no_gender_break',
+          {
+            initialValue: false
+          }
+        ]"
+        >不可突破性别</a-checkbox
+      >
+      <a-checkbox
+        :disabled="allForm.regionType != 'limit'"
+        v-decorator="[
+          'no_area_break',
+          {
+            initialValue: false
+          }
+        ]"
+        >不可突破地域</a-checkbox
+      >
+    </a-form-item>
   </a-form>
 </template>
 
@@ -301,6 +488,31 @@ import { mapGetters } from 'vuex'
 import jq from 'jquery'
 
 let dateQuantumRangeConst = ''
+const clickoutside = {
+  // 初始化指令
+  bind(el, binding, vnode) {
+    function documentHandler(e) {
+      // 这里判断点击的元素是否是本身,是本身,则返回
+      if (el.contains(e.target)) {
+        return false
+      }
+      // 判断指令中是否绑定了函数
+      if (binding.expression) {
+        // 如果绑定了函数 则调用那个函数,此处binding.value就是handleClose方法
+        binding.value(e)
+      }
+    }
+    // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听
+    el.__vueClickOutside__ = documentHandler
+    document.addEventListener('click', documentHandler)
+  },
+  update() {},
+  unbind(el, binding) {
+    // 解除事件监听
+    document.removeEventListener('click', el.__vueClickOutside__)
+    delete el.__vueClickOutside__
+  }
+}
 
 export default {
   name: 'BaseForm',
@@ -313,6 +525,7 @@ export default {
       }
     }
   },
+  directives: { clickoutside },
   data() {
     return {
       form: this.$form.createForm(this),
@@ -344,7 +557,9 @@ export default {
         age: [],
         device: '0',
         price: '0',
-        appType: '0'
+        appType: '0',
+        fansStar: '0',
+        interestVideo: '0'
       },
       options: [],
       optionsAll: [],
@@ -355,33 +570,83 @@ export default {
         multiple: true
       },
       optionsApp: [],
+      checkOptions: [],
+      businessOptions: [],
+      fansStarOptions: [],
+      interestVideoOptions: [],
       optionPropsApp: {
         value: 'tagId',
         label: 'tagName',
         children: 'children',
         multiple: true
       },
-      getApp: '0'
+      getApp: '0',
+      closeDialog: false,
+      indeterminate: false,
+      checkAll: false
     }
   },
-  computed: {
-    count() {}
-  },
+  computed: {},
   methods: {
-    onChangeCheck(checkedList) {
-      if (checkedList.length == 0) {
+    showAppName(appId) {
+      var data = this.checkOptions.filter(item => {
+        return item.app_id == appId
+      })
+      return data[0].app_name
+    },
+    log(appId) {
+      var index = this.checkArr.findIndex(item => item === appId)
+      this.checkArr.splice(index, 1)
+      if (this.checkArr.length == 0) {
+        this.indeterminate = false
         this.checkAll = false
       }
     },
-    onCheckAllChange() {
-      if (this.checkAll) {
-        this.checkArr = []
-      } else {
-        this.checkArr = this.optionsApp.map(item => {
+    handleClose(e) {
+      this.closeDialog = false
+    },
+    clearAll() {
+      this.checkArr = []
+      this.indeterminate = false
+      this.checkAll = false
+    },
+    onChange(checkedList) {
+      this.indeterminate =
+        !!checkedList.length &&
+        checkedList.length <
+          this.optionsApp.map(item => {
+            return item.app_id
+          }).length
+      this.checkAll =
+        checkedList.length ===
+        this.optionsApp.map(item => {
           return item.app_id
-        })
+        }).length
+    },
+    onCheckAllChange(e) {
+      Object.assign(this, {
+        checkArr: e.target.checked
+          ? this.optionsApp.map(item => {
+              return item.app_id
+            })
+          : [],
+        indeterminate: false,
+        checkAll: e.target.checked
+      })
+      if (this.checkArr.length > 20) {
+        this.$message.error('最多选择20个APP行为')
+        this.checkArr = []
+        this.indeterminate = false
+        this.checkAll = false
       }
-      this.checkAll = !this.checkAll
+      //   if (this.checkAll) {
+      //     this.checkArr = []
+      //   } else {
+      //     this.checkArr = this.optionsApp.map(item => {
+      //       return item.app_id
+      //     })
+      //   }
+      //   this.checkAll = !this.checkAll
     },
     handleSubmit(e) {
       e.preventDefault()
@@ -391,29 +656,6 @@ export default {
         }
       })
     },
-    getAppList(value) {
-      console.log(value)
-      if (value == undefined) {
-        this.getApp = '0'
-      } else {
-        let params = {}
-        params.accountId = localStorage.getItem('accountId')
-        params.appId = value
-        getAction('/kuaishou/batch/getAppList', params).then(res => {
-          console.log(res)
-          if (res.success) {
-            console.log(res.result[0].platform)
-            if (res.result[0].platform == '1' || res.result[0].platform == '2') {
-              this.form.setFieldsValue({ platform_os: '1' })
-              this.getApp = '1'
-            } else if (res.result[0].platform == '3' || res.result[0].platform == '4') {
-              this.form.setFieldsValue({ platform_os: '2' })
-              this.getApp = '2'
-            }
-          }
-        })
-      }
-    },
     handleConfirmValue(rule, value, callback) {
       console.log(value)
       if (Math.abs(value[0] - value[1]) < 5) {
@@ -421,8 +663,19 @@ export default {
       }
       callback()
     },
+    manyValidator(rule, value, callback) {
+      if (value.length > 20) {
+        callback('最多只能选择20个选项')
+      }
+      callback()
+    },
     regionChange() {
       this.allForm.region = []
+      getAction('/kuaishou/batch/getRegion').then(res => {
+        console.log(res)
+        this.options = res.result
+        this.optionsAll = res.result
+      })
     },
     ageChange() {
       this.allForm.ages_range = []
@@ -440,15 +693,24 @@ export default {
     },
     getAppAll(e) {
       console.log(e.target.value)
+
       if (e.target.value !== '') {
         getAction('/kuaishou/batch/getAppSearch', {
           accountId: localStorage.getItem('accountId'),
           appName: e.target.value
         }).then(res => {
-          this.optionsApp = res.result
+          if (res.result) {
+            this.optionsApp = res.result
+            this.checkOptions.push(...res.result)
+            this.closeDialog = true
+          } else {
+            this.optionsApp = []
+            this.closeDialog = false
+          }
         })
       } else {
         this.optionsApp = []
+        this.closeDialog = false
       }
     },
     getAppType(e) {
@@ -463,11 +725,37 @@ export default {
         })
       }
     },
+    businessInterest(e) {
+      if (e.target.value == '2') {
+        this.getDataType('BUSINESS_INTEREST', 'businessOptions')
+      }
+    },
+    fansStar(e) {
+      if (e.target.value == '1') {
+        this.getDataType('FANS_STAR', 'fansStarOptions')
+      }
+    },
+    interestVideo(e) {
+      if (e.target.value == '1') {
+        this.getDataType('INTEREST_VIDEO', 'interestVideoOptions')
+      }
+    },
+    filterOption(input, option) {
+      return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+    },
+    getDataType(type, dataList) {
+      getAction('/kuaishou/batch/getTargetList', { tagType: type }).then(res => {
+        console.log(res)
+        if (res.success) {
+          this[dataList] = res.result
+        }
+      })
+    },
     getData(className) {
       return this.form.getFieldValue(className)
     }
   },
-  mounted: function() {
+  activated: function() {
     getAction('/kuaishou/batch/getRegion').then(res => {
       console.log(res)
       this.options = res.result

+ 42 - 45
src/views/modules/material/fragmentMatemal.vue

@@ -545,53 +545,39 @@ a {
             您的浏览器不支持 video 标签。
           </video>
         </div>
-        <!-- <div style="flex:3;padding:10px;box-sizing:border-box;">
+        <div style="flex:3;padding:10px;box-sizing:border-box;">
           <a-form v-if="detail" class="detail">
-            <a-form-item
-              label="视频时长"
-              :label-col="{ span: 6 }"
-              :wrapper-col="{ span: 18 }"
-              v-if="activeKey == 'video'"
-            >
-              {{ detail.parameter.second }}秒
-            </a-form-item>
-            <a-form-item label="尺寸" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.parameter.width }}*{{ detail.parameter.height }}
-            </a-form-item>
-            <a-form-item label="大小" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.parameter.size }}
-            </a-form-item>
-            <a-form-item label="策划" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.ascription.planName }}
-            </a-form-item>
-            <a-form-item label="拍摄" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.ascription.shotName }}
-            </a-form-item>
-            <a-form-item
-              label="剪辑"
-              :label-col="{ span: 6 }"
-              :wrapper-col="{ span: 18 }"
-              v-if="detail.ascription.clipName"
-            >
-              {{ detail.ascription.clipName }}
-            </a-form-item>
-            <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
+            <div v-if="detail.parameter">
+              <a-form-item
+                label="视频时长"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.second"
+              >
+                {{ detail.parameter.second }}秒
+              </a-form-item>
+              <a-form-item
+                label="尺寸"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.width"
+              >
+                {{ detail.parameter.width }}*{{ detail.parameter.height }}
+              </a-form-item>
+              <a-form-item
+                label="大小"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.size"
+              >
+                {{ detail.parameter.size }}
+              </a-form-item>
+            </div>
+            <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="detail.tag">
               <a-tag v-for="(item, index) of detail.tag" :key="index">{{ item }}</a-tag>
             </a-form-item>
-            <a-form-item label="水印素材下载" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="showUrlWater">
-              <a-button type="primary" @click="downloadByBlob">下载</a-button>
-            </a-form-item>
-            <a-form-item label="审核人" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
-              {{ detail.auditorName }}
-            </a-form-item>
-            <a-form-item label="广告语" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '1'">
-              {{ creativeCopywriter ? creativeCopywriter : '无广告语' }}
-            </a-form-item>
-            <a-form-item label="驳回原因" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
-              {{ refuseReason ? refuseReason : '无原因' }}
-            </a-form-item>
           </a-form>
-        </div> -->
+        </div>
       </div>
     </a-modal>
 
@@ -867,6 +853,10 @@ export default {
         // var paramsString = qs.stringify({ videoMergeList: params })
         postAction('/ctop/materialpart/merge', params).then(res => {
           console.log(res)
+          if (res.success) {
+            that.$message.error(res.message)
+            this.dataList = []
+          }
         })
       } else {
         that.$message.error('还未选择素材片段')
@@ -878,7 +868,11 @@ export default {
       this.setDir()
     },
     dirVideoGetPublish() {
-      this.visiblePublish = true
+      if (this.checkArr.length > 0) {
+        this.visiblePublish = true
+      } else {
+        this.$message.error('请选择需要发布的视频')
+      }
     },
     setDir() {
       let date = new Date()
@@ -907,7 +901,6 @@ export default {
           this.checkAll = false
         }
       })
-      //   /ctop/materialUpload/uploadAccount
     },
     showVideoFun(data, typeName) {
       console.log(data)
@@ -1055,6 +1048,9 @@ export default {
       this.visibleDetail = true
       this.showUrl = item.videoUrl
       this.id = item.id
+      getAction('/ctop/materialInfo/getDetail', { materialId: item.videoId }).then(res => {
+        this.detail = res
+      })
     },
     okEditShow(item, editStatus) {
       if (editStatus == '2') {
@@ -1256,6 +1252,7 @@ export default {
         this.loadData()
       } else {
         this.url.list = '/ctop/materialInfo/list'
+        this.queryParam.status = ''
         this.queryParam.type = key
         this.loadData()
       }

+ 39 - 25
src/views/modules/material/materialList.vue

@@ -374,7 +374,7 @@ a {
             @loaded="overUpload"
           ></upload-to-ali>
         </a-form-item>
-        <!-- <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="水印素材上传">
+        <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="水印素材上传">
           <upload-to-ali
             v-model="watermarkUrl.url"
             :customDomain="customDomain"
@@ -390,7 +390,7 @@ a {
             :dir="activeKey == 'image' ? dirImg : dirVideo"
             @loaded="overUpload"
           ></upload-to-ali>
-        </a-form-item> -->
+        </a-form-item>
 
         <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" :label="role.roleName">
           <span>{{ userInfo().realname }}</span>
@@ -456,29 +456,43 @@ a {
         </div>
         <div style="flex:3;padding:10px;box-sizing:border-box;">
           <a-form v-if="detail" class="detail">
-            <!-- <a-form-item label="尺寸" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.parameter.width }}*{{ detail.parameter.height }}
-            </a-form-item>
-            <a-form-item label="大小" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              {{ detail.parameter.size }}
-            </a-form-item> -->
-            <a-form-item
-              label="剪辑"
-              :label-col="{ span: 6 }"
-              :wrapper-col="{ span: 18 }"
-              v-if="detail.ascription.clipName"
-            >
-              {{ detail.ascription.clipName }}
-            </a-form-item>
-            <a-form-item
-              label="平面"
-              :label-col="{ span: 6 }"
-              :wrapper-col="{ span: 18 }"
-              v-if="detail.ascription.planeName"
-            >
-              {{ detail.ascription.planeName }}
-            </a-form-item>
-            <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
+            <div v-if="detail.parameter">
+              <a-form-item
+                label="尺寸"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.width"
+              >
+                {{ detail.parameter.width }}*{{ detail.parameter.height }}
+              </a-form-item>
+              <a-form-item
+                label="大小"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.size"
+              >
+                {{ detail.parameter.size }}
+              </a-form-item>
+            </div>
+            <div v-if="detail.ascription">
+              <a-form-item
+                label="剪辑"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.ascription.clipName"
+              >
+                {{ detail.ascription.clipName }}
+              </a-form-item>
+              <a-form-item
+                label="平面"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.ascription.planeName"
+              >
+                {{ detail.ascription.planeName }}
+              </a-form-item>
+            </div>
+            <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="detail.tag">
               <a-tag v-for="(item, index) of detail.tag" :key="index">{{ item }}</a-tag>
             </a-form-item>
             <a-form-item label="水印素材下载" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="showUrlWater">

+ 117 - 103
src/views/modules/material/videoMaterial.vue

@@ -495,21 +495,33 @@ a {
         </div>
         <div style="flex:3;padding:10px;box-sizing:border-box;">
           <a-form v-if="detail" class="detail">
-            <div v-if="detail.parameter.id">
+            <div v-if="detail.parameter">
               <a-form-item
                 label="视频时长"
                 :label-col="{ span: 6 }"
                 :wrapper-col="{ span: 18 }"
-                v-if="activeKey == 'video'"
+                v-if="detail.parameter.second"
               >
                 {{ detail.parameter.second }}秒
               </a-form-item>
-              <a-form-item label="尺寸" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
+              <a-form-item
+                label="尺寸"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.width"
+              >
                 {{ detail.parameter.width }}*{{ detail.parameter.height }}
               </a-form-item>
-              <a-form-item label="大小" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
+              <a-form-item
+                label="大小"
+                :label-col="{ span: 6 }"
+                :wrapper-col="{ span: 18 }"
+                v-if="detail.parameter.size"
+              >
                 {{ detail.parameter.size }}
               </a-form-item>
+            </div>
+            <div v-if="detail.ascription">
               <a-form-item label="策划" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
                 {{ detail.ascription.planName }}
               </a-form-item>
@@ -524,104 +536,105 @@ a {
               >
                 {{ detail.ascription.clipName }}
               </a-form-item>
-              <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-                <a-tag v-for="(item, index) of detail.tag" :key="index">{{ item }}</a-tag>
-              </a-form-item>
-              <a-form-item label="水印素材下载" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="name">
-                <a-button type="primary" @click="downloadByBlob" v-if="showUrlWater">下载</a-button>
-                <span v-else>水印素材生成中......</span>
-              </a-form-item>
-              <a-form-item
-                label="水印素材链接"
-                :label-col="{ span: 6 }"
-                :wrapper-col="{ span: 18 }"
-                v-if="showUrlWater"
-              >
-                <a-input v-model="showUrlWater" type="text" readonly />
-              </a-form-item>
-              <a-form-item label="生成水印素材" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-                <a-select :defaultValue="1" style="width:50%" v-model="size">
-                  <a-select-option :value="item.id" :key="item.id" v-for="item of sizeType">{{
-                    item.name
-                  }}</a-select-option>
-                </a-select>
-                <a-button type="primary" @click="getWater">生成</a-button>
-              </a-form-item>
-              <a-form-item label="审核人" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
-                {{ detail.auditorName }}
-              </a-form-item>
-              <a-form-item label="广告语" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '1'">
-                {{ creativeCopywriter ? creativeCopywriter : '无广告语' }}
-              </a-form-item>
-              <a-form-item label="驳回原因" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
-                {{ refuseReason ? refuseReason : '无原因' }}
-              </a-form-item>
-              <a-form-item label="截图" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
-                <upload-to-ali
-                  v-if="refuseFile"
-                  disabled
-                  v-model="refuseFile"
-                  :customDomain="customDomain"
-                  multiple
-                  preview
-                  :region="region"
-                  :bucket="bucket"
-                  :accept="acceptImage"
-                  :max="10"
-                  :size="1024000"
-                  :accessKeyId="accessKeyId"
-                  :accessKeySecret="accessKeySecret"
-                  :dir="dirImg"
-                ></upload-to-ali>
-                <div v-else>无截图</div>
-              </a-form-item>
-              <a-form-item
-                label="审核"
-                :label-col="{ span: 6 }"
-                :wrapper-col="{ span: 18 }"
-                v-if="
-                  active != '2' &&
-                    (role.roleCode == 'operator' ||
-                      role.roleCode == 'kuaishouOperationManager' ||
-                      role.roleCode == 'admin')
-                "
+            </div>
+
+            <a-form-item label="标签" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="detail.tag">
+              <a-tag v-for="(item, index) of detail.tag" :key="index">{{ item }}</a-tag>
+            </a-form-item>
+            <a-form-item label="水印素材下载" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="name">
+              <a-button type="primary" @click="downloadByBlob" v-if="showUrlWater">下载</a-button>
+              <span v-else>水印素材生成中......</span>
+            </a-form-item>
+            <a-form-item label="水印素材链接" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="showUrlWater">
+              <a-input v-model="showUrlWater" type="text" readonly />
+            </a-form-item>
+            <a-form-item label="生成水印素材" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
+              <a-select :defaultValue="4" style="width:50%" v-model="size">
+                <a-select-option :value="item.id" :key="item.id" v-for="item of sizeType">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+              <a-button type="primary" @click="getWater">生成</a-button>
+            </a-form-item>
+            <a-form-item
+              label="审核人"
+              :label-col="{ span: 6 }"
+              :wrapper-col="{ span: 18 }"
+              v-if="active == '2' && detail.auditorName"
+            >
+              {{ detail.auditorName }}
+            </a-form-item>
+            <a-form-item label="广告语" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '1'">
+              {{ creativeCopywriter ? creativeCopywriter : '无广告语' }}
+            </a-form-item>
+            <a-form-item label="驳回原因" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
+              {{ refuseReason ? refuseReason : '无原因' }}
+            </a-form-item>
+            <a-form-item label="截图" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" v-if="active == '2'">
+              <upload-to-ali
+                v-if="refuseFile"
+                disabled
+                v-model="refuseFile"
+                :customDomain="customDomain"
+                multiple
+                preview
+                :region="region"
+                :bucket="bucket"
+                :accept="acceptImage"
+                :max="10"
+                :size="1024000"
+                :accessKeyId="accessKeyId"
+                :accessKeySecret="accessKeySecret"
+                :dir="dirImg"
+              ></upload-to-ali>
+              <div v-else>无截图</div>
+            </a-form-item>
+            <a-form-item
+              label="审核"
+              :label-col="{ span: 6 }"
+              :wrapper-col="{ span: 18 }"
+              v-if="
+                active != '2' &&
+                  (role.roleCode == 'operator' ||
+                    role.roleCode == 'kuaishouOperationManager' ||
+                    role.roleCode == 'admin')
+              "
+            >
+              <a-button type="primary" @click="edit(null, '0', '1')" v-if="active == '0'" style="margin-right:10px"
+                >通过审核</a-button
               >
-                <a-button type="primary" @click="edit(null, '0', '1')" v-if="active == '0'" style="margin-right:10px"
-                  >通过审核</a-button
-                >
-                <a-popconfirm @confirm="okEdit">
-                  <div slot="title">
-                    <div>
-                      驳回原因:
-                      <a-textarea
-                        placeholder="请输入原因"
-                        v-model="refuseReason"
-                        :autosize="{ minRows: 3, maxRows: 10 }"
-                      />
-                    </div>
-                    <div>
-                      截图:
-                      <upload-to-ali
-                        v-model="refuseFile"
-                        :customDomain="customDomain"
-                        multiple
-                        preview
-                        :region="region"
-                        :bucket="bucket"
-                        :accept="acceptImage"
-                        :max="10"
-                        :size="1024000"
-                        :accessKeyId="accessKeyId"
-                        :accessKeySecret="accessKeySecret"
-                        :dir="dirImg"
-                      ></upload-to-ali>
-                    </div>
+              <a-popconfirm @confirm="okEdit">
+                <div slot="title">
+                  <div>
+                    驳回原因:
+                    <a-textarea
+                      placeholder="请输入原因"
+                      v-model="refuseReason"
+                      :autosize="{ minRows: 3, maxRows: 10 }"
+                    />
                   </div>
-                  <a-button type="primary">驳回</a-button>
-                  <!-- @click="edit(null, '0', '2')" -->
-                </a-popconfirm>
-              </a-form-item>
-            </div>
+                  <div>
+                    截图:
+                    <upload-to-ali
+                      v-model="refuseFile"
+                      :customDomain="customDomain"
+                      multiple
+                      preview
+                      :region="region"
+                      :bucket="bucket"
+                      :accept="acceptImage"
+                      :max="10"
+                      :size="1024000"
+                      :accessKeyId="accessKeyId"
+                      :accessKeySecret="accessKeySecret"
+                      :dir="dirImg"
+                    ></upload-to-ali>
+                  </div>
+                </div>
+                <a-button type="primary">驳回</a-button>
+                <!-- @click="edit(null, '0', '2')" -->
+              </a-popconfirm>
+            </a-form-item>
           </a-form>
         </div>
       </div>
@@ -717,7 +730,7 @@ export default {
       key: '0',
       mediaId: null,
       sizeType: [],
-      size: 1
+      size: 4
     }
   },
   filters: {
@@ -1142,15 +1155,16 @@ export default {
       })
     },
     getProjectId(items) {
+      this.form.resetFields(["clipId","planId","shotId"])
       getAction('/ctop/projectMember/getMemberList', { projectId: items }).then(res => {
         if (res.code == 0) {
           this.ascription.clipId = res.result.filter(item => {
-            if (item.roleCode == 'clip') {
+            if (item.roleCode == 'clip' || item.roleCode == 'plan') {
               return { userId: item.userId, userName: item.userName }
             }
           })
           this.ascription.shotId = res.result.filter(item => {
-            if (item.roleCode == 'shot') {
+            if (item.roleCode == 'shot' || item.roleCode == 'plan') {
               return { userId: item.userId, userName: item.userName }
             }
           })