<template>
  <!-- 新增发运明细 -->
  <div id="AddShipDetDrawer">
    <a-drawer
      title="新增发运明细"
      width="89%"
      placement="right"
      :closable="true"
      :visible="visible"
      @close="handleCancel"
    >
      <!-- 主表信息 填写-->
      <a-card :bordered="true">
        <div class="table-page-search-wrapper">
          <!-- :rules="validatorRules" -->
          <a-form-model layout="inline" ref="form" :model="addShipDet">
            <a-row :gutter="24">
              <a-col :md="6" :sm="8">
                <!-- required必填项 disabled 禁用  -->
                <a-form-model-item label="单据号" prop="documentNo">
                  <a-input placeholder="请输入单据号" v-model="addShipDet.documentNo"></a-input>
                </a-form-model-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-model-item label="单据日期" prop="documentDate">
                  <a-date-picker
                    placeholder="请选择单据日期"
                    :format="dateFormat"
                    style="width:100%;"
                    v-model="addShipDet.documentDate"
                  />
                </a-form-model-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-model-item label="客户" prop="customer">
                  <a-input placeholder="请输入客户" v-model="addShipDet.customer"></a-input>
                </a-form-model-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-model-item label="预发货日期" prop="preDeliveryDate">
                  <a-date-picker
                    placeholder="请选择预发货时间"
                    :format="dateFormat"
                    style="width:100%;"
                    v-model="addShipDet.preDeliveryDate"
                  />
                </a-form-model-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-model-item label="预完工日期" prop="preCompletionDate">
                  <a-date-picker
                    placeholder="请选择预完工日期"
                    :format="dateFormat"
                    style="width:100%;"
                    v-model="addShipDet.preCompletionDate"
                  />
                </a-form-model-item>
              </a-col>

              <a-col :md="18" :sm="18">
                <!-- 'U8 备注' -->
                <a-form-model-item label="备注" prop="memo">
                  <a-input placeholder="请输入备注" v-model="addShipDet.memo"></a-input>
                </a-form-model-item>
              </a-col>
            </a-row>
          </a-form-model>
        </div>
      </a-card>

      <!--  参照订单数据 増行-->
      <a-card :bordered="true" style="margin:10px 0">
        <div class="table-operator">
          <a-button type="primary" @click.stop="referOrderDataOpen" icon="ordered-list">参照订单数据</a-button>
          <a-button type="primary" @click.stop="handleAddColumn" icon="plus" style="margin-left: 20px">増行</a-button>
        </div>

        <!-- 子表  :model="form"  rowKey="id" ,y:800 -->
        <a-spin :spinning="confirmLoading">
          <a-form-model ref="formRef">
            <a-table
              :loading="loading"
              v-if="syShippingDetailsItemList"
              bordered
              :rowKey="record => record.id"
              :columns="columns"
              :data-source="syShippingDetailsItemList"
              :pagination="false"
              :scroll="{ x: 1500 }"
              size="small"
            >
              <!-- 款号 输入框 :rules="rules.itemNumber" -->
              <template slot="itemNumber" slot-scope="text, record, index">
                <a-form-model-item prop="itemNumber">
                  <a-input style="width:100%" type="text" v-model="record.itemNumber" />
                </a-form-model-item>
              </template>

              <!-- 发货数量 :rules="rules.shipQuantity"-->
              <template slot="shipQuantity" slot-scope="text, record, index">
                <a-form-model-item prop="shipmentQuantity">
                  <a-input style="width:100%" type="text" v-model="record.shipQuantity" />
                </a-form-model-item>
              </template>

              <!-- 是否TC功能 :rules="rules.isTC"-->
              <!-- isTc ' 是否 tc 功能 0 否 1 是', -->
              <template slot="isTC" slot-scope="text, record, index">
                <a-form-model-item prop="isTc">
                  <a-select v-model="record.isTC">
                    <a-select-option value="">请选择</a-select-option>
                    <a-select-option :value="1">是</a-select-option>
                    <a-select-option :value="0">否</a-select-option>
                  </a-select>
                </a-form-model-item>
              </template>

              <!-- 物料成分 :rules="rules.materialComposition"-->
              <template slot="materialComposition" slot-scope="text, record, index">
                <a-form-model-item prop="materialComposition">
                  <a-input style="width:100%" type="text" v-model="record.materialComposition" />
                </a-form-model-item>
              </template>

              <!-- 操作 -->
              <template slot="operationSlot" slot-scope="text, record, index">
                <a-popconfirm
                  v-if="syShippingDetailsItemList.length"
                  title="确定删除吗?"
                  @confirm="handleDelete(record)">
                  <a href="javascript:void(0);" style="color:red;">删除</a>
                </a-popconfirm>

                <a-divider type="vertical" />

                <a @click="copy(record)">复制</a>
              </template>
            </a-table>
          </a-form-model>
        </a-spin>
      </a-card>

      <!-- 页面底部保存取消 -->
      <div
        :style="{
          position: 'absolute',
          right: 0,
          bottom: 0,
          width: '100%',
          borderTop: '1px solid #e9e9e9',
          padding: '10px 16px',
          background: '#fff',
          textAlign: 'right',
          zIndex: 1
        }"
      >
        <a-popconfirm title="确定放弃新增？" @confirm="handleCancel" okText="确定" cancelText="取消">
          <a-button :style="{ marginRight: '8px' }">取消</a-button>
        </a-popconfirm>
        <a-button type="primary" @click="addSave">
          保存
        </a-button>
      </div>
    </a-drawer>

    <!-- 参照订单数据弹框 -->
    <referOrderData-modal ref="referOrderDataModal" @bao="getSon" @ok="referOrderDataOk"></referOrderData-modal>
  </div>
