<template>
    <el-dialog class="common-dialog" title="挂单列表" :visible="showDialog" @close="close" width="1000px" destroy-on-close>
        <el-alert title="提示：请选择一个空白位置挂单" type="warning" :closable="false"></el-alert>
        <div class="order-list">
          <div class="order-item" v-for="orderInfo in orderList">
            <div class="info" v-if="!orderInfo.isEmpty">
              <div class="sn">{{ orderInfo.hangNo }} <span @click="remove(orderInfo.hangNo)" class="remove el-icon-delete"></span></div>
              <div class="order" v-if="!orderInfo.isEmpty" @click="getHangUp(orderInfo.hangNo, orderInfo.memberInfo)">
                <div class="item">会员：{{ orderInfo.memberInfo ? orderInfo.memberInfo.name : '游客' }}</div>
                <div class="item">件数：{{ orderInfo.num }}</div>
                <div class="item">金额：￥{{ orderInfo.amount }}</div>
                <div class="item time">{{ orderInfo.dateTime }}</div>
              </div>
            </div>
            <div v-if="orderInfo.isEmpty" class="none" @click="doHangUp(orderInfo.hangNo)">
              <div class="sn">{{ orderInfo.hangNo }} <span @click="remove(orderInfo.hangNo)" class="remove el-icon-delete"></span></div>
              <div class="tips">空白位置</div>
            </div>
          </div>
        </div>
        <div class="clearfix"></div>
        <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="close()">关闭</el-button>
        </div>
    </el-dialog>
</template>
<script>
import { doHangUp, getHangUpList, removeHangUp } from "@/api/cashier";
export default {
    props: {
      showDialog: {
        type:[Boolean],
        default:()=>false
      },
      memberInfo: {
         type:[Object],
         default:()=>{}
      },
      cartList: {
        type:[Array],
        default:()=>[]
      },
    },
    watch: {
      showDialog(value) {
        if (value) {
            console.log('memberInfo = ', this.memberInfo)
            this.getHangUpList();
        }
      }
    },
    data(){
        return {
          loading: false,
          orderList: []
        }
    },
    methods: {
        // 删除挂单
        remove(hangNo) {
          const app = this;
          const param = { hangNo: hangNo };
          removeHangUp(param).then( response => {
            if (response) {
                app.$modal.msgSuccess("删除挂单成功！");
                app.getHangUpList();
            }
          })
        },
        // 执行挂单
        doHangUp(hangNo) {
           const app = this;
           if (!app.cartList || app.cartList.length < 1) {
               app.$modal.alert("请先添加结算商品！");
               return false;
           }
           let cartIds = [];
           app.cartList.forEach(function(cart) {
              cartIds.push(cart.cartId);
           })
           const param = { hangNo: hangNo, userId: app.memberInfo ? app.memberInfo : '', cartIds: cartIds.join(',') };
           doHangUp(param).then( response => {
               if (response) {
                   app.$modal.msgSuccess("挂单成功！");
                   app.getHangUpList();
                   app.$emit('doHangUp');
               }
           })
        },
        // 获取挂单列表
        getHangUpList() {
          const app = this;
          getHangUpList().then( response => {
            if (response.data) {
                app.orderList = response.data;
            }
          })
        },
        // 取单
        getHangUp(hangNo, memberInfo) {
           this.$emit('getHangNo', { 'hangNo': hangNo, 'memberInfo': memberInfo });
        },
        close() {
           this.$emit('closeDialog','hangUpDialog');
        }
    }
}
</script>
<style lang="scss" scoped>
  .order-list {
     margin-top: 6px;
     .order-item {
         width: 20%;
         float: left;
         height: 200px;
         cursor: pointer;
         padding: 5px;
         .info {
           border: solid 1px #cccccc;
           padding: 5px;
           height: 100%;
           border-radius: 4px;
           background: #e6f7f7;
           border: #00acac solid 1px;
           .sn {
             font-weight: bold;
             font-size: 20px;
             color: #ff5b57;
             .remove {
               float: right;
               font-size: 12px;
               color: #666666;
               font-weight: bold;
             }
           }
           .order {
              margin: 10px;
              .item {
                 margin-bottom: 3px;
              }
              .time {
                 position: relative;
                 bottom : -50px;
                 color: #909399;
              }
           }
         }
         .none {
            height: 100%;
            color: #666666;
            border: solid 1px #cccccc;
            border-radius: 4px;
            padding: 10px;
            .tips {
               line-height: 150px;
               text-align: center;
            }
           .sn {
             font-weight: bold;
             font-size: 20px;
             color: #ff5b57;
             .remove {
               float: right;
               font-size: 12px;
               color: #666666;
               font-weight: bold;
             }
           }
         }
     }
  }
</style>
