<template>
  <div>
	<el-dialog v-dialogDrag  title="结算明细"  :visible.sync="settleDialogVisible" width="70%" center destroy-on-close :before-close="beforeClose" v-if="settleDialogVisible">
		<el-form ref="dialogForm" label-width="100px" :model="formData" :rules="rules" style="overflow-y: auto;overflow-x: hidden; padding: 20px;">
			<el-row>
        <c-col :span="12" style="padding-right: 20px;">
          <c-col :span="24">
            <el-form-item label="处理方式" :label-width="formLabelWidth" prop="dsp">
              <c-select v-model="formData.dsp" 
              customModifykey="dsp"
              :markSetData="formData"
              :popper-class="formData.debcdtflg==='D'?'custom-select-red':''"
              :class="formData.debcdtflg==='D'?'custom-select-red-input':''"
              @change="changeDialog(formData, 'dsp')" placeholder="请选择处理方式">
                <el-option v-for="item in formData.dspSet" :key="item.value" :label="item.value + ' ' + item.label" :value="item.value">
                </el-option>
              </c-select>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="核心业务代号" :label-width="formLabelWidth" prop="acccode">
              <c-col :span="20">
              <c-input v-model="formData.acccode" disabled></c-input>
              </c-col>
              <c-col :span="4">
              <c-button style="margin-right: 10px" size="small" type="primary" icon="el-icon-info" @click="getCoreAccountInfo(formData)">获取</c-button>
              </c-col>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="结算对象" :label-width="formLabelWidth" prop="rol">
              <c-select v-model="formData.rol" dbCode="ROLALL" disabled :isShowKeyAndLabel="true">
							</c-select>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="记账币种" :label-width="formLabelWidth" prop="acccur">
              <c-select-cur
               v-if="formData.cur === 'CNY'"
               v-model="formData.acccur"
               dbCode="CURTXT"
               customModifykey="acccur"
               :markSetData="formData"
               :disabled="acccurDisable"
               placeholder="请选择记账币种" @change="changeDialog(formData, 'acccur')">
              </c-select-cur>
              <c-select-cur
               v-else
               v-model="formData.acccur"
               dbCode="CURTXT"
               :filterKey="['CNY', formData.cur]"
               customModifykey="acccur"
               :markSetData="formData"
               :disabled="acccurDisable"
               placeholder="请选择记账币种" @change="changeDialog(formData, 'acccur')">
              </c-select-cur>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="原始币种" :label-width="formLabelWidth" prop="cur">
              <c-select-cur v-model="formData.cur" dbCode="acccur" disabled placeholder="请输入原始币种">
              </c-select-cur>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="有效日期" :label-width="formLabelWidth" prop="valdat">
              <c-date-picker
                  v-model="formData.valdat"
                  customModifykey="valdat"
                  :markSetData="formData"
                  type="date"
                  @change="changeDialog(formData, 'valdat')"
                  placeholder="选择日期">
                </c-date-picker>
            </el-form-item>
          </c-col>
        </c-col>
        <c-col :span="12" style="padding-left: 20px;">
          <c-col :span="24">
            <el-form-item label="记账账号" :label-width="formLabelWidth" prop="act">
              <c-select v-model="formData.act"
              customModifykey="act"
              :markSetData="formData"
              @change="changeDialog(formData, 'act')" :allow-create="true" :default-first-option="true" :filterable="true" placeholder="请选择记账账号">
                <el-option v-for="item in formData.actSet" :key="item" :label="item" :value="item"></el-option>
              </c-select>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="账户余额" :label-width="formLabelWidth" prop="accountBalance">
              <c-input-currency v-model="formData.accountBalance" :currency="formData.acccur" disabled></c-input-currency>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="借/贷" :label-width="formLabelWidth" prop="debcdtflg">
              <c-input v-model="formData.debcdtflg" autocomplete="off" placeholder="请输入借/贷" :class="formData.debcdtflg==='D'?'custom-select-red-input':''" disabled></c-input>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="记账金额" :label-width="formLabelWidth" prop="fmtaccamt">
              <c-input-currency 
              customModifykey="accamt"
              :markSetData="formData"
              v-model="formData.fmtaccamt" :currency="formData.acccur" @change="changeDialog(formData, 'accamt')" placeholder="请输入记账金额" disabled></c-input-currency>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="原始金额" :label-width="formLabelWidth" prop="fmtamt">
              <c-input-currency v-model="formData.fmtamt" :currency="formData.cur" placeholder="请输入原始金额" disabled></c-input-currency>
            </el-form-item>
          </c-col>
          <c-col :span="24">
            <el-form-item label="科目代码" :label-width="formLabelWidth" prop="acttrmtyp">
               <c-input v-if="acttrmtypDisable" v-model="formData.acttrmtyp" autocomplete="off" placeholder="请输入科目代码" disabled></c-input>
               <c-select v-else 
               customModifykey="acttrmtyp"
               :markSetData="formData"
               v-model="formData.acttrmtyp" placeholder="请选择科目代码" @change="changeDialog(formData, 'acttrmtyp')">
                  <el-option v-for="(item,index) in formData.acttrmtypSet" :key="item.value+index" :label="item.value + ' ' +item.label" :value="item.value"></el-option>
               </c-select> 
            </el-form-item>
          </c-col>
        </c-col>
      </el-row>
      <div v-if="formData.exchangeFlag">
        <el-row>
          <el-col :span="24">
            <el-form-item label="该客户存在如下汇率优惠:" label-width="200px"></el-form-item>
          </el-col>
        </el-row>
        <el-row >
          <el-col :span="8">
            <el-form-item label="Seller" :label-width="formLabelWidth">
              <c-select v-model="formData.selrattyp" dbCode="SELTYP" disabled>
              </c-select>
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item :label-width="formLabelWidth"> 
              <c-col :span="10">
                <c-input-currency v-model="formData.preselrat" :precision=6 disabled></c-input-currency>
              </c-col>
              <c-col v-if="formData.selrattyp==='2'" :span="1" style="float: right; text-align: right">
                <span>%</span>
              </c-col>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="Buyer" :label-width="formLabelWidth">
              <c-select v-model="formData.buyrattyp" dbCode="BUYTYP" disabled>
              </c-select>
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item>
              <c-col :span="10">
                <c-input-currency v-model="formData.prebuyrat" :precision=6 disabled></c-input-currency>
              </c-col>
              <c-col v-if="formData.buyrattyp==='2'" :span="1" style="float: right; text-align: right">
                <span>%</span>
              </c-col>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row style="margin-bottom: 20px;">
          <div class="custom-table-wrap" style="width: 100%;">
            <div class="table-row">
              <div class="table-td1">Cross Rate</div>
              <div class="table-td">Rate Type</div>
              <div class="table-td">Calculate Rate</div>
              <div class="table-td"></div>
            </div>
            <div class="table-row">
              <div class="table-td1" v-text="formData.ratcurlab"></div>
              <div class="table-td">
                <c-select
                  v-model="formData.rattyp"
                  style="width: 80%;"
                  customModifykey="rattyp"
                  :markSetData="formData"
                  dbCode="RATTYP"
                  :filterKey="formData.ratTypFilter"
                  :disabled="rattypDisable"
                  @change="changeDialog(formData, 'rattyp')">
                </c-select>
              </div>
              <div class="table-td">
                <c-input-currency
                  v-model="formData.rat"
                  style="width: 80%;"
                  customModifykey="rat"
                  :markSetData="formData"
                  :precision=6 :disabled="ratDisable"
                  @change="changeDialog(formData, 'rat')"
                />
              </div>
              <div class="table-td">
                <el-form-item label="Selling Rate" :label-width="formLabelWidth">
                  <c-input v-model="formData.selrat" disabled></c-input>
                </el-form-item>
              </div>
            </div>
            <div class="table-row">
              <div class="table-td1" v-text="formData.dcbratlab"></div>
              <div class="table-td">
                <c-select
                  v-model="formData.dcbrattyp"
                  style="width: 80%;"
                  customModifykey="dcbrattyp"
                  :markSetData="formData"
                  dbCode="RATTYP"
                  :disabled="dcbrattypDisable"
                  @change="changeDialog(formData, 'dcbrattyp')"
                ></c-select>
              </div>
              <div class="table-td">
                <c-input-currency
                  v-model="formData.dcbextrat"
                  style="width: 80%;"
                  customModifykey="dcbextrat"
                  :markSetData="formData" 
                  :precision=6
                  :disabled="dcbextratDisable"
                  @change="changeDialog(formData, 'dcbextrat')"
              /></div>
              <div class="table-td">
                <el-form-item label="Middle Rate" :label-width="formLabelWidth">
                  <c-input v-model="formData.midrat" disabled></c-input>
                </el-form-item>
              </div>
            </div>
            <div class="table-row">
              <div class="table-td1" v-text="formData.scbratlab"></div>
              <div class="table-td">
                <c-select
                  v-model="formData.scbrattyp"
                  style="width: 80%;"
                  customModifykey="scbrattyp"
                  :markSetData="formData" 
                  dbCode="RATTYP" :disabled="scbrattypDisable"
                  @change="changeDialog(formData, 'scbrattyp')"
                ></c-select>
              </div>
              <div class="table-td">
                <c-input-currency
                  v-model="formData.scbextrat"
                  style="width: 80%;"
                  customModifykey="scbextrat"
                  :markSetData="formData"
                  :precision=6 :disabled="scbextratDisable"
                  @change="changeDialog(formData, 'scbextrat')"
                ></c-input-currency>
              </div>
              <div class="table-td">
                <el-form-item label="Buying Rate" :label-width="formLabelWidth">
                  <c-input v-model="formData.buyrat" disabled></c-input>
                </el-form-item>
              </div>
            </div>
          </div>
        </el-row>
      </div>
      <el-row>
        <c-col :span="12" style="padding-right: 20px;" v-if="formData.exchangeFlag">
          <el-form-item label="交易主体" :label-width="formLabelWidth" prop="trnman">
            <c-select 
            customModifykey="trnman"
            :markSetData="formData"
            v-model="formData.trnman" dbCode="TRNMAN" @change="changeDialog(formData, 'trnman')" :filterKey="formData.trnmanFilter" placeholder="请选择交易主体">
            </c-select>
					</el-form-item>
        </c-col>
        <c-col :span="12" style="padding-left: 20px;" v-if="formData.trdintFlag || formData.trdoutFlag">
          <el-form-item label="结汇类型" :label-width="formLabelWidth" v-if="formData.trdintFlag" prop="trdint">
						<c-select 
            customModifykey="trdint"
            :markSetData="formData"
            @change="changeDialog(formData, 'trdint')"
            v-model="formData.trdint" dbCode="TRAINT" placeholder="请选择结汇类型">
            </c-select>
					</el-form-item>
          <el-form-item label="售汇类型" :label-width="formLabelWidth" v-if="formData.trdoutFlag" prop="trdout">
						<c-select
            customModifykey="trdout"
            :markSetData="formData"
            @change="changeDialog(formData, 'trdout')"
            v-model="formData.trdout" dbCode="TRAOUT" placeholder="请选择售汇类型">
            </c-select>
					</el-form-item>
        </c-col>
      </el-row>
      <el-row>
         <c-col :span="24">
            <el-form-item label="传票摘要">
              <c-input
                type="textarea"
                :rows="3"
                placeholder="请输入内容"
                customModifykey="txt2"
                :markSetData="formData"
                @change="changeDialog(formData, 'txt2')"
                v-model="formData.txt2">
              </c-input>
            </el-form-item>
          </c-col>
      </el-row>
      <el-row v-if="formData.sftmt !== ''">
        <c-col :span="12" style="padding-right: 20px;">
          <el-form-item label="报文类型" :label-width="formLabelWidth" >
            <c-select v-model="formData.sftmt" dbCode="SFTMT" disabled>
            </c-select>
					</el-form-item>
        </c-col>
        <c-col :span="12">
          <el-form-item label="报文形式" :label-width="formLabelWidth">
						<c-select v-model="formData.dirindflg" dbCode="DIRIND" disabled>
            </c-select>
					</el-form-item>
        </c-col>
      </el-row>
      <el-row v-if="zmqflg === 'X'">
        <c-col :span="12" style="padding-right: 20px;">
          <el-form-item label="国际收支交易编码" :label-width="formLabelWidth">
            <c-fullbox>
              <c-input
              customModifykey="trntyp"
              :markSetData="formData"
              @change="changeDialog(formData, 'trntyp')"
              v-model="formData.trntyp">
              </c-input>
              <template slot="footer">
                <c-button type="primary" size="small" icon="el-icon-search" style="margin-left: 10px;padding: 0 12px;" @click="getBopcodList">
              </c-button>
			</template>
		</c-fullbox>
          </el-form-item>
        </c-col>
        <c-col :span="12">
          <el-form-item label="国别代码" :label-width="formLabelWidth">
           <c-business-cty 
           customModifykey="ctycod"
           :markSetData="formData"
           v-model="formData.ctycod" @handleChange="changeDialog(formData, 'ctycod')"></c-business-cty>
          </el-form-item>
        </c-col>
      </el-row>
      <el-row v-if="zmqflg === 'X'">
        <c-col :span="12" style="padding-right: 20px;">
          <el-form-item label="对方户名" :label-width="formLabelWidth">
              <c-input 
              customModifykey="oppnam"
              :markSetData="formData"
              maxLength="128"
              v-model="formData.oppnam" @change="changeDialog(formData, 'oppnam')"></c-input>
          </el-form-item>
        </c-col>
        <c-col :span="12">
          <el-form-item label="国内地区代码" :label-width="formLabelWidth">
              <c-input 
              customModifykey="discod"
              :markSetData="formData"
              maxLength="6"
              v-model="formData.discod" @change="changeDialog(formData, 'discod')"></c-input>
          </el-form-item>
        </c-col>
      </el-row> 
      <el-row v-if="zmqflg === 'X'">
        <c-col :span="12" style="padding-right: 20px;">
          <el-form-item label="对方账号" :label-width="formLabelWidth">
              <c-input 
              customModifykey="oppacc"
              :markSetData="formData"
              maxLength="35"
              v-model="formData.oppacc" @change="changeDialog(formData, 'oppacc')"></c-input>
          </el-form-item>
        </c-col>
        <c-col :span="12">
          <el-form-item label="虚拟户账号" :label-width="formLabelWidth">
              <c-input 
              customModifykey="xzhacc"
              :markSetData="formData"
              v-model="formData.xzhacc" @change="changeDialog(formData, 'xzhacc')"></c-input>
          </el-form-item>
        </c-col>
      </el-row>
      <el-row v-if="zmqflg === 'X'">
        <c-col :span="12" style="padding-right: 20px;">
          <el-form-item label="对方银行代码" :label-width="formLabelWidth">
              <c-input 
              customModifykey="oppbnk"
              :markSetData="formData"
              maxLength="14"
              v-model="formData.oppbnk" @change="changeDialog(formData, 'oppbnk')"></c-input>
          </el-form-item>
        </c-col>
        <c-col :span="12">
          <el-form-item label="虚拟户名称" :label-width="formLabelWidth">
              <c-input 
              customModifykey="xzhnam"
              :markSetData="formData"
              v-model="formData.xzhnam" @change="changeDialog(formData, 'xzhnam')"></c-input>
          </el-form-item>
        </c-col>
      </el-row>
		</el-form>
		<span slot="footer" class="dialog-footer">
			<c-button v-if="!isDispaly" type="primary" style="margin-right: 20px;" @click="saveDialog">确 定</c-button>
			<el-button @click="cancelDialog">取 消</el-button>
		</span>
	</el-dialog>
  <!-- 交易性质弹窗 -->
  <el-dialog v-dialogDrag width="50%" title="交易性质" :append-to-body="true" :visible.sync="bopcodDialogTableVisible" v-if="bopcodDialogTableVisible">
    <div style="height: 100%;">
      <el-table id='tableRef' height="calc(100% - 32px)" size="small" :data="tableList" @row-dblclick="dbClickRow"
        :before-close="beforeCloseFrmDialog">
        <el-table-column v-for="(item,key) in tableColumn" :key="key" :prop="item.prop" :width="item.width" :label="item.label">
        </el-table-column>
      </el-table>
    </div>
  </el-dialog>
  </div>
