<template>
  <div>
    <addProduct class="inline-16" :data="data" @onConfirm="listData()"></addProduct>
    <el-button v-if="tool.checkAuth($route.name,'adddispatch')" size="small" type="primary" @click="adddispatch">一键发货</el-button>
    <el-table
      ref="multipleTable"
      :data="tableData"
      height="500px"
      style="width: 100%;"
      size="small"
      @selection-change	="selectionChange">
      stripe
      border
      >
      <el-table-column
        type="selection"
        width="55"
        fixed="left"
        align="center">
      </el-table-column>
      <el-table-column
        prop="itemname"
        label="产品名称"
        fixed
        width="180">
      </el-table-column>
      <el-table-column
        prop="itemno"
        label="产品编号"
        width="180">
      </el-table-column>
      <el-table-column
        label="型号"
        width="150">
        <template slot-scope="scope">
          <p><span>{{scope.row.model}}</span></p>
        </template>
      </el-table-column>
      <el-table-column
          label="规格"
          width="150">
        <template slot-scope="scope">
          <p><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="type === 'edit' && !data.sa_contractid" size="mini" v-model="scope.row.qty" :min="scope.row.orderminqty" :step="scope.row.orderaddqty" label="输入数量" @change="rowChange(scope.row,scope.$index)"></el-input-number>
          <span v-else>{{scope.row.qty}}</span>
        </template>
      </el-table-column>
      <el-table-column
        prop="needdate"
        label="需求日期"
        width="180">
        <template slot="header" slot-scope="scope">
          <div>
            <el-date-picker
              style="width:150px"
              v-if="type === 'edit'"
              v-model="value2"
              value-format="yyyy-MM-dd"
              slot="reference"
              align="right"
              type="date"
              size="mini"
              placeholder="一键交期"
              @change="dateChangeNeed">
            </el-date-picker>
            <span v-else>需求日期</span>
          </div>
        </template>
        <template slot-scope="scope">
          <el-date-picker
            v-if="scope.row.delivery > 0 && type === 'edit'"
            v-model="scope.row.needdate"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
            size="mini"
            style="width:150px"
            :picker-options="pickerOptions"
            @change="rowChange(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
        label="回复交期"
        width="200">
        <template slot="header" slot-scope="scope">
          <div>
            <el-date-picker
              style="width:180px"
              v-if="type === 'confirmdate'"
              v-model="value2"
              value-format="yyyy-MM-dd"
              slot="reference"
              align="right"
              type="date"
              size="mini"
              placeholder="一键交期"
              @change="dateChange">
            </el-date-picker>
            <span v-else>回复交期</span>
          </div>
        </template>
        <template slot-scope="scope">
          <el-date-picker
            v-if="scope.row.delivery > 0 && type === 'confirmdate'"
            v-model="scope.row.deliverydate"
            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.deliverydate}}</p>
          </div>
        </template>
      </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="100">
        <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="小计">
        <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
        label="备注"
        width="300">
        <template slot-scope="scope">
          <el-input v-if="type === 'edit'" v-model="scope.row.remarks" placeholder="输入订单备注" size="mini" @change="rowChange(scope.row,scope.$index)"></el-input>
          <p v-else>{{scope.row.remarks}}</p>
        </template>
      </el-table-column>
      <el-table-column v-if="!data.sa_contractid" 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>
  </div>
</template>

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

export default {
  props:['data','type'],
  data () {
    return {
      dataRefresh:true,
      tableData:[],
      param:{
        "id": 20230116104102,
        "content": {
          "sa_orderid": 0, //订单ID
          "pageNumber": 1,
          "pageSize": 9999,
          "where": {
            "condition": ""
          }
        },
      },
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() < (Date.now() - 24 * 3600 * 1000);
        },
      },
      selection:[],
      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
      this.$emit("queryDetail")
    },
    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')
      })
    },
    rowChange (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,//可以不传,修改交期
            "price":val.price,
            "remarks":val.remarks
          }]
        })
      },500)
    },
    onDateChange (val){
      let that = this
      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, //数量
          "deliverydate": val.deliverydate//可以不传,修改交期
        }]
      })
    },
    async dateChangeNeed(val){
      // const res = await this.$api.requested({
      //   "id": 20230104143802,
      //   "content": {
      //     "sa_orderid": this.data.sa_orderid, 
      //     "needdate": this.value2
      //   },
      // })
    },
    async updateOrder (val) {
      const res  = await this.$api.requested({
        "id": 20221109093602,
        "content": val
      })
    },
    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 dateChange (row) {
      this.tableData = this.tableData.filter(e=>{
        if (e.delivery > 0) {
          e.deliverydate = this.value2
        }
        return e
      })
      const res = await this.$api.requested({
       "id": 20230104143102,
        "content": {
          "sa_orderid": this.$route.query.id, 
          "deliverydate": this.value2
        },
      })
    },
    selectionChange (selection) {
      this.selection = selection
    },
    async adddispatch () {
      const res = await this.$api.requested({
        "id": "20230220100604",
        "content": {
          "sa_orderid":this.data.sa_orderid,
          "sa_orderitemsids": this.selection.map(e=>{
            return e.sa_orderitemsid
          })
        }
      })
      this.tool.showMessage(res,()=>{
        let route = this.$route

        this.oldRoute = {path:route.path,query:route.query}

        this.$store.dispatch('setHistoryRouter',this.oldRoute)

        this.$router.replace({path:'/dispatchdetail',query:{id:res.data.sa_dispatchid,rowindex:res.data.rowindex}})
      })
    },
  },
  mounted () {
    this.listData()
  }
}

</script>
<style>
</style>