Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mongo-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ui
mongo-ui
Commits
312d71e6
Commit
312d71e6
authored
Aug 20, 2020
by
郭志伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/policy_fix' into 'master'
Fix: See merge request
!58
parents
2f4d9ed6
f3cbcd3f
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
318 additions
and
189 deletions
+318
-189
App.vue
src/App.vue
+1
-0
detail.huagui.shouxian.js
src/api/detail.huagui.shouxian.js
+1
-1
detail.huatai.zhongjixian.js
src/api/detail.huatai.zhongjixian.js
+3
-3
detail.taikang.yiliaobaozhang.js
src/api/detail.taikang.yiliaobaozhang.js
+3
-3
detail.zhongan.yiwai.js
src/api/detail.zhongan.yiwai.js
+3
-3
dev.config.js
src/config/dev.config.js
+2
-1
autoSaveForm.mixin.js
src/mixins/autoSaveForm.mixin.js
+4
-1
validation.js
src/service/validation.js
+19
-0
index.vue
src/views/Consultant/Plan/index.vue
+0
-54
AIDetail.vue
src/views/Goods/Detail/AIDetail.vue
+8
-2
CIIDetail.vue
src/views/Goods/Detail/CIIDetail.vue
+45
-5
LIDetail.vue
src/views/Goods/Detail/LIDetail.vue
+1
-2
MIDetail.vue
src/views/Goods/Detail/MIDetail.vue
+19
-10
detailPay.mixin.js
src/views/Goods/Detail/modules/detailPay.mixin.js
+2
-2
index.vue
src/views/Goods/Inform/index.vue
+17
-44
index.vue
src/views/Policy/Add/index.vue
+190
-58
No files found.
src/App.vue
View file @
312d71e6
...
...
@@ -40,6 +40,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
.loading {
padding: 6px;
border-radius: 6px;
...
...
src/api/detail.huagui.shouxian.js
View file @
312d71e6
...
...
@@ -4,7 +4,7 @@
* @Description: 华贵大麦2020定期寿险
* @Date: 2020-07-27 15:46:37
* @LastEditors: gzw
* @LastEditTime: 2020-08-
19 14:07:08
* @LastEditTime: 2020-08-
20 14:51:17
*/
import
goodsBg
from
"
@/assets/images/goods/detail/shouxian/bg.png
"
;
...
...
src/api/detail.huatai.zhongjixian.js
View file @
312d71e6
...
...
@@ -4,7 +4,7 @@
* @Description:华太30万轻重疾险
* @Date: 2020-07-27 15:46:37
* @LastEditors: gzw
* @LastEditTime: 2020-08-
12 15:58:44
* @LastEditTime: 2020-08-
20 10:34:05
*/
import
goodsBg
from
"
@/assets/images/goods/detail/zhongjixian/bg.png
"
;
...
...
@@ -83,8 +83,8 @@ export default {
],
insuredOptions
:
[
{
label
:
"
本人
"
,
value
:
"
1
"
},
{
label
:
"
配偶
"
,
value
:
"
2
"
},
{
label
:
"
父母
"
,
value
:
"
3
"
},
{
label
:
"
父母
"
,
value
:
"
2
"
},
{
label
:
"
配偶
"
,
value
:
"
3
"
},
{
label
:
"
子女
"
,
value
:
"
4
"
}
],
paywayOptions
:
[
...
...
src/api/detail.taikang.yiliaobaozhang.js
View file @
312d71e6
...
...
@@ -4,7 +4,7 @@
* @Description: 泰康600万医疗保障
* @Date: 2020-07-27 15:46:37
* @LastEditors: gzw
* @LastEditTime: 2020-08-
12 16:40:46
* @LastEditTime: 2020-08-
20 10:33:55
*/
import
goodsBg
from
"
@/assets/images/goods/detail/yiliaoxian/bg.png
"
;
...
...
@@ -72,8 +72,8 @@ export default {
planTipOptions
:
[
"
不限社保
"
,
"
报销自费药
"
,
"
额外400万特定赔付
"
],
insuredOptions
:
[
{
label
:
"
本人
"
,
value
:
"
1
"
},
{
label
:
"
配偶
"
,
value
:
"
2
"
},
{
label
:
"
父母
"
,
value
:
"
3
"
},
{
label
:
"
父母
"
,
value
:
"
2
"
},
{
label
:
"
配偶
"
,
value
:
"
3
"
},
{
label
:
"
子女
"
,
value
:
"
4
"
}
],
medicalOptions
:
[
...
...
src/api/detail.zhongan.yiwai.js
View file @
312d71e6
...
...
@@ -4,7 +4,7 @@
* @Description:众安50万意外险
* @Date: 2020-07-27 15:46:37
* @LastEditors: gzw
* @LastEditTime: 2020-08-
18 16:24:31
* @LastEditTime: 2020-08-
20 10:33:46
*/
import
goodsBg
from
"
@/assets/images/goods/detail/yiwaixian/bg.png
"
;
...
...
@@ -101,8 +101,8 @@ export default {
],
insuredOptions
:
[
{
label
:
"
本人
"
,
value
:
"
1
"
},
{
label
:
"
配偶
"
,
value
:
"
2
"
},
{
label
:
"
父母
"
,
value
:
"
3
"
},
{
label
:
"
父母
"
,
value
:
"
2
"
},
{
label
:
"
配偶
"
,
value
:
"
3
"
},
{
label
:
"
子女
"
,
value
:
"
4
"
}
],
noticeCellInfo
:
{
...
...
src/config/dev.config.js
View file @
312d71e6
export
default
{
basicHost
:
"
http://yapi.quantgroups.com/mock/329/
"
,
// basicHost: "http://yapi.quantgroups.com/mock/329/",
basicHost
:
"
https://hathaway-mg.liangkebang.net/
"
,
// basicHost: "http://192.168.29.211:8964/",
wxAppId
:
"
wx514de17b23d53a20
"
};
src/mixins/autoSaveForm.mixin.js
View file @
312d71e6
...
...
@@ -2,7 +2,7 @@
* @Description: autoSaveForm mixins
* @LastEditors: gzw
* @Date: 2019-08-14 15:53:37
* @LastEditTime: 2020-08-
14 16:16:58
* @LastEditTime: 2020-08-
20 13:49:26
*/
import
localStorage
from
"
@/service/localStorage
"
;
...
...
@@ -28,6 +28,9 @@ export default {
hasAutoSaveData
(
key
)
{
return
!!
localStorage
.
get
(
key
);
},
getSaveParams
(
key
)
{
return
localStorage
.
get
(
key
);
},
getSaveInfoHandler
(
key
,
target
)
{
this
[
target
]
=
localStorage
.
get
(
key
);
this
.
$forceUpdate
();
...
...
src/service/validation.js
View file @
312d71e6
...
...
@@ -69,6 +69,15 @@ export function isIdNo(str) {
return
false
;
}
// 判断输入的字符是否为中文姓名最少两个中文字符
export
function
isChineseName
(
str
)
{
if
(
!
isNull
(
str
))
{
const
reg
=
/^
[\u
0391-
\u
FFE5
]{2,}
$/
;
return
reg
.
test
(
str
);
}
return
false
;
}
// 判断输入的字符是否以数字开头
export
function
isStartWithInteger
(
str
)
{
if
(
!
isNull
(
str
))
{
...
...
@@ -258,6 +267,16 @@ export function isBankNumber(str) {
return
false
;
}
// 判断中文地址不能少于5个汉字,且必须有一位数字
export
function
isChnAddress
(
str
)
{
const
isNum
=
/
[
0-9
]\d
*/
;
const
isChinese_var
=
/
[\u
0391-
\u
FFE5
]{5,}
/g
;
if
(
!
isNull
(
str
))
{
return
isNum
.
test
(
str
)
&&
isChinese_var
.
test
(
str
);
}
return
false
;
}
// 判断微信环境
export
const
isWeixinBrower
=
window
.
navigator
.
userAgent
.
toLowerCase
().
match
(
/MicroMessenger/i
)
==
"
micromessenger
"
;
// 判断信用钱包环境
...
...
src/views/Consultant/Plan/index.vue
View file @
312d71e6
...
...
@@ -109,60 +109,6 @@ export default {
{
title
:
"
重疾险
"
,
price
:
"
50万
"
},
{
title
:
"
意外险
"
,
price
:
"
60万
"
},
{
title
:
"
寿险
"
,
price
:
"
350万
"
}
],
overviewList
:
[
{
id
:
1
,
goods
:
"
国民保·百万医疗险
"
,
type
:
"
mi
"
,
title
:
"
医疗险
"
,
amount
:
"
600万
"
,
range
:
"
1年
"
,
way
:
"
趸交
"
,
price
:
"
350元
"
,
goodsPirce
:
"
3000
"
,
goodsUnit
:
"
元/每年
"
,
reason
:
"
推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由
"
},
{
id
:
2
,
goods
:
"
康惠保2020终身重疾险
"
,
type
:
"
cii
"
,
title
:
"
重疾险
"
,
amount
:
"
50万
"
,
range
:
"
终身
"
,
way
:
"
20年
"
,
price
:
"
6000元
"
,
goodsPirce
:
"
6000
"
,
goodsUnit
:
"
元/每年
"
,
reason
:
"
推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由
"
},
{
id
:
3
,
goods
:
"
国民保·百万意外险
"
,
type
:
"
ai
"
,
title
:
"
意外险
"
,
amount
:
"
50万
"
,
range
:
"
1年
"
,
way
:
"
趸交
"
,
price
:
"
350元
"
,
goodsPirce
:
"
3000
"
,
goodsUnit
:
"
元/每年
"
,
reason
:
"
推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由
"
},
{
id
:
4
,
goods
:
"
国民保·百万寿险
"
,
type
:
"
li
"
,
title
:
"
寿险
"
,
amount
:
"
350万
"
,
range
:
"
保至70岁
"
,
way
:
"
20年
"
,
price
:
"
3725元
"
,
goodsPirce
:
"
3000
"
,
goodsUnit
:
"
元/每年
"
,
reason
:
"
推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由推荐理由
"
}
]
};
},
...
...
src/views/Goods/Detail/AIDetail.vue
View file @
312d71e6
...
...
@@ -170,7 +170,13 @@ export default {
const
{
idNo
:
oldidNo
,
amountInsured
:
oldamountInsured
,
selfIdNo
:
oldselfIdNo
}
=
oldVal
;
let
idNoWho
=
!
relation
||
relation
===
"
1
"
?
selfIdNo
:
idNo
;
let
oldidNoWho
=
!
relation
||
relation
===
"
1
"
?
oldselfIdNo
:
oldidNo
;
if
(
!
isIdNo
(
idNoWho
)
&&
idNoWho
===
oldidNoWho
&&
amountInsured
===
oldamountInsured
)
{
if
(
idNoWho
&&
idNoWho
.
indexOf
(
"
************
"
)
===
-
1
&&
!
isIdNo
(
idNoWho
)
&&
idNoWho
===
oldidNoWho
&&
amountInsured
===
oldamountInsured
)
{
return
;
}
this
.
calTimer
=
setTimeout
(()
=>
{
...
...
@@ -268,7 +274,7 @@ export default {
payType
,
autoRenewPolicy
}
=
this
.
formData
;
this
.
subF
ro
mData
=
{
this
.
subF
or
mData
=
{
insuredUserInfo
:
{
userInfoSecId
:
userInfoSecId
??
null
,
name
,
...
...
src/views/Goods/Detail/CIIDetail.vue
View file @
312d71e6
...
...
@@ -139,7 +139,7 @@ export default {
name
:
""
,
idNo
:
""
,
relation
:
""
,
payType
:
"
2
"
,
payType
:
"
1
"
,
amountInsured
:
"
300000
"
,
autoRenewPolicy
:
false
,
read
:
true
...
...
@@ -186,12 +186,52 @@ export default {
oldidNoWho
=
oldidNo
;
}
if
(
this
.
goInsureState
)
{
sessionStorage
.
setItem
(
"
policyFormData
"
,
JSON
.
stringify
(
Object
.
assign
(
this
.
formData
,
{
productNo
:
this
.
goodId
}))
);
const
subFormData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
{
userInfoSecId
,
name
,
idNo
,
relation
,
socialSecurity
,
selfSocialSecurity
,
selfName
,
selfIdNo
,
selfPhone
,
selfSecId
,
payType
,
amountInsured
,
autoRenewPolicy
}
=
subFormData
;
const
subFormDataCache
=
{
productNo
:
this
.
goodId
,
holderUserInfo
:
{
phoneNo
:
selfPhone
,
userInfoSecId
:
selfSecId
?
selfSecId
:
null
,
name
:
selfName
,
idNo
:
selfIdNo
},
productItem
:
{
payType
,
amountInsured
},
autoRenewPolicy
:
autoRenewPolicy
};
if
(
relation
===
"
1
"
)
{
subFormDataCache
.
holderUserInfo
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
}
else
{
subFormDataCache
.
insuredUserInfo
=
{
userInfoSecId
:
userInfoSecId
?
userInfoSecId
:
undefined
,
name
,
idNo
,
relation
,
socialSecurity
:
!!
Number
(
socialSecurity
)
};
}
sessionStorage
.
setItem
(
"
policyFormData
"
,
JSON
.
stringify
(
subFormDataCache
));
}
if
(
idNoWho
&&
idNoWho
.
indexOf
(
"
************
"
)
===
-
1
&&
!
isIdNo
(
idNoWho
)
&&
idNoWho
===
oldidNoWho
&&
payType
===
oldpayType
&&
...
...
src/views/Goods/Detail/LIDetail.vue
View file @
312d71e6
...
...
@@ -117,7 +117,6 @@ import detailLoginMixin from "./modules/detailLogin.mixin";
import
Detail
from
"
@/api/detail.huagui.shouxian
"
;
import
{
trail
,
list
}
from
"
@/api/product
"
;
export
default
{
name
:
"
GoodsDetail-LI
"
,
components
:
{
...
...
@@ -143,7 +142,7 @@ export default {
mixins
:
[
detailLoginMixin
],
data
()
{
return
{
...
Detail
,
...
JSON
.
parse
(
JSON
.
stringify
(
Detail
))
,
goodId
:
""
,
calTimer
:
null
,
goodActionInfo
:
{},
...
...
src/views/Goods/Detail/MIDetail.vue
View file @
312d71e6
...
...
@@ -140,7 +140,7 @@ export default {
idNo
:
""
,
socialSecurity
:
""
,
relation
:
""
,
payType
:
"
2
"
,
payType
:
"
1
"
,
planValue
:
"
3
"
,
autoRenewPolicy
:
false
,
read
:
true
...
...
@@ -161,7 +161,10 @@ export default {
};
this
.
goodBuyModalInfo
=
[
{
title
:
`
${
price
[
2
]}
保费`
,
value
:
`
${
price
[
0
]}${
price
[
1
]}
`
},
{
title
:
`
${
subPrice
[
2
]}
保费`
,
value
:
`
${
subPrice
[
0
]}${
subPrice
[
1
]}${
subPrice
[
3
]}
`
}
{
title
:
`
${
subPrice
[
2
]}
保费`
,
value
:
`
${
subPrice
[
0
]}${
subPrice
[
1
]}${
subPrice
[
3
]}
`
}
];
}
},
...
...
@@ -175,7 +178,13 @@ export default {
const
{
idNo
:
oldidNo
,
selfIdNo
:
oldselfIdNo
}
=
oldVal
;
let
idNoWho
=
!
relation
||
relation
===
"
1
"
?
selfIdNo
:
idNo
;
let
oldidNoWho
=
!
relation
||
relation
===
"
1
"
?
oldselfIdNo
:
oldidNo
;
if
(
!
isIdNo
(
idNoWho
)
&&
idNoWho
===
oldidNoWho
)
return
;
if
(
idNoWho
&&
idNoWho
.
indexOf
(
"
************
"
)
===
-
1
&&
!
isIdNo
(
idNoWho
)
&&
idNoWho
===
oldidNoWho
)
return
;
this
.
calTimer
=
setTimeout
(()
=>
{
this
.
calFee
();
},
1000
);
...
...
@@ -246,7 +255,7 @@ export default {
this
.
generateOrder
();
},
generateFormData
()
{
const
subF
ro
mData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
subF
or
mData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
{
userInfoSecId
,
name
,
...
...
@@ -260,8 +269,8 @@ export default {
selfSecId
,
payType
,
autoRenewPolicy
}
=
subF
ro
mData
;
this
.
subF
ro
mData
=
{
}
=
subF
or
mData
;
this
.
subF
or
mData
=
{
productNo
:
this
.
goodId
,
holderUserInfo
:
{
phoneNo
:
selfPhone
,
...
...
@@ -275,17 +284,17 @@ export default {
autoRenewPolicy
:
autoRenewPolicy
};
if
(
relation
===
"
1
"
)
{
this
.
subF
ro
mData
.
holderUserInfo
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
this
.
subF
ro
mData
.
productItem
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
this
.
subF
or
mData
.
holderUserInfo
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
this
.
subF
or
mData
.
productItem
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
}
else
{
this
.
subF
ro
mData
.
insuredUserInfo
=
{
this
.
subF
or
mData
.
insuredUserInfo
=
{
userInfoSecId
:
userInfoSecId
?
userInfoSecId
:
undefined
,
name
,
idNo
,
relation
,
socialSecurity
:
!!
Number
(
socialSecurity
)
};
this
.
subF
ro
mData
.
productItem
.
socialSecurity
=
!!
Number
(
socialSecurity
);
this
.
subF
or
mData
.
productItem
.
socialSecurity
=
!!
Number
(
socialSecurity
);
}
},
async
getDetail
()
{
...
...
src/views/Goods/Detail/modules/detailPay.mixin.js
View file @
312d71e6
...
...
@@ -7,7 +7,7 @@ import { mapActions } from "vuex";
export
default
{
data
()
{
return
{
subF
ro
mData
:
{},
// 组装好的数据
subF
or
mData
:
{},
// 组装好的数据
orderInfo
:
{},
openId
:
localStorage
.
get
(
"
openId
"
),
tradeType
:
""
,
...
...
@@ -22,7 +22,7 @@ export default {
...
mapActions
([
"
setIsLoading
"
]),
async
generateOrder
()
{
const
res
=
await
placeOrder
.
create
({
...
this
.
subF
ro
mData
...
this
.
subF
or
mData
});
if
(
res
)
{
this
.
orderInfo
=
res
;
...
...
src/views/Goods/Inform/index.vue
View file @
312d71e6
...
...
@@ -11,7 +11,13 @@
请如实告知
<strong>
被保人
</strong>
是否有以下情形之一
</span>
<iframe
class=
"inform-frame"
:src=
"url"
frameborder=
"0"
height=
"100%"
></iframe>
<iframe
class=
"inform-frame"
:src=
"url"
frameborder=
"0"
height=
"100%"
v-if=
"refreshIframe"
></iframe>
</card>
<div
class=
"inform-btns"
>
<cr-button
@
click=
"$router.back()"
>
不符合
</cr-button>
...
...
@@ -31,58 +37,25 @@ export default {
},
data
()
{
return
{
f
ormData
:
JSON
.
parse
(
sessionStorage
.
getItem
(
"
policyFormData
"
)
||
"
{}
"
),
subF
ormData
:
JSON
.
parse
(
sessionStorage
.
getItem
(
"
policyFormData
"
)
||
"
{}
"
),
orderInfo
:
{},
refreshIframe
:
true
,
tradeType
:
"
JSAPI
"
,
url
:
"
http://mangguo-contract.qthbx.com/huatai-jian-kang-gao-zhi-v1/
"
};
},
mounted
()
{
this
.
url
=
this
.
$route
.
query
.
url
||
this
.
url
;
this
.
refreshIframe
=
false
;
setTimeout
(()
=>
{
this
.
refreshIframe
=
true
;
},
1000
);
},
methods
:
{
conform
()
{
// this.$router.push(`/policy/detail/123`);
this
.
generateFormData
();
//
this.generateFormData();
this
.
generateOrder
();
},
generateFormData
()
{
const
subFromData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
{
userInfoSecId
,
name
,
idNo
,
relation
,
socialSecurity
,
selfSocialSecurity
,
selfName
,
selfIdNo
,
selfPhone
,
selfSecId
,
payType
,
autoRenewPolicy
}
=
subFromData
;
this
.
subFromData
=
{
productNo
:
this
.
goodId
,
holderUserInfo
:
{
phoneNo
:
selfPhone
,
userInfoSecId
:
selfSecId
?
selfSecId
:
null
,
name
:
selfName
,
idNo
:
selfIdNo
},
productItem
:
{
payType
},
autoRenewPolicy
:
autoRenewPolicy
};
if
(
relation
===
"
1
"
)
{
this
.
subFromData
.
holderUserInfo
.
socialSecurity
=
!!
Number
(
selfSocialSecurity
);
}
else
{
this
.
subFromData
.
insuredUserInfo
=
{
userInfoSecId
:
userInfoSecId
?
userInfoSecId
:
undefined
,
name
,
idNo
,
relation
,
socialSecurity
:
!!
Number
(
socialSecurity
)
};
}
}
}
};
...
...
src/views/Policy/Add/index.vue
View file @
312d71e6
...
...
@@ -15,9 +15,15 @@
v-model=
"formData.holderUserInfo.name"
name=
"holderUserInfo_name"
label=
"姓名"
placeholder=
"请
输入
投保人姓名"
placeholder=
"请
填写
投保人姓名"
:readonly=
"selfInfoReadonly"
:rules=
"[
{ required: true, message: '请输入投保人姓名' }]"
:rules=
"[
{ required: true, message: '请填写投保人姓名' },
{
validator: isChineseNameMask,
message: '请填写正确的投保人姓名,最少2个中文字符'
}
]"
@click.native="inputClick"
/>
<cr-field
...
...
@@ -26,7 +32,13 @@
label=
"身份证号"
placeholder=
"请填写投保人身份证号"
:readonly=
"selfInfoReadonly"
:rules=
"[
{ required: true, message: '请填写投保人身份证号' }]"
:rules=
"[
{ required: true, message: '请填写投保人身份证号' },
{
validator: isIdNoMask,
message: '请填写正确的投保人身份证号'
}
]"
@click.native="inputClick"
/>
<cr-field
...
...
@@ -36,7 +48,13 @@
label=
"手机号"
placeholder=
"请填写投保人手机号"
:readonly=
"selfInfoReadonly"
:rules=
"[
{ required: true, message: '请填写投保人手机号' }]"
:rules=
"[
{ required: true, message: '请填写投保人手机号' },
{
validator: isPhoneMask,
message: '请填写正确的投保人手机号'
}
]"
@click.native="inputClick"
/>
<cr-field
...
...
@@ -45,16 +63,24 @@
type=
"email"
label=
"电子邮箱"
placeholder=
"用户接收电子保单"
:rules=
"[
{ required: true, message: '请填写电子邮箱' }]"
:rules=
"[
{ required: true, message: '请填写电子邮箱' },
{
validator: isEmail,
message: '请填写正确的电子邮箱'
}
]"
/>
<cr-field
v-model=
"formData.holderUserInfo.annualIncome"
name=
"holderUserInfo_annualIncome"
label=
"年收入"
type=
"digit"
placeholder=
"请输入投保人年收入"
:rules=
"[
{ required: true, message: '请输入投保人年收入' }]"
/>
placeholder=
"请填写投保人年收入"
:rules=
"[
{ required: true, message: '请填写投保人年收入' }]"
>
<div
class=
"form-unit"
slot=
"button"
>
万元
</div>
</cr-field>
<cr-field
v-model=
"formData.holderUserInfo.addressCode"
name=
"holderUserInfo_addressCode"
...
...
@@ -72,8 +98,14 @@
v-model=
"formData.holderUserInfo.addressDetail"
name=
"holderUserInfo_addressDetail"
label=
"详细地址"
placeholder=
"请输入居住详细地址"
:rules=
"[{ required: true, message: '请输入居住详细地址' }]"
placeholder=
"请填写居住详细地址"
:rules=
"[
{ required: true, message: '请填写投保人居住详细地址' },
{
validator: isChnAddress,
message: '请填写正确的地址,至少于5个汉字,且必须有1位数字'
}
]"
/>
<cr-field
v-model=
"formData.holderUserInfo.occupation"
...
...
@@ -92,7 +124,7 @@
v-model=
"formData.holderUserInfo.longTerm"
name=
"holderUserInfo_longTerm"
label=
"身份证有效期"
:rules=
"[{ required: true, message: '请选择身份证有效期' }]"
:rules=
"[{ required: true, message: '请选择
投保人
身份证有效期' }]"
>
<
template
#input
>
<cr-radio-btn
...
...
@@ -106,7 +138,13 @@
v-model=
"formData.holderUserInfo.validEnd"
name=
"holderUserInfo_validEnd"
label=
"有效期至"
:rules=
"[{ required: true, message: '请选择您的证件有效止期' }]"
:rules=
"[
{ required: true, message: '请选择投保人身份证止期' },
{
validator: isFutureDate,
message: '投保人身份证止期必须大于当前日期'
}
]"
>
<
template
#input
>
<popup-date-picker
...
...
@@ -151,7 +189,13 @@
label=
"身高"
type=
"number"
placeholder=
"请填写被保人身高"
:rules=
"[{ required: true, message: '请填写被保人身高' }]"
:rules=
"[
{ required: true, message: '请填写被保人身高' },
{
validator: isIntegerHeight,
message: '请填写正确的被保人身高,最多3个数字'
}
]"
>
<div
class=
"form-unit"
slot=
"button"
>
厘米
</div>
</cr-field>
...
...
@@ -161,7 +205,13 @@
label=
"体重"
type=
"number"
placeholder=
"请填写被保人体重"
:rules=
"[{ required: true, message: '请填写被保人体重' }]"
:rules=
"[
{ required: true, message: '请填写被保人体重' },
{
validator: isIntegerHeight,
message: '请填写正确的被保人体重,最多3个数字'
}
]"
>
<div
class=
"form-unit"
slot=
"button"
>
公斤
</div>
</cr-field>
...
...
@@ -170,44 +220,64 @@
v-model=
"formData.insuredUserInfo.name"
name=
"insuredUserInfo_name"
label=
"姓名"
placeholder=
"请
输入投
保人姓名"
placeholder=
"请
填写被
保人姓名"
:readonly=
"infoReadonly"
:rules=
"[
{ required: true, message: '请输入投保人姓名' }]"
:rules=
"[
{ required: true, message: '请填写投保人姓名' },
{
validator: isChineseNameMask,
message: '请填写正确的被保人姓名,最少2个中文字符'
}
]"
/>
<cr-field
v-model=
"formData.insuredUserInfo.idNo"
name=
"insuredUserInfo_idNo"
label=
"身份证号"
placeholder=
"请填写
投
保人身份证号"
placeholder=
"请填写
被
保人身份证号"
:readonly=
"infoReadonly"
:rules=
"[
{ required: true, message: '请填写投保人身份证号' }]"
:rules=
"[
{ required: true, message: '请填写被保人身份证号' },
{
validator: isIdNoMask,
message: '请填写正确的被保人身份证号'
}
]"
/>
<cr-field
v-model=
"formData.insuredUserInfo.phoneNo"
name=
"insuredUserInfo_phoneNo"
label=
"手机号"
type=
"tel"
placeholder=
"请填写投保人手机号"
:rules=
"[
{ required: true, message: '请填写投保人手机号' }]"
placeholder=
"请填写被保人手机号"
:rules=
"[
{ required: true, message: '请填写被保人手机号' },
{
validator: isPhoneMask,
message: '请填写正确的被保人手机号'
}
]"
/>
<cr-field
v-model=
"formData.insuredUserInfo.annualIncome"
name=
"insuredUserInfo_annualIncome"
label=
"年收入"
type=
"digit"
placeholder=
"请输入投保人年收入"
:rules=
"[
{ required: true, message: '请输入投保人年收入' }]"
/>
placeholder=
"请填写被保人年收入"
:rules=
"[
{ required: true, message: '请填写被保人年收入' }]"
>
<div
class=
"form-unit"
slot=
"button"
>
万元
</div>
</cr-field>
<cr-field
v-model=
"formData.insuredUserInfo.addressCode"
name=
"insuredUserInfo_addressCode"
label=
"居住省市"
:rules=
"[
{ required: true, message: '请选择
投
保人居住省市' }]"
:rules=
"[
{ required: true, message: '请选择
被
保人居住省市' }]"
>
<template
#input
>
<popup-area-picker
v-model=
"formData.insuredUserInfo.addressCode"
placeholder=
"请选择
投
保人居住省市"
placeholder=
"请选择
被
保人居住省市"
/>
</
template
>
</cr-field>
...
...
@@ -215,8 +285,14 @@
v-model=
"formData.insuredUserInfo.addressDetail"
name=
"insuredUserInfo_weigaddressDetailht"
label=
"详细地址"
placeholder=
"请输入居住详细地址"
:rules=
"[{ required: true, message: '请输入居住详细地址' }]"
placeholder=
"请填写被保人居住详细地址"
:rules=
"[
{ required: true, message: '请填写被保人居住详细地址' },
{
validator: isChnAddress,
message: '请填写正确的地址,至少于5个汉字,且必须有1位数字'
}
]"
/>
<cr-field
v-model=
"formData.insuredUserInfo.occupation"
...
...
@@ -236,7 +312,7 @@
v-model=
"formData.insuredUserInfo.longTerm"
name=
"insuredUserInfo_longTerm"
label=
"身份证有效期"
:rules=
"[{ required: true, message: '请选择身份证有效期' }]"
:rules=
"[{ required: true, message: '请选择
被保人
身份证有效期' }]"
>
<
template
#input
>
<cr-radio-btn
...
...
@@ -250,7 +326,13 @@
v-model=
"formData.insuredUserInfo.validEnd"
name=
"insuredUserInfo_validEnd"
label=
"有效期至"
:rules=
"[{ required: true, message: '请选择您的证件有效止期' }]"
:rules=
"[
{ required: true, message: '请选择被保人身份证止期' },
{
validator: isFutureDate,
message: '被保人身份证止期必须大于当前日期'
}
]"
>
<
template
#input
>
<popup-date-picker
...
...
@@ -312,8 +394,8 @@
v-model=
"formData.holderUserInfo.bankCardName"
name=
"insuredUserInfo_bankCardName"
label=
"持卡人"
placeholder=
"请
输入
持卡人姓名"
:rules=
"[{ required: true, message: '请
输入
持卡人姓名' }]"
placeholder=
"请
填写
持卡人姓名"
:rules=
"[{ required: true, message: '请
填写
持卡人姓名' }]"
/>
<cr-field
v-model=
"formData.holderUserInfo.bankCardCode"
...
...
@@ -334,8 +416,14 @@
name=
"insuredUserInfo_bankCardNo"
label=
"银行卡号"
type=
"digit"
placeholder=
"请输入银行卡号"
:rules=
"[{ required: true, message: '请输入银行卡号' }]"
placeholder=
"请填写银行卡号"
:rules=
"[
{ required: true, message: '请填写银行卡号' },
{
validator: isBankNumber,
message: '请填写正确的银行卡号'
}
]"
/>
</cr-cell-group>
<good-action
@
leftClick=
"goInsureState = true"
:content=
"goodActionInfo"
/>
...
...
@@ -347,7 +435,7 @@
@
confirm=
"nextStep"
>
<div
class=
"pay-protocol"
>
<div
class=
"pay-protocol-tip"
><span>
投保前请阅读
</span><span>
*
不
犹豫期免费退保
</span></div>
<div
class=
"pay-protocol-tip"
><span>
投保前请阅读
</span><span>
*犹豫期免费退保
</span></div>
<div
class=
"pay-protocol-link"
>
<a
href=
"javascript:;"
@
click=
"openIframePupop(0)"
>
保险条款
</a>
<i></i>
...
...
@@ -393,7 +481,15 @@ import Detail from "@/api/detail.huagui.shouxian";
import
{
list
,
trail
}
from
"
@/api/product
"
;
import
{
getFamilyList
}
from
"
@/api/user
"
;
import
{
parseTime
}
from
"
@/service/utils
"
;
import
{
isIdNo
}
from
"
@/service/validation
"
;
import
{
isIdNo
,
isChineseName
,
isPhone
,
isEmail
,
isInteger
,
isBankNumber
,
isChnAddress
}
from
"
@/service/validation
"
;
const
AUTO_SAVE_KEY
=
"
PolicyFormData
"
;
const
AUTO_SAVE_TARGET
=
"
formData
"
;
...
...
@@ -408,7 +504,7 @@ const {
idCardInvaildOptions
,
socialSecOptions
,
bankInfo
}
=
Detail
;
}
=
JSON
.
parse
(
JSON
.
stringify
(
Detail
))
;
export
default
{
name
:
"
AddPolicy
"
,
mixins
:
[
detailPayMixin
,
autoSaveForm
],
...
...
@@ -450,7 +546,7 @@ export default {
},
payPeriod
:
"
1
"
},
subF
ro
mData
:
{},
subF
or
mData
:
{},
familyList
:
[],
formMaskData
:
{},
idCardInvaildOptions
,
...
...
@@ -506,7 +602,7 @@ export default {
let
idNoWho
=
!
relation
||
relation
===
"
1
"
?
val
.
holderUserInfo
.
idNo
:
idNo
;
let
oldidNoWho
=
!
relation
||
relation
===
"
1
"
?
oldVal
.
holderUserInfo
.
idNo
:
oldIdNo
;
if
(
!
isIdNo
(
idNoWho
)
||
(
idNoWho
&&
idNoWho
.
indexOf
(
"
************
"
)
===
-
1
&&
!
isIdNo
(
idNoWho
)
)
||
(
idNoWho
===
oldidNoWho
&&
amountInsured
===
oldamountInsured
&&
policyPeriod
===
oldpolicyPeriod
&&
...
...
@@ -556,6 +652,41 @@ export default {
this
.
getFamilyList
();
},
methods
:
{
isIdNoMask
(
str
)
{
if
(
str
&&
str
.
indexOf
(
"
************
"
)
>
-
1
)
{
return
true
;
}
else
{
return
isIdNo
(
str
);
}
},
isChineseNameMask
(
str
)
{
if
(
str
&&
str
.
indexOf
(
"
*
"
)
>
-
1
)
{
return
true
;
}
else
{
return
isChineseName
(
str
);
}
},
isPhoneMask
(
str
)
{
if
(
str
&&
str
.
indexOf
(
"
****
"
)
>
-
1
)
{
return
true
;
}
else
{
return
isPhone
(
str
);
}
},
isEmail
,
isBankNumber
,
isChnAddress
,
isIntegerHeight
(
str
)
{
return
isInteger
(
str
)
&&
str
.
length
<=
3
;
},
isFutureDate
(
str
)
{
if
(
str
)
{
const
currentTimestamp
=
new
Date
().
valueOf
();
const
selectTimestamp
=
new
Date
(
str
).
valueOf
();
return
selectTimestamp
>
currentTimestamp
;
}
return
false
;
},
...
mapActions
([
"
setAuthXyqb
"
]),
...
mapActions
(
"
user
"
,
[
"
setUserInfo
"
]),
inputClick
()
{
...
...
@@ -567,23 +698,26 @@ export default {
this
.
goInsureState
=
true
;
},
onFormFailed
(
errorInfo
)
{
console
.
log
(
errorInfo
);
const
{
errors
}
=
errorInfo
;
this
.
$notify
({
type
:
"
warning
"
,
message
:
errors
[
0
].
message
});
},
nextStep
()
{
this
.
subF
ro
mData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
{
socialSecurity
,
longTerm
,
relation
}
=
this
.
subF
ro
mData
.
insuredUserInfo
;
this
.
subF
ro
mData
.
insuredUserInfo
.
socialSecurity
=
socialSecurity
===
"
1
"
?
true
:
false
;
this
.
subF
ro
mData
.
insuredUserInfo
.
longTerm
=
longTerm
===
"
2
"
?
true
:
false
;
this
.
subF
ro
mData
.
holderUserInfo
.
longTerm
=
longTerm
===
"
2
"
?
true
:
false
;
this
.
subF
or
mData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
const
{
socialSecurity
,
longTerm
,
relation
}
=
this
.
subF
or
mData
.
insuredUserInfo
;
this
.
subF
or
mData
.
insuredUserInfo
.
socialSecurity
=
socialSecurity
===
"
1
"
?
true
:
false
;
this
.
subF
or
mData
.
insuredUserInfo
.
longTerm
=
longTerm
===
"
2
"
?
true
:
false
;
this
.
subF
or
mData
.
holderUserInfo
.
longTerm
=
longTerm
===
"
2
"
?
true
:
false
;
if
(
relation
===
"
1
"
)
{
this
.
subF
ro
mData
.
holderUserInfo
=
{
...
this
.
subF
ro
mData
.
holderUserInfo
,
...
this
.
subF
ro
mData
.
insuredUserInfo
this
.
subF
or
mData
.
holderUserInfo
=
{
...
this
.
subF
or
mData
.
holderUserInfo
,
...
this
.
subF
or
mData
.
insuredUserInfo
};
delete
this
.
subF
ro
mData
.
insuredUserInfo
;
delete
this
.
subF
or
mData
.
insuredUserInfo
;
}
this
.
generateOrder
();
sessionStorage
.
setItem
(
"
policyFormData
"
,
JSON
.
stringify
(
this
.
subFormData
));
this
.
$router
.
push
({
path
:
"
/goods/inform
"
,
query
:
{
url
:
popupArray
[
1
].
url
}
});
// this.generateOrder();
},
relationOptionChange
(
relation
)
{
this
.
relationChange
(
relation
,
this
.
clearInsured
);
...
...
@@ -591,13 +725,15 @@ export default {
this
.
clearInsured
=
true
;
},
1000
);
},
relationChange
(
relation
=
this
.
formData
.
insuredUserInfo
.
relation
,
clear
=
false
)
{
relationChange
(
relation
,
clear
=
false
)
{
if
(
clear
)
{
this
.
formData
.
insuredUserInfo
=
{
relation
,
longTerm
:
"
1
"
};
}
this
.
getSaveInfoHandler
(
AUTO_SAVE_KEY
,
AUTO_SAVE_TARGET
);
// this.formData.insuredUserInfo.relation = relation;
this
.
familyList
.
forEach
(
item
=>
{
const
{
relation
,
nameMask
:
name
,
idNoMask
:
idNo
,
userInfoSecId
}
=
item
;
if
(
+
relation
===
1
)
{
...
...
@@ -672,16 +808,12 @@ export default {
const
res
=
await
getFamilyList
();
if
(
res
)
{
this
.
familyList
=
res
;
if
(
this
.
hasAutoSaveData
(
AUTO_SAVE_KEY
))
{
this
.
getSaveInfoHandler
(
AUTO_SAVE_KEY
,
AUTO_SAVE_TARGET
);
}
else
{
const
queryId
=
this
.
$route
.
query
.
userInfoSecId
;
let
relation
=
this
.
formData
.
insuredUserInfo
.
relation
;
if
(
queryId
)
{
relation
=
this
.
familyList
.
filter
(
item
=>
item
.
userInfoSecId
===
queryId
)[
0
].
relation
;
}
(
this
.
showAuthXyqb
||
this
.
mongoToken
)
&&
this
.
relationChange
(
relation
,
false
);
const
queryId
=
this
.
$route
.
query
.
userInfoSecId
;
let
relation
=
this
.
formData
.
insuredUserInfo
.
relation
;
if
(
queryId
)
{
relation
=
this
.
familyList
.
filter
(
item
=>
item
.
userInfoSecId
===
queryId
)[
0
].
relation
;
}
(
this
.
showAuthXyqb
||
this
.
mongoToken
)
&&
this
.
relationChange
(
relation
,
false
);
}
},
async
calFee
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment