瀏覽代碼

增加联台 换菜 取消联台 换台等功能 增加了桌台点单部分样式

覃浩 2 年之前
父節點
當前提交
6f398c5b50
共有 4 個文件被更改,包括 164 次插入34 次删除
  1. 1 1
      src/assets/less/common.less
  2. 116 29
      src/views/pos/diandan.vue
  3. 9 3
      src/views/pos/posInfo.vue
  4. 38 1
      src/views/pos/tablediandangallery.vue

+ 1 - 1
src/assets/less/common.less

@@ -58,4 +58,4 @@
 }
 
 /**隐藏样式-modal确定按钮 */
-.jee-hidden{display: none}
+.jee-hidden{display: none}

+ 116 - 29
src/views/pos/diandan.vue

@@ -49,7 +49,9 @@
         <p>数量:{{ sum }}</p>
         <div v-if="this.posTableState === 1">
           <a-button @click="placeOrder" :disabled="btnDisabled">下单</a-button>
-          <a-button @click="unionStation" style="margin-left: 10px;">联台</a-button>
+          <a-button @click="unionStation('联台','5')" style="margin-left: 10px;">联台</a-button>
+          <a-button v-if="!btnDisabled && selectGoodsList.length !== 0" @click="unionStation('转菜','2')" :disabled="transferDishesList.length == 0"  style="margin-left: 10px;">转菜</a-button>
+          <a-button @click="unionStation('换台','0')" style="margin-left: 10px;">换台</a-button>
           <!--          <a-button @click="addClear" :disabled="btnDisabled">清空新加</a-button>-->
         </div>
         <div v-else style="display: flex; gap: 5px; flex-flow: wrap">
@@ -60,6 +62,15 @@
             <a-button v-if="!btnDisabled" @click="pendingOrder">挂单</a-button>
             <a-button v-else @click="handlePickingGoodsOrder">取单</a-button>
           </div>
+          <div>
+            <a-button v-if="!btnDisabled" @click="unionStation('联台','5')" style="margin-left: 10px;">联台</a-button>
+            <a-button v-if="!btnDisabled && selectGoodsList.length !== 0" @click="unionStation('转菜','2')" :disabled="transferDishesList.length == 0"  style="margin-left: 10px;">转菜</a-button>
+            <a-button v-if="!btnDisabled" @click="unionStation('换台','0')" style="margin-left: 10px;">换台</a-button>
+            <a-button v-if="isUnionStation" @click="unlink" style="margin-left: 10px;">取消联台</a-button>
+            
+            <!-- <a-button @click="pendingOrder">挂单</a-button> -->
+            <!-- <a-button v-else @click="handlePickingGoodsOrder">取单</a-button> -->
+          </div>
           <a-button
             v-if="selectRoomOrder && selectRoomOrder.roomName && !btnDisabled"
             @click="handleToRoomFeePayment"
@@ -153,7 +164,7 @@
           </a-space>
         </a-row>
       </a-card>
-      <a-modal v-model="unionOpen" width="1200px" title="联台" @ok="handleOk">
+      <a-modal v-model="unionOpen" width="1200px" :title="unionTitle" @ok="handleOk">
           <a-tabs v-model="tabPosRegionId" @change="tabRegionChange">
             <a-tab-pane key="1" tab="全部"></a-tab-pane>
             <a-tab-pane
