bxs-tools-ui 3.3.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/es/add-and-take/index.js +1 -7969
  2. package/es/adjust-baoe/index.js +196 -8195
  3. package/es/index.css +1 -1
  4. package/es/index.js +8788 -43744
  5. package/es/insure-calculate/index.css +1 -1
  6. package/es/insure-calculate/index.js +1046 -36665
  7. package/es/person-info/index.css +1 -1
  8. package/es/person-info/index.js +83 -8042
  9. package/es/product-info/index.css +1 -1
  10. package/es/product-info/index.js +3005 -10614
  11. package/es/share-sheet/index.js +69 -8040
  12. package/es/utils/index.js +1250 -9334
  13. package/lib/add-and-take/index.js +4 -7973
  14. package/lib/adjust-baoe/index.js +195 -8195
  15. package/lib/index.css +1 -1
  16. package/lib/index.js +8717 -43678
  17. package/lib/insure-calculate/index.css +1 -1
  18. package/lib/insure-calculate/index.js +1034 -36662
  19. package/lib/person-info/index.css +1 -1
  20. package/lib/person-info/index.js +86 -8046
  21. package/lib/product-info/index.css +1 -1
  22. package/lib/product-info/index.js +2807 -10417
  23. package/lib/share-sheet/index.js +72 -8044
  24. package/lib/utils/index.js +1252 -9337
  25. package/package.json +5 -3
  26. package/packages/add-and-take/demo/index.vue +3 -6
  27. package/packages/adjust-baoe/index.vue +21 -34
  28. package/packages/adjust-baoe/readme.md +0 -1
  29. package/packages/bxs-utils/planbook/common.ts +5 -0
  30. package/packages/bxs-utils/planbook/insurance.ts +19 -0
  31. package/packages/bxs-utils/planbook/person.ts +3 -2
  32. package/packages/bxs-utils/planbook/product.ts +57 -164
  33. package/packages/bxs-utils/readme.md +3 -1
  34. package/packages/index.ts +1 -1
  35. package/packages/insure-calculate/demo/index.vue +1 -1
  36. package/packages/insure-calculate/index.vue +18 -17
  37. package/packages/person-info/demo/index.vue +2 -4
  38. package/packages/planbook-input/components/product-table.vue +3 -14
  39. package/packages/planbook-input/helper.js +16 -53
  40. package/packages/planbook-input/index.vue +20 -28
  41. package/packages/planbook-input/readme.md +3 -3
  42. package/packages/product-info/components/product-insurance-form.md +46 -0
  43. package/packages/product-info/components/product-insurance-form.vue +360 -0
  44. package/packages/product-info/demo/index.vue +4 -5
  45. package/packages/product-info/handler.js +307 -0
  46. package/packages/product-info/handler.md +26 -0
  47. package/packages/product-info/index.less +33 -0
  48. package/packages/product-info/index.vue +306 -534
  49. package/packages/product-info/readme.md +7 -2
  50. package/packages/share-sheet/constant.js +1 -2
  51. package/src/api/adjust-baoe.js +2 -2
  52. package/src/api/planbook.js +4 -20
  53. package/src/api/trade.js +31 -0
  54. package/src/components/common/common-group-title.less +54 -0
  55. package/src/components/common/common-group-title.md +34 -0
  56. package/src/components/common/common-group-title.vue +72 -0
  57. package/src/components/common/common-title.less +4 -0
  58. package/src/components/common/common-title.vue +8 -2
  59. package/src/components/profession-list/README.md +114 -0
  60. package/src/components/profession-list/constant.js +4 -0
  61. package/src/components/profession-list/handler.js +155 -0
  62. package/src/components/profession-list/index.less +182 -0
  63. package/src/components/profession-list/index.vue +443 -0
