import Api from '~/service/Api';
import * as BopTools from  '../utils/BopTools'

export default function () {
  return {
    "recgrp.bas.actiontype": [
      { type: "string", required: true, message: "必输项" },
    ],
    "recgrp.bas.actiondesc": [
      { type: "string", required: this.model.recgrp.bas.actiontype === 'D', message: "必输项" },
    ],
    "recgrp.bas.buscode": [
      { type: "string", required: true, message: "必输项" },
    ],
    "recgrp.bas.custcod": [
      { type: "string", required: this.model.recgrp.bas.custype == 'C', message: "必输项" },
    ],
    "recgrp.bas.custnm": [
      { type: "string", required: true, message: "必输项" },
    ],
    "recgrp.bas.custype": [
      { type: "string", required: true, message: "此栏位为必输项!" },
      {
        validator: (rule, value, callback) => {
          if(BopTools.startsWithValueUpper.call(this,this.trnName,"-DBA-DBB-DBC-")&&this.model.recgrp.bas.oppuser.startsWith("(JN)")&& BopTools.indexGt.call(this,value,"-F-")){
            return callback(new Error("53:交易对方名称以“(JN)”开头,申报主体类型不能为“对私非居民”"))
          }
        }
      }
    ],
    "recgrp.bas.exrate": [
      {
        validator: (rule, value, callback) => {
          if (!isNaN(value)) {
            if (Number(value) == 0) {
              if (Number(this.model.recgrp.bas.lcyamt) > 0) {
                return callback(new Error("汇率必须大于0!"))
              }
            } else {
              if (Number(this.model.recgrp.bas.lcyamt) == 0) {
                return callback(new Error("此栏位必须为零!"))
              }
            }
          } else {
            return callback(new Error("请重新录入"))
          }
          callback()
        }
      },
    ],
    "recgrp.bas.fcyacc": [
      { type: "string", required: Number(this.model.recgrp.bas.fcyamt) != 0, message: "必输项" },
      {
        validator: (rule, value, callback) => {
          if (!value && value !='' && Number(this.model.recgrp.bas.fcyamt) == 0) {
            return callback(new Error("此栏位必须为空!"))
          }
          callback()
        }
      }
    ],
    "recgrp.bas.fcyamt": [
      {
        validator: (rule, value, callback) => {
          if (!isNaN(value)) {
            if (Number(value) == 0) {
              if (this.model.recgrp.bas.fcyacc && this.model.recgrp.bas.txccy != 'CNY') {
                return callback(new Error("现汇金额必须大于0"))
              }
            } else if (Number(value) < 0) {
              return callback(new Error("金额不能小于0"))
            }
          } else {
            return callback(new Error("请重新输入"))
          }
          callback()
        }
      }
    ],
    "recgrp.bas.idcode": [
      { type: "string", required: this.model.recgrp.bas.custype !== 'C', message: "必输项" },
      {
        validator: (rule, value, callback) => {
          if (this.model.recgrp.bas.custype == 'C' && value) {
            return callback(new Error("74:申报主体类型为“对公居民”或“对公非居民”,但个人身份证件号码不为空"))
          }
          callback()
        }
      }
    ],
    "recgrp.bas.lcyacc": [
      { type: "string", required: Number(this.model.recgrp.bas.lcyamt)!=0, message: "必输项" },
      {
        validator: (rule, value, callback) => {
          if (value && Number(this.model.recgrp.bas.lcyamt) == 0) {
            return callback(new Error("此栏位必须为空"))
          }
          callback()
        }
      }
    ],
    "recgrp.bas.lcyamt": [
      {
        validator: (rule, value, callback) => {
          if (!isNaN(value)) {
            if (Number(value) == 0) {
              if ((Number(this.model.recgrp.bas.exrate) != 0 || this.model.recgrp.bas.lcyacc) && this.model.recgrp.bas.txccy !== 'CNY') {
                return callback(new Error("此金额必须大于0"))
              }
            } else if (Number(value) < 0) {
              return callback(new Error("金额不能小于0"))
            }
          } else {
            return callback(new Error("请重新输入"))
          }
          callback()
        }
      }
    ],
    "recgrp.bas.method": [
      { type: "string", required: true, message: "必输项" },

    ],
    "recgrp.bas.oppuser": [
      { type: "string", required: true, message: "此栏位为必输项!" },
      {
        validator: (rule, value, callback) => {
            if (BopTools.startsWithValueUpper.call(this,this.trnName,"-DBA-DBB-DBC-")){
              if (value && !value.match(/(\(JN\)|\(JW\))(.)+/g)){
                return callback(new Error("请填写以(JW)或(JN)打头的收/付款人名称"))
              }
          }
          if (BopTools.startsWithValueUpper.call(this,this.trnName,"-DBA-DBB-")){
              if (this.model.recgrp.bas.custype!='C' && value && !/(\(JN\)|\(JW\))(.)+\[acc:(.)+\]/g.test(value)){
                  return callback(new Error("请填写\"(JW)aa[acc:账号]\"格式或\"(JN)aa[acc:账号]\"格式的账号"))
              }
          }
        }
      }

    ],
    "recgrp.bas.othacc": [
      { type: "string", required: Number(this.model.recgrp.bas.othamt) != 0, message: "必输项" },
      {
        validator: (rule, value, callback) => {
          if (value && Number(this.model.recgrp.bas.othamt) == 0) {
            return callback(new Error("此栏位必须为空"))
          }
          callback()
        }
      }

    ],
    "recgrp.bas.othamt": [
      {
        validator: (rule, value, callback) => {
          if (!isNaN(value)) {
            if (this.model.recgrp.bas.txccy == "CNY" && (Number(value) == 0 || Number(this.model.recgrp.bas.lcyamt) > 0 || Number(this.model.recgrp.bas.fcyamt) > 0)) {
              return callback(new Error("61:币种为人民币,但“其他金额”为“0”或空(无数据),或“结汇金额”、“现汇金额”大于“0”"))
            }
            if (Number(value) < 0) {
              return callback(new Error("金额不能小于0"))
            }
          } else {
            return callback(new Error("请重新输入"))
          }
          callback()

        }
      },

    ],
    "recgrp.bas.ownextkey": [
      { type: "string", required: true, message: "必输项" },

    ],
    "recgrp.bas.rptno": [
      { type: "string", required: true, message: "必输项" },

    ],
    "recgrp.bas.txamt": [
      {
        validator: (rule, value, callback) => {
          if (!isNaN(value)) {
            if (Number(value) < 0) {
              return callback(new Error("金额不能小于0"))
            }
          } else {
            return callback(new Error("请重新输入"))
          }
          callback()

        }
      },

    ],




  }
}