@@ -288,6 +299,14 @@ export default {
     tableName: {
       type: String,
       default: ''
+    },
+    orderId: {
+      type: String,
+      default: ''
+    },
+    isUnionStation: {
+      type: Boolean,
+      default: false
     }
   },
   watch: {
@@ -363,8 +382,11 @@ export default {
       uniteDataSource: [],
       model: {
         reserveTableList: []
-      }
-
+      },
+      // 联台弹框标题文本
+      unionTitle: '',
+      // 转菜储存数组
+      transferDishesList: []
     }
   },
   provide() {
@@ -383,6 +405,10 @@ export default {
           )
           this.selectedRowKeys = selectedRowKeys
           this.selectedRows = selectedRows
+          this.transferDishesList = this.selectedRows.filter(item => {
+            return ('id' in item)
+          })
+          console.log(this.transferDishesList);
         },
         getCheckboxProps: (record) => ({
           props: {
@@ -404,11 +430,16 @@ export default {
       }, 0)
     },
     btnDisabled() {
-      var res = this.selectGoodsList && this.selectGoodsList.length > 0
+      console.log(this.selectGoodsList);
+      var res = this.selectGoodsList && this.selectGoodsList.length >= 0
       return !res
     }
   },
   created() {
+    console.log(this.tableId);
+    console.log(this.tableState);
+    console.log(this.tableName);
+    console.log(this.orderId);
     this.dataSource = [
       {
         id: '0'
@@ -456,6 +487,7 @@ export default {
     /** 通过桌号查询订单 */
     getOrderByTableId(tableId) {
       getAction('/pos/posOrderGoods/getOrderByTableId', { tableId }).then(resp => {
+        console.log(resp);
         if (resp.success) {
           this.selectOrderInfo = resp.result
           this.selectGoodsList = resp.result.posOrderGoodsDetailList
@@ -835,23 +867,57 @@ export default {
       }
     },
     // 联台按钮
-    unionStation() {
+    unionStation(val,index) {
+      if (val == '转菜' && (this.transferDishesList.length !== this.selectedRows.length)) {
+        this.$message.error('勾选的商品中有未下单的商品,不能进行转菜操作')
+        return
+      }
+      this.unionTitle = val
       this.unionOpen = true
-      this.loadRegion()
+      this.uniteDataSource = []
+      this.loadRegion(index)
     },
     // 联台确认
     handleOk() {
-      let tempdata = []
-      this.model.reserveTableList.forEach(index => {
-        tempdata.push(index.posOrderGoods.id)
-      })
-      console.log(tempdata);
-      postAction(`/pos/posOrderGoods/merge-order + ${this.posTableId}`,tempdata).then(res => {
-        console.log(res);
-        if (res.success) {
-          this.$message.success('联台成功')
-        }
-      })
+      console.log(this.model.reserveTableList);
+      if (this.unionTitle == '换台') {
+        console.log(111);
+        getAction(`/pos/posOrderGoods/change-table?posOrderId=${this.orderId}&tableId=${this.model.reserveTableList[0].id}`).then(res => {
+          console.log(res);
+          if (res.success) {
+            this.$message.success('换台成功')
+          }
+          this.unionOpen = false
+        })
+      } else if (this.unionTitle == '转菜') {
+        let tempList = []
+        this.transferDishesList.forEach(index => {
+          tempList.push(index.id)
+        })
+        postAction(`/pos/posOrderGoods/transfer-dishes?posOrderId=` + this.model.reserveTableList[0].posOrderGoods.id,tempList).then(res => {
+          console.log(res);
+          if (res.success) {
+            this.$message.success('转菜成功')
+          }
+          // this.itemClick2()
+          this.getOrderByTableId(this.tableId)
+          this.loadGoods()
+          this.unionOpen = false
+        })
+      } else {
+        let tempdata = []
+        this.model.reserveTableList.forEach(index => {
+          tempdata.push(index.posOrderGoods.id)
+        })
+        postAction(`/pos/posOrderGoods/merge-order?mainPosOrderId=` + this.selectOrderInfo.id,tempdata).then(res => {
+          console.log(res);
+          if (res.success) {
+            this.$message.success('联台成功')
+          }
+          this.unionOpen = false
+        })
+      }
+      
       console.log(this.posTableId);
     },
     // 联台大厅tab切换
@@ -859,7 +925,7 @@ export default {
       this.loadTables();
     },
     // 联台大厅tab获取
-    loadRegion() {
+    loadRegion(index) {
       getAction("/pos/posRegion/list", {
         posTypeId: this.tabPosTypeId,
       }).then((res) => {
@@ -868,15 +934,15 @@ export default {
           this.regionList = res.result.records;
         }
       });
-      this.loadTables();
+      this.loadTables(index);
     },
     // 联台大厅数据获取
-    loadTables() {
+    loadTables(index) {
       var obj = {
         pageNo: 1,
         pageSize: 99999,
         posTypeId: this.tabPosTypeId,
-        // state: this.state,
+        state: index,
       };
       if (this.tabPosRegionId != "1") {
         obj.posRegionId = this.tabPosRegionId;
@@ -888,7 +954,7 @@ export default {
       //     console.log(this.uniteDataSource);
       //   }
       // });
-      getAction("/pos/posTable/getCanMerge", obj).then((res) => {
+      getAction("/pos/posTable/getCanUseTable", obj).then((res) => {
         console.log(res);
         if (res.success) {
           this.uniteDataSource = res.result.records;
@@ -898,16 +964,37 @@ export default {
     },
     // 联台点击
     orderMeal(item) {
-      console.log(item);
-      if (this.model.reserveTableList.some((t) => t.id == item.id)) {
-          this.model.reserveTableList = this.model.reserveTableList.filter(
-              (t) => t.id != item.id
-          );
+      console.log(this.unionTitle);
+      if (this.unionTitle == '换台' || this.unionTitle == '转菜') {
+        this.model.reserveTableList = []
+        if (this.model.reserveTableList.some((t) => t.id == item.id)) {
+            this.model.reserveTableList = this.model.reserveTableList.filter(
+                (t) => t.id != item.id
+            );
+        } else {
+            this.model.reserveTableList = [item];
+        }
       } else {
-          this.model.reserveTableList.push(item);
+        if (this.model.reserveTableList.some((t) => t.id == item.id)) {
+            this.model.reserveTableList = this.model.reserveTableList.filter(
+                (t) => t.id != item.id
+            );
+        } else {
+            this.model.reserveTableList.push(item);
+        }
       }
       console.log(this.model.reserveTableList);
     },
+    // 取消联台
+    unlink() {
+      getAction(`/pos/posOrderGoods/return-merge-order?posOrderId=${this.orderId}`).then((res) => {
+        if (res.success) {
+          this.$message.success('取消联台成功')
+        }
+        this.unionOpen = false
+      });
+      
+    }
   }
 }
 </script>

+ 9 - 3
src/views/pos/posInfo.vue

@@ -3,7 +3,7 @@
     <a-tabs v-model="activeKey" @change="tabChange">
       <a-tab-pane key="1">
         <span slot="tab"> 点单 </span>
-        <diandan ref="diandan" :tableId="diandanId" :tableState="diandanState" :tableName="diandanName" @reTable="reTable"></diandan>
+        <diandan ref="diandan" :tableId="diandanId" :isUnionStation="isUnionStation" :orderId="orderId" :tableState="diandanState" :tableName="diandanName" @reTable="reTable"></diandan>
       </a-tab-pane>
       <a-tab-pane key="2">
         <span slot="tab"> 桌台点单 </span>
@@ -51,13 +51,19 @@ export default {
       activeKey: '1',
       diandanId: '',
       diandanState: -1,
-      diandanName: ''
+      diandanName: '',
+      orderId: '',
+      // 判断是否可以取消联台
+      isUnionStation: null
     }
   },
   methods: {
-    retId(id, state, name) {
+    retId(id, state, name,orderId,isUnionStation) {
       this.activeKey = '1'
       this.diandanId = ''
+      this.orderId = orderId
+      this.isUnionStation = isUnionStation
+
       setTimeout(()=>{
         this.diandanId = id
       }, 200)

+ 38 - 1
src/views/pos/tablediandangallery.vue

@@ -47,6 +47,7 @@
         >
           <div class="select-cell"></div>
           <template v-if="item.state === 1">
+            <!-- <div v-if="item.posOrderGoods !== null && item.posOrderGoods.teamId !== null && item.posOrderGoods.teamId !== ''">111</div> -->
             <div>{{ item.name }}</div>
             <div style="margin-top: 10px">待下单</div>
             <div
@@ -65,6 +66,8 @@
             </div></template
           >
           <template v-else-if="item.state === 2 || item.state === 4">
+            <div v-if="item.posOrderGoods !== null && item.posOrderGoods.teamId !== null && item.posOrderGoods.teamId !== ''" class="union_station_style">联{{ item.posOrderGoods.teamIndex }}</div>
+            <div v-if="item.posOrderGoods !== null && item.posOrderGoods.teamId !== null && item.posOrderGoods.teamId !== '' && item.posOrderGoods.isMain" class="host_union_station_style">主</div>
             <div>{{ item.name }}</div>
             <div style="margin-top: 10px">
               ¥{{ item.posOrderGoods ? item.posOrderGoods.money : 0 }}
@@ -376,9 +379,11 @@ export default {
         obj.posRegionId = this.tabPosRegionId;
       }
       getAction("/pos/posTable/tableList", obj).then((res) => {
+        console.log(res);
         if (res.success) {
           this.dataSource = res.result.records;
         }
+        console.log(this.dataSource);
       });
     },
     handleDelete() {
@@ -513,7 +518,15 @@ export default {
       } else {
         
         console.log(this.selectTable)
-        this.$emit('retId', this.selectTable.id, this.selectTable.state,this.selectTable.name)
+        let isUnionStation = false
+        if (this.selectTable.posOrderGoods.teamIndex !== null && this.selectTable.posOrderGoods.teamIndex !== '' && this.selectTable.posOrderGoods.isMain !== true) {
+          isUnionStation = true
+        } else {
+          isUnionStation = false
+        }
+        console.log(isUnionStation);
+        // return
+        this.$emit('retId', this.selectTable.id, this.selectTable.state,this.selectTable.name,this.selectTable.posOrderGoods.id,isUnionStation)
         // this.$router.push({
         //   name: "pos-tablediandan",
         //   params: { tableId: row.id },
@@ -603,4 +616,28 @@ export default {
   background-color: #ccc;
   border-radius: 4px;
 }
+.union_station_style {
+  width: 35px;
+  height: 30px;
+  position: absolute;
+  top: 30px;
+  right: 2px;
+  text-align: center;
+  padding-top: 3px;
+  border-radius: 10px;
+  background-color: #fff;
+  border: 3px solid #fff;
+  color: #0a7a72;
+}
+.host_union_station_style {
+  width: 30px;
+  height: 30px;
+  position: absolute;
+  border: 2px solid #fff;
+  left: 30%;
+  top: 0px;
+  border-radius: 35px;
+  text-align: center;
+  padding-top: 3px;
+}
 </style>