<template>
  <div class="borderless">
    <div class="main-head">
      <div class="main-back">
        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
                   @click="backToList">返回列表
        </el-button>
        <el-button class="el-button--small-yh add-customer-btn" type="primary"
                   @click.stop="confirmSettlement"confirmSettlement
        >{{this.id?"确认修改" :"确认结算"}}
        </el-button>
      </div>
    </div>
    <div style="margin-top: 60px">
      <containerTitle title="基础信息"></containerTitle>
      <basic-container>
        <avue-form ref="form" v-model="form" :option="option">
          <template slot="corpId">
            <select-component
              v-model="form.corpId"
              :configuration="configuration"
            ></select-component>
          </template>
        </avue-form>
      </basic-container>
      <basic-container>
        <avue-crud :option="itemsOption"
                   :data="dataList"
                   ref="crud"
                   v-model="itemsForm"
                   :page.sync="page"
                   @search-reset="searchReset"
                   @selection-change="selectionChange"
                   @current-change="currentChange"
                   @size-change="sizeChange"
                   @refresh-change="refreshChange">
          <template slot="menuLeft">
            <el-button type="primary"
                       size="small"
                       icon="el-icon-shopping-cart-2"
                       @click="selectPurchase">选择采购合同
            </el-button>
          </template>
          <template slot-scope="scope" slot="menu">
            <el-button
              type="text"
              icon="el-icon-view"
              size="small"
              @click.stop=""
            >修改
            </el-button>
            <el-button
              type="text"
              icon="el-icon-edit"
              size="small"
              @click.stop=""
            >删除
            </el-button>
          </template>
        </avue-crud>
      </basic-container>
      <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"
        top="10vh"
        v-dialog-drag>
        <bill-detail
          @closeFun="!procurementDialog"
          @importProMent="importProMent"
        >
        </bill-detail>
      </el-dialog>
    </div>
  </div>
</template>

