<template>
<el-row :gutter="10">
  <el-col :span="setcol">
    <el-button style="margin:0 0 10px 0px" size="small" type="primary" @click="setcol = setcol === 24?12:24">{{setcol === 24?'添 加':'取 消'}}</el-button>
    <el-table
      ref="multipleTable"
      :data="tableData"
      height="500px"
      style="width: 100%;"
      size="small"
      stripe
      border>
      <!-- <el-table-column
        type="selection"
        width="55"
        align="center">
      </el-table-column> -->
      <el-table-column
          prop="rowno"
          label="行号"
          width="50">
      </el-table-column>
      <el-table-column
        prop="itemname"
        label="产品名称"
        width="180">
      </el-table-column>
      <el-table-column
        prop="itemno"
        label="产品编号"
        width="180">
      </el-table-column>
      <el-table-column
        label="型号/规格">
        <template slot-scope="scope">
          <p><span>{{scope.row.model}}</span>&nbsp;/&nbsp;<span>{{scope.row.spec}}</span></p>
        </template>
      </el-table-column>
      <el-table-column
        label="数量"
        width="180">
        <template slot-scope="scope">
          <el-input-number :controls="true" controls-position='right' :step-strictly="true" v-if="data.status === '新建'" size="mini" v-model="scope.row.qty" :min="scope.row.orderminqty" :step="scope.row.orderaddqty" label="输入数量" @change="qtyChange(scope.row,scope.$index)"></el-input-number>
          <span v-else>{{scope.row.qty}}</span>
        </template>
      </el-table-column>
      <el-table-column
        label="需求日期"
        width="200">
        <template slot="header" slot-scope="scope">
          <div>
            <el-date-picker
              style="width:180px"
              v-if="data.status === '新建'"
              v-model="value2"
              value-format="yyyy-MM-dd"
              slot="reference"
              align="right"
              type="date"
              size="mini"
              placeholder="一键交期"
              @change="dateChange(scope.row)">
            </el-date-picker>
            <span v-else>需求日期</span>
          </div>
        </template>
        <template slot-scope="scope">
          <el-date-picker
            v-if="scope.row.delivery > 0 && data.status === '新建'"
            v-model="scope.row.needdate"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
            size="mini"
            style="width:150px"
            :picker-options="pickerOptions"
            @change="onDateChange(scope.row)"
            @focus="setPickerOptions(scope.row)">
          </el-date-picker>
          <div v-else>
            <p v-if="scope.row.delivery === 0 ">不管控交期</p>
            <p v-else>{{scope.row.needdate}}</p>
          </div>
        </template>
      </el-table-column>
      <el-table-column
        prop="deliverydate"
        label="回复交期"
        width="120">
      </el-table-column>
      <el-table-column
        prop="unit"
        label="计量单位"
        width="90">
        <template slot-scope="scope">
          <el-tag size="mini" type="info" effect="plain">{{scope.row.unit}}</el-tag>
        </template>
      </el-table-column>
      <el-table-column
        prop="price"
        label="价格"
        width="90">
        <template slot-scope="scope">
          <p style="color:red;font-weight:500">¥&nbsp;{{tool.formatAmount(scope.row.price,2)}}</p>
        </template>
      </el-table-column>
      <el-table-column
        label="折后价格"
        prop="totalprice">
        <template slot-scope="scope">
          <p style="color:red;font-weight:500">¥&nbsp;{{scope.row.price}}</p>
        </template>
      </el-table-column>
      <el-table-column
        label="小计"
        width="150">
        <template slot-scope="scope">
          <p style="color:red;font-weight:500">¥&nbsp;{{tool.formatAmount(scope.row.price * scope.row.qty,2)}}</p>
        </template>
      </el-table-column>
      <el-table-column v-if="data.status === '新建'" width="90" fixed="right">
        <template slot-scope="scope">
          <el-button type="text" size="mini" @click="deleteOrderProduct(scope.row)">删 除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div style="margin-top:16px;text-align:right">
      <el-pagination
        background
        small
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="currentPage"
        :page-size="param.content.pageSize"
        layout="total, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
  </el-col>
  <el-col :span="24 - setcol">
    <addProduct :data="data" @onConfirm="onConfirm"></addProduct>
  </el-col>
</el-row>
</template>

<script>
import addProduct from '@/template/orderCanUseProduct/index.vue'

