zjs_project 3 mesi fa
parent
commit
6666f34487

+ 8 - 0
src/utils/feedback.ts

@@ -77,6 +77,14 @@ export class Feedback {
             ...options
         })
     }
+    // 提交内容
+    messageBox(content: string, title: string) {
+        return ElMessageBox.confirm(content, title="温馨提示",{
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+        })
+    }
     // 打开全局loading
     loading(msg: string) {
         this.loadingInstance = ElLoading.service({

+ 76 - 35
src/views/order/console.vue

@@ -114,7 +114,7 @@
                             :key="item.id"
                             class="float-left md:w-40 w-1/2 md:h-38 h-auto p-1"
                         >
-                            <a href="#" @click="addGoods(item)"
+                            <a href="javascript:void(0);" @click="addGoods(item)"
                                 ><el-card shadow="never" :body-style="{ padding: '0px' }">
                                     <el-image
                                         style="width: 100%; height: 100px"
@@ -168,7 +168,8 @@ const data = reactive<any>({
     deskName: '',
     deskCap: 0,
     currentNum: 0,
-    selectGoods: []
+    selectGoods: [],
+    oldGoods: [],
 })
 const orderData = reactive<any>({
     priceSum: 0,
@@ -180,10 +181,11 @@ const params = reactive({
 })
 const submit = () => {
     //出单
-    feedback.loading('正在出单...')
     if (data.selectGoods.length == 0) {
         feedback.alert('未点菜品!')
+        return false;
     }
+    feedback.loading('正在出单...')
     orderSubmit(params).then(() => {
         // data.selectGoods.length = 0
         // orderData.priceSum = 0
@@ -202,44 +204,15 @@ const open = (item: any, num?: number, orderNumber?: any) => {
 
     deskOrderedDishListAll({ id: params.number }).then((res) => {
         data.selectGoods = res
+        data.oldGoods = JSON.parse(JSON.stringify(res));//记录下进入时当前餐桌已有的食物
         if (res.length > 0) {
             params.remark = res[0].remark
-            orderData.priceSum = res.reduce((accumulator, currentValue) => accumulator + currentValue.summary, 0);
+            orderData.priceSum = res.reduce((accumulator, currentValue) => accumulator + (currentValue.summary * currentValue.num), 0);
             orderData.numSum = res.reduce((accumulator, currentValue) => accumulator + currentValue.num, 0);
         }
     })
 }
 
-const addGoods = (item: any) => {
-    orderLoading.value = true
-    const tempGoods = data.selectGoods.filter((element: any) => {
-        return element.id == item.id
-    })
-    if (tempGoods.length == 0) {
-        item.num = 1
-        dishAdd({
-            orderId: params.number,
-            dishId: item.id
-        }).then((res) => {
-            //拿到orders_dish的id
-            item.ordersDishId = res
-            data.selectGoods.push(item)
-            feedback.msgSuccess('成功添加商品' + item.title)
-            orderLoading.value = false
-            console.log(item)
-        })
-    } else {
-        dishInc({ id: item.ordersDishId })
-        data.selectGoods[data.selectGoods.indexOf(tempGoods[0])].num++
-        orderLoading.value = false
-    }
-
-    orderData.numSum++
-    orderData.priceSum += Number(item.summary)
-    nextTick(() => {
-        scrollbarRef.value!.setScrollTop(innerRef.value!.clientHeight)
-    })
-}
 const clickSortButton = (name: any) => {
     buttonType.value = name
     if (name == 'all') {
@@ -258,7 +231,38 @@ const toEmpty = () => {
         toEmptyy({ id: params.number })
     }
 }
+const isEqual = (obj1: { [x: string]: any } | null, obj2: { [x: string]: any } | null)=> {
+  // 如果两个对象是同一个引用,直接返回 true
+  if (obj1 === obj2) return true;
+
+  // 如果其中一个为 null 或者不是对象,返回 false
+  if (obj1 === null || typeof obj1 !== 'object' || obj2 === null || typeof obj2 !== 'object') {
+    return false;
+  }
+
+  // 获取两个对象的键
+  const keys1 = Object.keys(obj1);
+  const keys2 = Object.keys(obj2);
+
+  // 如果键的数量不同,返回 false
+  if (keys1.length !== keys2.length) return false;
+
+  // 遍历所有键,递归比较每个键的值
+  for (let key of keys1) {
+    if (!keys2.includes(key) || !isEqual(obj1[key], obj2[key])) {
+      return false;
+    }
+  }
+
+  // 如果所有键的值都相等,返回 true
+  return true;
+}
 const beforeClose = () => {
+    //data.oldGoods
+    if(isEqual(data.selectGoods,data.oldGoods)){
+        showOrderConsole.value = false;
+        return false;
+    }
     if (data.selectGoods && data.selectGoods.length > 0) {
         feedback.confirm('所点菜品信息将不被保存,确认关闭?').then(() => {
             toEmpty()
@@ -269,6 +273,36 @@ const beforeClose = () => {
 const add = (item: any) => {
     addGoods(item)
 }
+const addGoods = (item: any) => {
+    orderLoading.value = true
+    const tempGoods = data.selectGoods.filter((element: any) => {
+        return element.id == item.id
+    })
+    if (tempGoods.length == 0) {
+        item.num = 1
+        dishAdd({
+            orderId: params.number,
+            dishId: item.id
+        }).then((res) => {
+            //拿到orders_dish的id
+            item.ordersDishId = res
+            data.selectGoods.push(item)
+            feedback.msgSuccess('成功添加商品' + item.title)
+            orderLoading.value = false
+            console.log(item)
+        })
+    } else {
+        dishInc({ id: item.ordersDishId })
+        data.selectGoods[data.selectGoods.indexOf(tempGoods[0])].num++
+        orderLoading.value = false
+    }
+    console.warn("***addGoods-dish***",item,data.selectGoods)
+    orderData.numSum++
+    orderData.priceSum += Number(item.summary)
+    nextTick(() => {
+        scrollbarRef.value!.setScrollTop(innerRef.value!.clientHeight)
+    })
+}
 const reduce = (item: any) => {
     orderLoading.value = true
     const tempGoods = data.selectGoods.filter((element: any) => {
@@ -281,14 +315,21 @@ const reduce = (item: any) => {
             data.selectGoods[t].num--
             orderLoading.value = false
         })
-    } else {
+    } else {//餐品数量为0,要删减该餐品
         dishDel({ id: item.ordersDishId }).then(() => {
             data.selectGoods.splice(t, 1)
             orderLoading.value = false
         })
     }
+    console.warn("***reduce-dish***",item,data.selectGoods)
     orderData.numSum--
     orderData.priceSum -= item.summary
+    if(orderData.priceSum <= 0){
+        orderData.priceSum = 0;
+    }
+    if(orderData.numSum <= 0){
+        orderData.numSum = 0;
+    }
     orderLoading.value = false
 }
 onMounted(() => {

+ 7 - 0
src/views/order/index.vue

@@ -129,11 +129,13 @@ const order = () => {
         consoleRef.value?.open(currentDesk, data.userNum, res)
         init()
     })
+    console.warn("***order***",currentDesk)
     router.push({ path: '/order/console', query: { deskID: id } })
 }
 const reorder = () => {
     dialogVisible.value = false
     consoleRef.value?.open(currentDesk)
+    console.warn("***reorder***",currentDesk)
 }
 const refresh = () => {
     isLoading.value = true
@@ -141,6 +143,11 @@ const refresh = () => {
 }
 const checkout = () => {
     //结账
+    console.warn("***结账***",currentDesk)
+    if(currentDesk && !currentDesk.amount){
+        feedback.notify('当前桌未出单,无法结账')
+        return false
+    }
     feedback.confirm('结账金额为' + currentDesk.amount + ',确定要结账吗?').then(() => {
         orderCheckout({ did: currentDesk.id }).then(() => {
             feedback.notifySuccess('成功结账' + currentDesk.amount + '元')

+ 1 - 1
src/views/workbench/index.vue

@@ -42,7 +42,7 @@
             <el-card class="!border-none mb-4 flex-1" shadow="never">
                 <template #header>
                     <div>
-                        <span class="card-title">日数据</span>
+                        <span class="card-title">日数据</span>
                         <!-- <span class="text-tx-secondary text-xs ml-4">
                             更新时间:{{ workbenchData.today.time }}
                         </span> -->