<script>
  import option from "./configuration/detailsPage.json";
  import { getDetail,editFinance } from "@/api/financialManagement/financialManagement"
  import { getDetails,modify } from "@/api/financialManagement/paymentRequest";
  import { contrastObj,contrastList } from "@/util/contrastData";
  import  billDetail from "@/components/bill/billDetail";

  export default {
    name: "paymentDetailsPage",
    props: {
      detailData: {
        type: Object
      }
    },
    data() {
      return {
        form: {},
        itemsForm:{},
        itemsOption: option,
        procurementDialog:false,
        id:"",
        dataList: [],
        currencyDic:[],
        page: {
          pageSize: 10,
          pagerCount: 5,
          total: 0,
        },
        query:{},
        option: {
          menuBtn: false,
          labelWidth: 100,
          column: [
            {
              label: '系统号',
              prop: 'sysNo',
              span: 8,
              disabled: true
            },{
              label: '合同号',
              prop: 'srcOrderno',
              span: 8,
              rules: [
                {
                  required: true,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            }, {
              label: '客户名称',
              prop: 'corpId',
              sort:true,
              span: 8,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            },
            {
              label: '金额',
              prop: 'amount',
              span: 8,
              rules: [
                {
                  pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            }, {
              label: '币别',
              prop: 'currency',
              span: 8,
            },
            {
              label: '汇率',
              prop: 'exchangeRate',
              span: 8,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            },{
              label: '开户银行',
              prop: 'accountBank',
              span: 8,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            }, {
              label: '银行户头',
              prop: 'accountName',
              span: 8,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            }, {
              label: '银行账号',
              prop: 'accountNo',
              span: 8,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            },
            {
              label: '制单人',
              prop: 'createUserName',
              span: 8,
              disabled:true,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            }, {
              label: '制单日期',
              prop: 'createTime',
              span: 8,
              type:"date",
              disabled:true,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            },
            {
              label: '备注',
              prop: 'remark',
              span:24,
              row:2,
              rules: [
                {
                  required: false,
                  message: ' ',
                  trigger: 'blur'
                }
              ]
            },
          ],
        },
        //客户组件配置控制
        configuration:{
          multipleChoices:false,
          multiple:false,
          disabled:false,
          searchShow:true,
          collapseTags:false,
          placeholder:'请点击右边按钮选择',
          dicData:[]
        },
        financeStatusDic:[{
          label:'正常',
          value:0
        },{
          label:'停用',
          value:1
        }],
        //顶部from数据
        oldForm:{},
        oldDataList:[],
      }
    },
    components:{
      billDetail
    },
    created() {
      //币别
      this.getWorkDicts("currency").then(res =>{
        this.currencyDic = res.data.data
      })
      if (this.detailData.id) {
        this.id = BigInt(this.detailData.id);//字符串转数字  超长用BigInt
        getDetail(this.id).then(res => {
          this.form = res.data.data;
          this.oldForm = Object.assign({},res.data.data);
          if(res.data.data.itemsList){
            this.dataList = res.data.data.itemsList
            this.oldDataList = this.deepClone(res.data.data.itemsList)
          }
        })
      }

      if(this.detailData.params){
        getDetails(this.detailData.params).then(res =>{
          delete res.data.data.id;
          delete res.data.data.sysNo;
          delete res.data.data.billType;
          res.data.data.itemsList.map((items)=>{ delete items.id })
          this.form = res.data.data;
          this.oldForm = Object.assign({},res.data.data);
          if(res.data.data.itemsList){
            this.dataList = res.data.data.itemsList
            this.oldDataList = this.deepClone(res.data.data.itemsList)
          }
        })
      }
    },
    mounted() {
      option.height = window.innerHeight - 640 ;
    },
    methods: {
      selectPurchase(){
        this.procurementDialog = true;
      },
      importProMent(){

      },
      searchReset() {
        console.log('1')
      },
      selectionChange() {
        console.log('1')
      },
      currentChange() {
        console.log('1')
      },
      sizeChange() {
        console.log('1')
      },
      refreshChange() {
        console.log('1')
      },
      confirmSettlement(status){
        this.$refs["form"].validate((valid) => {
          if(valid){
            this.$confirm("是否确认结算？", "提示", {
              confirmButtonText: "保存",
              cancelButtonText: "取消",
              type: "warning",
            }).then(()=>{
              const params = {
                ...this.form,
                billType:"付款",
                itemsList:this.dataList
              }
              modify(params).then(res =>{
                this.$message.success("操作成功!")
                this.form = res.data.data;
                this.oldForm = Object.assign({},res.data.data);
                if(res.data.data.itemsList){
                  this.dataList = res.data.data.itemsList
                  this.oldDataList = this.deepClone(res.data.data.itemsList)
                }
              })
            })
            if(status === true){
              this.$emit("goBack");
            }
          }
        })
      },
      backToList() {
        if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
        ){
          this.$confirm("是否保存当前页面？", "提示", {
            confirmButtonText: "保存",
            cancelButtonText: "取消",
            type: "warning",
          }).then(() => {
            this.editCustomer(true)
          }).catch(()=>{
            this.$emit("goBack");
          })
        }else{
          this.$emit("goBack");
        }
      },
    }
  }
</script>

<style scoped>
  ::v-deep .el-form-item {
    margin-bottom: 0;
  }
  .main-head {
    position: fixed;
    top: 105px;
    width: 100%;
    margin-left: -10px;
    height: 62px;
    background: #ffffff;
    box-shadow: 0 4px 12px 0px rgba(232, 232, 235, 1);
    z-index: 999;
  }
  .main-back {
    cursor: pointer;
    line-height: 62px;
    font-size: 16px;
    color: #323233;
    font-weight: 400;
  }
  .add-customer-btn-two {
    position: fixed;
    right: 150px;
    top: 115px;
  }
  .add-customer-btn {
    position: fixed;
    right: 36px;
    top: 115px;
  }
</style>
