朱鑫波 4 年之前
父节点
当前提交
32e730a563
共有 23 个文件被更改,包括 7595 次插入113 次删除
  1. 8 0
      src/api/actor.js
  2. 9 2
      src/views/modules/BatchCreate/linkMultiSelect.vue
  3. 2 2
      src/views/modules/Statistics/components/Treeselect.vue
  4. 43 5
      src/views/modules/Statistics/components/selectPagination.vue
  5. 2 0
      src/views/modules/account-config/account-config-server.js
  6. 60 0
      src/views/modules/account-config/account-config.less
  7. 499 0
      src/views/modules/account-config/account-config.vue
  8. 237 0
      src/views/modules/account-config/components/configuration-modal.less
  9. 2079 0
      src/views/modules/account-config/components/configuration-modal.vue
  10. 72 0
      src/views/modules/account-config/components/directional-logic/directional-logic.less
  11. 480 0
      src/views/modules/account-config/components/directional-logic/directional-logic.vue
  12. 634 73
      src/views/modules/autoLaunch/configLaunchInfo.vue
  13. 59 13
      src/views/modules/autoLaunch/configLaunchList.vue
  14. 106 0
      src/views/modules/creative-copywrit/creative-copywrit.less
  15. 3126 0
      src/views/modules/creative-copywrit/creative-copywrit.vue
  16. 11 5
      src/views/modules/crowd-control/components/tree-select/tree-select.vue
  17. 3 3
      src/views/modules/crowd-control/crowd-control.vue
  18. 40 2
      src/views/modules/kuaishouapp/account/stepForm/Step3.vue
  19. 5 0
      src/views/modules/kuaishouapp/account/stepForm/stepModule/selectRegion.vue
  20. 0 1
      src/views/modules/kuaishouapp/account/stepForm/stepModule/targetedPopulation.vue
  21. 50 2
      src/views/modules/kuaishouapp/batchCreation/creat/creatUnit.vue
  22. 68 3
      src/views/modules/kuaishouapp/newBatch/index.vue
  23. 2 2
      vue.config.js

+ 8 - 0
src/api/actor.js

@@ -170,6 +170,14 @@ export function fileEdit(parameter) {
     })
 }
 
+export function fileEditUpdate(parameter) {
+    return axios({
+        url: "/ctop/materialInfo/bytedance/edit",
+        method: 'put',
+        data: parameter
+    })
+}
+
 
 export function fileEditAll(parameter) {
     return axios({

+ 9 - 2
src/views/modules/BatchCreate/linkMultiSelect.vue

@@ -385,7 +385,6 @@
                   data.indeterminates=false
               }
               
-              
               this.getItemData({
                 clickObj:{},
                 data: data,
@@ -393,9 +392,9 @@
                 checkList,
                 plainOptions,
               })
-              
 
           }
+          this.$emit('checkedShowList', this.checkedShowList);
           if(item.level==3){
 
           }
@@ -419,6 +418,7 @@
               item.indeterminates=false
           })
           this.checkedShowList=[]
+          this.$emit('checkedShowList', []);
       },
 
       getCheckedList(val){
@@ -579,6 +579,13 @@
                     })
                 };
                 this.listArr1=res.data
+                this.listArr.forEach(item=>{
+                  this.listArr1.forEach(ele=>{
+                    if(ele.value==item){
+                      ele.checked=true
+                    } 
+                  })
+                })
             })
         }
 

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

