Jelajahi Sumber

master 复制账户配置 上线功能

jiayufei 4 tahun lalu
induk
melakukan
46fe73d72c

+ 106 - 103
src/utils/request.js

@@ -1,130 +1,133 @@
-import Vue from 'vue'
-import axios from 'axios'
-import store from '@/store'
-import {VueAxios} from './axios'
-import {Modal, notification} from 'ant-design-vue'
-import {ACCESS_TOKEN} from "@/store/mutation-types"
-const key = "1"
+/**
+ * @file reauest 配置
+ * @author zhuxinbo
+ */
+
+import Vue from 'vue';
+import axios from 'axios';
+import store from '@/store';
+import {VueAxios} from './axios';
+import {Modal, notification} from 'ant-design-vue';
+import {ACCESS_TOKEN} from '@/store/mutation-types';
+const key = '1';
 // 创建 axios 实例
 
-if (process.env.NODE_ENV == 'development') { 
-    axios.defaults.baseURL = '/jeecg-boot'
-    
-} 
-else if (process.env.NODE_ENV == 'debug') { 
-} 
-else if (process.env.NODE_ENV == 'production') { 
-  
-  // axios.defaults.baseURL = 'http://apipre.tjyourong.com.cn/jeecg-boot';//预生产
-  // axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';     
-  axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';//生产环境
+if (process.env.NODE_ENV === 'development') {
+    axios.defaults.baseURL = '/jeecg-boot';
+}
+else if (process.env.NODE_ENV === 'debug') {
+}
+else if (process.env.NODE_ENV === 'production') {
+	// axios.defaults.baseURL = 'http://apipre.tjyourong.com.cn/jeecg-boot';//预生产
+    // axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';
+	axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';//生产环境
 }
 const service = axios.create({
-//   baseURL: '/jeecg-boot', // api base_url
-  timeout: 6000000 // 请求超时时间
-})
+	// baseURL: '/jeecg-boot', // api base_url
+    timeout: 6000000 // 请求超时时间
+});
 
 
 
 
 const err = (error) => {
-  if (error.esponse) {
-    let data = error.response.data
-    const token = Vue.ls.get(ACCESS_TOKEN)
-    // console.log("------异常响应------", token)
-    // console.log("------异常响应------", error.response.status)
-    switch (error.response.status) {
-      case 403:
-        notification.error({key,message: '系统提示', description: '拒绝访问', duration: 4})
-        break
-      case 500:
-        //notification.error({ message: '系统提示', description:'Token失效,请重新登录!',duration: 4})
-        if (token && data.message == "Token失效,请重新登录") {
-          // update-begin- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转----
-          // store.dispatch('Logout').then(() => {
-          //     window.location.reload()
-          // })
-          Modal.error({
-            title: '登录已过期',
-            content: '很抱歉,登录已过期,请重新登录',
-            okText: '重新登录',
-            mask: false,
-            onOk: () => {
-              store.dispatch('Logout').then(() => {
-                Vue.ls.remove(ACCESS_TOKEN)
-                window.location.reload()
-              })
-            }
-          })
-          // update-end- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转----
-        }
-        break
-      case 404:
-        notification.error({key,message: '系统提示', description: '很抱歉,资源未找到!', duration: 4})
-        break
-      case 504:
-        notification.error({key,message: '系统提示', description: '网络超时'})
-        break
-      case 401:
-        notification.error({key,message: '系统提示', description: '未授权,请重新登录', duration: 4})
-        if (token) {
-          store.dispatch('Logout').then(() => {
-            setTimeout(() => {
-              window.location.reload()
-            }, 1500)
-          })
-        }
-        break
-      default:
-        notification.error({
-          key,
-          message: '系统提示',
-          description: data.message,
-          duration: 4
-        })
-        break
-    }
-  }
-  return Promise.reject(error)
+    if (error.esponse) {
+		let data = error.response.data
+		const token = Vue.ls.get(ACCESS_TOKEN)
+		// console.log("------异常响应------", token)
+		// console.log("------异常响应------", error.response.status)
+		switch (error.response.status) {
+		case 403:
+			notification.error({key,message: '系统提示', description: '拒绝访问', duration: 4})
+			break
+		case 500:
+			//notification.error({ message: '系统提示', description:'Token失效,请重新登录!',duration: 4})
+			if (token && data.message == "Token失效,请重新登录") {
+			// update-begin- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转----
+			// store.dispatch('Logout').then(() => {
+			//     window.location.reload()
+			// })
+			Modal.error({
+				title: '登录已过期',
+				content: '很抱歉,登录已过期,请重新登录',
+				okText: '重新登录',
+				mask: false,
+				onOk: () => {
+				store.dispatch('Logout').then(() => {
+					Vue.ls.remove(ACCESS_TOKEN)
+					window.location.reload()
+				})
+				}
+			})
+			// update-end- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转----
+			}
+			break
+		case 404:
+			notification.error({key,message: '系统提示', description: '很抱歉,资源未找到!', duration: 4})
+			break
+		case 504:
+			notification.error({key,message: '系统提示', description: '网络超时'})
+			break
+		case 401:
+			notification.error({key,message: '系统提示', description: '未授权,请重新登录', duration: 4})
+			if (token) {
+			store.dispatch('Logout').then(() => {
+				setTimeout(() => {
+				window.location.reload()
+				}, 1500)
+			})
+			}
+			break
+		default:
+			notification.error({
+			key,
+			message: '系统提示',
+			description: data.message,
+			duration: 4
+			})
+			break
+		}
+	}
+	return Promise.reject(error)
 };
 
 // request interceptor
 service.interceptors.request.use(config => {
-  const token = Vue.ls.get(ACCESS_TOKEN)
-  if (token) {
-    config.headers['X-Access-Token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
-  }
-  if (config.method == 'get') {
-    config.params = {
-      _t: Date.parse(new Date()) / 1000,
-      ...config.params
+	const token = Vue.ls.get(ACCESS_TOKEN);
+    if (token) {
+		config.headers['X-Access-Token'] = token; // 让每个请求携带自定义 token 请根据实际情况自行修改
     }
-  }
-  return config
+    if (config.method === 'get') {
+		config.params = {
+			_t: Date.parse(new Date()) / 1000,
+			...config.params
+		};
+    }
+	return config;
 }, (error) => {
-  return Promise.reject(error)
-})
+  	return Promise.reject(error);
+});
 
 // response interceptor
 service.interceptors.response.use((response) => {
-  return response.data
+    return response.data;
 }, (error) => {
     notification.error({
         key,
         message: '系统提示',
         description: '网络超时,请刷新页面'
-      })
-    return 
-  })
+    });
+    return;
+});
 
 const installer = {
-  vm: {},
-  install(Vue, router = {}) {
-    Vue.use(VueAxios, router, service)
-  }
-}
+	vm: {},
+	install(Vue, router = {}) {
+		Vue.use(VueAxios, router, service);
+	}
+};
 
 export {
-  installer as VueAxios,
-  service as axios
-}
+    installer as VueAxios,
+	service as axios
+};

