Browse Source

账户配置页面 淘特计划日报页面

jiayufei 4 years ago
parent
commit
d465fb32ab

+ 2 - 2
src/utils/request.js

@@ -16,8 +16,8 @@ else if (process.env.NODE_ENV == 'debug') {
 else if (process.env.NODE_ENV == 'production') { 
   
   // axios.defaults.baseURL = 'http://192.168.1.251/jeecg-boot';
-  axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';     
-  // axios.defaults.baseURL = 'http://api.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

+ 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,

+ 38 - 2
src/views/modules/account-config/account-config.vue

@@ -49,9 +49,31 @@
                     <a-divider type="vertical" />
                     <a @click="handleDelete(record)">删除</a>
                     <a-divider type="vertical" />
-                    <a @click="handleDelete(record)">修改出价</a>
+                    <a-popover v-model="isModVisible" title="" trigger="click">
+                        <template slot="content">
+                            <p>
+                                <a-input placeholder="请输入" style="width: 140px;"/>
+                            </p>
+                            <p>
+                                <a-button size="small" type="primary" style="margin-left: 15px;margin-right: 15px;">确定</a-button>
+                                <a-button size="small" @click="handleModPopover">取消</a-button>
+                            </p>
+                        </template>
+                        <a @click="handleModBid(record)">修改出价</a>
+                    </a-popover>
                     <a-divider type="vertical" />
-                    <a @click="handleDelete(record)">修改预算</a>
+                    <a-popover v-model="isBudgetVisible" title="" trigger="click">
+                        <template slot="content">
+                            <p>
+                                <a-input placeholder="请输入" style="width: 140px;"/>
+                            </p>
+                            <p>
+                                <a-button size="small" type="primary" style="margin-left: 15px;margin-right: 15px;">确定</a-button>
+                                <a-button size="small" @click="handleBudgetPopover">取消</a-button>
+                            </p>
+                        </template>
+                        <a @click="handleBudgetRevision(record)">修改预算</a>
+                    </a-popover>
                 </span>
             </a-table>
             <a-pagination
@@ -86,6 +108,8 @@ export default {
     },
     data() {
         return {
+            isBudgetVisible: false,
+            isModVisible: false,
             relaxVisible: false,
             accountModalTitle: 'add',
             acountId: undefined, // 搜索的账户ID
@@ -160,6 +184,18 @@ export default {
 
     },
     methods: {
+        handleBudgetPopover() {
+            this.isBudgetVisible = false;
+        },
+        handleBudgetRevision(data) {
+            this.isBudgetVisible = true;
+        },
+        handleModPopover() {
+            this.isModVisible = false;
+        },
+        handleModBid(data) {
+            this.isModVisible = true;
+        },
         handleQueryList(event) {
             event.preventDefault();
             const paramsData = this.form.getFieldsValue();

+ 21 - 18
src/views/modules/account-config/components/configuration-modal.vue

@@ -95,7 +95,7 @@
                     <a-input class="common-input-long" v-model="configForm.accessLinkContent" placeholder="请输入直达链接内容"/>
                 </a-form-model-item>
                 <a-form-model-item v-if="configForm.downloadMethod === 'a'" label="下载链接">
-                    <a-input class="common-input-long" v-model="configForm.downloadLink" placeholder="请输入下载链接"/>
+                    <a-input class="common-input-long" v-model="configForm.downloadLink" placeholder="请输入下载链接" @change="handleDownloadLink"/>
                 </a-form-model-item>
                 <a-form-model-item v-if="configForm.downloadMethod === 'a'" label="应用包名">
                     <a-input class="common-input-long" v-model="configForm.applicationName" placeholder="请输入应用包名"/>
@@ -192,10 +192,10 @@
                 </a-form-model-item>
                 <a-form-model-item label="平台">
                     <a-radio-group v-model="configForm.platDirect" button-style="solid">
-                        <a-radio-button value="buxian" :disabled="configForm.downloadLink">不限</a-radio-button>
-                        <a-radio-button value="a" :disabled="configForm.downloadLink">IOS</a-radio-button>
-                        <a-radio-button value="b" :disabled="!configForm.downloadLink">Andriod</a-radio-button>
-                        <a-radio-button value="c" :disabled="configForm.downloadLink">PC</a-radio-button>
+                        <a-radio-button value="buxian" :disabled="!!configForm.downloadLink">不限</a-radio-button>
+                        <a-radio-button value="a" :disabled="!!configForm.downloadLink">IOS</a-radio-button>
+                        <a-radio-button value="b">Andriod</a-radio-button>
+                        <a-radio-button value="c" :disabled="!!configForm.downloadLink">PC</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item v-if="configForm.downloadLink" label="安卓版本">
@@ -231,7 +231,7 @@
                         <a-radio-button value="b">定向</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
-                <a-form-model-item label="过滤已转化用户">
+                <a-form-model-item v-if="configForm.trackMode" label="过滤已转化用户">
                     <a-radio-group v-model="configForm.conversionUserDirect" button-style="solid">
                         <a-radio-button value="buxian">不限</a-radio-button>
                         <a-radio-button value="a">广告计划</a-radio-button>
@@ -379,7 +379,7 @@
                     <div class="creative-label-content">
                         <p>已选</p>
                         <div class="label-content-select-tag">
-                            <a-tag v-for="(item, index) in creativeTag" :key="index" :closable="true" class="tag-select-class" @close="handleTagsClose(item)">{{ item }}</a-tag>
+                            <a-tag v-for="item in creativeTag" :key="item" :closable="true" class="tag-select-class" @close="handleTagsClose(item)">{{ item }}</a-tag>
                         </div>
                     </div>
                 </div>
@@ -392,7 +392,7 @@ import AcountSearch from '@/views/modules/Statistics/components/Treeselect.vue';
 import SelectCheckAll from '../../BatchCreate/toutiaoTime';
 
 let str = '';
-for (let i = 0; i < 7*48; i++) {
+for (let i = 0; i < 7 * 48; i++) {
     str += '0';
 }
 export default {
@@ -419,18 +419,18 @@ export default {
             radioStyle: {
                 display: 'block',
                 height: '30px',
-                lineHeight: '30px',
+                lineHeight: '30px'
             },
             labelCol: {span: 4},
             wrapperCol: {span: 14},
             rules: {
                 name: [
-                    { required: true, message: 'Please input Activity name', trigger: 'blur' },
-                    { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' }
+                    {required: true, message: 'Please input Activity name', trigger: 'blur'},
+                    {min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur'}
                 ],
                 adverName: [
-                    { required: true, message: 'Please input Activity name', trigger: 'blur' },
-                    { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },
+                    {required: true, message: 'Please input Activity name', trigger: 'blur'},
+                    {min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur'}
                 ]
             },
             configForm: {
@@ -486,6 +486,9 @@ export default {
         };
     },
     methods: {
+        handleDownloadLink(e) {
+            this.configForm.platDirect = e.target.value ? 'b' : 'buxian';
+        },
         handleDeleteImg() {
             this.imageUrl = '';
             this.isCoverImgDiv = false;
@@ -528,11 +531,11 @@ export default {
         },
         handleEnterChang(value) {
             this.creativeTag.push(...value);
-            this.creativeTag = [...new Set(this.creativeTag)]
+            this.creativeTag = [...new Set(this.creativeTag)];
             for (let i = 0; i < this.creativeTag.length; i++) {
                 if (this.creativeTag[i].length > 10) {
-                    this.creativeTag.splice(i, 1)
-                    this.$message.error('创意标签最多只能十个字符,超过的已清除')
+                    this.creativeTag.splice(i, 1);
+                    this.$message.error('创意标签最多只能十个字符,超过的已清除');
                 }
             }
             this.configForm.creativeLabel = [];
@@ -544,12 +547,12 @@ export default {
         handleTagsClose(removedTag) {
             const tags = this.creativeTag.filter(tag => tag !== removedTag);
             this.creativeTag = tags;
-        },
+        }
     }
 };
 </script>
 <style>
 .display-none-selset {
-  display: none !important;
+    display: none !important;
 }
 </style>

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

@@ -73,6 +73,7 @@
     .solgan-title-header {
         padding-top: 10px;
         margin-right: 20px;
+        color: rgba(0, 0, 0, 0.85);
     }
     .solgan-form-class {
         .examin-form-input {

+ 39 - 69
src/views/modules/creative-copywrit/creative-copywrit.vue

@@ -313,7 +313,7 @@
             <a-form layout="inline" :selfUpdate="true">
                 <a-row :gutter="24">
                     <a-col :md="8" :sm="8">
-                        <selectTable :projectId.sync="queryParam.projectId"></selectTable>
+                        <selectTable :projectId.sync="queryParam.projectId" :type="taobaoSpecialOfferTitle"></selectTable>
                     </a-col>
                     <a-col :md="8" :sm="8">
                         <a-form-item label="素材名称">
@@ -1183,7 +1183,7 @@
                                             驳回原因:
                                             <a-textarea
                                                 placeholder="请输入原因"
-                                                v-model="refuseReasonImage"
+                                                v-model="refuseReasonImage" 
                                                 :autosize="{ minRows: 3, maxRows: 10 }"
                                             />
                                         </div>
@@ -1194,7 +1194,7 @@
                         </div>
                     </a-form>
                     <div class="solgan-whole-content">
-                        <span class="solgan-title-header">广告语</span>
+                        <span class="solgan-title-header">广告语</span>
                         <a-form v-if="slogansDetail.length" :form="solganForm" class="solgan-form-class">
                             <a-form-item
                                 v-for="item in slogansDetail"
@@ -1233,7 +1233,7 @@
                                 <a-icon class="examin-form-icon icon-delete" type="delete" @click="handleDelSolgan(item)"/>
                             </a-form-item>
                         </a-form>
-                        <span v-else class="solgan-title-header">暂无广告语</span>
+                        <span v-else class="solgan-title-header">暂无</span>
                     </div>
                 </div>
             </div>
@@ -1464,7 +1464,7 @@
             <div>
                 <div class="acount-title">
                     <div class="acount-title-left">素材名称</div>
-                    <div class="acount-title-right">蓝牙耳机-立即领取</div>
+                    <div class="acount-title-right">{{ currentPageOnlyList.materialName }}</div>
                 </div>
                 <div class="acount-title push-plate">
                     <div class="acount-title-left">创意标题</div>
@@ -1490,10 +1490,8 @@
                                     v-decorator="[
                                         item.name,
                                         { rules: [
-                                            { required: true, message: '请输入'},
-                                            {
-                                                validator: compareToFirstPassword
-                                            }
+                                            {required: true, message: '请输入创意标题'},
+                                            {min: 5, max: 30, message: '创意标题5-30个字'}
                                         ]}
                                     ]"
                                     class="examin-form-input"
@@ -1541,6 +1539,7 @@ export default {
     },
     data() {
         return {
+            taobaoSpecialOfferTitle: 'taobao',
             defaultSolganStatus: 'input',
             defaultSolganTitle: 'test',
             slogansDetail: [],
@@ -1555,23 +1554,7 @@ export default {
             wrapperCol: {span: 14},
             solganForm: this.$form.createForm(this),
             examinForm: this.$form.createForm(this),
-            defaultFormList: [
-                {
-                    id: 1,
-                    name: 'username1',
-                    value: ''
-                },
-                {
-                    id: 2,
-                    name: 'username2',
-                    value: ''
-                },
-                {
-                    id: 3,
-                    name: 'username3',
-                    value: ''
-                }
-            ],
+            defaultFormList: [],
             causeVisible: false,
             causeConfirmLoading: false,
             labelValue: [],
@@ -1853,7 +1836,9 @@ export default {
                 this.defaultFormList = n;
                 this.$nextTick(() => {
                     this.defaultFormList.forEach(item => {
-                        result.push(item.value);
+                        if (item.value) {
+                            result.push(item.value);
+                        }
                         this.examinForm.setFieldsValue({[item.name]: item.value});
                     });
                     this.titleFiledResult = result;
@@ -1876,7 +1861,7 @@ export default {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
         compareToFirstPassword(rule, value, callback) {
             if (value && value.length > 30 || value.length < 5) {
-                callback('内容长度必须在5-30之间!');
+                callback('创意标题5-30个字');
             }
             else {
                 callback();
@@ -2002,6 +1987,7 @@ export default {
         },
         handleRecommendSure() {
             this.recommendVisible = false;
+            this.keyWordRec = '';
             let formData = this.defaultFormList;
             this.defaultFormList = formData.filter(item => item.value !== '');
             this.applyTypeOption.forEach(item => {
@@ -2016,6 +2002,7 @@ export default {
         },
         handleRecommendCancel() {
             this.recommendVisible = false;
+            this.keyWordRec = '';
         },
         handleSelectTitle() {
             this.recommendVisible = true;
@@ -2033,28 +2020,20 @@ export default {
             this.defaultFormList = formData.filter(item => list.id !== item.id);
         },
         handleExamin(data) {
+            for (let i = 0; i < 3; i++) {
+                const randomNum = new Date().getTime() + Math.ceil(Math.random() * 1000);
+                this.defaultFormList.push({
+                    id: randomNum,
+                    name: 'username' + randomNum,
+                    value: ''
+                });
+            }
             this.currentPageOnlyList = data;
             this.causeVisible = true;
         },
         handleCauseCancel() {
             this.causeVisible = false;
-            this.defaultFormList = [
-                {
-                    id: 1,
-                    name: 'username1',
-                    value: ''
-                },
-                {
-                    id: 2,
-                    name: 'username2',
-                    value: ''
-                },
-                {
-                    id: 3,
-                    name: 'username3',
-                    value: ''
-                }
-            ];
+            this.defaultFormList = [];
         },
         handleCauseSure() {
             if (this.defaultFormList && this.defaultFormList.length < 3) {
@@ -2070,26 +2049,14 @@ export default {
             this.examinForm.validateFields(err => {
                 if (!err) {
                     fileEditUpdate(params).then(res => {
-                        this.refuseReason = '';
-                        this.causeVisible = false;
-                        this.defaultFormList = [
-                            {
-                                id: 1,
-                                name: 'username1',
-                                value: ''
-                            },
-                            {
-                                id: 2,
-                                name: 'username2',
-                                value: ''
-                            },
-                            {
-                                id: 3,
-                                name: 'username3',
-                                value: ''
-                            }
-                        ];
-                        this.loadData();
+                        if (res.code === 200) {
+                            this.refuseReason = '';
+                            this.causeVisible = false;
+                            this.defaultFormList = [];
+                            this.$message.error('创建成功');
+                            this.loadData();
+                        }
+                        
                     });
                 }
             });
@@ -2512,13 +2479,10 @@ export default {
                     this.showUrlWater = res.result.watermarkUrl;
                     this.name = res.result.watermarkCode;
                     this.materialName = res.result.materialName;
-                    // this.slogansDetail = res.result.slogans;0317淘特除螨仪.mp4
-                    console.log(res.result.slogans, 'res.result.slogans');
                     res.result.slogans.forEach(item => {
                         item.name = 'username' + item.id;
                     });
                     this.slogansDetail = res.result.slogans;
-                    console.log(this.slogansDetail, 'this.slogansDetail');
                     this.$nextTick(() => {
                         this.slogansDetail.forEach(item => {
                             this.solganForm.setFieldsValue({[item.name]: item.slogan});
@@ -3037,7 +3001,13 @@ export default {
                 projectName: value,
             }).then(res => {
                 if (res.code == 0) {
-                    this.dataElse = res.result.records;
+                    let defaultData = res.result.records;
+                    if (this.taobaoSpecialOfferTitle === 'taobao') {
+                        this.dataElse = defaultData.filter(item => item.productId === 1410280);
+                    }
+                    else {
+                        this.dataElse = defaultData;
+                    }
                 }
             });
         },

+ 156 - 0
src/views/modules/taobao-plan-daily/BytedanceCustomerDdTbtjDataList.vue

@@ -0,0 +1,156 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <!-- <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+          <a-col :md="6" :sm="8">
+            <a-form-item label="日期">
+              <a-input placeholder="请输入" v-model="queryParam.stateDate"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" >
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div> -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+       <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <a target="_blank" href="http://139.186.29.76:8804/jeecg-boot/ureport/preview?_u=mysql:%E6%B7%98%E7%89%B9%E8%AE%A1%E5%88%92%E6%97%A5%E6%8A%A5-%E5%A4%B4%E6%9D%A1.ureport.xml">手淘日报预览</a>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <bytedanceCustomerDdTbtjData-modal ref="modalForm" @ok="modalFormOk"></bytedanceCustomerDdTbtjData-modal>
+  </a-card>
+</template>
+
+<script>
+  import BytedanceCustomerDdTbtjDataModal from './modules/BytedanceCustomerDdTbtjDataModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+  export default {
+    name: "BytedanceCustomerDdTbtjDataList",
+    mixins:[JeecgListMixin],
+    components: {
+      BytedanceCustomerDdTbtjDataModal
+    },
+    data () {
+      return {
+        description: '淘宝特价版客户反馈数据管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '计划ID',
+            align:"center",
+            dataIndex: 'adId'
+           },
+		   {
+            title: '日期',
+            align:"center",
+            dataIndex: 'stateDate'
+           },
+		   {
+            title: '登录数',
+            align:"center",
+            dataIndex: 'loginCnt'
+           },
+		   {
+            title: '首购买人数',
+            align:"center",
+            dataIndex: 'buyerCnt'
+           },
+		   {
+            title: '次留数',
+            align:"center",
+            dataIndex: 'nextDayStay'
+           }
+        ],
+		url: {
+          list: "/ctop/bytedanceCustomerDdTbtjData/list",
+          delete: "/ctop/bytedanceCustomerDdTbtjData/delete",
+          deleteBatch: "/ctop/bytedanceCustomerDdTbtjData/deleteBatch",
+          exportXlsUrl: "ctop/bytedanceCustomerDdTbtjData/exportXls",
+          importExcelUrl: "ctop/bytedanceCustomerDdTbtjData/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     handleShouTaoPreview() {
+       window.open('www.baidu.com', '_blank');
+     }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 148 - 0
src/views/modules/taobao-plan-daily/modules/BytedanceCustomerDdTbtjDataModal.vue

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

+ 155 - 0
src/views/modules/taobao-plan-daily/modules/BytedanceCustomerDdTbtjDataModal__Style#Drawer.vue

@@ -0,0 +1,155 @@
+<template>
+  <a-drawer
+      :title="title"
+      :width="800"
+      placement="right"
+      :closable="false"
+      @close="close"
+      :visible="visible"
+  >
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+      
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="adId">
+          <a-input placeholder="请输入adId" v-decorator="['adId', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="stateDate">
+          <a-input placeholder="请输入stateDate" v-decorator="['stateDate', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="loginCnt">
+          <a-input-number v-decorator="[ 'loginCnt', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="bugerCnt">
+          <a-input-number v-decorator="[ 'bugerCnt', {}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="nextDayStay">
+          <a-input-number v-decorator="[ 'nextDayStay', {}]" />
+        </a-form-item>
+		
+      </a-form>
+    </a-spin>
+    <a-button type="primary" @click="handleOk">确定</a-button>
+    <a-button type="primary" @click="handleCancel">取消</a-button>
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import moment from "moment"
+
+  export default {
+    name: "BytedanceCustomerDdTbtjDataModal",
+    data () {
+      return {
+        title:"操作",
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules:{
+        },
+        url: {
+          add: "/ctop/bytedanceCustomerDdTbtjData/add",
+          edit: "/ctop/bytedanceCustomerDdTbtjData/edit",
+        },
+      }
+    },
+    created () {
+    },
+    methods: {
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'adId','stateDate','loginCnt','bugerCnt','nextDayStay'))
+		  //时间格式化
+        });
+
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            //时间格式化
+            
+            console.log(formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+
+
+
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+</style>