Browse Source

头条配置 页面 开发

jiayufei 4 năm trước cách đây
mục cha
commit
a5294fd665

+ 1 - 1
src/utils/request.js

@@ -100,7 +100,7 @@ service.interceptors.request.use(config => {
       ...config.params
     }
   }
-  return config 
+  return config
 }, (error) => {
   return Promise.reject(error)
 })

+ 20 - 13
src/views/modules/account-config/account-config.less

@@ -50,6 +50,7 @@
             left: 0;
             height: 100%;
             .img-flex-url {
+                width: 128px;
                 display: flex;
                 align-items: center;
                 justify-content: center;
@@ -59,19 +60,19 @@
                     max-height: 100%;
                 }
             }
-        }
-        .cover-img-div {
-            position: absolute;
-            top: 0;
-            left: 0;
-            width: 100%;
-            height: 100%;
-            line-height: 120px;;
-            background: rgba(10, 10, 10, 0.5);
-            z-index: 10000;
-            .delete-icon-class {
-                font-size: 20px;
-                color: #1890ff;
+            .cover-img-div {
+                position: absolute;
+                top: 0;
+                left: 0;
+                width: 100%;
+                height: 100%;
+                line-height: 120px;;
+                background: rgba(10, 10, 10, 0.5);
+                z-index: 10000;
+                .delete-icon-class {
+                    font-size: 20px;
+                    color: #1890ff;
+                }
             }
         }
         /deep/ .ant-form-item-control-wrapper {
@@ -115,6 +116,12 @@
                     margin-bottom: 15px;
                 }
             }