+ 1 - 1
src/views/modules/Statistics/components/Treeselect.vue

@@ -123,7 +123,7 @@ export default {
   methods: {
     ...mapGetters(['nickname', 'avatar', 'userInfo']),
     update(node, id) {
-      // console.log(node)
+	  this.$emit('select-value', node);
       // getAction('/ctop/userAllocation/getAccountListByProjectId', {
       //   projectId: node.id,
       // }).then((res) => {

+ 3 - 3
src/views/modules/account-config/account-config-server.js

@@ -3,8 +3,8 @@
  * @author jiayufei
  */
 
-export const urlAcount = 'http://118.24.244.213:8808'; // 线上
+// export const urlAcount = 'http://118.24.244.213:8808'; // 线上
 // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
-// export const urlAcount = 'http://192.168.1.43:8080'; // 子安
-// export const urlAcount = 'http://139.186.165.84:8080'; // 测试
+// export const urlAcount = 'http://192.168.1.43:8808'; // 子安
+export const urlAcount = 'http://139.186.165.84:8808'; // 测试
 // export const urlAcount = 'http://192.168.1.8:8080'; // 学超

+ 61 - 3
src/views/modules/account-config/account-config.vue

@@ -18,6 +18,7 @@
                     </a-form-item>
                     <a-form-item label="状态">
                         <a-select v-model="searchStatus" style="width: 100px">
+                            <a-select-option :value="2">不限</a-select-option>
                             <a-select-option :value="0">开启</a-select-option>
                             <a-select-option :value="1">关闭</a-select-option>
                         </a-select>
@@ -52,10 +53,15 @@
                 <span slot="acountRelax" slot-scope="text, record">
                     <a-switch :checked="text === 0" @change="handleSwitchChang($event, record)"/>
                 </span>
+                <span slot="creativeImageMode" slot-scope="text">
+                    <span>{{ handleChangeCreativeImage(text) }}</span>
+                </span>
                 <span solt="accountBudget" slot-scope="text, record">
                     {{ record.accountBudgetMode === '1' ? '不限' : text }}
                 </span>
                 <span slot="action" slot-scope="text, record">
+                    <a @click="handleCopy(record)">复制</a>
+                    <a-divider type="vertical"/>
                     <a @click="handleEdit(record)">编辑</a>
                     <a-divider type="vertical"/>
                     <a @click="handleListDelete(record)">删除</a>
@@ -270,6 +276,32 @@ export default {
             }
         };
         return {
+            creativeImageOption: [
+                {
+                    id: 'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL',
+                    value: '竖版视频'
+                },
+                {
+                    id: 'CREATIVE_IMAGE_MODE_VIDEO',
+                    value: '横版视频'
+                },
+                {
+                    id: 'CREATIVE_IMAGE_MODE_LARGE',
+                    value: '大图横图'
+                },
+                {
+                    id: 'CREATIVE_IMAGE_MODE_SMALL',
+                    value: '小图'
+                },
+                {
+                    id: 'CREATIVE_IMAGE_MODE_LARGE_VERTICAL',
+                    value: '大图竖图'
+                },
+                {
+                    id: 'CREATIVE_IMAGE_MODE_UNION_SPLASH',
+                    value: '开屏'
+                }
+            ],
             searchStatus: 0,
             controlLoading: true,
             adBudgetShowTitle: false,
@@ -334,6 +366,12 @@ export default {
                     dataIndex: 'accountId_dictText'
                 },
                 {
+                    title: '素材类型',
+                    align: 'center',
+                    dataIndex: 'creativeImageMode',
+                    scopedSlots: {customRender: 'creativeImageMode'}
+                },
+                {
                     title: '账户ID',
                     align: 'center',
                     dataIndex: 'accountId'
@@ -369,7 +407,7 @@ export default {
                     title: '操作',
                     dataIndex: 'action',
                     align: 'center',
-                    width: '20%',
+                    width: '23%',
                     scopedSlots: {customRender: 'action'}
                 }
             ]
@@ -383,6 +421,9 @@ export default {
     },
     methods: {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
+        handleChangeCreativeImage(val) {
+            return val ? this.creativeImageOption.filter(item => item.id === val)[0].value : '-';
+        },
         handleAccountMode(e) {
             this.budgetForm.budget = 1000;
             this.adBudgetShowTitle = false;
@@ -499,7 +540,7 @@ export default {
         handleInitTable() {
             const paramsData = {
                 accountId: this.acountId,
-                status: this.searchStatus,
+                status: this.searchStatus === 2 ? '' : this.searchStatus,
                 loginUserId: this.userInfo().id,
                 pageNo: this.tablePag.page,
                 pageSize: this.tablePag.size
@@ -522,6 +563,21 @@ export default {
                 console.log(error, 'eeee');
             });
         },
+        handleCopy(data) {
+            let that = this;
+            this.$confirm({
+                title: '复制提示',
+                content: '请确认是否复制该账户配置',
+                onOk() {
+                    let params = {
+                        accountModal: 'copy',
+                        id: data.id
+                    };
+                    localStorage.setItem('queryList', JSON.stringify(params));
+                    that.$router.push('/account-config/components/configuration-copy');
+                }
+            });
+        },
         handleListDelete(data) {
             let that = this;
             this.$confirm({
@@ -561,12 +617,14 @@ export default {
             const paramsData = {
                 id: data.id,
                 state: checked ? 0 : 1,
-                accountId: data.accountId
+                accountId: data.accountId,
+                creativeImageMode: data.creativeImageMode
             };
             const forDate = new FormData();
             forDate.append('id', paramsData.id);
             forDate.append('state', paramsData.state);
             forDate.append('accountId', paramsData.accountId);
+            forDate.append('creativeImageMode', paramsData.creativeImageMode);
             putAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/updStaById', forDate).then(result => {
                 if (result.code === 0) {
                     this.$message.success(result.message);

File diff ditekan karena terlalu besar
+ 3214 - 0
src/views/modules/account-config/components/configuration-copy.vue


+ 109 - 14
src/views/modules/account-config/components/configuration-modal.vue

@@ -19,6 +19,7 @@
                             :appId.sync="configForm.accountId"
                             :multiple="false"
                             request="1,3"
+                            @select-value="handleSelectValue"
                         >
                         </acount-search>
                     </a-form-model-item>
@@ -325,7 +326,7 @@
                                 </a-tooltip>
                             </a-radio-button>
                             <a-radio-button value="ORIGINAL_VIDEO">原生</a-radio-button>
-                            <a-radio-button value="SPLASH_VIDEO" disabled>开屏</a-radio-button>
+                            <a-radio-button value="SPLASH_VIDEO">开屏</a-radio-button>
                         </a-radio-group>
                     </a-form-model-item>
                 </div>
@@ -818,7 +819,7 @@
                                 v-model="configForm.creativeCallToAction"
                             >
                                 <a-select-option
-                                    v-for="(item, index) in configForm.creativeOptions"
+                                    v-for="(item, index) in creativeOptions"
                                     :key="index + 1"
                                     :value="item"
                                 >
@@ -871,7 +872,7 @@
                                 <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_SMALL" disabled>小图</a-radio-button>
                                 <a-radio-button value="CREATIVE_IMAGE_MODE_LARGE_VERTICAL">大图竖图</a-radio-button>
                             </a-radio-group>
                         </a-form-model-item>
@@ -881,7 +882,7 @@
                                 v-model="configForm.creativeCallToAction"
                             >
                                 <a-select-option
-                                    v-for="(item, index) in configForm.creativeOptions"
+                                    v-for="(item, index) in creativeOptions"
                                     :key="index + 1"
                                     :value="item"
                                 >
@@ -910,13 +911,66 @@
                             使用创意轮播,系统将平分各创意展现机会,便于广告主比较各创意投放效果
                         </div>
                     </div>
+                    <div v-else-if="configForm.adUnionVideoType === 'SPLASH_VIDEO'">
+                        <a-form-model-item label="创意内容">
+                            <a-radio-group v-model="configForm.creativeImageMode" button-style="solid">
+                                <a-radio-button value="CREATIVE_IMAGE_MODE_UNION_SPLASH">开屏图片</a-radio-button>
+                            </a-radio-group>
+                        </a-form-model-item>
+                        <a-form-model-item label="行动号召" prop="creativeCallToAction">
+                            <a-select
+                                class="common-input-long"
+                                v-model="configForm.creativeCallToAction"
+                            >
+                                <a-select-option
+                                    v-for="(item, index) in creativeOptions"
+                                    :key="index + 1"
+                                    :value="item"
+                                >
+                                    {{ item }}
+                                </a-select-option>
+                            </a-select>
+                        </a-form-model-item>
+                        <a-form-model-item label="来源" prop="creativeSource">
+                            <a-input
+                                class="common-input-long"
+                                placeholder="请输入来源"
+                                v-model="configForm.creativeSource"
+                                allow-clear
+                            />
+                        </a-form-model-item>
+                        <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="自动生成视频素材">
+                            <a-radio-group v-model="configForm.creativeIsPresentedVideo" 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>
+                        <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="最优创意衍生计划">
+                            <a-radio-group v-model="configForm.creativeGenerateDerivedAd" 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>
+                        <a-form-model-item v-if="isTomatoStatus" label="创意展现">
+                            <a-radio-group v-model="configForm.creativeDisplayMode" button-style="solid">
+                                <a-radio-button value="CREATIVE_DISPLAY_MODE_CTR">优选模式</a-radio-button>
+                                <a-radio-button value="CREATIVE_DISPLAY_MODE_RANDOM">轮播模式</a-radio-button>
+                            </a-radio-group>
+                        </a-form-model-item>
+                        <div v-if="configForm.creativeDisplayMode === 'CREATIVE_DISPLAY_MODE_CTR'" class="adver-position-radio">
+                            选择优选模式,系统会自动对效果好的创意进行展示量倾斜,创意效果越好展示量越高
+                        </div>
+                        <div v-if="configForm.creativeDisplayMode === 'CREATIVE_DISPLAY_MODE_RANDOM'" class="adver-position-radio">
+                            使用创意轮播,系统将平分各创意展现机会,便于广告主比较各创意投放效果
+                        </div>
+                    </div>
                     <div v-else>
                         <a-form-model-item label="创意内容">
                             <a-radio-group v-model="configForm.creativeImageMode" 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_SMALL" disabled>小图</a-radio-button>
                                 <a-radio-button value="CREATIVE_IMAGE_MODE_LARGE_VERTICAL">大图竖图</a-radio-button>
                             </a-radio-group>
                         </a-form-model-item>
@@ -987,7 +1041,7 @@
                                     v-model="configForm.creativeCallToAction"
                                 >
                                     <a-select-option
-                                        v-for="(item, index) in configForm.creativeOptions"
+                                        v-for="(item, index) in creativeOptions"
                                         :key="index + 1"
                                         :value="item"
                                     >
@@ -1465,6 +1519,7 @@ export default {
             },
             labelCol: {span: 4},
             wrapperCol: {span: 14},
+            creativeOptions: [],
             rules: {
                 creativeAppName: [
                     {required: true, message: '请输入', trigger: 'blur'},
@@ -1563,7 +1618,6 @@ export default {
                 adMinBid: '',
                 adMaxBid: '',
                 adBidCreateType: 'FIX',
-                creativeOptions: [],
                 advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
                 adLocationType: '',
                 adCity: '',
@@ -1632,7 +1686,7 @@ export default {
                 adRetargetingTagsExclude: '',
                 adAutoExtendTargets: '',
                 adDeliveryRange: '',
-                creativeCallToAction: '', // 行动号召
+                creativeCallToAction: undefined, // 行动号召
                 creativeLabel: undefined // 倡议标签
             },
             isTomatoStatus: true,
@@ -1765,7 +1819,7 @@ export default {
                 this.configForm.creativeProductDescription = '';
                 this.configForm.defaultFormList = [];
                 this.configForm.creativeEnablePersonalAction = '';
-                this.configForm.creativeCallToAction = '';
+                this.configForm.creativeCallToAction = undefined;
             }
             else {
                 this.configForm.creativeEnablePersonalAction = true;
@@ -1836,7 +1890,7 @@ export default {
                 this.handleGetCreativeClassification();
                 this.handleGetAdvertiserStrategy();
                 this.handleDirectionalList();
-                this.handleGetAdAudiencePackage();
+                // this.handleGetAdAudiencePackage();
             }
             else {
                 this.createOptions = [];
@@ -1860,6 +1914,10 @@ export default {
     methods: {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
         moment,
+        handleSelectValue(data) {
+            this.configForm.accountId = data.id;
+            this.handleGetAdAudiencePackage();
+        },
         handleAdDistrict(e) {
             const defaultValue = e.target.value;
             if (defaultValue === 'NONE') {
@@ -1872,9 +1930,16 @@ export default {
         },
         handleAdUnionVideoType(e) {
             this.$refs['ruleForm'].clearValidate(['creativeSource']);
+            if (e.target.value === 'SPLASH_VIDEO') {
+                this.configForm.creativeImageMode = 'CREATIVE_IMAGE_MODE_UNION_SPLASH';
+            }
+            else {
+                this.configForm.creativeImageMode = 'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL';
+            }
         },
         NewCheckboxChangeValue(newVal) {
             this.$refs['ruleForm'].clearValidate(['creativeSource']);
+            let selectiveListUpdate = [...this.selectiveList];
             if (newVal.length) {
                 if (newVal.includes('INVENTORY_AWEME_FEED')) {
                     this.isTAwemeStatus = true;
@@ -1887,15 +1952,27 @@ export default {
                     this.$nextTick(() => {
                         this.configForm.creativeEnablePersonalAction = true;
                     });
+                    this.configForm.adAudiencePackageId = undefined;
+                    this.packageMessageDetail = [];
+                    this.selectiveList = selectiveListUpdate.filter(item => item.delivery_range === 'UNION');
+                    // if (this.configForm.adDirectionalFlag === 'choice') {
+                    //    this.selectiveList = selectiveListUpdate.filter(item => item.delivery_range === 'UNION');
+                    // }
                 }
                 else {
                     this.configForm.adUnionVideoType = '';
                     this.configForm.creativeEnablePersonalAction = '';
+                    this.configForm.adAudiencePackageId = undefined;
+                    this.packageMessageDetail = [];
+                    this.handleGetAdAudiencePackage();
                 }
             }
             else {
                 this.isTAwemeStatus = true;
                 this.configForm.adUnionVideoType = '';
+                this.configForm.adAudiencePackageId = undefined;
+                this.packageMessageDetail = [];
+                this.handleGetAdAudiencePackage();
             }
         },
         handleGetChengZiSite() {
@@ -2125,7 +2202,12 @@ export default {
                                 }
                             });
                         });
-                        this.selectiveList = defaultList;
+                        if (this.configForm.checkboxChangeValue.length === 1 && this.configForm.checkboxChangeValue[0] === 'INVENTORY_UNION_SLOT') {
+                            this.selectiveList = defaultList.filter(item => item.delivery_range === 'UNION');
+                        }
+                        else {
+                            this.selectiveList = defaultList;
+                        }
                     }
                     else {
                         this.$message.error(result.message);
@@ -2185,7 +2267,7 @@ export default {
             getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdActionText', params)
                 .then(result => {
                     if (result.code === 0) {
-                        this.configForm.creativeOptions = result.result;
+                        this.creativeOptions = result.result;
                     }
                     else {
                         this.$message.error(result.message);
@@ -2318,6 +2400,9 @@ export default {
                 this.configForm.checkboxChangeValue = [];
                 this.isTAwemeStatus = true;
             }
+            this.configForm.adUnionVideoType = '';
+            this.configForm.creativeImageMode = 'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL';
+            this.handleGetAdAudiencePackage();
         },
         handleAccountMode(e) {
             if (e.target.value === '1') {
@@ -2419,7 +2504,13 @@ export default {
                             getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', {accountId: detailData.accountId})
                                 .then(result => {
                                     if (result.code === 0) {
-                                        this.selectiveList = result.result || [];
+                                        let checkboxChangeValueList = detailData.creativeInventoryType.split(',');
+                                        if (checkboxChangeValueList.length === 1 && checkboxChangeValueList[0] === 'INVENTORY_UNION_SLOT') {
+                                            this.selectiveList = result.result.filter(item => item.delivery_range === 'UNION');
+                                        }
+                                        else {
+                                            this.selectiveList = result.result || [];
+                                        }
                                         this.configForm.adAudiencePackageId = Number(detailData.adAudiencePackageId);
                                         this.handleSelectiveOrientation(Number(detailData.adAudiencePackageId));
                                     }
@@ -2556,7 +2647,7 @@ export default {
                         getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdActionText', params)
                             .then(result => {
                                 if (result.code === 0) {
-                                    this.configForm.creativeOptions = result.result;
+                                    this.creativeOptions = result.result;
                                     this.configForm.creativeCallToAction = detailData.creativeCallToAction;
                                 }
                                 else {
@@ -2983,6 +3074,10 @@ export default {
                 this.$message.error('请添加卖点');
                 return;
             }
+            // if (this.isTAwemeStatus && !paramsFormData.creativeCallToAction) {
+            //     this.$message.error('行动号召不能为空');
+            //     return;
+            // }
             if (!this.creativeTag.length) {
                 this.$message.error('请添加标签');
                 return;

+ 0 - 13
src/views/modules/account-config/components/directional-logic/directional-logic.vue

@@ -256,7 +256,6 @@ export default {
         rowSelectionAllDirect() {
             return {
                 onChange: (selectedRowKeys, selectedRows) => {
-                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
                     this.tableSelectDirectIds = selectedRows && selectedRows.map(item => item.key);
                     this.tableSelectDirectData = selectedRows;
                     this.$emit('selection-direct-event', this.tableSelectDirectIds);
@@ -274,7 +273,6 @@ export default {
         rowSelectionAllExclude() {
             return {
                 onChange: (selectedRowKeys, selectedRows) => {
-                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
                     this.tableSelectExcludeIds = selectedRows && selectedRows.map(item => item.key);
                     this.tableSelectExcludeData = selectedRows;
                     this.$emit('selection-exclude-event', this.tableSelectExcludeIds);
@@ -291,17 +289,6 @@ export default {
         }
     },
     watch: {
-        // updatelistinclude(newVal) {
-        //     if (newVal) {
-        //         console.log(newVal, '---00---000----000');
-        //         this.tableSelectDirectIds = newVal;
-        //     }
-        // },
-        // updatelistexclude(newVal) {
-        //     if (newVal) {
-        //         this.tableSelectExcludeIds = newVal;
-        //     }
-        // },
         defaultlist(newVal) {
             if (newVal) {
                 this.tableDataAllDirect = newVal;

+ 1 - 1
src/views/modules/copy-library/copy-library-server.js

@@ -6,5 +6,5 @@
 export const urlAcount = 'http://118.24.244.213:8808'; // 线上
 // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
 // export const urlAcount = 'http://192.168.1.43:8080'; // 子安
-// export const urlAcount = 'http://139.186.165.84:8080'; // 测试
+// export const urlAcount = 'http://139.186.165.84:8808'; // 测试
 // export const urlAcount = 'http://192.168.1.8:8080'; // 学超

+ 365 - 65
src/views/modules/copy-library/copy-library.vue

@@ -61,6 +61,13 @@
                             @change="handleLaunchData"
                         />
                     </a-form-item>
+                    <a-form-item v-show="configForm.acountId || configForm.adConvertId" label="状态">
+                        <a-select v-model="configForm.searchStatus" style="width: 100px">
+                            <a-select-option :value="2">不限</a-select-option>
+                            <a-select-option :value="0">已删除</a-select-option>
+                            <a-select-option :value="1">可投放</a-select-option>
+                        </a-select>
+                    </a-form-item>
                     <a-form-item class="form-handle-btn">
                         <a-button type="default" class="reset-class" @click="handleResetList">重置</a-button>
                         <a-button type="primary" @click="handleQueryList">查询</a-button>
@@ -81,6 +88,11 @@
                         :pagination="false"
                         :scroll="{x: 1500}"
                     >
+                        <span slot="currencyAction" slot-scope="text, record">
+                            <a :disabled="record.status === '已删除'" @click="handleCurrencyEdit(record)">编辑</a>
+                            <a-divider type="vertical"/>
+                            <a :disabled="record.status === '已删除'" @click="handleCurrencyDelete(record)">删除</a>
+                        </span>
                     </a-table>
                     <a-pagination
                         class="pagin-table-class"
@@ -105,6 +117,11 @@
                         :pagination="false"
                         :scroll="{x: 1500}"
                     >
+                        <span slot="appointAction" slot-scope="text, record">
+                            <a :disabled="record.status === '已删除'" @click="handleCurrencyEdit(record)">编辑</a>
+                            <a-divider type="vertical"/>
+                            <a :disabled="record.status === '已删除'" @click="handleAppointDelete(record)">删除</a>
+                        </span>
                     </a-table>
                     <a-pagination
                         class="pagin-table-class"
@@ -123,7 +140,7 @@
         </div>
         <a-modal
             v-if="causeVisible"
-            title="新建文案"
+            :title="copywritingType === 'add' ? '新建文案' : '编辑文案'"
             dialog-class="copywrit-modal"
             :visible="causeVisible"
             @ok="handleCauseSure"
@@ -135,8 +152,8 @@
                     <div class="acount-title-right">
                         <div class="only-title-mater">
                             <a-radio-group v-model="copywrittypeName" button-style="solid" @change="handleFormLayoutChange">
-                                <a-radio-button value="horizontal">通用</a-radio-button>
-                                <a-radio-button value="vertical">指定素材</a-radio-button>
+                                <a-radio-button value="horizontal" :disabled="copywritingEditList.controlTypeModel === '2'">通用</a-radio-button>
+                                <a-radio-button value="vertical" :disabled="copywritingEditList.controlTypeModel === '1'">指定素材</a-radio-button>
                             </a-radio-group>
                         </div>
                     </div>
@@ -145,11 +162,11 @@
                     <div class="acount-title-left">广告账户</div>
                     <div class="acount-title-right">
                         <div class="only-title-mater">
-                            <acount-search :appId.sync="advertisingAccount" request="1,3"></acount-search>
+                            <acount-search :appId.sync="advertisingAccount" request="1,3" :disabled="copywritingType === 'edit'"></acount-search>
                         </div>
                     </div>
                 </div>
-                <div v-if="copywrittypeName === 'horizontal'" class="acount-title">
+                <div v-if="copywrittypeName === 'horizontal' && copywritingType === 'add'" class="acount-title">
                     <div class="acount-title-left">文件上传</div>
                     <div class="acount-title-right">
                         <div class="only-title-mater">
@@ -168,7 +185,7 @@
                     <div class="acount-title-left">选择素材</div>
                     <div class="acount-title-right">
                         <div class="only-title-mater">
-                            <div><a @click="handleSelectMaterial">选择素材</a></div>
+                            <div v-if="copywritingType === 'add'"><a @click="handleSelectMaterial">选择素材</a></div>
                             <div class="title-mater-list">
                                 <p
                                     class="mater-list-name"
@@ -176,20 +193,21 @@
                                     :key="item.id"
                                 >
                                     <span class="mater-list-show">{{ item.materialName }}</span>
-                                    <span class="mater-list-icon" @click="handleDelAlone(item)"><a-icon type="close"/></span>
+                                    <span class="mater-list-show">123</span>
+                                    <span v-if="copywritingType === 'add'" class="mater-list-icon" @click="handleDelAlone(item)"><a-icon type="close"/></span>
                                 </p>
                             </div>
                         </div>
                     </div>
                 </div>
-                <div v-if="copywrittypeName === 'vertical'" class="acount-title push-plate">
+                <div v-if="copywrittypeName === 'vertical' && copywritingType === 'add'" class="acount-title push-plate">
                     <div class="acount-title-left">创意标题</div>
                     <div class="acount-title-right">
                         <a-button type="primary" @click="handleAddOrigin"><a-icon type="plus" />创意标题</a-button>
                         <span style="margin-left: 20px;">已填:{{ titleFiledResult.length || 0 }}</span>
                     </div>
                 </div>
-                <div v-if="copywrittypeName === 'vertical'" class="acount-title">
+                <div v-if="copywrittypeName === 'vertical' && copywritingType === 'add'" class="acount-title">
                     <div class="acount-title-left"></div>
                     <div class="acount-title-right">
                         <a-form :form="examinForm">
@@ -247,6 +265,63 @@
                         </a-form>
                     </div>
                 </div>
+                <div v-if="copywritingType === 'edit'" class="acount-title push-plate">
+                    <div class="acount-title-left">创意标题</div>
+                    <div class="acount-title-right">
+                        <a-form :form="examinForm">
+                            <a-form-item
+                                v-for="item in defaultFormList"
+                                :key="item.id"
+                                class="examin-form-model"
+                                :label-col="labelCol"
+                                :wrapper-col="wrapperCol"
+                                label=""
+                            >
+                                <a-input
+                                    v-decorator="[
+                                        item.name,
+                                        {rules: [
+                                            {validator: validatePass, trigger: 'blur'}
+                                        ]}
+                                    ]"
+                                    class="examin-form-input"
+                                    :id="item.name"
+                                    placeholder="请输入"
+                                    @change="handleFormInputChang($event, item.name, item.id)"
+                                />
+                                <span class="examin-form-num">{{ item.lenSize }}/30</span>
+                                <div class="ad-name-tags-class">
+                                    <div v-if="item.tabStatus === 'alone'" class="name-tags-left">
+                                        <a-tag
+                                            v-for="val in item.updateTagsList"
+                                            :key="val.id"
+                                            color="#1890ff"
+                                            @click="handleGetChangeAll(val.name, item.name, item.id)"
+                                        >
+                                            + {{ val.name }}
+                                        </a-tag>
+                                    </div>
+                                    <div v-if="item.tabStatus === 'all'" class="name-tags-left">
+                                        <a-tag
+                                            v-for="val in item.defaultTagsList"
+                                            :key="val.id"
+                                            color="#1890ff"
+                                            @click="handleGetChangeAll(val.name, item.name, item.id)"
+                                        >
+                                            + {{ val.name }}
+                                        </a-tag>
+                                    </div>
+                                    <div v-if="item.tabStatus === 'alone'">
+                                        <a @click="handleMoreTagsShow(item.id, 'more')">更多</a>
+                                    </div>
+                                    <div v-if="item.tabStatus === 'all'">
+                                        <a @click="handleMoreTagsShow(item.id, 'little')">收起</a>
+                                    </div>
+                                </div>
+                            </a-form-item>
+                        </a-form>
+                    </div>
+                </div>
             </div>
         </a-modal>
         <a-modal
@@ -333,14 +408,10 @@
 import AcountSearch from '@/views/modules/Statistics/components/Treeselect.vue';
 
 import moment from 'moment';
-import {getAction, postFileAction, postAction} from '@/api/manage';
+import {getAction, postFileAction, postAction, deleteAction} from '@/api/manage';
 import {mapGetters} from 'vuex';
 import {urlAcount} from './copy-library-server.js';
-let COS = require('cos-js-sdk-v5');
-let cos = new COS({
-    SecretId: 'AKIDE6IpMi8fJQRCg1iuWzFajjRs43kbbets',
-    SecretKey: 'tXzuwMfplTTK3c9GFUyETilasvQfePu9'
-});
+
 export default {
     name: 'copy-library',
     components: {
@@ -349,6 +420,8 @@ export default {
     data() {
         return {
             moment,
+            copywritingEditList: {},
+            copywritingType: 'add',
             projectModelValue: '',
             optimizationOption: [], // 账户option
             controlTypeModel: '1',
@@ -356,43 +429,7 @@ export default {
             modalSelectMaterial: [],
             materTotalAll: 0,
             viedoCheckValue: [],
-            viedoDefaultList: [
-                {
-                    name: '北京市',
-                    id: 1,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '上海市',
-                    id: 2,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '天津市',
-                    id: 3,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '武汉市',
-                    id: 4,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '贵州市',
-                    id: 5,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '太原市',
-                    id: 6,
-                    statDate: '2019-08-08'
-                },
-                {
-                    name: '大同市',
-                    id: 7,
-                    statDate: '2019-08-08'
-                }
-            ],
+            viedoDefaultList: [],
             visibleMatemal: false,
             advertisingAccount: [],
             copywrittypeName: 'horizontal',
@@ -416,7 +453,8 @@ export default {
                 acountId: '',
                 num: '',
                 adConvertId: undefined,
-                launchDateRange: []
+                launchDateRange: [],
+                searchStatus: 2
             },
             currencyPag: {
                 page: 1,
@@ -431,6 +469,12 @@ export default {
                     width: 200,
                     dataIndex: 'textCopywriter'
                 },
+                // {
+                //     title: '状态',
+                //     align: 'center',
+                //     width: 150,
+                //     dataIndex: 'status'
+                // },
                 {
                     title: '相关创意',
                     align: 'center',
@@ -508,6 +552,12 @@ export default {
                     width: 200,
                     dataIndex: 'slogan'
                 },
+                // {
+                //     title: '状态',
+                //     align: 'center',
+                //     width: 150,
+                //     dataIndex: 'status'
+                // },
                 {
                     title: '相关创意',
                     align: 'center',
@@ -587,7 +637,7 @@ export default {
             masterPag: {
                 page: 1,
                 size: 10
-            },
+            }, 
             defaultFormList: [],
             titleFiledResult: 0,
             examinForm: this.$form.createForm(this),
@@ -623,6 +673,132 @@ export default {
     },
     methods: {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
+        handleGetEditProjectList(data) {
+            const paramsData = {
+                slogan: data.slogan,
+                projectId: data.projectId
+            };
+            getAction(urlAcount + '/bytedance-api/ctop/bytedanceVideoSlogenInfo/queryBySlogenAndProjectId', paramsData).then(result => {
+                if (result.code === 0) {
+                    const defaultData = result.result.materialNameArray;
+                    const updateData = [];
+                    defaultData.forEach((item, index) => {
+                        updateData.push({
+                            id: index + 1,
+                            materialName: item
+                        });
+                    });
+                    this.modalSelectMaterial = [...updateData];
+                }
+                else {
+                    that.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleCurrencyEdit(data) {
+            const defaultData = data;
+            defaultData.controlTypeModel = this.controlTypeModel;
+            if (this.controlTypeModel === '1') {
+                this.advertisingAccount[0] = defaultData.accountId;
+            }
+            if (this.controlTypeModel === '2') {
+                this.$nextTick(() => {
+                    this.handleGetEditProjectList(defaultData);
+                });
+            }
+            this.causeVisible = true;
+            this.copywritingType = 'edit';
+            this.copywrittypeName = this.controlTypeModel === '1' ? 'horizontal' : 'vertical';
+            this.copywritingEditList = defaultData;
+            this.$nextTick(() => {
+                let changeValue = this.controlTypeModel === '1' ? data.textCopywriter : data.slogan;
+                let finallyLenList = this.handleJudgeExec(changeValue);
+                let newOptionList = [];
+                finallyLenList.forEach(item => {
+                    this.adNameTags.forEach(val => {
+                        if (item === val.name) {
+                            newOptionList.push(val);
+                        }
+                    });
+                });
+                let resultSelectSize = 0;
+                if (newOptionList.length) {
+                    const inputDefaultLen = this.handleExportRules(changeValue);
+                    let tagsLen = newOptionList.length * 2;
+                    let tagsSureLen = 0;
+                    newOptionList.forEach(item => {
+                        this.adNameTags.forEach(val => {
+                            if (item.name === val.name) {
+                                tagsSureLen += val.maxWordLen;
+                            }
+                        });
+                    });
+                    finallyLenList.forEach(item => {
+                        tagsLen += item.length;
+                    });
+                    resultSelectSize = inputDefaultLen - tagsLen + tagsSureLen + newOptionList.length;
+                }
+                else {
+                    resultSelectSize = this.handleExportRules(changeValue);
+                }
+                const defaultList = this.adNameTags;
+                const randomNum = new Date().getTime() + Math.ceil(Math.random() * 1000);
+                this.defaultFormList.push({
+                    id: randomNum,
+                    name: 'username' + randomNum,
+                    value: changeValue,
+                    lenSize: resultSelectSize,
+                    tabStatus: 'alone',
+                    defaultTagsList: defaultList,
+                    updateTagsList: defaultList.slice(0, 4)
+                });
+            });
+        },
+        handleCurrencyDelete(data) {
+            let that = this;
+            this.$confirm({
+                content: '确定是否删除该条文案',
+                iconType: 'exclamation-circle',
+                onOk() {
+                    deleteAction(urlAcount + '/bytedance-api/advertiser/bytedanceGeneralCopywriter/delete', {id: data.id}).then(result => {
+                        if (result.code === 0) {
+                            that.handleGetCurrencyList();
+                            that.$message.success('删除成功');
+                        }
+                        else {
+                            that.$message.error(result.message);
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    });
+                }
+            });
+        },
+        handleAppointDelete(data) {
+            let that = this;
+            this.$confirm({
+                content: '确定是否删除该条文案',
+                iconType: 'exclamation-circle',
+                onOk() {
+                    deleteAction(urlAcount + '/bytedance-api/ctop/bytedanceVideoSlogenInfo/deleteBySlogenAndProjectId', {
+                        slogan: data.slogan,
+                        projectId: data.projectId
+                    }).then(result => {
+                        if (result.code === 0) {
+                            that.handleGetAppointList();
+                            that.$message.success('删除成功');
+                        }
+                        else {
+                            that.$message.error(result.message);
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    });
+                }
+            });
+        },
         disabledDate(current) {
             return current > moment().subtract(1, 'day');
         },
@@ -684,8 +860,17 @@ export default {
                 acountId: '',
                 num: '',
                 adConvertId: undefined,
-                launchDateRange: []
+                launchDateRange: [],
+                searchStatus: 2
             };
+            if (this.currencyColumns[this.currencyColumns.length - 1].title === '操作') {
+                this.currencyColumns.pop();
+                this.currencyColumns.splice(1, 1);
+            }
+            if (this.appointColumns[this.appointColumns.length - 1].title === '操作') {
+                this.appointColumns.pop();
+                this.appointColumns.splice(1, 1);
+            }
             if (e === '1') {
                 this.handleGetCurrencyList();
             }
@@ -700,12 +885,16 @@ export default {
                 userId: this.userInfo().id,
                 startTime: this.configForm.launchDateRange[0],
                 endTime: this.configForm.launchDateRange[0],
+                status: this.configForm.searchStatus === 2 ? '' : this.configForm.searchStatus,
                 pageNo: this.currencyPag.page,
                 pageSize: this.currencyPag.size
             };
             getAction(urlAcount + '/bytedance-api/advertiser/bytedanceGeneralCopywriter/queryPageListByText', paramsData).then(result => {
                 if (result.code === 0) {
-                    this.currencyData = result.result.list;
+                    this.currencyData = result.result.list ? result.result.list.map(item => {
+                        item.status = item.status === 0 ? '已删除' : '可投放';
+                        return item;
+                    }) : [];
                     this.currencyTotalAll = result.result.total || 0;
                 }
                 else {
@@ -724,12 +913,16 @@ export default {
                 keyWord: this.configForm.num,
                 startTime: this.configForm.launchDateRange[0],
                 endTime: this.configForm.launchDateRange[0],
+                status: this.configForm.searchStatus === 2 ? '' : this.configForm.searchStatus,
                 pageNo: this.appointPag.page,
                 pageSize: this.appointPag.size
             };
             getAction(urlAcount + '/bytedance-api/ctop/bytedanceVideoSlogenInfo/queryPageListByText', paramsData).then(result => {
                 if (result.code === 0) {
-                    this.appointData = result.result.list;
+                    this.appointData = result.result.list ? result.result.list.map(item => {
+                        item.status = item.status === 0 ? '已删除' : '可投放';
+                        return item;
+                    }) : [];
                     this.appointTotalAll = result.result.total || 0;
                 }
                 else {
@@ -1053,7 +1246,7 @@ export default {
                 });
             }
         },
-        handleUploadWxecl() {
+        handleUploadWxeclAdd() {
             if (!this.advertisingAccount.length) {
                 this.$message.error('请选择账户');
                 return;
@@ -1107,10 +1300,10 @@ export default {
                     postAction(urlAcount + '/bytedance-api/ctop/bytedanceVideoSlogenInfo/addList', paramsData).then(result => {
                         if (result.code === 0) {
                             this.$message.success(result.message);
-                            this.controlTypeModel = '1';
+                            this.controlTypeModel = '2';
                             this.modalSelectMaterial = [];
                             this.handleCauseCancel();
-                            this.handleGetCurrencyList();
+                            this.handleGetAppointList();
                         }
                         else {
                             this.$message.error(result.message);
@@ -1121,12 +1314,71 @@ export default {
                 }
             });
         },
+        handleUploadWxeclEdit() {
+            if (!this.defaultFormList[0].value) {
+                this.$message.error('文案标题不能为空');
+                return;
+            }
+            const paramsData = {
+                id: this.copywritingEditList.id,
+                textCopywriter: this.defaultFormList[0].value
+            };
+            postAction(urlAcount + '/bytedance-api/advertiser/bytedanceGeneralCopywriter/edit', paramsData).then(result => {
+                if (result.code === 0) {
+                    this.$message.success(result.message);
+                    this.causeVisible = false;
+                    this.controlTypeModel = '1';
+                    this.handleCauseCancel();
+                    this.handleGetCurrencyList();
+                }
+                else {
+                    this.$message.success(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleVerticalEdit() {
+            if (!this.defaultFormList[0].value) {
+                this.$message.error('文案标题不能为空');
+                return;
+            }
+            const paramsData = {
+                slogan: this.copywritingEditList.slogan,
+                projectId: this.copywritingEditList.projectId,
+                newSlogan: this.defaultFormList[0].value
+            };
+            postAction(urlAcount + '/bytedance-api/ctop/bytedanceVideoSlogenInfo/edit', paramsData).then(result => {
+                if (result.code === 0) {
+                    this.$message.success(result.message);
+                    this.causeVisible = false;
+                    this.controlTypeModel = '2';
+                    this.handleCauseCancel();
+                    this.handleGetAppointList();
+                }
+                else {
+                    this.$message.success(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
         handleCauseSure() {
-            if (this.copywrittypeName === 'horizontal') {
-                this.handleUploadWxecl();
+            if (this.copywritingType === 'add') {
+                if (this.copywrittypeName === 'horizontal') {
+                    this.handleUploadWxeclAdd();
+                }
+                else if (this.copywrittypeName === 'vertical') {
+                    this.handleVerticalAdd();
+                }
             }
-            else if (this.copywrittypeName === 'vertical') {
-                this.handleVerticalAdd();
+            else if (this.copywritingType === 'edit') {
+                if (this.copywrittypeName === 'horizontal') {
+                    this.handleUploadWxeclEdit();
+                }
+                else if (this.copywrittypeName === 'vertical') {
+                    this.handleVerticalEdit();
+                }
             }
         },
         handleCauseCancel() {
@@ -1136,6 +1388,7 @@ export default {
             this.causeVisible = false;
             this.defaultFormList = [];
             this.modalSelectMaterial = [];
+            this.copywritingType = '';
         },
         handleGetCreativeWord() {
             getAction('/ctop/ByteDanceCreativeWordPackage/list').then(result => {
@@ -1167,6 +1420,8 @@ export default {
         },
         handleAddAccountConfig() {
             this.causeVisible = true;
+            this.copywritingType = 'add';
+            this.copywritingEditList = {};
         },
         handleLaunchData(date, dateString) {
             this.configForm.launchDateRange = dateString;
@@ -1178,6 +1433,42 @@ export default {
             };
             this.currencyPag = page;
             this.appointPag = page;
+            if (this.configForm.acountId) {
+                if (this.currencyColumns[this.currencyColumns.length - 1].title !== '操作') {
+                    this.currencyColumns.splice(1, 0, {
+                        title: '状态',
+                        align: 'center',
+                        width: 150,
+                        dataIndex: 'status'
+                    });
+                    this.currencyColumns.push({
+                        title: '操作',
+                        dataIndex: 'currencyAction',
+                        align: 'center',
+                        width: 150,
+                        fixed: 'right',
+                        scopedSlots: {customRender: 'currencyAction'}
+                    });
+                }
+            }
+            if (this.configForm.adConvertId) {
+                if (this.appointColumns[this.appointColumns.length - 1].title !== '操作') {
+                    this.appointColumns.splice(1, 0, {
+                        title: '状态',
+                        align: 'center',
+                        width: 150,
+                        dataIndex: 'status'
+                    });
+                    this.appointColumns.push({
+                        title: '操作',
+                        dataIndex: 'appointAction',
+                        align: 'center',
+                        width: 150,
+                        fixed: 'right',
+                        scopedSlots: {customRender: 'appointAction'}
+                    });
+                }
+            }
             if (this.controlTypeModel === '1') {
                 this.handleGetCurrencyList();
             }
@@ -1190,7 +1481,8 @@ export default {
                 acountId: '',
                 num: '',
                 adConvertId: undefined,
-                launchDateRange: []
+                launchDateRange: [],
+                searchStatus: 2
             };
             const page = {
                 page: 1,
@@ -1198,6 +1490,14 @@ export default {
             };
             this.currencyPag = page;
             this.appointPag = page;
+            if (this.currencyColumns[this.currencyColumns.length - 1].title === '操作') {
+                this.currencyColumns.pop();
+                this.currencyColumns.splice(1, 1);
+            }
+            if (this.appointColumns[this.appointColumns.length - 1].title === '操作') {
+                this.appointColumns.pop();
+                this.appointColumns.splice(1, 1);
+            }
             if (this.controlTypeModel === '1') {
                 this.handleGetCurrencyList();
             }

+ 1 - 1
src/views/modules/headline-view/headline-view-server.js

@@ -6,5 +6,5 @@
 export const urlAcount = 'http://118.24.244.213:8808'; // 线上
 // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
 // export const urlAcount = 'http://192.168.1.43:8080'; // 子安
-// export const urlAcount = 'http://139.186.165.84:8080'; // 测试
+// export const urlAcount = 'http://139.186.165.84:8808'; // 测试
 // export const urlAcount = 'http://192.168.1.8:8080'; // 学超

+ 2 - 3
src/views/modules/user-manage-operation/user-manage-operation-server.js

@@ -5,7 +5,6 @@
 
  export const urlAcount = 'http://118.24.244.213:8808'; // 线上
  // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
- // export const urlAcount = 'http://192.168.1.43:8080'; // 子安
-//  export const urlAcount = 'http://139.186.165.84:8080'; // 测试
+//  export const urlAcount = 'http://192.168.1.43:8080'; // 子安
+//  export const urlAcount = 'http://139.186.165.84:8808'; // 测试
 //  export const urlAcount = 'http://192.168.1.8:8080'; // 学超
- 

+ 0 - 1
src/views/modules/user-manage-operation/user-manage-operation.vue

@@ -207,7 +207,6 @@ export default {
     },
 	mounted() {
 		this.handleGetDataInit();
-		console.log(this.userInfo(), '-------');
 	},
     methods: {
 		...mapGetters(['userInfo']),

File diff ditekan karena terlalu besar
+ 575 - 590
src/views/system/modules/UserModal.vue


+ 45 - 45
vue.config.js

@@ -61,53 +61,53 @@ module.exports = {
     }
   },
 
-  devServer: {
-    hot:true,
-    // inline: true,
-    port: 3000,
-    open : true,
-    proxy: {
-      '/jeecg-boot': {
-          // target: 'http://129.28.197.250:8804', //请求本地 需要jeecg-boot后台项目  蒙蒙
-          // target: 'http://192.168.1.3:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
-        // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        // target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        // target: 'http://192.168.6.162:9806', //请求本地 需要jeecg-boot后台项目  祚云
-        // target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://192.168.1.43:8806', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        target: 'http://192.168.1.219:8081', //请求本地 需要jeecg-boot后台项目  赵西安
-        // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
-        // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
-        //  target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
-        // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
-        // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
-        //  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://192.168.1.43:8806', // 子安
-        // target: 'http://192.168.1.8:8806', // 学超
-    //    target:'http://139.186.165.84:8806', //测试
-        // target:'http://apipre.tjyourong.com.cn', //预生产
+	devServer: {
+		hot:true,
+		// inline: true,
+		port: 3000,
+		open : true,
+		proxy: {
+			'/jeecg-boot': {
+				// target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+				// target: 'http://192.168.1.3:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+				// target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
+				// target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
+				// target: 'http://192.168.6.162:9806', //请求本地 需要jeecg-boot后台项目  祚云
+				// target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+				// target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
+				// target: 'http://192.168.1.43:8806', //请求本地 需要jeecg-boot后台项目  毕洁泉
+				// target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+				// target: 'http://192.168.1.219:8081', //请求本地 需要jeecg-boot后台项目  赵西安
+				// target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
+				// target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
+				//  target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+				// target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+				// target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
+				//  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://192.168.1.43:8806', // 子安
+				// target: 'http://192.168.1.8:8806', // 学超
+				target:'http://139.186.165.84:8806', //测试
+				// target:'http://apipre.tjyourong.com.cn', //预生产
 
-        ws: false,
+				ws: false,
 
-        // changeOrigin: true,
-        // pathRewrite: {
-        //     '/jeecg-boot': ''  //默认所有请求都加了jeecg-boot前缀,需要去掉
-        // }
-      },
-    },
-    // before(app) {
-    //     app.get('/seller', (req, res) => {
-    //         res.json({
-    //           errno: 0,
-    //           data: appData
-    //         })//接口返回json数据,上面配置的数据seller就赋值给data请求后调用
-    //     })
-    // }
-  },
+				// changeOrigin: true,
+				// pathRewrite: {
+				//     '/jeecg-boot': ''  //默认所有请求都加了jeecg-boot前缀,需要去掉
+				// }
+			},
+		},
+		// before(app) {
+		//     app.get('/seller', (req, res) => {
+		//         res.json({
+		//           errno: 0,
+		//           data: appData
+		//         })//接口返回json数据,上面配置的数据seller就赋值给data请求后调用
+		//     })
+		// }
+	},
 
   lintOnSave: undefined,
 //   publicPath:'./',