<template>
  <div class="borderless">
    <div class="customer-head">
      <div class="customer-back">
        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
                   @click="backToList">返回列表
        </el-button>
      </div>
      <div class="upper_right_button">
        <el-button type="primary"
                   size="small"
                   :loading="buttonLoading"
                   class="el-button--small-yh"
                   :disabled="!form.id"
                   @click.stop="confirmGoods">
          {{goodsDisable ? "撤回发货":"确认发货"}}
        </el-button>
        <el-button type="success"
                   size="small"
                   :loading="buttonLoading"
                   class="el-button--small-yh"
                   :disabled="true"
                   @click.stop="">复制新单
        </el-button>
        <el-button
          class="el-button--small-yh"
          type="primary"
          size="small"
          :loading="buttonLoading"
          :disabled="disabled  || goodsDisable"
          @click="editCustomer"
        >{{ form.id ? '确认修改' : '确认新增' }}
        </el-button>
      </div>
    </div>
    <div class="customer-main">
      <el-form :model="form" ref="form" label-width="130px" class="demo-ruleForm">
        <containerTitle title="基础信息"></containerTitle>
        <basic-container style="margin-bottom: 10px">
          <el-row>
            <el-col v-for="(item,index) in basicData.column" :key="index" :span="item.span?item.span:8">
              <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
                <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]" :disabled="item.disabled?true:false || goodsDisable" size="small" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
                <selectComponent v-else-if="item.prop === 'corpId'" v-model="form[item.prop]" :configuration="configuration"/>
