<template>
  <div class="calculate-premium-container pb50 pt10 redRadioCheckbox">
    <div class="bg-white ph10 pt10">
      <div class="flex justify-content-s align-items-c border-bottom pb10">
        <span class="mr10">{{ saleInsuredPersonInfo.name }}</span>
        <span class="mr10">{{ saleInsuredPersonInfo.sex == 0 ? '男' : '女' }}</span>
        <span class="mr10">{{ saleInsuredPersonInfo.insuredAge }}岁</span>
        <span class="mr10 flex1 van-ellipsis">{{ saleInsuredPersonInfo.occupationName }}</span>
      </div>
    </div>
    <div v-for="(item, index) in chooseProducts" :key="index" class="ph10 bg-white">
      <div class="flex justify-content-s align-items-c border-bottom pv10">
        <van-tag type="primary" v-if="item.isMainRisk == 0" class="mr5 green" plain>主险</van-tag>
        <van-tag type="primary" v-else class="mr5 green" plain>附加险</van-tag>
        <span class="ml5 center fs13 flex1">{{ item.riskName }}</span>
        <van-tag type="primary" v-if="item.isMainRisk == 0 && item.hasAddtionRisk && isEnterAddtionRisk" plain @click="selectAddtionRisk" class="green mr8"
        >附</van-tag
        >
        <van-icon name="search" size="20" v-if="item.documentDTOS && item.documentDTOS.length > 0" @click="seeDocument(index)" class="green mr5" />
        <van-icon name="delete" size="22" @click="deleteRisk(index,item)" class="green" />
      </div>
      <!-- 险种条件-->
      <div v-if="(item.isRemit == 1 && isTrial == '1') || (item.isRemit == 1 && isTrial != '1' && item.isMainRisk == 1)">
        <!-- <div v-if="item.isRemit == 1 && isTrial == '1'"> -->
        <div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex">
          <!--riskFactor.type 1输入框和步进器 0 下拉选 -->
          <div class="flex justify-content-s pv10 border-bottom" v-if="riskFactor.type == 1 && item.productCode != 'GFRS_A0011'">
            <div class="flex align-items-c">
              <span v-if="riskFactor.suffix" class="fs14">{{ riskFactor.name + '(' + riskFactor.suffix + ')' }}</span>
              <span v-else class="fs14">{{ riskFactor.name }} &nbsp;&nbsp; &nbsp;&nbsp;</span>
              <!-- {{ riskFactorIndex }} -->
              <!-- {{defalutAmt}} -->
              <van-stepper
                v-model.number="item.calFactorLst[riskFactorIndex].displayAmount"
                :min="riskFactor.minAmt || riskFactor.minPrem"
                :max="riskFactor.maxAmt || riskFactor.maxPrem"
                :show-plus="false"
                :show-minus="false"
                class="ml30"
                @change="
                  stepperChange(
                    item.calFactorLst[riskFactorIndex].displayAmount,
                    index,
                    riskFactorIndex,
                    riskFactor.minAmt || riskFactor.minPrem,
                    riskFactor.maxAmt || riskFactor.maxPrem,
                    riskFactor
                  )
                "
                      input-width="100"
                      :integer="false"
              />
            </div>
          </div>
          <!-- GFRS_A0011-附加两全 属于非豁免险  但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费   此处保额单独展示 -->
          <div v-else-if="item.productCode == 'GFRS_A0011' && riskFactor.type == 1 && riskFactor.code == 'amt'" class="flex justify-content-s pv10 border-bottom">
            <van-field v-model="riskFactor.defaultValue" readonly :label="riskFactor.name + '(' + riskFactor.suffix + ')'" />
          </div>
          <!-- //主险的交费期间联动国富人寿附加两全(GFRS_A0011)保险的交费期间 -->
          <div
            class="flex justify-content-s pv10 border-bottom"
            v-if="riskFactor.type == 0 && item.productCode != 'GFRS_A0011'"
            :class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
          >
            <van-field
              v-model="riskFactor.showContent"
              readonly
              :label="riskFactor.name"
              right-icon="arrow"
              placeholder="请选择"
              @click="toSelect(index, riskFactorIndex, riskFactor.columns)"
            />
          </div>
          <div
            class="flex justify-content-s pv10 border-bottom"
            v-else-if="riskFactor.type == 0 && item.productCode == 'GFRS_A0011'"
            :class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
          >
            <van-field
              v-if="riskFactor.code != 'payEndYear'"
              v-model="riskFactor.showContent"
              readonly
              :label="riskFactor.name"
              right-icon="arrow"
              placeholder="请选择"
              @click="toSelect(index, riskFactorIndex, riskFactor.columns)"
            />
            <van-field v-if="riskFactor.code == 'payEndYear'" v-model="riskFactor.showContent" readonly :label="riskFactor.name" />
          </div>
          <div class="border-bottom renewalWrappser fs14" v-if="riskFactor.type == 4 && !renewalShow(mainRiskCode)">
            <span>{{ riskFactor.name }}</span>
            <van-radio-group class="renewal" v-model="renewal" direction="horizontal">
              <van-radio class="radio" name="-1">是</van-radio>
              <van-radio class="radio" name="-2">否</van-radio>
            </van-radio-group>
          </div>
          <!-- 桂企产品——GFRS_M0024/GFRS_M0040——不显示责任保费及（万元），只显示责任名称及勾选框 -->
          <div class="border-bottom" v-if="riskFactor.type == 3">
            <div class="pv12 border-bd">{{ riskFactor.name }}</div>
            <div class="duty">
              <div class="flex justify-content-s border-bd pv10 align-items-c" v-for="(dutyItem, dutyItemIndex) in riskFactor.rules" :key="dutyItemIndex">
                <span
                  v-if="
                    !(
                      item.productCode == 'GFRS_M0024' ||
                      item.productCode == 'GFRS_M0040' ||
                      item.productCode == 'GFRS_M0044' ||
                      item.productCode == 'GFRS_M0046' ||
                      item.productCode == 'GFRS_M0051' ||
                      item.productCode == 'GFRS_M0054' ||
                      item.productCode == 'GFRS_M0073' ||
                      item.productCode == 'GFRS_M0057'
                    )
                  "
                  class="fs14 w100"
                  >{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span
                >
                <span v-else class="fs14 w100">{{ dutyItem.dutyName }}</span>
                <div class="flex relative">
                  <van-stepper
                    v-if="
                      !(
                        item.productCode == 'GFRS_M0024' ||
                        item.productCode == 'GFRS_M0040' ||
                        item.productCode == 'GFRS_M0044' ||
                        item.productCode == 'GFRS_M0046' ||
                        item.productCode == 'GFRS_M0051' ||
                        item.productCode == 'GFRS_M0054' ||
                        item.productCode == 'GFRS_M0073' ||
                        item.productCode == 'GFRS_M0057'
                      )
                    "
                    v-model="dutyItem.defaultDutyAmt"
                    :min="dutyItem.minDutyAmt"
                    :max="dutyItem.maxDutyAmt"
                    :show-plus="false"
                    :show-minus="false"
                    :disabled="item.productCode == 'GFRS_A0012'"
                    class="ml10 mr10"
                    @focus="focusStep"
                    @blur="blurStep(dutyItem, index)"
                    @change="
                      dutyStepperChange(
                        item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
                        index,
                        riskFactorIndex,
                        dutyItemIndex,
                        dutyItem.necess,
                        dutyItem.minDutyAmt,
                        dutyItem.maxDutyAmt
                      )
                    "
                    input-width="200"
                    :integer="false"
                  />
                  <van-checkbox
                    v-model="dutyItem.necess"
                    :disabled="dutyItem.defaultValue == '0'"
                    shape="square"
                    @change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
                  ></van-checkbox>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 为富娃娃两全保险（万能型）专写 外加鑫享年年-->
      <div v-if="item.isRemit == 1 && isTrial != '1' && item.isMainRisk == 0">
        <div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex">
          <div class="flex justify-content-s pv10 border-bottom" v-if="riskFactor.type == 1">
            <div class="flex align-items-c">
              <span v-if="item.productTrialYearDTOS[payEndYearColumnsIndex].suffix" class="fs14">
                {{ riskFactor.name + '(' + item.productTrialYearDTOS[payEndYearColumnsIndex]['suffix'] + ')' }}
              </span>
              <span v-else class="fs14">{{ riskFactor.name }} &nbsp;&nbsp; &nbsp;&nbsp;</span>
              <van-stepper
                v-model.number="item.productTrialYearDTOS[payEndYearColumnsIndex].displayAmount"
                :min="item.productTrialYearDTOS[payEndYearColumnsIndex].minAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].minPrem"
                :max="item.productTrialYearDTOS[payEndYearColumnsIndex].maxAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].maxPrem"
                :show-plus="false"
                :show-minus="false"
                class="ml30"
                @change="
                  stepperChange(
                    item.productTrialYearDTOS[payEndYearColumnsIndex].displayAmount,
                    index,
                    riskFactorIndex,
                    item.productTrialYearDTOS[payEndYearColumnsIndex].minAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].minPrem,
                    item.productTrialYearDTOS[payEndYearColumnsIndex].maxAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].maxPrem,
                    item.productTrialYearDTOS[payEndYearColumnsIndex]
                  )
                "
                input-width="100"
                :integer="false"
              />
            </div>
          </div>
          <div
            class="flex justify-content-s pv10 border-bottom"
            v-if="riskFactor.type == 0"
            :class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
          >
            <van-field
              v-model="riskFactor.showContent"
              readonly
              :label="riskFactor.name"
              right-icon="arrow"
              placeholder="请选择"
              @click="toSelect(index, riskFactorIndex, riskFactor.columns)"
            />
          </div>
          <div class="border-bottom" v-if="riskFactor.type == 3">
            <div class="pv12 border-bd">{{ riskFactor.name }}</div>
            <div class="duty">
              <div class="flex justify-content-s border-bd pv10 align-items-c" v-for="(dutyItem, dutyItemIndex) in riskFactor.rules" :key="dutyItemIndex">
                <span class="fs14 w100">{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span>
                <div class="flex relative">
                  <van-stepper
                    v-model="dutyItem.defaultDutyAmt"
                    :min="dutyItem.minDutyAmt"
                    :max="dutyItem.maxDutyAmt"
                    :show-plus="false"
                    :show-minus="false"
                    class="ml10 mr10"
                    @focus="focusStep"
                    @blur="blurStep(dutyItem, index)"
                    @change="
                      dutyStepperChange(
                        item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
                        index,
                        riskFactorIndex,
                        dutyItemIndex,
                        dutyItem.necess,
                        dutyItem.minDutyAmt,
                        dutyItem.maxDutyAmt
                      )
                    "
                    input-width="200"
                    :integer="false"
                  />
                  <van-checkbox
                    v-model="dutyItem.necess"
                    :disabled="dutyItem.defaultValue == '0'"
                    shape="square"
                    @change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
                  ></van-checkbox>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <!-- 豁免险条件GFRS_A0013,GFRS_A0014 -->
      <div v-if="item.isRemit == 0">
        <div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex" class="border-bottom">
          <div class="flex justify-content-s pv10">
            <div class="flex">
              <van-field v-if="riskFactor.type == 0" v-model="riskFactor.showContent" readonly :label="riskFactor.name" />
              <van-field v-if="riskFactor.type == 1" v-model="riskFactor.defaultValue" readonly :label="riskFactor.name + '(' + riskFactor.suffix + ')'" />
            </div>
          </div>

          <div v-if="riskFactor.type == 3">
            <div class="pv12 border-bd">{{ riskFactor.name }}</div>
            <div class="duty">
              <div class="flex justify-content-s border-bd pv10 align-items-c" v-for="(dutyItem, dutyItemIndex) in riskFactor.rules" :key="dutyItemIndex">
                <span class="fs14 w100">{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span>
                <div class="flex relative">
                  <van-stepper
                    v-model="dutyItem.defaultDutyAmt"
                    :min="dutyItem.minDutyAmt"
                    :max="dutyItem.maxDutyAmt"
                    :show-plus="false"
                    :show-minus="false"
                    class="ml10 mr10"
                    :disabled="dutyItem.changeWithMainRisk === true ? 'disabled' : ''"
                    @focus="focusStep"
                    @blur="blurStep(dutyItem, index)"
                    @change="
                      dutyStepperChange(
                        item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
                        index,
                        riskFactorIndex,
                        dutyItemIndex,
                        dutyItem.necess,
                        dutyItem.minDutyAmt,
                        dutyItem.maxDutyAmt
                      )
                    "
                    input-width="200"
                    :integer="false"
                  />
                  <van-checkbox
                    v-model="dutyItem.necess"
                    :disabled="dutyItem.isDisabled || dutyItem.defaultValue == '0'"
                    shape="square"
                    @change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
                  ></van-checkbox>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 只有万能险且只有建议书才展示 -->
      <van-field class="pv10" v-if="item.hasPredictTransferPrem === '0'" v-model="item.predictTransferPrem" label="预计转入保费" placeholder="请输入" />
      <div class="flex justify-content-s pv10 border-bottom" v-if="item.isMainRisk == 0 && isRelated && isFrom != 'proposal'">
        <van-field
          v-model="policyNo"
          clearable
          label="关联保单"
          name="关联保单号"
          maxlength="380"
          type="textarea"
          autosize
          @blur="getTrial"
          placeholder="请录入保单号或者投保单号,如果关联多个保单，请用\隔开"
        />
      </div>
      <div class="flex justify-content-s pv10 border-bottom prem">
        <!-- trialType 0-保额算保费，1-保费算保额 -->
        <!-- isTrial是否需存在特殊配置(规则) 0-是 1-否-->
        <span
          style="font-weight: bold"
          v-if="(trialList.length > 0 && trialList[index].trialType == 0) || (trialList.length > 0 && trialList[index].trialType == 2)"
        >
          首期保费（元）：
        </span>
        <span style="font-weight: bold" v-else>保额（元）：</span>
        <span class="fee red" v-if="trialList && trialList.length > 0">{{ trialList[index].showPrem | moneyFormat }}</span>
      </div>
    </div>
    <div class="flex justify-content-fs pv10 ph15 bg-white border-bottom prem align-items-c" v-if="cvalidateFlag && cvalidateStr != '2021-12-31'">
      <span>指定保单生效日</span>
      <van-radio-group v-model="activeRadio" class="pl20">
        <van-radio name="1" icon-size="1rem"></van-radio>
      </van-radio-group>
      <span class="pl5">{{ cvalidateStr }}</span>
    </div>
    <div class="bottom-btn bg-white flex" v-if="isFrom == 'proposal'">
      <van-button type="danger" size="large" @click="nextStep" :disabled="nextStepFlag" v-no-more-click="1000">完成</van-button>
    </div>
    <div class="bottom-btn bg-white flex" v-else>
      <van-button plain type="danger" size="large" @click="nextStep('orderTrial')" v-no-more-click="1000">核保试算</van-button>
      <van-button type="danger" size="large" @click="nextStep" :disabled="nextStepFlag" v-no-more-click="1000">下一步</van-button>
    </div>
    <van-action-sheet v-model="show" cancel-text="取消" :actions="policyInfo" @select="openDocument" />

    <!-- 字段选择 -->
    <van-popup v-model="popupShow" position="bottom"><van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="onCancel" /></van-popup>
    <van-dialog v-model="trialResultsShow" title="核保试算结果" :show-cancel-button="false">
      <div class="pl40 pr40 mt10">
        <div class="flex justify-content-s fs12" v-for="(item, index) in verifyResultList" :key="index">
           <div>
             <img class="w20 h20 p10 v-middle" :src="require('@/assets/images/sale/ruleType0'+ item.ruleType +'.png')" alt="">
             <span class="v-middle">{{item.ruleType | ruleTypeFilter}}</span>
           </div>
           <div>
<!--             <span class="v-middle">{{item.status | approvedFilter}}</span>-->
             <img class="w20 h20 p10 v-middle" :src="require('@/assets/images/sale/approved'+ item.status +'.png')" alt="">
           </div>
        </div>
        <div style="padding:25px 0px 10px 10px;font-size: 10px;color: #999;">
          <p style="line-height: 20px;"><span style="width: 40px;display: inline-block;">说明：</span>绿色✔表示 未触发规则、红色×表示 触发规则</p>
        </div>
      </div>
    </van-dialog>
  </div>
</template>
<script>
import { Tag, Icon, Dialog, ActionSheet, Popup, Picker, Stepper, Field, Checkbox, RadioGroup, Radio } from 'vant'
import { trial } from '@/api/ebiz/common/common'
import { saveOrUpdateOrderInfo, getOrderDetail,orderTrial } from '@/api/ebiz/sale/sale'
import { saveProposal, getTrialRecordInfo, saveOrUpdateTrialRecordInfo } from '@/api/ebiz/proposal/proposal.js'
import { getAgentInfo } from '@/api/ebiz/my/my.js'
import occupationList from '@/components/ebiz/occipation/data/occupation'
import utilsAge from '@/assets/js/utils/age'
import riskRules from "./risk-rules";

  //险种GFRS_M0016的责任的验证规则
  //默认 最低基本保险金额min 10000 整数倍要求mutiple 1000
  const dutyRules = {
    410800: {
      min: 50000,
      msg: '意外基本保险金额最低为50000元，超过最低基本保险金额为1000元整数倍'
    },
    410805: {
      msg: '轨道列车意外基本保险金额最低为10000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    410801: {
      msg: '客运汽车意外基本保险金额最低为10000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    410802: {
      msg: '客运轮船意外基本保险金额最低为10000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    410803: {
      msg: '客运民航班机意外基本保险金额最低为10000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的10倍'
    },
    410804: {
      msg: '自驾车意外基本保险金额最低为10000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    410806: {
      min: 2000,
      msg: '意外伤害医疗基本保险金额最低为2000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的1/5倍'
    },
    410807: {
      min: 10,
      mutiple: 10,
      msg: '意外住院津贴日额最低基本保险金额为10元/天，超过最低基本保险金额为10元/天整数倍，最高不得超过200元/天'
    }
  }

  //险种GFRS_M0070的责任的验证规则
  //默认 最低基本保险金额min 10000 整数倍要求mutiple 1000
  const dutdutyGFRS_M0070RulesyRules = {
    411200: {
      min: 100000,
      msg: '意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍'
    },
    411201: {
      min: 100000,
      msg: '轨道列车意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    411202: {
      min: 100000,
      msg: '客运汽车意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    411203: {
      min: 100000,
      msg: '客运轮船意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    411204: {
      min: 100000,
      msg: '客运民航班机意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍，并且小于等于意外基本保险金额的10倍'
    },
    411205: {
      min: 100000,
      msg: '自驾车意外基本保险金额最低为100000元，超过最低基本保险金额为10000元整数倍，并且小于等于意外基本保险金额的5倍'
    },
    411206: {
      min: 2000,
      mutiple: 1000,
      msg: '意外伤害医疗基本保险金额最低为2000元，超过最低基本保险金额为1000元整数倍，并且小于等于意外基本保险金额的1/5倍'
    },
    411207: {
      min: 10,
      mutiple: 10,
      msg: '意外住院津贴日额最低基本保险金额为10元/天，超过最低基本保险金额为10元/天整数倍，最高不得超过200元/天'
    }
  }

  const dutyGFRS_A0004Rules = {
    320205: {
      mainRisk: 'GFRS_M0005',
      msg: '住院医疗提示：金额只能是0.5、1、1.5、2',
      msg_1: '附加到国富人寿国富民惠医疗保险（2020版）最高基本保额不超过1万元。',
      msg_2: '住院医疗提示：金额只能是0.5、1'
    },
    320206: {
      msg: '住院津贴提示：投保可选责任时，可选责任最低投保 50 元，且应为 10 元的整数倍'
    },
    320207: {
      msg: '恶性肿瘤提示：投保可选责任时，可选责任最低投保 50 元，且应为 10 元的整数倍'
    }
  }
  const dutyGFRS_A0008Rules = {
    320404: {
      mainRisk: 'GFRS_M0005',
      otmainRisk: 'GFRS_M0031',
      mainRisk2: 'GFRS_M0042',
      otmainRisk2: 'GFRS_M0043',
      msg: '住院医疗提示：金额只能是0.5、1、1.5、2',
      msg_1: '附加到国富人寿国富民惠医疗保险（2020版）最高基本保额不超过1万元。',
      msg_2: '住院医疗提示：金额只能是0.5、1'
    },
    320405: {
      msg: '住院津贴提示：投保可选责任时，可选责任最低投保 50 元，且应为 10 元的整数倍'
    },
    320406: {
      msg: '恶性肿瘤提示：投保可选责任时，可选责任最低投保 50 元，且应为 10 元的整数倍'
    }
  }
  const DUTY_DEFAULT_MUTIPLE = 1000
  const DUTY_DEFAULT_MIN = 10000

export default {
  name: 'calculatePremium',
  filters: {
    ruleTypeFilter(val) {
      switch (val) {
        case '1':
          return '体检:'
        case '2':
          return '财务问卷：'
        case '3':
          return '契调：'
        case '4':
          return '财务资料：'
      }
    },
    approvedFilter(val) {
      switch (val) {
        case '0':
          return '达标:'
        case '1':
          return '未达标'
      }
    }
  },
  components: {
    [Tag.name]: Tag,
    [Icon.name]: Icon,
    [ActionSheet.name]: ActionSheet,
    [Popup.name]: Popup,
    [Picker.name]: Picker,
    [Stepper.name]: Stepper,
    [Field.name]: Field,
    [Checkbox.name]: Checkbox,
    [Dialog.name]: Dialog,
    [Radio.name]: Radio,
    [RadioGroup.name]: RadioGroup
  },
  data() {
    return {
      branchTypeVal: '', //个险渠道G  中介渠道Z
      isEnterAddtionRisk: true, //附加险list
      activeRadio: '1',
      // activeType: localStorage.getItem('active_type'),  现在从订单详情接口取值了
      activeType: '',
      cvalidateFlag: false,
      cvalidateStr: '', //活动生效日
      chooseProducts: [],
      productIndex: '',
      calFactorIndex: '',
      premiumData: [], //试算
      saleInsuredInfo: {},
      saleInsuredPersonInfo: {}, //投保人信息
      trialList: [],
      popupShow: false,
      columns: [],
      pickerType: '',
      show: false,
      policyInfo: [],
      currentIndex: '', //当前操作产品
      trialInfos: [],
      influenceAddRiskCodes: [],
      influences: [],
      nextStepFlag: false,
      isRelated: localStorage.isRelated === '0', //关联保单号
      policyNo: '',
      // 份数
      mult: '',
      isFrom: '',
      // 默认钱数
      defalutAmt: '',
      //是否需存在特殊配置 0-是 1-否
      isTrial: localStorage.isTrial,
      //缴费期间对应index索引
      payEndYearColumnsIndex: 0,
      // 后台配置的校验规则
      ruleExpression: {},
      mainRiskCode: '',
      renewal: '-1',
      richChildrenFlag: false,
      isCrossChannel: '0', //是否交叉渠道 1-是 0-否
      trialResultsShow:false,  //核保试算结果
      verifyResultList:[] //核保试算返回数据结构
    }
  },
  mounted() {
    this.isFrom = window.localStorage.isFrom
    this.$jump({
      flag: 'navigation',
      extra: {
        title: '保费计算'
      },
    })
    if(this.isFrom === 'proposal'){
      // eslint-disable-next-line no-undef
      setTimeout(() => {
        EWebBridge.webCallAppInJs('webview_right_button', {
          btns: [
            {
              img: this.$assetsUrl + 'images/del-close.png',
              route: { flag: '', extra: {} }
            }
          ]
        })
      }, 500)
    }
    window.appCallBack = this.appCallBack
    getAgentInfo({}).then(res => {
      // branchType N1、1代表个险渠道 和 N5、5 代表中介渠道，N代表内勤
      if (res.branchType == 'N1' || res.branchType == '1') {
        this.branchTypeVal = 'G'
      } else if (res.branchType == 'N5' || res.branchType == '5') {
        this.branchTypeVal = 'Z'
      } else if (res.branchType == '2') {
        // 2 团险业务员
        this.branchTypeVal = 'T'
      } else if (res.branchType == '3') {
        // 3 银保业务员
        this.branchTypeVal = 'Y'
      }
    })
    this.init()
    Array.prototype.min = function () {
      var min = this[0]
      var len = this.length
      for (var i = 1; i < len; i++) {
        if (this[i] < min) {
          min = this[i]
        }
      }
      return min
    }
  },
  methods: {
    appCallBack(data) {
      if (data.trigger == 'right_button_click' && localStorage.isFrom == 'proposal') {
        return this.$dialog
        .confirm({
          className: 'dialog-delete',
          title: '提示',
          message: '退出流程可能会丢失部分数据，是否确认退出？',
          cancelButtonColor: '#E9332E',
          confirmButtonColor: '#FFFFFF'
        })
        .then(() => {
          this.$jump({
            flag: 'h5',
            extra: {
              title: '建议书列表',
              forbidSwipeBack: 1, //当前页面禁止右滑返回
              url: location.origin + `/#/proposal/list`
            },
            routerInfo: {
              path: `/proposal/list`,
              type: '1'
            }
          })
        })
        .catch(() => {
          return
        })
      }
    },
    renewalShow(productCode) {
      let codes = ['GFRS_M0016', 'GFRS_M0005', 'GFRS_M0018','GFRS_M0070']
      return codes.find((item) => {
        return productCode === item
      })
    },
    //初始化数据
    async init() {
      // 获取是否从建议书过来的
      let that = this
      //获取投保人信息
      if (this.$CacheUtils.getLocItem('saleInsuredInfo')) {
        this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo'))
      }
      //获取被保险人信息
      if (this.$CacheUtils.getLocItem('saleInsuredPersonInfo')) {
        this.saleInsuredPersonInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo'))
        this.saleInsuredPersonInfo.insuredAge = this.saleInsuredPersonInfo.insuredAge ? this.saleInsuredPersonInfo.insuredAge : this.saleInsuredPersonInfo.age
        if(this.saleInsuredPersonInfo.birthday){
          this.saleInsuredPersonInfo.insuredAge = utilsAge.getAge(this.saleInsuredPersonInfo.birthday, new Date())
        }
        if (this.isFrom == 'proposal' && !this.saleInsuredPersonInfo.name) {
          // 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
          let sex = this.saleInsuredPersonInfo.sex == '0'?'男':'女'
          this.saleInsuredPersonInfo.name = sex + this.saleInsuredPersonInfo.insuredAge+'岁'
        }
      }

      // this.cvalidateFlag = (this.activeType == 'KMH'||this.activeType == 'SQY') && this.isFrom != 'proposal'
      // this.cvalidateStr = this.cvalidateFlag?this.activeType == 'KMH'?'2021-01-01':this.activeType == 'SQY'?'2021-06-01':'':''
      //GFRS-2552【需求】关于金掌桂投保流程增设指定生效日按钮的申请
      const orderNo = this.$route.query.orderNo
      let detailPromise = this.isFrom === 'proposal' ? localStorage.proposalMedical : await getOrderDetail({ orderNo })
      let collect = (data,code) => {
        data.forEach(item => {
          if (item.code == code) {
            this.saleInsuredPersonInfo.healthGrade = item.healthGrade
            this.saleInsuredPersonInfo.lifeGrade = item.lifeGrade
          } else {
            if (item.subs && item.subs.length != 0) {
              collect(item.subs,code)
            }
          }
        })
      }
      if (this.isFrom != 'proposal') {
        collect(occupationList,detailPromise.orderDTO.insuredDTOs[0].occupationCode)
        //活动生效日期
        this.cvalidateStr = detailPromise.orderDTO.orderInfoDTO.cvaliDate
        this.activeType = detailPromise.orderDTO.orderInfoDTO.activeType
      }
      this.cvalidateFlag = this.activeType && this.isFrom != 'proposal'
      //构建提交数据、渲染险种
      if(this.$route.query.insuanceIdInfo && this.isFrom == 'proposal'  && !localStorage.editproposaladdrisk){
        // 获取试算记录详情
        let serialNo = ''
        if (this.$route.query.orderNo) {
          serialNo = this.$route.query.orderNo
        }
        if (this.$route.query.proposalOrderNo) {
          serialNo = this.$route.query.proposalOrderNo
        }
        let thismyinsuanceIdInfo = JSON.parse(this.$route.query.insuanceIdInfo)
        let insuanceId = ''
        let riskProductCode = ''
        thismyinsuanceIdInfo.forEach(item=>{
          if(item.isMainRisk == 0){
            insuanceId = item.insuanceId
            riskProductCode = item.riskCode
          }
        })
        await getTrialRecordInfo({
          serialNo:serialNo,
          mainRiskId:insuanceId
        }).then(res => {
          if (res.result == '0') {
            this.chooseProducts = JSON.parse(res.content.trialJsonStr)
            this.trialRecordInfoId = res.content.id
          } else {
            this.$toast(res.resultMessage)
          }
        })
      }else{
        this.chooseProducts = JSON.parse(localStorage.chooseProducts)
      }
      this.chooseProducts.forEach((item, index) => {
        if (item.isCrossChannel == '1') {
          this.isCrossChannel = item.isCrossChannel
        }
        if (item.mainRiskCode == 'GFRS_M0006') {
          item.isHidden = true
        }
        if (item.mainRiskCode != 'GFRS_M0008') {
          item.calFactorLst.map((i) => {
            // this.defalutAmt = i.displayAmount || 1
            if (i.code == 'inputPrem') {
              this.mult = Math.ceil(Number(i.displayAmount) / Number(i.defaultValue))
            }
          })
        }
        if (item.mainRiskCode == 'GFRS_M0046') {
          if (this.saleInsuredPersonInfo.relationToAppnt == 1) {
            this.isEnterAddtionRiskListFunc()
          }
        }
        let payEndYearVal
        //初始化时交费期间为一次性交清时，在就是中介渠道, 附加险GFRS_A0007，GFRS_A0009，GFRS_A0010去掉后，附加险list就为空--隐藏’附‘icon
        item.calFactorLst.map((i) => {
          if (i.code == 'payEndYear') {
            if (i.payEndYear == '1000' && i.payEndYearFlag == 'Y') {
              this.isEnterAddtionRiskListFunc()
            }
            //初始化时取交费期间的值
            payEndYearVal = i.showContent
          }
        })
        if (index == 0) {
          if (item.productTrialYearDTOS) {
            //初始化时取交费期间的值，值再去对应productTrialYearDTOS中的第几条规则
            item.productTrialYearDTOS.forEach((item, index) => {
              if (payEndYearVal == item.yearWay + '年交') {
                that.payEndYearColumnsIndex = index
              }
            })
          }
        }

          // if (item.productCode == 'GFRS_A0003') {
          //   //该附加险的责任保额=主险的保费
          //   item.calFactorLst.map(v => {
          //     if (v.code == 'dutyGroup' && v.rules.length > 0) {
          //       v.rules.map(y => {
          //         if (y.defaultDutyAmt === null) {
          //           y.defaultDutyAmt = (JSON.parse(localStorage.trialList)[0].prem / 10000).toFixed(6)
          //         }
          //         y.moneyUnit = 10000
          //         y.changeWithMainRisk = true //责任险保额=主险保费，不允许用户手动更改
          //       })
          //     }
          //   })
          // }
          //保存主险险种编号
          if (item.isMainRisk == 0) {
            this.mainRiskCode = item.mainRiskCode
          }
        })
      if (this.mainRiskCode == 'GFRS_M0005') {
        this.chooseProducts.map((item) => {
          if (item.productCode == 'GFRS_A0004') {
            item.calFactorLst.map((item2) => {
              if (item2.code == 'dutyGroup') {
                item2.rules.map((item3) => {
                  if (item3.duty == '320205') {
                    item3.maxDutyAmt = '1'
                  }
                })
              }
            })
          }
        })
      }
      if (this.mainRiskCode == 'GFRS_M0031' || this.mainRiskCode == 'GFRS_M0005' || this.mainRiskCode == 'GFRS_M0042' || this.mainRiskCode == 'GFRS_M0043') {
        this.chooseProducts.map((item) => {
          if (item.productCode == 'GFRS_A0008') {
            item.calFactorLst.map((item2) => {
              if (item2.code == 'dutyGroup') {
                item2.rules.map((item3) => {
                  if (item3.duty == '320404') {
                    item3.maxDutyAmt = '1'
                  }
                })
              }
            })
          }
        })
      }

      //GFRS_M0016需要展示免赔额和赔付比例，并需要根据是否有社保调整数值
      // let mainRiskCode = chooseProducts[0].mainRiskCode
      // eslint-disable-next-line no-unused-vars
      this.dogetLimitAndGetRate().then((res) => {
        if (this.chooseProducts[0].influences && this.chooseProducts[0].influences.length > 0) {
          this.influences = this.chooseProducts[0].influences
          this.chooseProducts[0].influences.forEach((item) => {
            this.influenceAddRiskCodes.push(item.productCode)
          })
        }
        this.mainRiskInfluenceAddRisk()
        //初始化数据试算
        this.getTrial()
      })
      console.log(this.trialList, '')
      // 判断是否 含有 后台配置js验证函数
      if (localStorage.ruleExpression) {
        let ruleExpression = JSON.parse(localStorage.ruleExpression)
        this.ruleExpression = ruleExpression
        let productCodes = Object.keys(ruleExpression)
        productCodes.forEach((itemKey) => {
          let rules = ruleExpression[itemKey]
          rules.eventList = []
          rules.forEach((item) => {
            let config = ''
            config = JSON.parse(item.ruleExpression)
            // let errorMsg = item.errorMsg;
            // config = {
            //   eventName: 'GFRS_M0020_payEndYear_insuYear',
            //   eventType: 'onConfirm',
            //   funBody: [
            //   'let ageMap = {',
            //   '  "10Y":{"30Y": 55,"70A": 55,"88A": 55},',
            //   '  "20Y":{ "30Y": 55, "70A": 50, "88A": 55 }, ',
            //   '  "30Y":{ "30Y": 45, "70A": 40, "88A": 45 },',
            //   '};',
            //   'let payEndYear = "";',
            //   'let insuYear = "";',
            //   'let age = this.saleInsuredPersonInfo.insuredAge;',
            //   'let parObj = {};',
            //   'par.map(item => {',
            //   '   parObj[item.code] = item;',
            //   '});',
            //   'if(ParKey == "payEndYear"){',
            //   '  payEndYear = Par.value + Par.flag;',
            //   '  lintAgeObj = ageMap[payEndYear];',
            //   '  let flag = true, num = parObj.insuYear.columns.length;',
            //   '  parObj.insuYear.columns.forEach(item => {',
            //   '    let lintAge = lintAgeObj[ item.value + item.flag ];',
            //   '    if( age > lintAge ){',
            //   '      item.disabled = true;',
            //   '      num = num - 1 ;',
            //   '    }else{',
            //   '      if(flag){',
            //   '        parObj.insuYear.insuYear = item.value;',
            //   '        parObj.insuYear.insuYearFlag = item.flag;',
            //   '        parObj.insuYear.showContent = item.text;',
            //   '        flag = false;',
            //   '      };',
            //   '      item.disabled = false;',
            //   '    };',
            //   '  });',
            //   '  if(!num){',
            //   '    this.errorMsg.push("被保险人年龄不符合当前所选交费期间");',
            //   '    payEndYear = parObj.payEndYear.payEndYear + parObj.payEndYear.payEndYearFlag;',
            //   '    lintAgeObj = ageMap[payEndYear];',
            //   '    parObj.insuYear.columns.forEach(item => {',
            //   '      let lintAge = lintAgeObj[ item.value + item.flag ];',
            //   '      if( age > lintAge ){',
            //   '        item.disabled = true;',
            //   '      }else{',
            //   '        item.disabled = false;',
            //   '      };',
            //   '    });',
            //   '    return false;',
            //   '  };',
            //   '  return true;',
            //   '}'],
            //   funPar: ['par','ParKey','Par'],
            // }
            // config = {
            //   eventName: 'GFRS_A0003_noMainCode',
            //   eventType: 'init',
            //   initBody: [
            //   'for(let item of that.chooseProducts){',
            //   '  if(item.productCode == "GFRS_A0003"){',
            //   '    for(let itemC of item.calFactorLst){',
            //   '      if(itemC.code == "dutyGroup"){',
            //   '        for(let itemR of itemC.rules){',
            //   '          that.$emit("GFRS_A0003_noMainCode", itemR, that.mainRiskCode)',
            //   '        }',
            //   '      }',
            //   '    }',
            //   '  }',
            //   ' }',
            //   ],
            //   funBody: [
            //     'let noMainCode = {',
            //     '  "GFRS_M0004" : true,',
            //     '  "GFRS_M0011" : true',
            //     '};',
            //     'let noduty = {',
            //     '  "310101" : true',
            //     '};',
            //     'if(noMainCode[mainRiskCode] && noduty[dutyItem.duty]){',
            //     '  dutyItem.necess = false;',
            //     '  dutyItem.isDisabled = true;',
            //     '}',
            //     ],
            //   funPar:['dutyItem', 'mainRiskCode'],
            // }
            this.$on(config.eventName, new Function(...config.funPar, config.funBody.join('')))
            if (config.eventType == 'init') {
              let initFn = new Function('that', config.initBody.join(''))
              initFn(this)
            }
            if (config.otherRisk) {
              for (let item of config.otherRisk) {
                if (!ruleExpression[item] || !ruleExpression[item].eventList) {
                  ruleExpression[item] = {
                    eventList: [config.eventName]
                  }
                } else {
                  ruleExpression[item].eventList.push(config.eventName)
                }
              }
            }
            rules.eventList.push(config.eventName)
          })
        })
      }
      //键盘小数点无法输入，试了一下iOS16以下没这个问题，iOS16以上有这个问题， type="number"改成type="digit"就可以输入了，
      this.$nextTick (()=>{
        var div1 = document.getElementsByClassName('van-stepper__input')
        //拿到的是一个数组集合，遍历修改每一个input
        for(var x in div1){
            div1[x].setAttribute('type','digit')
          }
        })
    },
    //特殊处理 GFRS_M0016 GFRS_A0004 GFRS_A0005 赔付比例处理
    async dogetLimitAndGetRate() {
      const orderNo = this.$route.query.orderNo
      let detailPromise = this.isFrom === 'proposal' ? localStorage.proposalMedical : await getOrderDetail({ orderNo })
      this.chooseProducts.map((item) => {
        if (
                !(item.mainRiskCode === 'GFRS_M0016' ||item.mainRiskCode === 'GFRS_M0070' || item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0008' || item.productCode === 'GFRS_A0005')
        ) {
          //其他产品删掉两个字段
          let calFactorLst = item.calFactorLst
          for (let i = calFactorLst.length - 1; i >= 0; i--) {
            let item = calFactorLst[i]
            if (item.code === 'getLimit' || item.code === 'getRate') {
              calFactorLst.splice(i, 1)
            }
          }
          return
        }
        if (item.mainRiskCode === 'GFRS_M0016' || item.mainRiskCode === 'GFRS_M0070' ||item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0008' || item.productCode === 'GFRS_A0005') {
          let isMedical = null
          if (this.isFrom === 'proposal') {
            isMedical = detailPromise == '1'
          } else {
            isMedical = detailPromise.orderDTO.insuredDTOs[0].medical == '0'
          }
          // 赔付比例和免赔额
          item.calFactorLst.map((i) => {
            if (i.code === 'getLimit') {
              let tempColumns = i.columns.filter((itemC) => {
                return itemC.medical == Math.abs(isMedical - 1).toString()
              })
              if (tempColumns.length !== 0) {
                i.columns = tempColumns
              }
              // i.getLimit = i.columns[0].value
              // i.showContent = i.columns[0].text
            }
            //赔付比例
            if (i.code === 'getRate') {
              let tempColumns = i.columns.filter((itemC) => {
                return itemC.medical == Math.abs(isMedical - 1).toString()
              })
              if (tempColumns.length !== 0) {
                i.columns = tempColumns
              }
              // i.getRate = i.columns[0].value
              // i.showContent = i.columns[0].text
            }
          })
          this.$forceUpdate()
        } else if (item.productCode === 'GFRS_A0005') {
          // GFRS_A0005 未处理
        }
      })
    },
    // 责任保额份数变化
    dutyStepperChange(value, productIndex, calFactorIndex, dutyItemIndex, isChecked, min, max) {
      //这个险种使用其他验证方式
      if (this.chooseProducts[productIndex].productCode === 'GFRS_M0016') return
      if (this.chooseProducts[productIndex].productCode === 'GFRS_M0070') return
      // 004险种其他验证方式
      if (this.chooseProducts[productIndex].productCode === 'GFRS_A0004') return
      // 008险种其他验证方式
      if (this.chooseProducts[productIndex].productCode === 'GFRS_A0008') return
      if (
              this.chooseProducts[productIndex].productCode === 'GFRS_A0003' ||
              this.chooseProducts[productIndex].productCode === 'GFRS_A0009' ||
              this.chooseProducts[productIndex].productCode === 'GFRS_A0014' ||
              this.chooseProducts[productIndex].productCode === 'GFRS_A0013' ||
              this.chooseProducts[productIndex].productCode === 'GFRS_A0010'
      ) {
        setTimeout(() => {
          this.getTrial()
        }, 500);
        return
      }
      let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]
      let showHint = this.chooseProducts[productIndex].hint
      if (value < min || value > max) {
        this.$toast(showHint)
      } else {
        if ((Number(value) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
          Dialog.alert({
            message: showHint
          }).then(() => {
            currentEle.defaultDutyAmt = currentEle.minDutyAmt
          })

          // this.$toast(showHint)
        } else {
          // this.mainRiskInfluenceAddRisk()
          // currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
          // this.getTrial()
          if (isChecked) {
            ;[this.productIndex, this.calFactorIndex] = [productIndex, calFactorIndex]
            let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules
            currentEle.forEach((item) => {
              item.amt = Number(item.minDutyAmt) * Number(item.moneyUnit)
            })
            this.mainRiskInfluenceAddRisk()
            this.getTrial()
          } else {
            ;[this.productIndex, this.calFactorIndex] = [productIndex, calFactorIndex]
            let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules
            currentEle.forEach((item) => {
              item.amt = Number(item.minDutyAmt) * Number(item.moneyUnit)
            })
          }
        }
      }
    },
    //弹框选择
    toSelect(index, index1, columns) {
      this.columns = []
      ;[this.popupShow, this.productIndex, this.calFactorIndex] = [true, index, index1]
      let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
      let currentEle = currentFactor[this.calFactorIndex]
      let sex = this.saleInsuredPersonInfo.sex //0男 1女
      //性别男女，养老保险金领取年龄不一致
      if (currentEle.code == 'pensionAge') {
        columns.forEach((item) => {
          if(item.sex == sex){
            this.columns.push(item)
          }
        })
      }else{
        this.columns = columns
      }
    },
    //取消picker
    onCancel() {
      this.columns = []
      this.popupShow = false
    },
    //确认选择字段
    async onConfirm(value) {
      this.columns = []
      this.popupShow = false
      // let productCode = this.chooseProducts[this.productIndex].productCode
      let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
      let currentEle = currentFactor[this.calFactorIndex]
      // let sex = this.saleInsuredPersonInfo.sex //0男 1女

      // //特殊设置：如果需要填写的保费/保额校验规则跟缴费期间挂钩，当改变缴费期间时，将输入框的值恢复默认值1
      // if (currentEle.code == 'payEndYear' && this.isTrial == '0') {
      //   currentEle['columns'].forEach((item, index) => {
      //     if (item.value == value.value) {
      //       this.payEndYearColumnsIndex = index
      //     }
      //   })
      //   this.defalutAmt = 1
      // }
      //中介渠道，交费期间为一次性交清时，附加险GFRS_A0007，GFRS_A0009，GFRS_A0010去掉后，附加险list就为空--隐藏’附‘icon
      if (currentEle.code == 'payEndYear' && value.value == '1000') {
        this.isEnterAddtionRiskListFunc()
        //交费期间为一次性交清时，清空豁免险GFRS_A0007，GFRS_A0009，GFRS_A0010，并更新localStorage
        this.isClearAddtionRiskListFunc()
      } else if (this.chooseProducts[this.productIndex].mainRiskCode == 'GFRS_M0046') {
        if (this.saleInsuredPersonInfo.relationToAppnt == 1) {
          this.isEnterAddtionRiskListFunc()
        }
      } else {
        this.isEnterAddtionRisk = true
      }

      if (currentEle.showContent != value.text) {
        //通用规则校验
        if (await this.payExceedInsured(currentEle, currentFactor, value.value)) {
          this.popupShow = false
          return false
        }
        if (currentEle.code == 'payEndYear' && await this.ageInfluencePayEndYear(value.value, currentEle)) {
          this.popupShow = false
          return false
        }
        if (currentEle.code == 'insuYear' && await this.ageInfluenceInsuYear(value.value, currentEle)) {
          this.popupShow = false
          return false
        }

        //特殊设置：如果需要填写的保费/保额校验规则跟缴费期间挂钩，当改变缴费期间时，将输入框的值恢复默认值1
        //国富人寿富贵年年终身寿险和国富人寿鑫享年年终身寿险（B款），一次性交清, 选择5,10,15,20 年交时, 保费试算有问题，所有调一下执行顺序
        if (currentEle.code == 'payEndYear' && this.isTrial == '0') {
          currentEle['columns'].forEach((item, index) => {
            if (item.value == value.value) {
              this.payEndYearColumnsIndex = index
            }
          })
          this.defalutAmt = 1
        }
        // if(this.ruleExpression[productCode]){
        //   this.errorMsg = []
        //   this.ruleExpression[productCode].eventList.forEach(item => {
        //     this.$emit(item,currentFactor,currentEle.code,value);
        //   })
        //   if(this.errorMsg.length > 0){
        //     this.$toast(this.errorMsg[0]);
        //     this.popupShow = false
        //     return false
        //   }
        // }
        let productCode = this.chooseProducts[this.productIndex].productCode
        if (this.ruleExpression[productCode]) {
          this.errorMsg = []
          let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
          let currentEle = currentFactor[this.calFactorIndex]
          this.ruleExpression[productCode].eventList.forEach((item) => {
            this.$emit(item, currentFactor, currentEle.code, value)
          })
          if (this.errorMsg.length > 0) {
            this.$toast(this.errorMsg[0])
            this.errorMsg = []
            this.popupShow = false
            return false
          }
        }

        // 后台配置 的 js函数 验证
        // if(hasR){
        //   if(currentEle.code == 'payEndYear' || currentEle.code == 'insuYear'){
        //      this.payEndYear(currentEle.code,value.value,this.tmpInsuYear.insuYear + this.tmpInsuYear.insuYearFlag)
        //   }
        // }

      currentEle.showContent = value.text
      let name = currentEle.code
      currentEle[name] = value.value
      if (currentEle.hasFlag) {
        currentEle[name + 'Flag'] = value.flag
      }
      // this.hiddenPayEndYear(currentEle)
      //特殊规则：设置豁免险
      this.getTrial()
    }
  },
    //交费期间为一次性交清时，清空豁免险GFRS_A0007，GFRS_A0009，GFRS_A0010,GFRS_A0012并更新localStorage
    isClearAddtionRiskListFunc() {
      let chooseProductsNew = []
      this.chooseProducts.forEach((item01) => {
        if (item01.productCode != 'GFRS_A0007' && item01.productCode != 'GFRS_A0009'&& item01.productCode != 'GFRS_A0010'&& item01.productCode != 'GFRS_A0012'&& item01.productCode != 'GFRS_A0013'&& item01.productCode != 'GFRS_A0014') {
          chooseProductsNew.push(item01)
        }
      })
      if (chooseProductsNew.length != this.chooseProducts.length) {
        this.chooseProducts = chooseProductsNew
      }
      localStorage.chooseProducts = JSON.stringify(chooseProductsNew)
    },
    // 交通责任险复选框变化
    changeChecked(productIndex, calFactorIndex, dutyItemIndex, dutyItem) {
      //检测责任中是否有勾选责任
      let isChecked = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.some((item) => {
        return item.necess == true
      })
      if (!isChecked) {
        this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]['necess'] =
          !this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]['necess']
        return false
      }
      //嘉和保多责任组合，选中、取消任意一款其他5款也跟着选中、取消
      let validateRiskCode = this.chooseProducts[productIndex].productCode
      if (validateRiskCode === 'GFRS_M0054'){
        if(dutyItem.duty == '100022' || dutyItem.duty == '100023' || dutyItem.duty == '100024' || dutyItem.duty == '100025' || dutyItem.duty == '100026' || dutyItem.duty == '100027'){
          this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
            if(i.duty == '100022' || i.duty == '100023' || i.duty == '100024' || i.duty == '100025' || i.duty == '100026' || i.duty == '100027'){
              i.necess = dutyItem.necess
            }
          })
        }
      }
      if (validateRiskCode === 'GFRS_M0073'){
        if(dutyItem.duty == '100035' || dutyItem.duty == '100036'){
          this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
            if(i.duty == '100035' || i.duty == '100036'){
              i.necess = dutyItem.necess
            }
          })
        }
        if(dutyItem.duty == '100037' || dutyItem.duty == '100038' || dutyItem.duty == '100039' || dutyItem.duty == '100040' || dutyItem.duty == '100041'){
          this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
            if(i.duty == '100037' || i.duty == '100038' || i.duty == '100039' || i.duty == '100040' || i.duty == '100041'){
              i.necess = dutyItem.necess
            }
          })
        }
      }
      this.valiAndSend(dutyItem, productIndex)
    },
    valiAndSend(dutyItem, productIndex) {
      //验证责任
      let validateRiskCode = this.chooseProducts[productIndex].productCode
      let showHint = this.chooseProducts[productIndex].hint
      let inputValue = dutyItem.defaultDutyAmt,
        duty = dutyItem.duty
      if (validateRiskCode === 'GFRS_M0016' && !this.valiDuty(inputValue, duty)) {
        //验证不通过
        return
      }else if (validateRiskCode === 'GFRS_M0070' && !this.valiDuty(inputValue, duty)) {
        //验证不通过
        return
      } else if (validateRiskCode === 'GFRS_A0004' && !this.valiA0004Duty(inputValue, showHint, dutyItem)) {
        //验证不通过 险种为GFRS_A0004  责任编码为320205
        return
      } else if (validateRiskCode === 'GFRS_A0008' && !this.valiA0008Duty(inputValue, showHint, dutyItem)) {
        //验证不通过 险种为GFRS_A0008  责任编码为320404
        return
      } else {
        this.mainRiskInfluenceAddRisk()
        this.getTrial()
      }
    },
    // 计步器聚焦
    focusStep() {
      this.nextStepFlag = true
    },
    blurStep(dutyItem, productIndex) {
      this.nextStepFlag = false

        //失去焦点时做验证
        if (dutyItem.necess) {
          //勾选时才做验证
          this.valiAndSend(dutyItem, productIndex)
        }
      },
    //险种GFRS_M0016\GFRS_M0070的责任的验证规则
    valiDuty(value, duty) {
      if (this.mainRiskCode === 'GFRS_M0016') {
        value *= 10000
        const rule = dutyRules[duty]
        const mutiple = rule.mutiple || DUTY_DEFAULT_MUTIPLE
        const min = rule.min || DUTY_DEFAULT_MIN
        if (!value || value < min || value % mutiple !== 0) {
          this.$toast(rule.msg)
          this.nextStepFlag = true
          return false
        } else {
          this.nextStepFlag = false
          return true
        }
      }else if(this.mainRiskCode === 'GFRS_M0070'){
        value *= 10000
        const rule = dutdutyGFRS_M0070RulesyRules[duty]
        const mutiple = rule.mutiple || DUTY_DEFAULT_MIN
        const min = rule.min || DUTY_DEFAULT_MIN
        console.log(rule.min,'rule.min')
        if (!value || value < min || value % mutiple !== 0) {
          this.$toast(rule.msg)
          this.nextStepFlag = true
          return false
        } else {
          this.nextStepFlag = false
          return true
        }
      }
    },
    //险种 GFRS_A0004 险种验证规则
    valiA0004Duty(value, showHint, currentEle) {
      /* if (!(currentEle.necess == true)) {
        this.nextStepFlag = false
        return true
      }*/
      // 验证其他 最小50 其他为50 10 倍数
      if (currentEle.duty == '320206' || currentEle.duty == '320207') {
        let numberValue = Number(value) * 10000
        if (numberValue % 10 != 0 || numberValue < 50) {
          this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg)
          this.nextStepFlag = true
          return false
        }
      }

      // 保额只能为5000 10000 15000 200000
      if (currentEle.duty == '320205') {
        if (this.mainRiskCode === dutyGFRS_A0004Rules[currentEle.duty]['mainRisk']) {
          if (!(value == '0.5' || value == '1')) {
            this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_2)
            this.nextStepFlag = true
            return false
          } else if (value - 0 > 1) {
            this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_1)
            this.nextStepFlag = true
            return false
          }
        } else {
          if (!(value == '0.5' || value == '1' || value == '1.5' || value == '2')) {
            this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg)
            this.nextStepFlag = true
            return false
          }
        }

        this.nextStepFlag = false
        return true
      }
      this.nextStepFlag = false
      return true
    },
    //险种 GFRS_A0008 险种验证规则
    valiA0008Duty(value, showHint, currentEle) {
      /* if (!(currentEle.necess == true)) {
        this.nextStepFlag = false
        return true
      }*/
      // 验证其他 最小50 其他为50 10 倍数
      if (currentEle.duty == '320405' || currentEle.duty == '320406') {
        let numberValue = Number(value) * 10000
        if (numberValue % 10 != 0 || numberValue < 50) {
          this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg)
          this.nextStepFlag = true
          return false
        }
      }

      // 保额只能为5000 10000 15000 200000
      if (currentEle.duty == '320404') {
        if (
                this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['mainRisk'] ||
                this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['otmainRisk'] ||
                this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['mainRisk2'] ||
                this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['otmainRisk2']
        ) {
          if (!(value == '0.5' || value == '1')) {
            this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg_2)
            this.nextStepFlag = true
            return false
          } else if (value - 0 > 1) {
            this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg_1)
            this.nextStepFlag = true
            return false
          }
        } else {
          if (!(value == '0.5' || value == '1' || value == '1.5' || value == '2')) {
            this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg)
            this.nextStepFlag = true
            return false
          }
        }

      this.nextStepFlag = false
      return true
    }
    this.nextStepFlag = false
    return true
  },
    /********start 通用规则、特殊规则处理 start******/
    //通用规则1：交费方式为一次交情，无交费期限
    // hiddenPayEndYear(currentEle) {
    //   if (currentEle.code == 'payIntv') {
    //     if (this.chooseProducts[0].productCode === 'GFRS_M0015' && this.chooseProducts[this.productIndex].productCode === 'GFRS_A0006') {
    //       return
    //     }
    //     this.chooseProducts[this.productIndex]['isHidden'] = currentEle.payIntv == '0' ? true : false
    //   }
    // },
    //通用规则2：交费期限不能超过保险期间
    payExceedInsured(currentEle, currentFactor, currentVale) {
      let payEndYearVal, insuYearVal
      if (currentEle.code == 'payEndYear') {
        payEndYearVal = Number(currentVale)
        insuYearVal = this.getPayEndYearOrInsuYear('insuYear', currentFactor)
      }
      if (currentEle.code == 'insuYear') {
        insuYearVal = Number(currentVale)
        payEndYearVal = this.getPayEndYearOrInsuYear('payEndYear', currentFactor)
      }
      //交费期限为一次性交清时，val为1000，直接跳过此规则
      if (payEndYearVal != 1000) {
        if (payEndYearVal > insuYearVal) {
          this.$toast('交费期间不能超过保险期间')
          return true
        } else {
          return false
        }
      } else {
        return false
      }
    },
    //中介渠道，交费期间为一次性交清时，附加险GFRS_A0007，GFRS_A0009，GFRS_A0010,GFRS_A0012去掉后，附加险list就为空--隐藏’附‘icon
    isEnterAddtionRiskListFunc() {
      let addtionRiskLst = JSON.parse(localStorage.addtionRiskLst)
      if (addtionRiskLst) {
        let list = []
        addtionRiskLst.forEach((item, index) => {
          if (item.productCode != 'GFRS_A0007' && item.productCode != 'GFRS_A0009' && item.productCode != 'GFRS_A0010'&& item.productCode != 'GFRS_A0012'&& item.productCode != 'GFRS_A0013'&& item.productCode != 'GFRS_A0014') {
            list.push(item)
          }
        })
        if (list.length) {
          this.isEnterAddtionRisk = true
        } else {
          this.isEnterAddtionRisk = false
        }
      }
    },
    getPayEndYearOrInsuYear(flag, currentFactor) {
      let returnVal
      currentFactor.forEach((item) => {
        if (item.code == flag) {
          returnVal = item[flag]
        }
      })
      return Number(returnVal)
    },
    //特殊规则1、交费期间跟年龄的关系
    ageInfluencePayEndYear(value, currentEle) {
      let age = Number(this.saleInsuredPersonInfo.insuredAge)
      for (let i = 0; i < currentEle.rules.length; i++) {
        if (currentEle.rules[i].payEndYear == value && age > currentEle.rules[i].maxAge) {
          this.$toast('被保险人年龄不适合该交费期间！')
          return true
        }
        if (
          currentEle.rules[i].payEndYear == value &&
          currentEle.rules[i].payEndYearFlag == 'A' &&
          (age < currentEle.rules[i].minAge || age > currentEle.rules[i].maxAge)
        ) {
          this.$toast('被保险人年龄不适合该交费期间！')
          return true
        }
      }
      return false
    },
    //年龄对保险期间的影响
    ageInfluenceInsuYear(value, currentEle) {
      let age = Number(this.saleInsuredPersonInfo.insuredAge)
      for (let i = 0; i < currentEle.rules.length; i++) {
        if (currentEle.rules[i].insuYear == value && age > currentEle.rules[i].maxAge) {
          this.$toast('被保险人年龄不适合该保险期间！')
          return true
        }
      }
      return false
    },
    //特殊规则2、主险对附加险的影响,主要是保额之间的影响  mainAddRelation：0-小于，1-大于，2-等于，3-小于等于,4-大于等于
    mainRiskInfluenceAddRisk() {
      if (this.productIndex == 0) {
        this.chooseProducts.forEach((item, index) => {
          if (this.influenceAddRiskCodes.includes(item.productCode)) {
            let influences = this.getInfluencesItem(item.productCode)
            let mainAddRelation = influences.amtInfluence[0].mainAddRelation
            let amtTimes = influences.amtInfluence[0].amtTimes
            let mainRiskAmt = this.getMainRiskAmt()
            if (mainAddRelation == 3 && (amtTimes == 1 || amtTimes == 5)) {
              this.setInputAddtionRiskMaxAmt(mainRiskAmt * amtTimes, index)
            } else if (mainAddRelation == 3 && amtTimes == 0.2) {
              this.setAddtionRiskMaxAmt(mainRiskAmt * amtTimes, index)
            }
          }
        })
      }
    },
    setAddtionRiskMaxAmt(mainRiskAmt, index) {
      this.chooseProducts[index].calFactorLst.forEach((item) => {
        if (item.code == 'amt' || item.code == 'planCode') {
          let columnsValArr = []
          item.columns.forEach((option) => {
            columnsValArr.push(Number(option.amt))
            if (Number(option.amt) > mainRiskAmt * 10000) {
              option.disabled = true
            } else {
              option.disabled = false
            }
          })
          //主险减，附加险变化，取最小

            let currentAmt = this.getAmtByPlanCode(item.columns, item.planCode)
            if (mainRiskAmt * 10000 < currentAmt) {
              let minVal = columnsValArr.min()
              item.columns.forEach((option) => {
                if (option.amt == minVal) {
                  item.showContent = option.text
                  item.planCode = option.value
                  item.amt = option.amt
                }
              })
            }
          }
        })
      },
    getAmtByPlanCode(columns, planCode) {
      let amt = ''
      columns.forEach((item) => {
        if (item.value == planCode) {
          amt = item.amt
        }
      })
      return amt
    },
    setInputAddtionRiskMaxAmt(mainRiskAmt, index) {
      this.chooseProducts[index].calFactorLst.forEach((item) => {
        if (item.type == 1) {
          item.maxAmt = Math.min(mainRiskAmt, item.oldMaxAmt)
          //减保额份数
          if (item.maxAmt < item.defaultValue) {
            item.defaultValue = item.maxAmt
          }
        }
      })
    },
    getMainRiskAmt() {
      let mainRiskAmt
      this.chooseProducts[0].calFactorLst.forEach((item) => {
        if (item.type == 1) {
          mainRiskAmt = item.defaultValue
        }
      })
      return mainRiskAmt
    },
    getInfluencesItem(productCode) {
      let currentInfluences
      this.chooseProducts[0].influences.forEach((item) => {
        if (item.productCode == productCode) {
          currentInfluences = item
        }
      })

      return currentInfluences
    },
    trialBeforeRule() {
      let that = this
      console.log('走试算前规则')
      // 针对于国富人寿附加两全保险附加险(GFRS_A0011),缴费期间期间要等于主险的缴费期间
      let mainRiskInfo = this.getMainRiskInfo()
      this.chooseProducts.forEach((item) => {
        if (item.productCode == 'GFRS_A0011') {
          item.calFactorLst.map((item2) => {
            if (item2.code == 'payEndYear') {
              item2.hasFlag = '1'
              item2.payEndYearFlag = 'Y'
              item2.payEndYear = Number(mainRiskInfo.payEndYear.payEndYear)
              item2.showContent = item2.payEndYear + '年交'
            }else if (item2.code == 'amt') {
              // GFRS_A0011-附加两全 属于非豁免险  但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
              let trialList = JSON.parse(localStorage.trialList)
              item2.amt = trialList[0].prem
              item2.defaultValue = trialList[0].prem
              item2.moneyUnit = 1
              item2.suffix = '元'
            }
          })
        }
      })
      localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
      // window.localStorage.setItem('chooseProducts',JSON.stringify( this.chooseProducts))
      if(this.chooseProducts[0].productCode == 'GFRS_M0035' || this.chooseProducts[0].productCode == 'GFRS_M0044' || this.chooseProducts[0].productCode == 'GFRS_M0060' || this.chooseProducts[0].productCode == 'GFRS_M0040'|| this.chooseProducts[0].productCode == 'GFRS_M0046'){
        if (this.trialList.length) {
          let showPrem //计算后的保费
          //(被保险人)国富人寿附加豁免保险费重大疾病保险(B款）GFRS_A0010
          //(投保人)国富人寿附加豁免保险费重大疾病保险(B款） GFRS_A0009
          //国富人寿附加两全保险条款  GFRS_A0011
          //只有在搭配附加两全时，才能搭配被保险人附加豁免重疾B;
          //获取两全险的保费
          let showPrem001
          this.trialList.forEach((item, index) => {
            if (item.productCode == 'GFRS_A0011') {
              showPrem001 = item.showPrem //获取两全险的保费
            }
          })
          this.chooseProducts.forEach((item, index) => {
            if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0013'|| item.productCode == 'GFRS_A0014') {
              //(投保人)国富人寿附加豁免保险费重大疾病保险(B款）
              // 投被不同人：投保人豁免险单独搭配主险时，投保人豁免险，豁免主险保费，当投保人豁免险加两全（有长险附加险时），豁免主险保费加两全保费
              if (item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0013') {
                if (this.saleInsuredPersonInfo.relationToAppnt != 1) {
                  //不同人
                  if (showPrem001) {
                    //加两全时
                    showPrem = Number(showPrem001) + Number(that.trialList[0].showPrem)
                  } else {
                    showPrem = Number(that.trialList[0].showPrem)
                  }
                }
                item.calFactorLst.map((item2) => {
                  if (item2.code == 'dutyGroup') {
                    item2.rules.map((item3) => {
                      item3.defaultDutyAmt = (showPrem / 10000).toFixed(6)
                    })
                  }
                })
              } else if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0014') {
                //(被保险人)国富人寿附加豁免保险费重大疾病保险(B款）GFRS_A0010
                //投被同人，不同人：被保人豁免险搭配两全（有长险附加险时）时，可选责任为必选，豁免两全保费
                if (showPrem001) {
                  showPrem = Number(showPrem001)
                }else{
                  showPrem = Number(that.trialList[0].showPrem)
                }
                item.calFactorLst.map((item2) => {
                  if (item2.code == 'dutyGroup') {
                    item2.rules.map((item3) => {
                      item3.defaultDutyAmt = (showPrem / 10000).toFixed(6)
                      item3.defaultValue = '0'
                      item3.necess = true
                    })
                  }
                })
              }
            }
          })
        }
      }
    },
    //特殊规则3、设置豁免险
    setRemitRisk() {
      // 世纪无忧重疾(GFRS_M0046)交费至60/70周岁时，不可附加两全险(GFRS_A0011)
      let mainRiskInfo = this.getMainRiskInfo()
      let mainRiskPayIntv = mainRiskInfo.payIntv.payIntv
      let mainRiskPayEndYearFlag = mainRiskInfo.payEndYear.payEndYearFlag
      if (mainRiskPayEndYearFlag == 'A' && this.chooseProducts[0].mainRiskCode == 'GFRS_M0046') {
        //删除附加两全险
        for (let i = 0; i < this.chooseProducts.length; i++) {
          if (this.chooseProducts[i].productCode == 'GFRS_A0011') {
            this.chooseProducts.splice(i, 1)
            i--
          }
        }
      }

      //1、一次性交清和交费期间单位为A时，删除豁免险
      // let mainRiskInfo = this.getMainRiskInfo()
      // let mainRiskPayIntv = mainRiskInfo.payIntv.payIntv
      // let mainRiskPayEndYearFlag = mainRiskInfo.payEndYear.payEndYearFlag
      if (mainRiskPayIntv == 0 || mainRiskPayEndYearFlag == 'A') {
        //删除已选或互斥险种
        for (let i = 0; i < this.chooseProducts.length; i++) {
          if (this.chooseProducts[i].isRemit == 0) {
            this.chooseProducts.splice(i, 1)
            i--
          }
        }
      }

      //2、豁免险跟主险联动，豁免险缴费期间和保险期间同主险的缴费期间
      let remitIndex = this.getRemitIndex()
      //if (!remitIndex) return
      for (let itemRemitIndex of remitIndex) {
        this.chooseProducts[itemRemitIndex].calFactorLst.forEach((item) => {
          if (item.code == 'payIntv') {
            for (let key in mainRiskInfo.payIntv) {
              item[key] = mainRiskInfo.payIntv[key]
            }
          }
          if (item.code == 'payEndYear') {
            item.hasFlag = '1'
            item.payEndYearFlag = 'Y'
            item.payEndYear = Number(mainRiskInfo.payEndYear.payEndYear)
            item.showContent = item.payEndYear + '年交'
          }
          if (item.code == 'insuYear') {
            item.hasFlag = '1'
            item.insuYearFlag = 'Y'
            item.insuYear = Number(mainRiskInfo.payEndYear.payEndYear)
            item.showContent = item.insuYear + '年'
          }
          if (item.code == 'amt') {
            let trialList = JSON.parse(localStorage.trialList)
            item.amt = trialList[0].prem
            item.defaultValue = trialList[0].prem
            item.moneyUnit = 1
            item.suffix = '元'
          }
          if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0003' || this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0009'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0010'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0013'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0014') {
            //此附加险的缴费期间=主险缴费期间；保险期间=主险保险期间
            if (item.code == 'insuYear') {
              item.hasFlag = '1'
              item.insuYearFlag = mainRiskInfo.insuYear.insuYearFlag
              item.insuYear = Number(mainRiskInfo.insuYear.insuYear)
              item.showContent = mainRiskInfo.insuYear.showContent
            }
            if (item.code == 'dutyGroup') {
              item.rules.forEach((v) => {
                try {
                  if (mainRiskInfo.inputPrem.displayAmount && mainRiskInfo.inputPrem.moneyUnit) {
                    v.amt = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
                  } else {
                    // 解决这个问题--建议书添加 附加豁免保险费重大疾病保险 不展示险种保费
                    // inputPrem 这个里面的规则删除导致的
                    let payEndYearVal
                    this.chooseProducts.map((item) => {
                      item.calFactorLst.map((i) => {
                        if (i.code == 'payEndYear') {
                          payEndYearVal = i.showContent
                        }
                      })
                    })
                    this.chooseProducts[0].productTrialYearDTOS.forEach((item, index) => {
                      //因交费方式为一次性交清时，不会有豁免险，所以这里不判断一次性交清的情况
                      if (payEndYearVal == item.yearWay + '年交') {
                        v.amt = item.displayAmount * item.moneyUnit
                      }
                    })
                  }
                } catch (e) {
                  let trialList = JSON.parse(localStorage.trialList)
                  v.amt = trialList[0].prem
                  // v.amt = mainRiskInfo.inputAmt.displayAmount * mainRiskInfo.inputAmt.moneyUnit
                }
                v.defaultDutyAmt = (Number(v.amt) / v.moneyUnit).toFixed(6)
                // v.moneyUnit = 10000
                // v.suffix = '万元'
              })
            }
          }
          //之所以catch是因为有些参数值不存在，导致报错，豁免险除（国富人寿附加投保人豁免保险费定期寿险（B款）保险条款 GFRS_A0007）试算拼参数时，amt保额都重置为null
          if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0001' || this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0007') {
            try {
              if (mainRiskInfo.inputPrem.displayAmount && mainRiskInfo.inputPrem.moneyUnit) {
                item.amt = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
                item.defaultValue = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
              } else {
                // 解决这个问题--建议书添加 附加豁免保险费重大疾病保险 不展示险种保费
                // inputPrem 这个里面的规则删除导致的
                let payEndYearVal01
                this.chooseProducts.map((item01) => {
                  item01.calFactorLst.map((i) => {
                    if (i.code == 'payEndYear') {
                      payEndYearVal01 = i.showContent
                    }
                  })
                })
                this.chooseProducts[0].productTrialYearDTOS.forEach((v, index) => {
                  //因交费方式为一次性交清时，不会有豁免险，所以这里不判断一次性交清的情况
                  if (payEndYearVal01 == v.yearWay + '年交') {
                    item.amt = v.displayAmount * v.moneyUnit
                    item.defaultValue = v.displayAmount * v.moneyUnit
                  }
                })
              }
            } catch (e) {
              let trialList = JSON.parse(localStorage.trialList)
              item.defaultValue = trialList[0].prem
              item.amt = trialList[0].prem
            }
            item.defaultDutyAmt = (Number(item.amt) / item.moneyUnit).toFixed(6)

            // 国富人寿附加投保人豁免保险费定期寿险（B款）保险条款 GFRS_A0007
            // 保额----豁免主险+附加两全的保费
            // 国富人寿附加两全保险条款  GFRS_A0011
            //重新再调一次试算，因保额为文本框没有change事件，所以保额变化后少一次调用试算，所以特此手动重新调用一次
            let trialList = JSON.parse(localStorage.trialList)
            let showPrem
            trialList.forEach((item, index) => {
              if (item.productCode == 'GFRS_A0011') {
                showPrem = item.showPrem //获取两全险的保费
              }
            })
            if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0007' && showPrem) {
              item.amt = trialList[0].prem + showPrem
              item.defaultValue = trialList[0].prem + showPrem
            }
          }
        })
      }

      let product = this.chooseProducts.find((item) => {
        return item.productCode === 'GFRS_A0006'
      })
      if (product && this.richChildrenFlag) {
        product.calFactorLst[0].showContent = '月交'
        product.calFactorLst[2].showContent = '月交'
        product.calFactorLst[0].columns[0].text = '月交'
        product.calFactorLst[2].columns[0].text = '月交'
        let remitProduct = this.trialList.find((item) => {
          return item.productCode === 'GFRS_A0006'
        })
        if (remitProduct) {
          remitProduct.showPrem = '从万能账户中扣除'
          remitProduct.prem = 0
          remitProduct.payIntv = 1
        }
      }
      // if(this.chooseProducts[0].productCode == 'GFRS_M0053' || this.chooseProducts[0].productCode == 'GFRS_M0061'){
      //   if (this.trialList.length) {
      //     this.chooseProducts.forEach((item, index) => {
      //       // 国富人寿富桂金生养老年金保险（53）中介渠道鑫享金生养老年金保险（61），投保，被保险第二个责任默认不勾选，不可选
      //       if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0009'|| item.productCode == 'GFRS_A0013' || item.productCode == 'GFRS_A0014') {
      //         item.calFactorLst.map((item2) => {
      //           if (item2.code == 'dutyGroup') {
      //             item2.rules.map((item3) => {
      //               item3.defaultValue = '0'
      //             })
      //           }
      //         })
      //       }
      //     })
      //   }
      // }
      this.trialBeforeRule()
    },
    //获取当前产品编码下的索引值
    getProductCodeIndex(productCode) {
      let remitIndex = ''
      this.chooseProducts.forEach((item, index) => {
        if (item.productCode == productCode) {
          remitIndex = index
        }
      })
      return remitIndex
    },
    //获取当前产品编码下的整条数据
    getProductCodeItem(productCode) {
      let remitItem = {}
      this.chooseProducts.forEach((item, index) => {
        if (item.productCode == productCode) {
          remitItem = item
        }
      })
      return remitItem
    },
    getRemitIndex() {
      let remitIndex = []
      this.chooseProducts.forEach((item, index) => {
        if (item.isRemit == 0) {
          remitIndex.push(index)
        }
      })
      return remitIndex
    },
    getMainRiskInfo() {
      let mainRiskInfo = {}
      this.chooseProducts[0].calFactorLst.forEach((item) => {
        mainRiskInfo[item.code] = item
      })
      return mainRiskInfo
    },

    /********end 通用规则、特殊规则处理 end******/

    //查看文档列表
    seeDocument(index) {
      this.show = true
      this.policyInfo = this.chooseProducts[index].documentDTOS
    },
    //打开文档
    openDocument(item) {
      let pdfUrl = encodeURIComponent(item.url)
      this.$jump({
        flag: 'h5',
        extra: {
          title: item.name,
          // url: 'http://47.96.143.111/pdfjs/web/viewer.html?file=' + item.url //测试代码
          url: location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl
        }
      })
      // localStorage.documentInfo = JSON.stringify({ documentUrl: item.url, documentType: item.type })
      // this.$jump({
      //   flag: 'h5',
      //   extra: {
      //     url: location.origin + '/#/product/productDocument'
      //   },
      //   routerInfo: {
      //     path: `/product/productDocument`
      //   }
      // })
    },
    //删除所选产品
    deleteRisk(index,data) {
      if (this.chooseProducts[index].isMainRisk == 0 && this.$route.query.insuanceIdInfo) {
        this.$toast('编辑状态不可删除主险')
      } else {
        Dialog.confirm({
          title: '提示',
          message: '确认删除该险种?',
          cancelButtonColor: '#E9332E',
          confirmButtonColor: '#FFFFFF',
          className: 'dialog-delete'
        })
                .then(() => {
                  let currentGFRS_A0011
                  if (this.chooseProducts[index].isMainRisk == 0) {
                    this.chooseProducts = []
                    localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
                    let thismyurl = ''
                    if (this.$route.query.orderNo) {
                      thismyurl = '/?orderNo=' + this.$route.query.orderNo
                    } else if (this.$route.query.proposalOrderNo) {
                      thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
                    }
                    this.$jump({
                      flag: 'goBack',
                      extra: {
                        refresh: '1',
                        index: '-2'
                      },
                      routerInfo: {
                        type: 2,
                        index: -2,
                        path: '/common/selectedProduct' + thismyurl
                      }
                    })
                    localStorage.trialList = ''
                  } else {
                    currentGFRS_A0011 = this.chooseProducts[index].productCode == 'GFRS_A0011' ? true : false  //当前删除的是否是两全
                    this.chooseProducts.splice(index, 1)
                  }
                  if (
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0051' ||
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0044' ||
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0060' ||
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0035' ||
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0038' ||
                          this.chooseProducts[0].mainRiskCode == 'GFRS_M0040'
                  ) {
                    if (currentGFRS_A0011 && (JSON.stringify(this.chooseProducts).includes('GFRS_A0010') || JSON.stringify(this.chooseProducts).includes('GFRS_A0014'))) {
                      this.chooseProducts.forEach((item, index01) => {
                        if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0014') {
                          this.chooseProducts.splice(index01, 1)
                        }
                      })
                      // Dialog.alert({
                      //   title: '提示',
                      //   message: '当前未投保其他长险附加险，将删除该险种重新选择附加险！'
                      // }).then(() => {
                      // })
                    }


                    // let risks = this.chooseProducts
                    // let longRisks = []
                    // //拿到长险附加险数组
                    // for (let i = 1; i < risks.length; i++) {
                    //   for (let j = 0; j < risks[i].calFactorLst.length; j++) {
                    //     if (risks[i].calFactorLst[j].code === 'insuYear') {
                    //       if (
                    //         ((risks[i].calFactorLst[j].insuYearFlag == 'Y' && risks[i].calFactorLst[j].insuYear > 1) || risks[i].calFactorLst[j].insuYearFlag == 'A') &&
                    //         risks[i].productCode != 'GFRS_A0010'
                    //       ) {
                    //         longRisks.push(risks[i].productCode)
                    //       }
                    //     }
                    //   }
                    // }
                    // if (
                    //   (this.chooseProducts.length == 2 && this.chooseProducts[1].productCode == 'GFRS_A0010') ||
                    //   (this.chooseProducts.length == 3 &&
                    //     JSON.stringify(this.chooseProducts).includes('GFRS_A0010') &&
                    //     JSON.stringify(this.chooseProducts).includes('GFRS_A0009')) ||
                    //   (longRisks.length <= 0 && this.chooseProducts.length > 1)
                    // ) {
                    //   Dialog.alert({
                    //     title: '提示',
                    //     message: '当前未投保其他长险附加险，将删除该险种重新选择附加险！'
                    //   }).then(() => {
                    //     this.chooseProducts.splice(1, 1)
                    //     localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
                    //     this.getTrial()
                    //   })
                    //   // this.$toast('当前未投保其他长险附加险，请删除该险种重新选择附加险！')
                    //   // this.nextStepFlag = true
                    // }
                  }
                  if (localStorage.oldAddRiskCodes && JSON.parse(localStorage.oldAddRiskCodes)) {
                    let thismyoldAddRiskCodes = JSON.parse(localStorage.oldAddRiskCodes)
                    thismyoldAddRiskCodes.forEach((item, index0) => {
                      if (item == data.productCode) {
                        thismyoldAddRiskCodes.splice(index0, 1)
                      }
                    })
                    localStorage.oldAddRiskCodes = JSON.stringify(thismyoldAddRiskCodes)
                  }
                  localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
                  this.getTrial()
                })
                .catch(() => {
                })
      }
    },
    //试算
    async getTrial() {
      let that = this
      this.nextStepFlag = true
      this.$toast.clear()
      this.$toast.loading({
        message: '正在试算...',
        forbidClick: true
      })
      await this.setRemitRisk()
      let params = await this.getParams()
      // 开门红产品试算增加标识,活动产品试算增加标识
      if (this.activeType && this.isFrom != 'proposal') {
        for (let product of params.trialInfos) {
          product.isKmh = '1'
          //GFRS-2552【需求】关于金掌桂投保流程增设指定生效日按钮的申请
          product.cvaliDate = that.cvalidateStr
        }
      }

    //国富人寿富桂金生养老年金保险
    let age = this.saleInsuredPersonInfo.insuredAge
    let sex = this.saleInsuredPersonInfo.sex //0男 1女
    let trialFlag = true
    params.trialInfos.forEach((item) => {
      if (item.productCode == 'GFRS_A0011') {
        if (item.insuYear == '60' && item.payEndYear == '30' && age > 30) {
          this.nextStepFlag = true
          this.$toast('被保险人年龄不适合该交费期间或保险期间！')
          trialFlag = false
        } else if (item.insuYear == '70' && item.payEndYear == '30' && age > 40) {
          this.nextStepFlag = true
          this.$toast('被保险人年龄不适合该交费期间或保险期间！')
          trialFlag = false
        } else if (
          (item.insuYear == '80' && item.payEndYear == '15' && age > 55) ||
          (item.insuYear == '80' && item.payEndYear == '19' && age > 50) ||
          (item.insuYear == '80' && item.payEndYear == '20' && age > 50) ||
          (item.insuYear == '80' && item.payEndYear == '30' && age > 40)
        ) {
          this.nextStepFlag = true
          this.$toast('被保险人年龄不适合该交费期间或保险期间！')
          trialFlag = false
        }
      }
      else if (item.productCode == 'GFRS_M0053') {
        //国富人寿富桂金生养老年金保险
        if(sex == '0'){
          if(
            (item.pensionAge == '60' && item.payEndYear == '30' && age > 30) ||
            (item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
            (item.pensionAge == '60' && item.payEndYear == '15' && age > 45) ||
            (item.pensionAge == '60' && item.payEndYear == '10' && age > 50)
            ) {
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
            }else if(
                    (item.pensionAge == '65' && item.payEndYear == '30' && age > 35) ||
                    (item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
                    (item.pensionAge == '65' && item.payEndYear == '15' && age > 50) ||
                    (item.pensionAge == '65' && item.payEndYear == '10' && age > 55)
            ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
            }else if(
                    (item.pensionAge == '70' && item.payEndYear == '30' && age > 40) ||
                    (item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
                    (item.pensionAge == '70' && item.payEndYear == '15' && age > 55)
            ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }
        }else{ //女
          if(
            (item.pensionAge == '55' && item.payEndYear == '30' && age > 25) ||
            (item.pensionAge == '55' && item.payEndYear == '20' && age > 35) ||
            (item.pensionAge == '55' && item.payEndYear == '15' && age > 40) ||
            (item.pensionAge == '55' && item.payEndYear == '10' && age > 45)
            ) {
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '60' && item.payEndYear == '30' && age > 30) ||
            (item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
            (item.pensionAge == '60' && item.payEndYear == '15' && age > 45) ||
            (item.pensionAge == '60' && item.payEndYear == '10' && age > 50)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '65' && item.payEndYear == '30' && age > 35) ||
            (item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
            (item.pensionAge == '65' && item.payEndYear == '15' && age > 50) ||
            (item.pensionAge == '65' && item.payEndYear == '10' && age > 55)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }
        }
      }
      else if (item.productCode == 'GFRS_M0061') {
        //中介渠道鑫享金生养老年金保险
        if(sex == '0'){ //男
          if(
            (item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
            (item.pensionAge == '60' && item.payEndYear == '10' && age > 50) ||
            (item.pensionAge == '60' && item.payEndYear == '5' && age > 55) ||
            (item.pensionAge == '60' && item.payEndYear == '3' && age > 55)
            ) {
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
            (item.pensionAge == '65' && item.payEndYear == '10' && age > 55) ||
            (item.pensionAge == '65' && item.payEndYear == '5' && age > 60) ||
            (item.pensionAge == '65' && item.payEndYear == '3' && age > 60)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
            (item.pensionAge == '70' && item.payEndYear == '10' && age > 60) ||
            (item.pensionAge == '70' && item.payEndYear == '5' && age > 65) ||
            (item.pensionAge == '70' && item.payEndYear == '3' && age > 65)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }
        }else{ //女
          if(
            (item.pensionAge == '55' && item.payEndYear == '20' && age > 35) ||
            (item.pensionAge == '55' && item.payEndYear == '10' && age > 45) ||
            (item.pensionAge == '55' && item.payEndYear == '5' && age > 50) ||
            (item.pensionAge == '55' && item.payEndYear == '3' && age > 50)
            ) {
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
            (item.pensionAge == '60' && item.payEndYear == '10' && age > 50) ||
            (item.pensionAge == '60' && item.payEndYear == '5' && age > 55) ||
            (item.pensionAge == '60' && item.payEndYear == '3' && age > 55)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
            (item.pensionAge == '65' && item.payEndYear == '10' && age > 55) ||
            (item.pensionAge == '65' && item.payEndYear == '5' && age > 60) ||
            (item.pensionAge == '65' && item.payEndYear == '3' && age > 60)
          ){
              this.nextStepFlag = true
              this.$toast('被保险人年龄不适合该交费期间！')
              trialFlag = false
          }else if(
            (item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
            (item.pensionAge == '70' && item.payEndYear == '10' && age > 60) ||
            (item.pensionAge == '70' && item.payEndYear == '5' && age > 65) ||
            (item.pensionAge == '70' && item.payEndYear == '3' && age > 65)
          ){
            this.nextStepFlag = true
            this.$toast('被保险人年龄不适合该交费期间！')
            trialFlag = false
          }
        }
      }
    })
    if (!trialFlag) {
      return
    }

      let resultData = await trial(params)

    //试算成功，信息返显
    if (resultData.result == 0) {
      if (resultData.flag === '1') {
        this.richChildrenFlag = true
      }
      this.trialList = resultData.trialList
      localStorage.trialList = JSON.stringify(resultData.trialList)
      //设置豁免险保额
      this.setRemitRisk()
      this.nextStepFlag = false
    } else {
      this.nextStepFlag = true
      this.$toast(resultData.resultMessage)
    }
    localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
  },
    //获取试算参数
    getParams() {
      let params = {
        trialInfos: []
      }
      this.chooseProducts.forEach((item) => {
        let trialInfo = {}
        // 【需求】鑫管家、金管家追加限额调整，thirdInsuraceNoStr关联保单号的值，在试算接口添加
        if(this.policyNo){
          trialInfo['thirdInsuraceNoStr'] = this.policyNo
        }
        item.calFactorLst.forEach((factor) => {
          if (factor.type == 0) {
            if (factor.hasFlag == '1') {
              trialInfo[factor.code] = factor[factor.code]
              trialInfo[factor.code + 'Flag'] = factor[factor.code + 'Flag']
              // trialInfo[factor.payEndYear] = factor[factor.payEndYear]
            } else {
              trialInfo[factor.code] = factor[factor.code]
            }
          } else if (factor.type == 1) {
            if (factor.code == 'inputPrem') {
              trialInfo['prem'] =
                this.isTrial == '0'
                  ? Number(item.productTrialYearDTOS[this.payEndYearColumnsIndex].displayAmount) *
                    Number(item.productTrialYearDTOS[this.payEndYearColumnsIndex].moneyUnit)
                  : Number(factor.displayAmount) * Number(factor.moneyUnit)
            } else {
              if (item.isRemit == 0) {
                if (item.productCode == 'GFRS_A0007') {
                  if (factor.code == 'amt') {
                    trialInfo['amt'] = factor.amt
                  }
                } else {
                  trialInfo['amt'] = null
                }
              } else {
                if(item.productCode == 'GFRS_A0011'){
                  // 设置附加两全保额为空  后台试算
                  // GFRS_A0011-附加两全 属于非豁免险  但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
                  trialInfo['amt'] = null
                }else {
                  trialInfo['amt'] = Number(factor.displayAmount) * Number(factor.moneyUnit)
                }
              }
            }
          } else if (factor.type == 2) {
            trialInfo.jobLevel = this.saleInsuredPersonInfo[factor.code]
          } else if (factor.type == 3) {
            let result = []
            factor.rules.forEach((dutyItem) => {
              if (dutyItem.necess) {
                // trialInfo['amt'] = this.trialList[index].amt
                result.push({
                  amt: (Number(dutyItem.defaultDutyAmt) * Number(dutyItem.moneyUnit)).toFixed(2),
                  dutyCode: dutyItem.duty,
                  dutyName: dutyItem.dutyName
                })
              }
            })
              trialInfo.duty = result
            }
        })
        //针对八桂D产品 计算被保人重疾B附加险保额 ==其他长险附加险的保额
        /*if ( this.chooseProducts[0].mainRiskCode == 'GFRS_M0051'||this.chooseProducts[0].mainRiskCode == 'GFRS_M0044'){
          if(item.productCode == 'GFRS_A0010'){
            let risks = JSON.parse(localStorage.chooseProducts);
            let longRisks=[];
            //拿到长险附加险数组
            for (let i = 1; i < risks.length; i++) {
              for(let j = 0; j < risks[i].calFactorLst.length; j++){
                if (risks[i].calFactorLst[j].code === 'insuYear') {
                  if ((risks[i].calFactorLst[j].insuYearFlag == 'Y' && risks[i].calFactorLst[j].insuYear > 1) || risks[i].calFactorLst[j].insuYearFlag == 'A') {
                    longRisks.push(risks[i].productCode);
                  }
                }
              }
            }
            let toTrial = 0
            let trials = JSON.parse(localStorage.trialList)
            trials.forEach(tr=>{
              if(tr.isMainRisk=='1'&&tr.productCode!='GFRS_A0010'&&longRisks.includes(tr.productCode)){
                toTrial+=Number(tr.prem);
              }
            })
            trialInfo.duty.forEach(d=>{
              d.amt=toTrial;
            })
          }
        }*/
        //通用规则1：交费方式为一次交情，无交费期限
        if (trialInfo['payIntv'] == '0') {
          trialInfo['payEndYear'] = '1000'
          trialInfo['payEndYearFlag'] = 'Y'
          // 福宝宝和万能险传A
          if (
            item.mainRiskCode != 'GFRS_M0006' &&
            item.mainRiskCode != 'GFRS_M0017' &&
            item.mainRiskCode != 'GFRS_M0003' &&
            item.mainRiskCode != 'GFRS_M0013'
          ) {
            trialInfo['insuYearFlag'] = 'Y'
          }
          //
          if (item.mainRiskCode == 'GFRS_M0036') {
            trialInfo['insuYearFlag'] = 'A'
          }
        }
        //责任险参数构建
        // if (trialInfo.duty) {
        //   trialInfo.duty = [{ dutyCode: trialInfo.duty }]
        // }
        //获取投被保生日、性别
        let birthday, sex, occupationCode, occupationName, age
        if (item.isRemit == '0' && item.remitType == '0') {
          ;[birthday, sex, occupationCode, occupationName, age] = [
            this.saleInsuredInfo.birthday,
            this.saleInsuredInfo.sex,
            this.saleInsuredInfo.occupationCode,
            this.saleInsuredInfo.occupationName,
            this.saleInsuredPersonInfo.insuredAge
          ]
        } else {
          ;[birthday, sex, occupationCode, occupationName, age] = [
            this.saleInsuredPersonInfo.birthday,
            this.saleInsuredPersonInfo.sex,
            this.saleInsuredPersonInfo.occupationCode,
            this.saleInsuredPersonInfo.occupationName,
            this.saleInsuredPersonInfo.insuredAge
          ]
        }
        trialInfo = Object.assign(trialInfo, {
          birthday,
          sex,
          occupationCode,
          occupationName,
          age,
          platformType: 'app',
          productCode: item.productCode,
          medical: JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).medical,
          isCrossChannel: this.isCrossChannel,
          orderNo: this.$route.query.orderNo
        })
        params.trialInfos.push(trialInfo)
      })
      this.trialInfos = params.trialInfos
      return params
    },

    //选择附加险
    selectAddtionRisk() {
      //存储附加险列表
      let addRiskCodes = []
      this.chooseProducts.forEach((item) => {
        if (item.isMainRisk == 1) {
          addRiskCodes.push(item.productCode)
        }
      })
      if (localStorage.oldAddRiskCodes && JSON.parse(localStorage.oldAddRiskCodes)) {
        addRiskCodes = addRiskCodes.concat(JSON.parse(localStorage.oldAddRiskCodes))
      }
      //930折中方案，豁免险挂订单
      addRiskCodes = addRiskCodes.filter((riskCode) => {
        return riskCode != 'DCRS_A0001'
      })

      localStorage.addRiskCodes = JSON.stringify(addRiskCodes)
      let thismyurl = ''
      if (this.$route.query.orderNo) {
        thismyurl = '/?orderNo=' + this.$route.query.orderNo
      } else if (this.$route.query.proposalOrderNo) {
        thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
      }
      localStorage.editproposaladdrisk = true
      this.$jump({
        flag: 'h5',
        extra: {
          url: location.origin + '/#/common/addRiskList' + thismyurl
        },
        routerInfo: {
          path: '/common/addRiskList' + thismyurl
        }
      })
    },
    //保额份数变化
    stepperChange(defalutValue, productIndex, calFactorIndex, min, max, riskFactor) {
      let currentEle = ''
      let params = this.getParams()
      if(localStorage.isTrial !== '1' && this.chooseProducts[productIndex].isMainRisk == '0'){
        // params[productIndex].payEndYear == '1000' 交费期间为一次性交清
        this.chooseProducts[productIndex].productTrialYearDTOS.forEach(item=>{
          if(params.trialInfos[productIndex].payEndYear == '1000') {
            if(item.yearWay == '一次性交清'){
              currentEle = item
            }
          } else {
            if(item.yearWay == params.trialInfos[productIndex].payEndYear){
              currentEle = item
            }
          }
        })
      } else {
        currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex]
      }
      //改动原因：孝心保产品有对年龄的特殊要求
      //添加判断，是否是孝心保产品
      let showHint = this.chooseProducts[productIndex].hint
      let productCode = localStorage.trialList == '' ? '' : JSON.parse(localStorage.trialList)[0].productCode
      if (productCode == 'GFRS_M0014') {
        //被保险人年龄如果在50-65区间
        if (this.saleInsuredPersonInfo.insuredAge >= 50 && this.saleInsuredPersonInfo.insuredAge <= 65) {
          //使用rules规则里的第二条控制保额份数
          if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
            this.$toast(showHint)
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast(showHint)
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
          //被保险人年龄如果在66-75之间
        } else if (this.saleInsuredPersonInfo.insuredAge >= 66 && this.saleInsuredPersonInfo.insuredAge <= 75) {
          //使用rules规则里的第一条控制保额份数
          if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
            this.$toast(showHint)
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast(showHint)
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
        }
        //isTrial为0 ---暂时为富娃娃两全保险（万能型）专配 输入保费校验
      }
      else if (productCode == 'GFRS_M0035' || productCode == 'GFRS_M0044'
              || productCode == 'GFRS_M0056' || productCode == 'GFRS_M0057' || productCode == 'GFRS_M0060') {
        console.log('defalutValue==', defalutValue)
        console.log("currentEle['amt']==", currentEle['amt'])
        console.log('riskFactor.rules', riskFactor.rules)
        console.log('this.saleInsuredPersonInfo.insuredAge ', this.saleInsuredPersonInfo.insuredAge)
        //被保险人年龄如果在50-65区间
        if (this.saleInsuredPersonInfo.insuredAge >= 56 && this.saleInsuredPersonInfo.insuredAge <= 60) {
          //使用rules规则里的第二条控制保额份数
          // 年龄在56周岁及以上被保险人，投保本险种时，最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
          if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
            this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
          //年龄在0-55周岁被保险人，投保本险种时，最低基本保险金额为50000元，超过最低基本保险金额为10000元整数倍。
        } else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 55) {
          //使用rules规则里的第一条控制保额份数
          if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
            this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
        }
        //isTrial为0 ---暂时为富娃娃两全保险（万能型）专配 输入保费校验
      }
      else if (productCode == 'GFRS_M0040') {
        // 惠企保保额限制
        //被保险人年龄如果在41-60区间
        if (this.saleInsuredPersonInfo.insuredAge >= 41) {
          //使用rules规则里的第二条控制保额份数
          if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
            this.$toast('年龄在41周岁至60周岁被保险人，投保本险种时，最低基本保险金额为50000元。超过最低基本保险金额为10000元整数倍。')
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast('年龄在41周岁至60周岁被保险人，投保本险种时，最低基本保险金额为50000元。超过最低基本保险金额为10000元整数倍。')
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
        } else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 40) {
          //使用rules规则里的第一条控制保额份数
          if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
            this.$toast('年龄在0-40周岁被保险人，投保本险种时，最低基本保险金额为100000元，超过最低基本保险金额为10000元整数倍。')
            this.nextStepFlag = true
          } else {
            if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
              // this.defalutAmt = currentEle.rules[productIndex].displayAmount
              this.$toast('年龄在0-40周岁被保险人，投保本险种时，最低基本保险金额为100000元，超过最低基本保险金额为10000元整数倍。')
              this.nextStepFlag = true
            } else {
              this.mainRiskInfluenceAddRisk()
              currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
              this.getTrial()
            }
          }
        }
        //isTrial为0 ---暂时为富娃娃两全保险（万能型）专配 输入保费校验
      }
      else if (productCode == 'GFRS_M0046') {
        //被保险人年龄如果在50-65区间
        if(this.branchTypeVal == 'Z'){  //中介渠道规则
          if (this.saleInsuredPersonInfo.insuredAge >= 51 && this.saleInsuredPersonInfo.insuredAge <= 60) {
            //使用rules规则里的第二条控制保额份数
            // 年龄在51周岁及以上被保险人，投保本险种时，最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
            if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
              this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
                // this.defalutAmt = currentEle.rules[productIndex].displayAmount
                this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
                this.nextStepFlag = true
              } else {
                this.mainRiskInfluenceAddRisk()
                currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
                this.getTrial()
              }
            }
            //年龄在0-50周岁被保险人，投保本险种时，最低基本保险金额为50000元，超过最低基本保险金额为10000元整数倍。
          } else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 50) {
            //使用rules规则里的第一条控制保额份数
            if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
              this.$toast('0周岁-50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
                this.$toast('0周岁-50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
                this.nextStepFlag = true
              } else {
                this.mainRiskInfluenceAddRisk()
                currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
                this.getTrial()
              }
            }
          }
        }else if(this.branchTypeVal == 'G' || this.branchTypeVal == 'T'|| this.branchTypeVal == 'Y' ){ //世纪无忧中介渠道规则（银销个,健销个投保规则同个险规则）
          //被保险人年龄如果在50-65区间
          if (this.saleInsuredPersonInfo.insuredAge >= 56 && this.saleInsuredPersonInfo.insuredAge <= 60) {
            //使用rules规则里的第二条控制保额份数
            // 年龄在51周岁及以上被保险人，投保本险种时，最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
            if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
              this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
                // this.defalutAmt = currentEle.rules[productIndex].displayAmount
                this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
                this.nextStepFlag = true
              } else {
                this.mainRiskInfluenceAddRisk()
                currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
                this.getTrial()
              }
            }
            //年龄在0-50周岁被保险人，投保本险种时，最低基本保险金额为50000元，超过最低基本保险金额为10000元整数倍。
          } else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 55) {
            //使用rules规则里的第一条控制保额份数
            if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
              this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
              this.nextStepFlag = true
            } else {
              if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
                this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
                this.nextStepFlag = true
              } else {
                this.mainRiskInfluenceAddRisk()
                currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
                this.getTrial()
              }
            }
          }
        }
        // 国富人寿富桂金生养老年金保险（GFRS_M0053）中介渠道鑫享金生养老年金保险（GFRS_M0061）
      }
      else if (productCode == 'GFRS_M0053' || productCode == 'GFRS_M0061') {
        if (Number(defalutValue) < Number(min)) {
          if (riskFactor.yearWay == "一次性交清") {
            this.$toast(`交费期间为${riskFactor.yearWay}时，最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
          } else {
            this.$toast(`交费期间为${riskFactor.yearWay}年交时，最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
          }
          this.nextStepFlag = true
        }else{
          this.nextStepFlag = false
          this.mainRiskInfluenceAddRisk()
          currentEle['amt'] = Number(defalutValue) * Number(riskFactor.moneyUnit)
          this.getTrial()
        }
      }
      else if (this.isTrial === '0' && this.chooseProducts[productIndex].isMainRisk == '0') {
        if (Number(defalutValue) < Number(min)) {
          if (riskFactor.yearWay == "一次性交清") {
            this.$toast(`交费期间为${riskFactor.yearWay}时，最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
          } else {
            this.$toast(`交费期间为${riskFactor.yearWay}年交时，最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
          }
          this.nextStepFlag = true
        } else {
          if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
            // this.defalutAmt = currentEle.rules[productIndex].displayAmount
            this.$toast(`超过最低保费部分金额需为1000元整数倍`)
            this.nextStepFlag = true
          } else {
            this.nextStepFlag = false
            this.mainRiskInfluenceAddRisk()
            currentEle['amt'] = Number(defalutValue) * Number(riskFactor.moneyUnit)
            this.getTrial()
          }
        }
        //其他产品按照原先的逻辑判断
      }
      else if (this.isTrial === '0' && this.chooseProducts[productIndex].isMainRisk == '1') {
        if (Number(defalutValue) < Number(min) || Number(defalutValue) > Number(max)) {
          this.$toast('投保本险种最低基本保险金额为10000元，超过最低基本保险金额为1000元整数倍')
          this.nextStepFlag = true
        } else {
          if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
            // defalutValue = currentEle.rules[productIndex].displayAmount
            this.$toast('投保本险种最低基本保险金额为10000元，超过最低基本保险金额为1000元整数倍')
            this.nextStepFlag = true
          } else {
            this.mainRiskInfluenceAddRisk()
            currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
            this.getTrial()
          }
        }
      }
      else {
        if (Number(defalutValue) < Number(min) || Number(defalutValue) > Number(max)) {
          this.$toast(showHint)
          this.nextStepFlag = true
        } else {
          if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
            // defalutValue = currentEle.rules[productIndex].displayAmount
            this.$toast(showHint)
            this.nextStepFlag = true
          } else {
            this.mainRiskInfluenceAddRisk()
            currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
            this.getTrial()
          }
        }
      }
      // let currentEle = this.chooseProducts[this.productIndex].calFactorLst[this.calFactorIndex]
      // defalutValue = value
      console.log('进来几次')
      this.mult = Math.ceil(Number(defalutValue) / Number(riskFactor.defaultValue))
    },
    //下一步
    async nextStep(isFrom) {
      //GFRS_M0016需要验证责任
      if (this.mainRiskCode === 'GFRS_M0016' || this.mainRiskCode === 'GFRS_M0070') {
        let calFactorLst = this.chooseProducts[0].calFactorLst
        for (let i = 0; i < calFactorLst.length; i++) {
          if (calFactorLst[i].code === 'dutyGroup') {
            let duties = calFactorLst[i].rules
            for (let j = 0; j < duties.length; j++) {
              let item = duties[j]
              if (!this.valiDuty(item.defaultDutyAmt, item.duty)) {
                return
              }
            }
          }
        }
      }

      //GFRS_A0004需要验证责任
      for (let m = 0; m < this.chooseProducts.length; m++) {
        if (this.chooseProducts[m].productCode == 'GFRS_A0004' || this.chooseProducts[m].productCode == 'GFRS_A0008') {
          let showHint = this.chooseProducts[m].hint
          let calFactorLst = this.chooseProducts[m].calFactorLst
          for (let i = 0; i < calFactorLst.length; i++) {
            if (calFactorLst[i].code === 'dutyGroup') {
              let duties = calFactorLst[i].rules
              for (let j = 0; j < duties.length; j++) {
                let item = duties[j]
                if (!this.valiA0004Duty(item.defaultDutyAmt, showHint, item)) {
                  return
                }
              }
            }
          }
        }
      }
      // 验证格式
      if (this.isRelated && this.isFrom != 'proposal' && this.policyNo) {
        let vl = /^[0-9\\]+$/.test(this.policyNo)
        if (!vl) {
          return this.$toast('关联保单的格式不正确')
        }
      }

      //组装险种提交数据
      let [mainRiskCode, riskDTOLst] = ['', []]
      let rollInResult = '' //校验预计转入保费结果
      this.chooseProducts.forEach((item, index) => {
        if (localStorage.trialList != '') {
          if (item.isMainRisk == 0) {
            mainRiskCode = item.productCode
          }

          let insuanceId = ''

          if(this.$route.query.insuanceIdInfo){
            let thismyinsuanceIdInfo = JSON.parse(this.$route.query.insuanceIdInfo)
            thismyinsuanceIdInfo.forEach(item01=>{
              if(item01.riskCode == item.productCode){
                insuanceId = item01.insuanceId
              }
            })
          }

          let riskItem = {
            isMainRisk: item.isMainRisk,
            riskName: item.riskName,
            riskType: item.riskType,
            riskCode: item.productCode,
            mainRiskCode: mainRiskCode,
            prem: this.trialList[index] && this.trialList[index].prem,
            standPrem: this.trialList[index] && this.trialList[index].standPrem,
            predictTransferPrem: item.predictTransferPrem,
            thirdInsuraceNo: this.policyNo
            // mult: this.mult
          }
          if(this.$route.query.insuanceIdInfo){
            riskItem.insuanceId = insuanceId
          }
          if (item.hasPredictTransferPrem && item.hasPredictTransferPrem === '0') {
            //增加万能险 预计转入保费校验
            rollInResult = this.rollInCheck(item.predictTransferPrem)
          } else {
            rollInResult = true
          }
          //责任险保存参数构建
          if (this.trialList[index].duty) {
            riskItem['dutyLst'] = this.trialList[index].duty
            //930折中方案，责任险分档
            riskItem['amt'] = this.trialList[index].amt
          } else {
            //国富人寿桂企保重大疾病保险产品专写,有可选责任的产品需要配置一下
            if (
              this.trialList[index].productCode == 'GFRS_M0024' ||
              this.trialList[index].productCode == 'GFRS_M0040' ||
              this.trialList[index].productCode == 'GFRS_M0044' ||
              this.trialList[index].productCode == 'GFRS_M0046' ||
              this.trialList[index].productCode == 'GFRS_M0051' ||
              this.trialList[index].productCode == 'GFRS_M0054' ||
              this.trialList[index].productCode == 'GFRS_M0073' ||
              this.trialList[index].productCode == 'GFRS_M0057'
            ) {
              riskItem['dutyLst'] = this.trialInfos[index].duty
            }
          }
          //保费算保额
          if (this.trialList[index].trialType == '1' || this.trialList[index].trialType == '2') {
            riskItem['amt'] = this.trialList[index].amt
          }
          //万能型产品保费赋值给保额
          //增加判断是否是从建议书跳转过来了的
          if (localStorage.isFrom != 'proposal') {
            if (
                    this.trialList[index].productCode == 'GFRS_M0003' ||
                    this.trialList[index].productCode == 'GFRS_M0015' ||
                    this.trialList[index].productCode == 'GFRS_M0017'
            ) {
              riskItem['amt'] = this.trialList[index].prem
            }
          }

        //豁免险保额处理
        if (item.isRemit == '0') {
          this.trialInfos[index].amt = this.trialList[0].prem
        }

        if (item.productCode == 'GFRS_A0001') {
          this.trialInfos[index].amt = this.trialList[0].standPrem
        }

        if (item.productCode == 'GFRS_A0003' ||  item.productCode == 'GFRS_A0007') {
          // bug--鑫享年年+附加豁免投保人定寿B+附加豁免投保人重疾B，投保单号8186270000016187
          // ①豁免重疾B的保额应该等于主险的保费，该单的豁免重疾B的保额等于主险的保额不正确。
          this.trialInfos[index].amt = this.trialList[index].amt
        }
        // GFRS_A0009,GFRS_A0010 这两款时，责任保额不相加
        if(item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0013'|| item.productCode == 'GFRS_A0014'){
          this.trialInfos[index].amt = this.trialList[index].duty[0].amt
        }
        // GFRS_A0011-附加两全 属于非豁免险  但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
        if (item.productCode == 'GFRS_A0011') {
          this.trialInfos[index].amt = this.trialList[0].prem
        }
        if (!this.renewalShow(this.mainRiskCode)) {
          for (let prop of item.calFactorLst) {
            if (prop.type === '4') {
              this.trialInfos[index].isRenewal = this.renewal
            }
          }
        }

        // console.log(riskItem)
        riskItem = Object.assign(riskItem, this.trialInfos[index])
        riskDTOLst.push(riskItem)
      }
    })
      if (!rollInResult) {
        return
      }
      //国富人寿桂企保重大疾病保险产品专写
      this.trialInfos.map((v, i) => {
        if (v.productCode == 'GFRS_M0024' || v.productCode == 'GFRS_M0040' || v.productCode == 'GFRS_M0044'
                || v.productCode == 'GFRS_M0046'|| v.productCode == 'GFRS_M0051'|| v.productCode == 'GFRS_M0057' || v.productCode == 'GFRS_M0073') {
          delete riskDTOLst[i].duty
        }
      })

      //建议书需要添加全部投保人信息，电投只需要投保人ID
      let insuredDTOItem = Object.assign(this.saleInsuredPersonInfo, { riskDTOLst: riskDTOLst })
      if (!insuredDTOItem.insuredAge) {
        insuredDTOItem.insuredAge = insuredDTOItem.birthday ? utilsAge.getAge(insuredDTOItem.birthday, new Date()) : insuredDTOItem.age
      }
      let orderNo = localStorage.isFrom == 'proposal'?this.$route.query.proposalOrderNo:this.$route.query.orderNo
      let params = {
        orderType: 'RISK_ORDER',
        orderDTO: {
          orderInfoDTO: {
            orderNo: orderNo,
            productChannel:this.isCrossChannel
          },
          // appntDTO: {},
          insuredDTOs: [insuredDTOItem]
        }
      }

      // 富娃娃&一年定寿交费方式,交费区间固定为月交
      if (this.richChildrenFlag) {
        let product = params.orderDTO.insuredDTOs[0].riskDTOLst.find(item => {
          return item.productCode === 'GFRS_M0015'
        })
        if (product) {
          let trialProduct = params.orderDTO.insuredDTOs[0].riskDTOLst.find(item => {
            return item.productCode === 'GFRS_A0006'
          })
          if (trialProduct) {
            trialProduct.prem = 0
            trialProduct.payIntv = 1
            trialProduct.insuYearFlag = 'M'
            trialProduct.payEndYear = 1
          }
        }
      }

      let resultData
      if (localStorage.isFrom == 'proposal') {
        // 从建议书进入, 豁免险保费空值特殊处理
        let prdCodes = ['GFRS_A0001', 'GFRS_A0007']
        params.orderDTO.insuredDTOs[0].riskDTOLst.forEach(item => {
          if (prdCodes.includes(item.productCode)) {
            this.trialList.forEach(element => {
              if (item.productCode == element.productCode) {
                item.amt = element.amt
              }
            })
          }
        })
        resultData = await saveProposal(params)
      }
      else if (isFrom != 'orderTrial' && localStorage.isFrom == 'sale') {
        resultData = await saveOrUpdateOrderInfo(params)
      }
      else if (isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
        this.$toast.loading({
          duration: 0, // 持续展示 toast
          forbidClick: true, // 禁用背景点击
          loadingType: 'spinner',
          message: '核保试算中'
        })
        resultData = await orderTrial(params)
      }
      if (resultData.result == 0) {
          window.localStorage.removeItem("editproposaladdrisk")
          //电投
          if (isFrom != 'orderTrial' && localStorage.isFrom == 'sale') {
            if (resultData.deleteFlag == '0') {
              localStorage.salePageFlag = '3';
            }
            let thismyurl = ''
            if (this.$route.query.orderNo) {
              thismyurl = '/?orderNo=' + this.$route.query.orderNo
            } else if (this.$route.query.proposalOrderNo) {
              thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
            }
            this.$jump({
              flag: 'goBack',
              extra: {
                refresh: '1',
                index: '-2'
              },
              routerInfo: {
                type: 2,
                index: -2,
                path: '/common/selectedProduct' + thismyurl
              }
            })
          }
          else if (localStorage.isFrom == 'proposal'){
            let proposalOrderNo = this.$CacheUtils.getLocItem('proposalNo') || ''
            if (resultData.content.id) {
              this.saleInsuredPersonInfo.insuredId = resultData.content.id;
              this.$CacheUtils.setLocItem('saleInsuredPersonInfo', JSON.stringify(this.saleInsuredPersonInfo))
            }
            //试算记录保存更新--编辑
            this.saveOrUpdateTrialRecordInfoFunc(resultData.content.riskDTO)
          }
          else if (isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
            this.$toast.clear()
            this.trialResultsShow = true
            this.verifyResultList = resultData.content.data.verifyResultList
          }
        }
    },
    //建议书试算记录保存更新--编辑功能
    saveOrUpdateTrialRecordInfoFunc(riskDTO){
        let insuanceId
        riskDTO.forEach(item => {
          if (item.isMainRisk == '0') {
            insuanceId = item.insuanceId
          }
        })
        let data = {
          serialNo:this.$route.query.proposalOrderNo,
          mainRiskId:insuanceId+'',
          trialJsonStr:localStorage.chooseProducts
        }
        if(this.trialRecordInfoId){
          data.id = this.trialRecordInfoId
        }
        saveOrUpdateTrialRecordInfo(data).then(res => {
          if (res.result == '0') {
            //被保人产品列表界面 点击编辑按钮进入产品试算界面 点击完成 页面跳转不正确
            let proposalOrderNo = ''
            if(this.$route.query.proposalOrderNo){
              proposalOrderNo = this.$route.query.proposalOrderNo
            }else{
              proposalOrderNo = this.$route.query.orderNo
            }
            let url = `/common/selectedProduct?proposalOrderNo=${proposalOrderNo}`
            if ( localStorage.isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
              this.$toast.clear()
              this.trialResultsShow = true
              this.verifyResultList = res.content.data.verifyResultList
            }
            this.$jump({
              flag: 'h5',
              extra: {
                url: location.origin + '/#' + url
              },
              routerInfo: {
                path: url
              }
            })
            // this.$jump({
            //   flag: 'goBack',
            //   extra: {
            //     refresh: '1',
            //     index: '-2'
            //   },
            //   routerInfo: {
            //     type: 2,
            //     index: -2,
            //     path: url
            //   }
            // })
          } else {
            this.$toast(res.resMessage)
          }
        })
      },
    rollInCheck(value) {
        let regExp = /^[1-9]+[0-9]*$/
        let result = regExp.test(value)
        if (result) {
          return true
        } else {
          this.$toast.fail('请输入正确的预计转入保费')
          return false
        }
      }
    },
    watch: {
      // chooseProducts: {
      //   deep: true,
      //   handler: function(newVal) {
      //     this.chooseProducts = newVal
      //   }
      // }
    }
  }
</script>
<style lang="scss" scoped>
/deep/ .van-dialog .van-dialog__header{
  font-size: 16px;
  font-weight: 700;
}
/deep/ .van-button--danger{
  border-radius: 0;
}

/deep/ .van-button--plain {
  border: none !important;
  border-top: 1px solid #E9332E !important;
}
.renewalWrappser {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/deep/ .van-radio {
  margin: 0 0.5em;
}

.renewal {
  display: flex;
  justify-content: flex-end;
  padding: 1em;
}

/deep/ .van-radio__label {
  line-height: normal;
}

.calculate-premium-container {
  .border-bottom {
    border-bottom: 1px solid #dadada;
  }
  .van-cell {
    padding: 0px;
  }
  .prem:last-child {
    border: none;
  }
  /deep/.van-action-sheet__name {
    font-size: 12px;
  }
  .checkbox-click {
    position: absolute;
    right: 0;
    top: 0;
    width: 7.46667vw;
    height: 7.46667vw;
  }
  .van-dialog__content{
    border: 1px solid red;
  }
}
</style>
