<template>
  <a-modal
    title="参照发运明细"
    v-model="referShipDetModVis"
    :confirmLoading="confirmLoading"
    @ok="onSubmit"
    @cancel="handleCancel"
    width="86%"
    style="top:330px;left:100px;"
  >
    <a-spin :spinning="confirmLoading">
      <!-- 查询  -->
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <a-col :md="6" :sm="8">
              <a-form-item label="发运明细单号">
                <a-input placeholder="请输入发运明细单号" v-model="queryParam.documentNo"></a-input>
              </a-form-item>
            </a-col>

            <a-col :md="6" :sm="8">
              <a-form-item label="客户">
                <j-search-select-tag
                  placeholder="请选择客户"
                  v-model="queryParam.customer"
                  dict="view_customer,customername,customername">
                </j-search-select-tag>
              </a-form-item>
            </a-col>

             <a-col :md="6" :sm="8">
              <a-form-item label="发货情况">
               <a-select v-model="queryParam.status" style="width: 200px" placeholder="请选择发货情况" >
                 <a-select-option value="n">超量发货</a-select-option>
                 <a-select-option value="y">正常</a-select-option>
               </a-select>
              </a-form-item>
            </a-col>

            <a-col :md="6" :sm="8">
              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
                <a @click="handleToggleSearch" style="margin-left: 8px">
                  {{ toggleSearchStatus ? '收起' : '展开' }}
                  <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
                </a>
              </span>
            </a-col>
          </a-row>
        </a-form>
      </div>

      <!-- table -->
      <a-table
        bordered
        size="small"
        rowKey="id"
        v-if="data"
        :columns="columns"
        :data-source="data"
        :loading="loading"
        :pagination="pagination"
        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
        @change="handleTableChange"
        :scroll="{ x: 1500 }"
      >
      </a-table>
    </a-spin>
  </a-modal>
</template>

<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JEllipsis from '@/components/jeecg/JEllipsis'
import moment from 'moment'

import { shipList } from '@api/document/advance-packingList.js'

