<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"
                   v-if="viewDisabled"
                   class="el-button--small-yh "
                   :loading="buttonLoading"
                   @click.stop="openEdit()">编辑
        </el-button>
        <el-button type="primary"
                   size="small"
                   class="el-button--small-yh"
                   :loading="buttonLoading"
                   :disabled="!form.id || viewDisabled"
                   @click.stop="confirmReceipt">
          {{receiptDisable ?"撤销收货":"确认收货"}}
        </el-button>

        <el-dropdown style="padding: 0 8px;line-height: 0">
          <el-button
            type="success"
            :loading="buttonLoading"
            :disabled="!form.id || viewDisabled"
            size="small"
          >
            业务处理<i class="el-icon-arrow-down el-icon--right"></i>
          </el-button>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item
              :loading="buttonLoading"
              :disabled="!form.id  || viewDisabled"
              @click.native="createData()">创建单据
            </el-dropdown-item>
            <el-dropdown-item
              :loading="buttonLoading"
              :disabled="!form.id  || viewDisabled"
              @click.native="copyData()">复制单据
            </el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>

        <el-button
          class="el-button--small-yh"
          type="primary"
          size="small"
          :disabled="disabled || receiptDisable || viewDisabled"
          :loading="buttonLoading"
          @click="editCustomer"
        >保存数据
        </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="receiptDisable || viewDisabled" size="small" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
                <crop-select
                  v-else-if="item.prop === 'corpId'"
                  v-model="form[item.prop]"
                  corpType="GYS"
                  :disabled="viewDisabled || receiptDisable"
                  style="width: 100%"
                ></crop-select>
                <user-com
                  v-else-if="item.prop === 'arrivalContact'"
                  :disabled="receiptDisable || viewDisabled"
                  v-model="form[item.prop]"
                  style="width: 100%"
                ></user-com>
                <user-com
                  v-else-if="item.prop === 'saleman'"
                  :disabled="receiptDisable || viewDisabled"
                  v-model="form[item.prop]"
                  style="width: 100%"
                ></user-com>
                <el-select v-else-if="item.prop === 'storageId'" style="width: 100%" :disabled="receiptDisable || viewDisabled" v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>
                  <el-option v-for="(item,index) in storageIdDic" :key="index" :label="item.cname " :value="item.id"></el-option>
                </el-select>
                <el-input type="textarea" v-else-if="(item.prop === 'deliveryRemarks')" v-model="form[item.prop]"  :disabled="receiptDisable || viewDisabled" size="small" autocomplete="off" placeholder="请输入"></el-input>
                <el-input v-else v-model="form[item.prop]" size="small" :disabled="item.disabled?true:false || receiptDisable || viewDisabled" placeholder="请输入" 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"
            :cell-style="cellStyle"
            @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%"
                  v-for="(item,index) in contractDic"
                  :key="index"
                  :label="item.orderNo"
                  @change="sumOrderNo(row)"
                  :value="item.orderNo"
                ></el-option>
              </el-select>
              <span v-else>{{ row.contractNumber }}</span>
            </template>
            <template slot="priceCategory" slot-scope="{row,index}">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <goods-select
                style="width:90% !important;"
                v-if="row.$cellEdit"
                v-model="row.priceCategoryNames"
                @valueName="(value) => valueName(value,row)"
                :configuration="itemConfiguration"
              >
                <!-- @valueName="valueName($event,row)"   保留入参情况下，自定义参数-->
              </goods-select>
              <span v-else>{{ row.priceCategoryNames }}</span>
            </template>
            <template slot="cntrNo" slot-scope="{ row }">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <el-input
                style="width:90%"
                v-if="row.$cellEdit"
                v-model="row.cntrNo"
                placeholder="请输入"
                size="small"
              ></el-input>
              <span v-else>{{ row.cntrNo }}</span>
            </template>
            <template slot="billWeight" slot-scope="{ row }">
              <el-input
                style="width:90%"
                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="invoiceWeight" slot-scope="{ row }">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <el-input
                style="width:90%"
                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="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 }">
              <span v-if="row.$cellEdit" class="required_fields">*</span>
              <el-input
                style="width:90%"
                v-if="row.$cellEdit"
                v-model="row.actualQuantity"
                placeholder="请输入"
                size="small"
                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
              ></el-input>
              <span v-else>{{ row.actualQuantity | roundNumbers}}</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-scope="{row,index}" slot="menu">
              <el-button
                type="text"
                size="small"
                icon="el-icon-edit"
                :disabled="receiptDisable  || viewDisabled"
                @click="rowCell(row,index)"
              >{{ row.$cellEdit ? '修改完成' : '修改' }}
              </el-button>
              <el-button
                type="text"
                icon="el-icon-delete"
                size="small"
                :disabled="receiptDisable  || viewDisabled"
                @click="rowDel(row,index)"
              >删除
              </el-button>
            </template>
            <template slot="menuLeft" slot-scope="{size}">
              <el-button type="primary"
                         icon="el-icon-plus"
                         size="small"
                         :disabled="receiptDisable  || viewDisabled"
                         @click="commoditySelection"
              >录入明细
              </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="procurementDialog"
      width="60%"
      :close-on-click-modal="false"
      :destroy-on-close="true"
      :close-on-press-escape="false"
    >
      <procurement-detail
        @closeFun="closeFun"
       @importProMent="importProMent"
      >
      </procurement-detail>
    </el-dialog>
  </div>
