Browse Source

'1702-445dd'

zory 14 hours ago
parent
commit
97b02ddc97

+ 33 - 0
src/api/model/merPlan.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/merchant/plan/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/merchant/plan/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    update: {
+        url: `${config.API_URL}/merchant/plan/update`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/merchant/plan/del`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 307 - 0
src/views/merchant/components/goods.vue

@@ -0,0 +1,307 @@
+<!--
+ * @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="title">
+                                    <el-input v-model="searchKey.title" 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="180" fixed="left" prop="goods_id">
+                            <template #default="scope">
+                                {{ scope.row.goods_id?scope.row.goods_id:'审核中' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="商品类型" prop="types" width="100"></el-table-column>
+                        <el-table-column label="商品信息" width="340" prop="name">
+                            <template #default="scope">
+                                <div class="goods-img">
+                                    <div class="img">
+                                        <el-image 
+                                        style="width: 54px; height: 54px"
+                                        :src="scope.row.image_list[0].url"
+                                        :zoom-rate="1.2"
+                                        :max-scale="7"
+                                        :min-scale="0.2"
+                                        :preview-src-list="[scope.row.image_list[0].url]"
+                                        preview-teleported
+                                        z-index="999"
+                                        fit="cover"></el-image>
+                                    </div>
+                                    <div class="name">
+                                        <span>{{ scope.row.product_name }}</span>
+                                        <span class="dec">商品编码:{{ scope.row.product_id }}</span>
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="价格" width="200" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ $TOOL.moneyFormat(scope.row.price) }}</div>
+                                <div class="goods-price">
+                                    <div class="del">{{ $TOOL.moneyFormat(scope.row.line_price) }}</div>
+                                    <span>{{ $TOOL.disFormat(scope.row.price,scope.row.line_price) }}折</span></div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="剩余库存" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.limit_use_rule==1">{{ scope.row.use_num_per_consume }}</span>
+                                <span v-else>不限</span>
+                            </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>
+                                <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="商品ID" width="180" fixed="left" prop="goods_id">
+                            <template #default="scope">
+                                {{ scope.row.goods_id?scope.row.goods_id:'审核中' }}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="商品类型" prop="types" width="100"></el-table-column>
+                        <el-table-column label="商品信息" width="340" prop="name">
+                            <template #default="scope">
+                                <div class="goods-img">
+                                    <div class="img">
+                                        <el-image 
+                                        style="width: 54px; height: 54px"
+                                        :src="scope.row.image_list[0].url"
+                                        :zoom-rate="1.2"
+                                        :max-scale="7"
+                                        :min-scale="0.2"
+                                        :preview-src-list="[scope.row.image_list[0].url]"
+                                        preview-teleported
+                                        z-index="999"
+                                        fit="cover"></el-image>
+                                    </div>
+                                    <div class="name">
+                                        <span>{{ scope.row.product_name }}</span>
+                                        <span class="dec">商品编码:{{ scope.row.product_id }}</span>
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="价格" width="200" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ $TOOL.moneyFormat(scope.row.price) }}</div>
+                                <div class="goods-price">
+                                    <div class="del">{{ $TOOL.moneyFormat(scope.row.line_price) }}</div>
+                                    <span>{{ $TOOL.disFormat(scope.row.price,scope.row.line_price) }}折</span></div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="剩余库存" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.limit_use_rule==1">{{ scope.row.use_num_per_consume }}</span>
+                                <span v-else>不限</span>
+                            </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>
+                                <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.merGoods.list
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            searchKey:{
+                status:1
+            },
+            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>

+ 347 - 0
src/views/merchant/components/star.vue

@@ -0,0 +1,347 @@
+<!--
+ * @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="340" prop="name" fixed="left">
+                            <template #default="scope">
+                                <div class="goods-img">
+                                    <div class="img">
+                                        <el-image 
+                                        style="width: 54px; height: 54px"
+                                        :src="scope.row.avatar_url"
+                                        :zoom-rate="1.2"
+                                        :max-scale="7"
+                                        :min-scale="0.2"
+                                        :preview-src-list="[scope.row.avatar_url]"
+                                        preview-teleported
+                                        z-index="999"
+                                        fit="cover"></el-image>
+                                    </div>
+                                    <div class="name">
+                                        <span>{{ scope.row.show_nickname }}</span>
+                                        <span class="dec">抖音号:{{ scope.row.unique_id }}</span>
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="粉丝数" width="200" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ scope.row.fans_count }}</div>
+                                <div class="goods-price">
+                                    <span v-for="value in scope.row.fans_tag_list">{{ value }}</span></div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="本地粉丝数" width="120" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ scope.row.local_fans_count }}</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="视频带货力" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.talent_item_level_display">{{ scope.row.talent_item_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="直播带货力" prop="talent_live_level_display" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.talent_live_level_display">{{ scope.row.talent_live_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="内容力" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.content_level_display">{{ scope.row.content_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="信用分" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.credit_score_display">{{ scope.row.credit_score_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="视频榜" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.rank_display">{{ scope.row.city_name }} 第{{ scope.row.rank_display }}名</span>
+                                <span v-else>-</span>
+                            </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="达人" width="340" prop="name" fixed="left">
+                            <template #default="scope">
+                                <div class="goods-img">
+                                    <div class="img">
+                                        <el-image 
+                                        style="width: 54px; height: 54px"
+                                        :src="scope.row.avatar_url"
+                                        :zoom-rate="1.2"
+                                        :max-scale="7"
+                                        :min-scale="0.2"
+                                        :preview-src-list="[scope.row.avatar_url]"
+                                        preview-teleported
+                                        z-index="999"
+                                        fit="cover"></el-image>
+                                    </div>
+                                    <div class="name">
+                                        <span>{{ scope.row.show_nickname }}</span>
+                                        <span class="dec">抖音号:{{ scope.row.unique_id }}</span>
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="粉丝数" width="200" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ scope.row.fans_count }}</div>
+                                <div class="goods-price">
+                                    <span v-for="value in scope.row.fans_tag_list">{{ value }}</span></div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="本地粉丝数" width="120" prop="id">
+                            <template #default="scope">
+                                <div class="price">{{ scope.row.local_fans_count }}</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="视频带货力" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.talent_item_level_display">{{ scope.row.talent_item_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="直播带货力" prop="talent_live_level_display" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.talent_live_level_display">{{ scope.row.talent_live_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="内容力" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.content_level_display">{{ scope.row.content_level_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="信用分" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.credit_score_display">{{ scope.row.credit_score_display }}</span>
+                                <span v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="视频榜" prop="category_id" width="120">
+                            <template #default="scope">
+                                <span v-if="scope.row.rank_display">{{ scope.row.city_name }} 第{{ scope.row.rank_display }}名</span>
+                                <span v-else>-</span>
+                            </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.merStar.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>

+ 306 - 0
src/views/merchant/cps/index/components/form.vue

@@ -0,0 +1,306 @@
+<template>
+    <el-drawer v-model="visible" title="在线客服" size="800px" 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>
+                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+                    <el-form-item label="计划名称" prop="plan_name">
+                        <el-input v-model="formData.plan_name" clearable placeholder="请输入"></el-input>
+                        <div class="el-form-item-msg"></div>
+                    </el-form-item>
+                    <el-form-item label="联系电话" prop="merchant_phone">
+                        <el-input v-model="formData.merchant_phone" clearable placeholder="请输入"></el-input>
+                        <div class="el-form-item-msg">必须是真实可用的手机号码,否则计划可能会不通过审核</div>
+                    </el-form-item>
+                    <fieldset>
+                        <legend><el-tag>推广团购商品</el-tag></legend>
+                        <el-button type="primary" @click="addGoods" v-if="goodsData.length<50">添加团购商品({{ goodsData.length }}/50</el-button>
+                        <div class="goods-live" v-if="goodsData.length>0">
+                            <scTable ref="starTable" :data="goodsData" row-key="id" height="300" hidePagination style="width: 750px;">
+                                <el-table-column label="商品ID" width="180" fixed="left" prop="goods_id">
+                                    <template #default="scope">
+                                        {{ scope.row.goods_id?scope.row.goods_id:'审核中' }}
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="商品类型" prop="types" width="100"></el-table-column>
+                                <el-table-column label="商品信息" width="340" prop="name">
+                                    <template #default="scope">
+                                        <div class="goods-img">
+                                            <div class="img">
+                                                <el-image 
+                                                style="width: 54px; height: 54px"
+                                                :src="scope.row.image_list[0].url"
+                                                :zoom-rate="1.2"
+                                                :max-scale="7"
+                                                :min-scale="0.2"
+                                                :preview-src-list="[scope.row.image_list[0].url]"
+                                                preview-teleported
+                                                z-index="999"
+                                                fit="cover"></el-image>
+                                            </div>
+                                            <div class="name">
+                                                <span>{{ scope.row.product_name }}</span>
+                                                <span class="dec">商品编码:{{ scope.row.product_id }}</span>
+                                            </div>
+                                        </div>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="价格" width="200" prop="id">
+                                    <template #default="scope">
+                                        <div class="price">{{ $TOOL.moneyFormat(scope.row.price) }}</div>
+                                        <div class="goods-price">
+                                            <div class="del">{{ $TOOL.moneyFormat(scope.row.line_price) }}</div>
+                                            <span>{{ $TOOL.disFormat(scope.row.price,scope.row.line_price) }}折</span></div>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="剩余库存" prop="category_id" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.limit_use_rule==1">{{ scope.row.use_num_per_consume }}</span>
+                                        <span v-else>不限</span>
+                                    </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>
+                                        <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="操作" width="100" align="left" fixed="right">
+                                    <template #default="scope">
+                                        <el-button-group>
+                                            <el-button type="danger" text size="small" @click="removeGoods(scope.$index)">删除</el-button>
+                                        </el-button-group>
+                                    </template>
+                                </el-table-column>
+                            </scTable>
+                        </div>
+                    </fieldset>
+                    <fieldset>
+                        <legend><el-tag>指定带货达人</el-tag></legend>
+                        <el-button type="primary" @click="addStar" v-if="starData.length<200">添加达人({{ starData.length }}/200)</el-button>
+                        <div class="goods-live" v-if="starData.length>0">
+                            <scTable ref="starTable" :data="starData" row-key="id" height="300" hidePagination style="width: 750px;">
+                                <el-table-column label="达人" width="340" prop="name" fixed="left">
+                                    <template #default="scope">
+                                        <div class="goods-img">
+                                            <div class="img">
+                                                <el-image 
+                                                style="width: 54px; height: 54px"
+                                                :src="scope.row.avatar_url"
+                                                :zoom-rate="1.2"
+                                                :max-scale="7"
+                                                :min-scale="0.2"
+                                                :preview-src-list="[scope.row.avatar_url]"
+                                                preview-teleported
+                                                z-index="999"
+                                                fit="cover"></el-image>
+                                            </div>
+                                            <div class="name">
+                                                <span>{{ scope.row.show_nickname }}</span>
+                                                <span class="dec">抖音号:{{ scope.row.unique_id }}</span>
+                                            </div>
+                                        </div>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="粉丝数" width="200" prop="id">
+                                    <template #default="scope">
+                                        <div class="price">{{ scope.row.fans_count }}</div>
+                                        <div class="goods-price">
+                                            <span v-for="value in scope.row.fans_tag_list">{{ value }}</span></div>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="本地粉丝数" width="120" prop="id">
+                                    <template #default="scope">
+                                        <div class="price">{{ scope.row.local_fans_count }}</div>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="视频带货力" prop="category_id" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.talent_item_level_display">{{ scope.row.talent_item_level_display }}</span>
+                                        <span v-else>-</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="直播带货力" prop="talent_live_level_display" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.talent_live_level_display">{{ scope.row.talent_live_level_display }}</span>
+                                        <span v-else>-</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="内容力" prop="category_id" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.content_level_display">{{ scope.row.content_level_display }}</span>
+                                        <span v-else>-</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="信用分" prop="category_id" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.credit_score_display">{{ scope.row.credit_score_display }}</span>
+                                        <span v-else>-</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="视频榜" prop="category_id" width="120">
+                                    <template #default="scope">
+                                        <span v-if="scope.row.rank_display">{{ scope.row.city_name }} 第{{ scope.row.rank_display }}名</span>
+                                        <span v-else>-</span>
+                                    </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>
+                                <el-table-column label="操作" width="100" align="left" fixed="right">
+                                    <template #default="scope">
+                                        <el-button-group>
+                                            <el-button type="danger" text size="small" @click="removeStar(scope.$index)">删除</el-button>
+                                        </el-button-group>
+                                    </template>
+                                </el-table-column>
+                            </scTable>
+                        </div>
+                    </fieldset>
+                    <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>
+            </el-main>
+            <el-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>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+    <starMain ref="starMain" :multiple="true" @success="handleStar"></starMain>
+    <goodsMain ref="goodsMain" :multiple="true" @success="handleGoods"></goodsMain>
+</template>
+
+<script>
+import starMain from '@/views/merchant/components/star';
+import goodsMain from '@/views/merchant/components/goods';
+export default {
+    components: {
+        starMain,goodsMain
+    },
+    data(){
+        return {
+            goodsData:[],
+            starData:[],
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"创建直播计划",
+                edit:"编辑直播计划"
+            },
+            visible:false,
+            formData:{
+                status:1
+            },
+            rules:{
+                status: [
+                    {required: true, message: '请选择'}
+                ],
+                plan_name: [
+                    {required: true, message: '请输入'}
+                ],
+                merchant_phone: [
+                    {required: true, message: '请输入'}
+                ]
+            }
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = JSON.parse(JSON.stringify(data));
+        },
+        addGoods(){
+            this.$nextTick(() => {
+                this.$refs.goodsMain.open("add")
+            })
+        },
+        removeGoods(index){
+            this.goodsData.splice(index,1);
+            this.$nextTick(() => {
+                this.$refs.starTable.refresh()
+            })
+        },
+        addStar(){
+            this.$nextTick(() => {
+                this.$refs.starMain.open("add")
+            })
+        },
+        removeStar(index){
+            this.starData.splice(index,1);
+            this.$nextTick(() => {
+                this.$refs.starTable.refresh()
+            })
+        },
+        handleStar(data){
+            var newData = [];
+            data.forEach((value)=>{
+                const has = this.starData.some(item => item['id'] === value['id'])
+                if (!has) newData.push(value)
+            })
+            if (newData.length > 0) {
+                this.starData = this.starData.concat(newData);
+            }
+        },
+        handleGoods(data){
+            var newData = [];
+            data.forEach((value)=>{
+                const has = this.goodsData.some(item => item['id'] === value['id'])
+                if (!has) newData.push(value)
+            })
+            if (newData.length > 0) {
+                this.goodsData = this.goodsData.concat(newData);
+            }
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            if (this.goodsData.length == 0) return this.$message.error("请添加团购商品")
+            if (this.starData.length == 0) return this.$message.error("请添加达人")
+            this.isSaveing = true;
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            submitData.goods = JSON.stringify(this.goodsData);
+            submitData.star = JSON.stringify(this.starData);
+            var resp = await this.$API.merPlan.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;}
+.goods-live{width: 100%;margin-top: 10px;}
+</style>

+ 75 - 0
src/views/merchant/cps/index/components/option.vue

@@ -0,0 +1,75 @@
+<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';
+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")
+            })
+        },
+        table_sync(){
+            this.$confirm(`发起同步后,请耐心等待1-2分钟后再刷新当前数据列表`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var resp = await this.$API.category.sync.get();
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            this.$confirm(`审核中的商品不支持该操作,请确认是否有勾选审核中的商品`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var loading = this.$loading()
+                let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+                loading.close()
+                var resp = await this.$API.merGoods.batch.post(submitData);
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        handleSuccess(){
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 42 - 0
src/views/merchant/cps/index/components/search.vue

@@ -0,0 +1,42 @@
+<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>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
+</script>

+ 186 - 0
src/views/merchant/cps/index/components/table.vue

@@ -0,0 +1,186 @@
+<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">
+            <template #default="scope">
+                <div class="price">{{ scope.row.plan_name }}</div>
+                <span class="dec">计划ID:{{ scope.row.plan_id }}</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="抖音核销金额(元)" prop="id">
+            <template #header>
+                <el-tooltip effect="dark" placement="top-start" content="成交金额带来的核销金额">
+                    <div class="flex">抖音核销金额(元) <el-icon><el-icon-question-filled /></el-icon></div>
+                </el-tooltip>
+            </template>
+            <template #default="scope">
+                <span v-if="scope.row.talent_item_level_display">{{ scope.row.done_money }}</span>
+                <span v-else>-</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="成交金额(元)" prop="category_id">
+            <template #header>
+                <el-tooltip effect="dark" placement="top-start">
+                    <template #content>除通过达人视频、直播直接下单的成交金额外,还包含消费者<br>看过达人视频后,通过抖音其他渠道下单的成交金额,例如搜索等。</template>
+                    <div class="flex">成交金额(元) <el-icon><el-icon-question-filled /></el-icon></div>
+                </el-tooltip>
+            </template>
+            <template #default="scope">
+                <span v-if="scope.row.order_money">{{ scope.row.order_money }}</span>
+                <span v-else>-</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="达人佣金(元)" prop="star_money">
+            <template #default="scope">
+                <span v-if="scope.row.star_money">{{ scope.row.star_money }}</span>
+                <span v-else>-</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="订单量" prop="category_id">
+            <template #default="scope">
+                <span v-if="scope.row.order_num">{{ scope.row.order_num }}</span>
+                <span v-else>-</span>
+            </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>
+        <el-table-column label="操作" width="180" align="left" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button size="small" text @click="table_update(scope.row)" v-if="scope.row.status == 1">更新</el-button>
+                    <el-button type="danger" text size="small" @click="table_del(scope.row)">删除</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.merPlan.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    
+    methods: {
+        table_auth(data){
+            this.$nextTick(() => {
+                this.$refs.comboMain.open("edit").setData(data)
+            })
+        },
+        table_update(data){
+            this.$confirm(`更新后可能数据没有变化,确定更新该达人的基础数据吗?`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merStar.update.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$refs.table.refresh()
+            }).catch(()=>{})
+        },
+        table_life(data){
+            this.$confirm(`来客下架成功后,在小程序中将不展示该商品,同时也将无法二次上架`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merGoods.off.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(()=>{})
+        },
+        table_view(data){
+            this.$router.push({path:"/merchant/goods/edit",query:{"product_id":data.product_id,"id":data.id,"spm":(new Date()).getTime()}})
+        },
+        table_del(data){
+            this.$confirm(`删除店铺后,所有有关该店铺的门店、订单等信息都将删除,不可恢复,确定要执行删除吗`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.shop.del.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).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_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.userPasswd.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;}
+.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>

+ 36 - 4
src/views/merchant/cps/index/index.vue

@@ -1,14 +1,46 @@
 <template>
     <el-container class="flex-column">
-
-    </el-container>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" type="3"></optionBtn>
+        </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>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
 export default {
-    data() {
+    components: {
+        search,tablePage,optionBtn
+    },
+    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)
         }
     }
 }

+ 5 - 0
src/views/merchant/cps/star/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.unique" 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>