Browse Source

Merge branch 'feature_点餐优化' of elab-damai-h5/h5-dm-orderFront into master

周建思 3 days ago
parent
commit
41bc4a6ea0

+ 3 - 2
.env.test

@@ -2,5 +2,6 @@
 VITE_APP_TITLE=点餐系统(测试)
 VITE_APP_ENV=test
 VITE_APP_BASE_API=/test-api
-VITE_APP_BASE_URL=https://gatewaytest1.elab-plus.com
-VITE_ALLOWED_DOMAINS=https://test.static.elab-plus.com/web/damai/index.html#/pages/loginPage/index
+# VITE_APP_BASE_URL=https://gatewaytest1.elab-plus.com
+VITE_APP_BASE_URL=http://203.156.249.2:5555
+VITE_ALLOWED_DOMAINS=http://203.156.249.2:82/damai/index.html#/pages/loginPage/index

+ 5 - 1
src/api/orders.ts

@@ -4,6 +4,10 @@ export function ordersList(params ?: any) {
     return request.get({ url: '/orders/list', params })
 }
 
+export function downloadOrders(params ?: any) {
+    return request.get({ url: '/orders/downloadList', params })
+}
+
 export function getOrdersCurrent(params ?: any) {
     return request.get({ url: '/orders/current', params })
 }
@@ -18,4 +22,4 @@ export function getOrderDetail(params ?: any) {
 //订单退款
 export function refundReq(params ?: any) {
     return request.get({ url: '/order/refund', params })
-}
+}

+ 1 - 1
src/config/index.ts

@@ -2,7 +2,7 @@ const config = {
     terminal: 1, //终端
     title: '后台管理系统', //网站默认标题
     version: '1.4.0', //版本号
-    baseUrl: `${import.meta.env.VITE_APP_BASE_URL || 'https://gatewaytest1.elab-plus.com'}/`, //请求接口域名 http://192.168.50.19:5555/elab-marketing-file
+    baseUrl: `${import.meta.env.VITE_APP_BASE_URL || 'http://203.156.249.2:5555'}/`, //请求接口域名 http://192.168.50.19:5555/elab-marketing-file
     urlPrefix: 'elab-marketing-file/api', //请求默认前缀
     timeout: 40 * 1000 //请求超时时长
 }

+ 13 - 8
src/views/order/console.vue

@@ -627,6 +627,7 @@ const handleCouponClick = (coupon: any) => {
 
 const open = (item: any, num?: number, orderNumber?: any) => {
   console.log('***open***', item, num, orderNumber)
+    initData()
     data.couponList = []
     showOrderConsole.value = true
     data.deskId = item.id
@@ -1115,14 +1116,18 @@ const searchUserCoupons = () => {
         })
 }
 
