import moment from 'moment';
import LimitbodyCheck from '~/components/business/limitbody/model/check.js';
import CfabopCheck from '~/components/business/cfa/cfabop/model/check.js';
import Utils from "~/utils"
import BigNumber from "bignumber.js";

export default function () {
    return {
        ...new LimitbodyCheck(this).check,
        ...new CfabopCheck(this).check,
        // ...new CfagitCheck(this).check,
        "bpdgrp.rec.mcdate": [
            { type: "string", required: true, message: "必输项" },
        ],
        "bpdgrp.rec.bmhrzd": [
            { type: "string", required: true, message: "必输项" },
            {
                validator: (rule, value, callback) => {
                    if (moment(value).diff(moment(this.model.bpdgrp.rec.matdat), 'days') < 0) {
                        callback(new Error('包买行融资期限应大于等于融资到期日'));
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "bpdgrp.rec.bmhamt": [
            {
                validator: (rule, value, callback) => {
                    if (!value || Number(value) == 0) {
                        callback(new Error('必输项'));
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "bpdgrp.rec.bmhrat": [
            {
                validator: (rule, value, callback) => {
                    if (this.model.bpdgrp.rec.ffttyp == "0") {
                        if (!value || Number(value) == 0) {
                            callback(new Error('必输项'));
                        }
                        if (new BigNumber(value).comparedTo(new BigNumber(this.model.bpdgrp.rec.tolrat)) > 0) {
                            callback(new Error('我行卖出执行利率需小于等于执行利率'));
                        }
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "finmod.accbch": [
            {
                validator: (rule, value, callback) => {
                    if (this.model.bpdgrp.rec.ywacct === "") {
                        callback(new Error('请点击获取融资所在机构'));
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "blcgrp.rec.facrcvdat": [
            { type: "string", required: true, message: "必输项" },
            {
                validator: (rule, value, callback) => {
                    if (value && this.model.blcgrp.rec.loadat) {
                        if (moment(value).diff(moment(this.model.blcgrp.rec.loadat)) < 0) {
                            callback(new Error('还款日不得早于放款日'));
                        }
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "zxbgrp.rec.facrcvdat": [
            { type: "string", required: true, message: "必输项" },
            {
                validator: (rule, value, callback) => {
                    if (value && this.model.zxbgrp.rec.loadat) {
                        if (moment(value).diff(moment(this.model.zxbgrp.rec.loadat)) < 0) {
                            callback(new Error('还款日不得早于放款日'));
                        }
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "setamt": [
            {
                validator: (rule, value, callback) => {
                    if (this.model.finmod.cbs.calflg === "") {
                        callback(new Error('融资还款试算有误或者未试算,请重试'));
                    } else {

                        let setAmt = 0;
                        if (this.model.finmod.intprd == "6") {
                            setAmt = new BigNumber(this.model.finmod.cbs.cbe.amt);
                        } else {
                            setAmt = new BigNumber(this.model.finmod.cbs.cbe.intamt1).plus(new BigNumber(this.model.finmod.cbs.cbe.intamty1)).plus(new BigNumber(this.model.finmod.cbs.cbe.intamt2)).plus(new BigNumber(this.model.finmod.cbs.cbe.intamty2)).plus(new BigNumber(this.model.finmod.cbs.cbe.intamt)).plus(new BigNumber(this.model.finmod.cbs.cbe.amt));
                        }
                        if (this.model.finmod.intprd == "") {
                            if (new BigNumber(this.model.setamt).comparedTo(new BigNumber(this.model.finmod.cbs.cbe.amt)) != 0
                                && new BigNumber(this.model.setamt).comparedTo(new BigNumber(this.model.finmod.cbs.cbe.amt).plus(new BigNumber(this.model.finmod.cbs.totint)) != 0)) {
                                callback(new Error('还款总额计算有误,请重算'));
                            }
                        } else {
                            if (new BigNumber(this.model.setamt).comparedTo(setAmt) != 0) {
                                callback(new Error('还款总额计算有误,请重算'));
                            }
                        }
                        // if (this.model.finmod.reptyp == "2" && new BigNumber(this.model.setamt).comparedTo(new BigNumber(this.model.bpdgrp.cbs.max.amt)) == 0) {
                        //     callback(new Error('部分还款金额应小于融资放款总额'));
                        // }
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "setmod.docamt": [
            {
                validator: (rule, value, callback) => {
                    if (new BigNumber(this.model.setmod.docamt).comparedTo(new BigNumber(this.model.bpdgrp.cbs.opn1.amt)) > 0) {
                        callback(new Error('More than the open amount of ' + this.model.bpdgrp.cbs.opn1.cur + ' ' + this.model.bpdgrp.cbs.opn1.amt + ' cannot be repaid'));
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "finmod.reptyp": [
            {
                validator: (rule, value, callback) => {
                    if (value == "2" && this.model.bpdgrp.rec.opttyp == "2") {
                        callback(new Error('转卖时不能部分还款,必须一次性还款'));
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        "bpdgrp.rec.baomzh": [
            {
                validator: (rule, value, callback) => {
                    let num = this.model.setmod.setglg.setgll.length;
                    for (let i = 0; i < num; i++) {
                        if (
                            this.model.setmod.setglg.setgll[i].rol == "FIA"
                            && this.model.setmod.setglg.setgll[i].debcdtflg == "D"
                            && this.model.setmod.setglg.setgll[i].act != value
                            && (this.model.setmod.setglg.setgll[i].dsp == "SPD" || this.model.setmod.setglg.setgll[i].dsp == "ARD")
                        ) {
                            callback(new Error('付款账号与账务中的借记账号不一致'));
                        }
                    }
                    callback();
                },
                trigger: ['change', 'blur']
            },
        ],
        // "bpdgrp.rec.bmhamt": [
        //     {
        //         validator: (rule, value, callback) => {
        //             if (new BigNumber(value).comparedTo(new BigNumber(this.model.bpdgrp.cbs.max.amt).plus(new BigNumber("0.1"))) > 0) {
        //                 callback(new Error('包买行汇入我行款项金额不能大于还款金额+0.1元'));
        //             }
        //             callback();
        //         },
        //         trigger: ['change', 'blur']
        //     },
        // ],
    }
}