浏览代码

提交代码

朱鑫波 4 年之前
父节点
当前提交
bdd2cffc57

+ 2 - 2
src/views/modules/creative-copywrit/creative-copywrit.vue

@@ -313,7 +313,7 @@
             <a-form layout="inline" :selfUpdate="true">
                 <a-row :gutter="24">
                     <a-col :md="8" :sm="8">
-                        <selectTable :projectId.sync="queryParam.projectId"></selectTable>
+                        <selectTable :projectId.sync="queryParam.productId"></selectTable>
                     </a-col>
                     <a-col :md="8" :sm="8">
                         <a-form-item label="素材名称">
@@ -1577,7 +1577,7 @@ import PermissionModal from '@/views/modules/material/modules/DepartModal';
 import {JeecgListMixin} from '@/mixins/JeecgListMixin';
 import JEllipsis from '@/components/jeecg/JEllipsis';
 import UploadToAli from '@femessage/upload-to-ali';
-import selectTable from '@/views/modules/Statistics/components/selectPagination.vue';
+import selectTable from '@/views/modules/material/comment/selectTable.vue';
 import {fileCheck, fileEdit, fileEditAll, fileInsertV2, fileEditUpdate, fileEditUpdateBatch} from '@/api/actor';
 import {deleteAction, getAction, postAction, putAction} from '@/api/manage';
 import uploadFile from '@/components/uploadFile.vue';

+ 2 - 2
src/views/modules/material/accountCheck.vue

