<!--修改订单-->
<template>
  <q-dialog v-model="IsShowEditOrder" maximized full-height seamless position="right">
    <q-card style="margin-top:61px;width:500px" class="no-border-radius classinfo_Dialog">
      <div class="drawerTop">
        <div style="display:flex;align-items:center;margin-left:10px;">
          <span class="drawer_Span">修改订单</span>
        </div>
      </div>
      <div style="padding:20px 15px;">
        <q-input filled stack-label maxlength="100" :dense="false" v-model="OrderMsg.GuestNum" type="number"
          @input="peopleNumber" class="col-12" label="人数" :rules="[val => !!val || '请填写人数']" />
        <q-input filled stack-label :dense="false" v-model="OrderMsg.Unit_Price" :disable="UPrice==true?false:true"
          @blur="priceNumber" class="col-12" label="成交单价" :rules="[val => !!val || '请填成交单价']" />
        <q-toggle v-model="UPrice" label="高于定价收生" class="q-mb-md" /> <!-- @change="resetSearch"-->
        <q-select standout="bg-primary text-white" option-value="Id" option-label="Name" v-model="OrderMsg.OrderSource"
          :options="SourceEnumList" emit-value map-options label="客人来源" />
        <q-input filled stack-label :dense="false" v-model="OrderMsg.SaleRemark" style="margin-top: 20px"
          type="textarea" class="col-12" label="备注" />
        <div style="margin:30px 10px 0 0;">
          <q-btn class="q-mr-md" label="取消" @click="closeEditOrder" />
          <q-btn color="accent" class="q-mr-md" label="保存" @click="saveOrderInfo()" />
        </div>
      </div>
    </q-card>
    <div class="dialog-out-close" @click="closeEditOrder"
      style="height:40px !important;border-top-left-radius: 4px !important;border-bottom-left-radius: 4px !important;">
      <q-icon name="iconfont icon-jujue1" size="26px" />
    </div>
  </q-dialog>
</template>
<script>
  import {
    getClassOrderInfo, //获取订单操作日志列表
    getOrderSourceEnumList, //获取订单来源 枚举
    setClassOrder, //修改订单
  } from '../../api/sale/sale'
  export default {
    name: "editOrder-form",
    props: {
      saveObj: {
        type: Object,
        default: null,
      }
    },
    data() {
      return {
        IsShowEditOrder: true,
        OrderMsg: {
          ClassId: 0, //班级编号
          GuestNum: 0, //人数
          Unit_Price: 0,
          PreferPrice: 0,
          OrderSource: 0,
          SaleRemark: "",
          Class_Price: 0,
          OrderId:0,
        },
        UPrice: false,
        StepPriceList: [],
        UnitPrice: 0,
        SourceEnumList: [], //订单来源
      }
    },
    created() {
      this.getOrderSEList();
    },
    mounted() {
      this.getOrderInfo();
    },
    methods: {
      //关闭弹窗
      closeEditOrder() {
        this.IsShowEditOrder = false;
        this.$emit('close')
      },
      //获取订单来源
      getOrderSEList() {
        getOrderSourceEnumList({}).then(res => {
          if (res.Code == 1) {
            var tempArray = res.Data;
            this.SourceEnumList = tempArray;
            this.OrderMsg.OrderSource = tempArray[0].Id;
          }
        })
      },
      //获取订单信息
      getOrderInfo() {
        getClassOrderInfo({
          OrderId: this.saveObj.OrderId
        }).then(res => {
          if (res.Code == 1) {
            this.OrderMsg.ClassId = res.Data.OrderInfo.ClassId;
            this.OrderMsg.GuestNum = res.Data.OrderInfo.GuestNum;
            this.OrderMsg.Unit_Price = res.Data.OrderInfo.Unit_Price;
            this.OrderMsg.PreferPrice = res.Data.OrderInfo.PreferPrice;
            this.OrderMsg.OrderSource = res.Data.OrderInfo.OrderSource;
            this.OrderMsg.SaleRemark = res.Data.OrderInfo.SaleRemark;
            this.OrderMsg.Class_Price = res.Data.OrderInfo.Class_Price;
            this.OrderMsg.OrderId = res.Data.OrderInfo.OrderId;
            this.UnitPrice = this.OrderMsg.Unit_Price;
            this.StepPriceList = res.Data.StepPriceList;
            this.IsShowEditOrder = true;
          }
        })
      },
      //人数改变
      peopleNumber(val) {
        if (val == '') {
          this.OrderMsg.GuestNum = 1
        }
        this.OrderMsg.Unit_Price = this.countPrice(this.OrderMsg.GuestNum)
        this.$forceUpdate()
        this.UnitPrice = this.OrderMsg.Unit_Price
      },
      priceNumber(val) { //大于的时候赋值
        if (this.OrderMsg.Unit_Price < this.UnitPrice) {
          this.OrderMsg.Unit_Price = this.UnitPrice
        }
      },
      //计算价格
      countPrice(num) {
        let array = [];
        if (this.StepPriceList && this.StepPriceList.length) {
          this.StepPriceList.forEach(x => {
            let obj = {
              PersionNum: x.PersionNum,
              PersionPrice: x.PersionPrice,
            }
            array.push(obj)
          })
          let fz = false
          let a = 0;
          array.forEach(x => {
            if (x.PersionNum == num) {
              fz = true;
              a = x.PersionPrice
            }
          })
          if (fz == false) {
            array.push({
              PersionNum: num
            })
            array.sort(this.getSortFun('asc', 'PersionNum')); //升序排序
            var idx;
            for (var i = 0; i < array.length; i++) {
              if (array[i].PersionNum == num) {
                idx = i;
              }
            }
            idx = Math.max(0, idx - 1);
            if (array[idx].PersionPrice) {
              return array[idx].PersionPrice;
            } else {
              return this.OrderMsg.Class_Price;
            }
          } else {
            return a;
          }
        } else {
          return this.OrderMsg.Class_Price;
        }
      },
      getSortFun(order, sortBy){
        var ordAlpah = (order == 'asc') ? '>' : '<';
        var sortFun = new Function('a', 'b', 'return a.' + sortBy + ordAlpah + 'b.' + sortBy + '?1:-1');
        return sortFun;
      },
      //修改订单
      saveOrderInfo() {
        this.OrderMsg.PreferPrice = this.OrderMsg.GuestNum * this.OrderMsg.Unit_Price
        setClassOrder(this.OrderMsg).then(res => {
          if (res.Code == 1) {
            this.$q.notify({
              icon: 'iconfont icon-chenggong',
              color: 'accent',
              timeout: 2000,
              message: '修改成功！',
              position: 'top'
            })
            //调用父页面成功方法
            this.$emit('success');
            this.IsShowEditOrder = false
          } else {
            this.$q.notify({
              type: 'negative',
              position: "top",
              message: res.Message
            })
          }
        }).catch(() => {})
      },
    }
  }

</script>
