Explorar el Código

0728-1312-h01

Zory hace 1 semana
padre
commit
28b3540fd2

+ 156 - 426
src/views/manage/dashboard/index.vue

@@ -1,465 +1,195 @@
 <template>
     <div v-if="pageLoading">
-		<el-main>
-			<el-card shadow="never">
-				<el-skeleton :rows="5"></el-skeleton>
-			</el-card>
-			<el-card shadow="never" style="margin-top: 15px;">
-				<el-skeleton></el-skeleton>
-			</el-card>
-		</el-main>
-	</div>
-    <el-main>
-        <div class="card-news mt0">
-            <div class="news-title">经营数据</div>
-            <div class="total-panel">
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(235, 241, 255);">
-                    <div class="item-warp">
-                        <div class="left">
-                            <div class="title">今日营业额(元)</div>
-                            <div class="number">{{ todayData.order_money ? todayData.order_money:'0' }}</div>
-                            <div class="desc">来客订单金额</div>
+        <el-main>
+            <el-card shadow="never">
+                <el-skeleton :rows="5" animated></el-skeleton>
+            </el-card>
+            <el-card shadow="never" style="margin-top: 15px;">
+                <el-skeleton animated></el-skeleton>
+            </el-card>
+        </el-main>
+    </div>
+    <el-main v-else>
+        <el-card shadow="never" header="实时概况" class="no-boder">
+            <el-row :gutter="10">
+                <el-col :span="6">
+                    <div class="total-panel">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-money /></el-icon></div>
+                        <div class="right">
+                            <div class="title">销售额 (元)</div>
+                            <div class="number">0.00</div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-1-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-1.png" /></div>
-                </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(240, 235, 255);">
-                    <div class="item-warp">
-                        <div class="left">
-                            <div class="title">今日订单数(单)</div>
-                            <div class="number">{{ todayData.order_num ? todayData.order_num:'0' }}</div>
-                            <div class="desc">来客订单</div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel">
+                        <div class="right">
+                            <div class="title">退款金额</div>
+                            <div class="number">0.00</div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-2-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-2.png" /></div>
-                </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(255, 241, 214);">
-                    <div class="item-warp">
-                        <div class="left">
-                            <div class="title">今日核销(单)</div>
-                            <div class="number">{{ todayData.order_done ? todayData.order_done:'0' }}</div>
-                            <div class="desc">已完成核销</div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-pie-chart /></el-icon></div>
+                        <div class="right">
+                            <div class="title">商品总数量</div>
+                            <div class="number">0.00</div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-3-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-3.png" /></div>
-                </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(250, 230, 244);">
-                    <div class="item-warp">
-                        <div class="left">
-                            <div class="title">今日待发货(单)</div>
-                            <div class="number">{{ todayData.order_send ? todayData.order_send:'0' }}</div>
-                            <div class="desc">待发快递</div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel">
+                        <div class="right">
+                            <div class="title">付款订单总量</div>
+                            <div class="number">0</div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
-                </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(235, 255, 248);">
-                    <div class="item-warp">
-                        <div class="left">
-                            <div class="title">店铺数量</div>
-                            <div class="number">{{ todayData.store_num ? todayData.store_num:'0' }}</div>
-                            <div class="desc">开通绑定店铺数量</div>
+                </el-col>
+            </el-row>
+        </el-card>
+        <!-- <div class="total-panel-list">
+            <el-row :gutter="20">
+                <el-col :span="6">
+                    <div class="total-panel padding15">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-coin /></el-icon></div>
+                        <div class="right">
+                            <div class="title">商品总数量</div>
+                            <div class="number">0.00</div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-5-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-5.png" /></div>
-                </div>
-            </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel padding15">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-coin /></el-icon></div>
+                        <div class="right">
+                            <div class="title">会员总人数</div>
+                            <div class="number">0.00</div>
+                        </div>
+                    </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel padding15">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-coin /></el-icon></div>
+                        <div class="right">
+                            <div class="title">付款订单总量</div>
+                            <div class="number">0.00</div>
+                        </div>
+                    </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel padding15">
+                        <div class="icon"><el-icon size="22" color="#4799ff"><el-icon-coin /></el-icon></div>
+                        <div class="right">
+                            <div class="title">消费总人数</div>
+                            <div class="number">0.00</div>
+                        </div>
+                    </div>
+                </el-col>
+            </el-row>
+        </div> -->
+        <div class="total-order-status">
+            <el-row :gutter="20">
+                <el-col :span="6">
+                    <div class="total-panel center no-flex">
+                        <div class="title">待发货订单(笔)</div>
+                        <div class="number">0</div>
+                    </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel center no-flex">
+                        <div class="title">售后单(笔)</div>
+                        <div class="number">0</div>
+                    </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel center no-flex">
+                        <div class="title">待核销订单(笔)</div>
+                        <div class="number">0</div>
+                    </div>
+                </el-col>
+                <el-col :span="6">
+                    <div class="total-panel center no-flex">
+                        <div class="title">待付款订单(笔)</div>
+                        <div class="number">0</div>
+                    </div>
+                </el-col>
+            </el-row>
+        </div>
+        <div class="total-order-status mt10">
+            <scEcharts height="500px" :option="option"></scEcharts>
         </div>