@@ -22,9 +22,6 @@ export default class PersonInfoDemo extends Vue {
22
22
  verifyData = null
23
23
  personData = null
24
24
  created() {
25
- if (!this.URL_PARAM.publicPbUuid) {
26
- this.URL_PARAM.publicPbUuid = '5d6499946bbb47bb8f6a286e9d4eee77'
27
- }
28
25
  document.body.style.backgroundColor = '#f2f2f2'
29
26
  this.getPlanbookData()
30
27
  }
@@ -33,7 +30,8 @@ export default class PersonInfoDemo extends Vue {
33
30
  }
34
31
  getPlanbookData() {
35
32
  getPlanbookData({
36
- publicPbUuid: this.URL_PARAM.publicPbUuid
33
+ insuranceTypeId: this.URL_PARAM.planbookId || 13767,
34
+ resultUuid: this.URL_PARAM.uuid
37
35
  })
38
36
  .then(async (data: any) => {
39
37
  await initPageData(data)
@@ -119,6 +119,7 @@
119
119
  @confirm="confirm(productData)"
120
120
  >
121
121
  <ProductInfo
122
+ v-if="popupConf.prodVisible"
122
123
  ref="productInfo"
123
124
  :user="user"
124
125
  :input-data="inputData"
@@ -183,7 +184,6 @@
183
184
  :input-data="inputData"
184
185
  :params="{
185
186
  planbookId: params.planbookId,
186
- publicPbUuid: params.publicPbUuid,
187
187
  groupKey: params.groupKey,
188
188
  productKey: params.productKey
189
189
  }"
@@ -338,22 +338,11 @@ export default class BxtProductTable extends Vue {
338
338
  }
339
339
 
340
340
  fnShowAddAndTake(ins, name) {
341
- if (ins.isGroup) {
342
- return false
343
- }
344
341
  const { productData, params } = this
345
342
  const hasInterest = params.interestProductList && params.interestProductList.includes(productData.key)
346
343
  const isProductChecked = productData.hadChoice
347
- let titleEle = ins.eleOrderList.find(ele => ele.key === 'title')
348
- let isInsuranceChecked = titleEle && titleEle.value
349
- if (ins.groupKey) {
350
- const groupInsurance = productData.mulInsOrderList.find(item => item.key === ins.groupKey)
351
- if (groupInsurance) {
352
- titleEle = groupInsurance.eleOrderList.find(ele => ele.key === 'title')
353
- const insuranceIdEle = groupInsurance.eleOrderList.find(ele => ele.key === 'insuranceId')
354
- isInsuranceChecked = titleEle && titleEle.value && insuranceIdEle.value === ins.key
355
- }
356
- }
344
+ const titleEle = ins.eleOrderList.find(ele => ele.key === 'title')
345
+ const isInsuranceChecked = titleEle && titleEle.value
357
346
  if (name === 'accountData') {
358
347
  return hasInterest && isProductChecked && isInsuranceChecked && ins.accountData && ins.accountData.accountPart
359
348
  }
@@ -12,7 +12,6 @@ import {
12
12
  clearAddAndTakeAndAdjustBaoeData,
13
13
  convertProductData,
14
14
  verifyProductRules,
15
- convertEleOrderListToObj,
16
15
  getExpressionParamMap
17
16
  } from '../bxs-utils/index'
18
17
  import { calcPlanbookProduct, uploadPlanBookResult, getUnderwriteEffectiveRules } from '../../src/api/index.js'
@@ -141,8 +140,6 @@ export function setPageDataBaseOnResult(inputData, exportData, policyInfo, optio
141
140
  // 已生成的计划书取回的产品数据,赋值到初始化中的产品对象中
142
141
  for (let k in prod) {
143
142
  if (k == 'mulInsOrderList') {
144
- // 清除组合险
145
- prod.mulInsOrderList = prod.mulInsOrderList.filter(ins => !ins.isGroup)
146
143
  // 已生成的计划书取回的险种数据,赋值到初始化中的险种对象中
147
144
  prod.mulInsOrderList.forEach(ins => {
148
145
  const eInsuranceData = eProductData.mulInsOrderList.find(m => m.key === ins.key)
@@ -240,7 +237,8 @@ export async function createdProductDataToCalc(inputData, options = {}) {
240
237
  'shmInsData',
241
238
  'totalBaof',
242
239
  // 'calcResultExp', // 不能删除,后面有依赖
243
- 'revalidateFlag'
240
+ 'revalidateFlag',
241
+ 'deriveRequired'
244
242
  ].includes(k)
245
243
  ) {
246
244
  tempIns[k] = ins[k]
@@ -260,7 +258,6 @@ export async function createdProductDataToCalc(inputData, options = {}) {
260
258
  productData
261
259
  })
262
260
  const reqData = {
263
- publicPbUuid: options.publicPbUuid || null,
264
261
  insuranceTypeId: options.planbookId ? options.planbookId * 1 : null,
265
262
  personData: {
266
263
  personOrderList: convertPersonData(
@@ -318,20 +315,6 @@ export function receiveProductData(inputData, rProductData, options = {}) {
318
315
  }
319
316
  })
320
317
 
321
- productData.mulInsOrderList.forEach(ins => {
322
- if (ins.isGroup) {
323
- return
324
- }
325
- const groupInsData = convertEleOrderListToObj(ins)
326
- const insuranceId = groupInsData.isCheckbox ? groupInsData.insuranceId[0] : groupInsData.insuranceId
327
- const checkedIns = productData.mulInsOrderList.find(i => i.key === insuranceId)
328
- for (const key in checkedIns) {
329
- if (['allowSamePerson', 'code', 'eleOrderList', 'groupKey', 'groupName', 'huomian', 'key', 'name'].indexOf(key) === -1) {
330
- ins[key] = checkedIns[key]
331
- }
332
- }
333
- })
334
-
335
318
  const hasSomeCheckedIns = rProductData.mulInsOrderList.some(ins => ins.title)
336
319
  productData.hadChoice = hasSomeCheckedIns
337
320
  productData.totalBaof = hasSomeCheckedIns ? rProductData.totalBaof : null
@@ -499,12 +482,11 @@ export function genProductUniqueKeyWithNS(namespace, groupKey, productKey) {
499
482
  }
500
483
 
501
484
  export async function calcProductData(inputData, options, cb) {
502
- const { planbookId, publicPbUuid, groupKey, productKey, isIgnoreError, isIgnoreLoading, productCalcNamespace } = options || {}
485
+ const { planbookId, groupKey, productKey, isIgnoreError, productCalcNamespace } = options || {}
503
486
  const productUniqueKey = genProductUniqueKeyWithNS(productCalcNamespace, groupKey, productKey)
504
487
  try {
505
488
  const params = await createdProductDataToCalc(inputData, {
506
489
  planbookId,
507
- publicPbUuid,
508
490
  groupKey,
509
491
  productKey
510
492
  })
@@ -524,26 +506,16 @@ export async function calcProductData(inputData, options, cb) {
524
506
  })
525
507
  }
526
508
  }
527
- let resData = null
528
- if (publicPbUuid) {
529
- resData = await calcPlanbookProduct({
530
- jd: params.jd
509
+ const resData = await calcPlanbookProduct(
510
+ qs.stringify({
511
+ jd: params.jd,
512
+ signature: params.signature,
513
+ clientVersion: params.clientVersion,
514
+ isIos: params.isIos
531
515
  })
532
- } else {
533
- resData = await calcPlanbookProduct(
534
- qs.stringify({
535
- jd: params.jd,
536
- signature: params.signature,
537
- clientVersion: params.clientVersion,
538
- isIos: params.isIos
539
- }),
540
- {
541
- isIgnoreLoading
542
- }
543
- ).catch(err => {
544
- return Promise.reject(err)
545
- })
546
- }
516
+ ).catch(err => {
517
+ return Promise.reject(err)
518
+ })
547
519
 
548
520
  if (!resData.success || !resData.data) {
549
521
  if (resData.code === '002017') {
@@ -635,7 +607,7 @@ export async function calcProductData(inputData, options, cb) {
635
607
  }
636
608
 
637
609
  export async function doubleCalcProductData(inputData, verifyData, options = {}) {
638
- const { user, planbookId, publicPbUuid, groupKey, productKey, isIgnoreError, productCalcNamespace, executeSource } = options
610
+ const { user, planbookId, groupKey, productKey, isIgnoreError, productCalcNamespace, executeSource } = options
639
611
  const personData = inputData && inputData.personData
640
612
  const productGroupList = inputData && inputData.productGroupList ? inputData.productGroupList : []
641
613
  const productGroup = productGroupList.find(g => g.key === groupKey)
@@ -656,7 +628,6 @@ export async function doubleCalcProductData(inputData, verifyData, options = {})
656
628
  await calcProductData(inputData, {
657
629
  user,
658
630
  planbookId,
659
- publicPbUuid,
660
631
  groupKey,
661
632
  productKey,
662
633
  executeSource,
@@ -672,7 +643,6 @@ export async function doubleCalcProductData(inputData, verifyData, options = {})
672
643
  await calcProductData(inputData, {
673
644
  user,
674
645
  planbookId,
675
- publicPbUuid,
676
646
  groupKey,
677
647
  productKey,
678
648
  executeSource,
@@ -684,7 +654,7 @@ export async function doubleCalcProductData(inputData, verifyData, options = {})
684
654
  }
685
655
 
686
656
  export function calcAllProductData(inputData, verifyData, options) {
687
- const { planbookId, publicPbUuid, userUuid, appid, productCalcNamespace, executeSource } = options
657
+ const { planbookId, userUuid, appid, productCalcNamespace, executeSource } = options
688
658
  const productGroupList = (_get(inputData, 'productGroupList') || []).filter(g => g.prodOrderList)
689
659
  const prodOrderList = productGroupList
690
660
  .map(g => g.prodOrderList)
@@ -708,7 +678,6 @@ export function calcAllProductData(inputData, verifyData, options) {
708
678
  return doubleCalcProductData(inputData, verifyData, {
709
679
  planbookId,
710
680
  executeSource,
711
- publicPbUuid,
712
681
  groupKey: g.key,
713
682
  productKey: p.key,
714
683
  isIgnoreError: true,
@@ -801,13 +770,7 @@ export async function makePlanbook(inputData, options = {}) {
801
770
  clientVersion: appVersion,
802
771
  isIos
803
772
  })
804
- ).then(({ success, data, info }) => {
805
- if (!success || !data) {
806
- Toast(info || '生成计划书失败')
807
- return Promise.reject()
808
- }
809
- return Promise.resolve(data)
810
- })
773
+ )
811
774
  }
812
775
 
813
776
  export function convertInputDataToResultData(inputData, options = {}) {
@@ -930,7 +893,7 @@ export function cleanNeedlessResultData(resultData) {
930
893
  // 获取产品险种标签;入参过滤与 findInsuranceTag().catch 与 compare3 fetchInsuranceSaleStatusMap 一致
931
894
  export async function getProductInsuranceTags(inputData, options = {}, key = 'salesStatus') {
932
895
  const product = getProductFromInputData(inputData, options)
933
- const mulInsOrderList = (_get(product, 'mulInsOrderList') || []).filter(ins => !ins.isGroup)
896
+ const mulInsOrderList = _get(product, 'mulInsOrderList') || []
934
897
 
935
898
  if (!mulInsOrderList.length) {
936
899
  return {}
@@ -2,20 +2,19 @@
2
2
  <div class="bxt-planbook" v-if="inputData">
3
3
  <div class="bxt-planbook-person">
4
4
  <div class="bxt-person-container" v-if="inputData.personData">
5
- <template v-for="person in inputData.personData.personOrderList">
6
- <PersonInfo
7
- :key="person.key"
8
- :input-data="inputData"
9
- :verify-data="planbookData && planbookData.verifyData"
10
- :person-data="person"
11
- :is-show-crm-person="true"
12
- :params="{
13
- brokerFlag: planbookData && planbookData.brokerFlag,
14
- planbookId: planbookData && planbookData.pbId
15
- }"
16
- @change="changePersonInfo"
17
- />
18
- </template>
5
+ <PersonInfo
6
+ v-for="person in inputData.personData.personOrderList"
7
+ :key="person.key"
8
+ :input-data="inputData"
9
+ :verify-data="planbookData && planbookData.verifyData"
10
+ :person-data="person"
11
+ :is-show-crm-person="true"
12
+ :params="{
13
+ brokerFlag: planbookData && planbookData.brokerFlag,
14
+ planbookId: planbookData && planbookData.pbId
15
+ }"
16
+ @change="changePersonInfo"
17
+ />
19
18
  </div>
20
19
  </div>
21
20
  <div class="bxt-planbook-product">
@@ -30,7 +29,6 @@
30
29
  :verify-data="planbookData && planbookData.verifyData"
31
30
  :params="{
32
31
  planbookId: Number(URL_PARAM.planbookId),
33
- publicPbUuid: URL_PARAM.publicPbUuid,
34
32
  groupKey: g.key,
35
33
  productKey: p.key,
36
34
  interestProductList: planbookData && planbookData.interestProductList
@@ -95,12 +93,10 @@ export default class BxtPlanbookInput extends Vue {
95
93
  getPlanbookData() {
96
94
  const self = this
97
95
  const { URL_PARAM, userInfo } = self
98
- const { planbookId, publicPbUuid, uuid } = URL_PARAM
96
+ const { planbookId, uuid } = URL_PARAM
99
97
  return getPlanbookData({
100
98
  insuranceTypeId: planbookId || 13767,
101
- resultUuid: uuid,
102
- publicPbUuid
103
- // publicPbUuid: '5d6499946bbb47bb8f6a286e9d4eee77'
99
+ resultUuid: uuid
104
100
  })
105
101
  .then(async (data: any) => {
106
102
  await initPageData(data, {
@@ -117,7 +113,7 @@ export default class BxtPlanbookInput extends Vue {
117
113
  }
118
114
  autoImportData() {
119
115
  const { URL_PARAM, userInfo, exportData, verifyData, inputData } = this
120
- const { planbookId, publicPbUuid } = URL_PARAM
116
+ const { planbookId } = URL_PARAM
121
117
  if (inputData) {
122
118
  inputData.productGroupList
123
119
  .filter((g: IPbProductGroup) => g.prodOrderList)
@@ -126,7 +122,6 @@ export default class BxtPlanbookInput extends Vue {
126
122
  doubleCalcProductData(inputData, verifyData, {
127
123
  user: userInfo,
128
124
  planbookId: Number(planbookId),
129
- publicPbUuid,
130
125
  groupKey: g.key,
131
126
  productKey: p.key,
132
127
  executeSource: exportData ? 'import' : 'init',
@@ -143,7 +138,7 @@ export default class BxtPlanbookInput extends Vue {
143
138
  }
144
139
  changePersonInfo(person: IPbPerson, ele: any = {}) {
145
140
  const { URL_PARAM, userInfo, exportData, verifyData, inputData } = this
146
- const { planbookId, publicPbUuid } = URL_PARAM
141
+ const { planbookId } = URL_PARAM
147
142
  if (inputData) {
148
143
  inputData.productGroupList
149
144
  .filter((g: IPbProductGroup) => g.prodOrderList)
@@ -155,7 +150,6 @@ export default class BxtPlanbookInput extends Vue {
155
150
  user: userInfo,
156
151
  planbookId: Number(planbookId),
157
152
  executeSource: exportData ? 'import' : 'init',
158
- publicPbUuid,
159
153
  groupKey: g.key,
160
154
  productKey: p.key,
161
155
  isIgnoreError: true,
@@ -178,7 +172,7 @@ export default class BxtPlanbookInput extends Vue {
178
172
  confirmProduct(options: any, inst: any) {
179
173
  const self = this
180
174
  const { URL_PARAM, userInfo, inputData } = self
181
- const { planbookId, publicPbUuid } = URL_PARAM
175
+ const { planbookId } = URL_PARAM
182
176
  const { groupKey, productKey } = options
183
177
  inst.$refs.productInfo
184
178
  .validate()
@@ -186,7 +180,6 @@ export default class BxtPlanbookInput extends Vue {
186
180
  return calcProductData(inputData, {
187
181
  user: userInfo,
188
182
  planbookId: Number(planbookId),
189
- publicPbUuid,
190
183
  groupKey,
191
184
  productKey,
192
185
  executeSource: 'confirm'
@@ -209,11 +202,10 @@ export default class BxtPlanbookInput extends Vue {
209
202
  return Promise.reject()
210
203
  }
211
204
 
212
- const { pbType, planbookId, publicPbUuid, userUuid } = URL_PARAM
205
+ const { pbType, planbookId, userUuid } = URL_PARAM
213
206
  const options: any = {
214
207
  pbType,
215
208
  insuranceTypeId: Number(planbookId) || null,
216
- publicPbUuid,
217
209
  totalBaof: calcTotalBaof(inputData?.productGroupList),
218
210
  userUuid
219
211
  }
@@ -223,7 +215,7 @@ export default class BxtPlanbookInput extends Vue {
223
215
  theme: inputData?.theme,
224
216
  uuid: data
225
217
  })
226
- location.href = `${PBF_HOSTNAME}/planBook/planBookResult/pages/${publicPbUuid ? 'planbkPurely' : 'planbkTemplatev2'}.html?${urlParam}`
218
+ location.href = `${PBF_HOSTNAME}/planBook/planBookResult/pages/planbkTemplatev2.html?${urlParam}`
227
219
  }
228
220
  })
229
221
  }
@@ -175,9 +175,9 @@ import {
175
175
  | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------- |
176
176
  | `initPageData(data)` | 初始化计划书数据,依次处理人员数据和所有产品数据 | `data`:接口返回的原始数据 | Promise\<data\> |
177
177
  | `setPageDataBaseOnResult(data)` | 将已生成结果中的导出数据(`exportData`)回填到初始化数据中,用于「编辑已有计划书」场景 | `data`:同上 | data |
178
- | `calcProductData(inputData, options)` | 对指定产品发起一次试算请求,并将结果写回 `inputData` | `inputData`;`options`:`{ planbookId, publicPbUuid, groupKey, productKey, isIgnoreError }` | Promise |
178
+ | `calcProductData(inputData, options)` | 对指定产品发起一次试算请求,并将结果写回 `inputData` | `inputData`;`options`:`{ planbookId, groupKey, productKey, isIgnoreError }` | Promise |
179
179
  | `doubleCalcProductData(inputData, verifyData, options)` | 先执行 `productDataHandler` 再执行 `calcProductData`,对存在 `revalidateFlag` 的产品自动执行二次试算 | 同上,额外需要 `verifyData` | Promise |
180
- | `makePlanbook(inputData, options)` | 生成计划书 | `inputData`;`options`:`{ pbType, insuranceTypeId, publicPbUuid, totalBaof, userUuid }` | Object / null |
180
+ | `makePlanbook(inputData, options)` | 生成计划书 | `inputData`;`options`:`{ pbType, insuranceTypeId, totalBaof, userUuid }` | Object / null |
181
181
  | `setupUnderwriteRuleToInputData(inputData)` | 将核保规则(underwrite rule)应用到 inputData,返回处理后的 inputData | `inputData` | Promise\<inputData\> |
182
- | `createdProductDataToCalc(inputData, options)` | 生成试算接口的请求参数(jd + signature) | `inputData`;`options`:`{ planbookId, publicPbUuid, groupKey, productKey }` | Promise\<{ errorMsg, jd, signature }\> |
182
+ | `createdProductDataToCalc(inputData, options)` | 生成试算接口的请求参数(jd + signature) | `inputData`;`options`:`{ planbookId, groupKey, productKey }` | Promise\<{ errorMsg, jd, signature }\> |
183
183
  | `receiveProductData(inputData, rProductData, options)` | 将试算接口返回的产品数据写回 `inputData` | `inputData`;`rProductData`:接口返回的产品数据;`options` | productData |
@@ -0,0 +1,46 @@
1
+ # ProductInsuranceForm
2
+
3
+ ## 说明
4
+
5
+ 单个险种表单:渲染 `ins.eleOrderList`(标题 + 选中后的输入/单选/下拉等)。供 `ProductInfo` 在普通险与组合子险中复用。
6
+
7
+ 非目标:组合险组头开关、组内互斥逻辑(由父组件处理)。
8
+
9
+ ## Props
10
+
11
+ | 参数 | 说明 | 类型 | 默认值 |
12
+ |------|------|------|--------|
13
+ | `ins` | 必传,险种数据 | Object | — |
14
+ | `ins-mode` | 场景:`normal` 普通险 / `groupSub` 组合子险(内部挂 `bxt-product-group-sub` 等 class,title 走 `title-change`) | String | `normal` |
15
+ | `product-key` | 产品 key,用于 DOM id | Number / String | `null` |
16
+ | `mul-ins-order-list` | 产品下全部险种(豁免标签等) | Array | `[]` |
17
+ | `person-data` | 人员信息(豁免提示) | Object | `{}` |
18
+ | `recommend-values` | 保额/保费推荐值 | Object | `{}` |
19
+ | `insurance-sale-status` | 停售状态映射 | Object | `{}` |
20
+ | `show-huomian-tips` | 是否展示豁免设置提示 | Boolean | `false` |
21
+ | `is-follow` | 是否与上一险种紧贴 | Boolean | `false` |
22
+
23
+ ## Events
24
+
25
+ | 事件 | 说明 | 参数 |
26
+ |------|------|------|
27
+ | `change` | 元素变更(普通险含 title;组合子险 title 除外) | `{ insData, eleData }` |
28
+ | `title-change` | 仅 `insMode=groupSub`:标题勾选,由父做互斥后再 `onChange` | `{ insData, eleData }` |
29
+ | `openCrmPerson` | 点击豁免提示 | — |
30
+
31
+ ## Methods
32
+
33
+ | 方法 | 说明 |
34
+ |------|------|
35
+ | `validate` | 调用内部 `van-form.validate` |
36
+
37
+ ## 依赖
38
+
39
+ - Vant:`van-form` / `van-field` / `van-radio` 等
40
+ - `CommonTitle` / `CommonRadio` / `CommonSelect`
41
+
42
+ ## 埋点清单
43
+
44
+ | 事件类型 | 触发节点 | statId | 备注 |
45
+ |----------|----------|--------|------|
46
+ | 点击 | 标题 / 单选 / 下拉 | `product_insurance_${ele.key}` | 声明式 `data-stat-id` |