@@ -201,9 +201,9 @@ export default {
                       return {
                         id: i.accountId,
                         label:
-                          (i.userName.length == 2
+                          (i.userName && i.userName.length == 2
                             ? i.userName + '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0'
-                            : i.userName.length == 3
+                            : i.userName && i.userName.length == 3
                             ? i.userName + '\xa0\xa0\xa0\xa0'
                             : i.userName) +
                           '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0' +

+ 43 - 5
src/views/modules/Statistics/components/selectPagination.vue

@@ -103,10 +103,36 @@ export default {
         return ''
       },
     },
+    type: {
+      type: String,
+      default() {
+        return ''
+      },
+    }
   },
 
   data() {
     return {
+      taobaoSpecialOfferList: {
+        advertiserId: "fd41614705a047dd65ab0e34e9150cfe",
+        advertiserName: " 淘宝(中国)软件有限公司",
+        createTime: "2021-03-03 10:15:30",
+        designResponsibleName: "辛巴特",
+        id: 3660879,
+        maxBid: 30000,
+        mediaId: "1",
+        productId: 1410280,
+        productName: "头条-淘宝特价版",
+        projectId: 1530887,
+        projectName: "头条-淘宝特价版",
+        responsibleName: "董琪",
+        roleCode: "operator",
+        saleId: null,
+        saleName: null,
+        updateTime: "2021-03-03 21:23:04",
+        userId: "a0d58df3392c4583b55ce3b041792aa7",
+        userName: "王晓娟"
+      },
       loading: false,
       busy: false,
       labelCol: {
@@ -182,13 +208,19 @@ export default {
         projectName: this.keyValue,
       }).then((res) => {
         if (res.code == 0) {
-          this.data = res.result.records.map((item, index) => {
+          let defaultList = res.result.records.map((item, index) => {
             return {
               ...item,
               projectId: item.projectId + '',
               key: index,
-            }
+            };
           })
+          if (this.type === 'taobao') {
+            this.data = defaultList.filter(item => item.productId === 1410280);
+          }
+          else {
+            this.data = defaultList;
+          }
           // this.dataElse = res.result.records.map((item, index) => {
           //   return {
           //     ...item,
@@ -242,15 +274,21 @@ export default {
       }).then((res) => {
         if (res.code == 0) {
           this.busy = true
-          this.data = data.concat(
-            res.result.records.map((item, index) => {
+          let defaultList = res.result.records.map((item, index) => {
               return {
                 ...item,
                 projectId: item.projectId + '',
               }
             })
+          this.data = data.concat(
+            
           )
-
+          if (this.type === 'taobao') {
+            this.data = defaultList.filter(item => item.productId === 1410280);
+          }
+          else {
+            this.data = data.concat(defaultList);
+          }
           // this.data = res.result.records.map((item, index) => {
           //   return {
           //     ...item,

+ 2 - 0
src/views/modules/account-config/account-config-server.js

@@ -0,0 +1,2 @@
+export const urlAcount = 'http://118.24.244.213:8080';
+// export const urlAcount = 'http://192.168.1.43:8080';

+ 60 - 0
src/views/modules/account-config/account-config.less

@@ -0,0 +1,60 @@
+.account-config-content {
+    background: #fff;
+    height: calc(100vh - 137px);
+    padding: 20px;
+    overflow-y: auto;
+    .control-con-header {
+        margin-bottom: 20px;
+        position: relative;
+        .acount-search-class {
+            width: 450px;
+        }
+        .reset-class {
+            margin-right: 10px !important;
+        }
+        .upload-person {
+            position: absolute;
+            right: 10px;
+            top: 0;
+        }
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+}
+.handle-p {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+/deep/ .mode-modal-class {
+    width: 600px !important;
+    .ant-form-item-label {
+        width: 130px;
+    }
+    .icon-span {
+        display: inline-block;
+        margin-top: 8px;
+        margin-left: 15px;
+    }
+    .dp-link-start {
+        display: inline-block;
+        .ant-form-item-control-wrapper {
+            width: 163px;
+        }
+    }
+    .dp-link-end {
+        display: inline-block;
+        .ant-form-item-control-wrapper {
+            width: 100%;
+        }
+    }
+    .ant-form-item-control {
+        margin-left: 15px;
+    }
+    .common-input {
+        width: 150px;
+    }
+}

+ 499 - 0
src/views/modules/account-config/account-config.vue

@@ -0,0 +1,499 @@
+<template>
+    <div class="account-config-content">
+        <div class="control-con-header">
+            <a-form
+                class="grid-form"
+                layout="inline"
+                :form="form"
+                hide-required-mark
+                @submit="handleQueryList"
+            >
+                <a-row class="grid-form-options">
+                    <a-form-item
+                        class="grid-form-item"
+                        label="账户"
+                        :colon="false"
+                    >
+                        <acount-search class="acount-search-class" :appId.sync="acountId" :multiple="false" request="1,3"></acount-search>
+                    </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" html-type="submit">查询</a-button>
+                    </a-form-item>
+                </a-row>
+            </a-form>
+            <a-button type="primary" class="upload-person" @click="handleAddAccountConfig">新建账户配置</a-button>
+        </div>
+        <div class="control-con-table">
+            <a-table
+                ref="table"
+                size="middle"
+                bordered
+                :columns="columns"
+                :dataSource="dataSource"
+                :pagination="false"
+            >
+                <span slot="customTitle">
+                    花费(元)
+                    <a-tooltip placement="top">
+                        <template slot="title">
+                            <span>当日花费</span>
+                        </template>
+                        <a-icon type="smile-o"/>
+                    </a-tooltip>
+                </span>
+                <span slot="acountRelax" slot-scope="text, record">
+                    <a-switch :checked="text === 0" @change="handleSwitchChang($event, record)"/>
+                </span>
+                <span slot="action" slot-scope="text, record">
+                    <a @click="handleEdit(record)">编辑</a>
+                    <a-divider type="vertical"/>
+                    <a @click="handleListDelete(record)">删除</a>
+                    <a-divider type="vertical"/>
+                    <a @click="handleUpdateMod(record)">修改出价</a>
+                    <a-divider type="vertical"/>
+                    <a-popover v-model="record.show" trigger="click">
+                        <template slot="content">
+                            <div><a-input v-model="budgetContent" placeholder="请输入" style="width: 140px;"/></div>
+                            <div style="margin-top: 10px;">
+                                <a-button
+                                    size="small"
+                                    type="primary"
+                                    style="margin-left: 15px;margin-right: 15px;"
+                                    @click="handlePopoverSure(record, 'budget')"
+                                >
+                                    确定
+                                </a-button>
+                                <a-button size="small" @click="handleBudgetPopover(record)">取消</a-button>
+                            </div>
+                        </template>
+                        <a>修改预算</a>
+                    </a-popover>
+                </span>
+            </a-table>
+            <a-pagination
+                class="pagin-table-class"
+                :total="totalAll"
+                :show-total="total => `共 ${totalAll} 条`"
+                size="small"
+                show-size-changer
+                show-quick-jumper
+                @change="onShowSizeChange"
+                @showSizeChange="onShowSizeChange"
+            />
+        </div>
+        <a-modal
+            title="修改出价"
+            v-if="modeVisible"
+            :visible="modeVisible"
+            dialog-class="mode-modal-class"
+            @ok="handleModeSure"
+            @cancel="handleModeCancel"
+        >
+            <div>
+                <a-form-model
+                    ref="ruleForm"
+                    :model="configForm"
+                    :rules="rules"
+                    :label-col="labelCol"
+                    :wrapper-col="wrapperCol"
+                >
+                    <a-form-model-item v-if="updateModTxt.adBidCreateType === 'FIX'" label="目标转化出价" prop="adCpaBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adCpaBid"
+                            :min="0.1"
+                            :step="0.01"
+                            placeholder="请输入"
+                        />
+                    </a-form-model-item>
+                    <div v-if="updateModTxt.adBidCreateType === 'RAND'">
+                        <a-form-model-item label="目标转化出价范围"
+                        class="dp-link-start" prop="adMinBid">
+                            <a-input-number
+                                class="common-input"
+                                v-model="configForm.adMinBid"
+                                :min="0.1"
+                                :max="10000"
+                                placeholder="请输入最小值"
+                            />
+                        </a-form-model-item>
+                        <span class="icon-span">~</span>
+                        <a-form-model-item class="dp-link-end" prop="adMaxBid">
+                            <a-input-number
+                                class="common-input"
+                                v-model="configForm.adMaxBid"
+                                :min="0.1"
+                                :max="10000"
+                                placeholder="请输入最大值"
+                            />
+                        </a-form-model-item>
+                    </div>
+                    <div v-if="updateModTxt.adBidCreateType === 'STEP'">
+                        <a-form-model-item label="目标转化出价范围" class="dp-link-start" prop="adMinBid">
+                            <a-input-number
+                                class="common-input"
+                                v-model="configForm.adMinBid"
+                                :min="0.1"
+                                :max="10000"
+                                placeholder="请输入最小值"
+                            />
+                        </a-form-model-item>
+                        <span class="icon-span">~</span>
+                        <a-form-model-item class="dp-link-end" prop="adMaxBid">
+                            <a-input-number
+                                class="common-input"
+                                v-model="configForm.adMaxBid"
+                                :min="0.1"
+                                :max="10000"
+                                placeholder="请输入最大值"
+                            />
+                        </a-form-model-item>
+                        <a-form-model-item label="浮动间隔" prop="adStepBid">
+                            <a-input-number
+                                class="common-input"
+                                v-model="configForm.adStepBid"
+                                placeholder="请输入浮动间隔"
+                            />
+                        </a-form-model-item>
+                    </div>
+                </a-form-model>
+            </div>
+        </a-modal>
+    </div>
+</template>
+<script>
+import AcountSearch from '@/views/modules/Statistics/components/Treeselect.vue';
+
+import {getAction, putAction, deleteAction} from '@/api/manage';
+import {mapGetters} from 'vuex';
+import {urlAcount} from './account-config-server.js';
+
+export default {
+    name: 'account-config',
+    components: {
+        AcountSearch
+    },
+    data() {
+        let adMinBidValidator = (rule, value, callback) => {
+            const finallyResult = Number(this.configForm.adMaxBid);
+            if (finallyResult !== '' && value && Number(value) < finallyResult) {
+                callback();
+            }
+            else {
+                callback('最低出价不能高于最高出价');
+            }
+        };
+        let adMaxBidValidator = (rule, value, callback) => {
+            const finallyResult = Number(this.configForm.adMinBid);
+            if (finallyResult !== undefined && value && Number(value) > finallyResult) {
+                callback();
+            }
+            else {
+                callback('最高出价不能低于最低出价');
+            }
+        };
+        let floatingIntervalValidator = (rule, value, callback) => {
+            const finallyResult = Number(this.configForm.adMinBid) + Number(value);
+            if (finallyResult !== undefined < Number(this.configForm.adMaxBid)) {
+                callback();
+            }
+            else {
+                callback('最低出价+浮动间隔<最高出价');
+            }
+        };
+        return {
+            labelCol: {span: 4},
+            wrapperCol: {span: 14},
+            configForm: {
+                adMinBid: undefined,
+                adMaxBid: undefined,
+                adStepBid: undefined,
+                adCpaBid: undefined
+            },
+            rules: {
+                adCpaBid: [
+                    {required: true, message: '请输入', trigger: 'blur'}
+                ],
+                adStepBid: [
+                    {required: true, message: '请输入', trigger: 'blur'},
+                    {validator: floatingIntervalValidator, trigger: 'blur'}
+                ],
+                adMinBid: [
+                    {required: true, message: '请输入最低出价', trigger: 'blur'},
+                    {validator: adMinBidValidator, trigger: 'blur'}
+                ],
+                adMaxBid: [
+                    {required: true, message: '请输入最高出价', trigger: 'blur'},
+                    {validator: adMaxBidValidator, trigger: 'blur'}
+                ]
+            },
+            modeVisible: false,
+            updateModTxt: {},
+            modContent: '',
+            budgetContent: '',
+            acountId: undefined, // 搜索的账户ID
+            totalAll: 0,
+            tablePag: {
+                page: 1,
+                size: 10
+            },
+            dataSource: [],
+            columns: [
+                {
+                    title: '开关',
+                    align: 'center',
+                    dataIndex: 'status',
+                    scopedSlots: {customRender: 'acountRelax'}
+                },
+                {
+                    title: '广告账户名称',
+                    align: 'center',
+                    dataIndex: 'accountId_dictText'
+                },
+                {
+                    title: '账户ID',
+                    align: 'center',
+                    dataIndex: 'accountId'
+                },
+                {
+                    title: '创建时间',
+                    dataIndex: 'createTime',
+                    align: 'center'
+                },
+                {
+                    title: '账户余额',
+                    dataIndex: 'validBalance',
+                    align: 'center'
+                },
+                {
+                    title: '账户日预算量(元)',
+                    dataIndex: 'adBudget',
+                    align: 'center'
+                },
+                {
+                    title: '出价(元)',
+                    dataIndex: 'adCpaBidStr',
+                    align: 'center'
+                },
+                {
+                    align: 'center',
+                    dataIndex: 'cost',
+                    slots: {title: 'customTitle'}
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'action',
+                    align: 'center',
+                    scopedSlots: {customRender: 'action'}
+                }
+            ]
+        };
+    },
+    created() {
+        this.form = this.$form.createForm(this);
+    },
+    mounted() {
+        this.handleInitTable();
+    },
+    methods: {
+        ...mapGetters(['nickname', 'avatar', 'userInfo']),
+        handleModeSure() {
+            let paramsData = new FormData();
+            if (this.updateModTxt.adBidCreateType === 'FIX') {
+                paramsData.append('type', 1);
+                paramsData.append('id', this.updateModTxt.id);
+                paramsData.append('adCpaBid', this.configForm.adCpaBid);
+            }
+            else if (this.updateModTxt.adBidCreateType === 'RAND') {
+                paramsData.append('type', 1);
+                paramsData.append('id', this.updateModTxt.id);
+                paramsData.append('adMinBid', this.configForm.adMinBid);
+                paramsData.append('adMaxBid', this.configForm.adMaxBid);
+            }
+            else if (this.updateModTxt.adBidCreateType === 'STEP') {
+                paramsData.append('type', 1);
+                paramsData.append('id', this.updateModTxt.id);
+                paramsData.append('adMinBid', this.configForm.adMinBid);
+                paramsData.append('adMaxBid', this.configForm.adMaxBid);
+                paramsData.append('adStepBid', this.configForm.adStepBid);
+            }
+            this.$refs.ruleForm.validate(valid => {
+                if (valid) {
+                    this.handlePopoverChange(paramsData);
+                }
+                else {
+                    console.log('error submit!!');
+                    return false;
+                }
+            });
+        },
+        handleModeCancel() {
+            this.adMinBid = undefined;
+            this.adMaxBid = undefined;
+            this.adStepBid = undefined;
+            this.adCpaBid = undefined;
+            this.modeVisible = false;
+        },
+        handleUpdateMod(record) {
+            this.updateModTxt = record;
+            this.modeVisible = true;
+        },
+        handlePopoverSure(record, type) {
+            const defaultList = {
+                accountId: record.accountId,
+                bid: this.modContent,
+                budget: this.budgetContent,
+                adId: record.adId ? record.adId : '',
+                id: record.id,
+                cost: record.cost
+            };
+            let paramsData = new FormData();
+            if (type === 'mod') {
+            }
+            else if (type === 'budget') {
+                if (Number(defaultList.budget) >= record.adBudget && Number(defaultList.budget) < (record.adBudget + 100)) {
+                    this.$message.error('单次修改预算幅度, 不能低于100.0元');
+                    return;
+                }
+                if (Number(defaultList.budget) <= record.adBudget && Number(defaultList.budget) > (record.adBudget - 100)) {
+                    this.$message.error('单次修改预算幅度, 不能低于100.0元');
+                    return;
+                }
+                record.show = false;
+                this.budgetContent = '';
+                paramsData.append('accountId', defaultList.accountId);
+                paramsData.append('adId', defaultList.adId);
+                paramsData.append('type', 2);
+                paramsData.append('budget', defaultList.budget);
+                paramsData.append('id', defaultList.id);
+                paramsData.append('cost', defaultList.cost);
+            }
+            this.handlePopoverChange(paramsData);
+        },
+        handlePopoverChange(data) {
+            putAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/updStaOrCpaOrBudgetById', data).then(result => {
+                if (result.code === 0) {
+                    this.$message.success(result.message);
+                    this.adMinBid = undefined;
+                    this.adMaxBid = undefined;
+                    this.adStepBid = undefined;
+                    this.adCpaBid = undefined;
+                    this.modeVisible = false;
+                    this.handleInitTable();
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleResetList() {
+            this.acountId = '';
+            this.handleInitTable();
+        },
+        handleInitTable() {
+            const paramsData = {
+                accountId: this.acountId,
+                loginUserId: this.userInfo().id,
+                pageNo: this.tablePag.page,
+                pageSize: this.tablePag.size
+            };
+            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/list', paramsData).then(result => {
+                if (result.code === 0) {
+                    result.result.records.forEach(item => {
+                        item.show = false;
+                        item.visible = false;
+                    });
+                    this.dataSource = result.result.records;
+                    this.totalAll = result.result.total;
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleListDelete(data) {
+            let that = this;
+            this.$confirm({
+                title: '删除提示',
+                content: '是否删除该条数据',
+                onOk() {
+                    deleteAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/delete', {id: data.id}).then(result => {
+                        if (result.code === 0) {
+                            that.handleInitTable();
+                            that.$message.success('删除成功');
+                        }
+                        else {
+                            that.$message.error(result.message);
+                        }
+                    }).catch(error => {
+                        console.log(error, 'eeee');
+                    });
+                }
+            });
+        },
+        handleBudgetPopover(record) {
+            record.show = false;
+        },
+        handleModPopover(record) {
+            record.visible = false;
+        },
+        handleQueryList(event) {
+            event.preventDefault();
+            this.handleInitTable();
+        },
+        onShowSizeChange(current, pageSize) {
+            this.tablePag = {
+                page: current,
+                size: pageSize
+            };
+            this.handleInitTable();
+        },
+        handleSwitchChang(checked, data) {
+            const paramsData = {
+                id: data.id,
+                state: checked ? 0 : 1,
+                accountId: data.accountId
+            };
+            const forDate = new FormData();
+            forDate.append('id', paramsData.id);
+            forDate.append('state', paramsData.state);
+            forDate.append('accountId', paramsData.accountId);
+            putAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/updStaById', forDate).then(result => {
+                if (result.code === 0) {
+                    this.$message.success(result.message);
+                    this.handleInitTable();
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleEdit(data) {
+            // TODO 切换路由时候,及时删除上一次相同路由
+            let params = {
+                accountModal: 'edit',
+                id: data.id
+            };
+            localStorage.setItem('queryList', JSON.stringify(params));
+            this.$router.push('/account-config/components/configuration-modal');
+        },
+        handleAddAccountConfig() {
+            let params = {
+                accountModal: 'add'
+            };
+            localStorage.setItem('queryList', JSON.stringify(params));
+            this.$router.push('/account-config/components/configuration-modal');
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+    @import "account-config";
+</style>

+ 237 - 0
src/views/modules/account-config/components/configuration-modal.less

@@ -0,0 +1,237 @@
+.configuration-modal {
+    .ant-modal-body {
+        height: 600px !important;
+        overflow-y: auto;
+    }
+    .config-form-modal {
+        .btn-Unique-con {
+            display: flex;
+            justify-content: flex-start;
+            .sure-btn {
+                margin-left: 20px;
+            }
+            .cancel-btn {
+                margin-left: 20px;
+                margin-right: 20px;
+            }
+        }
+        .separate-title-header {
+            font-size: 22px;
+            font-weight: bold;
+            line-height: 50px;
+            height: 50px;
+            padding-left: 30px;
+            margin-bottom: 15px;
+            background: #fff;
+            margin: 0;
+        }
+        .separate-module-con {
+            width: 100%;
+            background: #fff;
+            padding: 15px 0;
+            margin-bottom: 15px;
+            .select-orientation-content {
+                margin-left: 198px;
+                width: 440px;
+                border: 1px solid #eee;
+                height: 300px;
+                .orientation-header-title {
+                    height: 30px;
+                    line-height: 30px;
+                    background-color: #eee;
+                    text-indent: 12px;
+                    margin: 0;
+                }
+                .orientation-content-msg {
+                    height: 310px;
+                    text-align: center;
+                    .icon {
+                        font-size: 30px;
+                        margin-top: 100px;
+                        margin-bottom: 12px;
+                    }
+                }
+                .orientation-content-substance {
+                    height: 310px;
+                    margin: 12px;
+                    .content-substance-singal {
+                        height: 28px;
+                        line-height: 28px;
+                        .singal-spn {
+                            margin-right: 10px;
+                        }
+                    }
+                }
+            }
+            .ant-tabs-nav-container {
+                margin-left: 40px !important;
+            }
+            .select-orientation-class {
+                .ant-form-item-label {
+                    width: 200px;
+                }
+                .orientation-icon {
+                    left: -140px;
+                }
+            }
+            .form-line {
+                width: 100%;
+                height: 1px;
+                background: #eee;
+            }
+            .rock-title {
+                padding-left: 40px;
+                font-size: 18px;
+                font-weight: 700;
+            }
+            .ant-form-item-label {
+                width: 140px;
+            }
+            .dp-link-start {
+                display: inline-block;
+                .ant-form-item-label {
+                    width: 100px;
+                    margin-left: 43px;
+                }
+                .ant-form-item-control-wrapper {
+                    width: 163px;
+                }
+            }
+            .dp-link-end {
+                display: inline-block;
+                .ant-form-item-control {
+                    width: 250px !important;
+                }
+            }
+            .campaign-cnt-class {
+                display: inline-block;
+                .ant-form-item-label {
+                    width: 160px;
+                    margin-left: 73px;
+                }
+                .ant-form-item-control-wrapper {
+                    width: 110px;
+                }
+            }
+            .campaign-ad-class {
+                display: inline-block;
+                .ant-form-item-label {
+                    width: 110px;
+                }
+                .ant-form-item-control-wrapper {
+                    width: 120px;
+                }
+            }
+            .avatar-uploader > .ant-upload {
+                width: 128px;
+                height: 128px;
+                position: relative;
+            }
+            .ant-upload-select-picture-card i {
+                font-size: 32px;
+                color: #999;
+            }
+            .ant-upload-select-picture-card .ant-upload-text {
+                margin-top: 8px;
+                color: #666;
+            }
+            .upload-img-class {
+                position: absolute;
+                top: 0;
+                left: 0;
+                height: 100%;
+                .img-flex-url {
+                    width: 128px;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    height: 100%;
+                    img {
+                        max-width: 100%;
+                        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;
+                    }
+                }
+            }
+            /deep/ .ant-form-item-control-wrapper {
+                width: 80%;
+            }
+            .common-input {
+                width: 150px;
+            }
+            .common-input-long {
+                width: 320px;
+            }
+            .acount-search-class {
+                width: 350px;
+            }
+            
+            .form-itrm-icon {
+                position: absolute;
+                top: 3px;
+                left: -175px;
+            }
+            .advers-title-class {
+                margin-left: 10px;
+                margin-right: 15px;
+            }
+            .especial-label {
+                position: absolute;
+                left: -80px;
+                color: #f00;
+            }
+            .budget-mode-label {
+                top: -7px;
+                left: -50px;
+            }
+            .cpaBid-mode-label {
+                left: -108px;
+            }
+            .adver-position-radio {
+                margin-left: 140px;
+                margin-bottom: 15px;
+                .creative-label-content {
+                    width: 400px;
+                    height: 200px;
+                    padding: 10px;
+                    border: 1px solid #eee;
+                    .tag-select-class {
+                        margin-bottom: 15px;
+                    }
+                }
+                .examin-form-icon {
+                    font-size: 18px;
+                    color: #1890ff;
+                    cursor: pointer;
+                    margin-left: 10px;
+                }
+            }
+            .selected-city-arr {
+                width: 50%;
+                .city-arr-radio-group {
+                    margin-top: 20px;
+                    margin-bottom: 20px;
+                }
+            }
+            .position-radio-change {
+                margin-bottom: 10px;
+                /deep/ .ant-checkbox-wrapper {
+                    margin: 0 !important;
+                }
+            }
+        }
+    }
+}

文件差异内容过多而无法显示
+ 2079 - 0
src/views/modules/account-config/components/configuration-modal.vue


+ 72 - 0
src/views/modules/account-config/components/directional-logic/directional-logic.less

@@ -0,0 +1,72 @@
+.directional-logic-content {
+    .input-search {
+        width: 240px;
+        margin: 10px 0 10px 0;
+    }
+    .tree-select-class {
+        display: flex;
+        justify-content: space-between;
+        .class-left-header {
+            display: flex;
+            justify-content: space-between;
+            height: 50px;
+            line-height: 50px;
+            background-color: #fafafa;
+            border-bottom: 1px solid #eee;
+            text-indent: 10px;
+            .clear-all-tab {
+                margin-right: 10px;
+            }
+        }
+        .no-data-class {
+            height: 340px;
+            line-height: 340px;
+            text-align: center;
+        }
+        .select-class-left {
+            width: 68%;
+            height: 400px;
+            border: 1px solid #eee;
+            .class-left-content {
+                overflow-y: auto;
+                height: 340px;
+            }
+            .example {
+                text-align: center;
+                line-height: 200px;
+            }
+        }
+        .select-class-right {
+            width: 28%;
+            height: 400px;
+            border: 1px solid #eee;
+            .class-left-content {
+                padding: 0 10px;
+                height: 348px;
+                overflow-y: auto;
+                /deep/ .ant-tabs-nav-container {
+                    margin-left: 0 !important;
+                }
+                .apply-right-tree {
+                    display: flex;
+                    justify-content: space-between;
+                    align-items: baseline;
+                    .left-content-p {
+                        display: inline-block;
+                        width: 85%;
+                        height: 25px;
+                        line-height: 25px;
+                        margin: 0;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap;
+                    }
+                    .delete-type-class {
+                        color: #1890ff;
+                        cursor: pointer;
+                    }
+                }
+            }
+        }
+    }
+}

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

@@ -0,0 +1,480 @@
+<template>
+    <div class="directional-logic-content">
+        <div v-if="multitype === 'all'" class="tree-select-class">
+            <div class="select-class-left">
+                <a-tabs v-model="selectPackageTabs" @change="handleTabsChange">
+                    <a-tab-pane key="1" tab="定向池">
+                        <a-input-search class="input-search" v-model="directInput" placeholder="请输入账户名或ID" @change="handleSearchPack($event, 'all', 'direct')" />
+                        <a-table
+                            :columns="columns"
+                            :data-source="tableDataAllDirect"
+                            :row-selection="rowSelectionAllDirect"
+                            :scroll="{y: 200}"
+                            :pagination="false"
+                        >
+                            <span slot="acountRelax" slot-scope="text, record">
+                                {{ record.name }}({{ record.key }})
+                            </span>
+                        </a-table>
+                    </a-tab-pane>
+                    <a-tab-pane key="2" tab="排除池">
+                        <a-input-search class="input-search" v-model="excludeInput" placeholder="请输入账户名或ID" @change="handleSearchPack($event, 'all', 'exclude')" />
+                        <a-table
+                            :columns="columns"
+                            :data-source="tableDataAllExclude"
+                            :row-selection="rowSelectionAllExclude"
+                            :scroll="{y: 200}"
+                            :pagination="false"
+                        >
+                            <span slot="acountRelax" slot-scope="text, record">
+                                {{ record.name }}(record.key)
+                            </span>
+                        </a-table>
+                    </a-tab-pane>
+                </a-tabs>
+            </div>
+            <div class="select-class-right">
+                <div class="class-left-header">
+                    已选<span class="clear-all-tab"><a @click="handleDelAloneAll('all')">清空</a></span>
+                </div>
+                <div class="class-left-content">
+                    <a-tabs v-model="selectAllRightTabs">
+                        <a-tab-pane key="3">
+                            <span slot="tab">
+                                定向({{ tableSelectDirectIds.length || 0 }})
+                            </span>
+                            <div v-if="tableSelectDirectData.length" class="class-left-content">
+                                <div class="apply-right-tree" v-for="item in tableSelectDirectData" :key="item.key">
+                                    <p class="left-content-p">
+                                        <a-tooltip placement="left">
+                                            <template slot="title">
+                                                <span>{{ item.name }}</span>
+                                            </template>
+                                            {{ item.name }}
+                                        </a-tooltip>
+                                    </p>
+                                    <a-icon type="delete" class="delete-type-class" @click="handleDelTree(item, 'all', 'direct')" />
+                                </div>
+                            </div>
+                            <div v-else class="no-data-class">暂无数据</div>
+                        </a-tab-pane>
+                        <a-tab-pane key="4">
+                            <span slot="tab">
+                                排除({{ tableSelectExcludeIds.length || 0 }})
+                            </span>
+                            <div v-if="tableSelectExcludeData.length" class="class-left-content">
+                                <div class="apply-right-tree" v-for="item in tableSelectExcludeData" :key="item.key">
+                                    <p class="left-content-p">
+                                        <a-tooltip placement="left">
+                                            <template slot="title">
+                                                <span>{{ item.name }}</span>
+                                            </template>
+                                            {{ item.name }}
+                                        </a-tooltip>
+                                    </p>
+                                    <a-icon type="delete" class="delete-type-class" @click="handleDelTree(item, 'all', 'exclude')" />
+                                </div>
+                            </div>
+                            <div v-else class="no-data-class">暂无数据</div>
+                        </a-tab-pane>
+                    </a-tabs>
+                </div>
+            </div>
+        </div>
+        <div v-else>
+            <a-input-search class="input-search" v-model="aloneInput" placeholder="请输入账户名或ID" @change="handleSearchPack($event, 'alone')" />
+            <div class="tree-select-class">
+                <div class="select-class-left">
+                    <a-table
+                        :columns="columns"
+                        :data-source="tableDataAlone"
+                        :row-selection="{onChange: handleRowSelection, selectedRowKeys: tableSelectIds}"
+                        :scroll="{y: 300}"
+                        :pagination="false"
+                    >
+                        <span slot="acountRelax" slot-scope="text, record">
+                            {{ record.name }}(record.key)
+                        </span>
+                    </a-table>
+                </div>
+                <div class="select-class-right">
+                    <div class="class-left-header">
+                        已选({{ packtype === 'directional' ? '定向' : '排除'}})
+                        <span class="clear-all-tab"><a @click="handleDelAloneAll('alone')">清空</a></span>
+                    </div>
+                    <div v-if="selectRightData.length" class="class-left-content">
+                        <div class="apply-right-tree" v-for="item in selectRightData" :key="item.key">
+                            <p class="left-content-p">
+                                <a-tooltip placement="left">
+                                    <template slot="title">
+                                        <span>{{ item.name }}</span>
+                                    </template>
+                                    {{ item.name }}
+                                </a-tooltip>
+                            </p>
+                            <a-icon type="delete" class="delete-type-class" @click="handleDelTree(item, 'alone')" />
+                        </div>
+                    </div>
+                    <div v-else class="no-data-class">暂无数据</div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name: 'directional-logic',
+    props: {
+        packtype: {
+            type: String,
+            default: ''
+        },
+        multitype: {
+            type: String,
+            default: ''
+        },
+        defaultlist: {
+            type: Array,
+            default: () => {
+                return [];
+            }
+        },
+        updatelistinclude: {
+            type: Array,
+            default: () => {
+                return [];
+            }
+        },
+        updatelistexclude: {
+            type: Array,
+            default: () => {
+                return [];
+            }
+        }
+    },
+    data() {
+        return {
+            aloneInput: '',
+            directInput: '',
+            excludeInput: '',
+            selectPackageTabs: '1',
+            selectAllRightTabs: '3',
+            selectRightData: [],
+            tableSelectIds: [],
+            columns: [
+                {
+                    title: '人群包',
+                    dataIndex: 'name',
+                    key: 'name',
+                    ellipsis: true,
+                    scopedSlots: {customRender: 'acountRelax'}
+                },
+                {
+                    title: '属性',
+                    dataIndex: 'tag',
+                    key: 'tag',
+                    width: '30%',
+                    ellipsis: true
+                },
+                {
+                    title: '创建时间',
+                    dataIndex: 'create_time',
+                    width: '30%',
+                    key: 'create_time',
+                    ellipsis: true
+                }
+            ],
+            tableDataAllDirect: [
+                {
+                    key: 1,
+                    name: '求大城市能促进快下班',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                },
+                {
+                    key: 2,
+                    name: '好处费对该回复啊花开待夏',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                }
+            ], // 全选-定向数据
+            updateTableAllDirect: [
+                {
+                    key: 1,
+                    name: '求大城市能促进快下班',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                },
+                {
+                    key: 2,
+                    name: '好处费对该回复啊花开待夏',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                }
+            ], // 全选-定向数据-copy
+            tableSelectDirectIds: [], // 全选-定向-table选中ID
+            tableSelectDirectData: [], // 全选-定向-右侧选中数据
+            tableDataAllExclude: [
+                {
+                    key: 1,
+                    name: '差不多不是',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                },
+                {
+                    key: 2,
+                    name: '很高的一位杰克逊的本质',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                }
+            ], // 全选-排除数据
+            updateTableAllExclude: [
+                {
+                    key: 1,
+                    name: '差不多不是',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                },
+                {
+                    key: 2,
+                    name: '很高的一位杰克逊的本质',
+                    age: '系统推荐',
+                    address: '2020-12-12'
+                }
+            ], // 全选-排除数据-copy
+            tableSelectExcludeIds: [], // 全选-排除-table选中ID
+            tableSelectExcludeData: [], // 全选-排除-右侧选中数据
+            tableDataAlone: [],
+            updateTreeDataAlone: []
+        };
+    },
+    computed: {
+        rowSelectionAllDirect() {
+            return {
+                onChange: (selectedRowKeys, selectedRows) => {
+                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
+                    this.tableSelectDirectIds = selectedRows && selectedRows.map(item => item.key);
+                    this.tableSelectDirectData = selectedRows;
+                },
+                selectedRowKeys: this.tableSelectDirectIds,
+                getCheckboxProps: record => ({
+                    props: {
+                        disabled: this.tableSelectExcludeIds.includes(record.key),
+                        name: record.name,
+                        defaultChecked: this.tableSelectDirectIds.includes(record.key)
+                    }
+                })
+            };
+        },
+        rowSelectionAllExclude() {
+            return {
+                onChange: (selectedRowKeys, selectedRows) => {
+                    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
+                    this.tableSelectExcludeIds = selectedRows && selectedRows.map(item => item.key);
+                    this.tableSelectExcludeData = selectedRows;
+                },
+                selectedRowKeys: this.tableSelectExcludeIds,
+                getCheckboxProps: record => ({
+                    props: {
+                        disabled: this.tableSelectDirectIds.includes(record.key),
+                        name: record.name,
+                        defaultChecked: this.tableSelectExcludeIds.includes(record.key)
+                    }
+                })
+            };
+        }
+    },
+    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) {
+                console.log(newVal, '----newVal--val');
+                this.tableDataAllDirect = newVal;
+                this.updateTableAllDirect = newVal;
+                this.tableDataAllExclude = newVal;
+                this.updateTableAllExclude = newVal;
+                this.tableDataAlone = newVal;
+                this.updateTreeDataAlone = newVal;
+            }
+        },
+        packtype(newVal, oldVal) {
+            console.log(newVal, 'new--new');
+            if (newVal === 'directional') {
+                this.tableSelectIds = [];
+                this.selectRightData = [];
+                this.tableSelectDirectIds = [];
+                this.tableSelectDirectData = [];
+                this.tableSelectExcludeIds = [];
+                this.tableSelectExcludeData = [];
+            }
+            else if (newVal === 'exclude') {
+                this.tableSelectIds = [];
+                this.selectRightData = [];
+                this.tableSelectDirectIds = [];
+                this.tableSelectDirectData = [];
+                this.tableSelectExcludeIds = [];
+                this.tableSelectExcludeData = [];
+            }
+            else if (newVal === 'twoway') {
+                this.tableSelectIds = [];
+                this.selectRightData = [];
+            }
+        }
+    },
+    mounted() {
+        this.tableDataAllDirect = this.defaultlist;
+        this.updateTableAllDirect = this.defaultlist;
+        this.tableDataAllExclude = this.defaultlist;
+        this.updateTableAllExclude = this.defaultlist;
+        this.tableDataAlone = this.defaultlist;
+        this.updateTreeDataAlone = this.defaultlist;
+        
+        console.log(this.updateTableAllDirect, 'this.updateTableAllDirect');
+        console.log(this.updatelistinclude, this.updatelistexclude, '--00--00--00--0--555555');
+        if (this.updatelistinclude.length && this.updatelistexclude.length) {
+            this.tableSelectDirectIds = [...this.updatelistinclude];
+            this.tableSelectExcludeIds = [...this.updatelistexclude];
+            this.updateTableAllDirect.forEach(item => {
+                this.updatelistinclude.forEach(val => {
+                    if (item.key === val) {
+                        this.tableSelectDirectData.push(item);
+                    }
+                });
+            });
+            this.updateTableAllExclude.forEach(item => {
+                this.updatelistexclude.forEach(val => {
+                    if (item.key === val) {
+                        this.tableSelectExcludeData.push(item);
+                    }
+                });
+            });
+        }
+        else if (this.updatelistinclude.length && !this.updatelistexclude.length) {
+            console.log(11111);
+            this.tableSelectIds = [...this.updatelistinclude];
+            this.updateTableAllDirect.forEach(item => {
+                this.updatelistinclude.forEach(val => {
+                    if (item.key === val) {
+                        this.selectRightData.push(item);
+                    }
+                });
+            });
+        }
+        else if (!this.updatelistinclude.length && this.updatelistexclude.length) {
+            console.log(222222);
+            this.tableSelectIds = [...this.updatelistexclude];
+            this.updateTableAllDirect.forEach(item => {
+                this.updatelistexclude.forEach(val => {
+                    if (item.key === val) {
+                        this.selectRightData.push(item);
+                    }
+                });
+            });
+            console.log(this.selectRightData, 'this.selectRightData--this.selectRightData');
+        }
+    },
+    methods: {
+        handleTabsChange(e) {
+            this.tableDataAllDirect = [];
+            this.tableDataAllExclude = [];
+            this.directInput = '';
+            this.excludeInput = '';
+            this.$nextTick(() => {
+                this.tableDataAllDirect = this.updateTableAllDirect;
+                this.tableDataAllExclude = this.updateTableAllExclude;
+            });
+        },
+        handleSearchPack(e, type, style) {
+            const value = e.target.value;
+            if (type === 'alone') {
+                let defaultList = [];
+                this.updateTreeDataAlone.forEach(item => {
+                    if (item.name && item.name.indexOf(value) !== -1) {
+                        defaultList.push(item);
+                    }
+                });
+                this.tableDataAlone = defaultList;
+            }
+            else if (type === 'all') {
+                if (style === 'direct') {
+                    let defaultListOne = [];
+                    this.updateTableAllDirect.forEach(item => {
+                        if (item.name && item.name.indexOf(value) !== -1) {
+                            defaultListOne.push(item);
+                        }
+                    });
+                    this.tableDataAllDirect = defaultListOne;
+                }
+                else if (style === 'exclude') {
+                    let defaultListTwo = [];
+                    this.updateTableAllExclude.forEach(item => {
+                        if (item.name && item.name.indexOf(value) !== -1) {
+                            defaultListTwo.push(item);
+                        }
+                    });
+                    this.tableDataAllExclude = defaultListTwo;
+                }
+            }
+        },
+        handleRowSelection(selectedRowKeys, selectedRows) {
+            this.tableSelectIds = selectedRowKeys;
+            this.selectRightData = selectedRows;
+            this.$emit('selection-alone-event', selectedRowKeys);
+        },
+        handleSelectionDirect(selectedRowKeys, selectedRows) {
+            this.tableSelectDirectIds = selectedRowKeys;
+            this.tableSelectDirectData = selectedRows;
+            this.$emit('selection-direct-event', selectedRowKeys);
+        },
+        handleSelectionExclude(selectedRowKeys, selectedRows) {
+            this.tableSelectExcludeIds = selectedRowKeys;
+            this.tableSelectExcludeData = selectedRows;
+            this.$emit('selection-exclude-event', selectedRowKeys);
+        },
+        handleDelTree(list, type, style) {
+            if (type === 'alone') {
+                let formData = this.selectRightData;
+                this.selectRightData = formData.filter(item => list.key !== item.key);
+                this.tableSelectIds = this.selectRightData.map(item => item.key);
+            }
+            else if (type === 'all') {
+                if (style === 'direct') {
+                    let directData = this.tableSelectDirectData;
+                    this.tableSelectDirectData = directData.filter(item => list.key !== item.key);
+                    this.tableSelectDirectIds = this.tableSelectDirectData.map(item => item.key);
+                }
+                else if (style === 'exclude') {
+                    let excludeData = this.tableSelectExcludeData;
+                    this.tableSelectExcludeData = excludeData.filter(item => list.key !== item.key);
+                    this.tableSelectExcludeIds = this.tableSelectExcludeData.map(item => item.key);
+                }
+            }
+        },
+        handleDelAloneAll(type) {
+            if (type === 'alone') {
+                this.selectRightData = [];
+                this.tableSelectIds = [];
+            }
+            else if (type === 'all') {
+                this.tableSelectDirectIds = [];
+                this.tableSelectDirectData = [];
+                this.tableSelectExcludeIds = [];
+                this.tableSelectExcludeData = [];
+            }
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+    @import 'directional-logic';
+</style>

文件差异内容过多而无法显示
+ 634 - 73
src/views/modules/autoLaunch/configLaunchInfo.vue


+ 59 - 13
src/views/modules/autoLaunch/configLaunchList.vue

@@ -48,8 +48,32 @@
                         </a-spin>    
                         
                     </span>
-                    <span slot="cpaBid" slot-scope="text">
-                        {{text/1000}}
+                    <span slot="cpaType" slot-scope="text,record">
+                        {{record.cpaBid.includes('/')?'阶梯出价':record.cpaBid.includes('-')?"随机出价":"统一出价"}}
+                    </span>
+                    <div slot="cpaBid" slot-scope="text,record">
+                        <!-- {{
+                          text==0?record.roiRatio:
+                          text.includes('/')? text.split 
+                        }} -->
+                        <span v-if="text===0">{{record.roiRatio}}</span>
+                        <span v-else-if="text.includes('/')">
+                            <!-- {{text.split('/')}} -->
+                            <span v-for="(item,index) in text.split('/')">
+                                {{item/1000+(index === text.split('/').length-1?'':'/')}}
+                            </span>
+                        </span>
+                        <span v-else-if="text.includes('-')">
+                            <!-- {{text.split('/')}} -->
+                            <span v-for="(item,index) in text.split('-')">
+                                {{item/1000+(index === text.split('-').length-1?'':'-')}}
+                            </span>
+                        </span>
+                        <span v-else>{{text/1000}}</span>
+                        
+                    </div>
+                    <span slot="ocpxActionType" slot-scope="text">
+                        {{text|ocpxActionType}}
                     </span>
                     <span slot="authName" slot-scope="text">
                         <!-- <a href="javascript:;" >{{text}}</a> -->
@@ -179,6 +203,20 @@ const strategyColumns = [
     scopedSlots: { customRender: 'createTime' },
         
   },
+    {
+        title: '转化目标',
+        dataIndex: 'ocpxActionType',
+        align: 'center',    
+        scopedSlots: { customRender: 'ocpxActionType' },
+        // sorter:() => {}
+    },
+     {
+        title: '出价类型',
+        dataIndex: 'cpaType',
+        align: 'center',    
+        scopedSlots: { customRender: 'cpaType' },
+        // sorter:() => {}
+    },
   {
         title: '出价',
         dataIndex: 'cpaBid',
@@ -403,18 +441,26 @@ export default {
             this.$router.push(`/autoLaunch/configLaunchInfo?id=${record.id}`)
         },
         deleteRecord(record){
-            this.loading=true
-            deleteAction(this.url.delete,{
-                id:record.id
-            }).then(res=>{
-                this.loading=false
-                if(res.success){
-                    this.$message.success(res.message);
-                    this.getStrategyList()
-                }else{
-                    this.$message.success(res.message);
+            let that = this
+            this.$confirm({
+                title: '删除提示',
+                content: '是否删除该账户配置信息?',
+                onOk() {
+                    that.loading=true
+                    deleteAction(that.url.delete,{
+                        id:record.id
+                    }).then(res=>{
+                        that.loading=false
+                        if(res.success){
+                            that.$message.success(res.message);
+                            that.getStrategyList()
+                        }else{
+                            that.$message.success(res.message);
+                        }
+                    })
                 }
-            })
+            });
+           
         },
         filterOption(input, option) {
             return (

+ 106 - 0
src/views/modules/creative-copywrit/creative-copywrit.less

@@ -0,0 +1,106 @@
+@import '~@assets/less/common.less';
+
+/deep/ .examin-modal {
+    width: 700px !important;
+    .ant-modal-body {
+        height: 500px !important;
+        overflow-y: auto;
+    }
+    .acount-title {
+        display: flex;
+        font-size: 14px;
+        height: 40px;
+        line-height: 40px;
+        .acount-title-left {
+            margin-right: 20px;
+            width: 100px;
+        }
+        .examin-form-model {
+            width: 500px;
+            position: relative;
+            .examin-form-num {
+                position: absolute;
+                top: -10px;
+                right: -50px;
+            }
+            .examin-form-icon {
+                position: absolute;
+                top: 0px;
+                right: -85px;
+                font-size: 18px;
+                color: #1890ff;
+                cursor: pointer;
+            }
+        }
+        .examin-form-input {
+            width: 380px;
+        }
+    }
+    .push-plate {
+        margin-bottom: 20px;
+        .examin-select-title {
+            margin: 0 20px 0 20px;
+        }
+    }
+}
+
+/deep/ .recommend-modal {
+    width: 700px !important;
+    .ant-modal-body {
+        height: 500px !important;
+        overflow-y: auto;
+    }
+    .recommend-modal-header {
+        display: flex;
+        align-items: center;
+    }
+    .recommend-modal-content {
+        .check-box-class {
+            display: inline-block;
+            width: 50%;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            margin-bottom: 15px;
+        }
+    }
+}
+
+.solgan-whole-content {
+    display: flex;
+    height: 300px;
+    overflow-y: auto;
+    .solgan-title-header {
+        padding-top: 10px;
+        margin-right: 20px;
+        color: rgba(0, 0, 0, 0.85);
+    }
+    .solgan-form-class {
+        .examin-form-input {
+            width: 380px;
+        }
+        /deep/ .ant-form-item-children {
+            display: inline-flex;
+            align-items: center;
+        }
+        .default-value-class {
+            display: inline-block;
+            width: 300px;
+            overflow: hidden;
+            white-space: nowrap;
+            text-overflow: ellipsis;
+        }
+        .solgan-form-model {
+            .examin-form-num {
+                margin-left: 10px;
+                margin-right: 5px;
+            }
+            .examin-form-icon {
+                margin: 0 5px 0 5px;
+                font-size: 18px;
+                color: #1890ff;
+                cursor: pointer;
+            }
+        }
+    }
+}

文件差异内容过多而无法显示
+ 3126 - 0
src/views/modules/creative-copywrit/creative-copywrit.vue


+ 11 - 5
src/views/modules/crowd-control/components/tree-select/tree-select.vue

@@ -69,7 +69,8 @@ export default {
             applyTypeOption: [],
             selectRightData: new Set(),
             spinning: true,
-            leftTreeNoData: false
+            leftTreeNoData: false,
+            middleValue: []
         };
     },
     mounted() {
@@ -146,6 +147,12 @@ export default {
         onChange(e) {
             const value = e.target.value;
             this.treeData = value !== '' ? this.getNewTreeData(this.updateTreeData, value) : [...this.updateTreeData];
+            if(value !== '') {
+                this.middleValue = this.checkedKeys.filter(item=>typeof item === 'number');
+            }
+            else {
+                this.middleValue = [];
+            }
             if (!this.treeData.length) {
                 this.spinning = false;
                 this.leftTreeNoData = true;
@@ -230,12 +237,11 @@ export default {
             }
         },
         onCheck(checkedKeys) {
-            // this.checkedKeys = checkedKeys;
             this.nodes(this.treeData, checkedKeys);
-            const filterCheckKey = this.checkedKeys.filter(item=>typeof item ==='number');
-            let filterCheckKeySet = new Set(filterCheckKey);
+            const filterCheckKey = this.checkedKeys.filter(item => typeof item === 'number');
+            let filterCheckKeySet = new Set(filterCheckKey.concat(this.middleValue));
             let selectRightDataSet = new Set(this.selectRightData);
-            let difference = new Set([...selectRightDataSet].filter((item) => !filterCheckKeySet.has(item.key)));
+            let difference = new Set([...selectRightDataSet].filter(item => !filterCheckKeySet.has(item.key)));
             this.selectRightData.delete(...difference);
             this.applyTypeOption = this.Es6duplicate([...this.selectRightData], 'key');
             const changeSelectData = this.applyTypeOption.map(item => item.key);

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

@@ -389,7 +389,7 @@ export default {
             });
         },
         handleDelete(data) {
-            let that = this
+            let that = this;
             this.$confirm({
                 title: '删除提示',
                 content: '确定要删除这一条吗?',
@@ -524,8 +524,8 @@ export default {
                         console.log(error, 'eeee');
                         reject();
                     });
-                })
-            })
+                });
+            });
         },
         handleChange(info) {
             this.fileList = info.fileList;

+ 40 - 2
src/views/modules/kuaishouapp/account/stepForm/Step3.vue

@@ -705,15 +705,20 @@ li.chouzhen.first:before {
       <img :src="showImageStr" style="width: 100%" />
     </a-modal>
 
-    <a-modal :maskClosable="false" title="选择素材" v-model="visibleMatemal" @ok="handleOkShow" :width="1000">
+    <a-modal :maskClosable="false" title="选择素材" v-model="visibleMatemal" @ok="handleOkShow" @cancel="cancelAll" :width="1000">
       <a-tabs type="card" @change="callback" v-model="active" class="check-video">
         <a-tab-pane :tab="item.label" v-for="item of tab" :key="item.value">
           <a-row :gutter="24">
-            <a-col :span="12">
+            <a-col :span="9">
               <a-form-item label="日期选择" :labelCol="labelCol" :wrapperCol="wrapperCol">
                 <a-range-picker name="buildTime" v-model="time" />
               </a-form-item>
             </a-col>
+            <a-col :span="9">
+              <a-form-item label="唯一标识" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input placeholder="请输入唯一标识,多个以,隔开" v-model="md5Str"/>
+              </a-form-item>
+            </a-col>
             <!-- <a-col :span="12">
               <a-form-item label="筛选条件" :labelCol="labelCol" :wrapperCol="wrapperCol">
                 <a-select v-model="orderBy" style="width: 100%">
@@ -722,6 +727,11 @@ li.chouzhen.first:before {
                 </a-select>
               </a-form-item>
             </a-col> -->
+            <a-col :span="4">
+              <a-button type="primary" style="position: relative;top: 4px;margin-left:5px" @click="searchVideo">
+                搜索
+              </a-button>
+            </a-col>
           </a-row>
 
           <ul v-if="dataSource.length > 0" style="overflow: auto; padding-left: 0">
@@ -925,6 +935,7 @@ export default {
   },
   data() {
     return {
+      md5Str:"",
       fieldNames: {
         label: 'category_name',
         value: 'category_id',
@@ -1088,6 +1099,24 @@ export default {
     }
   },
   methods: {
+    searchVideo() {
+      var params = {}
+      params.accountId = localStorage.getItem('campaignAccountId')
+      params.materialType = this.creativeMaterialType
+      params.pageSize = this.ipagination.pageSize
+      params.pageNo = 1
+      params.status = 0
+      params.channelType = this.channelType
+      params.orderBy = this.orderBy
+      params.signatures = this.md5Str
+      if (this.time.length > 0) {
+        // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
+        // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+        params.startDate = moment(this.time[0]).format('YYYY-MM-DD') + ' 00:00:00'
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD') + ' 23:59:59'
+      }
+      this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
+    },
     getInfo(item) {
       if (this.tagName == '') {
         this.$message.error('请输入分类名称')
@@ -1550,6 +1579,7 @@ export default {
       params.channelType = this.channelType
       params.status = 0
       params.orderBy = this.orderBy
+      params.signatures = this.md5Str
       if (this.time.length > 0) {
         // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
         // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
@@ -1819,6 +1849,7 @@ export default {
           params.status = 0
           params.channelType = this.channelType
           params.orderBy = this.orderBy
+          params.signatures = this.md5Str
           if (this.time.length > 0) {
             // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
             // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
@@ -2073,6 +2104,10 @@ export default {
     showStickerStyles(value) {
       return this.stickerStyles.filter((item) => item.overlay_type == value)[0].overlay_preview_url
     },
+    cancelAll() {
+      this.visibleMatemal = false
+      this.md5Str = ""
+    },
     handleOkShow(e) {
       //
 
@@ -2235,6 +2270,7 @@ export default {
         params.startDate = moment(n[0]).format('YYYY-MM-DD') + ' 00:00:00'
         params.endDate = moment(n[1]).format('YYYY-MM-DD') + ' 23:59:59'
         params.orderBy = this.orderBy
+        params.signatures = this.md5Str
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       } else {
         var params = {}
@@ -2245,6 +2281,7 @@ export default {
         params.status = 0
         params.channelType = this.channelType
         params.orderBy = this.orderBy
+        params.signatures = this.md5Str
         this.ipagination.current = 1
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       }
@@ -2257,6 +2294,7 @@ export default {
       params.pageNo = 1
       params.status = 0
       params.channelType = this.channelType
+      params.signatures = this.md5Str
       if (this.time.length > 0) {
         params.startDate = moment(this.time[0]).format('YYYY-MM-DD') + ' 00:00:00'
         params.endDate = moment(this.time[1]).format('YYYY-MM-DD') + ' 23:59:59'

+ 5 - 0
src/views/modules/kuaishouapp/account/stepForm/stepModule/selectRegion.vue

@@ -283,6 +283,7 @@
         })
       },
       checkAllBox() {
+        this.showCityData = false
         this.checkMatched = []
         this.checkData = []
         if (this.checkAll) {
@@ -342,6 +343,7 @@
         } else {
           this.checkAll = false
         }
+        this.showCity(item,index)
         this.$emit('update:checkData', this.checkData)
       },
       checkAllBoxCity() {
@@ -369,6 +371,7 @@
         if (allCity.length == this.city.length) {
           this.checkMatched.push(this.nowProvince.value)
           this.checkData.push(this.nowProvince)
+          this.showCityData = false
           for (var i = 0; i < allCity.length; i++) {
             for (var j = 0; j < this.checkData.length; j++) {
               if (allCity[i] == this.checkData[j].value) {
@@ -387,6 +390,7 @@
           } else {
             this.checkAll = false
           }
+          
         } else {
           if (this.checkMatched.indexOf(this.nowProvince.value) != -1) {
             var index1 = this.checkData.findIndex(v => v.value === this.nowProvince.value)
@@ -402,6 +406,7 @@
             var index1 = this.checkData.findIndex(v => v.value === item.value)
             this.checkData.splice(index1, 1)
           }
+          
         }
         this.$emit('update:checkData', this.checkData)
       },

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

@@ -1223,7 +1223,6 @@ export default {
     },
     getAppAllElse(e) {
       this.checkArr = this.optionsAll
-      // this.getAppAll()
       var data = ''
       if (this.$route.path == '/creat/creatUnit') {
         data = localStorage.getItem('campaignAccountId')

+ 50 - 2
src/views/modules/kuaishouapp/batchCreation/creat/creatUnit.vue

@@ -70,6 +70,20 @@
         <a-button type="primary" @click="addApplication" :loading="tongbuLoading"> 刷新应用</a-button>
       </a-form-item>
       <a-form-item
+        label="调起链接"
+        :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
+        :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
+        v-if="campaignType == '2'"
+      >
+        <a-switch default-checked v-model="uriCheck"/>
+        <span style="color:red"> 需加白使用</span>
+        <div v-if="uriCheck">
+            <a-input placeholder="请填写链接" v-decorator="['schemaUri', { rules: [{ message:'链接不能为空'}] }]" />
+        </div>
+      </a-form-item>
+
+     
+      <a-form-item
         label="转化类型"
         :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
         :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
@@ -800,15 +814,23 @@
          
         <a-tab-pane :tab="item.label" v-for="item of tab" :key="item.value">
           <a-row :gutter="24">
-            <a-col :span="12">
+            <a-col :span="9">
               <a-form-item label="日期选择" :labelCol="labelCol" :wrapperCol="wrapperCol">
                 <a-range-picker name="buildTime" v-model="time" />
               </a-form-item>
             </a-col>
-            <a-col :span="12">
+             <a-col :span="9">
+              <a-form-item label="唯一标识" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input placeholder="请输入唯一标识,多个以,隔开" v-model="md5Str"/>
+              </a-form-item>
+            </a-col>
+            <a-col :span="4">
               <a-button style="position: relative;top: 4px;" @click="selectAllVideo">
                 全选
               </a-button>
+              <a-button type="primary" style="position: relative;top: 4px;margin-left:5px" @click="searchVideo">
+                搜索
+              </a-button>
             </a-col>
 
             <!-- <a-col :span="12">
@@ -1121,6 +1143,8 @@ export default {
 
   data() {
     return {
+      md5Str:'',
+      uriCheck: false,
       templateLoading: false,
       dataOne: [],
       actionBarTextList: [],
@@ -1319,6 +1343,24 @@ export default {
     },
   },
   methods: {
+    searchVideo() {
+      var params = {}
+      params.accountId = localStorage.getItem('campaignAccountId')
+      params.materialType = this.creativeMaterialType
+      params.pageSize = this.ipagination.pageSize
+      params.pageNo = 1
+      params.status = 0
+      params.channelType = this.channelType
+      params.orderBy = this.orderBy
+      params.signatures = this.md5Str
+      if (this.time.length > 0) {
+        // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
+        // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+        params.startDate = moment(this.time[0]).format('YYYY-MM-DD') + ' 00:00:00'
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD') + ' 23:59:59'
+      }
+      this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
+    },
     tongbu() {
       this.tongbuLoading = true
       getAction('/kuaishou/batch/syncVideo', {
@@ -1335,6 +1377,7 @@ export default {
           params.status = 0
           params.channelType = this.channelType
           params.orderBy = this.orderBy
+          params.signatures = this.md5Str
           if (this.time.length > 0) {
             // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
             // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
@@ -1808,6 +1851,7 @@ export default {
       params.channelType = this.channelType
       params.status = 0
       params.orderBy = this.orderBy
+      params.signatures = this.md5Str
       if (this.time.length > 0) {
         // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
         // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
@@ -1819,6 +1863,8 @@ export default {
     cancelAll() {
       // this.checkVideoAll = []
       // this.checkVideoWei = []
+      this.visibleMatemal = false
+      this.md5Str = ""
     },
     handleOkShow() {
       // this.checkVideoAll = [...new Set(this.checkVideoAll)]
@@ -2390,6 +2436,7 @@ export default {
         params.startDate = moment(n[0]).format('YYYY-MM-DD') + ' 00:00:00'
         params.endDate = moment(n[1]).format('YYYY-MM-DD') + ' 23:59:59'
         params.orderBy = this.orderBy
+        params.signatures = this.md5Str
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       } else {
         var params = {}
@@ -2400,6 +2447,7 @@ export default {
         params.status = 0
         params.channelType = this.channelType
         params.orderBy = this.orderBy
+        params.signatures = this.md5Str
         this.ipagination.current = 1
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       }

+ 68 - 3
src/views/modules/kuaishouapp/newBatch/index.vue

@@ -1797,7 +1797,7 @@ li.chouzhen.first:before {
         </div>
         <a-tab-pane :tab="item.label" v-for="item of tab" :key="item.value">
           <a-row :gutter="24">
-            <a-col :span="12">
+            <a-col :span="9">
               <a-form-item
                 label="日期选择"
                 :labelCol="{
@@ -1832,8 +1832,46 @@ li.chouzhen.first:before {
                 <a-range-picker name="buildTime" v-model="time" />
               </a-form-item>
             </a-col>
-            <a-col :span="12">
+            <a-col :span="9">
+              <a-form-item
+                label="唯一编码"
+                :labelCol="{
+                  lg: {
+                    span: 6,
+                  },
+                  sm: {
+                    span: 6,
+                  },
+                  xs: {
+                    span: 6,
+                  },
+                  md: {
+                    span: 6,
+                  },
+                }"
+                :wrapperCol="{
+                  lg: {
+                    span: 18,
+                  },
+                  sm: {
+                    span: 18,
+                  },
+                  xs: {
+                    span: 14,
+                  },
+                  md: {
+                    span: 14,
+                  },
+                }"
+              >
+                <a-input placeholder="请输入唯一标识,多个以,隔开" v-model="md5Str"/>
+              </a-form-item>
+            </a-col>
+            <a-col :span="4">
               <a-button style="position: relative; top: 4px" @click="selectAllVideo"> 全选 </a-button>
+              <a-button type="primary" style="position: relative;top: 4px;margin-left:5px" @click="searchVideo">
+                搜索
+              </a-button>
             </a-col>
           </a-row>
           <ul v-if="dataSource.length > 0" style="overflow: auto; padding-left: 0; height: 400px">
@@ -2234,6 +2272,7 @@ export default {
   },
   data() {
     return {
+      md5Str: "",
       spinning: true,
       removeActive: null,
       visibleVideo: false,
@@ -2640,6 +2679,7 @@ export default {
         params.status = 0
         params.channelType = this.channelType
         params.orderBy = 'time'
+        params.signatures = this.md5Str
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       }
     },
@@ -2655,6 +2695,7 @@ export default {
         params.startDate = moment(n[0]).format('YYYY-MM-DD') + ' 00:00:00'
         params.endDate = moment(n[1]).format('YYYY-MM-DD') + ' 23:59:59'
         params.orderBy = 'time'
+        params.signatures = this.md5Str
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       } else {
         var params = {}
@@ -2665,6 +2706,7 @@ export default {
         params.status = 0
         params.channelType = this.channelType
         params.orderBy = 'time'
+        params.signatures = this.md5Str
         this.ipagination.current = 1
         this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
       }
@@ -3522,7 +3564,10 @@ export default {
         })
       })
     },
-    cancelAll() {},
+    cancelAll() {
+      this.md5Str = ""
+      this.checkMatemalVisible = false
+    },
     callback(key) {
       this.channelType = key
       this.checkVideo = []
@@ -3535,6 +3580,24 @@ export default {
         this.checkVideo = this.checkVideoWai[this.ipagination.current - 1]
       }
     },
+    searchVideo() {
+        var params = {}
+        params.accountId = this.accountId
+        params.materialType = 1
+        params.pageSize = this.ipagination.pageSize
+        params.pageNo = 1
+        params.status = 0
+        params.channelType = this.channelType
+        params.orderBy = 'time'
+        params.signatures = this.md5Str
+        if (this.time.length > 0) {
+          // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
+          // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+          params.startDate = moment(this.time[0]).format('YYYY-MM-DD') + ' 00:00:00'
+          params.endDate = moment(this.time[1]).format('YYYY-MM-DD') + ' 23:59:59'
+        }
+        this.showVideoList('/kuaishou/kuaiShouVideoGet/getVideoList', params)
+    },
     selectAllVideo() {
       this.checkVideo = this.dataSource.map((item) => {
         return item.photoId
@@ -3622,6 +3685,7 @@ export default {
           params.status = 0
           params.channelType = this.channelType
           params.orderBy = 'time'
+          params.signatures = this.md5Str
           if (this.time.length > 0) {
             // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
             // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
@@ -3650,6 +3714,7 @@ export default {
       params.channelType = this.channelType
       params.status = 0
       params.orderBy = 'time'
+      params.signatures = this.md5Str
       if (this.time.length > 0) {
         // params.startDate = moment(this.time[0]).format('YYYY-MM-DD')
         // params.endDate = moment(this.time[1]).format('YYYY-MM-DD')

+ 2 - 2
vue.config.js

@@ -71,8 +71,8 @@ module.exports = {
         //  target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
          target: 'http://jiaoyangapi.shyouteng.com.cn', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        // target: 'http://192.168.1.188:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
+        // target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
+        // target: 'http://192.168.6.162:8806', //请求本地 需要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后台项目  毕洁泉