bxs-tools-ui 2.0.7 → 3.0.0-1

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 (89) hide show
  1. package/README.md +9 -8
  2. package/es/add-and-take/index.css +1 -0
  3. package/es/add-and-take/index.js +2877 -0
  4. package/es/adjust-baoe/index.css +1 -0
  5. package/es/adjust-baoe/index.js +1717 -0
  6. package/es/business-card/index.css +1 -0
  7. package/es/business-card/index.js +616 -0
  8. package/es/canvas-poster/index.css +1 -0
  9. package/es/canvas-poster/index.js +698 -0
  10. package/es/index.css +1 -0
  11. package/es/index.js +39458 -0
  12. package/es/insure-calculate/index.css +1 -0
  13. package/es/insure-calculate/index.js +31180 -0
  14. package/es/person-info/index.css +1 -0
  15. package/es/person-info/index.js +4240 -0
  16. package/es/product-info/index.css +1 -0
  17. package/es/product-info/index.js +4570 -0
  18. package/es/utils/index.js +3160 -0
  19. package/lib/add-and-take/index.css +1 -702
  20. package/lib/add-and-take/index.js +2641 -25431
  21. package/lib/adjust-baoe/index.css +1 -281
  22. package/lib/adjust-baoe/index.js +1534 -27044
  23. package/lib/business-card/index.css +1 -179
  24. package/lib/business-card/index.js +515 -1361
  25. package/lib/canvas-poster/index.css +1 -84
  26. package/lib/canvas-poster/index.js +594 -1414
  27. package/lib/index.css +1 -2538
  28. package/lib/index.js +36329 -40571
  29. package/lib/insure-calculate/index.css +1 -510
  30. package/lib/insure-calculate/index.js +28980 -25191
  31. package/lib/person-info/index.css +1 -562
  32. package/lib/person-info/index.js +3881 -27346
  33. package/lib/product-info/index.css +1 -510
  34. package/lib/product-info/index.js +4235 -34572
  35. package/lib/utils/index.js +3199 -0
  36. package/package.json +47 -18
  37. package/packages/add-and-take/components/interest-form.css +4 -3
  38. package/packages/add-and-take/components/interest-form.vue +11 -36
  39. package/packages/add-and-take/components/interest-items.css +1 -1
  40. package/packages/add-and-take/components/interest-table.css +46 -93
  41. package/packages/add-and-take/components/interest-table.vue +37 -196
  42. package/packages/add-and-take/demo/index.vue +86 -96
  43. package/packages/add-and-take/handler.ts +9 -8
  44. package/packages/add-and-take/index.css +3 -2
  45. package/packages/add-and-take/index.vue +7 -28
  46. package/packages/add-and-take/readme.md +17 -33
  47. package/packages/adjust-baoe/demo/index.vue +63 -66
  48. package/packages/adjust-baoe/index.css +21 -29
  49. package/packages/adjust-baoe/index.vue +41 -54
  50. package/packages/adjust-baoe/readme.md +52 -87
  51. package/packages/business-card/demo/index.vue +2 -11
  52. package/packages/business-card/index.css +1 -0
  53. package/packages/business-card/readme.md +36 -16
  54. package/packages/bxs-utils/index.ts +7 -0
  55. package/packages/bxs-utils/planbook/insurance.ts +5 -5
  56. package/packages/bxs-utils/planbook/product.ts +2 -1
  57. package/packages/canvas-poster/readme.md +86 -66
  58. package/packages/index.ts +52 -0
  59. package/packages/insure-calculate/demo/index.vue +22 -8
  60. package/packages/insure-calculate/index.css +8 -6
  61. package/packages/insure-calculate/index.vue +189 -146
  62. package/packages/insure-calculate/readme.md +1 -1
  63. package/packages/person-info/{crm-person.vue → crm-popup.vue} +117 -108
  64. package/packages/person-info/demo/index.vue +2 -1
  65. package/packages/person-info/index.vue +117 -130
  66. package/packages/person-info/readme.md +5 -8
  67. package/packages/planbook-input/components/product-table.css +2 -0
  68. package/packages/planbook-input/components/product-table.vue +38 -16
  69. package/packages/planbook-input/index.css +4 -1
  70. package/packages/planbook-input/index.vue +12 -9
  71. package/packages/product-info/demo/index.vue +4 -2
  72. package/packages/product-info/index.css +131 -116
  73. package/packages/product-info/index.vue +130 -145
  74. package/packages/product-info/readme.md +1 -2
  75. package/src/components/common/common-age-birthday.vue +205 -0
  76. package/{packages/components/common-popup/index.vue → src/components/common/common-popup.vue} +40 -25
  77. package/src/components/common/common-radio.vue +175 -0
  78. package/src/components/common/common-select.vue +132 -0
  79. package/{packages/components/form-item/title-item.css → src/components/common/common-title.css} +13 -5
  80. package/{packages/components/form-item/title-item.vue → src/components/common/common-title.vue} +6 -21
  81. package/src/js/request.js +3 -3
  82. package/src/style/apply.css +25 -0
  83. package/src/style/base.css +0 -28
  84. package/packages/components/common-radio.vue +0 -142
  85. package/packages/components/form-item/age-birthday-item.vue +0 -183
  86. package/packages/components/form-item/select-item.vue +0 -110
  87. package/packages/person-info/crm-person.css +0 -57
  88. package/packages/person-info/index.css +0 -51
  89. package/src/index.ts +0 -48