</template>

<script>
import commonDepend from "~/mixin/commonDepend.js";
import { cloneDeep } from "lodash";
import Api from '~/service/Api';
import commonFunctions from '~/mixin/commonFunctions.js';
export default {
	inject: ["root"],
  mixins: [commonDepend, commonFunctions],
  props: {
		dialog3: {
			type: Object,
			default: () => {}
    },
    zmqflg: {
			type: String,
			default: ""
    },
	},
	computed: {
		isDispaly() {
			return this.$store.state.Status.mode === 'display'
    },
    acttrmtypDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("acttrmtyp");
        } else {
          return false; 
        }
    },
    rattypDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("rattyp");
        } else {
          return false; 
        }
    },
    dcbextratDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("dcbextrat");
        } else {
          return false; 
        }
    },
    dcbsqrratDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("dcbsqrrat");
        } else {
          return false; 
        }
    },
    dcbrattypDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("dcbrattyp");
        } else {
          return false; 
        }
    },
    scbextratDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("scbextrat");
        } else {
          return false; 
        }
    },
    scbsqrratDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("scbsqrrat");
        } else {
          return false; 
        }
    },
    scbrattypDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("scbrattyp");
        } else {
          return false; 
        }
    },
    ratDisable(){
        if (this.formData.disableSet) {
          return this.formData.disableSet.includes("rat");
        } else {
          return false; 
        }
    },
    acccurDisable(){
      if (this.formData.disableSet) {
        return this.formData.disableSet.includes("acccur");
      } else {
        return false; 
      }
    },
	},
  data() {
    return {
			formData:{},
			settleDialogVisible: false,
      formLabelWidth: "100px",
      initData:{},
      bopcodDialogTableVisible: false,
      tableList: [],
      tableColumn: [
        { label: "交易代码", prop: "cod" },
        { label: "描述", prop: "txt" }
      ],
      rules: {
        dsp: [{ required: true, message: "必填" }],
        act: [{ required: true, message: "必填" }],
        acccur: [{ required: true, message: "必填" }],
        trnman: [{ required: true, message: "必填" }],
        trdint: [{ required: true, message: "必填" }],
        trdout: [{ required: true, message: "必填" }],
        acttrmtyp: [{ required: true, message: "必填" }],
      }
    };
	},
  methods: {
		init(first) {
      this.formData = this.dialog3;
      if (first) {
        this.initData = cloneDeep(this.formData);
      }
		},
    changeDialog(setgll, prop) {
      this.$emit('changeSettleDialog',setgll,prop);
    },
    cancelDialog(){
      this.settleDialogVisible = false;
      this.$emit('cancelSettleDialog',this.initData);
    },
    saveDialog(){
      this.$refs.dialogForm.validate(async valid => {
        if (!valid) {
          console.log("详细填写不合法");
          return;
        }
        this.settleDialogVisible = false;
        this.$emit('saveDialog',this.formData);
      });
    },
    beforeClose() {
      this.settleDialogVisible = false;
    },
    async getCoreAccountInfo(setgll) {
      if (setgll.act === '') {
        this.$alert('请先获取账号!', '提示', {
          confirmButtonText: '确定'
        });
        return;
      }
      let params = {};
      this.$emit("getParams", null, val => {params = val})
      let objtyp = params.rec.objtyp;
      let request = {
        account: setgll.act
      }
      let loading = this.loading('正在请求Account8091接口');
      let rtnmsg = await Api.post(`/${this.moduleRouter()}/${objtyp.toLowerCase()}/getCoreAcctInfo`, request);
			if (rtnmsg.respCode === SUCCESS) {
          if (rtnmsg.data.errorMsg !== '' && rtnmsg.data.errorMsg !== null) {
            this.$alert(rtnmsg.data.errorMsg, '提示', {
              confirmButtonText: '确定'
            });
          } else {
            setgll.acccode = rtnmsg.data.acctCode;
            setgll.accountBalance = rtnmsg.data.acctBalance;
          }
      }
      loading.close();
    },
    beforeCloseFrmDialog() {
      this.bopcodDialogTableVisible = false;
    },
    async getBopcodList() {
      this.bopcodDialogTableVisible = true;
      this.tableList = [];
      let params = {};
      this.$emit("getParams", null, val => {params = val})
      let request = {
         transName: params.transName,
         userId: params.userId,
         ptsList: params.ptsList,
         rec: params.rec,
         typ: this.formData.typ,
         trntyp: this.formData.trntyp
      }
      let loading = this.loading('正在请求交易性质列表');
      let res = await Api.post(`/${this.moduleRouter()}/codetable/bopcod/list`, request);
      if (res.respCode === SUCCESS) {
        this.tableList = res.data;
      }
      loading.close();
    },
    dbClickRow(row, column, event) {
      // 回填数据
      this.formData.trntyp = row.cod;
      this.bopcodDialogTableVisible = false;
      this.changeDialog(this.formData, 'trntyp');
    },
  }
};
</script>
<style scoped lang="less">
.dialog-wrap {
  height: 400px;
  overflow: auto;
}
::v-deep .el-dialog__header {
  height: 52px;
  .el-dialog__headerbtn {
    top: 10px;
  }
}
::v-deep .el-dialog__body {
  padding: 10px 15px 10px;
  height: calc(100% - 100px);
  .el-form {
    height: 100%!important;
  }
}
::v-deep .el-dialog__footer {
	padding: 10px 10px 0;
}
.cur-form-item {
  ::v-deep .el-form-item__content {
    margin-left: 0!important;
  }
}
.custom-table-wrap {
  /deep/ .el-form-item {
    margin-bottom: 0!important;
  }
}
.table-row {
  width: 100%;
  height: 40px;
  line-height: 40px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.table-td1 {
  width: 100px;
  padding-right: 20px;
  text-align: right;
  font-size: 12px;
  color: #000000;
}
.table-td {
  width: 25%;
  font-size: 12px;
  color: #000000;
}
</style>