import moment from "moment";
import BigNumber from "bignumber.js";

export default {
    data() {
        return {
            rules: {

                // reference,出口信用证编号
                "ledgrp.rec.ownref": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],

                // Nominal Currency,信用证币种
                "ledgrp.cbs.nom1.cur": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                // Nominal Amount,信用证金额
                "ledgrp.cbs.nom1.amt": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {
                        validator: function (rule, value, callback) {
                            if (value <= 0) {
                                return callback(new Error('The amount has to be positive'));
                            }
                            //校验通过
                            callback();
                        },
                        trigger: ['blur', 'change']
                    }
                ],

                // Additional Amount, 附加金额
                "ledgrp.cbs.max2.amt": [
                    {
                        validator: (rule, value, callback) => {

                            if (this.model.letp.addamtflg!= '') {
                                if( value===null || value==='' ||new BigNumber(value).comparedTo(new BigNumber(0))==0){
                                    return callback(new Error('Additional amount is selected. Please enter an amount or deselect additional amount.'));
                                }else{
                                    if(new BigNumber(value).comparedTo(new BigNumber(0))<=0){
                                        return callback(new Error('The amount has to be positive'));
                                    }
                                }
                            }

                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],

                // Issued on,开证日
                "ledgrp.rec.opndat": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {

                                if (moment(value).diff(moment(new Date().Format("yyyy-MM-dd")), 'days') > 0) {

                                    return callback(new Error('An opening date in the future is not allowed'));
                                }
                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],

                // Expiring on,过期日
                "ledgrp.rec.expdat": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {
                        validator: (rule, value, callback) => {

                            // 不能晚于或等于 通知开立日期 opndat
                            if (this.model.ledgrp.rec.opndat != '' && this.model.ledgrp.rec.opndat != null) {

                                if (!(moment(value).diff(moment(this.model.ledgrp.rec.opndat), 'days') >= 0)) {

                                    return callback(new Error('This date must not be before the issuing date'));
                                }
                            }

                            // 不能晚于或等于 装船日 shpdat
                            if (this.model.ledgrp.rec.shpdat != '' && this.model.ledgrp.rec.shpdat != null) {

                                if (!(moment(value).diff(moment(this.model.ledgrp.rec.shpdat), 'days') >= 0)) {

                                    return callback(new Error('This date cannot be before the shipment date'));
                                }
                            }

                            // 不能晚于或等于 advdat
                            if (this.model.ledgrp.rec.advdat != '' && this.model.ledgrp.rec.advdat != null) {

                                if (!(moment(value).diff(moment(this.model.ledgrp.rec.advdat), 'days') >= 0)) {

                                    return callback(new Error('This date cannot be before the shipment date'));
                                }
                            }

                            callback();

                        }, trigger: ['blur', 'change']
                    },
                ],

                // in (Place)/ counters of,地点
                "ledgrp.rec.expplc": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                // Confirmation Instruct.Received,接收承兑指令
                "ledgrp.rec.cnfdet": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                // Applicable rules
                "ledgrp.rec.apprul": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                //====当事人描述========================================

                // applicant
                // "ledgrp.apl.pts.ref": [
                //     {required: false, message: "This field is mandatory"},
                //     {max: 16, message: "长度不能超过16"}
                // ],
                // "ledgrp.apl.pts.extkey": [
                //     {required: true, message: "This field is mandatory"},
                //     {max: 16, message: "长度不能超过16"}
                // ],
                // "ledgrp.apl.pts.adrblk": [
                //     { type: "string", required: true, message: "This field is mandatory" },
                // ],

                // beneficary
                "ledgrp.ben.pts.ref": [
                    {required: false, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],
                "ledgrp.ben.pts.extkey": [
                    {required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],
                "ledgrp.ben.pts.adrblk": [
                    { type: "string", required: true, message: "This field is mandatory" },
                ],

                // issuing bank
                "ledgrp.iss.pts.ref": [
                    {required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],
                "ledgrp.iss.pts.extkey": [
                    {required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],
                "ledgrp.iss.pts.adrblk": [
                    { type: "string", required: true, message: "This field is mandatory" },
                ],


                // Available with, 选择下拉列表
                "ledgrp.rec.avbwth": [
                    {required: true, message: "This field is mandatory"},
                ],

                // Available by,信用证兑付方式
                "ledgrp.rec.avbby": [
                    {required: true, message: "This field is mandatory"},
                ],

                // Maxmum Tenor Days,付款期限
                "ledgrp.rec.tenmaxday": [
                    {required: false, message: "This field is mandatory"},
                ],

                // 中文货物描述
                "ledgrp.rec.goddspcn": [
                    {required: true, message: "This field is mandatory"},
                ],


                // ownref, 单据编号
                "bedgrp.rec.ownref": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],

                // reference,prb信用证编号
                "bedgrp.prb.pts.ref": [
                    {type: "string", required: true, message: "This field is mandatory"},
                    {max: 16, message: "长度不能超过16"}
                ],

                // 单据金额币种,必输项
                "bedgrp.cbs.max.cur": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                // 单据金额,应业务老师的要求,单据金额默认为空,且为必输项
                "bedgrp.cbs.max.amt": [
                    {type: "string", required: true, message: "This field is mandatory"},

                    {
                        validator: function (rule, value, callback) {
                            if (value <= 0) {
                                return callback(new Error('The document amount has to be positive'));
                            }
                            //校验通过
                            callback();
                        },
                        trigger: ['blur', 'change']
                    }
                ],

                // 发票类型,必输
                "bedgrp.rec.invtyp": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                // 发票号,必输
                "bedgrp.rec.invref": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],


                // 单据类型,This field is mandatory
                "srm.djutyp": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],


                "bedgrp.rec.docprbrol": [
                    {type: "string", required: true, message: "This field is mandatory"},
                ],

                "ledgrp.rec.shpdat": [
                    {
                        validator: (rule, value, callback) => {

                            // 装船日 shpdat 不能大于 过期日 expdat
                            // 不过此处可以等于,但是在过期日expdat的校验时,是必须要大于装船日shpdat的
                            if (value != '' && value != null) {

                                if (this.model.ledgrp.rec.expdat != '' && this.model.ledgrp.rec.expdat != null) {

                                    if (!(moment(value).diff(moment(this.model.ledgrp.rec.expdat), 'days') <= 0)) {

                                        return callback(new Error('This date cannot be after the expiration date'));
                                    }
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],

                "ledgrp.blk.addamtcov":[

                    {
                        validator: (rule, value, callback) => {

                            if (this.model.letp.addamtflg!= '') {
                                if( this.model.ledgrp.cbs.max2.amt!=null &&new BigNumber(this.model.ledgrp.cbs.max2.amt).comparedTo(new BigNumber(0))!=0){
                                    if(value===null || value ===''){
                                        return callback(new Error('This field is mandatory'));
                                    }

                                }
                            }

                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],
                "ledgrp.rec.nomtop":[
                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(new BigNumber(value).comparedTo(new BigNumber(0))<0){
                                    return callback(new Error('The amount tolerance has to be positive'));
                                }
                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }

                ],
                "ledgrp.rec.nomton":[
                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(new BigNumber(value).comparedTo(new BigNumber(0))<0){
                                    return callback(new Error('Please enter this amount tolerance without a sign'));
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }

                ],

                "ledgrp.rec.shpfro":[

                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(value.length>140){
                                    return callback(new Error('Cannot split message >140. Too many message'));
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],
                "ledgrp.rec.porloa":[

                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(value.length>140){
                                    return callback(new Error('Cannot split message >140. Too many message'));
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],
                "ledgrp.rec.pordis":[

                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(value.length>140){
                                    return callback(new Error('Cannot split message >140. Too many message'));
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],
                "ledgrp.rec.shpto":[

                    {
                        validator: (rule, value, callback) => {

                            if (value != '' && value != null) {
                                if(value.length>140){
                                    return callback(new Error('Cannot split message >140. Too many message'));
                                }

                            }
                            callback();

                        }, trigger: ['blur', 'change']
                    }
                ],

            }
        }
    }
}