@@ -0,0 +1,3199 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('qs'), require('lodash'), require('axios')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'qs', 'lodash', 'axios'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BXT = {}, global.QS, global.lodash, global.axios));
5
+ })(this, (function (exports, QS, lodash, axios) { 'use strict';
6
+
7
+ function _typeof$1(o) {
8
+ "@babel/helpers - typeof";
9
+
10
+ return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
11
+ return typeof o;
12
+ } : function (o) {
13
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
14
+ }, _typeof$1(o);
15
+ }
16
+
17
+ /**
18
+ * **将对象下的 eleOrderList 数组中的子元素下的 value,转换为 key-value 键值对**
19
+ * @author Lizhao <lz@winbaoxian.com>
20
+ * @date 2022-04-25
21
+ * @param {any} obj 必传。带eleOrderList数组的对象。如人员数据、产品数据
22
+ * @example
23
+ * convertEleOrderListToObj({
24
+ "key": "insuredInfo"
25
+ "eleOrderList": [
26
+ { "value": true, "key": "title" },
27
+ { "value": 1, "key": "sex" },
28
+ { "value": 30, "key": "age" },
29
+ { "value": "2020/10/23", "key": "insuranceDay" }
30
+ ]
31
+ })
32
+ // returns
33
+ // {
34
+ // "key": "insuredInfo",
35
+ // "title": true,
36
+ // "sex": 1,
37
+ // "age": 30,
38
+ // "insuranceDay": "2020/10/23",
39
+ // }
40
+ * @returns {any}
41
+ */
42
+ function convertEleOrderListToObj(obj) {
43
+ var resData = {};
44
+ var _loop = function _loop(k) {
45
+ if (k == 'eleOrderList') {
46
+ obj[k].map(function (ele) {
47
+ resData[ele.key] = ele.value;
48
+ });
49
+ } else {
50
+ // eleOrderList中有的key,则不取当前对象下的属性
51
+ if (!obj.eleOrderList || obj.eleOrderList.every(function (e) {
52
+ return e.key !== k;
53
+ })) {
54
+ resData[k] = obj[k];
55
+ }
56
+ }
57
+ };
58
+ for (var k in obj) {
59
+ _loop(k);
60
+ }
61
+ return resData;
62
+ }
63
+
64
+ /**
65
+ * **对所有产品组中的已选产品的保费求和**
66
+ * @author Lizhao <lz@winbaoxian.com>
67
+ * @date 2022-04-25
68
+ * @param {IPbProductGroup} productGroupList 所有产品组数据
69
+ * @returns {number} 总保费
70
+ */
71
+ function calcTotalBaof(productGroupList) {
72
+ var totalBaof = 0;
73
+ if (!productGroupList) {
74
+ return totalBaof;
75
+ }
76
+ productGroupList.map(function (group) {
77
+ if (group.isHide) {
78
+ return;
79
+ }
80
+ group.prodOrderList.map(function (prod) {
81
+ if (prod.hadChoice && !prod.hide) {
82
+ totalBaof += Number(prod.totalBaof) || 0;
83
+ }
84
+ });
85
+ });
86
+ return totalBaof && Number(totalBaof.toFixed(2));
87
+ }
88
+
89
+ /**
90
+ * **转换交费期间的值。实际是表示豁免险与所关联的险种的交费期间值的关系**
91
+ * @author Lizhao <lz@winbaoxian.com>
92
+ * @date 2022-04-25
93
+ * @param {string} val - 必传。交费期间的值
94
+ * @param {number} pMinus 0 可不传。指定要减去的值
95
+ * @param {number} age 0 可不传。所附加的人员的年龄
96
+ * @returns {string} 交费期间
97
+ * @example
98
+ * getHuomianPeriodValue('a999')
99
+ * // returns a999
100
+ *
101
+ * getHuomianPeriodValue('b10', 1)
102
+ * // returns b9
103
+ *
104
+ * getHuomianPeriodValue('a60', 1, 30)
105
+ * // returns b29
106
+ */
107
+ function getHuomianPeriodValue() {
108
+ var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
109
+ var pMinus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
110
+ var age = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
111
+ // a999: 终身; a1000: 趸交
112
+ if (val == 'a999' || val == 'a1000') {
113
+ return val;
114
+ }
115
+ // b开头:XXX 年。关联险种的交费期间 - 指定的值
116
+ if (val.search(/^b/) !== -1) {
117
+ return 'b' + (Number(val.replace(/[^0-9]/, '')) - pMinus);
118
+ }
119
+ // a开头:至XXX岁。关联险种的交费期间 - 人员的年龄 - 指定的值
120
+ if (val.search(/^a/) !== -1) {
121
+ return 'b' + (Number(val.replace(/[^0-9]/, '')) - age - pMinus);
122
+ }
123
+ return '';
124
+ }
125
+
126
+ /**
127
+ * **将交费期间或者保险期间的值,转换成数值**
128
+ * @author Lizhao <lz@winbaoxian.com>
129
+ * @date 2022-04-25
130
+ * @param {string} value 必传。需要转换的值
131
+ * @param {number} age 0 可不传。被保人年龄
132
+ * @returns {number} 数值
133
+ * @example
134
+ * getNumberFromYear('a1000')
135
+ * // returns 1
136
+ *
137
+ * getNumberFromYear('a10', 1)
138
+ * // returns 9
139
+ *
140
+ * getNumberFromYear('b10')
141
+ * // returns 10
142
+ */
143
+ function getNumberFromYear(value) {
144
+ var age = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
145
+ if (typeof value === 'number') {
146
+ return value;
147
+ }
148
+ if (value === 'a1000') {
149
+ return 1;
150
+ }
151
+ if (value.match(/^a/)) {
152
+ return Number(value.replace(/\D/g, '')) - age;
153
+ }
154
+ return Number(value.replace(/\D/g, ''));
155
+ }
156
+
157
+ /**
158
+ * **将大于10000且是10000的倍数的值,转换成单位为万的字符串**
159
+ * @author Lizhao <lz@winbaoxian.com>
160
+ * @date 2022-04-25
161
+ * @param {number} value 必传
162
+ * @returns {string} 单位为万的字符串
163
+ * @example
164
+ * converUnit10000(1000)
165
+ * // returns 1000
166
+ *
167
+ * converUnit10000(2000000)
168
+ * // returns 200万
169
+ *
170
+ * converUnit10000(2000001)
171
+ * // returns 2000001
172
+ */
173
+ function converUnit10000(value) {
174
+ return value >= 10000 && !(value % 10000) ? "".concat(value / 10000, "\u4E07") : value;
175
+ }
176
+
177
+ /**
178
+ * **对象的深拷贝**
179
+ * @ignore
180
+ * @author Lizhao <lz@winbaoxian.com>
181
+ * @date 2022-04-25
182
+ * @param {object} obj - 必传
183
+ * @param {WeakMap} hash - 可不传
184
+ * @returns {object} 拷贝对象
185
+ */
186
+ function deepCopy(obj) {
187
+ var hash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new WeakMap();
188
+ if (!obj || _typeof$1(obj) !== 'object') {
189
+ return obj;
190
+ }
191
+ if (hash.has(obj)) {
192
+ return hash.get(obj);
193
+ }
194
+ var newObj;
195
+ var Constructor = obj.constructor;
196
+ switch (Constructor) {
197
+ case RegExp:
198
+ newObj = new Constructor(obj);
199
+ break;
200
+ case Date:
201
+ newObj = new Constructor(obj.getTime());
202
+ break;
203
+ default:
204
+ newObj = new Constructor();
205
+ break;
206
+ }
207
+ hash.set(obj, newObj);
208
+ for (var key in obj) {
209
+ if (obj.hasOwnProperty(key)) {
210
+ newObj[key] = _typeof$1(obj[key]) === 'object' ? deepCopy(obj[key], hash) : obj[key];
211
+ }
212
+ }
213
+ return newObj;
214
+ }
215
+
216
+ /**
217
+ * **根据生日算年龄**
218
+ * @author Lizhao <lz@winbaoxian.com>
219
+ * @date 2022-04-25
220
+ * @param {Date|timestamp|dateStr} birth 必传。时间字符串或时间翟
221
+ * @param {Date|timestamp|dateStr} cDate 可不传。指定时间,不传默认为当前时间
222
+ * @returns {number} 年龄
223
+ * @example
224
+ * getAgeFromBirth('2000-01-01')
225
+ * // returns 22
226
+ *
227
+ * getAgeFromBirth('2000-01-10', '2022-01-10')
228
+ * // returns 22
229
+ *
230
+ * getAgeFromBirth('2000-01-10', '2022-01-09')
231
+ * // returns 21
232
+ */
233
+ function getAgeFromBirth(birth, cDate) {
234
+ var nowDate = cDate ? new Date(cDate) : new Date();
235
+ var bDate = new Date(birth);
236
+ var age = nowDate.getFullYear() - bDate.getFullYear();
237
+ if (nowDate.getMonth() - bDate.getMonth() < 0 || nowDate.getMonth() - bDate.getMonth() === 0 && nowDate.getDate() - bDate.getDate() < 0) {
238
+ age--;
239
+ }
240
+ return age;
241
+ }
242
+
243
+ /**
244
+ * 将数值转换为千分位
245
+ * @author Lizhao <lz@winbaoxian.com>
246
+ * @date 2024-09-10
247
+ * @param {*} n 数值
248
+ * @returns 千分位字符串
249
+ */
250
+ function formatNumberToThousand(n) {
251
+ if (n !== 0 && !n) {
252
+ return '';
253
+ }
254
+ var number = Number(n);
255
+ if (isNaN(number)) {
256
+ return n;
257
+ }
258
+ return number.toLocaleString('zh-CN');
259
+ }
260
+
261
+ /**
262
+ * **初始化人员数据**
263
+ * - 增加一些元素。如:投被保人是否为同一人、生日
264
+ * - 补充一些文案。如:占位符
265
+ * - 补充、转换一些必要数据。如:所用的模块名称、年龄的选项、可能用到的字段
266
+ * - 计算被保人年龄范围,即计划书年龄范围
267
+ * @author Lizhao <lz@winbaoxian.com>
268
+ * @date 2022-04-26
269
+ * @param {IPbInput} inputData 必传。计划书数据
270
+ * @param {object} verifyData 必传。计划书校验条件
271
+ * @returns {void}
272
+ */
273
+ function initPersonData(inputData, verifyData) {
274
+ var personData = inputData.personData;
275
+ if (!personData || !personData.personOrderList) {
276
+ return;
277
+ }
278
+ var personOrderList = personData.personOrderList;
279
+ if (!personOrderList || !personOrderList.length) {
280
+ return;
281
+ }
282
+ personOrderList.forEach(function (person) {
283
+ if (!person || !person.eleOrderList) {
284
+ return;
285
+ }
286
+ person.createArchive = person.createArchive || false;
287
+ person.cid = person.cid || null;
288
+ if (!person.eleOrderList.find(function (e) {
289
+ return e.key === 'name';
290
+ })) {
291
+ person.eleOrderList.splice(1, 0, {
292
+ key: 'name',
293
+ value: '',
294
+ label: '姓名',
295
+ placeholder: '请输入姓名',
296
+ componentName: 'cmCommonInput',
297
+ maxlength: 16,
298
+ isHide: false
299
+ });
300
+ }
301
+ // 投保人添加元素:投被保人是同一人
302
+ if (person.key === 'applicantInfo') {
303
+ if (person.eleOrderList.every(function (e) {
304
+ return e.key !== 'applicantAndInsuredSame';
305
+ })) {
306
+ person.eleOrderList.splice(1, 0, {
307
+ key: 'applicantAndInsuredSame',
308
+ value: 0,
309
+ label: '投被保人',
310
+ componentName: 'cmCommonRadio',
311
+ options: [{
312
+ val: 0,
313
+ desc: '非同一人'
314
+ }, {
315
+ val: 1,
316
+ desc: '是同一人'
317
+ }]
318
+ });
319
+ }
320
+ }
321
+ // 添加元素:生日
322
+ var index = person.eleOrderList.findIndex(function (e) {
323
+ return e.key === 'age';
324
+ });
325
+ if (person.eleOrderList.every(function (e) {
326
+ return e.key !== 'birthday';
327
+ })) {
328
+ person.eleOrderList.splice(index + 1, 0, {
329
+ key: 'birthday',
330
+ value: null,
331
+ label: '生日',
332
+ componentName: null,
333
+ placeholder: '请选择生日',
334
+ minDate: null,
335
+ maxDate: null,
336
+ defaulValue: null
337
+ });
338
+ }
339
+
340
+ // 设置计划书年龄范围,即被保人年龄范围
341
+ var ageRange = getInsuredAgeRange(inputData, verifyData);
342
+ if (ageRange) {
343
+ personOrderList.forEach(function (person) {
344
+ if (person.key === 'insuredInfo' && ageRange["".concat(person.key, "1")] && ageRange["".concat(person.key, "1")].length) {
345
+ person.eleOrderList && person.eleOrderList.forEach(function (ele) {
346
+ if (ele.key === 'age') {
347
+ ele.opts = ageRange["".concat(person.key, "1")];
348
+ // 男女年龄取值范围不同
349
+ if (ageRange["".concat(person.key, "2")].length && ele.opts && (ele.opts[0] !== ageRange["".concat(person.key, "2")][0] || ele.opts[1] !== ageRange["".concat(person.key, "2")][1])) {
350
+ ele.optsF = ageRange["".concat(person.key, "2")];
351
+ }
352
+ }
353
+ });
354
+ }
355
+ });
356
+ }
357
+
358
+ // 转化一些必要数据
359
+ person.eleOrderList.forEach(function (e) {
360
+ switch (e.key) {
361
+ case 'title':
362
+ {
363
+ e.isDisabled = e.isDisabled || null;
364
+ e.componentName = 'cmCommonTitle';
365
+ switch (person.key) {
366
+ case 'insuredInfo':
367
+ e.isDisabled = true;
368
+ e.label = '被保人信息';
369
+ break;
370
+ case 'applicantInfo':
371
+ e.label = '投保人信息(豁免相关)';
372
+ break;
373
+ case 'spouseInfo':
374
+ e.label = '投保人配偶信息';
375
+ break;
376
+ default:
377
+ e.label = e.label || person.label || '人员信息';
378
+ break;
379
+ }
380
+ break;
381
+ }
382
+ case 'sex':
383
+ {
384
+ e.label = '性别';
385
+ e.componentName = 'cmCommonRadio';
386
+ e.options = [{
387
+ val: 1,
388
+ desc: '男'
389
+ }, {
390
+ val: 2,
391
+ desc: '女'
392
+ }];
393
+ if (e.opts && e.opts.length) {
394
+ e.options = e.opts.map(function (o) {
395
+ return {
396
+ val: o.val,
397
+ desc: o.desc
398
+ };
399
+ });
400
+ }
401
+ if (!e.options.find(function (o) {
402
+ return o.val === e.value;
403
+ })) {
404
+ e.value = e.options[0].val;
405
+ }
406
+ e.isDisabled = person.key === 'spouseInfo';
407
+ break;
408
+ }
409
+ case 'age':
410
+ {
411
+ e.label = '年龄';
412
+ e.componentName = 'cmAgeBirthday';
413
+ e.placeholder = '请选择年龄';
414
+ e.options = [];
415
+ break;
416
+ }
417
+ }
418
+ });
419
+ setPersonAgeOptions(person);
420
+ });
421
+ }
422
+
423
+ /**
424
+ * **处理人员数据**
425
+ * - 年龄、生日的联动
426
+ * - 关于被保人、投保人是否是同一人的处理
427
+ * - 被保人、投保人、投保人配偶之间的逻辑
428
+ * @author Lizhao <lz@winbaoxian.com>
429
+ * @date 2022-04-26
430
+ * @param {IPbPersons} allPersonsData 必传。所有人员的数据
431
+ * @returns {IPbPersons} 所有人员的数据
432
+ */
433
+ function personDataHandler(allPersonsData) {
434
+ if (!allPersonsData || !allPersonsData.personOrderList) {
435
+ return allPersonsData;
436
+ }
437
+ allPersonsData.personOrderList.forEach(function (person, i, arr) {
438
+ setPersonAgeOptions(person);
439
+ var insuredData = arr.find(function (p) {
440
+ return p.key === 'insuredInfo';
441
+ });
442
+ var applicantData = arr.find(function (p) {
443
+ return p.key === 'applicantInfo';
444
+ });
445
+ var insuredInfo = convertPersonData(allPersonsData, 'insuredInfo');
446
+ var applicantInfo = convertPersonData(allPersonsData, 'applicantInfo');
447
+ if (person.key === 'insuredInfo' && applicantData && applicantData.eleOrderList) {
448
+ // 关于被保人、投保人是否是同一人的处理
449
+ // 被保人所选年龄不在投保人年龄范围内,强制选中投保人。即被保人年龄不能做投保人
450
+ var applicantAge = applicantData.eleOrderList.find(function (e) {
451
+ return e.key === 'age';
452
+ });
453
+ var applicantTitle = applicantData.eleOrderList.find(function (e) {
454
+ return e.key === 'title';
455
+ });
456
+ var applicantSame = applicantData.eleOrderList.find(function (e) {
457
+ return e.key === 'applicantAndInsuredSame';
458
+ });
459
+ if (applicantAge.opts && insuredInfo.age >= applicantAge.opts[0] && insuredInfo.age <= applicantAge.opts[1]) {
460
+ if (applicantTitle) {
461
+ applicantTitle.isDisabled = false;
462
+ }
463
+ if (applicantSame) {
464
+ applicantSame.isDisabled = null;
465
+ applicantSame.isHide = null;
466
+ }
467
+ } else {
468
+ if (applicantTitle) {
469
+ applicantTitle.value = true;
470
+ applicantTitle.isDisabled = true;
471
+ }
472
+ if (applicantSame) {
473
+ applicantSame.value = 0;
474
+ applicantSame.isDisabled = true;
475
+ applicantSame.isHide = true;
476
+ }
477
+ }
478
+ }
479
+ if (person.key === 'applicantInfo' && person.eleOrderList) {
480
+ // 投被保人为是否为同一人的相关逻辑
481
+ var _applicantSame = person.eleOrderList.find(function (e) {
482
+ return e.key === 'applicantAndInsuredSame';
483
+ });
484
+ if (_applicantSame) {
485
+ person.eleOrderList.forEach(function (ele) {
486
+ if (['title', 'applicantAndInsuredSame'].includes(ele.key)) {
487
+ return;
488
+ }
489
+ person.cid = _applicantSame.value ? insuredData.cid : person.cid;
490
+ if (_applicantSame.value && insuredData.eleOrderList) {
491
+ var insuredEle = insuredData.eleOrderList.find(function (e) {
492
+ return e.key === ele.key;
493
+ });
494
+ if (insuredEle) {
495
+ ele.value = insuredEle.value;
496
+ }
497
+ }
498
+ });
499
+ }
500
+ }
501
+ // 选中投保人才能选投保人配偶
502
+ // 配偶性别根据投保人性别取反
503
+ if (person.key === 'spouseInfo' && person.eleOrderList) {
504
+ person.eleOrderList.forEach(function (ele) {
505
+ if (ele.key === 'title') {
506
+ ele.isDisabled = !applicantInfo.title;
507
+ ele.value = applicantInfo.title ? ele.value : false;
508
+ }
509
+ if (ele.key === 'sex') {
510
+ ele.value = applicantInfo.sex === 1 ? 2 : 1;
511
+ }
512
+ });
513
+ }
514
+ setPersonAgeOptions(person);
515
+ });
516
+ return allPersonsData;
517
+ }
518
+
519
+ /**
520
+ * **计算计划书年龄范围,即被保人年龄范围**
521
+ * @ignore
522
+ * @author Lizhao <lz@winbaoxian.com>
523
+ * @date 2022-04-26
524
+ * @param {IPbInput} inputData 必传。计划书数据
525
+ * @param {object} verifyData 必传。计划书校验条件
526
+ * @returns {object} 年龄范围
527
+ */
528
+ function getInsuredAgeRange(inputData, verifyData) {
529
+ var ageRange = {
530
+ insuredInfo1: [],
531
+ //被保人年龄范围(男)
532
+ insuredInfo2: [] //被保人年龄范围(女)
533
+ };
534
+ if (!inputData || !inputData.productGroupList || !inputData.personData || !inputData.personData.personOrderList || !verifyData) {
535
+ return ageRange;
536
+ }
537
+ inputData.productGroupList.forEach(function (group) {
538
+ if (!group.prodOrderList) {
539
+ return;
540
+ }
541
+ //计划书是否有有效必选产品(默认个数内、必选、非组合险)
542
+ var hasRequiredProd = group.prodOrderList.some(function (prod, i) {
543
+ return i < group.defNum && !!prod.required && !prod.isTemp;
544
+ });
545
+ group.prodOrderList.forEach(function (prod) {
546
+ // 组合险不统计年龄范围
547
+ if (!verifyData[prod.key] || prod.isTemp || !prod.mulInsOrderList) {
548
+ return;
549
+ }
550
+ prod.mulInsOrderList.forEach(function (ins) {
551
+ // 险种是否有费率
552
+ if (!verifyData[prod.key][ins.key]) {
553
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
554
+ console.log("".concat(prod.titleName, "-").concat(prod.key, " -> ").concat(ins.name, "-").concat(ins.key, ": \u5F53\u524D\u9669\u79CD\u6CA1\u6709\u8D39\u7387\u8868"));
555
+ }
556
+ return;
557
+ }
558
+ // 产品中是否有必选险种
559
+ var hasRequiredIns = prod.mulInsOrderList.some(function (ins) {
560
+ return !!ins.required;
561
+ });
562
+ //无必选产品,根据所有产品的最小值,最大值确定;有必选产品, 根据必选产品的最小值,最大值确定
563
+ //无必选险种,根据所有险种的最小值,最大值确定;如果有必选险种:根据必选险种的最小值,最大值确定
564
+ if ((!ins.huomian || ins.huomian === 'beiHuomian') && (!hasRequiredProd || prod.required) && (!hasRequiredIns || ins.required)) {
565
+ verifyData[prod.key][ins.key].forEach(function (condi) {
566
+ var currentAgeRange = ageRange["insuredInfo".concat(condi.sex)];
567
+ ageRange["insuredInfo".concat(condi.sex)] = [Math.min(currentAgeRange[0] === undefined ? Infinity : currentAgeRange[0], condi.minAge), Math.max(currentAgeRange[1] === undefined ? -Infinity : currentAgeRange[1], condi.maxAge)];
568
+ });
569
+ }
570
+ });
571
+ });
572
+ });
573
+ return ageRange;
574
+ }
575
+
576
+ /**
577
+ * **生成年龄的选项**
578
+ * - 根据性别,转换年龄选项
579
+ * - 更新生日的默认值、最大、最小取值范围
580
+ * @ignore
581
+ * @author Lizhao <lz@winbaoxian.com>
582
+ * @date 2022-04-26
583
+ * @param {object} personData 必传。人员数据(单个)
584
+ * @returns {object} 人员数据(单个)
585
+ */
586
+ function setPersonAgeOptions(personData) {
587
+ if (!personData || !personData.eleOrderList) {
588
+ return personData;
589
+ }
590
+ var personForm = convertEleOrderListToObj(personData);
591
+ personData.eleOrderList.forEach(function (ele) {
592
+ if (ele.key === 'age') {
593
+ var options = [];
594
+ var opts = personForm.sex == 2 && ele.optsF && ele.optsF.length ? ele.optsF : ele.opts;
595
+ for (var k = opts[0]; k <= opts[1]; k++) {
596
+ options.push({
597
+ val: k,
598
+ desc: "".concat(k, "\u5C81")
599
+ });
600
+ }
601
+ var birthday = personData.eleOrderList.find(function (e) {
602
+ return e.key === 'birthday';
603
+ });
604
+ if (options.length && options.every(function (o) {
605
+ return o.val !== ele.value;
606
+ })) {
607
+ ele.value = options[0].val;
608
+ if (birthday) {
609
+ birthday.value = null;
610
+ }
611
+ }
612
+ ele.options = options;
613
+ if (birthday) {
614
+ birthday.defaulValue = new Date(new Date().getFullYear() - Number(ele.value), new Date().getMonth(), new Date().getDate());
615
+ birthday.minDate = new Date(new Date().getFullYear() - opts[1] - 1, new Date().getMonth(), new Date().getDate() + 1);
616
+ birthday.maxDate = new Date(new Date().getFullYear() - opts[0], new Date().getMonth(), new Date().getDate());
617
+ }
618
+ }
619
+ });
620
+ return personData;
621
+ }
622
+
623
+ /**
624
+ * **转换人员数据**
625
+ * @author Lizhao <lz@winbaoxian.com>
626
+ * @date 2022-04-26
627
+ * @param {IPbPersons} allPersonsData 必传。所有人员数据
628
+ * @param {null|string} type 可不传。
629
+ * 不传,人员数据按原结构返回;
630
+ * 字符串,返回指定的人员数据;
631
+ * 数组,以数组形式,返回多个人员数据。
632
+ * @returns {any} 人员数据(单个或多个)
633
+ */
634
+ function convertPersonData(allPersonsData) {
635
+ var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
636
+ var cPersonData = {};
637
+ if (allPersonsData) {
638
+ //转换收件人信息
639
+ if (allPersonsData.recipientInfo) {
640
+ cPersonData.recipientInfo = convertEleOrderListToObj(allPersonsData.recipientInfo);
641
+ }
642
+ //转换被、投、投保人配偶的信息
643
+ if (allPersonsData.personOrderList) {
644
+ allPersonsData.personOrderList.forEach(function (person) {
645
+ cPersonData[person.key] = convertEleOrderListToObj(person);
646
+ });
647
+ }
648
+ }
649
+ if (!type) {
650
+ return {
651
+ recipientInfo: cPersonData.recipientInfo,
652
+ personOrderList: allPersonsData.personOrderList && allPersonsData.personOrderList.map(function (p) {
653
+ return p.key;
654
+ }).map(function (p) {
655
+ return cPersonData[p];
656
+ })
657
+ };
658
+ }
659
+ if (typeof type === 'string') {
660
+ return cPersonData[type];
661
+ }
662
+ if (type.constructor === Array) {
663
+ var temp = [];
664
+ for (var k in cPersonData) {
665
+ if (type.indexOf(k) !== -1) {
666
+ temp.push(cPersonData[k]);
667
+ }
668
+ }
669
+ return temp;
670
+ }
671
+ }
672
+
673
+ function toPrimitive(t, r) {
674
+ if ("object" != _typeof$1(t) || !t) return t;
675
+ var e = t[Symbol.toPrimitive];
676
+ if (void 0 !== e) {
677
+ var i = e.call(t, r);
678
+ if ("object" != _typeof$1(i)) return i;
679
+ throw new TypeError("@@toPrimitive must return a primitive value.");
680
+ }
681
+ return ("string" === r ? String : Number)(t);
682
+ }
683
+
684
+ function toPropertyKey(t) {
685
+ var i = toPrimitive(t, "string");
686
+ return "symbol" == _typeof$1(i) ? i : i + "";
687
+ }
688
+
689
+ function _defineProperty(e, r, t) {
690
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
691
+ value: t,
692
+ enumerable: true,
693
+ configurable: true,
694
+ writable: true
695
+ }) : e[r] = t, e;
696
+ }
697
+
698
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
699
+ try {
700
+ var i = n[a](c),
701
+ u = i.value;
702
+ } catch (n) {
703
+ return void e(n);
704
+ }
705
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
706
+ }
707
+ function _asyncToGenerator(n) {
708
+ return function () {
709
+ var t = this,
710
+ e = arguments;
711
+ return new Promise(function (r, o) {
712
+ var a = n.apply(t, e);
713
+ function _next(n) {
714
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
715
+ }
716
+ function _throw(n) {
717
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
718
+ }
719
+ _next(void 0);
720
+ });
721
+ };
722
+ }
723
+
724
+ function getDefaultExportFromCjs (x) {
725
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
726
+ }
727
+
728
+ var regeneratorRuntime$1 = {exports: {}};
729
+
730
+ var OverloadYield = {exports: {}};
731
+
732
+ var hasRequiredOverloadYield;
733
+
734
+ function requireOverloadYield () {
735
+ if (hasRequiredOverloadYield) return OverloadYield.exports;
736
+ hasRequiredOverloadYield = 1;
737
+ (function (module) {
738
+ function _OverloadYield(e, d) {
739
+ this.v = e, this.k = d;
740
+ }
741
+ module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
742
+ } (OverloadYield));
743
+ return OverloadYield.exports;
744
+ }
745
+
746
+ var regenerator$1 = {exports: {}};
747
+
748
+ var regeneratorDefine = {exports: {}};
749
+
750
+ var hasRequiredRegeneratorDefine;
751
+
752
+ function requireRegeneratorDefine () {
753
+ if (hasRequiredRegeneratorDefine) return regeneratorDefine.exports;
754
+ hasRequiredRegeneratorDefine = 1;
755
+ (function (module) {
756
+ function _regeneratorDefine(e, r, n, t) {
757
+ var i = Object.defineProperty;
758
+ try {
759
+ i({}, "", {});
760
+ } catch (e) {
761
+ i = 0;
762
+ }
763
+ module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {
764
+ function o(r, n) {
765
+ _regeneratorDefine(e, r, function (e) {
766
+ return this._invoke(r, n, e);
767
+ });
768
+ }
769
+ r ? i ? i(e, r, {
770
+ value: n,
771
+ enumerable: !t,
772
+ configurable: !t,
773
+ writable: !t
774
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
775
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t);
776
+ }
777
+ module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
778
+ } (regeneratorDefine));
779
+ return regeneratorDefine.exports;
780
+ }
781
+
782
+ var hasRequiredRegenerator$1;
783
+
784
+ function requireRegenerator$1 () {
785
+ if (hasRequiredRegenerator$1) return regenerator$1.exports;
786
+ hasRequiredRegenerator$1 = 1;
787
+ (function (module) {
788
+ var regeneratorDefine = requireRegeneratorDefine();
789
+ function _regenerator() {
790
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
791
+ var e,
792
+ t,
793
+ r = "function" == typeof Symbol ? Symbol : {},
794
+ n = r.iterator || "@@iterator",
795
+ o = r.toStringTag || "@@toStringTag";
796
+ function i(r, n, o, i) {
797
+ var c = n && n.prototype instanceof Generator ? n : Generator,
798
+ u = Object.create(c.prototype);
799
+ return regeneratorDefine(u, "_invoke", function (r, n, o) {
800
+ var i,
801
+ c,
802
+ u,
803
+ f = 0,
804
+ p = o || [],
805
+ y = false,
806
+ G = {
807
+ p: 0,
808
+ n: 0,
809
+ v: e,
810
+ a: d,
811
+ f: d.bind(e, 4),
812
+ d: function d(t, r) {
813
+ return i = t, c = 0, u = e, G.n = r, a;
814
+ }
815
+ };
816
+ function d(r, n) {
817
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
818
+ var o,
819
+ i = p[t],
820
+ d = G.p,
821
+ l = i[2];
822
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
823
+ }
824
+ if (o || r > 1) return a;
825
+ throw y = true, n;
826
+ }
827
+ return function (o, p, l) {
828
+ if (f > 1) throw TypeError("Generator is already running");
829
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
830
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
831
+ try {
832
+ if (f = 2, i) {
833
+ if (c || (o = "next"), t = i[o]) {
834
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
835
+ if (!t.done) return t;
836
+ u = t.value, c < 2 && (c = 0);
837
+ } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
838
+ i = e;
839
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
840
+ } catch (t) {
841
+ i = e, c = 1, u = t;
842
+ } finally {
843
+ f = 1;
844
+ }
845
+ }
846
+ return {
847
+ value: t,
848
+ done: y
849
+ };
850
+ };
851
+ }(r, o, i), true), u;
852
+ }
853
+ var a = {};
854
+ function Generator() {}
855
+ function GeneratorFunction() {}
856
+ function GeneratorFunctionPrototype() {}
857
+ t = Object.getPrototypeOf;
858
+ var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {
859
+ return this;
860
+ }), t),
861
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
862
+ function f(e) {
863
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
864
+ }
865
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () {
866
+ return this;
867
+ }), regeneratorDefine(u, "toString", function () {
868
+ return "[object Generator]";
869
+ }), (module.exports = _regenerator = function _regenerator() {
870
+ return {
871
+ w: i,
872
+ m: f
873
+ };
874
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
875
+ }
876
+ module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
877
+ } (regenerator$1));
878
+ return regenerator$1.exports;
879
+ }
880
+
881
+ var regeneratorAsync = {exports: {}};
882
+
883
+ var regeneratorAsyncGen = {exports: {}};
884
+
885
+ var regeneratorAsyncIterator = {exports: {}};
886
+
887
+ var hasRequiredRegeneratorAsyncIterator;
888
+
889
+ function requireRegeneratorAsyncIterator () {
890
+ if (hasRequiredRegeneratorAsyncIterator) return regeneratorAsyncIterator.exports;
891
+ hasRequiredRegeneratorAsyncIterator = 1;
892
+ (function (module) {
893
+ var OverloadYield = requireOverloadYield();
894
+ var regeneratorDefine = requireRegeneratorDefine();
895
+ function AsyncIterator(t, e) {
896
+ function n(r, o, i, f) {
897
+ try {
898
+ var c = t[r](o),
899
+ u = c.value;
900
+ return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {
901
+ n("next", t, i, f);
902
+ }, function (t) {
903
+ n("throw", t, i, f);
904
+ }) : e.resolve(u).then(function (t) {
905
+ c.value = t, i(c);
906
+ }, function (t) {
907
+ return n("throw", t, i, f);
908
+ });
909
+ } catch (t) {
910
+ f(t);
911
+ }
912
+ }
913
+ var r;
914
+ this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
915
+ return this;
916
+ })), regeneratorDefine(this, "_invoke", function (t, o, i) {
917
+ function f() {
918
+ return new e(function (e, r) {
919
+ n(t, i, e, r);
920
+ });
921
+ }
922
+ return r = r ? r.then(f, f) : f();
923
+ }, true);
924
+ }
925
+ module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
926
+ } (regeneratorAsyncIterator));
927
+ return regeneratorAsyncIterator.exports;
928
+ }
929
+
930
+ var hasRequiredRegeneratorAsyncGen;
931
+
932
+ function requireRegeneratorAsyncGen () {
933
+ if (hasRequiredRegeneratorAsyncGen) return regeneratorAsyncGen.exports;
934
+ hasRequiredRegeneratorAsyncGen = 1;
935
+ (function (module) {
936
+ var regenerator = requireRegenerator$1();
937
+ var regeneratorAsyncIterator = requireRegeneratorAsyncIterator();
938
+ function _regeneratorAsyncGen(r, e, t, o, n) {
939
+ return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);
940
+ }
941
+ module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
942
+ } (regeneratorAsyncGen));
943
+ return regeneratorAsyncGen.exports;
944
+ }
945
+
946
+ var hasRequiredRegeneratorAsync;
947
+
948
+ function requireRegeneratorAsync () {
949
+ if (hasRequiredRegeneratorAsync) return regeneratorAsync.exports;
950
+ hasRequiredRegeneratorAsync = 1;
951
+ (function (module) {
952
+ var regeneratorAsyncGen = requireRegeneratorAsyncGen();
953
+ function _regeneratorAsync(n, e, r, t, o) {
954
+ var a = regeneratorAsyncGen(n, e, r, t, o);
955
+ return a.next().then(function (n) {
956
+ return n.done ? n.value : a.next();
957
+ });
958
+ }
959
+ module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
960
+ } (regeneratorAsync));
961
+ return regeneratorAsync.exports;
962
+ }
963
+
964
+ var regeneratorKeys = {exports: {}};
965
+
966
+ var hasRequiredRegeneratorKeys;
967
+
968
+ function requireRegeneratorKeys () {
969
+ if (hasRequiredRegeneratorKeys) return regeneratorKeys.exports;
970
+ hasRequiredRegeneratorKeys = 1;
971
+ (function (module) {
972
+ function _regeneratorKeys(e) {
973
+ var n = Object(e),
974
+ r = [];
975
+ for (var t in n) r.unshift(t);
976
+ return function e() {
977
+ for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = false, e;
978
+ return e.done = true, e;
979
+ };
980
+ }
981
+ module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
982
+ } (regeneratorKeys));
983
+ return regeneratorKeys.exports;
984
+ }
985
+
986
+ var regeneratorValues = {exports: {}};
987
+
988
+ var _typeof = {exports: {}};
989
+
990
+ var hasRequired_typeof;
991
+
992
+ function require_typeof () {
993
+ if (hasRequired_typeof) return _typeof.exports;
994
+ hasRequired_typeof = 1;
995
+ (function (module) {
996
+ function _typeof(o) {
997
+ "@babel/helpers - typeof";
998
+
999
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
1000
+ return typeof o;
1001
+ } : function (o) {
1002
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
1003
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
1004
+ }
1005
+ module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
1006
+ } (_typeof));
1007
+ return _typeof.exports;
1008
+ }
1009
+
1010
+ var hasRequiredRegeneratorValues;
1011
+
1012
+ function requireRegeneratorValues () {
1013
+ if (hasRequiredRegeneratorValues) return regeneratorValues.exports;
1014
+ hasRequiredRegeneratorValues = 1;
1015
+ (function (module) {
1016
+ var _typeof = require_typeof()["default"];
1017
+ function _regeneratorValues(e) {
1018
+ if (null != e) {
1019
+ var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
1020
+ r = 0;
1021
+ if (t) return t.call(e);
1022
+ if ("function" == typeof e.next) return e;
1023
+ if (!isNaN(e.length)) return {
1024
+ next: function next() {
1025
+ return e && r >= e.length && (e = void 0), {
1026
+ value: e && e[r++],
1027
+ done: !e
1028
+ };
1029
+ }
1030
+ };
1031
+ }
1032
+ throw new TypeError(_typeof(e) + " is not iterable");
1033
+ }
1034
+ module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
1035
+ } (regeneratorValues));
1036
+ return regeneratorValues.exports;
1037
+ }
1038
+
1039
+ var hasRequiredRegeneratorRuntime;
1040
+
1041
+ function requireRegeneratorRuntime () {
1042
+ if (hasRequiredRegeneratorRuntime) return regeneratorRuntime$1.exports;
1043
+ hasRequiredRegeneratorRuntime = 1;
1044
+ (function (module) {
1045
+ var OverloadYield = requireOverloadYield();
1046
+ var regenerator = requireRegenerator$1();
1047
+ var regeneratorAsync = requireRegeneratorAsync();
1048
+ var regeneratorAsyncGen = requireRegeneratorAsyncGen();
1049
+ var regeneratorAsyncIterator = requireRegeneratorAsyncIterator();
1050
+ var regeneratorKeys = requireRegeneratorKeys();
1051
+ var regeneratorValues = requireRegeneratorValues();
1052
+ function _regeneratorRuntime() {
1053
+
1054
+ var r = regenerator(),
1055
+ e = r.m(_regeneratorRuntime),
1056
+ t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
1057
+ function n(r) {
1058
+ var e = "function" == typeof r && r.constructor;
1059
+ return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
1060
+ }
1061
+ var o = {
1062
+ "throw": 1,
1063
+ "return": 2,
1064
+ "break": 3,
1065
+ "continue": 3
1066
+ };
1067
+ function a(r) {
1068
+ var e, t;
1069
+ return function (n) {
1070
+ e || (e = {
1071
+ stop: function stop() {
1072
+ return t(n.a, 2);
1073
+ },
1074
+ "catch": function _catch() {
1075
+ return n.v;
1076
+ },
1077
+ abrupt: function abrupt(r, e) {
1078
+ return t(n.a, o[r], e);
1079
+ },
1080
+ delegateYield: function delegateYield(r, o, a) {
1081
+ return e.resultName = o, t(n.d, regeneratorValues(r), a);
1082
+ },
1083
+ finish: function finish(r) {
1084
+ return t(n.f, r);
1085
+ }
1086
+ }, t = function t(r, _t, o) {
1087
+ n.p = e.prev, n.n = e.next;
1088
+ try {
1089
+ return r(_t, o);
1090
+ } finally {
1091
+ e.next = n.n;
1092
+ }
1093
+ }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
1094
+ try {
1095
+ return r.call(this, e);
1096
+ } finally {
1097
+ n.p = e.prev, n.n = e.next;
1098
+ }
1099
+ };
1100
+ }
1101
+ return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
1102
+ return {
1103
+ wrap: function wrap(e, t, n, o) {
1104
+ return r.w(a(e), t, n, o && o.reverse());
1105
+ },
1106
+ isGeneratorFunction: n,
1107
+ mark: r.m,
1108
+ awrap: function awrap(r, e) {
1109
+ return new OverloadYield(r, e);
1110
+ },
1111
+ AsyncIterator: regeneratorAsyncIterator,
1112
+ async: function async(r, e, t, o, u) {
1113
+ return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);
1114
+ },
1115
+ keys: regeneratorKeys,
1116
+ values: regeneratorValues
1117
+ };
1118
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
1119
+ }
1120
+ module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
1121
+ } (regeneratorRuntime$1));
1122
+ return regeneratorRuntime$1.exports;
1123
+ }
1124
+
1125
+ var regenerator;
1126
+ var hasRequiredRegenerator;
1127
+
1128
+ function requireRegenerator () {
1129
+ if (hasRequiredRegenerator) return regenerator;
1130
+ hasRequiredRegenerator = 1;
1131
+ // TODO(Babel 8): Remove this file.
1132
+
1133
+ var runtime = requireRegeneratorRuntime()();
1134
+ regenerator = runtime;
1135
+
1136
+ // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
1137
+ try {
1138
+ regeneratorRuntime = runtime;
1139
+ } catch (accidentalStrictMode) {
1140
+ if (typeof globalThis === "object") {
1141
+ globalThis.regeneratorRuntime = runtime;
1142
+ } else {
1143
+ Function("r", "regeneratorRuntime = r")(runtime);
1144
+ }
1145
+ }
1146
+ return regenerator;
1147
+ }
1148
+
1149
+ var regeneratorExports = requireRegenerator();
1150
+ var _regeneratorRuntime = /*@__PURE__*/getDefaultExportFromCjs(regeneratorExports);
1151
+
1152
+ var hostname = window && window.location && window.location.hostname || '';
1153
+ var IS_PRODUCT_ENV = hostname.search(/(winbaoxian|ai-baoxiaozhu)\.com/) !== -1;
1154
+ hostname.search(/(winbaoxian|ai-baoxiaozhu)\.cn/) !== -1;
1155
+ hostname.search(/localhost|192\.168|127\.0\.0\.1|dev\.winbaoxian\.cn/) !== -1;
1156
+ hostname.includes("pbf-uat.");
1157
+ var IS_ENABLE_DEBUG = !IS_PRODUCT_ENV;
1158
+ if (IS_ENABLE_DEBUG) {
1159
+ console.error("\u975E\u7EBF\u4E0A\u73AF\u5883\uFF0C\u9ED8\u8BA4\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F");
1160
+ }
1161
+ var topDomain = IS_PRODUCT_ENV ? 'com' : 'cn';
1162
+ var secondDomain = hostname.includes('ai-baoxiaozhu') ? 'ai-baoxiaozhu' : 'winbaoxian';
1163
+ var MAIN_DOMAIN = "".concat(secondDomain, ".").concat(topDomain);
1164
+ var APP_HOSTNAME = "https://app.".concat(MAIN_DOMAIN);
1165
+ getUrlParams();
1166
+ function getUrlParams(url) {
1167
+ var _url = location.search || '';
1168
+ var _searchStr = _url.split('?')[1];
1169
+ return _searchStr ? QS.parse(_searchStr) : {};
1170
+ }
1171
+
1172
+ function _arrayLikeToArray(r, a) {
1173
+ (null == a || a > r.length) && (a = r.length);
1174
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
1175
+ return n;
1176
+ }
1177
+
1178
+ function _arrayWithoutHoles(r) {
1179
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
1180
+ }
1181
+
1182
+ function _iterableToArray(r) {
1183
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
1184
+ }
1185
+
1186
+ function _unsupportedIterableToArray(r, a) {
1187
+ if (r) {
1188
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
1189
+ var t = {}.toString.call(r).slice(8, -1);
1190
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
1191
+ }
1192
+ }
1193
+
1194
+ function _nonIterableSpread() {
1195
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1196
+ }
1197
+
1198
+ function _toConsumableArray(r) {
1199
+ return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
1200
+ }
1201
+
1202
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1203
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1204
+
1205
+ /**
1206
+ * **初始化险种数据**
1207
+ * - 补充一些显示文案
1208
+ * - 转换元素的选项字段
1209
+ * - 预设一些后面可能用到的字段,如追加领取、减保领取
1210
+ * @author Lizhao <lz@winbaoxian.com>
1211
+ * @date 2022-04-26
1212
+ * @param {IProdInsurance} insData 必传。险种数据(单个)
1213
+ * @returns {void}
1214
+ */
1215
+ function initInsuranceData(insData) {
1216
+ if (!insData || !insData.eleOrderList) {
1217
+ return;
1218
+ }
1219
+ if (insData.account && insData.accountData && insData.accountData.accountPart) {
1220
+ insData.accountData.addAndTakeData = insData.accountData.addAndTakeData || [];
1221
+ if (!insData.accountData.addAndTakeData.length) {
1222
+ insData.accountData.addAndTakeData.push({
1223
+ key: 'add',
1224
+ adjustData: []
1225
+ });
1226
+ if (['addAndTake', 'take'].includes(insData.accountData.accountPart)) {
1227
+ insData.accountData.addAndTakeData.push({
1228
+ key: 'take',
1229
+ adjustData: []
1230
+ });
1231
+ }
1232
+ }
1233
+ }
1234
+ if (insData.reduceBaof && !insData.reduceBaofData) {
1235
+ insData.reduceBaofData = {
1236
+ accountPart: 'take',
1237
+ addAndTakeData: [{
1238
+ key: 'take',
1239
+ adjustData: []
1240
+ }]
1241
+ };
1242
+ }
1243
+ insData.eleOrderList.forEach(function (e) {
1244
+ switch (e.key) {
1245
+ case 'title':
1246
+ e.isDisabled = e.isDisabled || null;
1247
+ e.isHide = e.isHide || null;
1248
+ break;
1249
+ case 'baoe':
1250
+ e.placeholder = e.placeholder || '请输入保额';
1251
+ break;
1252
+ case 'baof':
1253
+ e.placeholder = e.placeholder || '请输入保费';
1254
+ break;
1255
+ }
1256
+ if (e.optConf && e.optConf.length && e.optConf[1]) {
1257
+ var options = [];
1258
+ for (var i = e.optConf[0]; i <= e.optConf[1]; i += e.optConf[2] && e.optConf[2] && e.optConf[2].step || 1) {
1259
+ options.push({
1260
+ val: e.optConf[2] && e.optConf[2].valfix ? "".concat(i).concat(e.optConf[2].valfix) : i,
1261
+ desc: e.optConf[2] && e.optConf[2].desc ? e.optConf[2].desc.replace(/{{&&}}/, i) : i
1262
+ });
1263
+ }
1264
+ e.opts = options;
1265
+ }
1266
+ if (e.opts && e.opts.length) {
1267
+ e.opts = e.opts.map(function (o) {
1268
+ return _objectSpread$1(_objectSpread$1({}, o), {}, {
1269
+ desc: o.desc || o.val,
1270
+ isHide: o.isHide || null,
1271
+ isDisabled: o.isDisabled || null,
1272
+ isInvalid: o.isInvalid || null
1273
+ });
1274
+ });
1275
+ }
1276
+ });
1277
+ }
1278
+
1279
+ /**
1280
+ * **处理险种数据**
1281
+ * - 初始化元素的校验规则
1282
+ * - 处理保额保费互算、保额和计划的逻辑关系
1283
+ * @author Lizhao <lz@winbaoxian.com>
1284
+ * @date 2022-04-26
1285
+ * @param {IProdInsurance} insData 必传。险种数据(单个)
1286
+ * @param {IPbProduct} productData 必传。产品数据(单个)
1287
+ * @returns {IProdInsurance} 险种数据(单个)
1288
+ */
1289
+ function insuranceDataHandler(insData, productData) {
1290
+ if (!insData || !insData.eleOrderList) {
1291
+ return insData;
1292
+ }
1293
+ if (insData.reduceBaof) {
1294
+ insData.reduceBaofData = insData.reduceBaofData || null;
1295
+ }
1296
+ insData.eleOrderList.forEach(function (ele) {
1297
+ ele.isDisabled = ele.isDisabled || null;
1298
+ ele.isHide = ele.isHide || null;
1299
+ ele.isIgnoreValidate = ele.isIgnoreValidate || null;
1300
+ ele.rules = _toConsumableArray(initElementValidateRules(ele, productData));
1301
+ });
1302
+ var calMethod = insData.eleOrderList.find(function (e) {
1303
+ return e.key === 'calMethod';
1304
+ });
1305
+ var baoe = insData.eleOrderList.find(function (e) {
1306
+ return e.key === 'baoe';
1307
+ });
1308
+ var baof = insData.eleOrderList.find(function (e) {
1309
+ return e.key === 'baof';
1310
+ });
1311
+ var plan = insData.eleOrderList.find(function (e) {
1312
+ return e.key === 'plan';
1313
+ });
1314
+ // 同时有保额和计划时,若保额被隐藏则显示计划 2019.09.11)
1315
+ if (!calMethod && baoe && plan) {
1316
+ insData.showPlanDesc = !!baoe.isHide;
1317
+ }
1318
+ // 切换保额保费互算问题 By Lizhao@2020.11.25
1319
+ if (calMethod && baoe && baof) {
1320
+ baoe.isHide = calMethod.value !== 'baoe2baof';
1321
+ baof.isHide = calMethod.value === 'baoe2baof';
1322
+ }
1323
+ return insData;
1324
+ }
1325
+
1326
+ /**
1327
+ * **初始化元素的校验规则**
1328
+ * - 是否必填
1329
+ * - 取值范围
1330
+ * - 倍数限制
1331
+ * - 取值比较
1332
+ * @ignore
1333
+ * @author Lizhao <lz@winbaoxian.com>
1334
+ * @date 2022-04-26
1335
+ * @param {IInsElement} ele 必传。元素数据(单个)
1336
+ * @param {IPbProduct} productData 可不传。产品数据(单个)
1337
+ * @returns {object} 元素的校验规则
1338
+ */
1339
+ function initElementValidateRules(ele, productData) {
1340
+ var mulInsOrderList = productData && productData.mulInsOrderList ? productData.mulInsOrderList : [];
1341
+ var insurance0 = mulInsOrderList && mulInsOrderList.length ? mulInsOrderList.find(function (ins) {
1342
+ return ins.key !== 'common';
1343
+ }) : null;
1344
+ var insurance0Name = insurance0 && insurance0.name ? insurance0.name : '';
1345
+ var isPensionInsurance = insurance0Name.match(/个养|个人养老/);
1346
+ var rules = [];
1347
+ // 必填及正则校验
1348
+ if (['cmCommonInput'].indexOf(String(ele.componentName)) !== -1) {
1349
+ rules = [{
1350
+ required: ele.required !== false,
1351
+ message: "\u8BF7\u8F93\u5165".concat(ele.labelName || '', "\u503C")
1352
+ }, {
1353
+ pattern: ele.regExp ? eval(String(ele.regExp)) : ele.key === 'num' ? /^\d*(\.\d{0,2})?$/ : /^\d*$/,
1354
+ message: ele.regExpMessage || (ele.regExp ? '输入不合法,请重新输入' : ele.key === 'num' ? '请输入2位小数的数值' : '请输入整数值')
1355
+ }];
1356
+ }
1357
+
1358
+ // 取值范围校验
1359
+ var min = 0;
1360
+ var max = 0;
1361
+ if (ele.min && !isNaN(Number(ele.min))) {
1362
+ min = ele.min;
1363
+ }
1364
+ if (ele.max && !isNaN(Number(ele.max))) {
1365
+ max = ele.max;
1366
+ }
1367
+ if (min || max) {
1368
+ var message = '';
1369
+ if (min && max) {
1370
+ message = "\u8BF7\u8F93\u5165".concat(converUnit10000(min), "~").concat(converUnit10000(max), "\u4E4B\u95F4\u7684\u6570\u503C");
1371
+ } else if (!min) {
1372
+ message = "\u8BF7\u8F93\u5165\u4E0D\u5927\u4E8E".concat(converUnit10000(max), "\u7684\u6570\u503C");
1373
+ // 个人养老险,保费的最大金额限制,提示文案改成:“个人养老金,最高保费${max}元”。From hyw
1374
+ if (isPensionInsurance && ele.key === 'baof') {
1375
+ message = "\u4E2A\u4EBA\u517B\u8001\u91D1\uFF0C\u6700\u9AD8\u4FDD\u8D39".concat(converUnit10000(max), "\u5143");
1376
+ }
1377
+ } else if (!max) {
1378
+ message = "\u8BF7\u8F93\u5165\u4E0D\u5C0F\u4E8E".concat(converUnit10000(min), "\u7684\u6570\u503C");
1379
+ }
1380
+ rules.push({
1381
+ type: 'number',
1382
+ min: min || -Infinity,
1383
+ max: max || Infinity,
1384
+ message: message,
1385
+ validator: function validator(value, rule) {
1386
+ return !value || value >= rule.min && value <= rule.max;
1387
+ }
1388
+ });
1389
+ }
1390
+
1391
+ // 取值倍数校验
1392
+ if (ele.multi && !isNaN(Number(ele.multi))) {
1393
+ rules.push({
1394
+ multiple: ele.multi,
1395
+ message: "\u8BF7\u8F93\u5165".concat(ele.multi, "\u500D\u6570"),
1396
+ validator: function validator(value, rule) {
1397
+ return !value || !(value % rule.multiple);
1398
+ }
1399
+ });
1400
+ }
1401
+
1402
+ // 取值对比
1403
+ if (ele.compareItem && ele.compareItem.length && ele.compareItem.length >= 3 && mulInsOrderList) {
1404
+ var item1 = ele.compareItem[0].match(/(.{1,})\.(.{1,})/);
1405
+ var item2 = ele.compareItem[2].match(/(.{1,})\.(.{1,})/);
1406
+ var insurance1, insurance2, insTitle1, insTitle2, itemValue1, itemValue2;
1407
+ if (item1 && item2) {
1408
+ // 查找对应的险种
1409
+ insurance1 = mulInsOrderList.find(function (ins) {
1410
+ return ins.key + '' === item1[1];
1411
+ });
1412
+ insurance2 = mulInsOrderList.find(function (ins) {
1413
+ return ins.key + '' === item2[1];
1414
+ });
1415
+ }
1416
+ if (insurance1 && insurance1.eleOrderList) {
1417
+ // 险种选中时,获取险种对应元素的值
1418
+ insTitle1 = insurance1.eleOrderList.find(function (e) {
1419
+ return e.key === 'title';
1420
+ });
1421
+ if (insTitle1 && insTitle1.value) {
1422
+ itemValue1 = insurance1.eleOrderList.find(function (e) {
1423
+ return e.key === item1[2];
1424
+ });
1425
+ }
1426
+ }
1427
+ if (insurance2 && insurance2.eleOrderList) {
1428
+ insTitle2 = insurance2.eleOrderList.find(function (e) {
1429
+ return e.key === 'title';
1430
+ });
1431
+ if (insTitle2 && insTitle2.value) {
1432
+ itemValue2 = insurance2.eleOrderList.find(function (e) {
1433
+ return e.key === item2[2];
1434
+ });
1435
+ }
1436
+ }
1437
+ if (itemValue1 && itemValue1.value && itemValue2 && itemValue2.value && ele.compareItem[1]) {
1438
+ rules.push({
1439
+ value1: itemValue1.value,
1440
+ value2: itemValue2.value,
1441
+ operator: ele.compareItem[1],
1442
+ message: ele.compareItem[3] || '数据输入有误',
1443
+ validator: function validator(value, rule) {
1444
+ var bool = false;
1445
+ var value1 = rule.value1;
1446
+ var value2 = rule.value2;
1447
+ var operator = rule.operator;
1448
+ switch (operator) {
1449
+ case '<=':
1450
+ bool = value1 <= value2;
1451
+ break;
1452
+ case '>=':
1453
+ bool = value1 >= value2;
1454
+ break;
1455
+ case '<':
1456
+ bool = value1 < value2;
1457
+ break;
1458
+ case '>':
1459
+ bool = value1 > value2;
1460
+ break;
1461
+ default:
1462
+ bool = value1 <= value2;
1463
+ }
1464
+ return bool;
1465
+ }
1466
+ });
1467
+ }
1468
+ }
1469
+ return rules;
1470
+ }
1471
+
1472
+ /**
1473
+ * **处理险种中元素的限制**
1474
+ * @ignore
1475
+ * @author Lizhao <lz@winbaoxian.com>
1476
+ * @date 2022-04-26
1477
+ * @param {object} params
1478
+ * @param {IPbPerson} params.personOrderList 必传。转换后的人员信息,包括被保人、投保人、投保人配偶
1479
+ * @param {IProdInsurance} params.insData 必传。险种数据(单个)
1480
+ * @param {IInsElement} params.eleData 必传。元素数据(单个)
1481
+ * @returns {string} 校验结果
1482
+ */
1483
+ function restrictElementsInInsurance(_ref) {
1484
+ var personOrderList = _ref.personOrderList,
1485
+ insData = _ref.insData,
1486
+ eleData = _ref.eleData;
1487
+ var errorMsg = '';
1488
+ if (insData && eleData && eleData.restrictions) {
1489
+ var insuredInfo = personOrderList && personOrderList.find(function (p) {
1490
+ return p.key === 'insuredInfo';
1491
+ });
1492
+ var insuranceInfo = convertEleOrderListToObj(insData);
1493
+ var insVerifyData;
1494
+ if (insuredInfo) {
1495
+ insVerifyData = _objectSpread$1({
1496
+ sex: insuredInfo.sex,
1497
+ age: insuredInfo.age
1498
+ }, insuranceInfo);
1499
+ }
1500
+ // 过滤符合当前数据的限制条件
1501
+ // 如:0-10岁 -> 保险期间10、20年 -> 交费期间15、30年
1502
+ var eleRestricts = eleData.restrictions.filter(function (restrict) {
1503
+ return Object.keys(restrict).every(function (ele) {
1504
+ return (
1505
+ // 当前字段是age,且被保人年龄在指定范围
1506
+ ele === 'age' && insVerifyData[ele] && insVerifyData[ele] >= restrict[ele][0] && insVerifyData[ele] <= restrict[ele][1] ||
1507
+ // 当前字段是目标元素
1508
+ ele === eleData.key ||
1509
+ // 当前约束值是字符或者数字,且数据中有该值
1510
+ (restrict[ele].constructor === String || restrict[ele].constructor === Number) && insVerifyData[ele] == restrict[ele] ||
1511
+ // 当前约束值是数组,且数据中有一项值包含在数组中
1512
+ restrict[ele].constructor === Array && restrict[ele].find(function (r) {
1513
+ return r == insVerifyData[ele];
1514
+ })
1515
+ );
1516
+ });
1517
+ });
1518
+ var valRange = eleRestricts && eleRestricts[0] && eleRestricts[0][eleData.key];
1519
+ if (valRange && valRange.length) {
1520
+ if (eleData.opts) {
1521
+ eleData.opts.forEach(function (o) {
1522
+ if (!valRange.find(function (v) {
1523
+ return v.val === o.val;
1524
+ })) {
1525
+ o.isInvalid = true;
1526
+ }
1527
+ });
1528
+ if (!eleData.opts.find(function (opt) {
1529
+ return !opt.isHide && !opt.isDisabled && !opt.isInvalid && opt.val == eleData.value;
1530
+ })) {
1531
+ var opt = eleData.opts.find(function (o) {
1532
+ return o.val == eleData.value;
1533
+ });
1534
+ errorMsg = "\u5F53\u524D\u6761\u4EF6\u4E0B, \u6CA1\u6709".concat(eleData.labelName).concat(opt ? opt.desc : '', "\u9009\u9879, \u5DF2\u81EA\u52A8\u5207\u6362");
1535
+ }
1536
+ } else if (valRange[0] || valRange[1]) {
1537
+ var rangeMsg = "\u5F53\u524D\u6761\u4EF6\u4E0B, ".concat(insData.name, "\u7684").concat(eleData.labelName, "\u503C");
1538
+ var minMsg = "\u4E0D\u5F97\u5C0F\u4E8E".concat(converUnit10000(valRange[0]));
1539
+ var maxMsg = "\u4E0D\u5F97\u5927\u4E8E".concat(converUnit10000(valRange[1]));
1540
+ if (valRange[0] && valRange[1] && (eleData.value < valRange[0] || eleData.value > valRange[1])) {
1541
+ errorMsg = "".concat(rangeMsg).concat(minMsg, "\u4E14").concat(maxMsg);
1542
+ } else if (valRange[0] && eleData.value < valRange[0]) {
1543
+ errorMsg = "".concat(rangeMsg).concat(minMsg);
1544
+ } else if (valRange[1] && eleData.value > valRange[1]) {
1545
+ errorMsg = "".concat(rangeMsg).concat(maxMsg);
1546
+ }
1547
+ }
1548
+ }
1549
+ }
1550
+ return errorMsg;
1551
+ }
1552
+
1553
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1554
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1555
+
1556
+ /**
1557
+ * **初始化产品数据(单个)**
1558
+ * - 初始化调整保额数据
1559
+ * - 初始化险种数据
1560
+ * @author Lizhao <lz@winbaoxian.com>
1561
+ * @date 2022-04-26
1562
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
1563
+ * @returns {IPbProduct} 产品数据
1564
+ */
1565
+ function initProductData(prodData) {
1566
+ prodData.hadChoice = false;
1567
+ prodData.insShowArr = null;
1568
+ prodData.totalBaof = null;
1569
+ if (!prodData.mulInsOrderList) {
1570
+ return prodData;
1571
+ }
1572
+ // 初始化调整保额的数据
1573
+ if (prodData.mulInsOrderList.some(function (ins) {
1574
+ return !!ins.adjustBaoe;
1575
+ })) {
1576
+ prodData.adjustBaoeData = prodData.adjustBaoeData || null;
1577
+ }
1578
+ prodData.mulInsOrderList.forEach(function (ins) {
1579
+ initInsuranceData(ins);
1580
+ });
1581
+ return prodData;
1582
+ }
1583
+
1584
+ /**
1585
+ * **处理产品数据(单个)**
1586
+ * - 提取通用信息
1587
+ * - 处理险种数据
1588
+ * - 根据被、投保人信息,处理险种状态。如:险种是否可选
1589
+ * - 根据校验条件解析产品状态。如:险种是否可选、重新获取元素(下拉框、单选框)的可选项
1590
+ * - 创建或更新组合险(多个险种组合成一个险种)
1591
+ * - 根据被、投保人信息,判断该产品是否可以显示
1592
+ * @author Lizhao <lz@winbaoxian.com>
1593
+ * @date 2022-04-26
1594
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
1595
+ * @param {object} productVerifyData 必传。产品校验条件(单个)
1596
+ * @param {IPbPersons} personData 必传。人员信息,包括被保人、投保人、投保人配偶
1597
+ * @param {object} parmas 补充参数,目前只有 planbookId
1598
+ * @returns {IPbProduct} 产品数据(单个)
1599
+ */
1600
+ function productDataHandler(_x, _x2, _x3, _x4) {
1601
+ return _productDataHandler.apply(this, arguments);
1602
+ }
1603
+
1604
+ /**
1605
+ * **处理多被保人**
1606
+ * @author Lizhao <lz@winbaoxian.com>
1607
+ * @date 2024-02-28
1608
+ * @param {IPbPersons} personData 必传。人员信息,包括被保人、投保人、投保人配偶
1609
+ * @returns 人员信息
1610
+ */
1611
+ function _productDataHandler() {
1612
+ _productDataHandler = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(prodData, prodVerifyData, personData, parmas) {
1613
+ var productVerifyData, hasProduct, hasVerifyData, hasPersonData, personOrderList, _prodData$mulInsOrder3;
1614
+ return _regeneratorRuntime.wrap(function (_context) {
1615
+ while (1) switch (_context.prev = _context.next) {
1616
+ case 0:
1617
+ if (prodData) {
1618
+ _context.next = 1;
1619
+ break;
1620
+ }
1621
+ return _context.abrupt("return", prodData);
1622
+ case 1:
1623
+ productVerifyData = null;
1624
+ if (prodData.multipleInsured) {
1625
+ multipleInsuredHandler(personData);
1626
+ }
1627
+ if (!(prodData.feeValidateMode === 'single')) {
1628
+ _context.next = 3;
1629
+ break;
1630
+ }
1631
+ _context.next = 2;
1632
+ return getSingleInsurancesVerifyData(prodData, personData, parmas).catch(function () {});
1633
+ case 2:
1634
+ productVerifyData = _context.sent;
1635
+ _context.next = 4;
1636
+ break;
1637
+ case 3:
1638
+ productVerifyData = prodVerifyData;
1639
+ case 4:
1640
+ hasProduct = prodData.mulInsOrderList;
1641
+ hasVerifyData = productVerifyData && Object.keys(productVerifyData).length;
1642
+ hasPersonData = personData && personData.personOrderList;
1643
+ personOrderList = null;
1644
+ if (hasProduct && hasVerifyData && hasPersonData) {
1645
+ personOrderList = convertPersonData(personData, personData.personOrderList.map(function (p) {
1646
+ return p.key;
1647
+ }));
1648
+ setCommonInfo(prodData);
1649
+ (_prodData$mulInsOrder3 = prodData.mulInsOrderList) === null || _prodData$mulInsOrder3 === void 0 || _prodData$mulInsOrder3.forEach(function (ins, ii, insList) {
1650
+ var _ins$eleOrderList;
1651
+ insuranceDataHandler(ins, prodData);
1652
+ var insuranceVerifyData = productVerifyData[ins.key];
1653
+ if (!insuranceVerifyData) {
1654
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1655
+ console.log("".concat(prodData.titleName, "-").concat(prodData.key, " -> ").concat(ins.name, "-").concat(ins.key, ": \u5F53\u524D\u9669\u79CD\u6CA1\u6709\u8D39\u7387\u8868"));
1656
+ }
1657
+ return;
1658
+ }
1659
+ // 双豁免是种特殊的投保人豁免。双豁免包含投保人豁免和投保人配偶豁免。如果没有选中配偶信息,则认为是投保人豁免,选中则认为投保人豁免和配偶豁免都选中
1660
+ var isTouHuomianIns = ins.huomian === 'touHuomian' || ins.huomian === 'shuangHuomian';
1661
+ var insuredInfo = personOrderList.find(function (p) {
1662
+ return p.key === 'insuredInfo';
1663
+ });
1664
+ var applicantInfo = personOrderList.find(function (p) {
1665
+ return p.key === 'applicantInfo';
1666
+ });
1667
+ // 如果豁免险种可以附加被保人,也可以附加投保人。选中投保人,则附加到投保人
1668
+ var personType = isTouHuomianIns ? 'applicantInfo' : 'insuredInfo';
1669
+ if (isTouHuomianIns && ins.allowSamePerson) {
1670
+ personType = applicantInfo && applicantInfo.title ? 'applicantInfo' : 'insuredInfo';
1671
+ }
1672
+
1673
+ // 取当前性别、年龄下的费率条件
1674
+ var targetPerson = personOrderList.find(function (p) {
1675
+ return p.key === personType;
1676
+ });
1677
+ var personCondition = null;
1678
+ if (targetPerson) {
1679
+ // 对应性别、年龄下的限制条件
1680
+ personCondition = insuranceVerifyData.find(function (v) {
1681
+ return targetPerson.sex === v.sex && targetPerson.age >= v.minAge && targetPerson.age <= v.maxAge;
1682
+ });
1683
+ if (personCondition) {
1684
+ // 当前险种的限制条件
1685
+ personCondition = personCondition.conditionData;
1686
+ //如果险种可以附加被保人,也可以附加投保人。选中投保人,则附加到投保人
1687
+ var isSamePerson = isTouHuomianIns && ins.allowSamePerson && personCondition.key === 'samePerson';
1688
+ if (isSamePerson) {
1689
+ personCondition = personCondition.samePerson.find(function (c) {
1690
+ return c.value == (applicantInfo.title ? 0 : 1);
1691
+ });
1692
+ }
1693
+ }
1694
+ }
1695
+ var curCondition = personCondition;
1696
+ var eleTitle = (_ins$eleOrderList = ins.eleOrderList) === null || _ins$eleOrderList === void 0 ? void 0 : _ins$eleOrderList.find(function (e) {
1697
+ return e.key === 'title';
1698
+ });
1699
+ // 遍历当前险种的限制条件
1700
+ var _loop2 = function _loop2() {
1701
+ var _ins$eleOrderList2;
1702
+ // 如果险种不存在费率限制条件或者投保人豁免在没有选中投保人信息的条件下,险种不可选
1703
+ var isNotAllowSelect = !curCondition || isTouHuomianIns && !ins.allowSamePerson && (!targetPerson.title || targetPerson.applicantAndInsuredSame);
1704
+ if (isNotAllowSelect) {
1705
+ eleTitle.isDisabled = true;
1706
+ eleTitle.value = false;
1707
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1708
+ console.log(curCondition ? "".concat(eleTitle.labelName, "-").concat(ins.key, ": \u8D39\u7387\u5B58\u5728\uFF01\u4F46\u6295\u4FDD\u4EBA\u672A\u9009\u4E2D\u6216\u6295\u88AB\u4FDD\u4EBA\u4E3A\u540C\u4E00\u4EBA\uFF0C\u8BE5\u8C41\u514D\u9669\uFF08\u4E0D\u80FD\u9644\u52A0\u5230\u88AB\u4FDD\u4EBA\uFF09\u4E0D\u53EF\u9009") : "".concat(eleTitle.labelName, "-").concat(ins.key, ": \u8D39\u7387\u4E0D\u5B58\u5728\uFF01"));
1709
+ }
1710
+ } else {
1711
+ // 存在费率,险种可选
1712
+ eleTitle.isDisabled = false;
1713
+ // 如果是必选险种,险种一定选中
1714
+ if (ins.required && (!ins.groupKey || ins.isCheckbox)) {
1715
+ eleTitle.value = true;
1716
+ eleTitle.isDisabled = true;
1717
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1718
+ console.log("".concat(eleTitle.labelName, "-").concat(ins.key, ": \u8D39\u7387\u5B58\u5728\uFF0C\u9669\u79CD\u4E3A\u5FC5\u9009\u9669\u4E14(\u4E3A\u975E\u7EC4\u5408\u9669\u6216\u4E3A\u591A\u9009\u4E00\u9669\u79CD)"));
1719
+ }
1720
+ }
1721
+ }
1722
+ if (!curCondition) {
1723
+ return 0; // break
1724
+ }
1725
+ // 判断是否为通用元素
1726
+ var eleData = (_ins$eleOrderList2 = ins.eleOrderList) === null || _ins$eleOrderList2 === void 0 ? void 0 : _ins$eleOrderList2.find(function (e) {
1727
+ return e.key === curCondition.key;
1728
+ });
1729
+ var commonData = insList.find(function (ins) {
1730
+ return ins.key === 'common';
1731
+ });
1732
+ if (!eleData && commonData && commonData.eleOrderList) {
1733
+ eleData = commonData.eleOrderList.find(function (e) {
1734
+ return e.key === curCondition.key;
1735
+ });
1736
+ }
1737
+ if (!eleData) {
1738
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1739
+ console.log("".concat(ins.name, " - ").concat(curCondition && curCondition.key, "\u5143\u7D20\u4E0D\u5B58\u5728\uFF1A"));
1740
+ }
1741
+ curCondition = null;
1742
+ return 0; // break
1743
+ }
1744
+ var eleCondi = curCondition[curCondition.key];
1745
+ // 元素隐藏且非不可修改状态,取对应关联的险种的值
1746
+ var isBeGovernedEle = eleData.isHide && !eleData.isDisabled && ins.refInsuranceId && Number(ins.refInsuranceId) !== -2;
1747
+ if (isBeGovernedEle) {
1748
+ var refInsData = null;
1749
+ // -1: 关联主险。即险种中key值为非 「common」的第一个险种
1750
+ if (Number(ins.refInsuranceId) === -1) {
1751
+ refInsData = insList[0].key === 'common' ? insList[1] : insList[0];
1752
+ } else {
1753
+ refInsData = insList.find(function (ins) {
1754
+ return ins.key == ins.refInsuranceId;
1755
+ });
1756
+ }
1757
+ // 数据取值来源的元素
1758
+ var refEleData = refInsData && refInsData.eleOrderList && refInsData.eleOrderList.find(function (e) {
1759
+ return e.key === eleData.key;
1760
+ });
1761
+ if (refEleData) {
1762
+ // 豁免险,缴费期间需要减去某个值
1763
+ if (ins.huomian && eleData.key == 'pPeriod') {
1764
+ eleData.value = getHuomianPeriodValue(refEleData.value, ins.pMinus, ins.huomian === 'touHuomian' ? insuredInfo.age : targetPerson.age);
1765
+ } else {
1766
+ eleData.value = refEleData.value;
1767
+ }
1768
+ } else {
1769
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1770
+ console.log("".concat(ins.name, "-").concat(ins.key, "\uFF1A\u5173\u8054\u9669\u79CD").concat(ins.refInsuranceId, "\u4E0D\u5B58\u5728"));
1771
+ }
1772
+ }
1773
+ } else {
1774
+ var backupOpts = eleData.opts && eleData.opts.length ? eleData.opts.slice(0) : [];
1775
+ eleData.opts = eleCondi.filter(function (c) {
1776
+ return c.value !== undefined && c.desc !== undefined;
1777
+ }).map(function (c) {
1778
+ var option = backupOpts.find(function (o) {
1779
+ return o.val == c.value;
1780
+ });
1781
+ return {
1782
+ val: c.value,
1783
+ desc: c.desc || c.value,
1784
+ isHide: option && option.isHide || null,
1785
+ isDisabled: option && option.isDisabled || null,
1786
+ isInvalid: null
1787
+ };
1788
+ });
1789
+ // 交费期间,默认取最后一个元素的值;其他元素,默认取第一个元素。By Lizh 2020.4.10, From hyw
1790
+ var isNoOption = eleData.opts && eleData.opts.length && eleData.opts.every(function (ele) {
1791
+ return ele.val != eleData.value;
1792
+ });
1793
+ if (isNoOption) {
1794
+ if (eleData.key === 'pPeriod') {
1795
+ var _eleData$opts;
1796
+ var filterOpts = (_eleData$opts = eleData.opts) === null || _eleData$opts === void 0 ? void 0 : _eleData$opts.filter(function (opt) {
1797
+ return !opt.isHide && !opt.isDisabled;
1798
+ });
1799
+ if (filterOpts && filterOpts.length) {
1800
+ eleData.value = filterOpts[filterOpts.length - 1].val;
1801
+ }
1802
+ } else {
1803
+ if (eleData.opts && eleData.opts.length) {
1804
+ eleData.value = eleData.opts[0].val;
1805
+ }
1806
+ }
1807
+ }
1808
+ }
1809
+ // 提定下一个元素的限制条件
1810
+ curCondition = eleCondi.find(function (eleCondi) {
1811
+ return eleCondi.value == eleData.value;
1812
+ });
1813
+ var eleIndex = ins.eleOrderList.findIndex(function (ele) {
1814
+ return ele.key === eleData.key;
1815
+ });
1816
+ var prevElement;
1817
+ if (eleIndex >= 1) {
1818
+ prevElement = ins.eleOrderList[eleIndex - 1];
1819
+ }
1820
+ if (prevElement) {
1821
+ // 如果下一个元素的 value 不存在限制条件。则遍历上一个元素,重新设置上一元素的值,并取对应的限制条件。
1822
+ if (!curCondition) {
1823
+ var prevEleVerify = getElementVerifyFromProductVerify(personCondition, insList, {
1824
+ insuranceKey: ins.key,
1825
+ elementKey: prevElement.key
1826
+ });
1827
+ var onePrevEleVerify = prevEleVerify === null || prevEleVerify === void 0 ? void 0 : prevEleVerify.find(function (v) {
1828
+ return v[eleData.key] && v[eleData.key].some(function (condi) {
1829
+ return condi.value === eleData.value;
1830
+ });
1831
+ });
1832
+ if (onePrevEleVerify) {
1833
+ prevElement.value = onePrevEleVerify.value;
1834
+ curCondition = onePrevEleVerify[eleData.key];
1835
+ }
1836
+ }
1837
+ if (!curCondition) {
1838
+ eleTitle.isDisabled = true;
1839
+ eleTitle.value = false;
1840
+ if (window.DEBUG_TEMP_CONSOLE_FLAG) {
1841
+ console.log("".concat(eleTitle.labelName, "-").concat(ins.key, ": \u8D39\u7387\u4E0D\u5B58\u5728\uFF01"));
1842
+ }
1843
+ }
1844
+
1845
+ // 如果当前元素是隐藏的且不可修改,则过滤上一元素的选项,即,删除上一元素中不包含当前元素值的选项。
1846
+ var isNeedReverseFilter = eleData.isHide && !eleData.isDisabled && prevElement.opts && prevElement.opts.length;
1847
+ if (isNeedReverseFilter) {
1848
+ var _prevEleVerify = getElementVerifyFromProductVerify(personCondition, insList, {
1849
+ insuranceKey: ins.key,
1850
+ elementKey: prevElement.key
1851
+ });
1852
+ if (_prevEleVerify) {
1853
+ prevElement.opts = _prevEleVerify.filter(function (v) {
1854
+ var elementVerify = getElementVerifyFromProductVerify(personCondition, insList, _defineProperty({
1855
+ insuranceKey: ins.key,
1856
+ elementKey: eleData.key
1857
+ }, prevElement.key, v.value));
1858
+ return elementVerify && elementVerify.some(function (c) {
1859
+ return c.value == eleData.value;
1860
+ });
1861
+ }).map(function (v) {
1862
+ return {
1863
+ val: v.value,
1864
+ desc: v.desc || v.value,
1865
+ isHide: null,
1866
+ isDisabled: null,
1867
+ isInvalid: null
1868
+ };
1869
+ });
1870
+ }
1871
+ }
1872
+ }
1873
+ },
1874
+ _ret;
1875
+ do {
1876
+ _ret = _loop2();
1877
+ if (_ret === 0) break;
1878
+ } while (curCondition && curCondition.key && curCondition[curCondition.key]);
1879
+ });
1880
+ }
1881
+ setGroupInsurance(prodData);
1882
+ isHideProduct(prodData, productVerifyData, personOrderList);
1883
+ return _context.abrupt("return", prodData);
1884
+ case 5:
1885
+ case "end":
1886
+ return _context.stop();
1887
+ }
1888
+ }, _callee);
1889
+ }));
1890
+ return _productDataHandler.apply(this, arguments);
1891
+ }
1892
+ function multipleInsuredHandler(personData) {
1893
+ var personOrderList = personData.personOrderList;
1894
+ if (!(personOrderList && personOrderList.length)) {
1895
+ return null;
1896
+ }
1897
+ var insured2Info = personOrderList.find(function (p) {
1898
+ return p.key === 'insured2Info';
1899
+ });
1900
+ if (!insured2Info) {
1901
+ var insuredInfo = personOrderList.find(function (p) {
1902
+ return p.key === 'insuredInfo';
1903
+ });
1904
+ var insuredIndex = personOrderList.findIndex(function (p) {
1905
+ return p.key === 'insuredInfo';
1906
+ });
1907
+ if (insuredIndex >= 0) {
1908
+ var person = lodash.cloneDeep(insuredInfo);
1909
+ person.key = 'insured2Info';
1910
+ person.eleOrderList.forEach(function (e) {
1911
+ if (e.key === 'title') {
1912
+ e.isDisabled = false;
1913
+ e.value = true;
1914
+ e.label = '第二被保人信息';
1915
+ }
1916
+ });
1917
+ personOrderList.splice(insuredIndex + 1, 0, person);
1918
+ }
1919
+ }
1920
+ return personData;
1921
+ }
1922
+
1923
+ /**
1924
+ * 请求返回当前产品、当前条件的费率数据
1925
+ * @author Lizhao <lz@winbaoxian.com>
1926
+ * @date 2024-02-28
1927
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
1928
+ * @param {IPbPersons} personData 必传。人员信息,包括被保人、投保人、投保人配偶
1929
+ * @returns 请求函数的 Promise
1930
+ */
1931
+ function getSingleInsurancesVerifyData(prodData, personData) {
1932
+ var _prodData$mulInsOrder, _prodData$mulInsOrder2;
1933
+ var parmas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1934
+ var personOrderList = personData.personOrderList;
1935
+ if (!(personOrderList && personOrderList.length)) {
1936
+ return null;
1937
+ }
1938
+ var pbId = prodData.isTemp || prodData.policyType === 'single_insurance' ? null : parmas.planbookId;
1939
+ var productId = prodData.policyType === 'single_insurance' ? null : prodData.key;
1940
+ var insuredList = personOrderList.filter(function (p) {
1941
+ return ['insuredInfo', 'insured2Info'].includes(p.key) && p.eleOrderList;
1942
+ }).filter(function (p) {
1943
+ var _p$eleOrderList;
1944
+ var title = (_p$eleOrderList = p.eleOrderList) === null || _p$eleOrderList === void 0 ? void 0 : _p$eleOrderList.find(function (e) {
1945
+ return e.key === 'title';
1946
+ });
1947
+ return title && title.value;
1948
+ }).map(function (p) {
1949
+ var _find, _find2;
1950
+ return {
1951
+ key: p.key,
1952
+ sex: (_find = (p.eleOrderList || []).find(function (e) {
1953
+ return e.key === 'sex';
1954
+ })) === null || _find === void 0 ? void 0 : _find.value,
1955
+ age: (_find2 = (p.eleOrderList || []).find(function (e) {
1956
+ return e.key === 'age';
1957
+ })) === null || _find2 === void 0 ? void 0 : _find2.value
1958
+ };
1959
+ });
1960
+ var applicant = null;
1961
+ var applicantItem = personData.personOrderList.find(function (p) {
1962
+ return p.key === 'applicantInfo' && p.eleOrderList;
1963
+ });
1964
+ if (applicantItem) {
1965
+ var _find3, _find4;
1966
+ applicant = {
1967
+ key: applicantItem.key,
1968
+ sex: (_find3 = (applicantItem.eleOrderList || []).find(function (e) {
1969
+ return e.key === 'sex';
1970
+ })) === null || _find3 === void 0 ? void 0 : _find3.value,
1971
+ age: (_find4 = (applicantItem.eleOrderList || []).find(function (e) {
1972
+ return e.key === 'age';
1973
+ })) === null || _find4 === void 0 ? void 0 : _find4.value
1974
+ };
1975
+ }
1976
+ var insuranceIdList = prodData === null || prodData === void 0 || (_prodData$mulInsOrder = prodData.mulInsOrderList) === null || _prodData$mulInsOrder === void 0 ? void 0 : _prodData$mulInsOrder.map(function (ins) {
1977
+ return ins.key;
1978
+ });
1979
+ prodData === null || prodData === void 0 || (_prodData$mulInsOrder2 = prodData.mulInsOrderList) === null || _prodData$mulInsOrder2 === void 0 || _prodData$mulInsOrder2.reduce(function (list, ins) {
1980
+ return ins.key === 'common' || ins.isGroup ? list : list.concat(ins.key);
1981
+ }, []);
1982
+ return getAndCacheInsurancesVerifyData({
1983
+ pbId: pbId,
1984
+ productId: productId,
1985
+ insuredList: insuredList,
1986
+ applicant: applicant,
1987
+ insuranceIdList: insuranceIdList
1988
+ });
1989
+ }
1990
+
1991
+ /**
1992
+ * **多被保人,获取并缓存多个险种信息的费率信息**
1993
+ * @author Lizhao <lz@winbaoxian.com>
1994
+ * @date 2023-12-28
1995
+ * @param { any } params 必传。接口请求信息
1996
+ * @returns {Promise<any>} 产品下所有险种的费率
1997
+ */
1998
+ var getAndCacheInsurancesVerifyData = lodash.memoize(function (params) {
1999
+ var url = "".concat(APP_HOSTNAME, "/planBook/input/insurance/verifyData");
2000
+ return fetch(url, {
2001
+ method: 'POST',
2002
+ credentials: 'include',
2003
+ headers: {
2004
+ Accept: 'application/json, text/plain, */*',
2005
+ 'Content-Type': 'application/json;'
2006
+ },
2007
+ body: JSON.stringify(params)
2008
+ }).then(function (response) {
2009
+ return response.json();
2010
+ }).then(function (_ref) {
2011
+ var success = _ref.success,
2012
+ data = _ref.data;
2013
+ if (!success || !data) {
2014
+ return Promise.reject();
2015
+ }
2016
+ return Promise.resolve(data);
2017
+ }).catch(function () {});
2018
+ }, function (params) {
2019
+ return QS.stringify(params);
2020
+ });
2021
+ function getElementVerifyFromProductVerify(verify, insurances, option) {
2022
+ if (!verify || !verify.key || !verify[verify.key] || !insurances || !option) {
2023
+ return verify;
2024
+ }
2025
+ var insuranceInfo = {};
2026
+ insurances.forEach(function (ins) {
2027
+ if (['common', option.insuranceKey].includes(ins.key)) {
2028
+ insuranceInfo = _objectSpread(_objectSpread({}, insuranceInfo), convertEleOrderListToObj(ins));
2029
+ }
2030
+ });
2031
+ insuranceInfo = _objectSpread(_objectSpread({}, insuranceInfo), option);
2032
+ var temp = verify;
2033
+ var hasElementKey = verify.key === option.elementKey;
2034
+ while (temp && temp.key && temp.key !== option.elementKey) {
2035
+ temp = temp[temp.key].find(function (v) {
2036
+ return v.value == insuranceInfo[temp.key];
2037
+ });
2038
+ if (temp && temp.key === option.elementKey) {
2039
+ hasElementKey = true;
2040
+ }
2041
+ }
2042
+ if (!hasElementKey) {
2043
+ return null;
2044
+ }
2045
+ if (temp && temp[option.elementKey]) {
2046
+ return temp[option.elementKey];
2047
+ }
2048
+ return temp ? [temp] : null;
2049
+ }
2050
+
2051
+ /**
2052
+ * **提取产品中的通用信息**
2053
+ * - 将产品下所有险种中 [common: true] 的元素,提取到一个新险种下(险种[key: common]),并作为产品的第一个险种。
2054
+ * @ignore
2055
+ * @author Lizhao <lz@winbaoxian.com>
2056
+ * @date 2022-04-26
2057
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
2058
+ * @returns {IPbProduct} 产品数据(单个)
2059
+ */
2060
+ function setCommonInfo(prodData) {
2061
+ if (!prodData || !prodData.mulInsOrderList) {
2062
+ return prodData;
2063
+ }
2064
+ var common = {
2065
+ key: 'common',
2066
+ eleOrderList: []
2067
+ };
2068
+ prodData.mulInsOrderList.forEach(function (ins) {
2069
+ if (!ins.eleOrderList) {
2070
+ return;
2071
+ }
2072
+ ins.eleOrderList.forEach(function (ele) {
2073
+ if (ele.common && common.eleOrderList.every(function (e) {
2074
+ return e.key !== ele.key;
2075
+ })) {
2076
+ common.eleOrderList.push(ele);
2077
+ }
2078
+ });
2079
+ ins.eleOrderList = ins.eleOrderList.filter(function (ele) {
2080
+ return !ele.common;
2081
+ });
2082
+ });
2083
+ // 把通用信息当作一个险种,做为产品险种列表的第一个险种
2084
+ if (!common.eleOrderList.length) {
2085
+ return prodData;
2086
+ }
2087
+ prodData.mulInsOrderList = prodData.mulInsOrderList.filter(function (ins) {
2088
+ return ins.key !== 'common';
2089
+ });
2090
+ prodData.mulInsOrderList.unshift(common);
2091
+ // 通用信息,与跟随其后的险种不留间距
2092
+ if (prodData.mulInsOrderList[1]) {
2093
+ prodData.mulInsOrderList[1].isFollowing = true;
2094
+ }
2095
+ return prodData;
2096
+ }
2097
+
2098
+ /**
2099
+ * **创建或更新组合险**
2100
+ * - 组合险是虚拟的险种,是为了解决特殊场景:多个险种,只能同时选中一个。
2101
+ * - 组合险的初始状态取决于子险种,状态包括:是否可选、包含的元素、元素的选项及值。用户有交互,以交互后的状态为准。
2102
+ * @ignore
2103
+ * @author Lizhao <lz@winbaoxian.com>
2104
+ * @date 2022-04-26
2105
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
2106
+ * @returns {IPbProduct} 产品数据(单个)
2107
+ */
2108
+ function setGroupInsurance(prodData) {
2109
+ if (!prodData.mulInsOrderList) {
2110
+ return prodData;
2111
+ }
2112
+ var groupInsuranceList = prodData && prodData.mulInsOrderList && prodData.mulInsOrderList.filter(function (ins) {
2113
+ return !!ins.groupKey;
2114
+ });
2115
+ if (!groupInsuranceList || !groupInsuranceList.length) {
2116
+ return prodData;
2117
+ }
2118
+ var oldGroupInsList = prodData.mulInsOrderList.filter(function (ins) {
2119
+ return ins.isGroup;
2120
+ });
2121
+ var newGroupInsMap = {};
2122
+ //清空险种列表中的已有的险种组合
2123
+ prodData.mulInsOrderList = prodData.mulInsOrderList.filter(function (ins) {
2124
+ return !ins.isGroup;
2125
+ });
2126
+ groupInsuranceList.forEach(function (ins) {
2127
+ //多险种选一,或多险种选多。生成一个组合,如多个险种合成豁免险
2128
+ // ins.isCheckbox = true
2129
+ var oldGroupIns = oldGroupInsList.find(function (gIns) {
2130
+ return gIns.key === ins.groupKey;
2131
+ });
2132
+ var oldTitleEle = {};
2133
+ var oldInsuranceIdEle = {};
2134
+ if (oldGroupIns && oldGroupIns.eleOrderList) {
2135
+ oldTitleEle = oldGroupIns.eleOrderList.find(function (e) {
2136
+ return e.key === 'title';
2137
+ });
2138
+ oldInsuranceIdEle = oldGroupIns.eleOrderList.find(function (e) {
2139
+ return e.key === 'insuranceId';
2140
+ });
2141
+ }
2142
+ if (ins.groupKey) {
2143
+ newGroupInsMap[ins.groupKey] = newGroupInsMap[ins.groupKey] || {
2144
+ key: ins.groupKey,
2145
+ name: ins.groupName,
2146
+ huomian: ins.huomian,
2147
+ isGroup: true,
2148
+ eleOrderList: [{
2149
+ key: 'title',
2150
+ value: oldTitleEle && oldTitleEle.value || false,
2151
+ isDisabled: false,
2152
+ componentName: 'cmCommonTitle',
2153
+ labelName: ins.groupName
2154
+ }, {
2155
+ key: 'insuranceId',
2156
+ value: oldInsuranceIdEle && oldInsuranceIdEle.value || (ins.isCheckbox ? [] : ''),
2157
+ componentName: ins.isCheckbox ? 'cmCommonCheckbox' : 'cmCommonRadio',
2158
+ opts: []
2159
+ }]
2160
+ };
2161
+
2162
+ // 当险种转换成险种组合的选项
2163
+ var titleEle = ins.eleOrderList.find(function (e) {
2164
+ return e.key === 'title';
2165
+ });
2166
+ var insuranceIdEle = newGroupInsMap[ins.groupKey].eleOrderList.find(function (e) {
2167
+ return e.key === 'insuranceId';
2168
+ });
2169
+ insuranceIdEle.opts.push({
2170
+ val: ins.key,
2171
+ code: ins.code,
2172
+ desc: titleEle.labelName,
2173
+ isDisabled: titleEle.isDisabled
2174
+ });
2175
+ }
2176
+ });
2177
+
2178
+ // 处理组合险中的逻辑,并加入到产品险种列表中
2179
+ var _loop = function _loop(k) {
2180
+ var nGroupTitle = newGroupInsMap[k].eleOrderList.find(function (e) {
2181
+ return e.key === 'title';
2182
+ });
2183
+ var nGroupInsuranceId = newGroupInsMap[k].eleOrderList.find(function (e) {
2184
+ return e.key === 'insuranceId';
2185
+ });
2186
+ if (nGroupTitle && nGroupInsuranceId) {
2187
+ if (nGroupInsuranceId.opts && nGroupInsuranceId.opts.length) {
2188
+ // 所有险种都不可选,则组合险不可修改且不选中。否则,组合险种可选
2189
+ if (nGroupInsuranceId.opts.every(function (opt) {
2190
+ return !!opt.isDisabled;
2191
+ })) {
2192
+ nGroupTitle.value = false;
2193
+ nGroupTitle.isDisabled = true;
2194
+ } else {
2195
+ nGroupTitle.isDisabled = false;
2196
+ }
2197
+ }
2198
+ var groupInsList = prodData.mulInsOrderList.filter(function (ins) {
2199
+ return ins.groupKey == k;
2200
+ });
2201
+ if (groupInsList && groupInsList.length) {
2202
+ // 如果组合险中有一款是必选的,则整个组合险为选中状态
2203
+ if (groupInsList.some(function (ins) {
2204
+ var subTitle = ins.eleOrderList.find(function (e) {
2205
+ return e.key === 'title';
2206
+ });
2207
+ return ins.required && subTitle && !subTitle.isDisabled;
2208
+ })) {
2209
+ nGroupTitle.value = true;
2210
+ nGroupTitle.isDisabled = true;
2211
+ }
2212
+
2213
+ // 初始化时,设置组合险默认值
2214
+ var notDisabledInsurances = groupInsList.filter(function (ins) {
2215
+ var subTitle = ins.eleOrderList.find(function (e) {
2216
+ return e.key === 'title';
2217
+ });
2218
+ return subTitle && !subTitle.isDisabled;
2219
+ });
2220
+ var checkedInsurances = notDisabledInsurances.find(function (ins) {
2221
+ var subTitle = ins.eleOrderList.find(function (e) {
2222
+ return e.key === 'title';
2223
+ });
2224
+ return subTitle && subTitle.value;
2225
+ });
2226
+ if (!nGroupInsuranceId.value) {
2227
+ if (checkedInsurances) {
2228
+ nGroupInsuranceId.value = checkedInsurances.key;
2229
+ nGroupTitle.value = true;
2230
+ } else if (nGroupTitle.value) {
2231
+ if (notDisabledInsurances[0]) {
2232
+ nGroupInsuranceId.value = notDisabledInsurances[0].key;
2233
+ }
2234
+ }
2235
+ }
2236
+ }
2237
+ }
2238
+ if (nGroupInsuranceId) {
2239
+ if (nGroupInsuranceId.value) {
2240
+ if (nGroupInsuranceId.value.constructor === Array) {
2241
+ if (nGroupInsuranceId.opts) {
2242
+ nGroupInsuranceId.opts = nGroupInsuranceId.opts.filter(function (opt) {
2243
+ return nGroupInsuranceId.value.indexOf(opt.val) !== -1 && !opt.isDisabled;
2244
+ });
2245
+ }
2246
+ } else {
2247
+ var opt = nGroupInsuranceId.opts.find(function (o) {
2248
+ return o.val === nGroupInsuranceId.value;
2249
+ });
2250
+ if (opt && opt.isDisabled) {
2251
+ nGroupInsuranceId.value = '';
2252
+ }
2253
+ }
2254
+ }
2255
+ if (nGroupInsuranceId.value) {
2256
+ var checkedIns = prodData.mulInsOrderList.find(function (ins) {
2257
+ return ins.key === nGroupInsuranceId.value;
2258
+ });
2259
+ if (checkedIns) {
2260
+ //将当前选中险种的部分数据复制到组合险中
2261
+ for (var ck in checkedIns) {
2262
+ if (!['code', 'groupKey', 'groupName', 'isFollowing', 'key', 'name', 'accountData', 'reduceBaofData'].includes(ck)) {
2263
+ // 定义组件险中的元素:自身eleOrderList + 所选险种的eleOrderList(不包含标题)
2264
+ if (ck === 'eleOrderList') {
2265
+ newGroupInsMap[k][ck] = newGroupInsMap[k][ck].concat(checkedIns[ck].filter(function (ele) {
2266
+ return ele.key !== 'title';
2267
+ }));
2268
+ } else {
2269
+ newGroupInsMap[k][ck] = checkedIns[ck];
2270
+ }
2271
+ }
2272
+ }
2273
+ }
2274
+ }
2275
+ }
2276
+ var index = -1;
2277
+ prodData.mulInsOrderList.forEach(function (ins, i) {
2278
+ if (ins.groupKey === k) {
2279
+ index = i;
2280
+ }
2281
+ });
2282
+ if (index >= 0) {
2283
+ prodData.mulInsOrderList.splice(index + 1, 0, newGroupInsMap[k]);
2284
+ }
2285
+ };
2286
+ for (var k in newGroupInsMap) {
2287
+ _loop(k);
2288
+ }
2289
+ return prodData;
2290
+ }
2291
+
2292
+ /**
2293
+ * **判断是否隐藏产品**
2294
+ * - 根据必选险种,或者所有险种的年龄范围,取并集,计算出产品年龄范围
2295
+ * - 判断被保人年龄是否超出产品年龄范围,如果是,则该产品不可选,隐藏产品
2296
+ * @ignore
2297
+ * @author Lizhao <lz@winbaoxian.com>
2298
+ * @date 2022-04-26
2299
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
2300
+ * @param {object} productVerifyData 必传。产品限制条件(单个)
2301
+ * @param {IPbPerson} personOrderList 必传。转换后的人员信息,包括被保人、投保人、投保人配偶
2302
+ * @returns {object} 产品数据(单个)
2303
+ */
2304
+ function isHideProduct(prodData, productVerifyData, personOrderList) {
2305
+ var ageRangeProd = {};
2306
+ if (prodData && productVerifyData && Object.keys(productVerifyData).length && personOrderList) {
2307
+ if (prodData.mulInsOrderList) {
2308
+ // 产品中是否有必选险种且有费率
2309
+ var hasRequiredIns = prodData.mulInsOrderList.some(function (ins) {
2310
+ return !!ins.required && productVerifyData[ins.key];
2311
+ });
2312
+ prodData.mulInsOrderList.forEach(function (ins) {
2313
+ // 当前险种的限制条件
2314
+ var insuranceVerifyData = productVerifyData[ins.key];
2315
+ if (insuranceVerifyData) {
2316
+ // 产品年龄范围取各险种最大范围
2317
+ if ((!ins.huomian || ins.huomian == 'beiHuomian') && (!hasRequiredIns || hasRequiredIns && ins.required)) {
2318
+ insuranceVerifyData.forEach(function (verify) {
2319
+ ageRangeProd[verify.sex] = ageRangeProd[verify.sex] || [];
2320
+ ageRangeProd[verify.sex] = [Math.min(ageRangeProd[verify.sex][0] === undefined ? verify.minAge : ageRangeProd[verify.sex][0], verify.minAge), Math.max(ageRangeProd[verify.sex][1] === undefined ? verify.maxAge : ageRangeProd[verify.sex][1], verify.maxAge)];
2321
+ });
2322
+ }
2323
+ }
2324
+ });
2325
+ }
2326
+ var _ref2 = personOrderList.find(function (p) {
2327
+ return p.key === 'insuredInfo';
2328
+ }),
2329
+ sex = _ref2.sex,
2330
+ age = _ref2.age;
2331
+ if (ageRangeProd[sex] && age >= ageRangeProd[sex][0] && age <= ageRangeProd[sex][1]) {
2332
+ prodData.hide = false;
2333
+ } else {
2334
+ prodData.hadChoice = false;
2335
+ prodData.hide = true;
2336
+ prodData.totalBaof = null;
2337
+ }
2338
+ }
2339
+ return ageRangeProd;
2340
+ }
2341
+
2342
+ /**
2343
+ * **校验产品下的所有规则**
2344
+ * - 校验产品层的校验规则
2345
+ * - 校验险种层的校验规则
2346
+ * @ignore
2347
+ * @author Lizhao <lz@winbaoxian.com>
2348
+ * @date 2022-04-26
2349
+ * @param {object} params
2350
+ * @param {IPbPersons} params.personData 必传。人员信息,包括被保人、投保人、投保人配偶
2351
+ * @param {IPbProduct} params.productData 必传。产品数据(单个)
2352
+ * @param {IProdInsurance} params.insData 可不传。险种数据,当前交互的险种(如:用户修改了该险种的交费期间)
2353
+ * @param {IInsElement} params.eleData 可不传。元素数据,当前交互的元素(如:用户修改了该险种的交费期间)
2354
+ * @returns {string} 校验结果。空表示校验通过
2355
+ */
2356
+ function verifyProductRules(_ref3) {
2357
+ var personData = _ref3.personData,
2358
+ productData = _ref3.productData,
2359
+ insData = _ref3.insData,
2360
+ eleData = _ref3.eleData;
2361
+ var errorMsg = '';
2362
+ var personOrderList = convertPersonData(personData, personData.personOrderList.map(function (p) {
2363
+ return p.key;
2364
+ }));
2365
+ // 验证同一产品中各险种的限制
2366
+ if (productData.restrictList && productData.restrictList.length) {
2367
+ errorMsg = restrictInsurancesInProduct({
2368
+ personOrderList: personOrderList,
2369
+ productData: productData,
2370
+ insData: insData,
2371
+ eleData: eleData
2372
+ });
2373
+ }
2374
+ if (!errorMsg && productData.mulInsOrderList) {
2375
+ //同一险种间不同元素的校验
2376
+ productData.mulInsOrderList.forEach(function (ins) {
2377
+ if (ins.eleOrderList) {
2378
+ ins.eleOrderList.forEach(function (ele) {
2379
+ errorMsg = errorMsg || restrictElementsInInsurance({
2380
+ personOrderList: personOrderList,
2381
+ insData: ins,
2382
+ eleData: ele
2383
+ });
2384
+ });
2385
+ }
2386
+ });
2387
+ }
2388
+ return errorMsg;
2389
+ }
2390
+
2391
+ /**
2392
+ * **解析产品下险种间的限制规则**
2393
+ * - 险种是否可选
2394
+ * - 元素的选项范围
2395
+ * - 输入框的取值范围或默认值
2396
+ * @ignore
2397
+ * @author Lizhao <lz@winbaoxian.com>
2398
+ * @date 2022-04-26
2399
+ * @param {object} params
2400
+ * @param {personOrderList} params.personOrderList 必传。转换后的人员信息,包括被保人、投保人、投保人配偶
2401
+ * @param {productData} params.productData 必传。产品数据(单个)
2402
+ * @param {insData} params.insData 可不传。险种数据,当前交互的险种(如:用户修改了该险种的交费期间)
2403
+ * @param {eleData} params.eleData 可不传。元素数据,当前交互的元素(如:用户修改了该险种的交费期间)
2404
+ * @returns {string} 校验结果。空表示校验通过
2405
+ */
2406
+ function restrictInsurancesInProduct(_ref4) {
2407
+ var personOrderList = _ref4.personOrderList,
2408
+ productData = _ref4.productData,
2409
+ insData = _ref4.insData,
2410
+ eleData = _ref4.eleData;
2411
+ var errorMsg = '';
2412
+ var restrictList = productData.restrictList;
2413
+ if (restrictList && restrictList.length) {
2414
+ restrictList.forEach(function (restrict) {
2415
+ var insuredInfo = personOrderList.find(function (p) {
2416
+ return p.key === 'insuredInfo';
2417
+ });
2418
+ var productInfo = convertProductData(productData);
2419
+ var prodVerifyData = {
2420
+ age: insuredInfo.age,
2421
+ sex: insuredInfo.sex,
2422
+ common: productInfo.common
2423
+ };
2424
+ productInfo.mulInsOrderList.forEach(function (ins) {
2425
+ prodVerifyData['i' + ins.key] = ins;
2426
+ });
2427
+ restrict.rCondition = restrict.rCondition.replace(/(%)(\d+)(\.*\w*)(%)/g, 'prodVerifyData.i$2$3');
2428
+ restrict.rCondition = restrict.rCondition.replace(/(%)(\w*\.*\w*)(%)/g, 'prodVerifyData.$2');
2429
+ var curIns = productData.mulInsOrderList.find(function (ins) {
2430
+ return ins.key === restrict.rInsKey;
2431
+ });
2432
+ var curEle = curIns ? {} : null;
2433
+ if (curIns) {
2434
+ curEle = curIns.eleOrderList.find(function (e) {
2435
+ return e.key === restrict.rEleKey;
2436
+ });
2437
+ }
2438
+ if (curEle) {
2439
+ switch (restrict.rType) {
2440
+ // 判断险种是否选中
2441
+ case 1:
2442
+ {
2443
+ var isDisabled = curEle.isDisabled;
2444
+ var value = curEle.value;
2445
+ if (eval(restrict.rCondition)) {
2446
+ isDisabled = false;
2447
+ // 约束条件为真时,目标元素是必选的,即选中且不可修改
2448
+ if (restrict.other && restrict.other.includes('required')) {
2449
+ value = true;
2450
+ isDisabled = true;
2451
+ }
2452
+ } else {
2453
+ isDisabled = true;
2454
+ // 约束条件为假时,目标元素允许用户手动选择
2455
+ if (restrict.other && restrict.other.includes('optional')) {
2456
+ isDisabled = false;
2457
+ }
2458
+ // 目标元素不可选,则改成不选中状态
2459
+ if (isDisabled) {
2460
+ value = false;
2461
+ }
2462
+ // 如果限制条件元素改变,使目标元素不可选,则改成不选中状态。
2463
+ // 比如:产品限制,两个险种二选一。
2464
+ if (insData && eleData && restrict.rCondition.search(insData.key + '.' + eleData.key) !== -1) {
2465
+ value = false;
2466
+ }
2467
+ }
2468
+ curEle.isDisabled = isDisabled;
2469
+ curEle.value = value;
2470
+ break;
2471
+ }
2472
+ // 下拉框的选项范围
2473
+ case 2:
2474
+ {
2475
+ var rangeSelect = eval(restrict.rCondition);
2476
+ if (rangeSelect !== undefined && rangeSelect !== null) {
2477
+ curEle.opts.forEach(function (opt) {
2478
+ var optNum = getNumberFromYear(opt.val, prodVerifyData.age);
2479
+ var rangeSelectNum = rangeSelect.constructor === Array ? [rangeSelect[0] && getNumberFromYear(rangeSelect[0], prodVerifyData.age), rangeSelect[1] && getNumberFromYear(rangeSelect[1], prodVerifyData.age)] : getNumberFromYear(rangeSelect, prodVerifyData.age);
2480
+ if (rangeSelect) {
2481
+ if (rangeSelect.constructor === Array) {
2482
+ opt.isHide = rangeSelect[0] && optNum < rangeSelectNum[0] || rangeSelect[1] && optNum > rangeSelectNum[1];
2483
+ } else {
2484
+ opt.isHide = optNum > rangeSelectNum;
2485
+ }
2486
+ }
2487
+ });
2488
+ if (!(curEle.isHide && !curEle.isDisabled) && curEle.opts) {
2489
+ var validOptions = curEle.opts.filter(function (o) {
2490
+ return !o.isDisabled && !o.isHide && !o.isInvalid;
2491
+ });
2492
+ var activeOption = validOptions.find(function (o) {
2493
+ return o.val === curEle.value;
2494
+ });
2495
+ if (!activeOption && validOptions.length) {
2496
+ curEle.value = validOptions[0].val;
2497
+ }
2498
+ }
2499
+ }
2500
+ break;
2501
+ }
2502
+ //输入框的取值范围
2503
+ case 3:
2504
+ {
2505
+ // 全局校验、或者点击的是约束元素、或者点击的是目标元素时,触发校验
2506
+ if (!insData && !eleData || restrict.rInsKey === insData.key && restrict.rEleKey === eleData.key || restrict.rCondition.search("prodVerifyData.i".concat(insData.key, ".").concat(eleData.key)) !== -1) {
2507
+ var rangeVal = eval(restrict.rCondition);
2508
+ if (rangeVal !== undefined && rangeVal !== null) {
2509
+ if (rangeVal.constructor === Array) {
2510
+ if (rangeVal[0] && curEle.value && curEle.value < rangeVal[0]) {
2511
+ errorMsg = restrict.rMsg || "".concat(curIns.name, "\u7684").concat(curEle.labelName, "\u4E0D\u5F97\u5C0F\u4E8E").concat(converUnit10000(rangeVal[0]));
2512
+ }
2513
+ if (rangeVal[1] && curEle.value && curEle.value > rangeVal[1]) {
2514
+ errorMsg = restrict.rMsg || "".concat(curIns.name, "\u7684").concat(curEle.labelName, "\u4E0D\u5F97\u5927\u4E8E").concat(converUnit10000(rangeVal[1]));
2515
+ }
2516
+ } else if (rangeVal.constructor === String || rangeVal.constructor === Number) {
2517
+ if (rangeVal) {
2518
+ curEle.value = rangeVal;
2519
+ }
2520
+ }
2521
+ }
2522
+ }
2523
+ break;
2524
+ }
2525
+ }
2526
+ }
2527
+ });
2528
+ }
2529
+ return errorMsg;
2530
+ }
2531
+
2532
+ /**
2533
+ * **转换产品数据**
2534
+ * - 转换通用信息的数据
2535
+ * - 转换组合险的数据
2536
+ * - 转换常规险种的数据。包括将 eleOrderList 数组下的 value 值,转换成 key-value 键值对
2537
+ * @author Lizhao <lz@winbaoxian.com>
2538
+ * @date 2022-04-26
2539
+ * @param {IPbProduct} prodData 必传。产品数据(单个)
2540
+ * @returns {IPbProduct} 产品数据(单个)
2541
+ */
2542
+ function convertProductData(prodData) {
2543
+ if (!prodData) {
2544
+ return prodData;
2545
+ }
2546
+ if (!prodData.mulInsOrderList) {
2547
+ return prodData;
2548
+ }
2549
+ var productData = _objectSpread(_objectSpread({}, prodData), {}, {
2550
+ common: {},
2551
+ mulInsOrderList: []
2552
+ });
2553
+ prodData.mulInsOrderList.forEach(function (insurance) {
2554
+ var insuranceData = convertEleOrderListToObj(insurance);
2555
+ if (insuranceData.key == 'common') {
2556
+ productData.common = insuranceData;
2557
+ return;
2558
+ }
2559
+ if (insuranceData.title && !insuranceData.groupKey) {
2560
+ if (insuranceData.isGroup) {
2561
+ //组合险,则遍历其所选中的险种,并转换数据
2562
+ var insuranceId = insuranceData.insuranceId.constructor == Array ? insuranceData.insuranceId : [insuranceData.insuranceId];
2563
+ insuranceId.forEach(function (insId) {
2564
+ var checkedIns = prodData.mulInsOrderList.find(function (p) {
2565
+ return p.key === insId;
2566
+ });
2567
+ if (checkedIns) {
2568
+ // 转换组合险中选中的险种
2569
+ var checkedInsData = convertEleOrderListToObj(checkedIns);
2570
+ insurance.eleOrderList && insurance.eleOrderList.forEach(function (ele) {
2571
+ if (!['title', 'insuranceId'].includes(ele.key)) {
2572
+ checkedInsData[ele.key] = insuranceData[ele.key];
2573
+ }
2574
+ });
2575
+ productData.mulInsOrderList.push(deepCopy(checkedInsData));
2576
+ }
2577
+ });
2578
+ return;
2579
+ }
2580
+ productData.mulInsOrderList.push(insuranceData);
2581
+ }
2582
+ });
2583
+ return productData;
2584
+ }
2585
+
2586
+ /**
2587
+ * **清空追加领取、减保领取、调整保额数据**
2588
+ * @author Lizhao <lz@winbaoxian.com>
2589
+ * @date 2022-04-26
2590
+ * @param {IPbProduct} productData 产品数据
2591
+ * @returns {IPbProduct} 产品数据
2592
+ */
2593
+ function clearAddAndTakeAndAdjustBaoeData(productData) {
2594
+ if (!productData) {
2595
+ return productData;
2596
+ }
2597
+ if (!productData.mulInsOrderList) {
2598
+ return productData;
2599
+ }
2600
+ productData.adjustBaoeData = null;
2601
+ productData.mulInsOrderList.forEach(function (ins) {
2602
+ if (ins.accountData && ins.accountData.addAndTakeData) {
2603
+ ins.accountData.addAndTakeData.forEach(function (aat) {
2604
+ aat.adjustData = [];
2605
+ });
2606
+ }
2607
+ if (ins.reduceBaof && ins.reduceBaofData) {
2608
+ ins.reduceBaofData.addAndTakeData.forEach(function (aat) {
2609
+ aat.adjustData = [];
2610
+ });
2611
+ }
2612
+ });
2613
+ return productData;
2614
+ }
2615
+
2616
+ if (document && document.cookie && document.cookie.match('LIZHAO_DEBUG_CONSOLE_FLAG=1')) {
2617
+ window.DEBUG_TEMP_CONSOLE_FLAG = true;
2618
+ }
2619
+
2620
+ var planbook = /*#__PURE__*/Object.freeze({
2621
+ __proto__: null,
2622
+ calcTotalBaof: calcTotalBaof,
2623
+ clearAddAndTakeAndAdjustBaoeData: clearAddAndTakeAndAdjustBaoeData,
2624
+ converUnit10000: converUnit10000,
2625
+ convertEleOrderListToObj: convertEleOrderListToObj,
2626
+ convertPersonData: convertPersonData,
2627
+ convertProductData: convertProductData,
2628
+ deepCopy: deepCopy,
2629
+ formatNumberToThousand: formatNumberToThousand,
2630
+ getAgeFromBirth: getAgeFromBirth,
2631
+ getElementVerifyFromProductVerify: getElementVerifyFromProductVerify,
2632
+ getHuomianPeriodValue: getHuomianPeriodValue,
2633
+ getInsuredAgeRange: getInsuredAgeRange,
2634
+ getNumberFromYear: getNumberFromYear,
2635
+ initElementValidateRules: initElementValidateRules,
2636
+ initInsuranceData: initInsuranceData,
2637
+ initPersonData: initPersonData,
2638
+ initProductData: initProductData,
2639
+ insuranceDataHandler: insuranceDataHandler,
2640
+ isHideProduct: isHideProduct,
2641
+ personDataHandler: personDataHandler,
2642
+ productDataHandler: productDataHandler,
2643
+ restrictElementsInInsurance: restrictElementsInInsurance,
2644
+ restrictInsurancesInProduct: restrictInsurancesInProduct,
2645
+ setCommonInfo: setCommonInfo,
2646
+ setGroupInsurance: setGroupInsurance,
2647
+ setPersonAgeOptions: setPersonAgeOptions,
2648
+ verifyProductRules: verifyProductRules
2649
+ });
2650
+
2651
+ // 创建axios实例
2652
+ var service = axios.create({
2653
+ baseURL: APP_HOSTNAME,
2654
+ withCredentials: true,
2655
+ timeout: 10000,
2656
+ // 请求超时时间
2657
+ headers: {
2658
+ 'X-Requested-With': 'XMLHttpRequest'
2659
+ }
2660
+ });
2661
+ var loadingTimer = null;
2662
+ var loading = function loading(show) {
2663
+ if (window.appBridge && window.appBridge.showLoading) {
2664
+ if (show) {
2665
+ window.appBridge.showLoading();
2666
+ } else {
2667
+ window.appBridge.hideLoading();
2668
+ }
2669
+ }
2670
+ };
2671
+
2672
+ // request拦截器
2673
+ service.interceptors.request.use(function (config) {
2674
+ if (loadingTimer) clearTimeout(loadingTimer);
2675
+ loadingTimer = setTimeout(function () {
2676
+ loading(true);
2677
+ }, 300);
2678
+ return config;
2679
+ }, function (error) {
2680
+ // Do something with request error
2681
+ console.log(error); // for debug
2682
+ Promise.reject(error);
2683
+ });
2684
+
2685
+ // respone拦截器
2686
+ service.interceptors.response.use(function (response) {
2687
+ if (loadingTimer) clearTimeout(loadingTimer);
2688
+ loading(false);
2689
+ var res = response.data;
2690
+ if (res.code === 401 || res.status === 401) {
2691
+ // gotoLogin()
2692
+ return Promise.reject('login');
2693
+ }
2694
+ return res;
2695
+ }, function (error) {
2696
+ if (loadingTimer) clearTimeout(loadingTimer);
2697
+ loading(false);
2698
+ if (error.response && error.response.status == 401) {
2699
+ // gotoLogin()
2700
+ return Promise.reject('login');
2701
+ }
2702
+ console.log('err' + error); // for debug
2703
+ return Promise.reject(error);
2704
+ });
2705
+
2706
+ var baseURL = "https://insurance2a-api.wyins.net".concat(IS_PRODUCT_ENV ? '' : '.cn');
2707
+
2708
+ /**
2709
+ * **获取地址信息**
2710
+ * @ignore
2711
+ * @author watson
2712
+ * @date 2022-04-26
2713
+ * @param {string} fetchUrl api url
2714
+ * @param {object} data 接口传参
2715
+ * @returns {object} addressData
2716
+ */
2717
+ function getAddress(fetchUrl, data) {
2718
+ return new Promise(function (resolve, reject) {
2719
+ service({
2720
+ baseURL: fetchUrl,
2721
+ url: undefined,
2722
+ method: 'POST',
2723
+ urlParams: undefined,
2724
+ data: data
2725
+ }).then(function (res) {
2726
+ resolve(res);
2727
+ }).catch(function (err) {
2728
+ reject(err);
2729
+ });
2730
+ });
2731
+ }
2732
+
2733
+ /**
2734
+ * **获取用户信息**
2735
+ * @ignore
2736
+ * @author watson
2737
+ * @date 2022-04-26
2738
+ * @param {string} fetchUrl api url
2739
+ * @returns {promise}
2740
+ */
2741
+ function getUuid(fetchUrl) {
2742
+ return new Promise(function (resolve, reject) {
2743
+ service({
2744
+ baseURL: fetchUrl,
2745
+ url: undefined,
2746
+ method: 'GET',
2747
+ urlParams: undefined,
2748
+ data: null
2749
+ }).then(function (res) {
2750
+ resolve(res);
2751
+ }).catch(function (err) {
2752
+ reject(err);
2753
+ });
2754
+ });
2755
+ }
2756
+
2757
+ /**
2758
+ * **计划书初始化参数**
2759
+ * @ignore
2760
+ * @author watson
2761
+ * @date 2022-04-26
2762
+ * @param {any} planParams 计划书初始化参数
2763
+ * @param {any} planParams.detail_age 被保人生日
2764
+ * @param {any} planParams.detail_sex 被保人性别
2765
+ * @param {any} planParams.detail_relation 投被保人关系
2766
+ * @param {any} planParams.detail_applicant_age 投保人生日
2767
+ * @param {any} planParams.detail_applicant_sex 投保人性别
2768
+ * @returns {boolean} 是否有计划书参数
2769
+ */
2770
+ function hasPlanParams(planParams) {
2771
+ var type = false;
2772
+ if (planParams && (planParams.detail_age || planParams.detail_sex || planParams.detail_relation || planParams.detail_applicant_age || planParams.detail_applicant_sex)) {
2773
+ type = true;
2774
+ }
2775
+ return type;
2776
+ }
2777
+
2778
+ /**
2779
+ * **转换计划书数据**
2780
+ * @ignore
2781
+ * @author watson
2782
+ * @date 2022-04-26
2783
+ * @param {array} widgets 页面渲染数据
2784
+ * @param {object} currentData 试算参数
2785
+ * @param {object} planParams 计划书初始化参数
2786
+ * @returns {void}
2787
+ */
2788
+ function translatePlanData(widgets, currentData, planParams) {
2789
+ widgets.forEach(function (item) {
2790
+ var current;
2791
+ // 增加current字段,保存current_data的数据
2792
+ if (item.duty) {
2793
+ current = currentData.find(function (it) {
2794
+ return it.k === item.key && it.risk === item.riskCode && item.duty === it.d;
2795
+ });
2796
+ } else {
2797
+ current = currentData.find(function (it) {
2798
+ return it.k === item.key && it.risk === item.riskCode;
2799
+ });
2800
+ }
2801
+ if (planParams) {
2802
+ // 被保人生日 / 年龄
2803
+ if (planParams.detail_age && item.key === 'detail_age') {
2804
+ if (/-/.test(planParams.detail_age)) {
2805
+ // 被保人生日
2806
+ item.type = 'v-text';
2807
+ item.name = planParams.detail_age;
2808
+ current.v = planParams.detail_age;
2809
+ } else if (/岁/.test(planParams.detail_age)) {
2810
+ // 被保人年龄
2811
+ item.type = 'v-text';
2812
+ item.name = planParams.detail_age;
2813
+ item.label = item.label + '(年龄)';
2814
+ current.v = planParams.detail_age.replace('周', '').replace('岁', '').replace('Y', '') + 'Y';
2815
+ }
2816
+ }
2817
+ // 被保人性别
2818
+ if (planParams.detail_sex && item.key === 'detail_sex') {
2819
+ item.type = 'v-text';
2820
+ item.name = planParams.detail_sex === '1' ? '男' : '女';
2821
+ current.v = planParams.detail_sex;
2822
+ }
2823
+ // 投被保人关系
2824
+ // 初始化
2825
+ // if (
2826
+ // item.key === 'detail_relation' &&
2827
+ // planParams.detail_sex &&
2828
+ // planParams.detail_applicant_sex &&
2829
+ // String(planParams.detail_sex) ===
2830
+ // String(planParams.detail_applicant_sex)
2831
+ // ) {
2832
+ // let otemp = [];
2833
+ // item.opts[item.key].forEach(i => {
2834
+ // if (
2835
+ // String(planParams.detail_sex) === '1' &&
2836
+ // String(planParams.detail_applicant_sex) === '1'
2837
+ // ) {
2838
+ // // 投被保人 - 男 1
2839
+ // if (['1', '14', '16', '18'].includes(String(i.value))) {
2840
+ // otemp.push(i);
2841
+ // }
2842
+ // } else if (
2843
+ // String(planParams.detail_sex) === '2' &&
2844
+ // String(planParams.detail_applicant_sex) === '2'
2845
+ // ) {
2846
+ // // 投被保人 - 女 2
2847
+ // if (['1', '15', '17', '19'].includes(String(i.value))) {
2848
+ // otemp.push(i);
2849
+ // }
2850
+ // }
2851
+ // });
2852
+ // item.opts[item.key] = otemp;
2853
+ // console.log('otemp', otemp);
2854
+ // }
2855
+ if (planParams.detail_relation && item.key === 'detail_relation') {
2856
+ // 条件检索
2857
+ if (planParams.detail_relation === '-1' || planParams.detail_relation === -1) {
2858
+ // 非本人
2859
+ var temp = [];
2860
+ item.opts[item.key].forEach(function (i) {
2861
+ if (String(i.value) != '1') {
2862
+ temp.push(i);
2863
+ }
2864
+ });
2865
+ item.name = temp[0] && temp[0].name ? temp[0].name : '';
2866
+ item.opts[item.key] = temp;
2867
+ } else if (planParams.detail_relation) {
2868
+ // 指定人 - 本人 其他人
2869
+ item.type = 'v-text';
2870
+ current.v = planParams.detail_relation;
2871
+ var _temp = [];
2872
+ item.opts[item.key].forEach(function (i) {
2873
+ if (String(i.value) === String(planParams.detail_relation)) {
2874
+ _temp.push(i);
2875
+ item.name = i.name;
2876
+ }
2877
+ });
2878
+ item.opts[item.key] = _temp;
2879
+ }
2880
+ }
2881
+ // 投保人出生日期
2882
+ if (planParams.detail_applicant_age && item.key === 'detail_applicant_age') {
2883
+ if (/-/.test(planParams.detail_applicant_age)) {
2884
+ // 被保人生日
2885
+ item.type = 'v-text';
2886
+ item.name = planParams.detail_applicant_age;
2887
+ current.v = planParams.detail_applicant_age;
2888
+ } else if (/岁/.test(planParams.detail_applicant_age)) {
2889
+ // 被保人年龄
2890
+ item.type = 'v-text';
2891
+ item.name = planParams.detail_applicant_age;
2892
+ item.label = item.label + '(年龄)';
2893
+ current.v = planParams.detail_applicant_age.replace('周', '').replace('岁', '').replace('Y', '') + 'Y';
2894
+ }
2895
+ }
2896
+ // 投保人性别
2897
+ if (planParams.detail_applicant_sex && item.key === 'detail_applicant_sex') {
2898
+ item.type = 'v-text';
2899
+ item.name = planParams.detail_applicant_sex === '1' ? '男' : '女';
2900
+ current.v = planParams.detail_applicant_sex;
2901
+ }
2902
+ }
2903
+ });
2904
+ }
2905
+
2906
+ /**
2907
+ * **试算参数转化**
2908
+ * @ignore
2909
+ * @author watson
2910
+ * @date 2022-04-26
2911
+ * @param {object} currentData
2912
+ * @param {object} planParams
2913
+ * @returns {object}
2914
+ */
2915
+ function tranlateCurrentData(currentData, planParams) {
2916
+ var currentDataCopy = JSON.parse(JSON.stringify(currentData));
2917
+ currentDataCopy.forEach(function (item) {
2918
+ var current = item;
2919
+ if (planParams) {
2920
+ if (planParams.detail_age && item.k === 'detail_age') {
2921
+ if (/-/.test(planParams.detail_age)) {
2922
+ // 被保人生日
2923
+ current.v = planParams.detail_age;
2924
+ } else if (/岁/.test(planParams.detail_age)) {
2925
+ // 被保人年龄
2926
+ current.v = planParams.detail_age.replace('周', '').replace('岁', '').replace('Y', '') + 'Y';
2927
+ }
2928
+ }
2929
+ // 被保人性别
2930
+ if (planParams.detail_sex && item.k === 'detail_sex') {
2931
+ current.v = planParams.detail_sex;
2932
+ }
2933
+ // 投被保人关系
2934
+ if (planParams.detail_relation && item.k === 'detail_relation') {
2935
+ if (planParams.detail_relation != -1 || planParams.detail_relation != '-1') {
2936
+ current.v = planParams.detail_relation;
2937
+ }
2938
+ }
2939
+ // 投保人出生日期
2940
+ if (planParams.detail_applicant_age && item.k === 'detail_applicant_age') {
2941
+ if (/-/.test(planParams.detail_applicant_age)) {
2942
+ // 被保人生日
2943
+ current.v = planParams.detail_applicant_age;
2944
+ } else if (/岁/.test(planParams.detail_applicant_age)) {
2945
+ // 被保人年龄
2946
+ current.v = planParams.detail_applicant_age.replace('周', '').replace('岁', '').replace('Y', '') + 'Y';
2947
+ }
2948
+ }
2949
+ // 投保人性别
2950
+ if (planParams.detail_applicant_sex && item.k === 'detail_applicant_sex') {
2951
+ current.v = planParams.detail_applicant_sex;
2952
+ }
2953
+ }
2954
+ });
2955
+ return currentDataCopy;
2956
+ }
2957
+
2958
+ /**
2959
+ * 险种计算
2960
+ * @author watson
2961
+ * @date 2022-04-26
2962
+ * @param {object} urlParams 接口URL上面的参数,c端必传uuid
2963
+ * @param {object} postParams 试算用的参数,product_id, current_data 和 scenario: 'h5Widget'
2964
+ * @param {object} planParams 计划书初始化参数
2965
+ * @returns {promise} 试算结果
2966
+ */
2967
+ function insureCalculate(urlParams, postParams, planParams) {
2968
+ if (!postParams || _typeof$1(postParams) !== 'object' || !postParams.product_id) {
2969
+ return postParams;
2970
+ }
2971
+ if (postParams && !postParams.scenario) {
2972
+ postParams.scenario = 'h5Widget';
2973
+ }
2974
+ var url = '/api/product/data/calculate';
2975
+ if (urlParams && urlParams.uuid) {
2976
+ url += "?userUuid=".concat(urlParams.uuid);
2977
+ } else if (urlParams && urlParams.openId) {
2978
+ url += "?userUuid=".concat(urlParams.openId);
2979
+ }
2980
+ if (urlParams && urlParams.appid) {
2981
+ if (url.indexOf('?') > -1) {
2982
+ url += "&appId=".concat(urlParams.appid);
2983
+ } else {
2984
+ url += "?appId=".concat(urlParams.appid);
2985
+ }
2986
+ }
2987
+ if (hasPlanParams(planParams) && postParams.current_data) {
2988
+ postParams.current_data = tranlateCurrentData(postParams.current_data, planParams);
2989
+ }
2990
+ return new Promise(function (resolve, reject) {
2991
+ service({
2992
+ baseURL: baseURL,
2993
+ url: url,
2994
+ method: 'POST',
2995
+ urlParams: urlParams,
2996
+ data: postParams
2997
+ }).then(function (res) {
2998
+ if (res.code === 200) {
2999
+ var data = JSON.parse(JSON.stringify(res.data));
3000
+ if (hasPlanParams(planParams)) {
3001
+ var widgets = data.widgets;
3002
+ var currentData = data.current_data;
3003
+ translatePlanData(widgets, currentData, planParams);
3004
+ }
3005
+ var cData = {
3006
+ widgets: data.widgets,
3007
+ total_premium: data.total_premium,
3008
+ terms: data.terms,
3009
+ product_id: data.product_id,
3010
+ current_data: data.current_data,
3011
+ risk_premiums: data.risk_premiums
3012
+ };
3013
+ resolve({
3014
+ code: 200,
3015
+ data: cData
3016
+ });
3017
+ } else {
3018
+ reject(res);
3019
+ }
3020
+ }).catch(function (err) {
3021
+ reject(err);
3022
+ });
3023
+ });
3024
+ }
3025
+
3026
+ /**
3027
+ * **检查险种计算**
3028
+ * @author watson
3029
+ * @date 2022-04-26
3030
+ * @param {object} urlParams 接口URL上面的参数,c端必传uuid
3031
+ * @param {object} postParams 试算用的参数,product_id, current_data 和 scenario: 'h5Widget'
3032
+ * @param {object} planParams 计划书初始化参数
3033
+ * @returns {promise} 试算结果
3034
+ */
3035
+ function checkInsureCalculate(_x, _x2, _x3) {
3036
+ return _checkInsureCalculate.apply(this, arguments);
3037
+ }
3038
+
3039
+ /**
3040
+ * 描述
3041
+ * @ignore
3042
+ * @author watson
3043
+ * @date 2022-04-26
3044
+ * @param {object} urlParams
3045
+ * @param {object} postParams
3046
+ * @param {object} planParams
3047
+ * @returns {promise}
3048
+ */
3049
+ function _checkInsureCalculate() {
3050
+ _checkInsureCalculate = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(urlParams, postParams, planParams) {
3051
+ var res, data, _t;
3052
+ return _regeneratorRuntime.wrap(function (_context) {
3053
+ while (1) switch (_context.prev = _context.next) {
3054
+ case 0:
3055
+ _context.next = 1;
3056
+ return checkInsureCalculateIn(urlParams, postParams, planParams);
3057
+ case 1:
3058
+ res = _context.sent;
3059
+ if (!(postParams && !postParams.current_data)) {
3060
+ _context.next = 5;
3061
+ break;
3062
+ }
3063
+ data = JSON.parse(JSON.stringify(res.data));
3064
+ postParams.current_data = data.current_data;
3065
+ // 重新试算
3066
+ _context.prev = 2;
3067
+ _context.next = 3;
3068
+ return checkInsureCalculateIn(urlParams, postParams, planParams);
3069
+ case 3:
3070
+ res = _context.sent;
3071
+ _context.next = 5;
3072
+ break;
3073
+ case 4:
3074
+ _context.prev = 4;
3075
+ _t = _context["catch"](2);
3076
+ res = _t;
3077
+ case 5:
3078
+ if (!(res && res.code === 200)) {
3079
+ _context.next = 6;
3080
+ break;
3081
+ }
3082
+ return _context.abrupt("return", res);
3083
+ case 6:
3084
+ return _context.abrupt("return", Promise.reject(res));
3085
+ case 7:
3086
+ case "end":
3087
+ return _context.stop();
3088
+ }
3089
+ }, _callee, null, [[2, 4]]);
3090
+ }));
3091
+ return _checkInsureCalculate.apply(this, arguments);
3092
+ }
3093
+ function checkInsureCalculateIn(urlParams, postParams, planParams) {
3094
+ if (!postParams || _typeof$1(postParams) !== 'object' || !postParams.product_id) {
3095
+ return Promise.reject({
3096
+ code: 400,
3097
+ msg: 'postParams参数非法'
3098
+ });
3099
+ }
3100
+ if (postParams && !postParams.scenario) {
3101
+ postParams.scenario = 'h5Widget';
3102
+ }
3103
+ var url = '/api/product/data/calculate';
3104
+ if (urlParams && urlParams.uuid) {
3105
+ url += "?userUuid=".concat(urlParams.uuid);
3106
+ } else if (urlParams && urlParams.openId) {
3107
+ url += "?userUuid=".concat(urlParams.openId);
3108
+ }
3109
+ if (urlParams && urlParams.appid) {
3110
+ if (url.indexOf('?') > -1) {
3111
+ url += "&appId=".concat(urlParams.appid);
3112
+ } else {
3113
+ url += "?appId=".concat(urlParams.appid);
3114
+ }
3115
+ }
3116
+ if (hasPlanParams(planParams) && postParams.current_data) {
3117
+ postParams.current_data = tranlateCurrentData(postParams.current_data, planParams);
3118
+ }
3119
+ return new Promise(function (resolve, reject) {
3120
+ service({
3121
+ baseURL: baseURL,
3122
+ url: url,
3123
+ method: 'POST',
3124
+ urlParams: urlParams,
3125
+ data: postParams
3126
+ }).then(function (res) {
3127
+ if (res.code === 200) {
3128
+ // if (postParams && !postParams.current_data) {
3129
+ // let data = JSON.parse(JSON.stringify(res.data));
3130
+ // postParams.current_data = data.current_data
3131
+ // // 重新试算
3132
+ // checkInsureCalculate(urlParams, postParams, planParams)
3133
+ // }
3134
+ resolve({
3135
+ code: 200,
3136
+ data: res.data
3137
+ });
3138
+ } else {
3139
+ reject(res);
3140
+ }
3141
+ }).catch(function (err) {
3142
+ reject(err);
3143
+ });
3144
+ });
3145
+ }
3146
+
3147
+ var trade = /*#__PURE__*/Object.freeze({
3148
+ __proto__: null,
3149
+ checkInsureCalculate: checkInsureCalculate,
3150
+ checkInsureCalculateIn: checkInsureCalculateIn,
3151
+ getAddress: getAddress,
3152
+ getUuid: getUuid,
3153
+ hasPlanParams: hasPlanParams,
3154
+ insureCalculate: insureCalculate
3155
+ });
3156
+
3157
+ var index = {
3158
+ planbook: planbook,
3159
+ trade: trade
3160
+ };
3161
+
3162
+ exports.calcTotalBaof = calcTotalBaof;
3163
+ exports.checkInsureCalculate = checkInsureCalculate;
3164
+ exports.checkInsureCalculateIn = checkInsureCalculateIn;
3165
+ exports.clearAddAndTakeAndAdjustBaoeData = clearAddAndTakeAndAdjustBaoeData;
3166
+ exports.converUnit10000 = converUnit10000;
3167
+ exports.convertEleOrderListToObj = convertEleOrderListToObj;
3168
+ exports.convertPersonData = convertPersonData;
3169
+ exports.convertProductData = convertProductData;
3170
+ exports.deepCopy = deepCopy;
3171
+ exports.default = index;
3172
+ exports.formatNumberToThousand = formatNumberToThousand;
3173
+ exports.getAddress = getAddress;
3174
+ exports.getAgeFromBirth = getAgeFromBirth;
3175
+ exports.getElementVerifyFromProductVerify = getElementVerifyFromProductVerify;
3176
+ exports.getHuomianPeriodValue = getHuomianPeriodValue;
3177
+ exports.getInsuredAgeRange = getInsuredAgeRange;
3178
+ exports.getNumberFromYear = getNumberFromYear;
3179
+ exports.getUuid = getUuid;
3180
+ exports.hasPlanParams = hasPlanParams;
3181
+ exports.initElementValidateRules = initElementValidateRules;
3182
+ exports.initInsuranceData = initInsuranceData;
3183
+ exports.initPersonData = initPersonData;
3184
+ exports.initProductData = initProductData;
3185
+ exports.insuranceDataHandler = insuranceDataHandler;
3186
+ exports.insureCalculate = insureCalculate;
3187
+ exports.isHideProduct = isHideProduct;
3188
+ exports.personDataHandler = personDataHandler;
3189
+ exports.productDataHandler = productDataHandler;
3190
+ exports.restrictElementsInInsurance = restrictElementsInInsurance;
3191
+ exports.restrictInsurancesInProduct = restrictInsurancesInProduct;
3192
+ exports.setCommonInfo = setCommonInfo;
3193
+ exports.setGroupInsurance = setGroupInsurance;
3194
+ exports.setPersonAgeOptions = setPersonAgeOptions;
3195
+ exports.verifyProductRules = verifyProductRules;
3196
+
3197
+ Object.defineProperty(exports, '__esModule', { value: true });
3198
+
3199
+ }));