<template>
    <div class="eibs-tab">
        <el-table :data="model.recgrp.tek" @selection-change="handleSelectionChange" style="width: 100%">
            <!--                <el-table-column type="selection" width="50"></el-table-column>-->
            <el-table-column label="序号" type="index" width="50"></el-table-column>
            <el-table-column :formatter="formatOpertype" label="明细操作类型" prop="listopertype"></el-table-column>
            <el-table-column label="资金融出银行代码" prop="outbankcode"></el-table-column>
            <el-table-column label="资金融出银行国家(地区)代码" prop="outcountrycode"></el-table-column>
            <el-table-column label="资金融入企业名称" prop="inorgname"></el-table-column>
            <el-table-column label="资金融入企业国家(地区)代码" prop="incountrycode"></el-table-column>
            <el-table-column fixed="right" label="操作" v-if="showButton" width="150">
                <template slot-scope="scope">
                    <el-button @click="handleEdit(scope.$index,scope.row)" size="mini">编辑</el-button>
                    <el-button @click="handleDelete(scope.$index)" size="mini">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
        <div style="margin-top: 20px" v-show="showButton">
            <el-button @click="addRow" type="primary">添 加</el-button>
            <!--                <el-button @click="deleteSelectedRows" type="primary">删 除</el-button>-->
        </div>
        <el-dialog :before-close="cancel" :visible.sync="showDialog" center title="明细信息" v-dialogDrag v-if="showDialog">
            <el-form :model="formData" :rules="rules" :validate-on-rule-change="false" label-width="150px" ref="formRef"
                     style="width: 100%">
                <c-row>
                    <c-col :span="12">
                        <el-form-item label="资金融出银行代码" prop="outbankcode">
                            <c-input placeholder="请输入资金融出银行代码" v-model="formData.outbankcode"></c-input>
                        </el-form-item>
                    </c-col>
                    <c-col :span="12">
                        <el-form-item label="资金融出银行国家(地区)代码" prop="outcountrycode">
                            <c-select-cty placeholder="请输入资金融出银行国家(地区)代码"
                                          v-model="formData.outcountrycode"></c-select-cty>
                        </el-form-item>
                    </c-col>
                </c-row>
                <c-row>
                    <c-col :span="12">
                        <el-form-item label="资金融入企业名称" prop="inorgname">
                            <c-input placeholder="请输入资金融入企业名称" v-model="formData.inorgname"></c-input>
                        </el-form-item>
                    </c-col>
                    <c-col :span="12">
                        <el-form-item label="资金融入企业国家(地区)代码" prop="incountrycode">
                            <c-select-cty placeholder="请输入资金融入企业国家(地区)代码"
                                          v-model="formData.incountrycode"></c-select-cty>
                        </el-form-item>
                    </c-col>
                </c-row>
                <c-row>
                    <c-col :span="12">
                        <el-form-item label="单证金额" prop="contractamt">
                            <c-input-currency placeholder="请输入单证金额" v-model="formData.contractamt"></c-input-currency>
                        </el-form-item>
                    </c-col>
                </c-row>
            </el-form>
            <span class="dialog-footer" slot="footer">
                <el-button @click="saveRow" type="primary">保 存</el-button>
                <el-button @click="cancel" type="primary">取 消</el-button>
            </span>
        </el-dialog>
    </div>
</template>

<script>
    import event from "../event";
    import {checkRuleOfTEK} from "RcpmisRules";

    export default {
        inject: ["calcRmbbop"],
        props: ["model", "codes"],
        mixins: [event],
        data() {
            return {
                showDialog: false,
                formData: {
                    outbankcode: '',
                    outcountrycode: '',
                    inorgname: '',
                    incountrycode: '',
                    contractamt: 0,
                },
                rules: {
                    //高阶函数返回的数组
                    ...checkRuleOfTEK().call({module: "TEKCOM"}).call(this, this)
                    // outbankcode: [
                    //     {required: true, message: "必输项"},
                    //     {min: 11, max: 12, message: "长度必须是11位或12位"},
                    // ],
                    // outcountrycode: [
                    //     {required: true, message: "必输项"},
                    // ],
                    // inorgname: [
                    //     {required: true, message: "必输项"},
                    // ],
                    // incountrycode: [
                    //     {required: true, message: "必输项"},
                    // ],
                    // contractamt: [
                    //     {required: true, message: "必输项"},
                    // ],
                },
                selectedRows: [],
                isEdit: false,
                index: -1,
            };
        },
        computed: {
            showButton() {
                return this.$store.state.Status.mode !== "display"
            },
        },
        methods: {
            handleSelectionChange(selection) {
                this.selectedRows = selection;
            },
            toggleShow() {
                this.showDialog = !this.showDialog;
            },
            addRow() {
                this.isEdit = false;
                let tek = {
                    outbankcode: '',
                    outcountrycode: '',
                    inorgname: '',
                    incountrycode: '',
                    contractamt: 0,
                };
                this.index = this.model.recgrp.tek.push(tek) - 1;
                this.calcRmbbop().then((rtnmsg) => {
                    if (rtnmsg.respCode === SUCCESS) {
                        this.formData = this.model.recgrp.tek[this.index];
                    }
                });
                this.toggleShow();
            },
            saveRow() {
                this.$refs.formRef.validate((valid) => {
                    if (valid) {
                        this.$set(this.model.recgrp.tek, this.index, {...this.formData});
                        this.$refs.formRef.resetFields();
                        this.toggleShow();
                    } else {
                        // 前端校验失败
                        this.$notify({
                            title: '失败',
                            message: '校验失败',
                            type: 'error',
                        });
                        return false;
                    }
                })

            },
            cancel() {
                if (!this.isEdit)
                    this.model.recgrp.tek.splice(this.index, 1);
                this.toggleShow();
            },
            handleEdit(index, row) {
                this.isEdit = true;
                this.index = index;
                this.formData = {...row};
                this.toggleShow()
            },
            handleDelete(index) {
                this.model.recgrp.tek.splice(index, 1);
            },
            deleteSelectedRows() {
                if (this.selectedRows.length === 0) {
                    this.$message.warning('请先选择要删除的数据行');
                    return;
                }
                this.selectedRows.forEach(row => {
                    const index = this.model.recgrp.tek.indexOf(row);
                    if (index !== -1) {
                        this.model.recgrp.tek.splice(index, 1);
                    }
                });
                this.$message.success('成功删除选中行');
                this.selectedRows = [];
            },
            formatOpertype(row, column, cellValue) {
                if (cellValue === "1") return "新增";
                if (cellValue === "2") return "变更";
            },
        }
    };
</script>
<style>
</style>