</template>

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

import ReferOrderDataModal from '@views/shipment-details/referOrderDataModal.vue'

import { addShipmentList } from '@api/document/shipmentList'

export default {
  name: 'AddShipDetDrawer', // 新增 发运明细 抽屉
  mixins: [JeecgListMixin],
  components: { JEllipsis, ReferOrderDataModal, moment }, // 参照订单数据 弹框
  data() {
    let ellipsis = (v, l = 20) => <j-ellipsis value={v} length={l} />
    return {
      id: '',
      // 表头
      columns: [
        {
          title: '账套',
          dataIndex: 'pkOrg',
          width: 80,
          fixed: 'left',
          className: 'replacecolor'
        },
        {
          title: '订单号',
          dataIndex: 'orderNumber',
          width: 120,
          fixed: 'left',
          className: 'replacecolor'
        },
        {
          title: '款号',
          dataIndex: 'itemNumber',
          scopedSlots: { customRender: 'itemNumber' },
          fixed: 'left',
          width: 180,
          className: 'replacecolor'
        },
        // {
        //   title: '创建时间',
        //   dataIndex: 'createTime',
        //   align: 'center',
        //   sorter: true,
        //   customRender: text => {
        //     return moment(text).format('YYYY-MM-DD')
        //   }
        // },
        {
          title: '订单日期',
          dataIndex: 'orderDate',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '业务类型',
          dataIndex: 'businessTypeText',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '客户订单',
          dataIndex: 'customerOrderNumber',
          width: 120,

          className: 'replacecolor'
        },
        {
          title: '小po',
          dataIndex: 'smallPo',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: 'Pack Id',
          dataIndex: 'packId',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '订单数据',
          dataIndex: 'orderData',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '订单剩余数量',
          dataIndex: 'orderRemainingQuantity',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '发货数量',
          dataIndex: 'shipQuantity',
          scopedSlots: { customRender: 'shipQuantity' },
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '是否TC功能',
          dataIndex: 'isTC',
          width: 90,
          scopedSlots: { customRender: 'isTC' },
          className: 'replacecolor'
        },
        {
          title: '物料成分',
          dataIndex: 'materialComposition',
          scopedSlots: { customRender: 'materialComposition' },
          width: 140,
          className: 'replacecolor'
        },

        {
          title: '销售类型',
          dataIndex: 'salesTypeText',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '客户简称',
          dataIndex: 'customerAbbreviation',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '客户名称',
          dataIndex: 'customerName',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '汇率',
          dataIndex: 'exchangeRate',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '整单合计',
          dataIndex: 'wholeOrderTotal',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '销售部门',
          dataIndex: 'salesDepartment',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '业务员',
          dataIndex: 'salesman',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '币种',
          dataIndex: 'currencyValue',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '品牌方',
          dataIndex: 'brandSide',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '第三方',
          dataIndex: 'thirdParty',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '定金比例(%)',
          dataIndex: 'depositRatio',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '定金',
          dataIndex: 'deposit',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '协同路线',
          dataIndex: 'collaborativeRoute',
          width: 120,
          className: 'replacecolor'
        },

        {
          title: '付款条件',
          dataIndex: 'termOfPayment',
          width: 160,
          customRender: t => ellipsis(t),
          className: 'replacecolor'
        },
        {
          title: '最终客户',
          dataIndex: 'endCustomer',
          width: 120,
          className: 'replacecolor'
        },
        {
          title: '订单备注',
          dataIndex: 'orderRemarks',
          width: 160,
          customRender: t => ellipsis(t),
          className: 'replacecolor'
        },

        {
          title: '价格备注',
          dataIndex: 'priceRemarks',
          width: 160,
          customRender: t => ellipsis(t),
          className: 'replacecolor'
        },
        {
          title: '订单变更说明',
          dataIndex: 'orderChangeDescription',
          width: 160,
          customRender: t => ellipsis(t),
          className: 'replacecolor'
        },
        {
          title: '操作',
          dataIndex: 'operation',
          scopedSlots: { customRender: 'operationSlot' },
          width: 160,
          fixed: 'right',
          className: 'replacecolor'
        }
      ],
      msgFormSon: 'test', // 子组件传来数据的变量
      syShippingDetailsItemList: [], // 子表数据
      addShipDet: {}, // 新增发运明细
      visible: false,
      confirmLoading: false,
      dateFormat: 'YYYY-MM-DD',
      state: '0', // 单据状态初始未【仅保存】
      pushState: '0' // 推送状态初始未【仅保存】
      // validatorRules: {
      //   documentNo: [{ required: true, message: '单据号不能为空', trigger: 'blur' }], 单据号
    }
  },
  // 接收父组件查询方法
  props: {
    fatherList: {
      type: Function,
      default: null
    }
  },
  created() {},

  methods: {
    getSon(val) {
      console.log('勾选订单数据', val)
      this.msgFormSon = val
      this.syShippingDetailsItemList = this.msgFormSon
      console.log('新增页 子表信息', this.syShippingDetailsItemList)
    },
    // 参照订单数据
    referOrderDataOpen() {
      this.$refs.referOrderDataModal.referOrderDataModVis = true
      console.log('点击参照订单数据')
    },
    // 新增 保存
    addSave() {
      var newObj = {} // 新增对象
      newObj.documentNo = this.addShipDet.documentNo // 单据号
      newObj.documentDate = this.addShipDet.documentDate.format('YYYY-MM-DD') // 单据日期
      newObj.customer = this.addShipDet.customer
      newObj.preDeliveryDate = this.addShipDet.preDeliveryDate.format('YYYY-MM-DD') // 预发货日期
      newObj.preCompletionDate = this.addShipDet.preCompletionDate.format('YYYY-MM-DD') // 预完工日期
      newObj.memo = this.addShipDet.memo // U8系统适用
      newObj.syShippingDetailsItemList = this.syShippingDetailsItemList // 子表信息赋值
      // 单据状态
      // newObj.state = this.state
      // newObj.pushState = this.pushState

      // 必须选择子表 --- 参照订单数据
      if (newObj.syShippingDetailsItemList.length == 0) {
        this.$message.error('请选择参照订单数据')
      } else {
        addShipmentList(newObj).then(res => {
          if (res.success) {
            this.$message.success('新增成功')
            console.log('新增的对象', newObj)
            this.close()
            //清空信息
            newObj = {}
            newObj.syShippingDetailsItemList = []
            this.fatherList() // 调用父组件 查询方法
            // this.msgFormSon = {}  清空子表信息
            console.log('空')
          }
        })
      }
    },

    // 増行
    handleAddColumn() {
      console.log('増行')
      const addrow = {
        accountSet: '',
        documentNo: '',
        itemNumber: '',
        orderDate: '',
        businessType: '',
        customerOrder: '',
        smallPo: '',
        packId: '',
        orderData: '',
        orderRemaQuantity: '',
        shipQuantity: '',
        isTC: '',
        materialComposition: '',
        saleType: '',
        customerShortName: '',
        customerName: '',
        exchangeRate: '',
        wholeSingleCombined: '',
        salesDepartment: '',
        salesman: '',
        currency: '',
        brand: '',
        thirdParty: '',
        depositRate: '',
        deposit: '',
        collaborativeRoute: '',
        paymentClause: '',
        finalCustomer: '',
        orderNote: '',
        priceNote: '',
        orderChangeDesc: '',
        operation: ''
      }
      this.syShippingDetailsItemList.push(addrow)
    },
    // --------------------------------------
    // 操作 删除
    handleDelete(record) {
      console.log('record', record)
      console.log('删除该项订单数据', record.orderNumber)
      return this.syShippingDetailsItemList.splice(record)
    },
    // 操作 复制
    copy(record) {},
    // --------------------------------------
    // 抽屉 取消
    handleCancel() {
      this.close()
    },

    // --------------------------------------
    close() {
      this.$emit('close')
      this.visible = false
      this.addShipDet = {}
      this.syShippingDetailsItemList = []
    },

    // 参照订单数据弹框 ok-------------------------------------
    referOrderDataOk() {
      console.log('参照订单数据弹框确定')
      this.$refs.referOrderDataModal.referOrderDataModVis = false
    }
  },
  computed: {},
  mounted() {}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.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;
// }

// 抽屉里的card样式
/deep/ .ant-drawer-content {
  background-color: #f0f2f5;
}
/deep/ .ant-drawer-body {
  padding: 10px;
}

// 子表下拉显示
/deep/ .ant-card-body {
  margin-bottom: 50px;
}
</style>