export default {
  name: 'ReferShipmentDetailsModal',
  mixins: [JeecgListMixin],
  components: { JEllipsis, moment },

  data() {
    let ellipsis = (v, l = 20) => <j-ellipsis value={v} length={l} /> // 省略
    return {
      selectedRowKeys: [], // 勾选行
      selectedRows: {}, // 勾选项
      loading: false, // 表格加载
      // 表头
      columns: [
        {
          title: '单据号',
          dataIndex: 'documentNo',
          width: 160,
          fixed: 'left',
          className: 'replacecolor'
        },
        {
          title: '销售订单号',
          dataIndex: 'orderNumber',
          width: 120,
          fixed: 'left',
          className: 'replacecolor'
        },

        {
          title: '客户简称',
          dataIndex: 'customerAbbreviation',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '部门',
          dataIndex: 'salesDepartment',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '业务员',
          dataIndex: 'salesman',
          width: 100,
          className: 'replacecolor'
        },

        {
          title: '小po',
          dataIndex: 'smallPo',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: 'Pack Id',
          dataIndex: 'packId',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '分销点',
          dataIndex: 'distributionPoint',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '款号',
          dataIndex: 'itemNumber',
          width: 120,
          className: 'replacecolor'
        },
        //         {
        //   title: '创建时间',
        //   dataIndex: 'createTime',
        //   align: 'center',
        //   sorter: true,
        //   customRender: text => {
        //     return moment(text).format('YYYY-MM-DD')
        //   }
        // },
        {
          title: '预发货日期',
          dataIndex: 'preDeliveryDate',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '计划到货日期',
          dataIndex: 'plannedArrivalDate',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '存货名称',
          dataIndex: 'inventoryName',
          width: 220,
          className: 'replacecolor'
        },
        {
          title: '数量(合计)',
          dataIndex: 'shipmentQuantity',
          width: 100,
          className: 'replacecolor'
        },

        {
          title: '单价(销售)',
          dataIndex: 'salesUnitPrice',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '采购/委外订单号',
          dataIndex: 'purOrSubOrder',
          width: 140,
          className: 'replacecolor'
        },
        {
          title: '订单类型',
          dataIndex: 'orderType',
          width: 120,
          className: 'replacecolor'
        },
        {
          // (采购/委外单价)
          title: '工厂单价',
          dataIndex: 'factoryUnitPrice',
          width: 100,
          className: 'replacecolor'
        },
        {
          // (单证维护)
          title: '申报要素',
          dataIndex: 'declarationElements',
          width: 120,
          customRender: t => ellipsis(t),
          className: 'replacecolor'
        },

        {
          // (存货自定义项)
          title: '套装件数',
          dataIndex: 'numberOfSets',
          width: 100,
          className: 'replacecolor'
        },
        {
          title: '是否TC功能',
          dataIndex: 'isTc',
          // 0 否 、 1 是
          width: 90,
          className: 'replacecolor'
        },
        // {
        //   title: 'HScode',
        //   dataIndex: 'hsCode',
        //   width: 120,
        //   className: 'replacecolor'
        // },

        // {
        //   title: '中文品名',
        //   dataIndex: 'chineseName',
        //   width: 120,
        //   className: 'replacecolor'
        // },
        // {
        //   title: '英文品名',
        //   dataIndex: 'englishProductName',
        //   width: 120,
        //   className: 'replacecolor'
        // },
        {
          title: '成衣工厂',
          dataIndex: 'garmentFactory',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '报关单价',
          dataIndex: 'customsDeclarationUnitPrice',
          width: 120,
          className: 'replacecolor'
        }
      ],
      data: [],
      confirmLoading: false,
      referShipDetModVis: false,

      // 查询条件
      queryParam: {
        documentNo: '',
        customer: '',
        status:'',
        pageNo: ''
      },
      // 分页
      pagination: {
        // total: 0,
        // current: 0,
        // pageSize: 0
      }
    }
  },
  // 接收父组件 方法
  // props: {
  //   father: {
  //     type: Function,
  //     default: null
  //   }
  // },
  created() {
    this.getShipData()
  },
  methods: {
    //参照发运明细数据
    getShipData() {
      this.$nextTick(() => {
        shipList(this.queryParam).then(res => {
          // console.log('参照订单数据res', res)
          if (res.success) {
            this.data = [];
            if (res.result.records != null){
              this.data = res.result.records;
              this.data.map(item=>{
                if(item.isTc === "1"){
                  item.isTc = '是'
                }else if(item.isTc === "0"){
                  item.isTc = '否'
                }
              })
            }
            this.pagination = {
              total: res.result.total,
              current: res.result.current,
              pageSize: res.result.size
            }
          }
        })
      })
    },

    // 弹框确定
    onSubmit() {
      if (this.selectedRowKeys.length == 0) {
        this.$message.error('请勾选发运明细')
      } else {
        // console.log('需要传给父组件的数据', this.selectedRows)
        // bao父组件指定的传数据绑定的函数 || this.selectedRows子组件给父组件传递的数据
        var msg = "选中记录后，会清除编辑的内容。";
        if (this.selectedRowKeys.length>1){
          msg = '当前勾选了多行，只有第一行会被选中。'+msg;
        }
        this.$message.info(msg);
        this.$emit('bao', this.selectedRows)
        this.referShipDetModVis = false
        this.selectedRowKeys = []
        this.selectedRows = []
      }
    },
    // 弹框查询按钮
    searchQuery() {
      this.queryParam.pageNo = ''
      this.getShipData()
    },
    // 重置
    searchReset() {
      this.queryParam.documentNo = ''
      this.queryParam.customer = ''
      this.queryParam.status = ''
      this.queryParam.pageNo = ''
      this.getShipData()
    },

    close() {
      this.$emit('close')
      this.referShipDetModVis = false
      this.selectedRowKeys = []
      this.data = []
      this.queryParam = {}
      this.getShipData()
    },
    handleCancel() {
      this.close()
    },
    // 选中行
    onSelectChange(keys, rows) {
      this.selectedRowKeys = keys
      this.selectedRows = rows
      if (this.selectedRows.length > 1) {
        // alert('error')
        // var newOne = keys.shift()
        // this.selectedRows = newOne
        // console.log('最新选择', this.selectedRows)
        // this.$error.message('只能参照一条发运明细')
      }
    },
    handleTableChange(pagination, filters, sorter) {
      this.queryParam.pageNo = pagination.current
      this.getShipData()
    }
  },
  computed: {
    // 选中项
    rowSelection() {
      return {
        onChange: (selectedRowKeys, selectedRows) => {
          console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows)
        },
        getCheckboxProps: record => ({
          props: {
            disabled: record.title === 'Disabled User',
            // Column configuration not to be checked
            title: record.title
          }
        })
      }
    }
  }
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/overwriter.less';
/deep/ .ant-table-thead > tr > th {
  text-align: center;
  // font-weight: 700;
}

/deep/ .ant-table-tbody {
  text-align: center;
}

/deep/ th.replacecolor {
  background-color: #ccc !important;
}
</style>