<!--                <warehouse-select  v-else-if="item.prop === 'storageId'" v-model="form[item.prop]" :configuration="sConfiguration"></warehouse-select>-->
                <el-select v-else-if="item.prop === 'storageId'" style="width: 100%" :disabled="item.disabled?true:false || goodsDisable"  @change="warehouseChange" v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>
                  <el-option v-for="(item,index) in storageList" :key="index" :label="item.stockName" :value="item.storageId"></el-option>
                </el-select>
                <el-input type="textarea" v-else-if="(item.prop === 'deliveryRemarks')" :disabled="item.disabled?true:false || goodsDisable" v-model="form[item.prop]"   size="small" autocomplete="off" placeholder="请输入"></el-input>
                <el-input type="age" v-else v-model="form[item.prop]" :disabled="item.disabled?true:false || goodsDisable" placeholder="请输入"  size="small" autocomplete="off"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </basic-container>
        <containerTitle title="发货明细"></containerTitle>
        <basic-container style="margin-bottom: 10px">
          <avue-crud
            :option="customerContact"
            v-model="contactsForm"
            :data="contactsData"
            ref="crudContact"
            @row-save="rowSave"
            @row-click="handleRowClick"
            @row-update="rowUpdate"
            @saveColumn="saveColumn"
            @row-del="rowDel"
          >
            <template slot-scope="{row}" slot="billNo">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <el-input
                v-if="row.$cellEdit"
                v-model="row.billNo"
                style="width: 90%"
                placeholder=" "
                size="small"
                @change="bingOut(row)"
              ></el-input>
              <span v-else>{{ row.billNo }}</span>
            </template>
            <template slot-scope="{row}" slot="contractNumber">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <el-select
                v-if="row.$cellEdit"
                style="width:90% !important;"
                v-model="row.contractNumber"
                placeholder=" "
                size="small"
                clearable
                filterable
              >
                <el-option
                  style="width:90%"
                  @change="sumOrderNo(row)"
                  v-for="(item,index) in contractDic"
                  :key="index"
                  :label="item.orderNo"
                  :value="item.orderNo"
                ></el-option>
              </el-select>
              <span v-else>{{ row.contractNumber }}</span>
            </template>
            <template slot="priceCategory" slot-scope="{row,index}">
              <goods-select
                v-if="row.$cellEdit"
                v-model="row.priceCategoryNames"
                @valueName="(value) => valueName(value,row)"
                :configuration="itemConfiguration"
              >
              </goods-select>
              <span v-else>{{ row.priceCategoryNames }}</span>
            </template>
            <template slot="invoiceWeight" slot-scope="{ row }">
              <el-input
                v-if="row.$cellEdit"
                v-model="row.invoiceWeight"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
                @change="totalChange(row.invoiceWeight)"
              ></el-input>
              <span v-else>{{ row.invoiceWeight }}</span>
            </template>
            <template slot="billWeight" slot-scope="{ row }">
              <el-input
                v-if="row.$cellEdit"
                v-model="row.billWeight"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
                @input="billWeightChange(row)"
                @change="totalChange(row.billWeight)"
              ></el-input>
              <span v-else>{{ row.billWeight }}</span>
            </template>
            <template slot="price" slot-scope="{ row }">
              <el-input
                v-if="row.$cellEdit"
                v-model="row.price"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
                @input="priceChange(row)"
              ></el-input>
              <span v-else>{{ row.price }}</span>
            </template>
            <template slot="actualQuantity" slot-scope="{ row }">
              <el-input
                v-if="row.$cellEdit"
                v-model="row.actualQuantity"
                style="width: 90%"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
              ></el-input>
              <span v-else>{{ row.actualQuantity }}</span>
            </template>
            <template slot="contractAmount" slot-scope="{ row }">
              <el-input
                v-if="row.$cellEdit"
                v-model="row.contractAmount"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
              ></el-input>
              <span v-else>{{ row.contractAmount }}</span>
            </template>
            <template slot="currency" slot-scope="{ row }">
              <el-select v-model="row.currency"
                         v-if="row.$cellEdit"
                         size="small"
                         placeholder="请选择 币别"
                         @change="currencyChange(row)"
                         clearable filterable>
                <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue"  :value="item.dictValue"></el-option>
              </el-select>
              <span v-else>{{ row.currency }}</span>
            </template>
            <template slot="cntrNo" slot-scope="{ row }">
              <el-select v-if="row.$cellEdit"
                         v-model="row.cntrNo"
                         size="small"
                         placeholder="请选择"
                         @change="selectCntrNoList(row)"
                         clearable
                         filterable>
                <el-option v-for="(item,index) in cntrNoList"
                           :key="index"
                           :label="item.cntrNo"
                           :value="item.cntrNo"
                >
                </el-option>
              </el-select>
              <span v-else>{{ row.cntrNo }}</span>
            </template>
            <template slot-scope="{row,index}" slot="menu">
              <el-button
                type="text"
                size="small"
                :disabled="goodsDisable"
                @click="rowCell(row,index)"
              >{{ row.$cellEdit ? '保存' : '修改' }}
              </el-button>
              <el-button
                type="text"
                size="small"
                :disabled="goodsDisable"
                @click="rowDel(row,index)"
              >删除
              </el-button>
            </template>
            <template slot="menuLeft" slot-scope="{size}">
              <el-button type="primary"
                         icon="el-icon-plus"
                         size="small"
                         :disabled="goodsDisable"
                         @click="openMarketDialog"
              >导入明细
              </el-button>
            </template>
          </avue-crud>
        </basic-container>
        <containerTitle title="附件上传"></containerTitle>
        <basic-container style="margin-bottom: 40px">
          <avue-crud
            :option="upLoadOption"
            v-model="upLoadForm"
            :data="upLoadData"
            @row-save="upLoadSave"
            @row-update="upLoadUpdate"
            @row-del="upLoadDel"
          ></avue-crud>
        </basic-container>
      </el-form>
    </div>

    <el-dialog
      title="导入销售"
      append-to-body
      class="el-dialogDeep"
      :visible.sync="marketDialog"
      width="60%"
      :close-on-click-modal="false"
      :destroy-on-close="true"
      :modal-append-to-body='false'
      :close-on-press-escape="false"
      v-dialog-drag>
      <market-detail
        :marketParams="marketParams"
        @closeFun="!marketDialog"
        @importMarket="importMarket"
        @close="closeMarkeDialog"
        systemType="JK"
      >
      </market-detail>
    </el-dialog>
  </div>