+const initData = () => {
+  dishCateAll().then((res) => {
+    dishCate.value = res
+  })
+  dishListAll().then((res) => {
+    dishList.value = res
+    dishListall = res
+  })
+}
+
 onMounted(() => {
-    dishCateAll().then((res) => {
-        dishCate.value = res
-    })
-    dishListAll().then((res) => {
-        dishList.value = res
-        dishListall = res
-    })
+  // initData()
 })
 defineExpose({
     open
@@ -1172,7 +1177,7 @@ defineExpose({
     border-color: #ff7875;
 }
 </style>
-<style>
+<style lang="scss" scoped>
 .coupon-card {
     display: flex;
     align-items: center;

+ 4 - 4
src/views/order/index.vue

@@ -10,13 +10,13 @@
                     :name="item.name"
                 ></el-tab-pane>
             </el-tabs>
-            <div class="p-1 flex-wrap float-left text-center md:w-56 h-20 w-1/3">
+            <div class="p-1 flex-wrap float-left text-center md:w-40 h-20" style="height: 100%">
               <div style="margin-bottom: 2px">
-                <el-input v-model="data.mealCode" placeholder="请输入取餐号" maxlength="10"/>
+                <el-input v-model="data.mealCode" placeholder="请输入取餐号" maxlength="10" style="height: 48px;font-size: 20px;"/>
               </div>
               <div @click="startOrder" class="rounded w-full h-full pt-3 relative"
-                   style="background-color: #4A5DFF;color:rgba(255, 255, 255);cursor: pointer;">
-                <p class="font-semibold text-xl" style="font-size: 35px;">
+                   style="background-color: #4A5DFF;color:rgba(255, 255, 255);cursor: pointer;height: 54px;padding-top: 8px;line-height: 42px;">
+                <p class="font-semibold text-xl" style="font-size: 20px;">
                   吧台点餐
                 </p>
               </div>

+ 195 - 95
src/views/orders/list.vue

@@ -5,128 +5,132 @@
                 <el-form-item label="订单类型" class="w-[280px]">
                     <el-select class="w-[280px]" v-model="queryParams.type">
                         <el-option label="全部" value />
-                        <el-option label="台点单" value="0" />
+                        <el-option label="台点单" value="0" />
                         <el-option label="扫码点单" value="1" />
                     </el-select>
                 </el-form-item>
                 <el-form-item label="订单状态" class="w-[280px]">
                     <el-select class="w-[280px]" v-model="queryParams.status">
                         <el-option label="全部" value />
-                        <el-option label="待下单" value="0" />
-                        <el-option label="待结帐" value="1" />
-                        <el-option label="已完成" value="2" />
+<!--                        <el-option label="待下单" value="0" />-->
+<!--                        <el-option label="待结帐" value="1" />-->
+                        <el-option label="已下单" value="2" />
                         <el-option label="已退款" value="4" />
                     </el-select>
                 </el-form-item>
-                <el-form-item label="创建时间" class="w-[280px]">
-                    <el-date-picker v-model="createTime" @change="setCreateTime" type="datetimerange"
-                        range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" />
-                </el-form-item>
-                <el-form-item label="结账时间" class="w-[280px]">
-                    <el-date-picker v-model="checkoutTime" @change="setCheckoutTime" type="datetimerange"
-                        range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" />
+<!--                <el-form-item label="创建时间" class="w-[280px]">-->
+<!--                    <el-date-picker v-model="createTime" @change="setCreateTime" type="datetimerange"-->
+<!--                        range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" />-->
+<!--                </el-form-item>-->
+                <el-form-item label="下单日期" class="w-[340px]">
+                    <el-date-picker v-model="checkoutTime" @change="setCheckoutTime" type="daterange"
+                        range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
                 </el-form-item>
                 <el-form-item class="w-[280px]">
                     <el-button type="primary" @click="resetPage">查询</el-button>
                     <el-button @click="resetParams">重置</el-button>
+                    <el-button type="success" @click="download">导出</el-button>
                 </el-form-item>
             </el-form>
         </el-card>
         <el-card class="!border-none mt-4" shadow="never">
-            <el-table v-loading="pager.loading" :data="pager.lists" row-key="id" :expand-row-keys="expandRowKeys" @expand-change="handleExpandChange">
-                <el-table-column type="expand" >
-                    <template #default="{ row }">
-                        <div class="order-detail-wrapper" v-loading="!orderDetails[row.id]">
-                            <template v-if="orderDetails[row.id]">
-                                <div class="detail-header">
-                                    <span>订单详情</span>
-                                    <span class="time">下单时间:{{ timeFormat(orderDetails[row.id].createTime) }}</span>
-                                </div>
-                                <el-table :data="orderDetails[row.id].dishes" border class="detail-table">
-                                    <el-table-column label="菜品图片" width="120" align="center">
-                                        <template #default="{ row }">
-                                            <el-image :src="row.image" :preview-src-list="[row.image]"
-                                                class="dish-image" fit="cover" />
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="name" label="菜品名称">
-                                        <template #default="{ row }">
-                                            <div>
-                                                {{ row.name }}
-                                                <div v-if="row.specsList && row.specsList.length" class="mt-1">
-                                                    <el-tag
-                                                        v-for="spec in row.specsList"
-                                                        :key="spec.id"
-                                                        size="small"
-                                                        class="mr-1 mb-1"
-                                                    >
-                                                        {{ spec.name }}: {{ spec.value }}
-                                                    </el-tag>
-                                                </div>
-                                            </div>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="amount" label="单价">
-                                        <template #default="{ row }">
-                                            ¥{{ row.amount }}
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="number" label="数量" width="120" align="center" />
-                                    <el-table-column label="小计" width="120" align="right">
-                                        <template #default="{ row }">
-                                            ¥{{ row.amount * row.number}}
-                                        </template>
-                                    </el-table-column>
-                                </el-table>
-                                <div class="detail-footer">
-                                    <div class="total-info">
-                                        <span>共 {{ getTotalCount(orderDetails[row.id].dishes) }} 件商品</span>
-                                        <span class="total-price">
-                                            订单总价:<em>¥{{ orderDetails[row.id].amount}}</em>
-                                        </span>
-                                    </div>
-                                </div>
-                            </template>
-                        </div>
-                    </template>
-                </el-table-column>
+<!--            :expand-row-keys="expandRowKeys" @expand-change="handleExpandChange"-->
+            <el-table v-loading="pager.loading" :data="pager.lists" row-key="id">
+<!--                <el-table-column type="expand" >-->
+<!--                    <template #default="{ row }">-->
+<!--                        <div class="order-detail-wrapper" v-loading="!orderDetails[row.id]">-->
+<!--                            <template v-if="orderDetails[row.id]">-->
+<!--                                <div class="detail-header">-->
+<!--                                    <span>订单详情</span>-->
+<!--                                    <span class="time">下单时间:{{ timeFormat(orderDetails[row.id].createTime) }}</span>-->
+<!--                                </div>-->
+<!--                                <el-table :data="orderDetails[row.id].dishes" border class="detail-table">-->
+<!--                                    <el-table-column label="菜品图片" width="120" align="center">-->
+<!--                                        <template #default="{ row }">-->
+<!--                                            <el-image :src="row.image" :preview-src-list="[row.image]"-->
+<!--                                                class="dish-image" fit="cover" />-->
+<!--                                        </template>-->
+<!--                                    </el-table-column>-->
+<!--                                    <el-table-column prop="name" label="菜品名称">-->
+<!--                                        <template #default="{ row }">-->
+<!--                                            <div>-->
+<!--                                                {{ row.name }}-->
+<!--                                                <div v-if="row.specsList && row.specsList.length" class="mt-1">-->
+<!--                                                    <el-tag-->
+<!--                                                        v-for="spec in row.specsList"-->
+<!--                                                        :key="spec.id"-->
+<!--                                                        size="small"-->
+<!--                                                        class="mr-1 mb-1"-->
+<!--                                                    >-->
+<!--                                                        {{ spec.name }}: {{ spec.value }}-->
+<!--                                                    </el-tag>-->
+<!--                                                </div>-->
+<!--                                            </div>-->
+<!--                                        </template>-->
+<!--                                    </el-table-column>-->
+<!--                                    <el-table-column prop="amount" label="单价">-->
+<!--                                        <template #default="{ row }">-->
+<!--                                            ¥{{ row.amount }}-->
+<!--                                        </template>-->
+<!--                                    </el-table-column>-->
+<!--                                    <el-table-column prop="number" label="数量" width="120" align="center" />-->
+<!--                                    <el-table-column label="小计" width="120" align="right">-->
+<!--                                        <template #default="{ row }">-->
+<!--                                            ¥{{ row.amount * row.number}}-->
+<!--                                        </template>-->
+<!--                                    </el-table-column>-->
+<!--                                </el-table>-->
+<!--                                <div class="detail-footer">-->
+<!--                                    <div class="total-info">-->
+<!--                                        <span>共 {{ getTotalCount(orderDetails[row.id].dishes) }} 件商品</span>-->
+<!--                                        <span class="total-price">-->
+<!--                                            订单总价:<em>¥{{ orderDetails[row.id].amount}}</em>-->
+<!--                                        </span>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            </template>-->
+<!--                        </div>-->
+<!--                    </template>-->
+<!--                </el-table-column>-->
                 <el-table-column type="index" min-width="80" />
-                <el-table-column label="订单号" prop="number" min-width="180" show-overflow-tooltip></el-table-column>
-                <el-table-column label="支付金额" min-width="160" prop="amount">
+                <el-table-column label="下单时间" prop="checkoutTime" min-width="120"></el-table-column>
+                <el-table-column label="订单号" prop="number" min-width="150" show-overflow-tooltip></el-table-column>
+                <el-table-column label="类型" prop="type" :formatter="(row: any) => (row.type == 0 ? '吧台点单' : '扫码点单')"></el-table-column>
+                <el-table-column label="桌号/餐号" prop="deskName">
+                    <template #default="{ row }">{{
+                        row.deskName ? row.deskName : row.mealCode
+                    }}</template>
+                </el-table-column>
+                <el-table-column label="产品清单" min-width="120">
                     <template #default="{ row }">
-                        <div>
-                            <div :style="row.status > 1 && row.status != 6 ? 'text-decoration: line-through;': ''" v-if="row.status > 1 && row.status != 6">订单金额:¥{{row.amount}}</div>
-                            <div style="color: #f01414;" v-if="row.status >= 2 && row.status != 6">
-                              实付金额:¥{{row.payAmount || row.amount}}
-                            </div>
-                            <div v-if="row.ticketNo" class="refund-info">
-                                <div style="font-size: 12px;">抵扣券号:{{ row.ticketNo }}</div>
-                                <div style="font-size: 12px;">抵扣金额:¥{{ row.ticketAmount }}</div>
+                      <div>
+                        <div v-for="orderDish in row.orderDishes" :key="orderDish.id">
+                            {{ orderDish.name }}<span style="margin: 0 15px 0 15px;">x</span>{{orderDish.number}}
+                            <div v-if="orderDish.specsList && orderDish.specsList.length">
+                                <div v-for="spec in orderDish.specsList" :key="spec.id" class="refund-info" style="margin-left: 20px;margin-top: 0;">
+                                    - {{ spec.name }}: {{ spec.value }}
+                                </div>
                             </div>
                         </div>
+                      </div>
                     </template>
                 </el-table-column>
-                <el-table-column label="桌号/餐号" prop="deskName" min-width="100">
-                  <template #default="{ row }">
-                    {{ row.deskName ? row.deskName : row.mealCode }}
-                  </template>
-                </el-table-column>
+                <el-table-column label="订单金额(元)" prop="amount" min-width="100"></el-table-column>
+                <el-table-column label="优惠金额(元)" prop="ticketAmount" min-width="100"></el-table-column>
+                <el-table-column label="实付金额(元)" prop="payAmount" min-width="100"></el-table-column>
                 <el-table-column label="备注" prop="remark"  min-width="100" show-tooltip-when-overflow></el-table-column>
-                <el-table-column label="状态" min-width="170" prop="status" >
+                <el-table-column label="状态" min-width="160" prop="status" >
                     <template #default="{ row }">
                         <div>
-                            {{ row.status == 4 ? '退款成功' : row.status == 2 ? '已完成' : row.status == 0 ? '待下单'
+                            {{ row.status == 4 ? '已退款' : row.status == 2 ? '已下单' : row.status == 0 ? '待下单'
                             : row.status == 1 ? '待支付' : row.status == 5 ? '退款中' : row.status == 3 ? '支付失败' : '已关闭' }}
                             <div v-if="row.refundStatus=='SUCCESS'" class="refund-info">
                                 <div>退款时间:{{ row.refundTime }}</div>
-                                <div>退款金额:{{ row.refundAmount }}</div>
+                                <div>退款金额:{{ row.refundAmount }}</div>
                             </div>
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column label="类型" prop="type" :formatter="(row: any) => (row.type == 0 ? '吧台点餐' : '扫码点餐')"></el-table-column>
-                <el-table-column label="结账时间" prop="checkoutTime"></el-table-column>
-                <el-table-column label="创建时间" prop="createTime"></el-table-column>
                 <el-table-column label="操作" width="60" fixed="right">
                     <template #default="{ row }">
 <!--                        <el-button type="primary" link @click="showDetail(row)">查看已点菜品</el-button>-->
@@ -159,16 +163,36 @@
                 </span>
             </template>
         </el-dialog>
+        <!-- 在 el-card 之后添加 loading dialog -->
+        <el-dialog
+            v-model="downloadLoading"
+            :show-close="false"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+            width="300px"
+            class="download-dialog"
+        >
+          <div class="download-loading-content">
+            <el-icon class="is-loading" color="#409EFF" size="40">
+              <Loading />
+            </el-icon>
+            <div class="loading-text">下载中...</div>
+            <div class="loading-subtext">正在生成文件,请稍候</div>
+          </div>
+        </el-dialog>
     </div>
 </template>
 
 <script setup lang="ts">
-    import { ordersList, getOrderDetail, refundReq } from '@/api/orders'
+    import { ordersList, getOrderDetail, refundReq, downloadOrders } from '@/api/orders'
     import { usePaging } from '@/hooks/usePaging'
     import { timeFormat } from '@/utils/util'
     import feedback from '@/utils/feedback'
     // import Money from '@/utils/money'
+    // 在其他 import 语句后添加 Loading 组件导入
+    import { Loading } from '@element-plus/icons-vue'
 
+    const downloadLoading = ref(false)
     const createTime = ref()
     const checkoutTime = ref()
     const queryParams = reactive({
@@ -177,10 +201,17 @@
         checkoutTime: '',
         createTime: ''
     })
-    const { pager, getLists, resetPage, resetParams } = usePaging({
+    const { pager, getLists, resetPage } = usePaging({
         fetchFun: ordersList,
         params: queryParams
     })
+    const resetParams = () => {
+      queryParams.type = ''
+      queryParams.status = ''
+      checkoutTime.value = []
+      queryParams.checkoutTime = ''
+      getLists()
+    }
     const setCreateTime = (v : any) => {
         queryParams.createTime =
             Math.round(v[0].getTime() / 1000).toString() +
@@ -188,10 +219,19 @@
             Math.round(v[1].getTime() / 1000).toString()
     }
     const setCheckoutTime = (v : any) => {
-        queryParams.checkoutTime =
-            Math.round(v[0].getTime() / 1000).toString() +
-            ',' +
-            Math.round(v[1].getTime() / 1000).toString()
+      queryParams.checkoutTime = ''
+      if (v && v.length === 2) {
+        // 开始时间保持不变
+        const startTime = Math.round(v[0].getTime() / 1000).toString()
+
+        // 结束时间设置为当天的23:59:59
+        const endDate = new Date(v[1])
+        endDate.setHours(23, 59, 59, 999)
+        console.log('End Date:', endDate) // 调试输出
+        const endTime = Math.round(endDate.getTime() / 1000).toString()
+
+        queryParams.checkoutTime = startTime + ',' + endTime
+      }
     }
     // watch(queryParams, (newV, oldV) => {
     //     console.log(JSON.stringify(newV))
@@ -295,11 +335,71 @@
     //         return Money.add(total, Money.multiply(dish.price, dish.count))
     //     }, 0)
     // }
+    const download = async () => {
+      try {
+        downloadLoading.value = true
+        const res = await downloadOrders(queryParams)
+        console.warn("***downloadOrders***",res)
+        if (res) {
+          // 生成带当前时间的文件名
+          const timestamp = new Date()
+          const year = timestamp.getFullYear()
+          const month = String(timestamp.getMonth() + 1).padStart(2, '0')
+          const day = String(timestamp.getDate()).padStart(2, '0')
+          const hours = String(timestamp.getHours()).padStart(2, '0')
+          const minutes = String(timestamp.getMinutes()).padStart(2, '0')
+          const seconds = String(timestamp.getSeconds()).padStart(2, '0')
+          const filename = `订单列表_${year}${month}${day}_${hours}${minutes}${seconds}.xlsx`
+
+          downloadFile(res)
+        }
+      } catch (error) {
+        console.error('下载失败:', error)
+        feedback.msgError('下载失败')
+      } finally {
+        downloadLoading.value = false
+      }
+    }
+
+    const downloadFile = (url: string) => {
+      const link = document.createElement('a');
+      link.href = url;
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    };
 
     getLists()
 </script>
 
 <style lang="scss" scoped>
+/* 在样式部分添加下载对话框的样式*/
+.download-dialog {
+  :deep(.el-dialog__header) {
+    display: none;
+  }
+
+  :deep(.el-dialog__body) {
+    padding: 30px 20px;
+  }
+}
+
+.download-loading-content {
+  text-align: center;
+
+  .loading-text {
+    margin-top: 15px;
+    font-size: 16px;
+    color: #333;
+    font-weight: 500;
+  }
+
+  .loading-subtext {
+    margin-top: 8px;
+    font-size: 12px;
+    color: #999;
+  }
+}
     .order-detail-wrapper {
         padding: 20px;
         background: #f8f8f8;

+ 1 - 1
src/views/shop/info.vue

@@ -21,7 +21,7 @@
                             :rows="5"
                             type="textarea"
                             placeholder="请输入店铺介绍"
-                            maxlength="100"
+                            maxlength="90"
                             show-word-limit
                         ></el-input>
                     </div>

+ 79 - 29
src/views/workbench/index.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="workbench">
         <div class="md:flex">
-            <el-card class="!border-none mb-4 md:mr-4" shadow="never">
+            <el-card class="!border-none mb-4 md:mr-4" shadow="never" style="flex-grow: 1">
                 <template #header>
                     <span class="card-title">店铺信息</span>
                 </template>
@@ -39,37 +39,49 @@
                     </div>
                 </div>
             </el-card>
-            <el-card class="!border-none mb-4 flex-1" shadow="never">
+            <el-card class="!border-none mb-4 flex-1" shadow="never" style="flex-grow: 4">
                 <template #header>
-                    <div>
-                        <span class="card-title">今日数据</span>
-                        <!-- <span class="text-tx-secondary text-xs ml-4">
-                            更新时间:{{ workbenchData.today.time }}
-                        </span> -->
+                    <div style="display: flex;line-height: 21px;">
+                        <span class="card-title" :style="{ fontWeight: activeIndex === 0 ? 'bold' : 'normal',fontSize: activeIndex === 0 ? '18px' : '14px' }"
+                              style="flex-grow: 1;cursor: pointer;" @click="activeIndex = 0">今日数据</span>
+                        <span class="card-title" :style="{ fontWeight: activeIndex === 1 ? 'bold' : 'normal',fontSize: activeIndex === 1 ? '18px' : '14px' }"
+                              style="flex-grow: 1;cursor: pointer;" @click="activeIndex = 1">本月数据</span>
+                        <span class="card-title" :style="{ fontWeight: activeIndex === 2 ? 'bold' : 'normal',fontSize: activeIndex === 2 ? '18px' : '14px' }"
+                              style="flex-grow: 1;cursor: pointer;" @click="activeIndex = 2">累计数据</span>
+                        <span class="card-title" style="flex-grow: 9"></span>
                     </div>
                 </template>
 
                 <div class="flex flex-wrap">
                     <div class="w-1/2 md:w-1/3">
-                        <div class="leading-10">到店人次</div>
-                        <div class="text-6xl">{{ workbenchData.today.todayVisits }}</div>
-                        <!-- <div class="text-tx-secondary text-xs">
-                            总访问量:{{ workbenchData.today.totalVisits }}
-                        </div> -->
+                        <div class="leading-10">下单人数</div>
+                        <div class="text-6xl">{{ showData(0) }}</div>
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            当月:{{ workbenchData.statistic.monthVisits }}-->
+<!--                        </div>-->
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            累计:{{ workbenchData.statistic.totalVisits }}-->
+<!--                        </div>-->
                     </div>
                     <div class="w-1/2 md:w-1/3">
-                        <div class="leading-10">销售额(元)</div>
-                        <div class="text-6xl">{{ workbenchData.today.todaySales }}</div>
-                        <!-- <div class="text-tx-secondary text-xs">
-                            总销售额:{{ workbenchData.today.totalSales }}
-                        </div> -->
+                        <div class="leading-10">订单数(笔)</div>
+                        <div class="text-6xl">{{ showData(1) }}</div>
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            当月:{{ workbenchData.statistic.monthOrder }}-->
+<!--                        </div>-->
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            累计:{{ workbenchData.statistic.totalOrder }}-->
+<!--                        </div>-->
                     </div>
                     <div class="w-1/2 md:w-1/3">
-                        <div class="leading-10">订单量(笔)</div>
-                        <div class="text-6xl">{{ workbenchData.today.todayOrder }}</div>
-                        <!-- <div class="text-tx-secondary text-xs">
-                            总订单量:{{ workbenchData.today.totalOrder }}
-                        </div> -->
+                        <div class="leading-10">营收额(元)</div>
+                        <div class="text-6xl">{{ showData(2) }}</div>
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            当月:{{ workbenchData.statistic.monthSales }}-->
+<!--                        </div>-->
+<!--                        <div class="text-tx-secondary text-lg">-->
+<!--                            累计:{{ workbenchData.statistic.totalSales }}-->
+<!--                        </div>-->
                     </div>
                     <!-- <div class="w-1/2 md:w-1/4">
                         <div class="leading-10">新到店人数</div>
@@ -115,7 +127,7 @@
             </el-card>
             <el-card class="!border-none mb-4" shadow="never">
                 <template #header>
-                    <span>昨日被点菜品TOP10</span>
+                    <span>过去7天被点菜品Top10</span>
                 </template>
                 <div>
                     <v-charts
@@ -158,6 +170,7 @@ import menu_web from './image/menu_web.png'
 import oa_code from './image/oa_code.png'
 import service_code from './image/service_code.png'
 import { getShopConfig, changeShopStatus, statisticsDishTop10 } from '@/api/shop'
+const activeIndex = ref(0)
 // 表单数据
 const workbenchData: any = reactive({
     shopId: '',
@@ -184,7 +197,7 @@ const workbenchData: any = reactive({
             desc: '想了解更多请添加客服'
         }
     ],
-    today: {}, // 今日数据
+    statistic: {}, // 今日数据
     menu: [
         {
             name: '管理员',
@@ -350,11 +363,48 @@ const workbenchData: any = reactive({
     }
 })
 
+const showData = (index: number) => {
+    if (index === 0) {
+        if (activeIndex.value === 0) {
+            return workbenchData.statistic.todayVisits;
+        }
+        if (activeIndex.value === 1) {
+          return workbenchData.statistic.monthVisits;
+        }
+        if (activeIndex.value === 2) {
+          return workbenchData.statistic.totalVisits;
+        }
+    }
+    if (index === 1) {
+      if (activeIndex.value === 0) {
+        return workbenchData.statistic.todayOrder;
+      }
+      if (activeIndex.value === 1) {
+        return workbenchData.statistic.monthOrder;
+      }
+      if (activeIndex.value === 2) {
+        return workbenchData.statistic.totalOrder;
+      }
+    }
+    if (index === 2) {
+      if (activeIndex.value === 0) {
+        return workbenchData.statistic.todaySales;
+      }
+      if (activeIndex.value === 1) {
+        return workbenchData.statistic.monthSales;
+      }
+      if (activeIndex.value === 2) {
+        return workbenchData.statistic.totalSales;
+      }
+    }
+};
+
+
 // 获取工作台主页数据
 const getData = async () => {
     const res = await getWorkbench()
     workbenchData.version = res.version
-    workbenchData.today = res.today
+    workbenchData.statistic = res.statistic
     workbenchData.visitor = res.visitor
 
     // 清空echarts 数据
@@ -382,12 +432,12 @@ const changeStatus = () => {
 }
 const dishTop10 = () => {
     statisticsDishTop10().then((res) => {
-        let list = res || [];
+        const list = res || []
         // 按照 quantity 倒序排列
-        list.sort((a: { quantity: number }, b: { quantity: number }) => b.quantity - a.quantity);
+        list.sort((a: { quantity: number }, b: { quantity: number }) => b.quantity - a.quantity)
         // console.warn("**statisticsDishTop10****",list)
-        workbenchData.listOption.yAxis.data = list.map((it: { title: any })=>it.title);
-        workbenchData.listOption.series[0].data = list.map((it: { quantity: any })=>it.quantity);
+        workbenchData.listOption.yAxis.data = list.map((it: { title: any }) => it.title)
+        workbenchData.listOption.series[0].data = list.map((it: { quantity: any }) => it.quantity)
     })
 }
 shopInfo()