export default {
  props:['data','type'],
  data () {
    return {
      setcol:24,
      dataRefresh:true,
      tableData:[],
      param:{
        "id": 20221109093902,
        "content": {
          "sa_orderid": 0, //订单ID
          "pageNumber": 1,
          "pageSize": 20,
          "where": {
            "condition": ""
          }
        },
      },
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() < (Date.now() - 24 * 3600 * 1000);
        },
      },
      total:0,
      currentPage:0,
      time: null,
      value2:''
    }
  },
  components:{
    addProduct
  },
  methods:{
    async listData () {
      this.param.content.sa_orderid = this.$route.query.id
      const res = await this.$api.requested(this.param)
      this.tableData = res.data
      this.total = res.total
      this.currentPage = res.pageNumber
    },
    handleSizeChange(val) {
      // console.log(`每页 ${val} 条`);
      this.params.content.pageSize = val
      this.listData()
    },
    handleCurrentChange(val) {
      // console.log(`当前页: ${val}`);
      this.params.content.pageNumber = val
      this.listData()
    },
    async deleteOrderProduct (row) {
      const res = await this.$api.requested({
        "id": 20221109093702,
        "content": {
          "sa_orderid":this.$route.query.id,
          "sa_orderitemsids": [row.sa_orderitemsid]
        },
      })
      this.tool.showMessage(res,()=>{
        this.listData()
        this.$emit('onSuccess')
      })
    },
    // async updateOrderProduct (val) {
    //   const res  = await this.$api.requested({
    //     "id": 20221110145302,
    //     "content": val
    //   })
    //   this.$emit('onSuccess')
    // },
    qtyChange (val,index) {
      let that = this
      this.$set(this.tableData,index,val)
      // // 防抖
      if(this.time !== null){
        clearTimeout(this.time);
      }
      this.time = setTimeout(() => {
        that.updateOrder({
          "sa_orderid": this.data.sa_orderid, //订单ID
          "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
          "sa_contractid": this.data.contacts.contactsid, //合同ID
          "type": this.data.type, //订单类型
          "items": [{
            "sa_orderitemsid": val.sa_orderitemsid,//0表示新增
            "itemid": val.itemid, //商品ID
            "qty": val.qty, //数量
            "needdate": val.needdate//可以不传,修改交期
          }]
        })
      },500)
    },
    onDateChange (val){
      let that = this
      that.value2 = ''
      that.updateOrder({
        "sa_orderid": this.data.sa_orderid, //订单ID
        "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
        "sa_contractid": this.data.contacts.contactsid, //合同ID
        "type": this.data.type, //订单类型
        "items": [{
          "sa_orderitemsid": val.sa_orderitemsid,//0表示新增
          "itemid": val.itemid, //商品ID
          "qty": val.qty, //数量
          "needdate": val.needdate//可以不传,修改交期
        }]
      })
      
    },
    async dateChange (row) {
      this.tableData = this.tableData.filter(e=>{
        if (e.delivery > 0) {
          e.needdate = this.value2
        }
        return e
      })
      const res = await this.$api.requested({
       "id": 20230104143802,
        "content": {
          "sa_orderid": this.$route.query.id, 
          "needdate": this.value2
        },
      })
    },
    async updateOrder (val) {
      const res  = await this.$api.requested({
        "id": 20221109093602,
        "content": val
      })
      // this.$emit('onSuccess')
    },
    setPickerOptions (val) {
      var startDate = val.deliverydate
      startDate = startDate.replace(new RegExp("-","gm"),"/")
      var startDateM = (new Date(startDate)).getTime()
      this.pickerOptions = {
        disabledDate(time) {
          return time.getTime() < startDateM;
        },
      }
    },
    // 订单添加商品
    async onConfirm (data) {
      const res = await this.$api.requested({
        "id": 20221109093602,
        "content": {
          "sa_orderid": this.$route.query.id, //订单ID
          "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
          "type": this.data.type, //订单类型
          "items": data.map(e=>{
            return {
              sa_orderitemsid:0,
              itemid:e.itemid,
              qty:e.orderminqty,
              needdate:e.deliverydate
            }
          })
        },
      })
      this.tool.showMessage(res,()=>{
        this.setcol = 24
        this.listData()
      })
    },
  },
  mounted () {
    this.listData()
  },
  watch:{
    value2 (val) {
      console.log(val)
    }
  }
}

</script>
<style>
</style>