</template>

<script>
import customerContact from "./config/customerContact.json"
import {detailInvoiceList,
  submitInvoiceList,
  removeGoodsItem,
  confirmGoods,
  cancelGoods
} from "@/api/importTrade/invoice"
import {getDeptLazyTree } from "@/api/basicData/basicFeesDesc";
import commodity from "./config/commodity.json"
import {corpsbank, getList} from "@/api/basicData/deliveryNotice"
import upLoadOption from "../../exportTrade/purchaseContract/config/uploadList.json";
import { contrastObj,contrastList } from "@/util/contrastData";
import {getStorage} from "@/api/importTrade/receipt"
import { getListOrgOrderNo } from "@/api/importTrade/salesContract"
import  marketDetail from "@/components/procurement/market";
import {selectJKGoodsNum} from "@/api/basicData/inventoryAccount"
import _ from "lodash";
import  {generateShipment} from "@/api/importTrade/salesContract"

export default {
  name: "detailsPageEdit",
  props: {
    detailData: {
      type: Object
    }
  },
  components: {
    marketDetail,
  },
  data() {
    return {
      form: {},
      buttonLoading: false,
      disabled: false,
      goodsDisable: false,
      marketDialog: false,
      customerContact: customerContact,
      contactsForm: {},
      marketParams:{},
      contactsData: [],
      currencyDic:[],
      storageIdDic: [],
      contractDic: [],
      creditList:[],
      cntrNoList:[],
      storageList:[],
      selectKind: -1,
      configuration: {
        multipleChoices: false,
        multiple: false,
        disabled: false,
        searchShow: true,
        collapseTags: false,
        placeholder: '请点击右边按钮选择',
        dicData: []
      },
      sConfiguration: {
        multipleChoices: false,
        multiple: false,
        disabled: false,
        searchShow: true,
        collapseTags: false,
        placeholder: '请点击右边按钮选择',
        dicData: []
      },
      itemConfiguration: {
        multipleChoices: false,
        multiple: false,
        disabled: false,
        searchShow: true,
        collapseTags: false,
        placeholder: '请点击右边按钮选择',
        dicData: []
      },
      basicData: {
        column: [
          {
            label: '系统号',
            prop: 'sysNo',
            disabled: true,
          },
          {
            label: '客户名称',
            prop: 'corpId',
            span: 16,
            type: 'component',
            rules: [
              {
                required: true,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '合同号',
            prop: 'orderNo',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          }, {
            label: '仓库名称',
            prop: 'storageId',
            rules: [
              {
                required: true,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '收货日期',
            prop: 'businessDate',
            type: 'datetime',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '收货人',
            prop: 'arrivalContact',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '收货电话',
            prop: 'arrivalTel',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '收货地址',
            prop: 'arrivalAddress',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '业务员',
            prop: 'saleman',
            dicData: [],
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '发票重量',
            prop: 'invoiceWeight',
            disabled: true,
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '码单重量',
            prop: 'billWeight',
            disabled: true,
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '备注',
            prop: 'deliveryRemarks',
            span: 24,
            mock: {
              type: 'county'
            }
          }
        ]
      },
      //上传文件
      upLoadOption: upLoadOption,
      upLoadData: [],
      upLoadForm: {},
      commodityData: false,
      tableData: [],
      //新旧值对比
      oldForm: {},
      oldContactsData: [],
      oldUpLoadData: [],
    }
  },
  async created() {
    // this.customerContact = await this.getColumnData(this.getColumnName(44), customerContact);
    //币别
    this.getWorkDicts("currency").then(res =>{
      this.currencyDic = res.data.data
    })
    getStorage().then(res => {
      this.storageIdDic = res.data
    })
    if (this.detailData.id) {
      this.buttonLoading = true;
      let id = this.detailData.id.replace(/\"/g, "")
      detailInvoiceList(id).then(res => {
        this.form = res.data.data;
        this.oldForm = Object.assign({}, res.data.data);
        this.goodsDisable = res.data.data.deliveryStatus === "已发货" ? true : false
        this.configuration.dicData = this.form.corpName
        if (this.form.deliveryItemsList) {
          this.contactsData = this.form.deliveryItemsList
          this.oldContactsData = this.deepClone(this.form.deliveryItemsList)
        }
        if (this.form.deliveryFilesList) {
          this.upLoadData = this.form.deliveryFilesList
          this.oldUpLoadData = this.deepClone(this.form.deliveryFilesList)
        }
      }).finally(() => {
        this.buttonLoading = false
      })
    }
    if (this.detailData.form) {
      this.buttonLoading = true;
      generateShipment(this.detailData.form).then(res=>{
        this.form = res.data.data

        this.$set(this.form,"saleman",this.form.salesName)
        //是否计算合同号
        this.form.id = null
        this.form.sysNo = null
        this.form.orderItemsList.forEach((item, index) => {

          item.srcId = item.id
          item.contractNumber = item.orgOrderNo  //合同号
          item.orgOrderNo = this.form.orgOrderNo
          item.contractAmount = item.amount
          item.currency = this.form.currency
          item.exRate = this.form.exchangeRate
          if (item.actualQuantity !== 0) {   //如果发过货
            item.actualQuantity = _.subtract(item.orderQuantity, item.actualQuantity); //发货件数 =  总件数 - 已发件数
          } else {
            item.actualQuantity = item.orderQuantity;
          }
          // this.checkCntrNoList(item)
            getListOrgOrderNo(item.billNo,item.contractNumber,item.priceCategory).then(res => {
              this.creditList = res.data
              this.storageList = this.creditList.map(item =>{
                let params ={
                  storageId:item.storageId,
                  stockName:item.stockName
                }
                return params
              })
              this.cntrNoList = this.creditList.map(item =>{
                let params ={
                  cntrNo:item.cntrNo,
                }
                return params
              })
            })
          delete item.orderQuantity
          delete item.id
        })
        this.contactsData = this.form.orderItemsList
        this.sumOrderNo();
        delete this.form.orderItemsList
      }).finally(()=>{
        this.buttonLoading = false
      })
    }
  },
  methods: {
    //币别选择
    currencyChange(row){
      if(row.currency == "CNY"){
        this.$set(row,"exRate",1)
      }else if(row.currency == "USD"){
        this.$set(row,"exRate",6.3686)
      }else{
        this.$set(row,"exRate",7.1749)
      }
    },
    //货品物种
    valueName(value, row) {
      this.$set(row, "priceCategory", value)
    },
    // 关闭导入销售弹窗
    closeMarkeDialog() {
      this.marketDialog = false
    },
    //选择仓库  带出库存
    warehouseChange() {
      this.contactsData.forEach(item => {
        this.selectInventory(item);
      })
    },
    //合同号合计
    sumOrderNo(row) {
      //拿到所有明细合同号 去重加逗号放到主表合同号
      const contractNumberList = this.contactsData.map(item => {
         return  item.contractNumber
      })
      this.$set(this.form, 'orderNo', Array.from(new Set(contractNumberList)).join(","))
      if (row) {
        this.selectInventory(row)
      }
    },
    //码单合计
    totalChange() {
      let invoiceList = this.contactsData.map(item => {
        if (item.invoiceWeight) {
          return parseFloat(item.invoiceWeight);
        } else return 0
      });
      let billList = this.contactsData.map(item => {
        if (item.billWeight) {
          return parseFloat(item.billWeight);
        } else return 0
      });
      this.$set(this.form, "invoiceWeight", invoiceList.reduce((n, m) => n + m))
      this.$set(this.form, "billWeight", billList.reduce((n, m) => n + m))
    },
    //提单号带出合同号
    bingOut(row) {
      getListOrgOrderNo(row.billNo,this.form.storageId).then(res => {
        if (res.data) {
          this.contractDic = res.data;
          row.contractNumber = res.data[0].orderNo
        }
      }).catch(() => {
        row.contractNumber = ''
      })
      this.sumOrderNo(row);
      this.selectInventory(row)
    },
    // //查询 箱号 仓库list
    // checkCntrNoList(item){
    //   getListOrgOrderNo(item.billNo,item.contractNumber,item.priceCategory).then(res => {
    //     this.form.creditList = res.data
    //     this.form.storageList = this.creditList.map(item =>{
    //       let params ={
    //         storageId:item.storageId,
    //         stockName:item.stockName
    //       }
    //       return params
    //     })
    //     item.cntrNoList = this.creditList.map(item =>{
    //       let params ={
    //         cntrNo:item.cntrNo,
    //       }
    //       return params
    //     })
    //   })
    // },
    //选择箱号  或者 仓库
    selectCntrNoList(){
      this.contactsData.forEach(item =>{
        if(item.cntrNo && !this.form.storageId){
          this.storageList =   this.creditList.map(i =>{
            if(i.cntrNo == item.cntrNo){
              let params = {
                storageId:i.storageId,
                stockName:i.stockName
              }
              return params
            }
          })
        }else if(!item.cntrNo && this.form.storageId){
          this.cntrNoList =   this.creditList.map(i =>{
            if(i.storageId == item.storageId){
              return i.cntrNo
            }
          })
        }else{
          this.selectInventory(item)
        }
      })
    },
    //查询库存
    selectInventory(row) {
      if (row.billNo && row.contractNumber && row.priceCategory && row.cntrNo && this.form.storageId) {
        const params = {
          billNo: row.billNo,
          contractNumber: row.contractNumber,
          priceCategory: row.priceCategory,
          storageId: this.form.storageId,
          cntrNo: row.cntrNo
        }
        selectJKGoodsNum(params).then(res => {
          if(res.data.data){
            this.$set(this.contactsData[row.$index],"inventoryNumber",res.data.data.inQuantity)
            this.$set(this.contactsData[row.$index],"inWeight",res.data.data.inWeight)
          }else {
            this.$set(this.contactsData[row.$index],"inventoryNumber",0.00)
            this.$set(this.contactsData[row.$index],"inWeight",0.00)
          }
        })
      }
    },
    // actualQuantityChange(row){
    //   if(row.singleton){
    //     const _sing =   row.singleton
    //     if( _sing.BQ !== 0){  //如果有值并且不为空 计算码单与发票
    //       row.billWeight = _.multiply(_sing.BQ,row.actualQuantity)
    //     }
    //     if( _sing.IQ !== 0){
    //       row.invoiceWeight = _.multiply(_sing.IQ,row.actualQuantity)
    //       this.invoiceWeightChange(row)  //发票改变合同
    //     }
    //     this.totalChange()
    //   }
    // },
    //单价
    priceChange(row) {
      if (!row.price) {
        row.price = "";
        row.contractAmount = 0
      } else {
        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
      }
    },
    billWeightChange(row) {
      if (!row.invoiceWeight) {
        row.billWeight = "";
        row.contractAmount = 0
      } else {
        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
      }
    },
    //导入销售明细
    importMarket(list) {
      list.forEach(item => {
        item.contractNumber = item.orgOrderNo;
        item.contractAmount = item.amount;
        item.actualQuantity = item.orderQuantity;
        // item.singleton = {
        //   BQ :  item.billWeight && item.orderQuantity?_.divide(item.billWeight, item.orderQuantity):0,
        //   IQ : item.invoiceWeight && item.orderQuantity?_.divide(item.invoiceWeight, item.orderQuantity):0
        // }
        this.selectInventory(item);
        delete item.id
        this.$refs.crudContact.rowCellAdd(item);
      })

      this.totalChange();  //计算码单 发票
      this.sumOrderNo();   //合并合同号
      this.marketDialog = false;
    },
    //选择货物品种
    choice(row) {
      this.dialogVisible = true;
      this.selectKind = row.$index;
    },
    //新增商品信息保存触发
    rowSave(row, done, loading) {
      console.log(row)
      console.log(this.contactsData)
      // this.contactsData.push(row)
      done()
    },
    //点击行可编辑
    handleRowClick(row, event, column) {

    },
    //商品编辑
    rowCell(row, index) {
      console.log(row)
      this.$refs.crudContact.rowCell(row, index)
    },
    //修改商品信息触发
    rowUpdate(row, index, done, loading) {
      done(row);
    },
    //删除商品信息触发
    rowDel(row, index, donerowDel) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        //商品判断是否需要调用删除接口
        if (row.id) {
          removeGoodsItem(row.id).then(res => {
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            this.contactsData.splice(index, 1);
          })
        } else {
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.contactsData.splice(index, 1);
        }
      }).finally(()=>{
        this.totalChange()
      })
    },
    confirmGoods() {
      if (contrastObj(this.form, this.oldForm) || contrastList(this.contactsData, this.oldContactsData)
        || contrastList(this.upLoadData, this.oldUpLoadData)
      ) {
        this.$confirm("请先保存在进行操作!", {
          confirmButtonText: "保存",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          this.editCustomer()
        })
      } else {
        if (!this.goodsDisable) {
          this.$confirm("是否确认发货?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            this.buttonLoading = true;
            this.form.deliveryItemsList = this.contactsData;
            confirmGoods(this.form).then(res => {
              if (res.data.success) {
                this.$message.success("发货成功!")
                this.form = res.data.data;
                this.oldForm = Object.assign({}, res.data.data);
                this.goodsDisable = res.data.data.deliveryStatus === "已发货" ? true : false;
                if (this.form.deliveryItemsList) {
                  this.contactsData = this.form.deliveryItemsList
                  this.oldContactsData = this.deepClone(this.form.deliveryItemsList)
                }
                if (this.form.deliveryFilesList) {
                  this.upLoadData = this.form.deliveryFilesList
                  this.oldUpLoadData = this.deepClone(this.form.deliveryFilesList)
                }
              }
            })
          }).finally(() => {
            this.buttonLoading = false
          })
        } else {
          this.$confirm("是否撤回发货?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            this.buttonLoading = true;
            this.form.deliveryItemsList = this.contactsData;
            cancelGoods(this.form).then(res => {
              if (res.data.success) {
                this.$message.success("撤销成功!")
                this.form = res.data.data;
                this.oldForm = Object.assign({}, res.data.data);
                this.goodsDisable = res.data.data.deliveryStatus === "已发货" ? true : false;
                if (this.form.deliveryItemsList) {
                  this.contactsData = this.form.deliveryItemsList
                  this.oldContactsData = this.deepClone(this.form.deliveryItemsList)
                }
                if (this.form.deliveryFilesList) {
                  this.upLoadData = this.form.deliveryFilesList
                  this.oldUpLoadData = this.deepClone(this.form.deliveryFilesList)
                }
              }
            })
          }).finally(() => {
            this.buttonLoading = false
          })
        }
      }
    },
    //修改提交触发
    editCustomer(status) {
      this.$refs["form"].validate((valid) => {
        for (let i = 0; i < this.contactsData.length; i++) {
          if (this.contactsData[i].billNo === "") {
            return this.$message.error(`请输入第${i + 1}行的提单号`);
          }
          if (this.contactsData[i].contractNumber === "") {
            return this.$message.error(`请输入第${i + 1}行的合同号`);
          }
          if (this.contactsData[i].priceCategory === "") {
            return this.$message.error(`请输入第${i + 1}行的货物品种`);
          }
          if (this.contactsData[i].actualQuantity === "") {
            return this.$message.error(`请输入第${i + 1}行的件数`);
          }
        }
        this.form.billNo = this.contactsData.map(item => {
          return item.billNo
        }).join(",")
        if (valid) {
          let submitDto = {
            ...this.form,
            deliveryItemsList: this.contactsData
          };
          this.buttonLoading = true
          submitInvoiceList(submitDto).then(res => {
            if (res.data.success) {
              this.$message.success("操作成功!")
              detailInvoiceList(res.data.data.id).then(res => {
                this.form = res.data.data;
                this.oldForm = Object.assign({}, res.data.data);
                this.goodsDisable = res.data.data.deliveryStatus === "已发货" ? true : false;
                if (this.form.deliveryItemsList) {
                  this.contactsData = this.form.deliveryItemsList
                  this.oldContactsData = this.deepClone(this.form.deliveryItemsList)
                }
                if (this.form.deliveryFilesList) {
                  this.upLoadData = this.form.deliveryFilesList
                  this.oldUpLoadData = this.deepClone(this.form.deliveryFilesList)
                }
              })
            }
          }).finally(() => {
            this.buttonLoading = false
          })
          if (status === true) {
            this.$emit("goBack");
          }
        } else {
          return false;
        }
      });
    },
    //打开导入销售
    openMarketDialog(){
      this.marketDialog = true
      if(this.contactsData.length !=0){
        this.marketParams = {
          billNo:this.contactsData[0].billNo,
          contractNumber:this.contactsData[0].contractNumber
        }
      }
    },
    //上传文件保存
    upLoadSave(row, done, loading) {
      this.upLoadData.push(row)
      done()
    },
    //修改附件上传触发
    upLoadUpdate(row, done) {
      done(row);
    },
    //删除附件上传触发
    upLoadDel(row, index,) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        if (row.id) {
          corpsbank(row.id).then(res => {
            if (res.data.success) {
              this.$message({
                type: "success",
                message: "操作成功!"
              });
              this.bankOfDepositData.splice(index, 1);
            }
          })
        } else {
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.bankOfDepositData.splice(index, 1);
        }
      })
    },
    //点击商品明细选择触发
    commodityChoice(row) {
      this.dialogVisible = !this.dialogVisible
      this.commodityData = true
      this.choiceIndexT = row.$index
    },
    //商品新增触发
    commoditySelection() {
      // this.dialogVisible = !this.dialogVisible
      // this.commodityData = false
    },
    //返回列表
    backToList() {
      if (contrastObj(this.form, this.oldForm) || contrastList(this.contactsData, this.oldContactsData)
        || contrastList(this.upLoadData, this.oldUpLoadData)
      ) {
        this.$confirm("是否保存当前页面？", "提示", {
          confirmButtonText: "保存",
          cancelButtonText: "取消",
          type: "warning",
        }).then(() => {
          this.editCustomer(true)
        }).catch(() => {
          this.$emit("goBack");
        })
      } else {
        this.$emit("goBack");
      }
    },
    //列保存触发
    async saveColumn() {
      const inSave = await this.saveColumnData(
        this.getColumnName(44),
        this.customerContact
      );
      if (inSave) {
        this.$message.success("保存成功");
        //关闭窗口
        this.$refs.crudContact.$refs.dialogColumn.columnBox = false;
      }
    },
  },
}
</script>

<style lang="scss" scoped>

.back-icon {
  line-height: 64px;
  font-size: 20px;
  margin-right: 8px;
}

::v-deep .el-form-item {
  margin-bottom: 0;
}

.el-dialogDeep {
  ::v-deep .el-dialog {
    margin: 1vh auto 0 !important;
    padding-bottom: 10px !important;

    .el-dialog__body, .el-dialog__footer {
      padding-bottom: 0 !important;
      padding-top: 0 !important;
    }
  }
}
.required_fields{
  color: #F56C6C;
  display:inline-block;
  width: 7%
}
.upper_right_button{
  display: flex;
  position: fixed;
  right: 12px;
  top: 47px;
}
::v-deep .el-form-item__content{
  line-height: 32px;
}
</style>