-        <el-row :gutter="10">
-            <el-col :span="this.$store.state.global.ismobile?24:12">
-                <div class="card-news mt10">
-                    <scEcharts height="500px" :option="option2"></scEcharts>
-                </div>
-            </el-col>
-            <el-col :span="this.$store.state.global.ismobile?24:12">
-                <div class="card-news mt10">
-                    <scEcharts height="500px" :option="option"></scEcharts>
-                </div>
-            </el-col>
-        </el-row>
     </el-main>
 </template>
 
 <script>
-import blueBg from "@/assets/image/blue_bg.png";
 import scEcharts from '@/components/scEcharts';
 export default {
-    name: "dashboard",
     components: {
         scEcharts
     },
     data(){
         return {
-            pageLoading: false,
-            dashboard: '0',
-            todayData:{},
-            dataInfo:{},
-            blueBg,
-            baseData:{},
-            option: {},
+            pageLoading:false,
             option2: {},
-        }
-    },
-    created(){
-        var baseData = this.$TOOL.data.get("SERVICE");
-        this.baseData = baseData;
-        // this.getData()
-    },
-    methods: {
-        async getData(){
-            var loading = this.$loading();
-            var resp = await this.$API.dash.manage.get();
-            loading.close();
-            this.todayData = resp.data.today;
-            let data = resp.data.moneys;
-            let moneyDay = data.map(function (item) {
-                return item['当天日期'];
-            });
-            let data2 = resp.data.orders;
-            let orderDay = data2.map(function (item) {
-                return item['当天日期'];
-            });
-            this.option = {
+            option: {
                 title: {
                     left: 'left', 
-                    text: '近15天订单数据',
+                    text: '订单数据',
                 },
                 grid: {
                     top: '80px'
                 },
-                tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
-                xAxis: [{data: orderDay, gridIndex: 0}],
-                yAxis: [
-                    {
-                        splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
-                            formatter: '{value} 单'
-                        }
-                    }
-                ],
-                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
-                series: [
-                    {
-                        smooth: true, showBackground: true,
-                        areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
-                        type: 'bar', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
-                        label: {normal: {position: 'top', formatter: '{c} 单', show: true}},
-                        data: data2.map(function (item) {
-                            return item['订单数量'];
-                        }),
-                    }
-                ]
-            };
-            this.option2 = {
-                title: {
-                    left: 'left', 
-                    text: '近15天订单金额',
+                tooltip: {
+                    trigger: 'axis'
                 },
-                grid: {
-                    top: '80px'
+                legend: {
+                    x: 'center',
+                    data: ['订单金额', '订单数']
                 },
-                tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
-                xAxis: [{data: moneyDay, gridIndex: 0}],
-                yAxis: [
-                    {
-                        splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
-                            formatter: '{value} 元'
-                        }
-                    }
-                ],
-                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
-                series: [
-                    {
-                        smooth: true, showBackground: true,
-                        areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
-                        type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
-                        label: {normal: {position: 'top', formatter: '{c} 元', show: true}},
-                        data: data.map(function (item) {
-                            return item['订单金额'];
-                        }),
-                    }
-                ]
-            };
+                calculable: true,
+                xAxis: {
+                    type: 'category',
+                    data: ['06-25', '06-26', '06-27', '06-28', '06-29', '06-30', '07-01', '07-02', '07-03', '07-04']
+                },
+                yAxis: [{
+                    type: 'value'
+                }],
+                // yAxis: [{type: 'value', splitLine: {show: true}, gridIndex: 0, axisLabel: {formatter: '{value} 单'}}],
+                series: [{
+                    name: '订单金额',
+                    data: [120, 200, 50, 80, 170, 210, 130,450,244,168],
+                    smooth: true, showBackground: false,
+                    areaStyle: {color: 'rgba(64, 158, 254, 0.6)'},
+                    type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                    emphasis:{focus: 'series'},
+                    label: {position: 'top', formatter: '{c}', show: true},
+                },{
+                    name: '订单数',
+                    data: [20, 210, 10, 180, 110, 100, 130,450,244,168],
+                    smooth: true, showBackground: false,
+                    areaStyle: {color: 'rgba(54, 206, 159, 0.6)'},
+                    type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                    emphasis:{focus: 'series'},
+                    label: {position: 'top', formatter: '{c}', show: true},
+                }]
+            },
         }
     }
 }
 </script>
 
 <style>
