Bläddra i källkod

'批量展示'

魏志佳 4 år sedan
förälder
incheckning
3f1a102946

+ 15 - 4
debug.log

@@ -3,9 +3,20 @@
 [0529/112937.608:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
 [0619/110835.729:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
 [0701/153438.192:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
-<<<<<<< HEAD
-[0708/055752.148:ERROR:process_info.cc(375)] NtQuerySystemInformation SystemExtendedHandleInformation: {没有足够配额} 没有足够的虚拟内存或分页文件配额以完成指定的操作。 (0xc0000017)
+[0708/055752.148:ERROR:process_info.cc(375)] NtQuerySystemInformation SystemExtendedHandleInformation: {没锟斤拷锟姐够锟斤拷锟絵 没锟斤拷锟姐够锟斤拷锟斤拷锟斤拷锟节达拷锟斤拷页锟侥硷拷锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷锟侥诧拷锟斤拷锟斤拷 (0xc0000017)
 [0708/055807.088:ERROR:process_info.cc(359)] UncheckedAllocate
 [0713/163350.208:ERROR:file_io.cc(89)] ReadExactly: expected 36, observed 0
-=======
->>>>>>> test-2
+[0716/000711.554:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.558:ERROR:exception_snapshot_win.cc(98)] thread ID 12948 not found in process
+[0716/000711.559:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.560:ERROR:exception_snapshot_win.cc(98)] thread ID 15736 not found in process
+[0716/000711.577:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.577:ERROR:exception_snapshot_win.cc(98)] thread ID 2072 not found in process
+[0716/000711.592:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.593:ERROR:exception_snapshot_win.cc(98)] thread ID 12744 not found in process
+[0716/000711.593:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.593:ERROR:exception_snapshot_win.cc(98)] thread ID 17220 not found in process
+[0716/000711.615:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.615:ERROR:exception_snapshot_win.cc(98)] thread ID 18896 not found in process
+[0716/000711.616:ERROR:process_reader_win.cc(123)] NtOpenThread: {无法访问} 过程已请求访问一对象,但未给访问权限。 (0xc0000022)
+[0716/000711.617:ERROR:exception_snapshot_win.cc(98)] thread ID 15368 not found in process

+ 2 - 3
src/components/ctop/ActorModal.vue

@@ -8,7 +8,6 @@
           <a-input placeholder="请输入演员姓名" v-decorator="['name', validatorRules.name ]" />
         </a-form-item>
         <a-form-item label="封面" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          {{coverUrl}}
           <!-- <upload-to-ali
             v-model="coverUrl"
             :customDomain="customDomain"
@@ -25,13 +24,13 @@
           <uploadFile :value.sync="coverUrl" :fileCount="1" uploadType="image" :multiple="false" />
         </a-form-item>
         <a-form-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="!model.name">
-          <uploadFile :value.sync="imageUrl" :fileCount="1" uploadType="image" :multiple="false" />
+          <uploadFile :value.sync="imageUrl" :fileCount="10" uploadType="image"  />
           <!-- <upload-to-ali v-model="imageUrl" :customDomain="customDomain" multiple preview :region="region"
             :bucket="bucket" :accept="acceptImage" :max="10" :size="1024000" :accessKeyId="accessKeyId"
             :accessKeySecret="accessKeySecret"></upload-to-ali> -->
         </a-form-item>
         <a-form-item label="视频作品" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="!model.name">
-          <uploadFile :value.sync="videoUrl" :fileCount="1" uploadType="video" :multiple="false" />
+          <uploadFile :value.sync="videoUrl" :fileCount="1" uploadType="video" />
           <!-- <upload-to-ali v-model="videoUrl" :customDomain="customDomain" multiple preview :region="region"
             :bucket="bucket" :accept="acceptVideo" :max="10" :size="1024000" :accessKeyId="accessKeyId"
             :accessKeySecret="accessKeySecret"></upload-to-ali> -->

+ 4 - 3
src/components/layouts/TabLayout.vue

@@ -82,13 +82,14 @@
       this.activePage = this.$route.fullPath
 
       if(!this.linkList.includes("/account/stepForm")){
+          
           localStorage.removeItem("step")
           localStorage.removeItem("campaignId")
           localStorage.removeItem("pans")
           localStorage.removeItem("pansKey")
           localStorage.removeItem("appId")
       }
-      if(!this.linkList.includes("/account/advertisingGroup")){
+      if(!this.linkList.includes("/account/advertisingGroup")&&!this.linkList.includes("/account/stepForm")){
           localStorage.removeItem("advertisingGroup")
           localStorage.removeItem("advertisingGroupKey")
       }
@@ -114,11 +115,11 @@
           localStorage.removeItem("pansKey")
           localStorage.removeItem("appId")
         }
-        if(!this.linkList.includes("/account/advertisingGroup")){
+        if(!this.linkList.includes("/account/advertisingGroup")&&!this.linkList.includes("/account/stepForm")){
           localStorage.removeItem("advertisingGroup")
           localStorage.removeItem("advertisingGroupKey")
         }
-        if(!this.linkList.includes("/account/originality")){
+        if(!this.linkList.includes("/account/originality")&&!this.linkList.includes("/account/stepForm")){
           localStorage.removeItem("originality")
           localStorage.removeItem("originalityKey")
         }

+ 40 - 12
src/components/uploadFile.vue

@@ -6,8 +6,8 @@
   <div class="upload-file">
     <a-upload name="file" :multiple="multiple" list-type="picture-card" class="avatar-uploader"
       action="https://media-1301855440.cos.ap-chongqing.myqcloud.com/" :before-upload="beforeUpload"
-      @change="handleChange" :accept="uploadType+'/*'" :file-list="fileList" :remove="removeFile"
-      @preview="handlePreview" :disabled="loadingElse||disabled">
+      @change="handleChange" :accept="uploadType+'/'+(uploadType=='image'?'jpeg,image/jpg':'mp4')" :file-list="fileList"
+      :remove="removeFile" @preview="handlePreview" :disabled="loadingElse||disabled">
       <div v-if="uploadType=='image'?fileList.length < fileCount:fileList.length<1">
         <a-progress v-if='loadingElse' :percent="percent" :show-info="false" />
         <div class="ant-upload-text">
@@ -33,6 +33,7 @@
   import moment from 'moment'
 
   import BMF from 'browser-md5-file'
+
   import qs from 'qs'
   var COS = require('cos-js-sdk-v5');
   var cos = new COS({
@@ -40,6 +41,7 @@
     SecretKey: 'tXzuwMfplTTK3c9GFUyETilasvQfePu9',
   });
   var i = 0
+  const oneKB = 1024
 
   function getBase64(file) {
     return new Promise((resolve, reject) => {
@@ -86,7 +88,23 @@
       value: {
         type: [String, Array],
         required: true
-      }
+      },
+      size: {
+        type: Number,
+        default () {
+          if (this.uploadType == 'image') {
+            return 2048
+          } else {
+            return 102400
+          }
+        }
+      },
+      onOversize: {
+        type: Function,
+        default () {
+          alert(`请选择${this.size}KB内的文件!`)
+        }
+      },
     },
     data() {
       return {
@@ -176,15 +194,24 @@
       beforeUpload(file) {
         this.percent = 0
         this.loadingElse = true
-        this.checkFile(file).then(res => {
-          this.cosUpload(file)
-
-        }).catch(() => {
+        const fileOvesize = (file.size > this.size * oneKB)
+        console.log(fileOvesize)
+        if (fileOvesize) {
+          this.onOversize()
           this.loadingElse = false
-        })
-        return new Promise(function (resolve, reject) {
-          reject()
-        })
+          return
+        } else {
+          this.checkFile(file).then(res => {
+            this.cosUpload(file)
+
+          }).catch(() => {
+            this.loadingElse = false
+          })
+          return new Promise(function (resolve, reject) {
+            reject()
+          })
+
+        }
 
       },
       clearAll() {
@@ -198,12 +225,13 @@
         MM = MM < 10 ? '0' + MM : MM
         let d = date.getDate()
         d = d < 10 ? '0' + d : d
+        var timeElse = new Date().getTime()
         cos.putObject({
           Bucket: 'media-1301855440',
           /* 必须 */
           Region: 'ap-chongqing',
           /* 存储桶所在地域,必须字段 */
-          Key: that.uploadType + '/' + y + '-' + MM + '-' + d + '/' + file.name,
+          Key: that.uploadType + '/' + y + '-' + MM + '-' + d + '/' + timeElse + '-' + file.name,
           /* 必须 */
           StorageClass: 'STANDARD',
           Body: file, // 上传文件对象

+ 38 - 50
src/views/modules/BatchCreate/TouTiaoBatch.vue

@@ -51,7 +51,7 @@
                     </a-select-option>
                 </a-select>
             </span>
-            
+
             <span class="OptinItem">
                 <!-- <a-date-picker @change="dateChange" /> -->
                  <a-range-picker v-model="dateValue" :disabled-date="disabledDate"  style="width: 250px;" format="YYYY-MM-DD" @change="dateChange" />
@@ -142,7 +142,7 @@
                     <span slot="bid" slot-scope="text,record">
                        <editableCell :text="text" slotName='bid' @change="onCellChange(record.key, 'bid', $event)" />
                     </span>
-                    <span slot="status" slot-scope="text,record">
+                    <span slot="campaignStatus" slot-scope="text,record">
                         <a-switch size="default" :checked=text  @change="switchChange(text,record)"/>
                     </span>
                     <!-- <span slot="toutiaoStatus" slot-scope="text,record">
@@ -285,17 +285,16 @@ let modifyTableCol=[
 const columns = [
   {
     title: '状态',
-    dataIndex: 'status',
-    key: 'status',
+    dataIndex: 'campaignStatus',
+    key: 'campaignStatus',
     align: 'center',
-    scopedSlots: { customRender: 'status' }
+    scopedSlots: { customRender: 'campaignStatus' }
   },
   {
     title: '广告组名称',
     dataIndex: 'name',
     key: 'name',
     align: 'center',
-    width:450,
     scopedSlots: { customRender: 'name' }
   },
   {
@@ -323,7 +322,6 @@ const columns = [
     dataIndex: 'budget',
     key: 'budget',
     align: 'center',
-    width:250,
     scopedSlots: { customRender: 'budget' }
   },
   {
@@ -426,14 +424,14 @@ const ideaColumns = [
     //   },
   {
     title: '创意ID',
-    dataIndex: 'ideaID',
-    key: 'ideID',
+    dataIndex: 'id',
+    key: 'id',
     align: 'center',
   },
   {
     title: '广告创意',
-    dataIndex: 'ideID',
-    key: 'ideaID',
+    dataIndex: 'title',
+    key: 'title',
     align: 'center',
   },
   {
@@ -448,8 +446,6 @@ const ideaColumns = [
     key: 'promotionPurpose',
     align: 'center',
   },
-
-
   {
     title: '投放时间',
     dataIndex: 'LaunchTime',
@@ -466,10 +462,10 @@ const ideaColumns = [
   },
   {
     title: '所属计划',
-    dataIndex: 'parentPlan',
-    key: 'parentPlan',
+    dataIndex: 'planId_dictText',
+    key: 'planId_dictText',
     align: 'center',
-    scopedSlots: { customRender: 'parentPlan' }
+    scopedSlots: { customRender: 'planId_dictText' }
   },
   {
     title: '所属广告组',
@@ -481,38 +477,6 @@ const ideaColumns = [
 ];
 
 
-
-let data=[
-    {
-        status:true,
-        campaignName:'有缘有相聚',
-        advantageID:28856,
-        promotionPurpose:'-',
-        groupBudget:12563,
-        creatTime:'2020-01-03',
-        key:28856
-    },
-    {
-        status:false,
-        campaignName:'有缘有相聚',
-        advantageID:27856,
-        promotionPurpose:'-',
-        groupBudget:'不限',
-        key:27856,
-        creatTime:'2020-03-03'
-    },
-    {
-        status:true,
-        campaignName:'有缘有相聚',
-        advantageID:24856,
-        promotionPurpose:'-',
-        groupBudget:14563,
-        creatTime:'2020-04-03',
-        key:24856,
-    },
-]
-
-
 export default {
     components: {
         editableCell,
@@ -617,6 +581,7 @@ export default {
         //tab切换页的函数
         callback(key) {
             console.log(key);
+<<<<<<< HEAD
             this.tabkey=key;
             this.loading=true
             if(key=='group'){
@@ -626,8 +591,18 @@ export default {
             }else if(key=='plan'){               
                 this.getplanList({})
                 this.columns=planColumns;
+=======
+            if(key=='plan'){
+                this.columns=planColumns;
+            }else if(key=='group'){
+              this.columns=columns;
+              let params = {};
+              this.refreshCampaignList();
+>>>>>>> 70a50f0c31548bd676fb38afe4a43a220737f9e6
             }else if(key=='idea'){
-                this.columns=ideaColumns;
+              this.columns=ideaColumns;
+              let params = {};
+              this.refreshCreativeList();
             }
         },
         //跳转到批量页面
@@ -677,7 +652,7 @@ export default {
             }
             
             // postAction('',{
-                
+
             // }).then((res)=>{
             //     console.log(res)
             // })
@@ -952,6 +927,7 @@ export default {
             }
           })
         },
+<<<<<<< HEAD
         getplanList(params){
 
             getAction(this.url.planList,params).then((res)=>{
@@ -1004,6 +980,18 @@ export default {
             }
             })
         },
+=======
+      refreshCreativeList(params){
+        getAction(this.url.creativeList, params).then(res => {
+          console.log(res);
+          if (res.success) {
+            this.data = res.result.records;
+          } else {
+            console.log(res.message);
+          }
+        })
+      }
+>>>>>>> 70a50f0c31548bd676fb38afe4a43a220737f9e6
     },
     mounted() {
         console.log(this);

+ 159 - 0
src/views/modules/advertiser/KuaishouLoginList.vue

@@ -0,0 +1,159 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="账号">
+              <a-input placeholder="请输入账号" v-model="queryParam.accountName"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账号类型">
+              <a-select v-model="queryParam.loginType">
+                <a-select-option value="none">
+                  不限
+                </a-select-option>
+                <a-select-option value="kuaishou">
+                  快手
+                </a-select-option>
+                <a-select-option value="bytedance">
+                  头条
+                </a-select-option>
+                <a-select-option value="pangolin">
+                  穿山甲
+                </a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <bindAccountLogin-modal ref="modalForm" @ok="modalFormOk"></bindAccountLogin-modal>
+  </a-card>
+</template>
+
+<script>
+  import BindAccountLoginModal from './modules/BindAccountLoginModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "BindAccountLoginList",
+    mixins:[JeecgListMixin],
+    components: {
+      BindAccountLoginModal
+    },
+    data () {
+      return {
+        loginType: 'none',
+        description: '绑定登录信息管理页面',
+        // 表头
+        columns: [
+		   {
+            title: '账号',
+            align:"center",
+            dataIndex: 'accountName'
+           },
+		   {
+            title: '密码',
+            align:"center",
+            dataIndex: 'password'
+           },
+		   {
+            title: '登录方式',
+            align:"center",
+            dataIndex: 'loginType'
+           },
+		   {
+            title: '账号状态',
+            align:"center",
+            dataIndex: 'status'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/ctop/bindAccountLogin/list",
+          delete: "/ctop/bindAccountLogin/delete",
+          deleteBatch: "/ctop/bindAccountLogin/deleteBatch",
+          exportXlsUrl: "ctop/bindAccountLogin/exportXls",
+          importExcelUrl: "ctop/bindAccountLogin/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 169 - 0
src/views/modules/advertiser/ProjectTransferRecordList.vue

@@ -0,0 +1,169 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户id">
+              <a-input placeholder="请输入账户id" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="源项目">
+              <a-input placeholder="请输入源项目" v-model="queryParam.soucreProject"></a-input>
+            </a-form-item>
+          </a-col>
+          <template v-if="toggleSearchStatus">
+            <a-col :md="6" :sm="8">
+              <a-form-item label="目标项目">
+                <a-input placeholder="请输入目标项目" v-model="queryParam.targetProject"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="8">
+              <a-form-item label="转户操作人">
+                <a-input placeholder="请输入转户操作人" v-model="queryParam.userId"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="8">
+              <a-form-item label="状态">
+                <a-input placeholder="请输入状态" v-model="queryParam.status"></a-input>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('账户转项目记录')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+
+    <a-table
+      ref="table"
+      size="middle"
+      bordered
+      rowKey="id"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      :loading="loading"
+      @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record" v-show="record.status!=1">
+          <a @click="handleEdit(record)">撤销</a>
+        </span>
+
+    </a-table>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <projectTransferRecord-modal ref="modalForm" @ok="modalFormOk"></projectTransferRecord-modal>
+  </a-card>
+</template>
+
+<script>
+  import ProjectTransferRecordModal from './modules/ProjectTransferRecordModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "ProjectTransferRecordList",
+    mixins:[JeecgListMixin],
+    components: {
+      ProjectTransferRecordModal
+    },
+    data () {
+      return {
+        description: '账户转项目记录管理页面',
+        // 表头
+        columns: [
+          {
+            title: '账户id',
+            align:"center",
+            dataIndex: 'accountId'
+          },
+          {
+            title: '账户名称',
+            align:"center",
+            dataIndex: 'accountId_dictText'
+          },
+          {
+            title: '原项目',
+            align:"center",
+            dataIndex: 'soucreProject_dictText'
+          },
+          {
+            title: '目标项目',
+            align:"center",
+            dataIndex: 'targetProject_dictText'
+          },
+          {
+            title: '申请人',
+            align:"center",
+            dataIndex: 'userId_dictText'
+          },
+          {
+            title: '审核人',
+            align:"center",
+            dataIndex: 'reviewerId_dictText'
+          },
+          {
+            title: '审核状态',
+            align:"center",
+            dataIndex: 'status_dictText'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+        url: {
+          list: "/ctop/projectTransferRecord/list",
+          delete: "/ctop/projectTransferRecord/delete",
+          deleteBatch: "/ctop/projectTransferRecord/deleteBatch",
+          exportXlsUrl: "ctop/projectTransferRecord/exportXls",
+          importExcelUrl: "ctop/projectTransferRecord/importExcel",
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      }
+    },
+    methods: {
+
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 173 - 0
src/views/modules/advertiser/ProjectTransferRecordListbak.vue

@@ -0,0 +1,173 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="账户id">
+              <a-input placeholder="请输入账户id" v-model="queryParam.accountId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="源项目">
+              <a-input placeholder="请输入源项目" v-model="queryParam.soucreProject"></a-input>
+            </a-form-item>
+          </a-col>
+        <template v-if="toggleSearchStatus">
+        <a-col :md="6" :sm="8">
+            <a-form-item label="目标项目">
+              <a-input placeholder="请输入目标项目" v-model="queryParam.targetProject"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="转户操作人">
+              <a-input placeholder="请输入转户操作人" v-model="queryParam.userId"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="状态">
+              <a-input placeholder="请输入状态" v-model="queryParam.status"></a-input>
+            </a-form-item>
+          </a-col>
+          </template>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('账户转项目记录')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+          <a-divider type="vertical" />
+          <a @click="handleEdit(record)">通过</a>
+          <a-divider type="vertical" />
+          <a @click="handleEdit(record)">驳回</a>
+        </span>
+
+      </a-table>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <projectTransferRecord-modal ref="modalForm" @ok="modalFormOk"></projectTransferRecord-modal>
+  </a-card>
+</template>
+
+<script>
+  import ProjectTransferRecordModal from './modules/ProjectTransferRecordModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "ProjectTransferRecordList",
+    mixins:[JeecgListMixin],
+    components: {
+      ProjectTransferRecordModal
+    },
+    data () {
+      return {
+        description: '账户转项目记录管理页面',
+        // 表头
+        columns: [
+		   {
+            title: '账户id',
+            align:"center",
+            dataIndex: 'accountId'
+           },
+          {
+            title: '账户名称',
+            align:"center",
+            dataIndex: 'accountId_dictText'
+          },
+		   {
+            title: '原项目',
+            align:"center",
+            dataIndex: 'soucreProject_dictText'
+           },
+		   {
+            title: '目标项目',
+            align:"center",
+            dataIndex: 'targetProject_dictText'
+           },
+		   {
+            title: '申请人',
+            align:"center",
+            dataIndex: 'userId_dictText'
+           },
+          {
+            title: '审核人',
+            align:"center",
+            dataIndex: 'reviewerId_dictText'
+          },
+          {
+            title: '审核状态',
+            align:"center",
+            dataIndex: 'status'
+           },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/ctop/projectTransferRecord/list",
+          delete: "/ctop/projectTransferRecord/delete",
+          deleteBatch: "/ctop/projectTransferRecord/deleteBatch",
+          exportXlsUrl: "ctop/projectTransferRecord/exportXls",
+          importExcelUrl: "ctop/projectTransferRecord/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 15 - 36
src/views/modules/advertiser/modules/BindAccountLoginModal.vue

@@ -7,16 +7,9 @@
     @ok="handleOk"
     @cancel="handleCancel"
     cancelText="关闭">
-    
+
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
-      
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="广告id">
-          <a-input placeholder="请输入广告id" v-decorator="['advertiserId', {}]" />
-        </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
@@ -27,33 +20,24 @@
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="密码">
-          <a-input placeholder="请输入密码" v-decorator="['password', {}]" />
+          <a-input placeholder="请输入密码" v-decorator="['password', {}]"/>
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="登录方式">
-          <a-input placeholder="请输入登录方式" v-decorator="['loginType', {}]" />
-        </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="1未登陆 2已登陆">
-          <a-input placeholder="请输入1未登陆 2已登陆" v-decorator="['status', {}]" />
+          <a-select v-decorator="['loginType', {initialValue:'kuaishou',}]">
+            <a-select-option value="kuaishou">
+              快手
+            </a-select-option>
+            <a-select-option value="bytedance">
+              头条
+            </a-select-option>
+            <a-select-option value="pangolin">
+              穿山甲
+            </a-select-option>
+          </a-select>
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="userId">
-          <a-input placeholder="请输入userId" v-decorator="['userId', {}]" />
-        </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="用户平台ID">
-          <a-input placeholder="请输入用户平台ID" v-decorator="['accountId', {}]" />
-        </a-form-item>
-		
       </a-form>
     </a-spin>
   </a-modal>
@@ -101,7 +85,7 @@
         this.model = Object.assign({}, record);
         this.visible = true;
         this.$nextTick(() => {
-          this.form.setFieldsValue(pick(this.model,'advertiserId','accountName','password','loginType','status','userId','accountId'))
+          this.form.setFieldsValue(pick(this.model,'accountName','password','loginType'))
 		  //时间格式化
         });
 
@@ -127,7 +111,7 @@
             }
             let formData = Object.assign(this.model, values);
             //时间格式化
-            
+
             console.log(formData)
             httpAction(httpurl,formData,method).then((res)=>{
               if(res.success){
@@ -140,17 +124,12 @@
               that.confirmLoading = false;
               that.close();
             })
-
-
-
           }
         })
       },
       handleCancel () {
         this.close()
       },
-
-
     }
   }
 </script>

+ 154 - 0
src/views/modules/advertiser/modules/ProjectTransferRecordModal.vue

@@ -0,0 +1,154 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="账户id">
+          <a-input placeholder="请输入账户id" v-decorator="['accountId', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="源项目">
+          <a-input placeholder="请输入源项目" v-decorator="['soucreProject', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="目标项目">
+          <a-input placeholder="请输入目标项目" v-decorator="['targetProject', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="转户操作人">
+          <a-input placeholder="请输入转户操作人" v-decorator="['userId', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="状态">
+          <a-input-number v-decorator="[ 'status', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="审核人id">
+          <a-input placeholder="请输入审核人id" v-decorator="['reviewerId', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "ProjectTransferRecordModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        },
+        url: {
+          add: "/ctop/projectTransferRecord/add",
+          edit: "/ctop/projectTransferRecord/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'accountId','soucreProject','targetProject','userId','status','reviewerId'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

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

@@ -729,7 +729,7 @@
       if (this.appId == '') {
         return
       } else {
-        this.addUser()
+        this.searchLabel()
       }
     }
   }

+ 11 - 1
src/views/modules/kuaishouapp/account/advertisingGroup.vue

@@ -96,6 +96,7 @@
               <!-- getCheckboxProps: getCheckboxProps -->
               <a slot="unitName" slot-scope="text, record" @click="toDetail(record)" :title="text">
                 <span
+                  :title="text"
                   style="display:block;width:250px !important;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;">
                   {{ text }}</span>
 
@@ -112,6 +113,12 @@
               <span slot="status" slot-scope="text">{{ text | status }}</span>
               <span slot="putStatus" slot-scope="text">{{ text | putStatus }}</span>
               <span slot="createChannel" slot-scope="text">{{ text | createChannel }}</span>
+              <span slot="reviewDetail" slot-scope="text">
+                <span
+                  :title="text"
+                  style="margin:0;display:block;width:300px !important;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;">
+                  {{ text }}</span>
+              </span>
               <span slot="bidType" slot-scope="text, record">
                 <!-- {{ text | bidType }} -->
                 {{ record.ocpxActionType | ocpxActionType }}</span>
@@ -405,7 +412,10 @@
     {
       title: '审核拒绝理由',
       align: 'center',
-      dataIndex: 'reviewDetail'
+      dataIndex: 'reviewDetail',
+      scopedSlots: {
+        customRender: 'reviewDetail'
+      }
     },
     {
       title: '出价类型',

+ 87 - 29
src/views/modules/kuaishouapp/account/editGroup.vue

@@ -46,7 +46,8 @@
         <creat-application ref="application" />
       </a-form-item>
       <a-form-item label=" " class="else-label" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
-        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" v-if="campaignType == '2'&&showSite&&(getPlatForm(getData('appId'))=='1'||getPlatForm(getData('appId'))=='2')">
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+        v-if="campaignType == '2'&&showSite&&(getPlatForm(getData('appId'))=='1'||getPlatForm(getData('appId'))=='2')">
         <a-select v-model="siteId" showSearch allowClear placeholder="选择应用下载详情页" optionFilterProp="children"
           :filterOption="filterOption">
           <a-select-option v-for="appModel in siteList" :key="appModel.siteId" :value="appModel.siteId">
@@ -77,6 +78,18 @@
           优先从系统应用商店下载
         </a-checkbox>
       </a-form-item>
+      <a-form-item label=" " :labelCol="{ lg: { span: 7}, sm: { span: 7 } }"
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 16 } }" class="else-label" v-if="allForm.useAppMarket">
+        请勾选投放应用已上架的应用商店(默认全选)
+        <a-checkbox-group v-model="allForm.appStore">
+          <a-checkbox value="huawei">华为</a-checkbox>
+          <a-checkbox value="oppo">OPPO</a-checkbox>
+          <a-checkbox value="vivo">VIVO</a-checkbox>
+          <a-checkbox value="xiaomi">小米</a-checkbox>
+          <a-checkbox value="meizu">魅族</a-checkbox>
+          <a-checkbox value="smartisan">锤子</a-checkbox>
+        </a-checkbox-group>
+      </a-form-item>
       <div style="text-align:center;font-size:16px;margin-bottom:10px">
         目标人群
       </div>
@@ -113,23 +126,20 @@
         </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.dayBudget == '1'">
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-show="allForm.dayBudget == '1'">
         <a-input placeholder="不小于100,不超过100000000,仅支持输入自然数" v-decorator="[
             'dayBudget',
-            {
-              rules: [{ required: true, message: '请填写预算' }, { validator: budgetValue }]
-            }
           ]" />
       </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="['speed', { initialValue: 1 }]">
+        <a-radio-group buttonStyle="solid" v-decorator="['speed']">
           <a-radio-button :value="1">正常投放</a-radio-button>
           <a-radio-button :value="2">平滑投放</a-radio-button>
         </a-radio-group>
         <br />
         <span>
-          {{ getData('speed') == '2' ? '平滑匀速投放' : '尽快展示广告消耗预算' }}
+          {{ getData('speed') == 2 ? '平滑匀速投放' : '尽快展示广告消耗预算' }}
         </span>
       </a-form-item>
       <a-form-item label="排期" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
@@ -173,7 +183,7 @@
       <a-form-item label="场景广告位" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
         :wrapperCol="{ lg: { span: 17 }, sm: { span: 17 } }">
         <!-- v-decorator="['speed', { initialValue: '1' }]" -->
-        <a-radio-group buttonStyle="solid" :disabled="typeCopy=='edit'" v-decorator="['sceneId', { initialValue: 1 }]">
+        <a-radio-group buttonStyle="solid" :disabled="typeCopy=='edit'" v-model="allForm.sceneIdAll">
           <a-radio-button :value="1">优选广告位</a-radio-button>
           <a-radio-button :value="2">按场景选择广告位</a-radio-button>
         </a-radio-group>
@@ -182,7 +192,7 @@
 
       </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('sceneId') == 2">
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-if="allForm.sceneIdAll == 2">
         <a-checkbox-group :disabled="typeCopy=='edit'" :defaultValue="[7]" v-model="allForm.sceneId">
           <a-checkbox :value="7">信息流广告</a-checkbox>
           <a-checkbox :value="6">上下滑大屏广告</a-checkbox>
@@ -249,8 +259,8 @@
                           ? '不得低于1元,不得高于项目最高出价' + maxBid + '元'
                           : '不得低于1元,不得高于项目最高出价' + maxBid + '元'
                       }}</span>
-                       <span style="color:red;font-weight:700" v-else-if="item.bidType==2&&item.cpaBid&&item.cpaBid>1">
-                          行为出价大于1元,请注意!!!
+                      <span style="color:red;font-weight:700" v-else-if="item.bidType==2&&item.cpaBid&&item.cpaBid>1">
+                        行为出价大于1元,请注意!!!
                       </span>
                     </a-form-item>
                     <a-form-item label="深度转化出价" :labelCol="{ lg: { span: 6 }, sm: { span: 7 } }"
@@ -282,6 +292,17 @@
         确定
       </a-button>
     </template>
+    <a-modal v-model="visibleFail" title="错误信息" :footer="null">
+      <div v-if="visibleData">
+        失败条数:{{ visibleData.failCount }}
+        <div style="margin-top:20px">
+          <p v-for="(item, index) of visibleData.failInfo" :key="index">
+            <span>名称:{{ item.campaignName?item.campaignName:item.unitName }}</span><br />
+            <span>错误信息:{{ item.failMessage }}</span>
+          </p>
+        </div>
+      </div>
+    </a-modal>
   </a-modal>
 </template>
 
@@ -314,6 +335,8 @@
     },
     data() {
       return {
+        visibleFail: false,
+        visibleData: null,
         checkedTrue: false,
         nameValue: '',
         visible: false,
@@ -347,6 +370,7 @@
         campaignType: '2',
         maxBid: 0,
         allForm: {
+          sceneIdAll: 1,
           dayBudget: '0',
           time: '1',
           scheduleTime: '1',
@@ -356,7 +380,10 @@
           fail: [],
           success: [],
           sceneId: [7],
-          useAppMarket: false
+          useAppMarket: false,
+          appStore: ['huawei', 'oppo', 'vivo', 'xiaomi',
+            'meizu', 'smartisan'
+          ]
         },
         typeCopy: "edit",
         dataList: [],
@@ -429,7 +456,7 @@
           } else {
             this.allForm.group[index].showTipCheck = false
           }
-        } 
+        }
       },
       getScheduleTime(item) {
         this.allForm.scheduleTimeData = item
@@ -572,13 +599,18 @@
               ...res.result.target
             }
             //   dataJson.useAppMarket = dataJson.useAppMarket==0?false:true
-            dataJson.dayBudget = dataJson.dayBudget / 1000
-            dataJson.sceneId = JSON.parse(dataJson.sceneId)[0] == 1 ? 1 : 2
+
+            this.allForm.sceneIdAll = JSON.parse(dataJson.sceneId).filter(item => item == 1).length > 0 ? 1 : 2
             this.allForm.useAppMarket = dataJson.useAppMarket ? (dataJson.useAppMarket == 0 ? false : true) : false
-            this.allForm.sceneId = dataJson.sceneId == 1 ? [7] : JSON.parse(res.result.baseInfo
+            this.allForm.appStore = this.allForm.useAppMarket ? JSON.parse(dataJson.appStore) : ['huawei', 'oppo',
+              'vivo', 'xiaomi',
+              'meizu', 'smartisan'
+            ]
+            this.allForm.sceneId = this.allForm.sceneIdAll == 1 ? [7] : JSON.parse(res.result.baseInfo
               .sceneId)
             console.log(this.allForm.sceneId, 1111111)
             this.allForm.dayBudget = dataJson.dayBudget == 0 ? '0' : '1'
+            dataJson.dayBudget = dataJson.dayBudget / 1000
             this.allForm.time = dataJson.endTime ? '2' : '1'
             this.timeRange = [moment(dataJson.beginTime), moment(dataJson.endTime)]
             this.allForm.scheduleTime = dataJson.scheduleTime.indexOf('1') != -1 ? '2' : '1'
@@ -640,11 +672,29 @@
             this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
             this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
             this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
-
+            this.populationData.allForm.checkArr = this.populationData.allForm.appType == '2' ? JSON.parse(dataJson
+              .appIds) : []
             this.$nextTick(() => {
+              console.log(dataJson)
               this.form.setFieldsValue(pick(dataJson, ['appId', 'urlType', 'url', 'dayBudget', 'speed',
-                'showMode', 'sceneId'
+                'showMode'
               ]))
+              //   this.form.setFieldsValue({
+              //     appId: dataJson.appId
+              //   })
+              //   this.form.setFieldsValue({
+              //     dayBudget: dataJson.dayBudget
+              //   })
+              //   this.form.setFieldsValue({
+              //     speed: dataJson.speed
+              //   })
+              //   this.form.setFieldsValue({
+              //     showMode: dataJson.showMode
+              //   })
+              //   console.log(dataJson.sceneId)
+              //   this.form.setFieldsValue({
+              //     sceneId: dataJson.sceneId
+              //   })
             })
           }
         })
@@ -672,7 +722,7 @@
             })[0]
             var json = {
               ...values,
-              sceneId: values.sceneId == 1 ? [values.sceneId] : this.allForm.sceneId,
+              sceneId: this.allForm.sceneIdAll == 1 ? [this.allForm.sceneIdAll] : this.allForm.sceneId,
               dayBudget: values.dayBudget * 1000
             }
             var params = {
@@ -689,8 +739,12 @@
             }
             if (this.allForm.useAppMarket == true || this.allForm.useAppMarket == false) {
               params.useAppMarket = this.allForm.useAppMarket ? 1 : 0
+              if (this.allForm.useAppMarket == true) {
+                params.appStore = this.allForm.appStore
+              }
             }
-            if (this.showSite&&(this.getPlatForm(this.getData('appId'))=='1'||this.getPlatForm(this.getData('appId'))=='2')) {
+            if (this.showSite && (this.getPlatForm(this.getData('appId')) == '1' || this.getPlatForm(this.getData(
+                'appId')) == '2')) {
               params.appJson = {
                 isUpdate: true,
                 siteId: this.siteId
@@ -728,12 +782,19 @@
               params.groupArr = [groupArr]
               postAction('/kuaishou/batch/copyUnit', params).then(res => {
                 if (res.success) {
-                  var that = this
-                  setTimeout(() => {
-                    that.visible = false
-                    that.loading = false
-                    that.$emit('getList', localStorage.getItem('advertisingGroupKey'))
-                  }, 1000)
+                  if (res.result.failCount > 0) {
+                    this.visibleFail = true
+                    this.visibleData = res.result
+                    this.loading = false
+                  } else {
+                    var that = this
+                    setTimeout(() => {
+                      that.visible = false
+                      that.loading = false
+                      that.$emit('getList', localStorage.getItem('advertisingGroupKey'))
+                    }, 1000)
+                  }
+
                 } else {
                   this.$message.error(res.message)
                 }
@@ -842,9 +903,6 @@
           }
         })
       },
-      getData(className) {
-        return this.form.getFieldValue(className)
-      }
     },
     mounted: function () {
       this.getAppList()

+ 32 - 11
src/views/modules/kuaishouapp/account/editGroupNew.vue

@@ -77,6 +77,18 @@
           优先从系统应用商店下载
         </a-checkbox>
       </a-form-item>
+      <a-form-item label=" " :labelCol="{ lg: { span: 7}, sm: { span: 7 } }"
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 16 } }" class="else-label" v-if="allForm.useAppMarket">
+        请勾选投放应用已上架的应用商店(默认全选)
+        <a-checkbox-group v-model="allForm.appStore">
+          <a-checkbox value="huawei">华为</a-checkbox>
+          <a-checkbox value="oppo">OPPO</a-checkbox>
+          <a-checkbox value="vivo">VIVO</a-checkbox>
+          <a-checkbox value="xiaomi">小米</a-checkbox>
+          <a-checkbox value="meizu">魅族</a-checkbox>
+          <a-checkbox value="smartisan">锤子</a-checkbox>
+        </a-checkbox-group>
+      </a-form-item>
       <div style="text-align:center;font-size:16px;margin-bottom:10px">
         目标人群
       </div>
@@ -173,7 +185,7 @@
       <a-form-item label="场景广告位" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
         :wrapperCol="{ lg: { span: 17 }, sm: { span: 17 } }">
         <!-- v-decorator="['speed', { initialValue: '1' }]" -->
-        <a-radio-group buttonStyle="solid" v-decorator="['sceneId', { initialValue: 1 }]">
+        <a-radio-group buttonStyle="solid" v-model="allForm.sceneIdAll">
           <a-radio-button :value="1">优选广告位</a-radio-button>
           <a-radio-button :value="2">按场景选择广告位</a-radio-button>
         </a-radio-group>
@@ -182,7 +194,7 @@
 
       </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('sceneId') == 2">
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-if="allForm.sceneIdAll == 2">
         <a-checkbox-group :defaultValue="[7]" v-model="allForm.sceneId">
           <a-checkbox :value="7">信息流广告</a-checkbox>
           <a-checkbox :value="6">上下滑大屏广告</a-checkbox>
@@ -369,6 +381,7 @@
         campaignType: '2',
         maxBid: 0,
         allForm: {
+          sceneIdAll: 1,
           dayBudget: '0',
           time: '1',
           scheduleTime: '1',
@@ -378,7 +391,10 @@
           fail: [],
           success: [],
           sceneId: [7],
-          useAppMarket: false
+          useAppMarket: false,
+          appStore: ['huawei', 'oppo', 'vivo', 'xiaomi',
+            'meizu', 'smartisan'
+          ]
         },
         typeCopy: "typeOne",
         dataList: [],
@@ -603,9 +619,13 @@
             }
             //   dataJson.useAppMarket = dataJson.useAppMarket==0?false:true
             dataJson.dayBudget = dataJson.dayBudget / 1000
-            dataJson.sceneId = JSON.parse(dataJson.sceneId)[0] == 1 ? 1 : 2
+            this.allForm.sceneIdAll = JSON.parse(dataJson.sceneId).filter(item => item == 1).length > 0 ? 1 : 2
             this.allForm.useAppMarket = dataJson.useAppMarket ? (dataJson.useAppMarket == 0 ? false : true) : false
-            this.allForm.sceneId = dataJson.sceneId == 1 ? [7] : JSON.parse(res.result.baseInfo
+            this.allForm.appStore = this.allForm.useAppMarket ? JSON.parse(dataJson.appStore) : ['huawei', 'oppo',
+              'vivo', 'xiaomi',
+              'meizu', 'smartisan'
+            ]
+            this.allForm.sceneId = this.allForm.sceneIdAll == 1 ? [7] : JSON.parse(res.result.baseInfo
               .sceneId)
             this.allForm.dayBudget = dataJson.dayBudget == 0 ? '0' : '1'
             this.allForm.time = dataJson.endTime ? '2' : '1'
@@ -669,10 +689,11 @@
             this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
             this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
             this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
-
+            this.populationData.allForm.checkArr = this.populationData.allForm.appType == '2' ? JSON.parse(dataJson
+              .appIds) : []
             this.$nextTick(() => {
               this.form.setFieldsValue(pick(dataJson, ['appId', 'urlType', 'url', 'dayBudget', 'speed',
-                'showMode', 'sceneId'
+                'showMode'
               ]))
             })
           }
@@ -692,7 +713,7 @@
 
             var json = {
               ...values,
-              sceneId: values.sceneId == 1 ? [values.sceneId] : this.allForm.sceneId,
+              sceneId: this.allForm.sceneIdAll == 1 ? [this.allForm.sceneIdAll] : this.allForm.sceneId,
               dayBudget: values.dayBudget * 1000
             }
             var params = {
@@ -709,6 +730,9 @@
             }
             if (this.allForm.useAppMarket == true || this.allForm.useAppMarket == false) {
               params.useAppMarket = this.allForm.useAppMarket ? 1 : 0
+              if (this.allForm.useAppMarket == true) {
+                params.appStore = this.allForm.appStore
+              }
             }
             if (this.showSite && (this.getPlatForm(this.getData('appId')) == '1' || this.getPlatForm(this.getData(
                 'appId')) == '2')) {
@@ -917,9 +941,6 @@
           }
         })
       },
-      getData(className) {
-        return this.form.getFieldValue(className)
-      }
     },
     mounted: function () {
       this.getAppList()

+ 2 - 1
src/views/modules/kuaishouapp/account/originality.vue

@@ -326,7 +326,6 @@
           }
         })
         getAction('/kuaishou/batch/getVideoDetail', {
-          accountId: localStorage.getItem('accountId'),
           photoId: item.photoId
         }).then(res => {
           if (res.success) {
@@ -578,6 +577,8 @@
     computed: {},
     activated() {
       this.titleKey = localStorage.getItem('originalityKey')
+      this.creativeIdTwo = ""
+      this.creativeName = ""
       console.log(this.$route.params)
       this.title = JSON.parse(localStorage.getItem('originality')).map(item => {
         return {

+ 27 - 8
src/views/modules/kuaishouapp/account/stepForm/Step2.vue

@@ -58,7 +58,8 @@
       </a-form-item>
 
       <a-form-item label="转化目标" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
-        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" v-if="campaignType == 2||campaignType == 4||campaignType == 5">
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+        v-if="campaignType == 2||campaignType == 4||campaignType == 5">
         <span v-if="convertId&&!convert" style="display:block;font-size:16px">已选择转化目标: {{convertId.label}}</span>
         <a-button type="primary" @click="showConvert">{{convertId?'更换转化目标':'选择转化目标'}}</a-button>
       </a-form-item>
@@ -104,6 +105,19 @@
           优先从系统应用商店下载
         </a-checkbox>
       </a-form-item>
+      <a-form-item label=" " :labelCol="{ lg: { span: 7}, sm: { span: 7 } }"
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 16 } }" class="else-label" v-if="getData('useAppMarket')">
+        请勾选投放应用已上架的应用商店(默认全选)
+        <a-checkbox-group v-model="allForm.appStore">
+          <a-checkbox value="huawei">华为</a-checkbox>
+          <a-checkbox value="oppo">OPPO</a-checkbox>
+          <a-checkbox value="vivo">VIVO</a-checkbox>
+          <a-checkbox value="xiaomi">小米</a-checkbox>
+          <a-checkbox value="meizu">魅族</a-checkbox>
+          <a-checkbox value="smartisan">锤子</a-checkbox>
+        </a-checkbox-group>
+      </a-form-item>
+
       <div style="text-align:center;font-size:16px;margin-bottom:10px">
         目标人群
       </div>
@@ -266,7 +280,8 @@
                       <a-input-number v-model="item.bid" @change="showTip(index)"
                         :style="{ borderColor: item.showTipCheck ? 'red' : '#d9d9d9' }" style="width:100%">
                       </a-input-number>
-                      <span style="color:red" v-if="item.showTipCheck&&item.bidType==180">不得低于0.2元,不得高于项目最高出价{{ maxBid }}元</span>
+                      <span style="color:red"
+                        v-if="item.showTipCheck&&item.bidType==180">不得低于0.2元,不得高于项目最高出价{{ maxBid }}元</span>
                     </a-form-item>
                     <a-form-item label="目标成本" :labelCol="{ lg: { span: 6 }, sm: { span: 7 } }"
                       :wrapperCol="{ lg: { span: 18 }, sm: { span: 17 } }" v-else>
@@ -279,7 +294,7 @@
                           : '不得低于1元,不得高于项目最高出价' + maxBid + '元'
                       }}</span>
                       <span style="color:red;font-weight:700" v-else-if="item.bidType==2&&item.cpaBid&&item.cpaBid>1">
-                          行为出价大于1元,请注意!!!     
+                        行为出价大于1元,请注意!!!
                       </span>
                     </a-form-item>
                     <a-form-item label="深度转化出价" :labelCol="{ lg: { span: 6 }, sm: { span: 7 } }"
@@ -517,7 +532,8 @@
           groupTypeData: null,
           fail: [],
           success: [],
-          sceneId: [7]
+          sceneId: [7],
+          appStore: ['huawei', 'oppo', 'vivo', 'xiaomi', 'meizu', 'smartisan']
         },
         convertType: '1',
         dataList: []
@@ -594,7 +610,7 @@
       },
       addGroup() {
         this.allForm.group.push({
-          bidType: this.campaignType == '2' && this.allForm.groupTypeData.isActivate == '1'?180:2,
+          bidType: this.campaignType == '2' && this.allForm.groupTypeData.isActivate == '1' ? 180 : 2,
           bid: '',
           cpaBid: '',
           showTipCheck: false,
@@ -649,13 +665,13 @@
           } else {
             this.allForm.group[index].showTipCheck = false
           }
-        } else  {
+        } else {
           if (this.allForm.group[index].cpaBid < 1 || this.allForm.group[index].cpaBid > this.maxBid) {
             this.allForm.group[index].showTipCheck = true
           } else {
             this.allForm.group[index].showTipCheck = false
           }
-        } 
+        }
       },
       getScheduleTime(item) {
         this.allForm.scheduleTimeData = item
@@ -826,6 +842,9 @@
             }
             if (values.useAppMarket == true || values.useAppMarket == false) {
               params.useAppMarket = values.useAppMarket ? 1 : 0
+              if (values.useAppMarket == true) {
+                params.appStore = this.allForm.appStore
+              }
             }
             console.log(params)
             if (this.checkedTrue) {
@@ -853,7 +872,7 @@
                     })
                   )
                   localStorage.setItem('pans', dataJson)
-                  localStorage.setItem('appId',this.getData('appId'))
+                  localStorage.setItem('appId', this.getData('appId'))
                 }
               } else {
                 this.loading = false

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

@@ -29,6 +29,15 @@
       z-index: 100;
     }
   }
+
+  .onlny-click-track {
+    .ant-list-item-content {
+      width: 60%;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+  }
 </style>
 <style scoped lang="scss">
   .actor-photo-list {
@@ -170,8 +179,15 @@
                         </a-form-item>
                         <a-form-item label="广告语">
                           <a @click="showTitle(index,bestIndex)">推荐广告语</a>
+
+
                           <a-textarea class="rending" placeholder="请输入广告语" v-model.trim="item.description"
                             :autosize="{ minRows: 2, maxRows: 6 }"></a-textarea>
+                          <span v-if="item.description.length>30" style="color:red">广告语长度不能超过30个字符</span>
+                          <br>
+                          <a @click="cunTitle(index,bestIndex)">收藏</a>
+                          <a @click="showCunTitle(index,bestIndex)" style="margin-left:10px">收藏列表</a>
+                          <br>
                           <a-tag v-for="(itemTag,indexTag) of tags" :key="indexTag"
                             @click="getChange(item, itemTag, index)">{{itemTag.name}}</a-tag>
                         </a-form-item>
@@ -226,6 +242,8 @@
                 }
               ]" placeholder="请输入第三方检测链接">
             </a-input>
+            <a v-if="getData('clickTrackUrl')" @click="clickTrackUrlShow=true" style="margin-right:10px">收藏监测链接</a>
+            <a @click="getClickTrackUrlList()">监测链接列表</a>
           </a-form-item>
         </a-form>
       </a-tab-pane>
@@ -289,8 +307,8 @@
         </a-button>
       </template>
       <a-form-item label="" class="add-image-material">
-        <uploadFile v-if="addVideoVisible" :checkFile="file" :value.sync="urlList.url" @overUpload="overUpload" :fileCount="10"
-          uploadType="video" :multiple="false" />
+        <uploadFile v-if="addVideoVisible" :checkFile="file" :value.sync="urlList.url" @overUpload="overUpload"
+          :fileCount="10" uploadType="video" :multiple="false" />
 
         <!-- <upload-to-ali v-model="urlList.url" :customDomain="customDomain" preview :region="region" :bucket="bucket"
           :accept="acceptVideo" :max="10" :size="1024000" :accessKeyId="accessKeyId" :accessKeySecret="accessKeySecret"
@@ -397,7 +415,62 @@
             <a-list size="large" bordered :dataSource="title">
               <a-list-item slot="renderItem" slot-scope="item">
                 <a slot="actions" @click="okTitle(item)">选择</a>
-                {{ item }}</a-list-item>
+
+
+                {{ item }}
+              </a-list-item>
+            </a-list>
+          </a-card>
+        </a-col>
+      </a-row>
+    </a-modal>
+    <a-modal title="收藏标题" v-model="cunTitleVisible" :width="1000" :footer="null">
+      <a-row :gutter="10">
+        <a-col :sm="24" style="margin-bottom: 20px;z-index: 10">
+          <a-card class="search-box" style="over-flow:auto">
+            <a-list size="large" bordered :dataSource="cunTitleList">
+              <a-list-item slot="renderItem" slot-scope="item">
+
+                <div slot="actions">
+                  <a @click="okTitleCun(item)">选择</a>
+                  <a-divider type="vertical" />
+                  <a @click="removeTitleCun(item)">删除</a>
+                </div>
+                {{ item.title }}
+              </a-list-item>
+            </a-list>
+          </a-card>
+        </a-col>
+      </a-row>
+    </a-modal>
+    <a-modal title="监测链接名称" v-model="clickTrackUrlShow">
+      <template slot="footer">
+        <a-button key="submit" :disabled="trackUrlName==''&&(!showTrackUrlNameElse)" type="primary"
+          @click="clickTrackUrlOk">
+          确定
+        </a-button>
+      </template>
+      <a-input placeholder="请输入监测链接名称" v-model="trackUrlName" @blur="changeTrackUrlName" style="width: 100%" />
+      <span style="color:red" v-if="!showTrackUrlNameElse">名称重复</span>
+
+    </a-modal>
+    <a-modal title="监测链接列表" v-model="clickTrackUrlList" :width="1000" :footer="null">
+      <a-row :gutter="10" class="onlny-click-track">
+        <a-col :sm="24" style="margin-bottom: 20px;z-index: 10">
+          <a-card class="search-box" style="over-flow:auto">
+            <a-list size="large" bordered :dataSource="trackUrlList">
+              <a-list-item slot="renderItem" slot-scope="item" :title="item.trackUrl" style="line-height:50px">
+
+                <div slot="actions">
+                  <a @click="okClickTrackUrl(item)">选择</a>
+                  <a-divider type="vertical" />
+                  <a @click="removeClickTrackUrl(item)">删除</a>
+                </div>
+
+
+                {{ item.trackName }}
+                <a-input v-model="item.trackUrl" readonly style="margin:10px"></a-input>
+              </a-list-item>
             </a-list>
           </a-card>
         </a-col>
@@ -409,7 +482,8 @@
 <script>
   import {
     getAction,
-    postAction
+    postAction,
+    deleteAction
   } from '@/api/manage'
   import {
     mapGetters
@@ -425,7 +499,6 @@
   import checkMatemal from './stepModule/checkMatemal'
   import BMF from 'browser-md5-file'
   import uploadFile from '@/components/uploadFile.vue'
-
   let nowIndex = 0
   let bestIndex = 0
   let showRemove = false
@@ -439,8 +512,15 @@
     },
     data() {
       return {
+        showTrackUrlNameElse: true,
+        clickTrackUrlShow: false,
+        clickTrackUrlList: false,
+        trackUrlList: [],
+        trackUrlName: "",
         showSite: true,
         titleVisible: false,
+        cunTitleVisible: false,
+        cunTitleList: [],
         options: [],
         data: [],
         value: '',
@@ -559,6 +639,64 @@
       }
     },
     methods: {
+      ...mapGetters(["nickname", "avatar", "userInfo"]),
+      changeTrackUrlName() {
+        var params = {}
+        params.accountId = localStorage.getItem('accountId')
+        params.userId = this.userInfo().id
+        params.trackName = this.trackUrlName
+        getAction('/kuaishou/kuaiShouTrackUrlCollection/checkTrackName', params).then(res => {
+          this.showTrackUrlNameElse = res.result
+
+        })
+      },
+      clickTrackUrlOk() {
+        var params = {}
+        params.accountId = localStorage.getItem('accountId')
+        params.userId = this.userInfo().id
+        params.trackName = this.trackUrlName
+        params.trackUrl = this.getData('clickTrackUrl')
+        postAction('/kuaishou/kuaiShouTrackUrlCollection/add', params).then(res => {
+          if (res.success) {
+            this.clickTrackUrlShow = false
+            this.trackUrlName = ""
+            this.$message.success('添加成功')
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+      },
+      okClickTrackUrl(item) {
+        this.clickTrackUrlList = false
+        this.form.setFieldsValue({
+          clickTrackUrl: item.trackUrl
+        })
+      },
+      removeClickTrackUrl(item) {
+        deleteAction('/kuaishou/kuaiShouTrackUrlCollection/delete', {
+          id: item.id
+        }).then(res => {
+          if (res.success) {
+            this.getClickTrackUrlList()
+          }
+        })
+      },
+      getClickTrackUrlList() {
+        this.clickTrackUrlList = true
+
+        var params = {}
+        params.accountId = localStorage.getItem('accountId')
+        params.userId = this.userInfo().id
+        params.pageNo = 1
+        params.pageSize = 500
+        getAction('/kuaishou/kuaiShouTrackUrlCollection/list', params).then(res => {
+          if (res.success) {
+            this.trackUrlList = res.result.records
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+      },
       showTitle(index, bestIndex) {
         nowIndex = index
         bestIndex = bestIndex
@@ -572,6 +710,57 @@
         this.value = ""
         this.title = []
       },
+      cunTitle(nowIndex, lastIndex) {
+        if (this.pans[lastIndex].list[nowIndex].description == '') {
+          this.$message.error('请填写广告语后再进行收藏')
+        } else {
+          var params = {}
+          params.accountId = localStorage.getItem('accountId')
+          params.userId = this.userInfo().id
+          params.title = this.pans[lastIndex].list[nowIndex].description
+          postAction('/kuaishou/kuaiShouTitleCollection/add', params).then(res => {
+            if (res.success) {
+              this.$message.success('收藏成功')
+            } else {
+              this.$message.error(res.message)
+            }
+          })
+        }
+
+      },
+      showCunTitle(index, bestIndex) {
+        nowIndex = index
+        bestIndex = bestIndex
+        this.cunTitleVisible = true
+        this.getCunTitle()
+      },
+      getCunTitle() {
+        var params = {}
+        params.accountId = localStorage.getItem('accountId')
+        params.userId = this.userInfo().id
+        params.pageNo = 1
+        params.pageSize = 500
+        getAction('/kuaishou/kuaiShouTitleCollection/list', params).then(res => {
+          if (res.success) {
+            console.log(res.result)
+            this.cunTitleList = res.result.records
+          }
+        })
+      },
+      removeTitleCun(item) {
+        deleteAction('/kuaishou/kuaiShouTitleCollection/delete', {
+          id: item.id
+        }).then(res => {
+          if (res.success) {
+            this.getCunTitle()
+          }
+        })
+      },
+      okTitleCun(item) {
+        this.pans[bestIndex].list[nowIndex].description = item.title
+        this.cunTitleVisible = false;
+        this.cunTitleList = []
+      },
       searchQuery() {
         // /ctop/creativeTitle/titleSuggestion
         console.log(this.value)
@@ -704,7 +893,8 @@
             }
           })
           getAction('/ctop/MaterialImageInfo/list', {
-            videoId: item.video.signature
+            videoId: item.video.signature,
+            status: 1
           }).then(res => {
             // console.log(res)
             if (res.success) {
@@ -1274,7 +1464,8 @@
           }
         })
         getAction('/ctop/MaterialImageInfo/list', {
-          videoId: this.checkVideo[0].signature
+          videoId: this.checkVideo[0].signature,
+          status: 1
         }).then(res => {
           // console.log(res)
           if (res.success) {

+ 12 - 7
src/views/modules/kuaishouapp/account/stepForm/stepModule/targetedPopulation.vue

@@ -331,7 +331,7 @@ li:hover {
       label="APP行为"
       :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
       :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
-      v-if="allForm.platform_os == 1"
+      v-if="allForm.platform_os == 1&&allForm.platform_os"
     >
       <a-radio-group buttonStyle="solid" v-model="allForm.appType" @change="getAppType">
         <a-radio-button value="0">不限</a-radio-button>
@@ -398,7 +398,7 @@ li:hover {
           <a-button @click="clearAll">清空</a-button>
           <br />
           <a-tag v-for="item of checkArr" :key="item" closable :afterClose="() => log(item)">
-            {{ showAppName(item) }}
+            {{ showAppName(item)?showAppName(item):item }}
           </a-tag>
         </div>
       </div>
@@ -718,7 +718,7 @@ export default {
           this.allForm.noAreaBreak = n.noAreaBreak == '0' ? false : true
           this.selectedRowKeys = n.population ? n.population : []
           this.selectedRowKeysNo = n.excludePopulation ? n.excludePopulation : []
-
+          this.checkArr = n.allForm.checkArr
           this.targeted = n.excludePopulation ? (n.population ? '4' : '3') : '2'
           this.people = n.excludePopulation ? '3' : n.population ? '3' : '2'
           this.getPeople().then(res => {
@@ -993,10 +993,15 @@ export default {
       }
     },
     showAppName(appId) {
-      var data = this.checkOptions.filter(item => {
-        return item.appId == appId
-      })
-      return data[0].appName
+        if(this.checkOptions.length>0){
+            var data = this.checkOptions.filter(item => {
+                return item.appId == appId
+            })
+            return data[0].appName
+        }else{
+            return null
+        }
+     
     },
     log(appId) {
       var index = this.checkArr.findIndex(item => item === appId)

+ 1 - 1
src/views/modules/prop/modules/ActorModal.vue

@@ -9,7 +9,7 @@
           <a-input placeholder="请输入道具名称" v-decorator="['name', validatorRules.name ]" />
         </a-form-item>
         <a-form-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <uploadFile :value.sync="imageUrl" @overUpload="overUpload" :fileCount="10"
+          <uploadFile  v-if="visible" :value.sync="imageUrl" :fileCount="10"
             uploadType="image" />
           <!-- <upload-to-ali v-model="imageUrl" :customDomain="customDomain" multiple preview :region="region"
             :bucket="bucket" :accept="acceptImage" :max="10" :size="1024000" :accessKeyId="accessKeyId"

+ 2 - 2
src/views/modules/yard/modules/YardModal.vue

@@ -28,7 +28,7 @@
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
         >
-        <uploadFile :value.sync="imageUrl" :fileCount="1" uploadType="image" :multiple="false" />
+        <uploadFile v-if="visible" :value.sync="imageUrl" :fileCount="10" uploadType="image" />
           <!-- <upload-to-ali
             v-model="imageUrl"
             :customDomain="customDomain"
@@ -49,7 +49,7 @@
           :wrapperCol="wrapperCol"
         >
 
-         <uploadFile :value.sync="videoUrl" :fileCount="1" uploadType="video" :multiple="false" />
+         <uploadFile  v-if="visible" :value.sync="videoUrl" :fileCount="1" uploadType="video" />
           <!-- <upload-to-ali
             v-model="videoUrl"
             :customDomain="customDomain"

+ 1 - 1
src/views/ureport/UReportFileBindUserList.vue

@@ -97,7 +97,7 @@ export default {
       if (process.env.NODE_ENV === 'development') {
         url = 'http://39.106.184.70:8080/jeecg-boot/ureport/preview?_u=mysql:' + item.fileName
       } else if (process.env.NODE_ENV === 'production') {
-        url = 'http://api.tjyourong.com.cn/jeecg-boot/ureport/preview?_u=mysql:' + item.fileName
+        url = 'http://139.186.29.76:8804/jeecg-boot/ureport/preview?_u=mysql:' + item.fileName
       }
       window.open(url, '_blank')
     }

+ 2 - 2
src/views/ureport/UReportFileList.vue

@@ -191,7 +191,7 @@ export default {
       if (process.env.NODE_ENV === 'development') {
         url = 'http://api.tjyourong.com.cn/jeecg-boot/ureport/designer?_u=mysql:' + item.name
       } else if (process.env.NODE_ENV === 'production') {
-        url = 'http://api.tjyourong.com.cn/jeecg-boot/ureport/designer?_u=mysql:' + item.name
+        url = 'http://139.186.29.76:8804/jeecg-boot/ureport/designer?_u=mysql:' + item.name
       }
       window.open(url, '_blank')
     },
@@ -200,7 +200,7 @@ export default {
       if (process.env.NODE_ENV === 'development') {
         url = 'http://api.tjyourong.com.cn/jeecg-boot/ureport/designer'
       } else if (process.env.NODE_ENV === 'production') {
-        url = 'http://api.tjyourong.com.cn/jeecg-boot/ureport/designer'
+        url = 'http://139.186.29.76:8804/jeecg-boot/ureport/designer'
       }
       window.open(url, '_blank')
     },

+ 7 - 12
vue.config.js

@@ -55,30 +55,25 @@ module.exports = {
   devServer: {
     port: 3000,
     proxy: {
-      /* '/api': {
-         target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', //mock API接口系统
-         ws: false,
-         changeOrigin: true,
-         pathRewrite: {
-           '/jeecg-boot': ''  //默认所有请求都加了jeecg-boot前缀,需要去掉
-         }
-       },*/
       '/jeecg-boot': {
-       
         // target: 'http://192.168.1.90:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
-       
         // target: 'http://192.168.1.72:8088', //请求本地 需要jeecg-boot后台项目  英豪
-       
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
         // target: 'http://192.168.1.94:8804', //请求本地 需要jeecg-boot后台项目  孙震
         target: 'http://192.168.1.51:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.165:8848', //请求本地 需要jeecg-boot后台项目  毕洁泉
+<<<<<<< HEAD
         // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目 
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目 
         // target: 'http://192.168.1.251:8088', //请求本地 需要jeecg-boot后台项目 
         // target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目 
+=======
+        // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://192.168.1.251:8088', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
+>>>>>>> 70a50f0c31548bd676fb38afe4a43a220737f9e6
 
-        
 
         ws: false,
         changeOrigin: true,