Pārlūkot izejas kodu

Merge branch 'feature_满减卡' of elab-damai-h5/h5-dm-orderFront into master

tangy 2 nedēļas atpakaļ
vecāks
revīzija
715d659936
3 mainītis faili ar 66 papildinājumiem un 51 dzēšanām
  1. 19 40
      src/views/order/console.vue
  2. 41 9
      src/views/order/index.vue
  3. 6 2
      src/views/orders/list.vue

+ 19 - 40
src/views/order/console.vue

@@ -13,9 +13,9 @@
                         <div
                             class="justify-between items-center flex text-xl font-semibold font-mono"
                         >
-                            <span>{{ '桌台:' + data.deskName }}</span>
+                            <span>{{ (data.deskId > 0 ? '餐桌号:': '取餐号:') + data.deskName }}</span>
                             <div class="flex items-center">
-                                <span>{{ data.currentNum + '/' + data.deskCap }}</span>
+                                <span v-if="data.deskId > 0">{{ data.currentNum + '/' + data.deskCap }}</span>
                                 <el-icon class="ml-2 cursor-pointer" @click="refreshdishes">
                                     <Refresh />
                                 </el-icon>
@@ -287,7 +287,7 @@
                         class="coupon-item"
                         :class="{
                             'is-selected': params.couponId === coupon.ticketRecordId,
-                            'is-disabled': orderData.sumPriceSum <= coupon.consumeScore / 100
+                            'is-disabled': orderData.sumPriceSum < (coupon.consumeScore / 100) || orderData.sumPriceSum < (coupon.useThreshold / 100)
                         }"
                         @click="handleCouponClick(coupon)"
                     >
@@ -298,7 +298,10 @@
                             <!-- <div class="condition">满{{ coupon.consumeScore / 100 }}可用</div> -->
                         </div>
                         <div class="right-part">
-                            <div class="name">{{ coupon.productName }}</div>
+                            <div class="name">
+                              {{ coupon.productName }}
+                              <el-tag v-if="coupon.useThreshold">满{{coupon.useThreshold  / 100}}减</el-tag>
+                            </div>
                             <div class="date">券码:{{ coupon.ticketNo }}</div>
                         </div>
                     </div>
@@ -350,20 +353,6 @@
             <p class="text-gray-600">正在支付中,请不要关闭或退出界面</p>
         </div>
     </el-dialog>
-    <el-dialog
-        v-model="takeNumberDialogVisible"
-        title="取餐号"
-        width="30%"
-        :close-on-click-modal="false"
-    >
-        <el-input v-model="takeNumber" placeholder="请输入取餐号" maxlength="10" show-word-limit />
-        <template #footer>
-            <span class="dialog-footer">
-                <el-button @click="takeNumberDialogVisible = false">取消</el-button>
-                <el-button type="primary" @click="confirmSubmit">确认结算</el-button>
-            </span>
-        </template>
-    </el-dialog>
 </template>
 
 <script setup lang="ts">
