Commit 585a700c authored by 郭志伟's avatar 郭志伟 Committed by 郝聪敏

feat: 详情查询,算价完成

parent 8c011e89
public/favicon.ico

4.19 KB | W: | H:

public/favicon.ico

4.19 KB | W: | H:

public/favicon.ico
public/favicon.ico
public/favicon.ico
public/favicon.ico
  • 2-up
  • Swipe
  • Onion skin
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Description: 华贵大麦2020定期寿险 * @Description: 华贵大麦2020定期寿险
* @Date: 2020-07-27 15:46:37 * @Date: 2020-07-27 15:46:37
* @LastEditors: gzw * @LastEditors: gzw
* @LastEditTime: 2020-08-05 19:24:06 * @LastEditTime: 2020-08-06 14:57:34
*/ */
import goodsBg from "@/assets/images/goods/detail/shouxian/bg.png"; import goodsBg from "@/assets/images/goods/detail/shouxian/bg.png";
...@@ -164,5 +164,35 @@ export default { ...@@ -164,5 +164,35 @@ export default {
title: "理赔付款", title: "理赔付款",
desc: `保险公司结案后,转账付款完成理赔。` desc: `保险公司结案后,转账付款完成理赔。`
} }
],
planInfo: [
{
title: "100种重大疾病保险金",
desc:
"<p>重大疾病包括恶性肿瘤、急性心肌梗塞、终末期肾病(或称慢性肾功能衰竭尿毒症期)等100种。在等待期(90天,意外伤害事故无等待期)后初次发生并经医院专科医生确诊罹患本合同约定的一种或多种重大疾病,保险人按照保险单中约定的重大疾病保险金额给付重大疾病保险金,同时在本保险合同项下对该被保险人的保险责任终止。</p>",
url: "查看100种重大疾病",
path: "http://mangguo-contract.qthbx.com/hua-tai-100chong-zhong-ji-v1/",
list: ""
},
{
title: "40种轻症疾病保险金",
desc:
"<p>轻症疾病包括冠状动脉介入手术、非危及生命的(极早期的)恶性病变、轻度中风后遗症等40种。在等待期(90天,意外伤害事故无等待期)后初次发生并经医院专科医生确诊罹患本合同约定的一种或多种轻症。保险人按照保险合同中约定的轻症保险金额给付轻症保险金,同时轻症责任终止。轻症保险金仅针对本保险合同约定的轻症进行给付,轻症疾病必须在生前诊断,对于任何身故后的尸检诊断不给付轻症疾病保险金。对于已经符合重大疾病保险金给付条件的,仅给付重大疾病保险金,不再给付轻症保险金。</p>",
url: "查看40种轻症疾病",
path: "http://mangguo-contract.qthbx.com/hua-tai-100chong-qing-zheng-v1/",
list: ""
},
{
title: "保额说明",
desc: `
<p><strong>重疾30万保额:</strong></p>
<p>30天~50周岁可投保,可逐年续保至99周岁。</p>
<p><strong>重疾20万保额:</strong></p>
<p>30天~60周岁可投保,可逐年续保至99周岁。</p>
<p><strong>重疾10万保额:</strong></p>
<p>
30天~60周岁可投保,可逐年续保至99周岁。</p>
`
}
] ]
}; };
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Description: 泰康600万医疗保障 * @Description: 泰康600万医疗保障
* @Date: 2020-07-27 15:46:37 * @Date: 2020-07-27 15:46:37
* @LastEditors: gzw * @LastEditors: gzw
* @LastEditTime: 2020-08-05 16:19:26 * @LastEditTime: 2020-08-06 11:46:46
*/ */
import goodsBg from "@/assets/images/goods/detail/yiliaoxian/bg.png"; import goodsBg from "@/assets/images/goods/detail/yiliaoxian/bg.png";
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Description:众安50万意外险 * @Description:众安50万意外险
* @Date: 2020-07-27 15:46:37 * @Date: 2020-07-27 15:46:37
* @LastEditors: gzw * @LastEditors: gzw
* @LastEditTime: 2020-08-05 19:23:22 * @LastEditTime: 2020-08-06 14:22:44
*/ */
import goodsBg from "@/assets/images/goods/detail/yiwaixian/bg.png"; import goodsBg from "@/assets/images/goods/detail/yiwaixian/bg.png";
...@@ -104,10 +104,6 @@ export default { ...@@ -104,10 +104,6 @@ export default {
{ label: "父母", value: "3" }, { label: "父母", value: "3" },
{ label: "子女", value: "4" } { label: "子女", value: "4" }
], ],
paywayOptions: [
{ label: "月缴<small style='color: #999;font-size: 11px'>(12期)</small>", value: "1" },
{ label: "一次交清", value: "2" }
],
noticeCellInfo: { noticeCellInfo: {
"10": [ "10": [
{ title: "投保年龄", value: `18周岁~65周岁` }, { title: "投保年龄", value: `18周岁~65周岁` },
......
...@@ -119,10 +119,10 @@ export default { ...@@ -119,10 +119,10 @@ export default {
overflow: scroll; overflow: scroll;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
&-wrap { &-wrap {
position: fixed; // position: fixed;
bottom: 0; // bottom: 0;
left: 0; // left: 0;
z-index: 201; // z-index: 201;
height: 80vh; height: 80vh;
overflow: scroll; overflow: scroll;
width: 100vw; width: 100vw;
......
<template> <template>
<div class="container"> <cr-form scroll-to-error @submit="onSubmit" @failed="onFailed" class="container">
<nav-tab :nav-list="navBarOptions" /> <nav-tab :nav-list="navBarOptions" />
<detail-header @click="goInsureState = true" :det="headerInfo" /> <detail-header :det="headerInfo" />
<div class="det-body"> <div class="det-body">
<card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)"> <card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)">
<cr-radio-btn v-model="formData.planValue" :radio-data="planOptions" /> <cr-radio-btn v-model="formData.planValue" :radio-data="planOptions" />
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
@cell-click="openIframePupop" @cell-click="openIframePupop"
/> />
<protocol-read <protocol-read
v-model="formData.pact" v-model="formData.autoRenewPolicy"
:cell-data="noticeCellData" :cell-data="noticeCellData"
:protocol-data="protocolData" :protocol-data="protocolData"
@cell-click="openIframePupop" @cell-click="openIframePupop"
...@@ -53,9 +53,11 @@ ...@@ -53,9 +53,11 @@
v-model="goInsureState" v-model="goInsureState"
:title="headerInfo.title" :title="headerInfo.title"
:pay-data="goodBuyModalInfo" :pay-data="goodBuyModalInfo"
@confirm="nextStep"
@read-protocol="openIframePupop"
:protocol-data="protocolData" :protocol-data="protocolData"
/> />
</div> </cr-form>
</template> </template>
<script> <script>
...@@ -85,7 +87,7 @@ import ProtocolRead from "./modules/ProtocolRead"; ...@@ -85,7 +87,7 @@ import ProtocolRead from "./modules/ProtocolRead";
import NavTab from "./modules/NavTab"; import NavTab from "./modules/NavTab";
import Detail from "@/api/detail.zhongan.yiwai"; import Detail from "@/api/detail.zhongan.yiwai";
import { detail } from "@/api/product"; import { detail, trail } from "@/api/product";
export default { export default {
name: "GoodsDetail-AI", name: "GoodsDetail-AI",
...@@ -115,19 +117,23 @@ export default { ...@@ -115,19 +117,23 @@ export default {
data() { data() {
return { return {
...Detail, ...Detail,
goodId: "",
goodActionInfo: {}, goodActionInfo: {},
goodBuyModalInfo: [], goodBuyModalInfo: [],
popupShow: false, popupShow: false,
currentPupopIndex: null, currentPupopIndex: null,
calTimer: null,
formData: { formData: {
planValue: "10", name: "",
idNo: "",
socialSecurity: "1",
insured: "1", insured: "1",
payway: "1", type: "1",
planValue: "10",
auto: false, auto: false,
pact: false autoRenewPolicy: true
}, },
goInsureState: false, goInsureState: false
showLayer: false
}; };
}, },
watch: { watch: {
...@@ -136,7 +142,21 @@ export default { ...@@ -136,7 +142,21 @@ export default {
handler(val) { handler(val) {
const { price } = val; const { price } = val;
this.goodActionInfo = { title: price }; this.goodActionInfo = { title: price };
this.goodBuyModalInfo = [{ title: `${price[2]}保费`, value: `${price[0]}${price[1]}` }]; this.goodBuyModalInfo = [{ title: `每年保费`, value: `${price[0]}元` }];
}
},
formDataCpu: {
deep: true,
handler(val, oldVal) {
if (this.calTimer) {
clearTimeout(this.calTimer);
}
const { name, idNo } = val;
const { name: oldName, idNo: oldNo } = oldVal;
if (name === oldName && idNo === oldNo) return;
this.calTimer = setTimeout(() => {
this.calFee({ name, idNo });
}, 600);
} }
} }
}, },
...@@ -161,6 +181,9 @@ export default { ...@@ -161,6 +181,9 @@ export default {
insuredOptions, insuredOptions,
paywayOptions paywayOptions
}; };
},
formDataCpu() {
return JSON.parse(JSON.stringify(this.formData));
} }
}, },
mounted() { mounted() {
...@@ -175,6 +198,17 @@ export default { ...@@ -175,6 +198,17 @@ export default {
this.currentPupopIndex = index; this.currentPupopIndex = index;
this.popupShow = true; this.popupShow = true;
}, },
onSubmit() {
this.goInsureState = true;
sessionStorage.setItem("policyFormData", JSON.stringify(this.formData));
},
onFailed(errorInfo) {
const { errors } = errorInfo;
this.$notify({ type: "warning", message: errors[0].message });
},
nextStep() {
// 支付
},
async getDetail() { async getDetail() {
this.goodId = this.$route.query.id; this.goodId = this.$route.query.id;
const res = await detail({ productNo: this.goodId }); const res = await detail({ productNo: this.goodId });
...@@ -182,6 +216,17 @@ export default { ...@@ -182,6 +216,17 @@ export default {
this.headerInfo.price[0] = res.price; this.headerInfo.price[0] = res.price;
this.headerInfo.company = res.companyName; this.headerInfo.company = res.companyName;
} }
},
async calFee({ name, idNo }) {
let { price } = this.headerInfo;
const res = await trail({ name, idNo, productNo: this.goodId });
if (res) {
price[0] = res.regularPrice;
this.goodActionInfo = {
title: price
};
this.goodBuyModalInfo = [{ title: `每年保费`, value: `${price[0]}元` }];
}
} }
} }
}; };
......
<template> <template>
<cr-form scroll-to-error @submit="onSubmit" @failed="onFailed" class="container"> <cr-form scroll-to-error @submit="onSubmit" @failed="onFailed" class="container">
<nav-tab :nav-list="navBarOptions" /> <nav-tab :nav-list="navBarOptions" />
<detail-header @click="goInsureState = true" :det="headerInfo" /> <detail-header :det="headerInfo" />
<div class="det-body"> <div class="det-body">
<card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)"> <card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)">
<cr-radio-btn v-model="formData.planValue" :radio-data="planOptions" /> <cr-radio-btn v-model="formData.planValue" :radio-data="planOptions" />
...@@ -52,6 +52,8 @@ ...@@ -52,6 +52,8 @@
v-model="goInsureState" v-model="goInsureState"
:title="headerInfo.title" :title="headerInfo.title"
:pay-data="goodBuyModalInfo" :pay-data="goodBuyModalInfo"
@confirm="nextStep"
@read-protocol="openIframePupop"
/> />
</cr-form> </cr-form>
</template> </template>
...@@ -113,6 +115,7 @@ export default { ...@@ -113,6 +115,7 @@ export default {
data() { data() {
return { return {
...Detail, ...Detail,
goodId: "",
calTimer: null, calTimer: null,
goodActionInfo: {}, goodActionInfo: {},
goodBuyModalInfo: [], goodBuyModalInfo: [],
...@@ -126,10 +129,9 @@ export default { ...@@ -126,10 +129,9 @@ export default {
type: "1", type: "1",
planValue: "3", planValue: "3",
auto: false, auto: false,
autoRenewPolicy: false autoRenewPolicy: true
}, },
goInsureState: false, goInsureState: false
showLayer: false
}; };
}, },
watch: { watch: {
...@@ -147,28 +149,17 @@ export default { ...@@ -147,28 +149,17 @@ export default {
]; ];
} }
}, },
formData: { formDataCpu: {
deep: true, deep: true,
handler(val, oldVal) { handler(val, oldVal) {
if (this.calTimer) { if (this.calTimer) {
clearTimeout(this.calTimer); clearTimeout(this.calTimer);
} }
const { name, idNo, socialSecurity, type } = val; const { name, idNo, type } = val;
const { const { name: oldName, idNo: oldNo, type: oldType } = oldVal;
name: oldName, if (name === oldName && idNo === oldNo && type === oldType) return;
idNo: oldNo,
socialSecurity: oldSocialSecurity,
type: oldType
} = oldVal;
if (
name === oldName &&
idNo === oldNo &&
socialSecurity === oldSocialSecurity &&
type === oldType
)
return;
this.calTimer = setTimeout(() => { this.calTimer = setTimeout(() => {
this.calFee({ name, idNo, socialSecurity, type }); this.calFee({ name, idNo, type });
}, 600); }, 600);
} }
} }
...@@ -194,6 +185,9 @@ export default { ...@@ -194,6 +185,9 @@ export default {
insuredOptions, insuredOptions,
paywayOptions paywayOptions
}; };
},
formDataCpu() {
return JSON.parse(JSON.stringify(this.formData));
} }
}, },
mounted() { mounted() {
...@@ -209,13 +203,15 @@ export default { ...@@ -209,13 +203,15 @@ export default {
this.popupShow = true; this.popupShow = true;
}, },
onSubmit() { onSubmit() {
this.goInsureState = true;
sessionStorage.setItem("policyFormData", JSON.stringify(this.formData)); sessionStorage.setItem("policyFormData", JSON.stringify(this.formData));
this.$router.push("/goods/inform");
}, },
onFailed(errorInfo) { onFailed(errorInfo) {
const { errors } = errorInfo; const { errors } = errorInfo;
this.$notify({ type: "warning", message: errors[0].message }); this.$notify({ type: "warning", message: errors[0].message });
// this.goInsureState = true; },
nextStep() {
this.$router.push("/goods/inform");
}, },
async getDetail() { async getDetail() {
this.goodId = this.$route.query.id; this.goodId = this.$route.query.id;
...@@ -226,9 +222,9 @@ export default { ...@@ -226,9 +222,9 @@ export default {
this.headerInfo.company = res.companyName; this.headerInfo.company = res.companyName;
} }
}, },
async calFee({ name, idNo, socialSecurity, type }) { async calFee({ name, idNo, type }) {
let { price, subPrice } = this.headerInfo; let { price, subPrice } = this.headerInfo;
const res = await trail({ name, idNo, socialSecurity, type }); const res = await trail({ name, idNo, type, productNo: this.goodId });
if (res) { if (res) {
price[0] = res.firstPrice; price[0] = res.firstPrice;
subPrice[0] = res.regularPrice; subPrice[0] = res.regularPrice;
......
<template> <template>
<div class="container"> <cr-form scroll-to-error @submit="onSubmit" @failed="onFailed" class="container">
<nav-tab :nav-list="navBarOptions" /> <nav-tab :nav-list="navBarOptions" />
<detail-header @click="goInsureState = true" :det="headerInfo"> <detail-header :det="headerInfo">
<div class="li-header"> <div class="li-header">
<plan-tip :tip-list="planTipOptions" /> <plan-tip :tip-list="planTipOptions" />
<cr-divider :hairline="false" :style="{ color: '#ECE9E9' }" /> <cr-divider :hairline="false" :style="{ color: '#ECE9E9' }" />
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
title="理赔须知" title="理赔须知"
:options="[]" :options="[]"
:text-bold="true" :text-bold="true"
v-model="formData.pact" v-model="formData.autoRenewPolicy"
:cell-data="noticeCellInfo" :cell-data="noticeCellInfo"
@cell-click="openIframePupop" @cell-click="openIframePupop"
> >
...@@ -71,20 +71,16 @@ ...@@ -71,20 +71,16 @@
</div> </div>
<detail-footer :company-info="companyInfo" /> <detail-footer :company-info="companyInfo" />
<copyright /> <copyright />
<good-action <good-action :content="goodActionInfo" :class="{ 'cal-fee': currentPupopIndex === 6 }" />
@click="$router.push('/policy/add')"
:content="goodActionInfo"
:class="{ 'cal-fee': currentPupopIndex === 6 }"
/>
<popup-with-iframe <popup-with-iframe
v-model="popupShow" v-model="popupShow"
:title="pupopData.title" :title="pupopData.title"
:content="pupopData.content" :content="pupopData.content"
:url="pupopData.url" :url="pupopData.url"
> >
<cal-insured-fee v-if="currentPupopIndex === 6" /> <cal-insured-fee v-model="formData" v-if="currentPupopIndex === 6" />
</popup-with-iframe> </popup-with-iframe>
</div> </cr-form>
</template> </template>
<script> <script>
...@@ -110,7 +106,7 @@ import ProtocolRead from "./modules/ProtocolRead"; ...@@ -110,7 +106,7 @@ import ProtocolRead from "./modules/ProtocolRead";
import NavTab from "./modules/NavTab"; import NavTab from "./modules/NavTab";
import Detail from "@/api/detail.huagui.shouxian"; import Detail from "@/api/detail.huagui.shouxian";
import { detail } from "@/api/product"; import { detail, trail } from "@/api/product";
export default { export default {
name: "GoodsDetail-LI", name: "GoodsDetail-LI",
...@@ -137,13 +133,13 @@ export default { ...@@ -137,13 +133,13 @@ export default {
data() { data() {
return { return {
...Detail, ...Detail,
goodId: "",
calTimer: null,
goodActionInfo: {}, goodActionInfo: {},
popupShow: false, popupShow: false,
currentPupopIndex: null, currentPupopIndex: null,
formData: { formData: {
insured: "1", autoRenewPolicy: false
payway: "1",
pact: false
}, },
showLayer: false showLayer: false
}; };
...@@ -158,12 +154,29 @@ export default { ...@@ -158,12 +154,29 @@ export default {
const { price } = val; const { price } = val;
this.goodActionInfo = { title: price }; this.goodActionInfo = { title: price };
} }
},
formDataCpu: {
deep: true,
handler(val, oldVal) {
if (this.calTimer) {
clearTimeout(this.calTimer);
}
const { autoRenewPolicy } = val;
const { autoRenewPolicy: oldAutoRenewPolicy } = oldVal;
if (autoRenewPolicy !== oldAutoRenewPolicy) return;
this.calTimer = setTimeout(() => {
this.calFee();
}, 600);
}
} }
}, },
computed: { computed: {
pupopData() { pupopData() {
const { popupArray, currentPupopIndex } = this; const { popupArray, currentPupopIndex } = this;
return popupArray[currentPupopIndex] || {}; return popupArray[currentPupopIndex] || {};
},
formDataCpu() {
return JSON.parse(JSON.stringify(this.formData));
} }
}, },
mounted() { mounted() {
...@@ -178,6 +191,17 @@ export default { ...@@ -178,6 +191,17 @@ export default {
this.currentPupopIndex = index; this.currentPupopIndex = index;
this.popupShow = true; this.popupShow = true;
}, },
onSubmit() {
sessionStorage.setItem("policyFormData", JSON.stringify(this.formData));
this.nextStep();
},
onFailed(errorInfo) {
const { errors } = errorInfo;
this.$notify({ type: "warning", message: errors[0].message });
},
nextStep() {
this.$router.push("/policy/add");
},
async getDetail() { async getDetail() {
this.goodId = this.$route.query.id; this.goodId = this.$route.query.id;
const res = await detail({ productNo: this.goodId }); const res = await detail({ productNo: this.goodId });
...@@ -185,6 +209,14 @@ export default { ...@@ -185,6 +209,14 @@ export default {
this.headerInfo.price[0] = res.price; this.headerInfo.price[0] = res.price;
this.headerInfo.company = res.companyName; this.headerInfo.company = res.companyName;
} }
},
async calFee() {
let { price } = this.headerInfo;
const res = await trail(Object.assign(this.formData, { productNo: this.goodId }));
if (res) {
price[0] = res.regularPrice;
this.goodActionInfo = { title: price };
}
} }
} }
}; };
......
<template> <template>
<div class="container"> <cr-form scroll-to-error @submit="onSubmit" @failed="onFailed" class="container">
<nav-tab :nav-list="navBarOptions" /> <nav-tab :nav-list="navBarOptions" />
<detail-header @click="goInsureState = true" :det="headerInfo" /> <detail-header :det="headerInfo" />
<div class="det-body"> <div class="det-body">
<card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)"> <card title="保险计划" :option="['查看详情']" @option-click="openIframePupop(4)">
<compactCellGroup :cell-data="planCellInfo" :text-bold="true" /> <compactCellGroup :cell-data="planCellInfo" :text-bold="true" />
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
@cell-click="openIframePupop" @cell-click="openIframePupop"
/> />
<protocol-read <protocol-read
v-model="formData.pact" v-model="formData.autoRenewPolicy"
:cell-data="noticeCellInfo" :cell-data="noticeCellInfo"
@cell-click="openIframePupop" @cell-click="openIframePupop"
/> />
...@@ -51,8 +51,10 @@ ...@@ -51,8 +51,10 @@
v-model="goInsureState" v-model="goInsureState"
:title="headerInfo.title" :title="headerInfo.title"
:pay-data="goodBuyModalInfo" :pay-data="goodBuyModalInfo"
@confirm="nextStep"
@read-protocol="openIframePupop"
/> />
</div> </cr-form>
</template> </template>
<script> <script>
...@@ -81,7 +83,7 @@ import AutoDeduct from "./modules/AutoDeduct"; ...@@ -81,7 +83,7 @@ import AutoDeduct from "./modules/AutoDeduct";
import ProtocolRead from "./modules/ProtocolRead"; import ProtocolRead from "./modules/ProtocolRead";
import NavTab from "./modules/NavTab"; import NavTab from "./modules/NavTab";
import { detail } from "@/api/product"; import { detail, trail } from "@/api/product";
import Detail from "@/api/detail.taikang.yiliaobaozhang"; import Detail from "@/api/detail.taikang.yiliaobaozhang";
export default { export default {
...@@ -113,19 +115,23 @@ export default { ...@@ -113,19 +115,23 @@ export default {
data() { data() {
return { return {
...Detail, ...Detail,
goodId: "",
calTimer: null,
goodActionInfo: {}, goodActionInfo: {},
goodBuyModalInfo: [], goodBuyModalInfo: [],
popupShow: false, popupShow: false,
currentPupopIndex: null, currentPupopIndex: null,
formData: { formData: {
name: "",
idNo: "",
socialSecurity: "1",
insured: "1", insured: "1",
payway: "1", type: "1",
medical: "1", planValue: "3",
auto: false, auto: false,
pact: false autoRenewPolicy: true
}, },
goInsureState: false, goInsureState: false
showLayer: false
}; };
}, },
watch: { watch: {
...@@ -142,6 +148,31 @@ export default { ...@@ -142,6 +148,31 @@ export default {
{ title: `${subPrice[2]}保费`, value: `${subPrice[0]}${subPrice[1]}${subPrice[3]}` } { title: `${subPrice[2]}保费`, value: `${subPrice[0]}${subPrice[1]}${subPrice[3]}` }
]; ];
} }
},
formDataCpu: {
deep: true,
handler(val, oldVal) {
if (this.calTimer) {
clearTimeout(this.calTimer);
}
const { name, idNo, socialSecurity, type } = val;
const {
name: oldName,
idNo: oldNo,
socialSecurity: oldSocialSecurity,
type: oldType
} = oldVal;
if (
name === oldName &&
idNo === oldNo &&
socialSecurity === oldSocialSecurity &&
type === oldType
)
return;
this.calTimer = setTimeout(() => {
this.calFee({ name, idNo, socialSecurity, type });
}, 600);
}
} }
}, },
computed: { computed: {
...@@ -156,6 +187,9 @@ export default { ...@@ -156,6 +187,9 @@ export default {
paywayOptions, paywayOptions,
medicalOptions medicalOptions
}; };
},
formDataCpu() {
return JSON.parse(JSON.stringify(this.formData));
} }
}, },
mounted() { mounted() {
...@@ -170,6 +204,17 @@ export default { ...@@ -170,6 +204,17 @@ export default {
this.currentPupopIndex = index; this.currentPupopIndex = index;
this.popupShow = true; this.popupShow = true;
}, },
onSubmit() {
this.goInsureState = true;
// sessionStorage.setItem("policyFormData", JSON.stringify(this.formData));
},
onFailed(errorInfo) {
const { errors } = errorInfo;
this.$notify({ type: "warning", message: errors[0].message });
},
nextStep() {
// 支付
},
async getDetail() { async getDetail() {
this.goodId = this.$route.query.id; this.goodId = this.$route.query.id;
const res = await detail({ productNo: this.goodId }); const res = await detail({ productNo: this.goodId });
...@@ -178,6 +223,22 @@ export default { ...@@ -178,6 +223,22 @@ export default {
this.headerInfo.subPrice[0] = res.price; this.headerInfo.subPrice[0] = res.price;
this.headerInfo.company = res.companyName; this.headerInfo.company = res.companyName;
} }
},
async calFee({ name, idNo, socialSecurity, type }) {
let { price, subPrice } = this.headerInfo;
const res = await trail({ name, idNo, socialSecurity, type });
if (res) {
price[0] = res.firstPrice;
subPrice[0] = res.regularPrice;
this.goodActionInfo = {
title: price,
sub: subPrice
};
this.goodBuyModalInfo = [
{ title: `${price[2]}保费`, value: `${price[0]}${price[1]}` },
{ title: `${subPrice[2]}保费`, value: `${subPrice[0]}${subPrice[1]}${subPrice[3]}` }
];
}
} }
} }
}; };
......
<template> <template>
<cr-form class="policy-form" scroll-to-error @submit="onFormSubmit" @failed="onFormFailed"> <cr-form ref="calFeeForm" class="policy-form" @submit="onFormSubmit">
<cr-cell-group title="被保人年龄需满足18周岁~60周岁"> <cr-cell-group title="被保人年龄需满足18周岁~60周岁">
<cr-field v-model="formData.text" name="selfName" label="出生日期" readonly> <cr-field
v-model="formData.birthday"
name="birthday"
label="出生日期"
:rules="[{ required: true, message: 'required' }]"
>
<template #input> <template #input>
<popup-date-picker v-model="formData.text" placeholder="请选择被保人出生日期" /> <popup-date-picker v-model="formData.birthday" placeholder="请选择被保人出生日期" />
</template> </template>
</cr-field> </cr-field>
<cr-field name="selfName" label="保障额度"> <cr-field name="price" label="保障额度" :rules="[{ required: true, message: 'required' }]">
<template #input> <template #input>
<cr-radio-btn v-model="formData.planValue" :radio-data="countOptions" /> <cr-radio-btn v-model="formData.price" :radio-data="countOptions" />
</template> </template>
</cr-field> </cr-field>
<cr-field v-model="formData.text" name="selfName" label="保险期限"> <cr-field name="term" label="保险期限" :rules="[{ required: true, message: 'required' }]">
<template #input> <template #input>
<cr-radio-btn v-model="formData.planValue" :radio-data="termOptions" /> <cr-radio-btn v-model="formData.term" :radio-data="termOptions" />
</template> </template>
</cr-field> </cr-field>
<cr-field v-model="formData.text" name="selfName" label="交费年限"> <cr-field name="range" label="交费年限" :rules="[{ required: true, message: 'required' }]">
<template #input> <template #input>
<cr-radio-btn v-model="formData.planValue" :radio-data="benefitOptions" /> <cr-radio-btn v-model="formData.range" :radio-data="benefitOptions" />
</template> </template>
</cr-field> </cr-field>
<cr-field v-model="formData.text" name="selfName" label="性别"> <cr-field name="sex" label="性别" :rules="[{ required: true, message: 'required' }]">
<template #input> <template #input>
<cr-radio-btn v-model="formData.planValue" :radio-data="sexOptions" /> <cr-radio-btn v-model="formData.sex" :radio-data="sexOptions" />
</template> </template>
</cr-field> </cr-field>
<cr-field v-model="formData.text" name="selfName" label="交费方式"> <cr-field name="type" label="交费方式" :rules="[{ required: true, message: 'required' }]">
<template #input> <template #input>
<cr-radio-btn v-model="formData.planValue" :radio-data="paywayOptions" /> <cr-radio-btn v-model="formData.type" :radio-data="paywayOptions" />
</template> </template>
</cr-field> </cr-field>
</cr-cell-group> </cr-cell-group>
...@@ -38,6 +43,7 @@ ...@@ -38,6 +43,7 @@
<script> <script>
import CrRadioBtn from "@/components/CrRadioBtn"; import CrRadioBtn from "@/components/CrRadioBtn";
import PopupDatePicker from "@/components/PopupDatePicker"; import PopupDatePicker from "@/components/PopupDatePicker";
const DATA_CHANGE_EVENT = "input";
export default { export default {
name: "CalInsuredFee", name: "CalInsuredFee",
...@@ -45,6 +51,14 @@ export default { ...@@ -45,6 +51,14 @@ export default {
CrRadioBtn, CrRadioBtn,
PopupDatePicker PopupDatePicker
}, },
props: {
value: {
type: Object,
default() {
return {};
}
}
},
data() { data() {
return { return {
formData: {}, formData: {},
...@@ -80,23 +94,24 @@ export default { ...@@ -80,23 +94,24 @@ export default {
}; };
}, },
watch: { watch: {
value: {
deep: true,
handler(val) {
this.formData = val;
}
},
formData: { formData: {
deep: true, deep: true,
handler() { handler() {
this.calFee(); this.$refs.calFeeForm.submit();
} }
} }
}, },
mounted() {}, mounted() {},
methods: { methods: {
onFormSubmit(values) { onFormSubmit() {
console.log("submit", values); this.$emit(DATA_CHANGE_EVENT, this.formData);
}, }
onFormFailed(errorInfo) {
const { errors } = errorInfo;
this.$notify({ type: "warning", message: errors[0].message });
},
calFee() {}
} }
}; };
</script> </script>
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
{{ props.det.subPrice[2] || "" }}{{ props.det.subPrice[0] || "" }}{{ props.det.subPrice[1] || "" }} {{ props.det.subPrice[2] || "" }}{{ props.det.subPrice[0] || "" }}{{ props.det.subPrice[1] || "" }}
</small> </small>
</h5> </h5>
<cr-button type="warning" block @click="listeners.click" native-type="submit"> <cr-button type="warning" block native-type="submit">
立即开启保障 立即开启保障
</cr-button> </cr-button>
<div class="det-hd-insured-people"> <div class="det-hd-insured-people">
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
import CompactCellGroup from "@/components/CompactCellGroup"; import CompactCellGroup from "@/components/CompactCellGroup";
import Modal from "@/components/Modal"; import Modal from "@/components/Modal";
const DIALOG_CHANGE_EVENT = "input"; const DIALOG_CHANGE_EVENT = "input";
const DIALOG_CONFIRM_EVENT = "confirm";
const READ_PROTOCOL_EVENT = "read-protocol";
export default { export default {
name: "GoInsureDialog", name: "GoInsureDialog",
components: { components: {
...@@ -70,10 +72,10 @@ export default { ...@@ -70,10 +72,10 @@ export default {
}, },
methods: { methods: {
openIframePupop(index) { openIframePupop(index) {
this.$parent.openIframePupop(index); this.$emit(READ_PROTOCOL_EVENT, index);
}, },
go() { go() {
this.$router.push("/goods/inform"); this.$emit(DIALOG_CONFIRM_EVENT);
} }
} }
}; };
...@@ -151,7 +153,7 @@ export default { ...@@ -151,7 +153,7 @@ export default {
width: 0; width: 0;
height: 12px; height: 12px;
border-right: 1px @blue solid; border-right: 1px @blue solid;
margin: 0 3px 0 1px; margin: 0 0px 0 2px;
vertical-align: -2px; vertical-align: -2px;
} }
&:last-child::after { &:last-child::after {
......
<template> <template>
<card title="请填写投保信息"> <card title="请填写投保信息" class="insure-card">
<h6 class="insure-form-title">本人信息</h6> <h6 class="insure-form-title">本人信息</h6>
<cr-cell-group class="insure-form"> <cr-cell-group class="insure-form">
<cr-field <cr-field
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
:radio-data="radioOptions.medicalOptions" :radio-data="radioOptions.medicalOptions"
/> />
</cr-cell> </cr-cell>
<cr-cell title="缴费方式" class="insure-form-item_nobg"> <cr-cell title="缴费方式" class="insure-form-item_nobg" v-if="radioOptions.paywayOptions">
<cr-radio-btn <cr-radio-btn
name="type" name="type"
v-model="formData.type" v-model="formData.type"
...@@ -158,6 +158,11 @@ export default { ...@@ -158,6 +158,11 @@ export default {
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import "../../../../style/var.less"; @import "../../../../style/var.less";
.insure-card {
@{deep} .card-body {
padding-bottom: 10px;
}
}
.insure-form { .insure-form {
&-title { &-title {
font-size: @font-size-16; font-size: @font-size-16;
......
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
padding: 0; padding: 0;
// background-color: @gray-1; // background-color: @gray-1;
// border-radius: @border-radius-md; // border-radius: @border-radius-md;
overflow: hidden;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
overflow: scroll;
margin: 0 -15px; margin: 0 -15px;
height: 72vh; height: 72vh;
} }
...@@ -62,9 +62,7 @@ ...@@ -62,9 +62,7 @@
} }
} }
&-frame { &-frame {
-webkit-overflow-scrolling: touch;
overflow: scroll;
width: 100%;
height: 72vh; height: 72vh;
width: 100%;
} }
} }
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
<cr-field <cr-field
name="selfName" name="selfName"
label="居住省市" label="居住省市"
readonly
:rules="[{ require: true, message: '请选择投保人居住省市' }]" :rules="[{ require: true, message: '请选择投保人居住省市' }]"
> >
<template #input> <template #input>
...@@ -86,7 +85,6 @@ ...@@ -86,7 +85,6 @@
<cr-field <cr-field
name="selfName" name="selfName"
label="有效期至" label="有效期至"
readonly
:rules="[{ require: true, message: '请选择您的证件有效止期' }]" :rules="[{ require: true, message: '请选择您的证件有效止期' }]"
> >
<template #input> <template #input>
...@@ -163,7 +161,6 @@ ...@@ -163,7 +161,6 @@
<cr-field <cr-field
name="selfName" name="selfName"
label="居住省市" label="居住省市"
readonly
:rules="[{ require: true, message: '请选择投保人居住省市' }]" :rules="[{ require: true, message: '请选择投保人居住省市' }]"
> >
<template #input> <template #input>
...@@ -203,7 +200,6 @@ ...@@ -203,7 +200,6 @@
<cr-field <cr-field
name="selfName" name="selfName"
label="有效期至" label="有效期至"
readonly
:rules="[{ require: true, message: '请选择您的证件有效止期' }]" :rules="[{ require: true, message: '请选择您的证件有效止期' }]"
> >
<template #input> <template #input>
...@@ -255,14 +251,12 @@ ...@@ -255,14 +251,12 @@
v-model="formData.text" v-model="formData.text"
name="selfName" name="selfName"
label="生效日期" label="生效日期"
readonly
:rules="[{ require: true, message: '请选择生效日期' }]" :rules="[{ require: true, message: '请选择生效日期' }]"
/> />
<cr-field <cr-field
v-model="formData.text" v-model="formData.text"
name="selfName" name="selfName"
label="受益人" label="受益人"
readonly
:rules="[{ require: true, message: '请选择受益人' }]" :rules="[{ require: true, message: '请选择受益人' }]"
/> />
</cr-cell-group> </cr-cell-group>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment