Ver Fonte

0902-h01

Zory há 2 semanas atrás
pai
commit
2ae1814bf5

+ 7 - 0
src/api/model/page.js

@@ -15,5 +15,12 @@ export default {
         post: async function(params){
             return await http.post(this.url, params);
         }
+    },
+    status: {
+        url: `${config.API_URL}/pages/status`,
+        name: "-",
+        post: async function(params){
+            return await http.post(this.url, params);
+        }
     }
 }

+ 249 - 0
src/views/components/advertier.vue

@@ -0,0 +1,249 @@
+<!--
+ * @Descripttion: 用户选择器
+ * @version: 1.0
+ * @Author: Zory
+ * @Date: 2024年1月10日21:46:29
+-->
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+        <div class="main">
+            <div class="main-left">
+                <div class="main-top">
+                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
+                        <el-row :gutter="10">
+                            <el-col :span="18" :xs="12">
+                                <el-form-item label=" " prop="name">
+                                    <el-input v-model="searchKey.name" placeholder="请输入账户名称" clearable
+                                        :style="{width: '100%'}"></el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6" :xs="12">
+                                <el-form-item>
+                                    <div class="search-btn">
+                                        <el-button type="primary" @click="searchForm">搜索</el-button>
+                                    </div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </div>
+                <div class="main-body-wrap" v-if="!multiple">
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
+                        <el-table-column width="50" fixed="left">
+                            <div class="checkbox"></div>
+                        </el-table-column>
+                        <el-table-column label="账户ID" width="200" prop="id" fixed="left">
+                            <template #default="scope">
+                                {{ scope.row.advertiser_id?scope.row.advertiser_id:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="账户名称" prop="category_id" width="200">
+                            <template #default="scope">
+                                {{ scope.row.advertiser_name?scope.row.advertiser_name:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="归属组织" prop="id" width="200">
+                            <template #default="scope">
+                                {{ scope.row.groups?scope.row.groups.account_name:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="状态" prop="enable" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-if="scope.row.status==2"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                    </scTable>
+                </div>
+                <div class="main-body-wrap" v-else>
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
+                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                        <el-table-column label="账户ID" width="300" prop="id" fixed="left">
+                            <template #default="scope">
+                                {{ scope.row.advertiser_id?scope.row.advertiser_id:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="账户名称" prop="category_id" width="200">
+                            <template #default="scope">
+                                {{ scope.row.advertiser_name?scope.row.advertiser_name:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="归属组织" prop="id" width="200">
+                            <template #default="scope">
+                                {{ scope.row.groups?scope.row.groups.account_name:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="状态" prop="enable" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-if="scope.row.status==2"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                    </scTable>
+                </div>
+            </div>
+        </div>
+		<template #footer>
+			<el-button @click="visible=false" >取 消</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
+		</template>
+    </el-dialog>
+</template>
+
+<script>
+export default{
+    emits: ['success', 'closed'],
+    props: {
+        multiple: { type: Boolean, default: false },
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"选择推广账户",
+                edit:"选择推广账户"
+            },
+            list: {
+                apiObj: this.$API.account.list
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            searchKey:{},
+            selectData:[]
+        }
+    },
+    methods:{
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        submit(){
+            if (this.selectData.length == 0)
+            {
+                return this.$message.error("请选择数据");
+            }
+            this.isSaveing = false;
+            this.visible = false;
+            if (this.multiple){
+                this.$emit('success', this.selectData);
+            } else {
+                this.$emit('success', this.selectData[0]);
+            }
+        },
+        getRowKeys(data){
+            return data.id;
+        },
+        clearAll(){
+            this.selectData = [];
+        },
+        removeUser(index,name){
+            this.selectData.splice(index, 1);
+            console.log(name)
+        },
+        handleCurrentChange(data){
+            this.selectData = [data];
+        },
+        selectionChange(data){
+            this.selectData = data;
+        },
+        searchForm(){
+            this.$refs.table.upData(this.searchKey)
+        },
+        fristName(name){
+            return name.substring(0,1);
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.main{
+    display: flex;
+    border: 1px solid #dfe1e6;
+}
+.main-left{
+    overflow: hidden;
+    flex: 1;
+    .main-body-wrap{
+        position: relative;
+        height: 380px;
+    }
+}
+.main-top{
+    position: relative;
+    padding: 10px 0;
+    border-bottom: 1px solid #dfe1e6;
+    &.is-right{
+        height:53px;
+        display:flex;
+        align-items:center;
+        padding:0 10px;
+        justify-content:space-between;
+    }
+}
+.main-body.is-right{
+    padding: 8px 16px;
+    overflow-y: auto;
+    position: relative;
+    height: calc(100% - 53px);
+    max-height: 380px;
+}
+.mx-1{
+    margin: 0 0.5rem 0.5rem 0;
+}
+.main-right{
+    flex: 0.4;
+}
+.el-form-item--default{
+    margin-bottom: 0;
+}
+.checkbox{
+    border:1px solid #dfe1e6;
+    width: 14px;
+    height: 14px;
+    border-radius: 2px;
+    background-color: #fff;
+    cursor: pointer;
+    position:relative
+}
+.current-row .checkbox{
+    background-color: var(--el-color-primary);
+    border-color: var(--el-color-primary);
+}
+.current-row .checkbox:after{
+    transform: rotate(45deg) scaleY(1);
+    box-sizing: content-box;
+    content: "";
+    border: 1px solid #fff;
+    border-left: 0;
+    border-top: 0;
+    height: 7px;
+    left: 4px;
+    position: absolute;
+    top: 1px;
+    width: 3px;
+    transition: transform .15s ease-in 50ms;
+    transform-origin: center;
+}
+</style>

+ 259 - 0
src/views/components/product.vue

@@ -0,0 +1,259 @@
+<!--
+ * @Descripttion: 用户选择器
+ * @version: 1.0
+ * @Author: Zory
+ * @Date: 2024年1月10日21:46:29
+-->
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+        <div class="main">
+            <div class="main-left">
+                <div class="main-top">
+                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
+                        <el-row :gutter="10">
+                            <el-col :span="18" :xs="12">
+                                <el-form-item label=" " prop="name">
+                                    <el-input v-model="searchKey.name" placeholder="请输入产品标题" clearable
+                                        :style="{width: '100%'}"></el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6" :xs="12">
+                                <el-form-item>
+                                    <div class="search-btn">
+                                        <el-button type="primary" @click="searchForm">搜索</el-button>
+                                    </div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </div>
+                <div class="main-body-wrap" v-if="!multiple">
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
+                        <el-table-column width="50" fixed="left">
+                            <div class="checkbox"></div>
+                        </el-table-column>
+                        <el-table-column label="产品编码" width="120" prop="id" fixed="left">
+                            <template #default="scope">
+                                {{ scope.row.code?scope.row.code:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="投放地区" width="120" prop="category_id">
+                            <template #default="scope">
+                                {{ scope.row.province?scope.row.province:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="产品名称" prop="id" width="360">
+                            <template #default="scope">
+                                {{ scope.row.name }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="其他说明" prop="category_id" width="360">
+                            <template #default="scope">
+                                {{ scope.row.remark?scope.row.remark:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="状态" prop="enable" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-if="scope.row.status==0"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                    </scTable>
+                </div>
+                <div class="main-body-wrap" v-else>
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
+                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                        <el-table-column label="产品编码" width="120" prop="id" fixed="left">
+                            <template #default="scope">
+                                {{ scope.row.code?scope.row.code:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="投放地区" width="120" prop="category_id">
+                            <template #default="scope">
+                                {{ scope.row.province?scope.row.province:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="产品名称" prop="id" width="360">
+                            <template #default="scope">
+                                {{ scope.row.name }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="其他说明" prop="category_id" width="360">
+                            <template #default="scope">
+                                {{ scope.row.remark?scope.row.remark:'-' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="状态" prop="enable" width="120" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                                <div class="status-danger" v-if="scope.row.status==0"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                    </scTable>
+                </div>
+            </div>
+        </div>
+		<template #footer>
+			<el-button @click="visible=false" >取 消</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
+		</template>
+    </el-dialog>
+</template>
+
+<script>
+export default{
+    emits: ['success', 'closed'],
+    props: {
+        multiple: { type: Boolean, default: false },
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"选择推广产品",
+                edit:"选择推广产品"
+            },
+            list: {
+                apiObj: this.$API.product.list
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            searchKey:{},
+            selectData:[]
+        }
+    },
+    methods:{
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        submit(){
+            if (this.selectData.length == 0)
+            {
+                return this.$message.error("请选择数据");
+            }
+            this.isSaveing = false;
+            this.visible = false;
+            if (this.multiple){
+                this.$emit('success', this.selectData);
+            } else {
+                this.$emit('success', this.selectData[0]);
+            }
+        },
+        getRowKeys(data){
+            return data.id;
+        },
+        clearAll(){
+            this.selectData = [];
+        },
+        removeUser(index,name){
+            this.selectData.splice(index, 1);
+            console.log(name)
+        },
+        handleCurrentChange(data){
+            this.selectData = [data];
+        },
+        selectionChange(data){
+            this.selectData = data;
+        },
+        searchForm(){
+            this.$refs.table.upData(this.searchKey)
+        },
+        fristName(name){
+            return name.substring(0,1);
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.main{
+    display: flex;
+    border: 1px solid #dfe1e6;
+}
+.main-left{
+    overflow: hidden;
+    flex: 1;
+    .main-body-wrap{
+        position: relative;
+        height: 380px;
+    }
+}
+.main-top{
+    position: relative;
+    padding: 10px 0;
+    border-bottom: 1px solid #dfe1e6;
+    &.is-right{
+        height:53px;
+        display:flex;
+        align-items:center;
+        padding:0 10px;
+        justify-content:space-between;
+    }
+}
+.main-body.is-right{
+    padding: 8px 16px;
+    overflow-y: auto;
+    position: relative;
+    height: calc(100% - 53px);
+    max-height: 380px;
+}
+.mx-1{
+    margin: 0 0.5rem 0.5rem 0;
+}
+.main-right{
+    flex: 0.4;
+}
+.el-form-item--default{
+    margin-bottom: 0;
+}
+.checkbox{
+    border:1px solid #dfe1e6;
+    width: 14px;
+    height: 14px;
+    border-radius: 2px;
+    background-color: #fff;
+    cursor: pointer;
+    position:relative
+}
+.current-row .checkbox{
+    background-color: var(--el-color-primary);
+    border-color: var(--el-color-primary);
+}
+.current-row .checkbox:after{
+    transform: rotate(45deg) scaleY(1);
+    box-sizing: content-box;
+    content: "";
+    border: 1px solid #fff;
+    border-left: 0;
+    border-top: 0;
+    height: 7px;
+    left: 4px;
+    position: absolute;
+    top: 1px;
+    width: 3px;
+    transition: transform .15s ease-in 50ms;
+    transform-origin: center;
+}
+</style>

+ 5 - 0
src/views/project/order/components/search.vue

@@ -12,6 +12,11 @@
                                 <template #prepend>订单编号</template>
                             </el-input>
                         </el-col>
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
+                            <el-input v-model="searchKey.thri_no" placeholder="上游订单号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>上游订单号</template>
+                            </el-input>
+                        </el-col>
                         <el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="4">
                             <el-date-picker v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm" />
                         </el-col>

+ 11 - 6
src/views/project/order/components/table.vue

@@ -1,12 +1,17 @@
 <template>
     <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
         <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-        <el-table-column label="订单编号" width="300" prop="id" fixed="left">
+        <el-table-column label="订单编号" width="200" prop="id" fixed="left">
             <template #default="scope">
                 {{ scope.row.order_no?scope.row.order_no:'-' }}
             </template>
         </el-table-column>
-        <el-table-column label="订单信息" prop="category_id">
+        <el-table-column label="上游订单号" width="200" prop="id">
+            <template #default="scope">
+                {{ scope.row.thri_no?scope.row.thri_no:'-' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="订单信息" prop="category_id" width="300">
             <template #default="scope">
                 <div class="goods-img">
                     <div class="name">
@@ -16,7 +21,7 @@
                 </div>
             </template>
         </el-table-column>
-        <el-table-column label="归属账户" prop="category_id">
+        <el-table-column label="归属账户" prop="category_id" width="300">
             <template #default="scope">
                 <div class="goods-img">
                     <div class="name">
@@ -26,12 +31,12 @@
                 </div>
             </template>
         </el-table-column>
-        <el-table-column label="归属产品" prop="category_id">
+        <el-table-column label="归属产品" prop="category_id" width="300">
             <template #default="scope">
                 {{ scope.row.product?scope.row.product.name:'-' }}
             </template>
         </el-table-column>
-        <el-table-column label="归属落地页" prop="category_id">
+        <el-table-column label="归属落地页" prop="category_id" width="180">
             <template #default="scope">
                 {{ scope.row.pages?scope.row.pages.title:'-' }}
             </template>
@@ -60,7 +65,7 @@
             </template>
         </el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="200" align="left" fixed="right">
+        <el-table-column label="操作" width="120" align="left" fixed="right">
             <template #default="scope">
                 <el-button-group>
                     <el-button type="danger" text size="small" @click="table_close(scope.row)">手动回传</el-button>

+ 334 - 0
src/views/project/pages/components/design.vue

@@ -0,0 +1,334 @@
+<template>
+    <el-drawer v-model="visible" size="80%" destroy-on-close :close-on-click-modal="false" :with-header="false">
+        <el-container class="flex-column">
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{titleMap[mode]}}</div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <el-main class="nopadding">
+                <el-container>
+                    <el-aside width="300px">
+                        <div class="design-title">选择组件右侧进行编辑</div>
+                        <div class="design-box">
+                            <el-row :gutter="15">
+                                <el-col span="8">
+                                    <div class="design-item" @click="designCom('image')">
+                                        <div class="item-icon"><el-icon size="22"><el-icon-picture /></el-icon></div>
+                                        <div class="name">图片组件</div>
+                                    </div>
+                                </el-col>
+                                <el-col span="8">
+                                    <div class="design-item" @click="designCom('text')">
+                                        <div class="item-icon"><el-icon size="22"><el-icon-edit /></el-icon></div>
+                                        <div class="name">文本组件</div>
+                                    </div>
+                                </el-col>
+                                <el-col span="8">
+                                    <div class="design-item" @click="designCom('form')">
+                                        <div class="item-icon"><el-icon size="22"><el-icon-tickets /></el-icon></div>
+                                        <div class="name">表单组件</div>
+                                    </div>
+                                </el-col>
+                                <el-col span="8">
+                                    <div class="design-item" @click="designCom('line')">
+                                        <div class="item-icon"><el-icon size="22"><el-icon-operation /></el-icon></div>
+                                        <div class="name">辅助空白</div>
+                                    </div>
+                                </el-col>
+                            </el-row>
+                        </div>
+                    </el-aside>
+                    <el-container>
+                        <el-main class="nopaddings">
+                            <div class="design-edit">
+                                <div class="edit-title">{{ pageData.title }}</div>
+                                <div class="edit-content" v-if="designControl.length > 0">
+                                    <draggable v-model="designControl" animation="200">
+                                        <template #item="{ element,index }">
+                                            <div class="control-item">
+                                                <div :class="element.active?'left active':'left'">{{ element.name }}</div>
+                                                <div :class="element.active?'edit-image active':'edit-image'" v-if="element.type=='image'" @click="editImage(index)">
+                                                    <el-image :style="{ width: element.active ? '356px' : '356px' }" :src="element.url" v-if="element.url"></el-image>
+                                                    <div class="empty-image" v-else>
+                                                        <el-image :style="{ width: element.active ? '356px' : '356px' }" src="https://blue-data.oss-cn-guangzhou.aliyuncs.com/design/pic-decode.png"></el-image>
+                                                    </div>
+                                                </div>
+                                                <div :class="element.active?'edit-text active':'edit-text'" v-if="element.type=='text'" @click="editImage(index)">
+                                                    <div class="text" v-if="element.content">{{ element.content }}</div>
+                                                    <div class="empty-image" v-else>
+                                                        请填写文本信息
+                                                    </div>
+                                                </div>
+                                                <div :class="element.active?'edit-text active':'edit-text'" v-if="element.type=='line'" @click="editImage(index)">
+                                                    <div class="text" :style="{height:element.height+'px',background:'#f8f8f8'}">{{ element.content }}</div>
+                                                </div>
+                                                <div :class="element.active?'edit-text active':'edit-text'" v-if="element.type=='form'" @click="editImage(index)">
+                                                    <div class="empty-form">表单占位</div>
+                                                </div>
+                                                <div class="right" v-if="element.active">
+                                                    <div class="right-item" @click="delItem(index)"><el-icon><el-icon-delete /></el-icon></div>
+                                                </div>
+                                            </div>
+                                        </template>
+                                    </draggable>
+                                </div>
+                            </div>
+                        </el-main>
+                    </el-container>
+                    <el-aside width="400px" v-if="editControl">
+                        <div class="edit-right-box">
+                            <template v-if="editControl.type == 'image'">
+                                <div class="title">上传图片</div>
+                            </template>
+                            <template v-if="editControl.type == 'text'">
+                                <div class="title">编辑文本信息</div>
+                                <div class="edit-form">
+                                    <el-input v-model="editControl.content" type="textarea" :rows="10" placeholder="请输入文本信息"></el-input>
+                                </div>
+                            </template>
+                        </div>
+                    </el-aside>
+                </el-container>
+            </el-main>
+            <el-footer style="text-align: right;">
+                <el-button @click="visible=false" size="large">取 消</el-button>
+                <el-button size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+</template>
+
+<script>
+import draggable from 'vuedraggable'
+export default {
+    components: {
+        draggable
+    },
+    data() {
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"设计落地页",
+                edit:"设计落地页"
+            },
+            visible:false,
+            pageData:{},
+            controlData:{
+                image:{"name":"图片控件","url":"","type":"image","active":false},
+                text:{"name":"文本控件","content":"","type":"text","active":false},
+                line:{"name":"辅助空白","height":1,"type":"line","active":false},
+                form:{"name":"表单控件","content":"form","type":"form","active":false}
+            },
+            designControl:[],
+            editControl:null
+        }
+    },
+    methods: {
+        editImage(index){
+            this.designControl.forEach(item => item.active = false);
+            const editData = this.designControl[index];
+            editData.active = true;
+            this.editControl = editData
+        },
+        delItem(index){
+            this.$confirm(`确定要删除此组件吗?`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                this.designControl.splice(index, 1);
+                if (this.editControl === this.designControl[index]) {
+                    this.editControl = null;
+                }
+            }).catch(()=>{})
+        },
+        designCom(type){
+            var controlData = {};
+            switch (type) {
+                case "form":
+                    controlData = this.controlData.form
+                    break;
+                case "image":
+                    controlData = this.controlData.image
+                    break;
+                case "line":
+                    controlData = this.controlData.line
+                    break;
+                case "text":
+                default:
+                    controlData = this.controlData.text
+                    break;
+            }
+            this.designControl.push({...controlData})
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.pageData = JSON.parse(JSON.stringify(data));
+            if (data.rules) {
+                this.formData = data.rules
+            }
+        },
+        async submit(){
+            // var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            // if(!validate){ return false }
+            if (this.designControl.length == 0) return this.$message.error("请至少需使用一个组件")
+            var formData = {};
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            formData.rules = submitData;
+            formData.id = this.pageData.id;
+            formData.link_code = this.pageData.link_code;
+            console.log("formData",this.designControl)
+            return ;
+            this.isSaveing = true;
+            var resp = await this.$API.page.save.post(formData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.formData = {status:1,number:0};
+            this.$emit("success");
+        }
+    }
+}
+</script>
+
+<style>
+.edit-right-box .title{
+    width: 100%;
+    padding: 0 10px;
+    font-size: 14px;
+    height: 40px;
+    line-height: 40px;
+    border-bottom: 1px solid #f8f8f8;
+}
+.empty-form{
+    height: 220px;
+    background-color: #f8f8f8;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.nopaddings{
+    padding: 0;
+    background-color: #f1f1f1;
+}
+.edit-right-box .edit-form{
+    padding: 10px;
+}
+.control-item{
+    position: relative;
+}
+.control-item .right{
+    position: absolute;
+    right: -43px;
+    top: 0;
+    width: 36px;
+    border-radius: 4px;
+    background-color: #0256FF;
+    cursor: pointer;
+    color: #fff;
+    font-weight: 700;
+    text-align: center;
+    padding: 4px 0;
+}
+.control-item .right .right-item{
+    padding: 5px 0;
+    cursor: pointer;
+}
+.control-item .left.active{
+    background: #0256FF;
+    color: #fff;
+}
+.control-item .left.active::before{
+    background: #0256FF;
+}
+.control-item .left{
+    position: absolute;
+    top: 6px;
+    background: #fff;
+    left: -100px;
+    width: 86px;
+    height: 32px;
+    text-align: center;
+    line-height: 32px;
+    font-size: 13px;
+    color: #666;
+    border-radius: 3px;
+}
+.control-item .left::before{
+    content: "";
+    position: absolute;
+    width: 10px;
+    height: 10px;
+    background: #fff;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    top: 50%;
+    right: -5px;
+    margin-top: -5px;
+}
+.design-title{
+    font-size: 14px;
+    padding: 10px;
+}
+.design-box{
+    padding: 10px;
+}
+.design-item{
+    cursor: pointer;
+    border-radius: 5px;
+    background-color: #f1f1f1;
+    padding: 10px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+    margin-bottom: 10px;
+}
+.design-edit{
+    width: 360px;
+    margin: 0 auto;
+    height: 100%;
+    background-color: #fff;
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+}
+.design-edit .edit-title{
+    font-size: 14px;
+    background-color: #f8f8f8;
+    text-align: center;
+    padding: 10px 0;
+    width: 100%;
+}
+.design-edit .edit-content{
+    width: 100%;
+    flex: 1;
+}
+.edit-image,.edit-text{
+    cursor: pointer;
+    border: 2px solid transparent;
+}
+.edit-image.active{
+    border: 2px solid var(--el-color-primary);
+}
+.edit-text{
+    min-height: 40px;
+}
+.edit-text.active{
+    border: 2px solid var(--el-color-primary);
+}
+</style>

+ 142 - 0
src/views/project/pages/components/form.vue

@@ -0,0 +1,142 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="落地页标题" prop="title">
+                <el-input v-model="formData.title" clearable placeholder="请输入"></el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="归属产品" prop="goods_name">
+                <el-input v-model="formData.goods_name" placeholder="请选择归属产品" clearbale readonly :style="{width:'100%'}" @click="selectGoods">
+                    <template #append>
+                        <el-tooltip effect="dark" content="点这里,清除选择" placement="top-start">
+                            <div class="remove-a" @click="clearGoods">清除</div>
+                        </el-tooltip>
+                    </template>
+                </el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="归属广告账户" prop="advertiser_name">
+                <el-input v-model="formData.advertiser_name" placeholder="请选择归属广告账户" clearbale readonly :style="{width:'100%'}" @click="selectAdver">
+                    <template #append>
+                        <el-tooltip effect="dark" content="点这里,清除选择" placement="top-start">
+                            <div class="remove-a" @click="clearAdver">清除</div>
+                        </el-tooltip>
+                    </template>
+                </el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="状态" prop="status">
+                <el-radio-group v-model="formData.status">
+                    <el-radio-button :label="1">正常</el-radio-button>
+                    <el-radio-button :label="2">禁用</el-radio-button>
+                </el-radio-group>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+        </el-form>
+		<template #footer>
+            <el-button @click="visible=false" size="large">取 消</el-button>
+            <el-button v-if="mode!='show'" size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
+		</template>
+    </el-dialog>
+    <productMain ref="productMain" :multiple="false" @success="handleGoods"></productMain>
+    <advertierMain ref="advertierMain" :multiple="false" @success="handleAdver"></advertierMain>
+</template>
+
+<script>
+import advertierMain from "@/views/components/advertier.vue";
+import productMain from "@/views/components/product.vue";
+export default {
+    components:{
+        advertierMain,productMain
+    },
+    data(){
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"新建落地页",
+                edit:"编辑落地页"
+            },
+            visible:false,
+            formData:{
+                status:1
+            },
+            rules:{
+                goods_name: [
+                    {required: true, message: '请选择'}
+                ],
+                advertiser_name: [
+                    {required: true, message: '请选择'}
+                ],
+                status: [
+                    {required: true, message: '请选择'}
+                ],
+                title: [
+                    {required: true, message: '请输入'}
+                ]
+            }
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        handleGoods(data){
+            this.formData.goods_name = data.name;
+            this.formData.product_id = data.code;
+        },
+        handleAdver(data){
+            this.formData.advertiser_name = data.advertiser_name;
+            this.formData.advertiser_id = data.advertiser_id;
+        },
+        clearGoods(){
+            this.formData.goods_name = "";
+            this.formData.product_id = "";
+        },
+        clearAdver(){
+            this.formData.advertiser_name = "";
+            this.formData.advertiser_id = "";
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = JSON.parse(JSON.stringify(data));
+            if (this.mode == 'edit') {
+                this.formData.advertiser_name = data.account.advertiser_name;
+                this.formData.goods_name = data.product.name;
+            }
+        },
+        selectGoods(){
+            this.$nextTick(() => {
+                this.$refs.productMain.open("add")
+            })
+        },
+        selectAdver(){
+            this.$nextTick(() => {
+                this.$refs.advertierMain.open("add")
+            })
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            this.isSaveing = true;
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            var resp = await this.$API.page.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.formData = {};
+            this.$emit("success");
+        }
+    }
+}
+</script>
+
+<style>
+.text-center{text-align: center;}
+</style>

+ 41 - 0
src/views/project/pages/components/option.vue

@@ -0,0 +1,41 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="primary" icon="el-icon-plus" @click="table_add()">新建落地页</el-button>
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form.vue';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("add")
+            })
+        },
+        handleSuccess(){
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 112 - 0
src/views/project/pages/components/rules.vue

@@ -0,0 +1,112 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="680" :close-on-click-modal="false" destroy-on-close @closed="$emit('closed')">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="回传权限" prop="status">
+                <el-radio-group v-model="formData.status">
+                    <el-radio-button :label="1">全部回传</el-radio-button>
+                    <el-radio-button :label="2">按规则回传</el-radio-button>
+                    <el-radio-button :label="3">关闭</el-radio-button>
+                </el-radio-group>
+            </el-form-item>
+            <template v-if="formData.status==2">
+                <el-form-item label="规则数据块" prop="number">
+                    <el-input v-model="formData.number" type="number" min="1" max="100" clearable placeholder="请输入">
+                        <template #append>条</template>
+                    </el-input>
+                    <div class="el-form-item-msg">每{{ formData.number?formData.number:'0' }}条数据按照规则进行回传,最大限制为100</div>
+                </el-form-item>
+                <el-form-item label="回传规则" prop="block" v-if="formData.number>0">
+                    <el-checkbox-group v-model="formData.block" style="width: 100%;">
+                        <el-row :gutter="5">
+                            <el-col :span="3" v-for="(item,index) in parseInt(formData.number)" :key="index">
+                                <div class="check-item">
+                                    <el-checkbox :label="item" value="item" />
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </el-checkbox-group>
+                </el-form-item>
+            </template>
+        </el-form>
+		<template #footer>
+            <el-button @click="visible=false" size="large">取 消</el-button>
+            <el-button v-if="mode!='show'" size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
+		</template>
+    </el-dialog>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"回传规则设置",
+                edit:"回传规则设置"
+            },
+            visible:false,
+            formData:{
+                status:1,
+                number:0
+            },
+            pageData:{},
+            rules:{
+                status: [
+                    {required: true, message: '请选择'}
+                ],
+                block: [
+                    {required: true, message: '请选择'}
+                ],
+                number: [
+                    {required: true, message: '请输入'}
+                ],
+            }
+        }
+    },
+    methods: {
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.pageData = JSON.parse(JSON.stringify(data));
+            if (data.rules) {
+                this.formData = data.rules
+            }
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            var formData = {};
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            if (submitData.number > 100) return this.$message.error("数据块最多只支持100条")
+            if (submitData.status==2 && submitData.number == 0) return this.$message.error("请设置数据块")
+            formData.rules = submitData;
+            formData.id = this.pageData.id;
+            formData.link_code = this.pageData.link_code;
+            this.isSaveing = true;
+            var resp = await this.$API.page.save.post(formData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.formData = {status:1,number:0};
+            this.$emit("success");
+        }
+    }
+}
+</script>
+
+<style>
+.check-item{
+    background-color: #f8f8f8;
+    padding: 0 5px;
+    margin-bottom: 5px;
+}
+</style>

+ 58 - 0
src/views/project/pages/components/search.vue

@@ -0,0 +1,58 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">条件筛选</el-tag>
+        </legend>
+        <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right" label-width="100px">
+            <div class="search-form">
+                <div class="form-left">
+                    <el-row :gutter="10">
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
+                            <el-input v-model="searchKey.name" placeholder="落地页标题" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>落地页标题</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="4">
+                            <el-date-picker v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm" />
+                        </el-col>
+                    </el-row>
+                </div>
+                <div class="form-line"></div>
+                <div class="form-right">
+                    <el-button type="primary" icon="el-icon-search" @click="searchForm">搜索</el-button>
+                </div>
+            </div>
+        </el-form>
+    </fieldset>
+    <storeData ref="storeData" :multiple="false" @success="handleStore"></storeData>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        selectStore(){
+            this.$nextTick(()=>{
+                this.$refs.storeData.open()
+            })
+        },
+        handleStore(data){
+            this.searchKey.poi_id = data.poi_id;
+            this.searchKey.poi_name = data.poi_name;
+            this.$emit("success",this.searchKey);
+        },
+        clearStore(){
+            this.searchKey.poi_id = "";
+            this.searchKey.poi_name = "";
+            this.$emit("success",this.searchKey);
+        },
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
+</script>

+ 175 - 0
src/views/project/pages/components/table.vue

@@ -0,0 +1,175 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="落地页ID" width="180" prop="id" fixed="left">
+            <template #default="scope">
+                <div class="goods-img">
+                    <div class="name">
+                        <span>{{ scope.row.link_code?scope.row.link_code:'-' }}</span>
+                        <span class="dec" v-copy="scope.row.link">复制链接</span>
+                    </div>
+                </div>
+                
+            </template>
+        </el-table-column>
+        <el-table-column label="标题" prop="category_id">
+            <template #default="scope">
+                {{ scope.row.title?scope.row.title:'-' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="归属账户" prop="category_id" width="300">
+            <template #default="scope">
+                <div class="goods-img">
+                    <div class="name">
+                        <span>{{ scope.row.account?scope.row.account.advertiser_name:'-' }}</span>
+                        <span class="dec">{{ scope.row.account?scope.row.account.advertiser_id:'-' }}</span>
+                    </div>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="归属产品" prop="category_id" width="300">
+            <template #default="scope">
+                <div class="goods-img">
+                    <div class="name">
+                        <span>{{ scope.row.product?scope.row.product.name:'-' }}</span>
+                        <span class="dec">{{ scope.row.product?scope.row.product.code:'-' }}</span>
+                    </div>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="enable" width="120" align="center">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                <div class="status-danger" v-if="scope.row.status==0"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+        <el-table-column label="操作" width="180" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button text size="small" @click="table_edit(scope.row)">编辑数据</el-button>
+                    <el-button type="danger" text size="small" @click="table_close(scope.row)" v-if="scope.row.status == 1">下架</el-button>
+                    <el-button type="success" text size="small" @click="table_close(scope.row)" v-if="scope.row.status == 0">上架</el-button>
+                </el-button-group>
+                <el-button-group>
+                    <el-button type="warning" text size="small" @click="table_rule(scope.row)">回传规则</el-button>
+                    <el-button type="info" text size="small" @click="table_design(scope.row)">设计</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+    <ruleMain ref="ruleMain" @success="handleSuccess"></ruleMain>
+    <designMain ref="designMain" @success="handleSuccess"></designMain>
+</template>
+
+<script>
+import formMain from './form.vue';
+import ruleMain from './rules.vue';
+import designMain from './design.vue';
+export default {
+    components: {
+        formMain,ruleMain,designMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.page.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    methods: {
+        table_close(data){
+            var status = 1;
+            var str = "下架落地页后,所有用户均无法提交订单,也不会回传上游信息";
+            if (data.status == 0) {
+                status = 2;
+                str = "恢复上架,可继续投放";
+            }
+            this.$confirm(str, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var loading = this.$loading()
+                var resp = await this.$API.page.status.post({"id":data.id,"status":status});
+                loading.close();
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$refs.table.refresh()
+            }).catch(()=>{})
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_edit(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+        table_rule(row){
+            this.$nextTick(() => {
+                this.$refs.ruleMain.open("edit").setData(row)
+            })
+        },
+        table_design(row) {
+            this.$nextTick(() => {
+                this.$refs.designMain.open("edit").setData(row)
+            })
+        }
+    }
+}
+</script>
+
+<style>
+.goods-img{display: flex;gap: 5px;}
+.goods-img .name span{display: block;}
+.goods-img .name span.dec{color: #999;font-size: 12px;cursor: pointer;}
+.goods-price,.price{display: flex;align-items: center;gap: 5px;font-size: 14px;}
+.goods-price .del{text-decoration: line-through;}
+.goods-price span{background-color: #fff !important;
+    border: 1px solid #d3d9e0 !important;
+    border-radius: 4px;
+    box-sizing: border-box;
+    color: #6c737a !important;
+    display: inline-flex;
+    flex: none;
+    font-size: 12px;
+    line-height: 18px !important;
+    padding: 1px 6px !important;text-decoration: none;}
+.flex{display: flex;align-items: center;gap: 5px;}
+</style>

+ 43 - 8
src/views/project/pages/index.vue

@@ -1,12 +1,47 @@
 <template>
-
+    <el-container class="flex-column">
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <opMain @success="handleSuccess"></opMain>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" type="3"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
 </template>
 
 <script>
-
-
-</script>
-
-<style>
-
-</style>
+import search from './components/search.vue';
+import tablePage from './components/table.vue';
+import opMain from './components/option.vue';
+export default {
+    components: {
+        search,tablePage,opMain
+    },
+    data(){
+        return {
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 0 - 1
src/views/project/product/components/table.vue

@@ -109,7 +109,6 @@ export default {
                 status = 2;
                 str = "恢复商品上架,可继续投放";
             }
-            console.log("data.status",status,data.status);
             this.$confirm(str, '提示', {
                 type: 'warning'
             }).then(async ()=>{