@@ -405,6 +394,7 @@ const scanCode = ref('')
 // 添加支付中对话框的控制变量
 const payingDialogVisible = ref(false)
 const data = reactive<any>({
+    deskId: null,
     deskName: '',
     deskCap: 0,
     currentNum: 0,
@@ -427,11 +417,8 @@ const params = reactive({
     userId: '', //用户id
     couponId: '', //优惠券id
     couponAmount: '-',
-    diningMethods: 1 // 就餐方式:1店内就餐 2打包外带
+    diningMethods: 1, // 就餐方式:1店内就餐 2打包外带
 })
-// 添加取餐号相关的变量
-const takeNumberDialogVisible = ref(false)
-const takeNumber = ref('')
 const submit = () => {
     //出单
     if (data.selectGoods.length == 0) {
@@ -442,22 +429,12 @@ const submit = () => {
         feedback.alert('支付金额需大于0!')
         return false
     }
-    // 显示取餐号输入弹框
-    takeNumberDialogVisible.value = true
-}
-// 添加确认提交函数
-const confirmSubmit = () => {
-    if (!takeNumber.value) {
-        feedback.msgError('请输入取餐号')
-        return
-    }
-    takeNumberDialogVisible.value = false
     feedback.loading('正在出单...')
     orderSubmit({
         ...params,
         userId: params.userId || null,
         couponId: params.couponId || null,
-        mealCode: takeNumber.value
+        mealCode: data.deskName || null
     })
         .then(() => {
             // data.selectGoods.length = 0
@@ -491,11 +468,12 @@ const handleScanInput = (event: KeyboardEvent) => {
 
   console.log("event.key", event.key)
   if (event.key === 'Enter') {
-    document.removeEventListener('keydown', handleScanInput)
     if (!data.canScan) {
       feedback.notifyWarning('正在处理支付,请勿重复扫码')
       return
     }
+    data.canScan = false
+    document.removeEventListener('keydown', handleScanInput)
     const code = scanCode.value
     console.log('扫码内容:', code)
     payingDialogVisible.value = true // 显示支付中对话框
@@ -529,7 +507,7 @@ const handleScanInput = (event: KeyboardEvent) => {
           console.log("=====---", e)
           // 支付失败
           payingDialogVisible.value = false // 隐藏支付中对话框
-          feedback.notifySuccess('支付失败,请重试')
+          feedback.notifySuccess('支付失败,请重试!')
             data.canScan = true
             scanDialogVisible.value = true
             // 添加键盘事件监听
@@ -630,7 +608,7 @@ const checkout = () => {
 }
 // 添加优惠券点击处理方法
 const handleCouponClick = (coupon: any) => {
-    if (orderData.sumPriceSum <= coupon.consumeScore / 100) {
+    if (orderData.sumPriceSum < coupon.consumeScore / 100 || orderData.sumPriceSum < (coupon.useThreshold / 100)) {
         return
     }
     if (params.couponId === coupon.ticketRecordId) {
@@ -648,15 +626,16 @@ const handleCouponClick = (coupon: any) => {
 }
 
 const open = (item: any, num?: number, orderNumber?: any) => {
+  console.log('***open***', item, num, orderNumber)
     data.couponList = []
     showOrderConsole.value = true
+    data.deskId = item.id
     data.deskName = item.name
     data.deskCap = item.num
     data.currentNum = item.userNum ? item.userNum : num
     params.number = item.ordersId ? item.ordersId : orderNumber
     params.userId = ''
     params.couponId = ''
-    takeNumber.value = ''
     //查询当前订单下的所有菜品
     deskOrderedDishListAll({ id: params.number }).then((res) => {
         res.forEach((good: { id: number; ordersDishId: number }) => {
@@ -671,7 +650,6 @@ const open = (item: any, num?: number, orderNumber?: any) => {
             params.userId = res[0].userId || null
             params.couponId = res[0].ticketId || null
             params.diningMethods = res[0].diningMethods || 1
-            takeNumber.value = res[0].mealCode || ''
             if (params.couponId && params.userId) {
                 searchUserCoupons()
             }
@@ -811,7 +789,7 @@ const clickSortButton = (name: any) => {
 const toEmpty = () => {
     if (data.selectGoods.length != 0) {
         orderLoading.value = true
-        toEmptyy({ id: params.number }).finally(() => {
+        toEmptyy({ id: params.number }).then(() => {
             //清空未出单的餐品-保留出单餐品
             data.selectGoods = []
             orderData.sumPriceSum = data.selectGoods.reduce(
@@ -841,7 +819,8 @@ const toEmpty = () => {
                 orderData.sumPriceSum -
                     (params.couponAmount === '-' ? 0 : Number(params.couponAmount))
             ).toFixed(2)
-            orderLoading.value = false
+        }).finally(()=>{
+          orderLoading.value = false
         })
     }
 }

+ 41 - 9
src/views/order/index.vue

@@ -10,6 +10,17 @@
                     :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 style="margin-bottom: 2px">
+                <el-input v-model="data.mealCode" placeholder="请输入取餐号" maxlength="10"/>
+              </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;">
+                  吧台点餐
+                </p>
+              </div>
+            </div>
             <div
                 v-for="i in deskList"
                 :key="i"
@@ -136,13 +147,13 @@
 import { Loading } from '@element-plus/icons-vue'
 import { postAll } from '@/api/org/post'
 import {
-    orderDeskList,
-    createOrders,
-    orderCheckout,
-    orderPay,
-    queryPayStatus,
-    cancelOrder,
-    rockoverDesk
+  orderDeskList,
+  createOrders,
+  orderCheckout,
+  orderPay,
+  queryPayStatus,
+  cancelOrder,
+  rockoverDesk, toEmptyy
 } from '@/api/order'
 import Console from './console.vue'
 import { getOrdersCurrent } from '@/api/orders'
@@ -154,6 +165,7 @@ console.log(userStore.userInfo.id + '开始链接客户端')
 const activeName = ref<any>('all')
 const dialogVisible = ref(false)
 const isLoading = ref(false)
+const mealCode = ref('')
 const currentDeskStatus = ref()
 const currentDeskMaxNum = ref<number>()
 const currentDeskAmount = ref<number>()
@@ -166,9 +178,11 @@ const data = reactive({
     userNum: 1, //当前就餐人数
     deskId: null,
     type: 0, //后台点餐类型:0
-    canScan: false
+    canScan: false,
+    mealCode: null
 })
 const order_ = (i: any) => {
+  console.log('***order_***', i)
     dialogVisible.value = true
     currentDesk = i
     currentDeskStatus.value = i.status
@@ -177,6 +191,7 @@ const order_ = (i: any) => {
 }
 const order = () => {
     dialogVisible.value = false
+    data.mealCode = currentDesk.name
     createOrders(data).then((res) => {
         consoleRef.value?.open(currentDesk, data.userNum, res)
         init()
@@ -184,6 +199,20 @@ const order = () => {
     console.warn('***order***', currentDesk)
     // router.push({ path: '/order/console', query: { deskID: id } })
 }
+const startOrder = () => {
+  if(data.mealCode == null || data.mealCode == '') {
+    feedback.notifyError('请输入取餐号')
+    return
+  }
+  currentDeskStatus.value = 0
+  data.deskId = 0
+  currentDeskMaxNum.value = null
+  currentDesk = {
+    id: data.deskId,
+    name: data.mealCode,
+  }
+  order();
+}
 const rockover = () => {
     feedback
         .confirm('将重置桌号状态, 确定翻台吗?')
@@ -358,6 +387,7 @@ const tabChange = (name: any) => {
     }
 }
 const init = async () => {
+  data.mealCode = ''
     let _list: any[] = []
     await orderDeskList().then((res: any) => {
         // deskList.value = res
@@ -366,10 +396,12 @@ const init = async () => {
         getOrdersCurrent().then((res) => {
             deskList.value = _list.map((item) => {
                 res.forEach((element: any) => {
+                    if (element.deskId == 0) {
+                      data.mealCode = element.mealCode
+                    }
                     if (item.id == element.deskId) {
                         item.status = element.status
                         item.userNum = element.userNum
-                        // item.amount = element.amount
                         item.ordersId = element.number
                         if (item.amount) {
                             item.amount += Number.parseFloat(element.amount)

+ 6 - 2
src/views/orders/list.vue

@@ -106,7 +106,11 @@
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column label="桌号" prop="deskName"></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="remark"  min-width="100" show-tooltip-when-overflow></el-table-column>
                 <el-table-column label="状态" min-width="170" prop="status" >
                     <template #default="{ row }">
@@ -120,7 +124,7 @@
                         </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="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">