</template>

<script>
import customerContact from "./config/customerContact.json"
import {detailReceiptList,
  submitReceiptList,
  removeGoodsItem,
  getStorage,
  getInventory,
  confirmReceipt,
  repealReceipt
} from "@/api/importTrade/receipt"
import upLoadOption from "../../exportTrade/purchaseContract/config/uploadList.json";
import { isPercentage,roundNumbers } from "@/util/validate";
import {detailListData } from "@/api/importTrade/purchase";
import { contrastObj,contrastList } from "@/util/contrastData";
import { getOrgOrderNo } from "@/api/importTrade/salesContract"
import  procurementDetail from "@/components/procurement/purchase";
import _ from "lodash";

export default {
  name: "detailsPageEdit",
  props: {
    detailData: {
      type: Object
    }
  },
  components:{
    procurementDetail
  },
  filters: {
    isPercentage(val) {
      return isPercentage(val);
    },
    roundNumbers(val){
      return roundNumbers(val);
    }
  },
  data() {
    return {
      form: {},
      disabled: false,
      skip:false,
      buttonLoading:false,
      receiptDisable:false,
      viewDisabled:false,
      customerContact: customerContact,
      contactsForm: {},
      contactsData: [],
      contractDic:[],
      currencyDic:[],
      singleton:[],
      selectKind:-1,
      itemConfiguration:{
        multipleChoices:false,
        multiple:false,
        disabled:false,
        searchShow:true,
        collapseTags:false,
        placeholder:'请点击右边按钮选择',
        dicData:[]
      },
      basicData: {
        column: [
          {
            label: '系统号',
            prop: 'sysNo',
            disabled:true,
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '供应商',
            prop: 'corpId',
            span: 16,
            dicData: [],
            rules: [
              {
                required: true,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '合同号',
            prop: 'orderNo',
            rules: [
              {
                required: false,
                message: ' ',
                trigger: 'blur'
              }
            ]
          },
          {
            label: '仓库名称',
            type:'select',
            prop: 'storageId',
            dicData: [],
            rules: [
              {
                required: false,
                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:[],
      storageIdDic:[],
      upLoadForm:{},
      loading: false,
      commodityData: false,
      tableData: [],
      //
      procurementDialog:false,
      //新旧数据对比
      oldForm:{},
      oldContactsData:[],
      oldUpLoadData:[],
    }
  },
  async created() {
    // this.customerContact = await this.getColumnData(this.getColumnName(41), customerContact);
    //币别
    this.getWorkDicts("currency").then(res =>{
      this.currencyDic = res.data.data
    })
    getStorage().then(res =>{
      this.storageIdDic = res.data
    })

    if(this.detailData.view){
      this.viewDisabled = true
    }

    if (this.detailData.id) {
      this.buttonLoading = true;
      let id = this.detailData.id.replace(/\"/g, "")
      detailReceiptList(id).then(res => {
        this.afterData(res.data.data)
      }).finally(()=>{
        this.buttonLoading = false;
      })
    }
    if(this.detailData.params){
      this.skip = true
      this.buttonLoading = true;
      detailListData(this.detailData.params.id).then(res =>{
        const orderNoList = [];  //合同号数据
        this.detailData.params.orderItemIds.forEach((e,i) =>{
          const item =   res.data.data.itemsVOList[e];
          item.srcId =  item.id;
          item.orgOrderNo =  res.data.data.orgOrderNo;
          item.contractNumber =  res.data.data.orderNo;
          item.exRate = res.data.data.exchangeRate;  //汇率
          item.currency = res.data.data.currency;   //币别
              orderNoList.push(item.contractNumber)
          if(item.actualQuantity !== 0){   //如果收过货
            item.actualQuantity = _.subtract(item.orderQuantity, item.actualQuantity); //收货件数 = 采购件数 - 已收件数
          }else{
            item.actualQuantity =  item.orderQuantity;
          }
          item.contractAmount =  item.amount;
          //码单重量 除以 数量     每个的码单重量
          // item.singleton = {
          //   BQ : _.divide(item.billWeight, item.orderQuantity),
          //   IQ : _.divide(item.invoiceWeight, item.orderQuantity)
          // }
          delete item.id
          item.cntrLiang = 2
          //如果箱量大于1  则根据箱量生成几条收货单明细  并均分发票重量
          if(item.cntrLiang > 1){
            let receiptInvoiceWeight =  item.invoiceWeight/item.cntrLiang;
            for(let i=0;i<item.cntrLiang;i++){
              item.invoiceWeight = receiptInvoiceWeight
              this.$refs.crudContact.rowCellAdd(item);
            }
          }else{
            this.$refs.crudContact.rowCellAdd(item);
          }
          this.$refs.crudContact.rowCell(item,this.contactsData.length - 1)
        })
        this.$set(this.form,'orderNo', Array.from(new Set(orderNoList)).join(","))  // 数组去重逗号隔开 那合同总
        this.$set(this.form,'saleman',res.data.data.salesName)
        this.$set(this.form,'corpId',res.data.data.corpsName[0].id)
        this.$set(this.form,'orgOrderNo', res.data.data.orgOrderNo)
        this.totalChange();  //调用合计 算出重量
      }).finally(()=>{
        this.buttonLoading = false;
      })
    }
  },
  methods: {
    //货物名称 回显
    valueName(value,row){
      this.$set(row,"priceCategory",value)
    },
    //拿到所有明细合同号 去重加逗号放到主表合同号
    sumOrderNo(row){
      const contractNumberList =  this.contactsData.map(item =>{return  item.contractNumber})
      this.$set(this.form,'orderNo', Array.from(new Set(contractNumberList)).join(","))
    },
    //合计
    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){
      getOrgOrderNo(row.billNo).then(res =>{
        if(res.data){
          this.contractDic = res.data;
          row.contractNumber =  res.data[0].orderNo;
          this.sumOrderNo()
        }
      }).catch(()=>{
        row.contractNumber = ''
      })
      // this.selectInventory(row);
    },
    //单价
    priceChange(row) {
      if (row.price && row.billWeight) {
        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
      }
    },
    //码单重量
    billWeightChange(row) {
      if (row.billWeight &&  row.price) {
        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
      }
    },
    //新增商品信息保存触发
    rowSave(row, done, loading) {
      // this.contactsData.push(row)
      done()
    },
    //点击行可编辑
    handleRowClick(row, event, column) {
    },
    //商品编辑
    rowCell(row, index) {
      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()
      })
    },
    //导入采购明细
    importProMent(list){
      list.forEach((item,index) =>{
        item.srcId = item.id;
        item.contractNumber = item.orderNo;
        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
        // }
        delete item.id
        this.$refs.crudContact.rowCellAdd(item);
        // this.selectInventory(item)
      })

      this.totalChange()
      this.sumOrderNo();   //合并合同号
      this.procurementDialog = false;
    },
    closeFun(){
      this.procurementDialog = false
    },
    //导入采购
    commoditySelection() {
      this.procurementDialog = true;
    },
    //上传文件保存
    upLoadSave(row, done, loading){
      this.upLoadData.push(row)
      done()
    },
    //修改附件上传触发
    upLoadUpdate(row, done){
      done(row);
    },
    //删除附件上传触发
    upLoadDel(row, index,){
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        this.bankOfDepositData.splice(index, 1);
      })
    },
    //修改提交触发
    editCustomer(status) {
      this.$refs["form"].validate((valid) => {
        for (let i = 0; i < this.contactsData.length; i++) {
          if (this.contactsData[i].billNo === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的提单号`);
          }
          if (this.contactsData[i].contractNumber === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的合同号`);
          }
          if (this.contactsData[i].priceCategory === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的货物品种`);
          }
          if (this.contactsData[i].cntrNo === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的箱号`);
          }
          if (this.contactsData[i].actualQuantity === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的件数`);
          }
          if (this.contactsData[i].invoiceWeight === (null || "" )) {
            return this.$message.error(`请输入第${i + 1}行的发票重量`);
          }
        }

        this.form.billNo =Array.from(new Set(this.contactsData.map(item =>{return item.billNo}))).join(",")

        if (valid) {
          let submitDto = {
            ...this.form,
            deliveryItemsList: this.contactsData,
            deliveryFilesList: this.upLoadData,
          };
          this.buttonLoading = true;
          submitReceiptList(submitDto).then(res => {
            if(res.data.success){
              this.$message.success("保存成功!")
              detailReceiptList(res.data.data.id).then(res => {
                this.afterData(res.data.data)
              })
            }
          }).finally(()=>{
            this.buttonLoading =  false;
          })
          if(status === true){
            this.$emit("goBack");
          }
        } else {
          return false;
        }
      });
    },
    //确认收货
    confirmReceipt(){
      if(this.verificationData()){
        if(!this.receiptDisable){
          this.$confirm("是否确认收货?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(()=>{
            if(!this.form.storageId){
              return this.$message.error(`收货时仓库名称不能为空!`);
            }

            this.buttonLoading = true;
            this.form.deliveryItemsList = this.contactsData;
            confirmReceipt(this.form).then(res =>{
              if(res.data.success){
                this.$message.success("收货成功!")
                this.afterData(res.data.data)
              }
            }).finally(()=>{
              this.buttonLoading = false;
            })
          })
        }else{
          this.$confirm("是否撤销收货!", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(()=>{
            this.buttonLoading = true;
            this.form.deliveryItemsList = this.contactsData;
            repealReceipt(this.form).then(res =>{
              if(res.data.success){
                this.$message.success("撤销成功!")
                this.afterData(res.data.data)
              }
            }).finally(()=>{
              this.buttonLoading = false;
            })
          })
        }
      }
    },
    afterData(data){
      this.form = data;
      this.oldForm = Object.assign({},data);
      this.receiptDisable = data.deliveryStatus === "已收货" ?   true :false
      if(data.deliveryItemsList){
        this.contactsData = data.deliveryItemsList
        this.oldContactsData = this.deepClone(data.deliveryItemsList)
      }
      if(data.deliveryFilesList){
        this.upLoadData = data.deliveryFilesList
        this.oldUpLoadData = this.deepClone(data.deliveryFilesList)
      }
      if(this.detailData.status === 'copy'){
        this.copyData()
      }
    },
    verificationData(){
      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()
        }).catch(()=>{
          return false
        })
      }else{
        return true
      }
    },
    createData(){
      if(this.verificationData()){
        this.$confirm("确定创建新的单据吗?", "提示", {
          confirmButtonText: "保存",
          cancelButtonText: "取消",
          type: "warning",
        }).then(() => {
          this.form = {}
          this.oldForm = {}
          this.contactsData = []
          this.oldContactsData = []
          this.upLoadData = []
          this.oldUpLoadData = []
        })
      }
    },
    copyData(){
      if(this.verificationData()){
        this.receiptDisable = false

        delete  this.form.id  //删除id
        delete  this.form.deliveryStatus
        this.$set(this.form,"sysNo","")//系统编号

        this.contactsData.forEach(item =>{
          delete item.id  //删除id
        })

        this.upLoadData.forEach(item =>{
          delete item.id  //删除id
        })

        this.oldForm = {}
        this.oldContactsData = []
        this.oldUpLoadData = []
        this.$message.success("复制成功!")
      }
    },
    //编辑
    async openEdit() {
      //标签页保存key
      this.inDetailsKey(this.$route.name,this.detailData.lockData);
      //单据是否锁定
      if(!await this.checkLocks(this.detailData.lockData)){
        this.onLock(this.detailData.lockData); //上锁
        this.viewDisabled = false
      }else{
        this.$message.warning('此单据已被锁定,请稍后再进行操作!')
      }
    },
    //返回列表
    async backToList() {
      //如果单据已被锁定 并且编辑按钮存在  则直接返回
      if(this.viewDisabled || !this.detailData.lockData){
        this.$emit("goBack");
        return
      }

      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.unLock(this.lockData) //解锁
          this.$emit("goBack");
        }).finally(()=>{
          if(this.form.id){
            this.unLock(this.detailData.lockData);
            this.leaveDetailsKey(this.$route.name);
          }
        })
      }else{
        this.$emit("goBack");
        if(this.form.id){
          this.unLock(this.detailData.lockData);
          this.leaveDetailsKey(this.$route.name);
        }
      }
    },
    //列保存触发
    async saveColumn() {
      const inSave = await this.saveColumnData(
        this.getColumnName(41),
        this.customerContact
      );
      if (inSave) {
        this.$message.success("保存成功");
        //关闭窗口
        this.$refs.crudContact.$refs.dialogColumn.columnBox = false;
      }
    },
    async resetColumn() {
      const inSave = await this.delColumnData(
        this.getColumnName(41),
        customerContact
      );
      if (inSave) {
        this.$message.success("重置成功");
        this.customerContact = customerContact;
        //关闭窗口
        this.$refs.crudContact.$refs.dialogColumn.columnBox = false;
      }
    },
    cellStyle() {
      return "padding:0;height:40px;";
    },
  },
}
</script>

<style lang="scss" scoped>

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


::v-deep .el-form-item {
  margin-bottom: 0;
}
.required_fields{
  color: #F56C6C;
  display:inline-block;
  width: 7%
}

.upper_right_button{
  display: flex;
  position: fixed;
  right: 12px;
  top: 47px;
}
.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;
    }
  }
}
::v-deep .el-form-item__content{
  line-height: 32px;
}
</style>