-.myMods {list-style:none;margin:-10px;}
-.myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
-.myMods li:hover {opacity: 0.8;}
-.myMods li a {width: 100%;height: 100%;padding:10px;display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;color: #333;}
-.myMods li i {font-size: 26px;color: #333;}
-.myMods li p {font-size: 12px;color: #333;margin-top: 10px;width: 100%;white-space:nowrap;text-overflow:ellipsis;overflow: hidden;}
-.mt0 {
-    margin-top: 0;
-}
-.service-item {
-    border: 1px solid #EAE9F0;
-    padding: 12px 14px;
-    border-radius: 6px;
-    display: flex;
-    align-items: center;
-    flex: 1;
-}
-.service-item .item-sub{
-    width: 40%;
-}
-.service-item .right-btn {
-    margin-left: auto;
-}
-.service-item img {
-    width: 44px;
-    height: 54px;
-    margin-right: 20px;
-}
-.service-item h3 {
-    font-size: 14px;
-    color: #000000d9;
-    margin-bottom: 8px;
-}
-.service-item p {
-    font-size: 13px;
-    color: #333333d9;
-}
-.service-item .value{
-    font-size: 18px;
-    color: #f64945;
-    font-weight: 700;
-    margin-left: auto;
-}
-.service-item .value span {
-    font-weight: normal;
-    color: #666;
-    font-size: 12px;
-}
-.service-tel {
-    display: flex;
-    align-items: center;
-    margin-top: 20px;
-}
-.service-tel img{
-    width: 32px;
-    height: 32px;
-    margin-right: 12px;
-}
-.service-tel span{
-    font-size: 20px;
-    font-weight: 500;
-    color: #35f;
-}
-.total-panel .panel-item.bg-gray .item-warp .left{
-    padding: 12px 24px;
-}
-.total-panel .panel-item.bg-gray {
-    background-color: #F7F9FC;
-    height: 104px;
-    background-size: cover;
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #fff;
-}
-.total-panel .panel-item.bg-gray .item-warp.img .title {color: #fff;}
-.total-panel .panel-item.bg-gray .item-warp.img .number{color: #fff;}
-.total-panel .panel-item.bg-gray .item-warp.img .desc{color: #fff;}
-.total-panel .panel-item.bg-gray .number{
-    font-size: 24px;
-}
-.total-panel .panel-item.bg-gray .number span{
-    font-size: 14px;
-    margin-left: 10px;
-}
-.total-panel .panel-item.bg-gray .title{
-    margin-bottom: 7px;
-}
-.total-panel-sub .sub-card {
-    border: 1px solid #EAE9F0;
-}
-.total-panel-sub .sub-card .title{
-    font-size: 14px;
-    color: #000000;
-    font-weight: bold;
-    margin: 22px 0 12px 22px;
-}
-.total-panel-sub .sub-card .title.red{
-    display: flex;
-    align-items: center;
-}
-.total-panel-sub .sub-card .title.red::before{
-    content: "";
-    display: block;
-    width: 4px;
-    height: 4px;
-    border-radius: 4px;
-    background-color: #f64945;
-    margin-right: 6px;
-}
-.total-panel-sub .sub-card .sub-content{
-    display: flex;
-    align-items: stretch;
-    justify-content: space-between;
-    padding: 0px 22px 22px 22px;
-}
-.sub-box {
-    width: calc((100% - 24px) / 3);
-    padding: 12px 16px 12px 16px;
-    background: #FFFFFF;
-    box-shadow: 0px 0px 10px 0px rgba(203, 203, 203, 0.25);
-    border-radius: 6px;
-    box-sizing: border-box;
-}
-.sub-box .row1 {
-    display: flex;
-    align-items: center;
-    line-height: 1;
-    margin-bottom: 10px;
-}
-.sub-box .row2 {
-    font-size: 24px;
-    color: #333333;
-    font-weight: bold;
-    margin-bottom: 10px;
-}
-.sub-box .row2.red{
-    color: #f00;
-}
-.sub-box .row2 span {
-    margin-left: 10px;
-    font-size: 14px;
-}
-.sub-box .row3 {
-    font-size: 14px;
-    color: #666666;
-}
-.sub-box .row1 img{
-    width: 15px;
-    height: auto;
-    margin-right: 8px;
-}
-.sub-box .row1 span{
-    font-size: 14px;
-    color: #333333;
-}
-.total-panel {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    flex-wrap: wrap;
-    margin-top: 16px;
-}
-.total-panel .panel-item.m{
-    width: calc(100% - 9.6px);
-    margin-bottom: 10px;
-}
-.total-panel .panel-item{
-    width: calc(20% - 9.6px);
-    height: 130px;
-    box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 8px;
-    position: relative;
-    border-radius: 6px;
-}
-.total-panel .panel-item .item-warp .left {
-    padding:16px 0px 0px 23px;
-}
-.total-panel .panel-item .item-warp .right {
-    width: 32px;
-    height: 32px;
-    margin: 13px 14px 0px 0px;
-}
-.total-panel .panel-item .item-warp .right img{
-    width:100%;
-    height:100%;
-    display:block;
-}
-.total-panel .panel-item .item-warp{
-    position: relative;
-    z-index: 10;
-    display: flex;
-    justify-content: space-between;
-}
-.total-panel .panel-item .item-wave {
-    position: absolute;
-    left: 0px;
-    right: 0px;
-    bottom: 0px;
-    width: 100%;
-    height: auto;
-    z-index: 9;
-}
-.total-panel .panel-item .item-wave img {
-    width: 100%;
-    height: 100%;
-}
-.total-panel .panel-item .title{
-    font-size: 14px;
-    color: rgb(51, 51, 51);
-    margin-bottom: 18px;
-    font-weight: 500;
-}
-.total-panel .panel-item .number{
-    font-size: 26px;
-    margin-bottom: 7px;
-    font-weight: 700;
-    color: rgb(51, 51, 51);
-}
-.total-panel .panel-item .desc{
-    font-size: 13px;
-    color: rgb(102, 102, 102);
-}
-.total-panel .panel-item .number span{
-    font-size: 16px;
-    font-weight: normal;
-}
-.panel-line{
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 100%;
-}
-.panel-line span{
-    width: 1px;
-    background-color: #f0f0f0;
-    height: 60%;
-    display: block;
-}
-.card-news{
-    background-color: #fff;
-    padding: 20px;
-    border-radius: 5px;
-}
-.news-title{
-    font-size: 16px;
-    color: #000;
-    font-weight: bold;
-    margin-bottom: 10px;
-    display: flex;
-    align-items: center;
-}
-.news-title::before{
-    content: "";
-    width: 4px;
-    height: 16px;
-    display: block;
-    background-color: var(--el-color-primary);;
-    margin-right: 8px;
-}
-.date-title{display:flex; align-items:center;line-height:40px;position: relative;}
-.date-title .dot{
-    width: 5px;
-    height: 5px;
-    background: var(--el-color-primary);
-    border-radius: 100%;
-    margin-right: 10px;
-}
-.date-time{
-    font-size: 12px;
-    color: #666;
-    margin-left: auto;
-    margin-right: 0;
-}
-</style>
+.no-boder{border: 0;}
+.total-panel{display: flex;align-items: center;gap: 20px;background-color: #fff;border-radius: 5px;flex: 1;}
+.total-panel.padding15{padding: 15px;}
+.total-panel.no-flex{flex-direction: column;justify-content: center;gap: 5px;}
+.total-panel.no-flex .title{font-weight: bold;}
+.total-panel.center .right{text-align: center;}
+.total-panel .icon{width: 58px;height: 58px;border-radius: 50%;background-color: #eff6ff;display: flex;align-items: center;justify-content: center;}
+.total-panel .title{font-size: 13px;color: #666;}
+.total-panel .number{font-size: 24px;color: #000;line-height: 38px;}
+.total-panel-list{margin: 20px 0;}
+.total-order-status{background-color: #fff;padding: 20px;margin-top: 20px;}
+.mt10{margin-top: 20px;}
+</style>

+ 3 - 2
src/views/merchant/cps/index/components/edit.vue

@@ -26,9 +26,10 @@
                                 <el-skeleton animated></el-skeleton>
                             </el-card>
                         </div>
-                        <el-button type="default" @click="quickGoods" v-if="goodsData.length > 0">一键设置佣金</el-button>
+                        <el-button type="default" @click="quickGoods" v-if="goodsData.length > 0">一键设置佣金({{ goodsData.length }}个)</el-button>
                         <div class="goods-live" v-if="goodsData.length>0">
                             <scTable ref="starTable" :data="goodsData" row-key="id" height="500" hidePagination hideDo style="width: 750px;">
+                                <el-table-column type="index" label="序号" width="50" fixed="left"></el-table-column>
                                 <el-table-column label="商品信息" width="340" prop="name" fixed="left">
                                     <template #default="scope">
                                         <div class="goods-img">
@@ -90,7 +91,7 @@
                         </div>
                     </el-form-item>
                     <el-form-item label="指定带货达人" v-if="mode == 'star'">
-                        <el-button type="default" @click="addStar" v-if="starData.length>0">添加达人({{ starData.length }}/200)</el-button>
+                        <el-button type="default" @click="addStar">添加达人({{ starData.length }}/200)</el-button>
                         <div class="flex-loading" v-if="loading && starData.length == 0">
                             <el-card shadow="never">
                                 <el-skeleton :rows="5" animated></el-skeleton>

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

@@ -116,7 +116,7 @@ export default {
                 type: 'warning'
             }).then(async ()=>{
                 var loading = this.$loading()
-                var resp = await this.$API.merPlan.merPlan.post({"id":data.id});
+                var resp = await this.$API.merPlan.del.post({"id":data.id});
                 loading.close();
                 if (resp.code == 0) {
                     return this.$message.error(resp.msg);

+ 2 - 2
src/views/merchant/cps/star/components/table.vue

@@ -134,10 +134,10 @@ export default {
             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(`删除店铺后,所有有关该店铺的门店、订单等信息都将删除,不可恢复,确定要执行删除吗`, '提示', {
+            this.$confirm(`删除达人后,对实际在推广计划无影响,但无法再次选择该达人`, '提示', {
                 type: 'warning'
             }).then(async ()=>{
-                var resp = await this.$API.shop.del.post({"id":data.id});
+                var resp = await this.$API.merStar.del.post({"id":data.id});
                 if (resp.code == 0) {
                     return this.$message.error(resp.msg);
                 }