+            .examin-form-icon {
+                font-size: 18px;
+                color: #1890ff;
+                cursor: pointer;
+                margin-left: 10px;
+            }
         }
         .position-radio-change {
             margin-bottom: 10px;

+ 309 - 160
src/views/modules/account-config/components/configuration-modal.vue

@@ -19,46 +19,42 @@
                 <a-form-model-item label="广告账户">
                     <acount-search class="acount-search-class" :appId.sync="configForm.acountId" :multiple="false"></acount-search>
                 </a-form-model-item>
+                <a-form-model-item label="dp链接范围">
+                    <a-input class="common-input" v-model="configForm.adverName" placeholder="请输入"/>
+                    <span>~</span>
+                    <a-input class="common-input" v-model="configForm.adverName" placeholder="请输入"/>
+                </a-form-model-item>
                 <a-form-model-item label="预算方式">
-                    <a-radio-group default-value="a" v-model="configForm.budget" button-style="solid">
-                        <a-radio-button value="a">不限于算</a-radio-button>
-                        <a-radio-button value="b">指定预算</a-radio-button>
+                    <a-radio-group v-model="configForm.budget" button-style="solid">
+                        <a-radio-button value="unlimited">不限于算</a-radio-button>
+                        <a-radio-button value="designated">指定预算</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
-                <a-form-model-item ref="name" label="账户日预算" prop="name">
-                    <a-input
-                        class="common-input"
-                        v-model="configForm.name"
-                        @blur="
-                        () => {
-                            $refs.name.onFieldBlur();
-                        }
-                        "
-                        placeholder="请输入账户日预算"
-                    /> 元
+                <a-form-model-item v-if="configForm.budget === 'designated'" ref="name" label="账户日预算">
+                    <a-input-number v-model="configForm.name" :min="1000" :max="9999999.99" :step="0.01"/> 元
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">广告组信息</p>
                 <a-form-model-item label="推广目标">
-                    <a-radio-group default-value="a" v-model="configForm.target" button-style="solid">
-                        <a-radio-button value="a">应用</a-radio-button>
-                        <a-radio-button value="b">销售线索收集</a-radio-button>
-                        <a-radio-button value="c">电商店铺推广</a-radio-button>
+                    <a-radio-group v-model="configForm.target" button-style="solid">
+                        <a-radio-button value="APP">应用</a-radio-button>
+                        <a-radio-button value="LINK" disabled>销售线索收集</a-radio-button>
+                        <a-radio-button value="SHOP" disabled>电商店铺推广</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="广告类型">
-                    <a-radio-group default-value="a" v-model="configForm.adverType" button-style="solid">
-                        <a-radio-button value="a">信息流广告</a-radio-button>
-                        <a-radio-button value="b">搜索广告</a-radio-button>
+                    <a-radio-group v-model="configForm.adverType" button-style="solid">
+                        <a-radio-button value="information_flow">信息流广告</a-radio-button>
+                        <a-radio-button value="search_flow">搜索广告</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">基础信息</p>
                 <a-form-model-item label="广告组名称" prop="adverName">
-                    <a-input class="common-input" v-model="configForm.adverName" placeholder="请输入广告组名称"/>
+                    <a-input class="common-input-long" v-model="configForm.adverName" placeholder="请输入广告组名称"/>
                 </a-form-model-item>
-                <a-form-model-item label="广告计划名称">
-                    <a-input class="common-input" v-model="configForm.adverPlaneName" placeholder="请输入广告计划名称"/>
+                <a-form-model-item label="广告计划名称" prop="adverPlaneName">
+                    <a-input class="common-input-long" v-model="configForm.adverPlaneName" placeholder="请输入广告计划名称"/>
                 </a-form-model-item>
                 <a-form-model-item label="创建数量">
                     <span class="advers-title-class">广告组数量</span>
@@ -76,36 +72,36 @@
                 <p class="form-line"></p>
                 <p class="rock-title">投放内容</p>
                 <a-form-model-item label="投放目标">
-                    <a-radio-group default-value="a" v-model="configForm.launchTarget" button-style="solid">
-                        <a-radio-button value="a">转量化</a-radio-button>
-                        <a-radio-button value="b">点击量</a-radio-button>
-                        <a-radio-button value="b">展示量</a-radio-button>
+                    <a-radio-group v-model="configForm.launchTarget" button-style="solid">
+                        <a-radio-button value="OCPM">转量化</a-radio-button>
+                        <a-radio-button value="CPC">点击量</a-radio-button>
+                        <a-radio-button value="CPM">展示量</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="下载方式">
-                    <a-radio-group default-value="a" v-model="configForm.downloadMethod" button-style="solid">
-                        <a-radio-button value="a">下载链接</a-radio-button>
-                        <a-radio-button value="b">落地页</a-radio-button>
+                    <a-radio-group v-model="configForm.downloadMethod" button-style="solid">
+                        <a-radio-button value="DOWNLOAD_URL">下载链接</a-radio-button>
+                        <a-radio-button value="EXTERNAL_URL">落地页</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.downloadMethod === 'b'" label="落地页链接">
+                <a-form-model-item v-if="configForm.downloadMethod === 'EXTERNAL_URL'" label="落地页链接">
                     <a-input class="common-input-long" v-model="configForm.landLink" placeholder="请输入落地页链接"/>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.downloadMethod === 'b'" label="直达链接内容">
+                <a-form-model-item v-if="configForm.downloadMethod === 'EXTERNAL_URL'" label="直达链接内容">
                     <a-input class="common-input-long" v-model="configForm.accessLinkContent" placeholder="请输入直达链接内容"/>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.downloadMethod === 'a'" label="下载链接">
+                <a-form-model-item v-if="configForm.downloadMethod === 'DOWNLOAD_URL'" label="下载链接">
                     <a-input class="common-input-long" v-model="configForm.downloadLink" placeholder="请输入下载链接" @change="handleDownloadLink"/>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.downloadMethod === 'a'" label="应用包名">
+                <a-form-model-item v-if="configForm.downloadMethod === 'DOWNLOAD_URL'" label="应用包名">
                     <a-input class="common-input-long" v-model="configForm.applicationName" placeholder="请输入应用包名"/>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">优化目标</p>
                 <a-form-model-item label="转化跟踪方式">
                     <a-select class="common-input-long" v-model="configForm.trackMode" placeholder="请选择">
-                        <a-select-option value="shanghai">Zone one</a-select-option>
-                        <a-select-option value="beijing">Zone two</a-select-option>
+                        <a-select-option value="shanghai">跟踪线索</a-select-option>
+                        <a-select-option value="beijing">跟踪应用</a-select-option>
                     </a-select>
                 </a-form-model-item>
                 <a-form-model-item label="优化目标">
@@ -117,7 +113,7 @@
                 <p class="form-line"></p>
                 <p class="rock-title">设置投放位置</p>
                 <a-form-model-item label="广告位置">
-                    <a-radio-group default-value="a" v-model="configForm.adverPosition" button-style="solid">
+                    <a-radio-group v-model="configForm.adverPosition" button-style="solid">
                         <a-radio-button value="a">系统优选广告位</a-radio-button>
                         <a-radio-button value="b">按媒体指定位置</a-radio-button>
                         <a-radio-button value="c">按场景指定位置</a-radio-button>
@@ -128,32 +124,32 @@
                     <div v-if="configForm.adverPosition === 'c'" class="position-radio-change">
                         <p>位置选择</p>
                         <a-radio-group v-model="configForm.radioChangeValue">
-                            <a-radio :style="radioStyle" :value="1">沉浸式竖版视频场景</a-radio>
-                            <a-radio :style="radioStyle" :value="2">信息流场景</a-radio>
-                            <a-radio :style="radioStyle" :value="3">视频后贴和尾帧场景</a-radio>
+                            <a-radio :style="radioStyle" value="VIDEO_SCENE">沉浸式竖版视频场景</a-radio>
+                            <a-radio :style="radioStyle" value="FEED_SCENE">信息流场景</a-radio>
+                            <a-radio :style="radioStyle" value="TAIL_SCENE">视频后贴和尾帧场景</a-radio>
                         </a-radio-group>
                     </div>
                     <div v-if="configForm.adverPosition === 'b'" class="position-radio-change">
                         <p>位置选择</p>
                         <a-checkbox-group v-model="configForm.checkboxChangeValue">
-                            <a-checkbox :style="radioStyle" :value="1">今日头条</a-checkbox>
-                            <a-checkbox :style="radioStyle" :value="2">西瓜视频</a-checkbox>
-                            <a-checkbox :style="radioStyle" :value="3">抖音火山版</a-checkbox>
-                            <a-checkbox :style="radioStyle" :value="4">抖音短视频</a-checkbox>
-                            <a-checkbox :style="radioStyle" :value="5">穿山甲</a-checkbox>
+                            <a-checkbox :style="radioStyle" value="INVENTORY_FEED">今日头条</a-checkbox>
+                            <a-checkbox :style="radioStyle" value="INVENTORY_VIDEO_FEED">西瓜视频</a-checkbox>
+                            <a-checkbox :style="radioStyle" value="INVENTORY_HOTSOON_FEED">抖音火山版</a-checkbox>
+                            <a-checkbox :style="radioStyle" value="INVENTORY_AWEME_FEED">抖音短视频</a-checkbox>
+                            <a-checkbox :style="radioStyle" value="INVENTORY_UNION_SLOT">穿山甲</a-checkbox>
                         </a-checkbox-group>
                     </div>
                 </div>
                 <a-form-model-item label="搜索快投">
-                    <a-radio-group v-model="configForm.searchQuick" button-style="solid">
-                        <a-radio-button value="a">不启用</a-radio-button>
-                        <a-radio-button value="b">启用</a-radio-button>
+                    <a-radio-group v-model="configForm.feed_delivery_search" button-style="solid">
+                        <a-radio-button value="DISABLED">不启用</a-radio-button>
+                        <a-radio-button value="HAS_OPEN">启用</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">用户定向--新建定向</p>
                 <a-form-model-item label="地域">
-                    <a-radio-group v-model="configForm.areaDirect" button-style="solid">
+                    <a-radio-group v-model="configForm.REGION" button-style="solid">
                         <a-radio-button value="buxian">不限</a-radio-button>
                         <a-radio-button value="a">按省市</a-radio-button>
                         <a-radio-button value="b">按区县</a-radio-button>
@@ -161,20 +157,20 @@
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="性别">
-                    <a-radio-group v-model="configForm.genderDirect" button-style="solid">
-                        <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a">男</a-radio-button>
-                        <a-radio-button value="b">女</a-radio-button>
+                    <a-radio-group v-model="configForm.GENDER" button-style="solid">
+                        <a-radio-button value="NONE">不限</a-radio-button>
+                        <a-radio-button value="GENDER_MALE">男</a-radio-button>
+                        <a-radio-button value="GENDER_FEMALE">女</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="年龄">
-                    <a-radio-group v-model="configForm.ageDirect" button-style="solid">
+                    <a-radio-group v-model="configForm.AGE" button-style="solid">
                         <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a">18-23</a-radio-button>
-                        <a-radio-button value="b">24-30</a-radio-button>
-                        <a-radio-button value="c">31-40</a-radio-button>
-                        <a-radio-button value="d">41-49</a-radio-button>
-                        <a-radio-button value="e">50+</a-radio-button>
+                        <a-radio-button value="AGE_BETWEEN_18_23">18-23</a-radio-button>
+                        <a-radio-button value="AGE_BETWEEN_24_30">24-30</a-radio-button>
+                        <a-radio-button value="AGE_BETWEEN_31_40">31-40</a-radio-button>
+                        <a-radio-button value="AGE_BETWEEN_41_49">41-49</a-radio-button>
+                        <a-radio-button value="AGE_ABOVE_50">50+</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="自定义人群">
@@ -185,17 +181,17 @@
                 </a-form-model-item>
                 <a-form-model-item label="媒体定向">
                     <a-radio-group v-model="configForm.mediaDirect" button-style="solid">
-                        <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a" disabled>游戏优质媒体</a-radio-button>
+                        <a-radio-button value="NONE">不限</a-radio-button>
+                        <a-radio-button value="GAME" disabled>游戏优质媒体</a-radio-button>
                         <a-radio-button value="b">自定义</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="平台">
-                    <a-radio-group v-model="configForm.platDirect" button-style="solid">
+                    <a-radio-group v-model="configForm.platform" button-style="solid">
                         <a-radio-button value="buxian" :disabled="!!configForm.downloadLink">不限</a-radio-button>
-                        <a-radio-button value="a" :disabled="!!configForm.downloadLink">IOS</a-radio-button>
-                        <a-radio-button value="b">Andriod</a-radio-button>
-                        <a-radio-button value="c" :disabled="!!configForm.downloadLink">PC</a-radio-button>
+                        <a-radio-button value="IOS" :disabled="!!configForm.downloadLink">IOS</a-radio-button>
+                        <a-radio-button value="ANDROID">Andriod</a-radio-button>
+                        <a-radio-button value="PC" :disabled="!!configForm.downloadLink">PC</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item v-if="configForm.downloadLink" label="安卓版本">
@@ -208,70 +204,70 @@
                     <div v-if="configForm.androidDirect === 'a'" class="position-radio-change">
                         <p>安卓版本</p>
                         <a-radio-group v-model="configForm.androidChangeValue">
-                            <a-radio :style="radioStyle" :value="1">Andriod 8.0以上</a-radio>
-                            <a-radio :style="radioStyle" :value="2">Andriod 7.1以上</a-radio>
-                            <a-radio :style="radioStyle" :value="3">Andriod 7.0以上</a-radio>
-                            <a-radio :style="radioStyle" :value="4">Andriod 6.0以上</a-radio>
+                            <a-radio :style="radioStyle" value="8.0">Andriod 8.0以上</a-radio>
+                            <a-radio :style="radioStyle" value="7.1">Andriod 7.1以上</a-radio>
+                            <a-radio :style="radioStyle" value="7.0">Andriod 7.0以上</a-radio>
+                            <a-radio :style="radioStyle" value="6.0">Andriod 6.0以上</a-radio>
                         </a-radio-group>
                     </div>
                 </div>
                 <a-form-model-item label="网络">
                     <a-radio-group v-model="configForm.networkDirect" button-style="solid">
-                        <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a">Wi-Fi</a-radio-button>
-                        <a-radio-button value="b">2G</a-radio-button>
-                        <a-radio-button value="c">3G</a-radio-button>
-                        <a-radio-button value="d">4G</a-radio-button>
+                        <a-radio-button value="unknown">不限</a-radio-button>
+                        <a-radio-button value="WIFI">Wi-Fi</a-radio-button>
+                        <a-radio-button value="2G">2G</a-radio-button>
+                        <a-radio-button value="3G">3G</a-radio-button>
+                        <a-radio-button value="4G">4G</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="已安装用户">
                     <a-radio-group v-model="configForm.installUserDirect" button-style="solid">
-                        <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a">过滤</a-radio-button>
-                        <a-radio-button value="b">定向</a-radio-button>
+                        <a-radio-button value="0">不限</a-radio-button>
+                        <a-radio-button value="1">过滤</a-radio-button>
+                        <a-radio-button value="2">定向</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item v-if="configForm.trackMode" label="过滤已转化用户">
                     <a-radio-group v-model="configForm.conversionUserDirect" button-style="solid">
-                        <a-radio-button value="buxian">不限</a-radio-button>
-                        <a-radio-button value="a">广告计划</a-radio-button>
-                        <a-radio-button value="b">广告组</a-radio-button>
-                        <a-radio-button value="c">广告账户</a-radio-button>
-                        <a-radio-button value="d">公司账户</a-radio-button>
-                        <a-radio-button value="e">APP</a-radio-button>
+                        <a-radio-button value="NO_EXCLUDE">不限</a-radio-button>
+                        <a-radio-button value="AD">广告计划</a-radio-button>
+                        <a-radio-button value="CAMPAIGN">广告组</a-radio-button>
+                        <a-radio-button value="ADVERTISER">广告账户</a-radio-button>
+                        <a-radio-button value="CUSTOMER">公司账户</a-radio-button>
+                        <a-radio-button value="APP">APP</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
-                <a-form-model-item label="智能放">
-                    <a-radio-group v-model="configForm.intelligenceDirect" button-style="solid">
-                        <a-radio-button value="a">不开启</a-radio-button>
-                        <a-radio-button value="b">开启</a-radio-button>
+                <a-form-model-item label="智能放">
+                    <a-radio-group v-model="configForm.auto_extend_enabled" button-style="solid">
+                        <a-radio-button value="0">不开启</a-radio-button>
+                        <a-radio-button value="1">开启</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">预算与出价</p>
                 <a-form-model-item label="投放场景">
-                    <a-radio-group v-model="configForm.launchScenarios" button-style="solid">
-                        <a-radio-button value="a">常规投放</a-radio-button>
-                        <a-radio-button value="b" disabled>放量投放</a-radio-button>
+                    <a-radio-group v-model="configForm.smart_bid_type" button-style="solid">
+                        <a-radio-button value="SMART_BID_CUSTOM">常规投放</a-radio-button>
+                        <a-radio-button value="SMART_BID_CONSERVATIVE" disabled>放量投放</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="预算">
                     <a-input-group compact>
                         <a-select default-value="Zhejiang">
-                            <a-select-option value="Zhejiang">Zhejiang</a-select-option>
-                            <a-select-option value="Jiangsu">Jiangsu</a-select-option>
+                            <a-select-option value="Zhejiang">日预算</a-select-option>
+                            <a-select-option value="Jiangsu">总预算</a-select-option>
                         </a-select>
-                        <a-input style="width: 50%" v-model="configForm.budgetNum"/>
+                        <a-input style="width: 50%" placeholder="请输入" v-model="configForm.budgetNum"/>
                     </a-input-group>
                 </a-form-model-item>
                 <a-form-model-item label="投放时间">
-                    <a-radio-group v-model="configForm.launchTime" button-style="solid">
-                        <a-radio-button value="a">从今天起长期投放</a-radio-button>
-                        <a-radio-button value="b">设置开始和结束日期</a-radio-button>
+                    <a-radio-group v-model="configForm.schedule_type" button-style="solid">
+                        <a-radio-button value="SCHEDULE_FROM_NOW">从今天起长期投放</a-radio-button>
+                        <a-radio-button value="SCHEDULE_START_END">设置开始和结束日期</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <div class="adver-position-radio">
-                    <div v-if="configForm.launchTime === 'b'" class="position-radio-change">
+                    <div v-if="configForm.schedule_type === 'SCHEDULE_START_END'" class="position-radio-change">
                         <a-range-picker v-model="configForm.launchDateRange"/>
                     </div>
                 </div>
@@ -291,33 +287,33 @@
                     </div>
                 </div>
                 <a-form-model-item label="付费方式">
-                    <a-radio-group v-model="configForm.payMethod" button-style="solid">
-                        <a-radio-button value="a">按展示付费(oCPM)</a-radio-button>
+                    <a-radio-group v-model="configForm.pricing" button-style="solid">
+                        <a-radio-button value="PRICING_OCPM">按展示付费(oCPM)</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="目标转化出价">
-                    <a-input class="common-input" v-model="configForm.conversionBid"/> 元
+                    <a-input class="common-input" placeholder="请输入" v-model="configForm.conversionBid"/> 元
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">第三方检测链接</p>
                 <a-form-model-item label="点击监测">
-                    <a-input class="common-input-long" v-model="configForm.monitoringAddress"/>
+                    <a-input class="common-input-long" placeholder="请输入链接地址" v-model="configForm.monitoringAddress"/>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">创意信息</p>
                 <a-form-model-item label="创意方式">
-                    <a-radio-group v-model="configForm.creativeWay" button-style="solid">
-                        <a-radio-button value="a">程序化创意</a-radio-button>
+                    <a-radio-group v-model="configForm.creative_material_mode" button-style="solid">
+                        <a-radio-button value="STATIC_ASSEMBLE">程序化创意</a-radio-button>
                         <a-radio-button value="b">自定义创意</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="创意内容">
-                    <a-radio-group v-model="configForm.creativeContent" button-style="solid">
-                        <a-radio-button value="a">竖版视频</a-radio-button>
-                        <a-radio-button value="b">横版视频</a-radio-button>
-                        <a-radio-button value="c">大图横图</a-radio-button>
-                        <a-radio-button value="d">小图</a-radio-button>
-                        <a-radio-button value="e">大图竖图</a-radio-button>
+                    <a-radio-group v-model="configForm.image_mode" button-style="solid">
+                        <a-radio-button value="CREATIVE_IMAGE_MODE_VIDEO_VERTICAL">竖版视频</a-radio-button>
+                        <a-radio-button value="CREATIVE_IMAGE_MODE_VIDEO">横版视频</a-radio-button>
+                        <a-radio-button value="CREATIVE_IMAGE_MODE_LARGE">大图横图</a-radio-button>
+                        <a-radio-button value="CREATIVE_IMAGE_MODE_SMALL">小图</a-radio-button>
+                        <a-radio-button value="CREATIVE_IMAGE_MODE_LARGE_VERTICAL">大图竖图</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="卡片主图">
@@ -326,44 +322,60 @@
                         list-type="picture-card"
                         class="avatar-uploader"
                         :show-upload-list="false"
+                        :before-upload="beforeUpload"
                         @change="handleChange"
                     >
                         <div v-if="imageUrl" class="upload-img-class" @mouseover="handleChangeActive">
                             <div class="img-flex-url">
                                 <img :src="imageUrl" alt="avatar"/>
                             </div>
-                        </div>
-                        <div v-if="imageUrl && isCoverImgDiv" class="cover-img-div" @mouseleave="handleRemoveActive">
-                            <a-icon class="delete-icon-class" type="delete" @click.stop="handleDeleteImg"/>
+                            <div v-if="isCoverImgDiv" class="cover-img-div" @mouseleave="handleRemoveActive">
+                                <a-icon class="delete-icon-class" type="delete" @click.stop="handleDeleteImg"/>
+                            </div>
                         </div>
                         <div v-if="!imageUrl && !isCoverImgDiv">
-                            <a-icon type="plus"/>
+                            <a-icon type="plus" style="margin-top: 10px;"/>
                             <div class="ant-upload-text">Upload</div>
                         </div>
                     </a-upload>
                 </a-form-model-item>
                 <a-form-model-item label="卡片标题">
-                    <a-input class="common-input-long" v-model="configForm.cardTitle"/>
+                    <a-input class="common-input-long" placeholder="请输入卡片标题" v-model="configForm.cardTitle"/>
                 </a-form-model-item>
+                <a-form-model-item label="推广卖点">
+                    <a-button type="primary" @click="handleAddOrigin"><a-icon type="plus" />推广卖点</a-button>
+                </a-form-model-item>
+                <div class="adver-position-radio">
+                    <a-form-model-item
+                        v-for="item in defaultFormList"
+                        :key="item.id"
+                        class="examin-form-model"
+                    >
+                        <a-input class="common-input-long" v-model="item.value" placeholder="请输入"/>
+                        <a-icon class="examin-form-icon" type="delete" @click="handleDelOrigin(item)"/>
+                    </a-form-model-item>
+                </div>
                 <a-form-model-item label="行动号召">
-                    <a-radio-group v-model="configForm.intelligentOptimization" button-style="solid">
-                        <a-radio-button value="a">开启智能优选</a-radio-button>
-                        <a-radio-button value="b">关闭智能优选</a-radio-button>
+                    <a-radio-group v-model="configForm.enable_personal_action" button-style="solid">
+                        <a-radio-button :value="true">开启智能优选</a-radio-button>
+                        <a-radio-button :value="false">关闭智能优选</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="来源">
-                    <a-input class="common-input-long" v-model="configForm.cardSource"/>
+                    <a-input class="common-input-long" placeholder="请输入来源" v-model="configForm.cardSource"/>
                 </a-form-model-item>
                 <p class="form-line"></p>
                 <p class="rock-title">创意分类</p>
                 <a-form-model-item label="创意分类">
-                    <a-select class="common-input-long" v-model="configForm.creativeClassification" placeholder="请选择">
-                        <a-select-option value="shanghai">Zone one</a-select-option>
-                        <a-select-option value="beijing">Zone two</a-select-option>
-                    </a-select>
+                    <a-cascader
+                        v-model="configForm.creativeClassification"
+                        class="common-input-long"
+                        :options="createOptions"
+                        :fieldNames="fieldNames"
+                        placeholder="请选择创意分类"
+                    />
                 </a-form-model-item>
                 <a-form-model-item label="创意标签">
-                    <!-- <a-input class="common-input-long" v-model="configForm.creativeLabel" @keyup.enter="handleEnterChang" placeholder="按回车生成标签"/> -->
                     <a-select
                         v-model="configForm.creativeLabel"
                         mode="tags"
@@ -377,9 +389,17 @@
                 </a-form-model-item>
                 <div class="adver-position-radio">
                     <div class="creative-label-content">
-                        <p>已选</p>
+                        <p>已选:{{ creativeTag.length || 0 }}</p>
                         <div class="label-content-select-tag">
-                            <a-tag v-for="item in creativeTag" :key="item" :closable="true" class="tag-select-class" @close="handleTagsClose(item)">{{ item }}</a-tag>
+                            <a-tag
+                                v-for="item in creativeTag"
+                                :key="item"
+                                :closable="true"
+                                class="tag-select-class"
+                                @close="handleTagsClose(item)"
+                            >
+                                {{ item }}
+                            </a-tag>
                         </div>
                     </div>
                 </div>
@@ -391,6 +411,13 @@
 import AcountSearch from '@/views/modules/Statistics/components/Treeselect.vue';
 import SelectCheckAll from '../../BatchCreate/toutiaoTime';
 
+import {getAction} from '@/api/manage';
+
+let COS = require('cos-js-sdk-v5');
+let cos = new COS({
+    SecretId: 'AKIDE6IpMi8fJQRCg1iuWzFajjRs43kbbets',
+    SecretKey: 'tXzuwMfplTTK3c9GFUyETilasvQfePu9'
+});
 let str = '';
 for (let i = 0; i < 7 * 48; i++) {
     str += '0';
@@ -413,13 +440,22 @@ export default {
     },
     data() {
         return {
+            createOptions: [],
+            fieldNames: {
+                label: 'category_name',
+                value: 'category_id',
+                children: 'child'
+            },
+            fileList: [],
+            defaultFormList: [],
             isCoverImgDiv: false,
             imageUrl: '',
-            creativeTag: ['123', 'qaz', '3dcfvgfv', 'Mmm'],
+            creativeTag: [],
             radioStyle: {
                 display: 'block',
                 height: '30px',
-                lineHeight: '30px'
+                lineHeight: '30px',
+                marginLeft: 0
             },
             labelCol: {span: 4},
             wrapperCol: {span: 14},
@@ -429,56 +465,60 @@ export default {
                     {min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur'}
                 ],
                 adverName: [
-                    {required: true, message: 'Please input Activity name', trigger: 'blur'},
-                    {min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur'}
+                    {required: true, message: '请输入广告组名称', trigger: 'blur'},
+                    {min: 1, max: 100, message: '长度位1-100字符', trigger: 'blur'}
+                ],
+                adverPlaneName: [
+                    {required: true, message: '请输入广告计划名称', trigger: 'blur'},
+                    {min: 1, max: 100, message: '长度位1-100字符', trigger: 'blur'}
                 ]
             },
             configForm: {
                 name: '', // 账户日预算
                 acountId: '', // 账户
-                budget: 'a', // 预算方式
-                target: 'a', // 推广目标
-                adverType: 'a', // 广告类型
+                budget: 'unlimited', // 预算方式
+                target: 'APP', // 推广目标
+                adverType: 'information_flow', // 广告类型
                 adverName: '', // 广告组名称
                 adverPlaneName: '', // 广告计划名称
                 adversNum: 0, // 广告组计划数量
                 adversPlanNum: 0, // 广告计划数量
-                launchTarget: 'a', // 投放目标
-                downloadMethod: 'a', // 下载方式
+                launchTarget: 'OCPM', // 投放目标
+                downloadMethod: 'DOWNLOAD_URL', // 下载方式
                 landLink: '', // 落地页链接
                 accessLinkContent: '', // 直达链接内容
                 applicationName: '', // 应用包名
                 trackMode: '', // 转化跟踪方式
                 optimObj: '', // 优化目标
                 adverPosition: 'a', // 广告位置
-                searchQuick: '', // 搜索快投
+                feed_delivery_search: 'DISABLED', // 搜索快投
                 radioChangeValue: '', // 广告位置-按照场景指定位置
                 checkboxChangeValue: [], // 广告位置-按照媒体指定位置
-                areaDirect: 'buxian', // 定向-区域
-                genderDirect: 'buxian', // 定向-性别
-                ageDirect: 'buxian', // 定向-年龄
+                REGION: 'buxian', // 定向-区域
+                GENDER: 'NONE', // 定向-性别
+                AGE: 'buxian', // 定向-年龄
                 customDirect: 'buxian', // 定向-自定义
-                mediaDirect: 'buxian', // 定向-媒体定向
-                platDirect: 'buxian', // 定向-平台
-                networkDirect: 'buxian', // 定向-网络
-                installUserDirect: 'buxian', // 定向-已安装用户
-                conversionUserDirect: 'buxian', // 定向-已转化用户
-                intelligenceDirect: 'a', // 定向-智能播放
+                mediaDirect: 'NONE', // 定向-媒体定向
+                platform: 'buxian', // 定向-平台
+                networkDirect: 'unknown', // 定向-网络
+                installUserDirect: '0', // 定向-已安装用户
+                conversionUserDirect: 'NO_EXCLUDE', // 定向-已转化用户
+                auto_extend_enabled: '0', // 定向-智能播放
                 androidDirect: 'buxian', // 定向-安卓版本
                 androidChangeValue: '', // 安卓版本-自定义
-                launchScenarios: 'a', // 投放场景
+                smart_bid_type: 'SMART_BID_CUSTOM', // 投放场景
                 budgetNum: '', // 预算
-                launchTime: 'a', // 投放时间
+                schedule_type: 'SCHEDULE_FROM_NOW', // 投放时间
                 launchDateRange: '', // 设置开始和结束时间
                 launchTimeInterval: 'buxian', // 投放时段
                 scheduleTimeData: str, // 指定时段选择
-                payMethod: 'a', // 付费方式
+                pricing: 'PRICING_OCPM', // 付费方式
                 conversionBid: '', // 目标转化出价
                 monitoringAddress: '', // 监测地址
-                creativeWay: 'a', // 创意方式
-                creativeContent: 'a', // 创意内容
+                creative_material_mode: 'STATIC_ASSEMBLE', // 创意方式
+                image_mode: 'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL', // 创意内容
                 cardTitle: '', // 卡片标题
-                intelligentOptimization: 'a', // 智能优选
+                enable_personal_action: true, // 智能优选
                 cardSource: '', // 来源
                 creativeClassification: '', // 创意分类
                 creativeLabel: undefined // 倡议标签
@@ -486,38 +526,147 @@ export default {
         };
     },
     methods: {
+        handleDelOrigin(list) {
+            let formData = this.defaultFormList;
+            this.defaultFormList = formData.filter(item => list.id !== item.id);
+        },
+        handleAddOrigin() {
+            const randomNum = new Date().getTime() + Math.ceil(Math.random() * 1000);
+            this.defaultFormList.push({
+                id: randomNum,
+                value: ''
+            });
+        },
         handleDownloadLink(e) {
-            this.configForm.platDirect = e.target.value ? 'b' : 'buxian';
+            this.configForm.platform = e.target.value ? 'b' : 'buxian';
         },
         handleDeleteImg() {
             this.imageUrl = '';
             this.isCoverImgDiv = false;
         },
         handleChangeActive() {
-            this.isCoverImgDiv = true;
+            console.log('划入111');
+            setTimeout(() => {
+                this.isCoverImgDiv = true;
+            }, 100);
         },
         handleRemoveActive() {
-            this.isCoverImgDiv = false;
+            console.log('划出222');
+            setTimeout(() => {
+                this.isCoverImgDiv = false;
+            }, 100);
         },
         getBase64(img, callback) {
             const reader = new FileReader();
             reader.addEventListener('load', () => callback(reader.result));
             reader.readAsDataURL(img);
         },
+        beforeUpload(info) {
+            this.cosUpload(info);
+        },
         handleChange(info) {
-            console.log(info, 'info--info');
             this.getBase64(info.file.originFileObj, imageUrl => {
                 this.imageUrl = imageUrl;
             });
         },
+        cosUpload(file) {
+            let that = this;
+            let date = new Date();
+            let y = date.getFullYear();
+            let MM = date.getMonth() + 1;
+            MM = MM < 10 ? '0' + MM : MM;
+            let d = date.getDate();
+            d = d < 10 ? '0' + d : d;
+            let timeElse = new Date().getTime();
+            let arr = file.name.split('.');
+            let str = '';
+            for (let i = 0; i < arr.length; i++) {
+                if (i === arr.length - 1) {
+                }
+                else {
+                    if (i === arr.length - 2) {
+                        str += arr[i];
+                    }
+                    else {
+                        str += arr[i] + '.';
+                    }
+                }
+            }
+            cos.putObject(
+                {
+                    Bucket: 'media-1301855440',
+                    Region: 'ap-chongqing',
+                    // 存储桶所在地域,必须字段
+                    Key: that.uploadType + '/' + y + '-' + MM + '-' + d + '/' + str + '-' + timeElse + '.' + arr[arr.length - 1],
+                    StorageClass: 'STANDARD',
+                    Body: file // 上传文件对象
+                },
+                function (err, data) {
+                    if (err) {
+                        that.$message.error('上传失败!!!' + err);
+                        return;
+                    }
+                    that.loadingElse = false;
+                    that.fileList.push({
+                        uid: file.name,
+                        name: file.name,
+                        status: 'done',
+                        url: '//' + data.Location
+                    });
+                    console.log(that.fileList, 'fileListfileList--fileList');
+                    // that.handleMd5(file);
+                }
+            );
+        },
+        // handleMd5(file) {
+        //     let bmf = new BMF();
+        //     let that = this;
+        //     return new Promise(function (resolve, reject) {
+        //         bmf.md5(file, (err, md5) => {
+        //             console.log();
+        //             // getAction('/kuaishouCrowdPack/checkCrowdPackage', {signature: md5}).then(result => {
+        //             //     if (result.code === 200) {
+        //             //         that.personNameDisabled = false;
+        //             //         that.personResourceDisabled = false;
+        //             //         resolve();
+        //             //     }
+        //             //     else if (result.code === 201) {
+        //             //         that.$message.error(result.message);
+        //             //         that.personForm.name = result.result.orientationName;
+        //             //         that.personForm.resource = result.result.type;
+        //             //         that.personNameDisabled = true;
+        //             //         that.personResourceDisabled = true;
+        //             //         reject();
+        //             //     }
+        //             // }).catch(error => {
+        //             //     console.log(error, 'eeee');
+        //             //     reject();
+        //             // });
+        //         });
+        //     });
+        // },
         handleRelaxSure() {
-            console.log(this.configForm, 'configForm-configForm');
-            const paramsData = {
-                name: '123'
-            };
+            let paramsFormData = this.configForm;
+            console.log(this.defaultFormList, 'defaultFormList-defaultFormList-defaultFormList');
+            if (paramsFormData.adverPosition === 'a') {
+                paramsFormData.smart_inventory = 0;
+            }
+            else if (paramsFormData.adverPosition === 'b') {
+                paramsFormData.inventory_type = paramsFormData.checkboxChangeValue;
+            }
+            else if (paramsFormData.adverPosition === 'c') {
+                paramsFormData.scene_inventory = paramsFormData.radioChangeValue;
+            }
+            if (paramsFormData.launchTimeInterval === 'buxian') {
+                paramsFormData.schedule_time = '';
+            }
+            else if (paramsFormData.launchTimeInterval === 'a') {
+                paramsFormData.schedule_time = paramsFormData.scheduleTimeData;
+            }
+            console.log(paramsFormData, 'paramsFormData-paramsFormData');
             // this.$refs.ruleForm.validate(valid => {
             //     if (valid) {
-            //         alert('submit!');
+            //         alert('submit!Object.assign(this.$data, this.$options.data());');
             //     }
             //     else {
             //         console.log('error submit!!');

+ 46 - 9
src/views/modules/creative-copywrit/creative-copywrit.vue

@@ -1439,6 +1439,7 @@
                         <a-button type="primary" @click="handleSearchTitle">生成</a-button>
                     </div>
                 </div>
+                <p>已选:{{ finallyCheckedResult && finallyCheckedResult.length || 0}} 个</p>
                 <div class="recommend-modal-content">
                     <a-checkbox-group @change="handleCheckBoxChang">
                         <span
@@ -1545,6 +1546,7 @@ export default {
             slogansDetail: [],
             titleFiledResult: [],
             applyTypeOption: [], // 最终的选择结果
+            finallyCheckedResult: [], // 最终的选择结果
             titleResult: [],
             dataOne: [],
             recSearchOptions: [],
@@ -1951,8 +1953,13 @@ export default {
         },
         handleCheckBoxChang(data) {
             this.applyTypeOption = data;
+            this.finallyCheckedResult = data;
         },
         handleSearchTitle() {
+            if (!this.keyWordRec) {
+                this.$message.error('请输入关键词进行搜索!');
+                return;
+            }
             getAction('/ctop/creativeTitle/titleSearch', {
                 firstCategory: this.dataOne[0],
                 secondCategory: this.dataOne[1],
@@ -1999,10 +2006,14 @@ export default {
                     value: item
                 });
             });
+            this.titleResult = [];
+            this.finallyCheckedResult = [];
         },
         handleRecommendCancel() {
             this.recommendVisible = false;
             this.keyWordRec = '';
+            this.titleResult = [];
+            this.finallyCheckedResult = [];
         },
         handleSelectTitle() {
             this.recommendVisible = true;
@@ -2020,16 +2031,42 @@ export default {
             this.defaultFormList = formData.filter(item => list.id !== item.id);
         },
         handleExamin(data) {
-            for (let i = 0; i < 3; i++) {
-                const randomNum = new Date().getTime() + Math.ceil(Math.random() * 1000);
-                this.defaultFormList.push({
-                    id: randomNum,
-                    name: 'username' + randomNum,
-                    value: ''
-                });
-            }
+            getAction('/ctop/materialInfo/queryById', {
+                id: data.id
+            }).then(res => {
+                if (res.success) {
+                    if (res.result.slogans.length) {
+                        res.result.slogans.forEach(item => {
+                            item.name = 'username' + item.id;
+                            item.value = item.slogan;
+                        });
+                        this.defaultFormList = res.result.slogans;
+                        this.$nextTick(() => {
+                            this.defaultFormList.forEach(item => {
+                                this.defaultFormList.setFieldsValue({[item.name]: item.slogan});
+                            });
+                        });
+                    }
+                    else {
+                        for (let i = 0; i < 3; i++) {
+                            const randomNum = new Date().getTime() + Math.ceil(Math.random() * 1000);
+                            this.defaultFormList.push({
+                                id: randomNum,
+                                name: 'username' + randomNum,
+                                value: ''
+                            });
+                        }
+                    }
+                }
+                else {
+                    this.showUrlWater = null;
+                    this.name = null;
+                }
+            });
             this.currentPageOnlyList = data;
             this.causeVisible = true;
+            this.recommendVisible = false;
+            this.titleResult = [];
         },
         handleCauseCancel() {
             this.causeVisible = false;
@@ -2053,7 +2090,7 @@ export default {
                             this.refuseReason = '';
                             this.causeVisible = false;
                             this.defaultFormList = [];
-                            this.$message.error('创建成功');
+                            this.$message.success('审核成功');
                             this.loadData();
                         }
                         

+ 2 - 2
src/views/modules/crowd-control/crowd-control.vue

@@ -524,8 +524,8 @@ export default {
                         console.log(error, 'eeee');
                         reject();
                     });
-                })
-            })
+                });
+            });
         },
         handleChange(info) {
             this.fileList = info.fileList;

+ 2 - 2
vue.config.js

@@ -71,7 +71,7 @@ module.exports = {
           // target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
           // target: 'http://192.168.1.8:8081', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
+        // target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
         // target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
@@ -86,7 +86,7 @@ module.exports = {
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
         // target: 'http://192.168.1.251/', //请求本地 需要jeecg-boot后台项目 
         // target:'http://118.24.244.213:8804',
-      //  target:'http://139.186.165.84:8806', //测试
+       target:'http://139.186.165.84:8806', //测试
 
         ws: false,