@@ -76,8 +76,8 @@ export default {
       this.checkAll = false
       console.log(url, item)
       getAction(url, item).then((res) => {
-        if (res.code == 0) {
-          this.showList = res.result.map((item) => {
+        if (res.success) {
+          this.showList = res.result.records.map((item) => {
             return {
               label: item.authName,
               value: item.accountId,

+ 423 - 0
src/views/modules/material/comment/selectTable.vue

@@ -0,0 +1,423 @@
+<style>
+.select-table .ant-table-thead > tr > th,
+.select-table .ant-table-tbody > tr > td {
+  padding: 0 !important;
+}
+.select-table .ant-table {
+  font-size: 12px;
+}
+.demo-infinite-container {
+  border: 1px solid #e8e8e8;
+  border-radius: 4px;
+  overflow: auto;
+  padding: 8px 24px;
+  height: 300px;
+}
+.demo-loading-container {
+  position: absolute;
+  bottom: 40px;
+  width: 100%;
+  text-align: center;
+}
+</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-form-item
+    label="产品名称"
+    :label-col="labelCol"
+    :wrapper-col="wrapperCol"
+    v-clickoutside="handleClose"
+    style="width: 100%"
+    class="select-table"
+    :class="{'require-check':requireCheck} "
+  >
+    <a-input
+      placeholder="请选择产品名称"
+      @focus="topMiddle = true"
+      v-model="keyValue"
+      @change="getData"
+      :disabled="disabled"
+    />
+    <div
+      v-show="topMiddle"
+      v-infinite-scroll="handleInfiniteOnLoad"
+      style="
+        background: white;
+        padding: 10px;
+        box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);
+        position: absolute;
+        z-index: 1000;
+        width: 100%;
+      "
+      class="demo-infinite-container"
+      :infinite-scroll-disabled="busy"
+      :infinite-scroll-distance="80"
+    >
+      <a-list :data-source="data">
+        <a-list-item slot="renderItem" slot-scope="item" @click="showProject(item)">
+          <a-list-item-meta :description="'产品名称:' + item.productName">
+            <a slot="title">广告主名称:{{ item.advertiserName }}</a>
+          </a-list-item-meta>
+          <!-- <div>
+            {{
+              item.mediaId == '1'
+                ? '头条'
+                : item.mediaId == '2'
+                ? '快手'
+                : item.mediaId == '3'
+                ? '头条内广'
+                : '快手内广'
+            }}
+          </div> -->
+        </a-list-item>
+        <div v-if="loading && !busy" class="demo-loading-container">
+          <a-spin />
+        </div>
+      </a-list>
+    </div>
+  </a-form-item>
+</template>
+
+<script>
+import { getAction, postAction } from '@/api/manage'
+import moment from 'moment'
+import { mapGetters } from 'vuex'
+import jq from 'jquery'
+import infiniteScroll from 'vue-infinite-scroll'
+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: 'select-pagination',
+  components: {},
+  directives: { clickoutside, infiniteScroll },
+  props: {
+    projectId: {
+      type: [String, Number],
+      default() {
+        return ''
+      },
+    },
+    type: {
+      type: String,
+      default() {
+        return ''
+      },
+    },
+    labelCol: {
+      type: Object,
+      default() {
+        return {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        }
+      },
+    },
+    disabled: {
+      type: Boolean,
+      default() {
+        return false
+      },
+    },
+    requireCheck: {
+      type: Boolean,
+      default() {
+        return false
+      },
+    }
+  },
+
+  data() {
+    return {
+      taobaoSpecialOfferList: {
+        advertiserId: "fd41614705a047dd65ab0e34e9150cfe",
+        advertiserName: " 淘宝(中国)软件有限公司",
+        createTime: "2021-03-03 10:15:30",
+        designResponsibleName: "辛巴特",
+        id: 3660879,
+        maxBid: 30000,
+        mediaId: "1",
+        productId: 1410280,
+        productName: "头条-淘宝特价版",
+        projectId: 1530887,
+        projectName: "头条-淘宝特价版",
+        responsibleName: "董琪",
+        roleCode: "operator",
+        saleId: null,
+        saleName: null,
+        updateTime: "2021-03-03 21:23:04",
+        userId: "a0d58df3392c4583b55ce3b041792aa7",
+        userName: "王晓娟"
+      },
+      loading: false,
+      busy: false,
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 12 },
+      },
+      selectedRowKeys: [],
+      selectedRowKeysValue: [],
+      topMiddle: false,
+      keyValue: '',
+      data: [],
+      dataElse: [],
+      ipagination: {
+        current: 0,
+        pageSize: 20,
+      },
+      rowClick: (record, index) => ({
+        // 事件
+        on: {
+          click: () => {
+            // var str =
+            //   record.mediaId == '1'
+            //     ? '头条'
+            //     : record.mediaId == '2'
+            //     ? '快手'
+            //     : record.mediaId == '3'
+            //     ? '头条内广'
+            //     : '快手内广'
+            this.keyValue = record.productName
+            this.topMiddle = false
+            this.data = this.dataElse
+            this.$emit('update:projectId', record.id)
+          },
+        },
+      }),
+    }
+  },
+  computed: {},
+  filters: {},
+  methods: {
+    showProject(record) {
+      var str =
+        record.mediaId == '1'
+          ? '头条'
+          : record.mediaId == '2'
+          ? '快手'
+          : record.mediaId == '3'
+          ? '头条内广'
+          : '快手内广'
+      this.keyValue = record.productName
+      this.topMiddle = false
+      this.$emit('update:projectId', record.id)
+    },
+    ...mapGetters(['nickname', 'avatar', 'userInfo']),
+    onSelectChange(selectedRowKeys, selectionRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRowKeysValue = selectionRows.map((item) => {
+        return { orientationId: item.orientationId, orientationName: item.orientationName }
+      })
+    },
+    getData() {
+      if (this.keyValue == '') {
+        this.$emit('update:projectId', '')
+      }
+      this.ipagination.current = 1
+      getAction('/ctop/product/getUserProductList', {
+        userId: this.userInfo().id,
+        pageNo: this.ipagination.current,
+        productName: this.keyValue,
+      }).then((res) => {
+        if (res.code == 0) {
+          let defaultList = res.result.records.map((item, index) => {
+            return {
+              ...item,
+              productId: item.id + '',
+              key: index,
+            };
+          })
+          if (this.type === 'taobao') {
+            this.data = defaultList.filter(item => item.productId === 1410280);
+          }
+          else {
+            this.data = defaultList;
+          }
+          // this.dataElse = res.result.records.map((item, index) => {
+          //   return {
+          //     ...item,
+          //     projectId: item.projectId + '',
+          //     key: index,
+          //   }
+          // })
+        }
+      })
+    },
+    handleClose() {
+      this.topMiddle = false
+    },
+    // allData() {
+    //   getAction('/ctop/product/getUserProductList', {
+    //     userId: this.userInfo().id,
+    //     pageSize: this.ipagination.pageSize,
+    //     pageNo: this.ipagination.current,
+    //   }).then((res) => {
+    //     if (res.code == 0) {
+    //       this.data = res.result.records.map((item, index) => {
+    //         return {
+    //           ...item,
+    //           projectId: item.projectId + '',
+    //           key: index,
+    //         }
+    //       })
+    //       this.dataElse = res.result.records.map((item, index) => {
+    //         return {
+    //           ...item,
+    //           projectId: item.projectId + '',
+    //           key: index,
+    //         }
+    //       })
+    //     }
+    //   })
+    // },
+    handleInfiniteOnLoad() {
+      const data = this.data
+      this.loading = true
+      this.ipagination.current++
+      // this.fetchData((res) => {
+      //   this.data = data.concat(res.results)
+      //   this.loading = false
+      // })
+      getAction('/ctop/product/getUserProductList', {
+        userId: this.userInfo().id,
+        pageSize: this.ipagination.pageSize,
+        pageNo: this.ipagination.current,
+        productName: this.keyValue,
+      }).then((res) => {
+        if (res.code == 0) {
+          this.busy = true
+          let defaultList = res.result.records.map((item, index) => {
+              return {
+                ...item,
+                projectId: item.projectId + '',
+              }
+            })
+          this.data = data.concat(
+            
+          )
+          if (this.type === 'taobao') {
+            this.data = defaultList.filter(item => item.productId === 1410280);
+          }
+          else {
+            this.data = data.concat(defaultList);
+          }
+          // this.data = res.result.records.map((item, index) => {
+          //   return {
+          //     ...item,
+          //     projectId: item.projectId + '',
+          //     key: index,
+          //   }
+          // })
+          // this.dataElse = res.result.records.map((item, index) => {
+          //   return {
+          //     ...item,
+          //     projectId: item.projectId + '',
+          //     key: index,
+          //   }
+          // })
+        }
+      })
+    },
+  },
+  watch: {
+    projectId(n, o) {
+      if (n == '') {
+        this.keyValue = ''
+      } else {
+      }
+    },
+  },
+  mounted: function () {
+    // this.handleInfiniteOnLoad()
+  },
+}
+</script>
+
+<style type="text/css">
+.plug-timer-grid {
+  width: 100%;
+}
+
+.plug-timer-grid td,
+.plug-timer-grid th {
+  border: 1px solid #97b4d1;
+  text-align: center; /*cursor:pointer;*/
+  font-size: 10px;
+  line-height: 10px;
+}
+
+.Selected {
+  background-color: rgb(102, 162, 243);
+  opacity: 0.5;
+}
+
+.plug-timer-grid {
+  border-collapse: collapse;
+  z-index: 4;
+}
+
+.plug-timer-grid thead tr {
+  display: table-row;
+  vertical-align: inherit;
+  border-color: inherit;
+}
+
+.group-creat table td {
+  height: 20px;
+  max-width: 5px;
+  font-size: 12px;
+  text-align: center;
+  vertical-align: middle;
+  overflow: hidden;
+  transition: background 0.5s;
+  -webkit-transition: background 0.5s;
+}
+
+.plug-timer-grid tbody th {
+  width: 4%;
+}
+
+.plug-timer-grid tbody tr td {
+  width: 2%;
+}
+
+/*.clear{*/
+/*  margin:20px 0px 20px 0px;*/
+/*}*/
+</style>

+ 55 - 40
src/views/modules/material/videoMaterial.vue

@@ -356,7 +356,7 @@ a {
         <a-row :gutter="24">
           <a-col :md="8" :sm="8">
             <!-- <a-form-item label="项目名称"> -->
-            <selectTable :projectId.sync="queryParam.projectId"></selectTable>
+            <selectTable :projectId.sync="queryParam.productId"></selectTable>
           </a-col>
 
           <a-col :md="8" :sm="8">
@@ -430,7 +430,7 @@ a {
       >
       <a-button
         v-if="
-          queryParam.projectId &&
+          queryParam.productId &&
           active == '1' &&
           (role.roleCode == 'operator' ||
             role.roleCode == 'kuaishouOperationManager' ||
@@ -439,8 +439,22 @@ a {
             role.roleCode == 'touTiaoOperationManager')
         "
         :disabled="checkArr.length == 0"
-        @click="tongbu"
-        >一键同步</a-button
+        @click="tongbu('1')"
+        >一键同步头条</a-button
+      >
+      <a-button
+        v-if="
+          queryParam.productId &&
+          active == '1' &&
+          (role.roleCode == 'operator' ||
+            role.roleCode == 'kuaishouOperationManager' ||
+            role.roleCode == 'admin' ||
+            role.roleCode == 'operationAssistant' ||
+            role.roleCode == 'touTiaoOperationManager')
+        "
+        :disabled="checkArr.length == 0"
+        @click="tongbu('2')"
+        >一键同步快手</a-button
       >
     </div>
 
@@ -1667,7 +1681,7 @@ import qs from 'qs'
 import { mapGetters } from 'vuex'
 import moment from 'moment'
 
-import selectTable from '@/views/modules/Statistics/components/selectPagination.vue'
+import selectTable from './comment/selectTable.vue'
 
 import BMF from 'browser-md5-file'
 import uploadFile from '@/components/uploadFile.vue'
@@ -1950,7 +1964,7 @@ export default {
         this.loadData()
       }
     },
-    'queryParam.projectId': function (n, o) {
+    'queryParam.productId': function (n, o) {
       if (n != '') {
         this.getList(n)
       }
@@ -2189,33 +2203,34 @@ export default {
       return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
     },
     moment,
-    tongbu() {
-      getAction('/ctop/project/queryById', { id: this.queryParam.projectId }).then((res) => {
-        console.log(res)
-        if (res.success) {
-          if (res.result.mediaId == '1' || res.result.mediaId == '3') {
-            this.$refs.check.getData('/ctop/userAllocation/getAccountListByProjectId', {
-              userId: this.userInfo().id,
-              projectId: this.queryParam.projectId,
-            })
-          } else if (res.result.mediaId == '2' || res.result.mediaId == '4') {
-            this.$refs.accountCheckBytedance.getParticipateList(this.queryParam.projectId)
-          }
-        } else {
-          this.$message.error('网络波动,请稍后再试')
-        }
-      })
+    tongbu(value) {
+      // getAction('/ctop/project/queryById', { id: this.queryParam.projectId }).then((res) => {
+      //   console.log(res)
+      //   if (res.success) {
+      if (value == '1' || value == '3') {
+        this.$refs.check.getData('/ctop/projectMember/participateListV2', {
+          userId: this.userInfo().id,
+          pageNo:1,
+          pageSize:100
+        })
+      } else if (value == '2' || value == '4') {
+        this.$refs.accountCheckBytedance.getParticipateList(this.queryParam.projectId)
+      }
+      //   } else {
+      //     this.$message.error('网络波动,请稍后再试')
+      //   }
+      // })
     },
     implement(data) {
       // {treeData:data,shieldBackwardSwitch:this.shieldBackwardSwitch}
       var params = {}
       params.mediaId = this.mediaId
       params.materialArray = JSON.stringify(this.checkArr)
-      params.accountArray = data.treeData?JSON.stringify(data.treeData):JSON.stringify(data)
-      if(this.mediaId == '2'){
+      params.accountArray = data.treeData ? JSON.stringify(data.treeData) : JSON.stringify(data)
+      if (this.mediaId == '2') {
         params.shieldBackwardSwitch = data.shieldBackwardSwitch
       }
-      
+
       postAction('/ctop/materialUpload/uploadAccount', params).then((res) => {
         if (res.code == 0) {
           this.checkArr = []
@@ -2300,21 +2315,21 @@ export default {
       this.loadData(1)
     },
     getList(value) {
-      if (value) {
-        // this.mediaId = this.dataElse.filter(item => {
-        //   if (value == item.projectId) {
-        //     return item
-        //   }
-        // })[0].mediaId
-        getAction('/ctop/projectMember/participateListV2', {
-          userId: this.userInfo().id,
-          projectId: value,
-        }).then((res) => {
-          if (res.code == 0) {
-            this.mediaId = res.result.records[0].mediaId
-          }
-        })
-      }
+      // if (value) {
+      //   // this.mediaId = this.dataElse.filter(item => {
+      //   //   if (value == item.projectId) {
+      //   //     return item
+      //   //   }
+      //   // })[0].mediaId
+      //   getAction('/ctop/product/getUserProductList', {
+      //     userId: this.userInfo().id,
+      //     productId: value,
+      //   }).then((res) => {
+      //     if (res.code == 0) {
+      //       this.mediaId = res.result.records[0].mediaId
+      //     }
+      //   })
+      // }
       this.loadData()
     },
     onChangeCheckImage(checkedList) {