cnhis-design-vue 2.1.56 → 2.1.57

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 (574) hide show
  1. package/.prettierrc.js +27 -27
  2. package/CHANGELOG.md +2646 -2551
  3. package/README.md +90 -90
  4. package/commitlint.config.js +1 -1
  5. package/es/affix/index.js +8 -8
  6. package/es/age/index.js +18 -18
  7. package/es/alert/index.js +8 -8
  8. package/es/anchor/index.js +8 -8
  9. package/es/auto-complete/index.js +8 -8
  10. package/es/avatar/index.js +8 -8
  11. package/es/back-top/index.js +8 -8
  12. package/es/badge/index.js +8 -8
  13. package/es/base/index.js +8 -8
  14. package/es/big-table/index.js +308 -308
  15. package/es/breadcrumb/index.js +8 -8
  16. package/es/button/index.js +31 -31
  17. package/es/calendar/index.js +8 -8
  18. package/es/captcha/index.js +7 -7
  19. package/es/card/index.js +8 -8
  20. package/es/carousel/index.js +8 -8
  21. package/es/cascader/index.js +8 -8
  22. package/es/checkbox/index.js +17 -17
  23. package/es/col/index.js +8 -8
  24. package/es/collapse/index.js +8 -8
  25. package/es/color-picker/index.js +5 -5
  26. package/es/comment/index.js +8 -8
  27. package/es/config-provider/index.js +8 -8
  28. package/es/date-picker/index.js +30 -30
  29. package/es/descriptions/index.js +8 -8
  30. package/es/divider/index.js +8 -8
  31. package/es/drag-layout/index.js +5 -5
  32. package/es/drawer/index.js +8 -8
  33. package/es/dropdown/index.js +8 -8
  34. package/es/editor/index.js +1 -1
  35. package/es/ellipsis/index.js +3211 -0
  36. package/es/ellipsis/style.css +1 -0
  37. package/es/empty/index.js +8 -8
  38. package/es/fabric-chart/index.js +45 -45
  39. package/es/form/index.js +8 -8
  40. package/es/form-model/index.js +8 -8
  41. package/es/form-table/index.js +1600 -431
  42. package/es/form-table/style.css +1 -1
  43. package/es/grid/index.js +4 -4
  44. package/es/index/index.js +2567 -1411
  45. package/es/index/style.css +1 -1
  46. package/es/input/index.js +11 -11
  47. package/es/input-number/index.js +8 -8
  48. package/es/keep-cache/index.js +9 -9
  49. package/es/layout/index.js +8 -8
  50. package/es/list/index.js +8 -8
  51. package/es/locale-provider/index.js +8 -8
  52. package/es/map/index.js +13 -13
  53. package/es/mentions/index.js +8 -8
  54. package/es/menu/index.js +8 -8
  55. package/es/message/index.js +8 -8
  56. package/es/multi-chat/index.js +116 -116
  57. package/es/multi-chat-client/index.js +110 -110
  58. package/es/multi-chat-history/index.js +6 -6
  59. package/es/multi-chat-record/index.js +27 -27
  60. package/es/multi-chat-setting/index.js +43 -43
  61. package/es/multi-chat-sip/index.js +1 -1
  62. package/es/notification/index.js +8 -8
  63. package/es/page-header/index.js +8 -8
  64. package/es/pagination/index.js +8 -8
  65. package/es/popconfirm/index.js +8 -8
  66. package/es/popover/index.js +8 -8
  67. package/es/progress/index.js +8 -8
  68. package/es/radio/index.js +17 -17
  69. package/es/rate/index.js +8 -8
  70. package/es/result/index.js +8 -8
  71. package/es/row/index.js +8 -8
  72. package/es/scale-container/index.js +3356 -0
  73. package/es/scale-container/style.css +1 -0
  74. package/es/scale-view/index.js +158 -158
  75. package/es/select/index.js +83 -70
  76. package/es/select/style.css +1 -1
  77. package/es/select-label/index.js +50 -50
  78. package/es/select-person/index.js +20 -20
  79. package/es/shortcut-setter/index.js +10 -10
  80. package/es/skeleton/index.js +8 -8
  81. package/es/slider/index.js +8 -8
  82. package/es/space/index.js +8 -8
  83. package/es/spin/index.js +8 -8
  84. package/es/statistic/index.js +8 -8
  85. package/es/steps/index.js +8 -8
  86. package/es/switch/index.js +8 -8
  87. package/es/table-filter/index.js +251 -238
  88. package/es/table-filter/style.css +1 -1
  89. package/es/tabs/index.js +8 -8
  90. package/es/tag/index.js +9 -9
  91. package/es/time-picker/index.js +8 -8
  92. package/es/timeline/index.js +8 -8
  93. package/es/tooltip/index.js +8 -8
  94. package/es/transfer/index.js +8 -8
  95. package/es/tree/index.js +8 -8
  96. package/es/tree-select/index.js +8 -8
  97. package/es/upload/index.js +8 -8
  98. package/es/utils/clickoutside.js +7 -7
  99. package/es/utils/kty.min-1.0.0.js +5 -5
  100. package/es/utils/time-domain.js +16 -16
  101. package/es/utils/utils-map.js +32 -32
  102. package/es/utils/vexutils.js +27 -27
  103. package/es/verification-code/index.js +2 -2
  104. package/lib/cui.common.js +4979 -1618
  105. package/lib/cui.umd.js +4979 -1618
  106. package/lib/cui.umd.min.js +67 -61
  107. package/package.json +110 -108
  108. package/packages/affix/index.js +12 -12
  109. package/packages/affix/src/Affix.jsx +12 -12
  110. package/packages/age/index.js +27 -27
  111. package/packages/age/src/age/index.vue +139 -139
  112. package/packages/age/src/age-com/index.vue +209 -209
  113. package/packages/alert/index.js +12 -12
  114. package/packages/alert/src/Alert.jsx +11 -11
  115. package/packages/anchor/index.js +18 -18
  116. package/packages/anchor/src/Anchor.jsx +11 -11
  117. package/packages/anchor/src/Link.jsx +11 -11
  118. package/packages/auto-complete/index.js +12 -12
  119. package/packages/auto-complete/src/AutoComplete.jsx +12 -12
  120. package/packages/avatar/index.js +12 -12
  121. package/packages/avatar/src/Avatar.jsx +11 -11
  122. package/packages/back-top/index.js +12 -12
  123. package/packages/back-top/src/BackTop.jsx +11 -11
  124. package/packages/badge/index.js +12 -12
  125. package/packages/badge/src/Badge.jsx +11 -11
  126. package/packages/base/index.js +3 -3
  127. package/packages/big-table/index.js +16 -16
  128. package/packages/big-table/src/BigTable.vue +3144 -3144
  129. package/packages/big-table/src/Fieldset.vue +2067 -2067
  130. package/packages/big-table/src/assets/iconfont/iconfont.css +21 -21
  131. package/packages/big-table/src/assets/style/table-base.less +385 -385
  132. package/packages/big-table/src/assets/style/table-global.less +175 -175
  133. package/packages/big-table/src/components/AutoLayoutButton.vue +279 -279
  134. package/packages/big-table/src/components/NoData.vue +81 -81
  135. package/packages/big-table/src/components/TextOverTooltip.vue +120 -120
  136. package/packages/big-table/src/components/edit-form/EditForm.vue +509 -509
  137. package/packages/big-table/src/components/edit-form/edit-component/config-data/index.js +68 -68
  138. package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +60 -60
  139. package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +54 -54
  140. package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +39 -39
  141. package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +79 -79
  142. package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +37 -37
  143. package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +82 -82
  144. package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +95 -95
  145. package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +40 -40
  146. package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +55 -55
  147. package/packages/big-table/src/components/edit-form/edit-component/edit-switch/edit-switch.vue +43 -43
  148. package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +41 -41
  149. package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +40 -40
  150. package/packages/big-table/src/components/edit-form/edit-component/mixins/bound-date.js +3 -3
  151. package/packages/big-table/src/components/edit-form/edit-component/mixins/dateType.js +217 -217
  152. package/packages/big-table/src/components/edit-form/edit-component/mixins/item-default.js +639 -639
  153. package/packages/big-table/src/components/edit-form/edit-component/mixins/search.js +1247 -1247
  154. package/packages/big-table/src/components/edit-form/edit-component/register-com.js +26 -26
  155. package/packages/big-table/src/components/edit-form/edit-item/form-event.js +80 -80
  156. package/packages/big-table/src/components/edit-form/edit-item/global-props.js +33 -33
  157. package/packages/big-table/src/components/edit-form/edit-item/index.js +4 -4
  158. package/packages/big-table/src/components/edit-form/edit-item/render-methods.js +28 -28
  159. package/packages/big-table/src/components/edit-form/edit-item/validate-rules.js +463 -463
  160. package/packages/big-table/src/components/edit-form/edit-mixins/form-commom.js +673 -673
  161. package/packages/big-table/src/components/edit-form/edit-mixins/index.js +3 -3
  162. package/packages/big-table/src/components/edit-form/edit-utils/index.js +112 -112
  163. package/packages/big-table/src/components/password-com.vue +58 -58
  164. package/packages/big-table/src/components/player-vod/index.vue +57 -57
  165. package/packages/big-table/src/components/player-vod/player.vue +189 -189
  166. package/packages/big-table/src/components/player-vod/video-list.vue +265 -265
  167. package/packages/big-table/src/components/player-vod/video-modal.vue +126 -126
  168. package/packages/big-table/src/utils/CustomPagination.vue +86 -86
  169. package/packages/big-table/src/utils/batchEditing.js +610 -610
  170. package/packages/big-table/src/utils/bigTableProps.js +103 -103
  171. package/packages/big-table/src/utils/format.js +557 -557
  172. package/packages/big-table/src/utils/nestTable.js +109 -109
  173. package/packages/big-table/src/utils/tableParse.js +234 -234
  174. package/packages/breadcrumb/index.js +21 -21
  175. package/packages/breadcrumb/src/Breadcrumb.jsx +11 -11
  176. package/packages/breadcrumb/src/BreadcrumbItem.jsx +11 -11
  177. package/packages/breadcrumb/src/BreadcrumbSeparator.jsx +11 -11
  178. package/packages/button/index.js +21 -21
  179. package/packages/button/src/Button.jsx +11 -11
  180. package/packages/button/src/ButtonGroup.jsx +11 -11
  181. package/packages/button/src/ButtonPrint/components/IdentityVerification.vue +181 -181
  182. package/packages/button/src/ButtonPrint/index.vue +766 -766
  183. package/packages/button/src/ButtonPrint/mixin/his-print.js +95 -95
  184. package/packages/calendar/index.js +12 -12
  185. package/packages/calendar/src/Calendar.jsx +11 -11
  186. package/packages/captcha/index.js +9 -9
  187. package/packages/captcha/src/Captcha.vue +164 -164
  188. package/packages/captcha/src/Index.vue +47 -47
  189. package/packages/captcha/src/SlideVerify.vue +285 -285
  190. package/packages/card/index.js +21 -21
  191. package/packages/card/src/Card.jsx +12 -12
  192. package/packages/card/src/CardGrid.js +7 -7
  193. package/packages/card/src/CardMeta.js +7 -7
  194. package/packages/carousel/index.js +12 -12
  195. package/packages/carousel/src/Carousel.jsx +12 -12
  196. package/packages/cascader/index.js +12 -12
  197. package/packages/cascader/src/Cascader.jsx +11 -11
  198. package/packages/checkbox/index.js +30 -30
  199. package/packages/checkbox/src/Checkbox.jsx +11 -11
  200. package/packages/checkbox/src/CheckboxImg/index.vue +141 -141
  201. package/packages/checkbox/src/Group.jsx +11 -11
  202. package/packages/col/index.js +13 -13
  203. package/packages/col/src/Col.jsx +11 -11
  204. package/packages/collapse/index.js +18 -18
  205. package/packages/collapse/src/Collapse.jsx +11 -11
  206. package/packages/collapse/src/Panel.jsx +11 -11
  207. package/packages/color-picker/index.js +10 -10
  208. package/packages/color-picker/src/color-picker.vue +191 -191
  209. package/packages/color-picker/src/style.less +109 -109
  210. package/packages/comment/index.js +12 -12
  211. package/packages/comment/src/Comment.jsx +11 -11
  212. package/packages/config-provider/index.js +12 -12
  213. package/packages/config-provider/src/ConfigProvider.jsx +11 -11
  214. package/packages/date-picker/index.js +26 -26
  215. package/packages/date-picker/src/DatePicker.jsx +12 -12
  216. package/packages/date-picker/src/MonthPicker.jsx +11 -11
  217. package/packages/date-picker/src/RangePicker.jsx +11 -11
  218. package/packages/date-picker/src/WeekPicker.jsx +11 -11
  219. package/packages/date-picker/src/utils/index.js +374 -374
  220. package/packages/descriptions/index.js +18 -18
  221. package/packages/descriptions/src/Descriptions.jsx +11 -11
  222. package/packages/descriptions/src/Item.jsx +11 -11
  223. package/packages/divider/index.js +12 -12
  224. package/packages/divider/src/Divider.jsx +11 -11
  225. package/packages/drag-layout/DragFormLeftItem.vue +173 -173
  226. package/packages/drag-layout/DragFormRightItem.vue +284 -284
  227. package/packages/drag-layout/I18n-mixins.js +10 -10
  228. package/packages/drag-layout/drag-layout.vue +778 -778
  229. package/packages/drag-layout/index.js +12 -12
  230. package/packages/drawer/index.js +12 -12
  231. package/packages/drawer/src/Drawer.jsx +11 -11
  232. package/packages/dropdown/index.js +12 -12
  233. package/packages/dropdown/src/Dropdown.jsx +11 -11
  234. package/packages/editor/index.js +9 -9
  235. package/packages/ellipsis/index.js +9 -0
  236. package/packages/ellipsis/src/Ellipsis.vue +65 -0
  237. package/packages/empty/index.js +12 -12
  238. package/packages/empty/src/Empty.jsx +11 -11
  239. package/packages/fabric-chart/index.js +9 -9
  240. package/packages/fabric-chart/src/FabricGrid.vue +66 -66
  241. package/packages/fabric-chart/src/components/DropPopup.vue +90 -90
  242. package/packages/fabric-chart/src/components/MouseRightClick.vue +168 -168
  243. package/packages/fabric-chart/src/components/TimeScaleValue.vue +115 -115
  244. package/packages/fabric-chart/src/const/defaultVaule.js +59 -59
  245. package/packages/fabric-chart/src/fabric-chart/FabricLines.vue +552 -552
  246. package/packages/fabric-chart/src/fabric-chart/FabricPolylines.vue +1126 -1126
  247. package/packages/fabric-chart/src/fabric-chart/FabricScaleValue.vue +134 -134
  248. package/packages/fabric-chart/src/fabric-chart/FabricTextGroup.vue +566 -566
  249. package/packages/fabric-chart/src/mixins/fabricCommon.js +95 -95
  250. package/packages/fabric-chart/src/mixins/fabricObject.js +193 -193
  251. package/packages/fabric-chart/src/mixins/type.js +5 -5
  252. package/packages/form/index.js +16 -16
  253. package/packages/form/src/Form.jsx +11 -11
  254. package/packages/form/src/Item.jsx +11 -11
  255. package/packages/form-model/index.js +14 -14
  256. package/packages/form-model/src/FormModel.jsx +11 -11
  257. package/packages/form-model/src/Item.jsx +11 -11
  258. package/packages/form-table/index.js +16 -10
  259. package/packages/form-table/src/FormTable.vue +1110 -1110
  260. package/packages/form-table/src/components/table-component/config-data/index.js +80 -80
  261. package/packages/form-table/src/components/table-component/global-props.js +22 -22
  262. package/packages/form-table/src/components/table-component/index.js +8 -8
  263. package/packages/form-table/src/components/table-component/mixins/bound-date.js +455 -455
  264. package/packages/form-table/src/components/table-component/mixins/dateType.js +217 -217
  265. package/packages/form-table/src/components/table-component/mixins/item-default.js +257 -257
  266. package/packages/form-table/src/components/table-component/mixins/search.js +1238 -1228
  267. package/packages/form-table/src/components/table-component/register-com.js +30 -30
  268. package/packages/form-table/src/components/table-component/table-age/table-age.vue +175 -175
  269. package/packages/form-table/src/components/table-component/table-date-picker/table-date-picker.vue +87 -87
  270. package/packages/form-table/src/components/table-component/table-digital/table-digital.vue +93 -93
  271. package/packages/form-table/src/components/table-component/table-input/table-input.vue +81 -81
  272. package/packages/form-table/src/components/table-component/table-input-password/table-input-password.vue +126 -126
  273. package/packages/form-table/src/components/table-component/table-month-picker/table-month-picker.vue +55 -55
  274. package/packages/form-table/src/components/table-component/table-search/table-search.vue +174 -128
  275. package/packages/form-table/src/components/table-component/table-search-more/table-search-more.vue +191 -144
  276. package/packages/form-table/src/components/table-component/table-select/table-select.vue +64 -64
  277. package/packages/form-table/src/components/table-component/table-select-multiple/table-select-multiple.vue +81 -81
  278. package/packages/form-table/src/components/table-component/table-textarea/table-textarea.vue +76 -76
  279. package/packages/form-table/src/components/table-component/table-time-picker/table-time-picker.vue +55 -55
  280. package/packages/form-table/src/components/table-component/table-tree-select/table-tree-select.vue +135 -135
  281. package/packages/form-table/src/components/table-component/text-over-tooltip/TextOverTooltip.vue +97 -97
  282. package/packages/form-table/src/components/table-item/form-event.js +81 -81
  283. package/packages/form-table/src/components/table-item/global-props.js +27 -27
  284. package/packages/form-table/src/components/table-item/index.js +4 -4
  285. package/packages/form-table/src/components/table-item/render-methods.js +28 -28
  286. package/packages/form-table/src/components/table-item/validate-rules.js +520 -520
  287. package/packages/form-table/src/components/table-mixins/form-commom.js +98 -98
  288. package/packages/form-table/src/components/table-mixins/index.js +3 -3
  289. package/packages/form-table/src/components/table-utils/index.js +112 -112
  290. package/packages/form-table/src/disabledDetail.less +46 -46
  291. package/packages/grid/index.js +10 -10
  292. package/packages/grid/src/grid.js +28 -28
  293. package/packages/icon/index.js +10 -10
  294. package/packages/icon/src/icon.js +13 -13
  295. package/packages/index.js +313 -307
  296. package/packages/input/index.js +30 -30
  297. package/packages/input/src/Group.jsx +11 -11
  298. package/packages/input/src/Input.jsx +11 -11
  299. package/packages/input/src/Password.jsx +11 -11
  300. package/packages/input/src/Search.jsx +11 -11
  301. package/packages/input/src/TextArea.jsx +11 -11
  302. package/packages/input/src/input-quick/components/quick-item.vue +284 -284
  303. package/packages/input/src/input-quick/components/quick-popover.vue +596 -596
  304. package/packages/input/src/input-quick/index.vue +137 -137
  305. package/packages/input-number/index.js +12 -12
  306. package/packages/input-number/src/InputNumber.jsx +11 -11
  307. package/packages/keep-cache/KeepCache.js +236 -236
  308. package/packages/keep-cache/index.css +2 -2
  309. package/packages/keep-cache/index.js +8 -8
  310. package/packages/layout/index.js +27 -27
  311. package/packages/layout/src/Content.jsx +11 -11
  312. package/packages/layout/src/Footer.jsx +11 -11
  313. package/packages/layout/src/Header.jsx +11 -11
  314. package/packages/layout/src/Layout.jsx +11 -11
  315. package/packages/layout/src/Sider.jsx +11 -11
  316. package/packages/list/index.js +21 -21
  317. package/packages/list/src/Item.jsx +11 -11
  318. package/packages/list/src/ItemMeta.jsx +11 -11
  319. package/packages/list/src/List.jsx +11 -11
  320. package/packages/locale-provider/index.js +12 -12
  321. package/packages/locale-provider/src/LocaleProvider.jsx +11 -11
  322. package/packages/map/index.js +9 -9
  323. package/packages/map/src/Map.vue +484 -484
  324. package/packages/map/src/popup-map.vue +53 -53
  325. package/packages/mentions/index.js +18 -18
  326. package/packages/mentions/src/Mentions.jsx +11 -11
  327. package/packages/mentions/src/Option.jsx +11 -11
  328. package/packages/menu/index.js +27 -27
  329. package/packages/menu/src/Divider.jsx +11 -11
  330. package/packages/menu/src/Item.jsx +11 -11
  331. package/packages/menu/src/ItemGroup.jsx +11 -11
  332. package/packages/menu/src/Menu.jsx +11 -11
  333. package/packages/menu/src/SubMenu.jsx +11 -11
  334. package/packages/message/index.js +8 -8
  335. package/packages/modal/index.js +10 -10
  336. package/packages/modal/src/Modal.js +7 -7
  337. package/packages/multi-chat/chat/addConference.vue +200 -200
  338. package/packages/multi-chat/chat/addMembers.vue +411 -411
  339. package/packages/multi-chat/chat/advancedFilter.vue +372 -372
  340. package/packages/multi-chat/chat/calling.vue +246 -246
  341. package/packages/multi-chat/chat/chatFooter.vue +1596 -1596
  342. package/packages/multi-chat/chat/chatHistory.vue +605 -605
  343. package/packages/multi-chat/chat/chatMain.vue +1486 -1486
  344. package/packages/multi-chat/chat/client/index.vue +149 -149
  345. package/packages/multi-chat/chat/delay.vue +177 -177
  346. package/packages/multi-chat/chat/evaluate.vue +343 -343
  347. package/packages/multi-chat/chat/messageRecord.vue +324 -324
  348. package/packages/multi-chat/chat/mixins/NoData.js +20 -20
  349. package/packages/multi-chat/chat/mixins/base.js +97 -97
  350. package/packages/multi-chat/chat/mixins/uniRTCAPI.js +80 -80
  351. package/packages/multi-chat/chat/mixins/viewerOptions.js +67 -67
  352. package/packages/multi-chat/chat/quickReply.vue +439 -439
  353. package/packages/multi-chat/chat/robot/index.vue +312 -312
  354. package/packages/multi-chat/chat/scrollList.vue +1238 -1238
  355. package/packages/multi-chat/chat/videoVoiceList.vue +348 -348
  356. package/packages/multi-chat/chat/voice.vue +431 -431
  357. package/packages/multi-chat/components/avatar.vue +113 -113
  358. package/packages/multi-chat/components/chat-tabs-header.vue +251 -251
  359. package/packages/multi-chat/components/classify-tabs.vue +185 -185
  360. package/packages/multi-chat/components/empty.vue +24 -24
  361. package/packages/multi-chat/components/modal-refuse-reason.vue +112 -112
  362. package/packages/multi-chat/components/modal-sip.vue +160 -160
  363. package/packages/multi-chat/components/modal-user-transfer.vue +98 -98
  364. package/packages/multi-chat/components/msg-describe.vue +138 -138
  365. package/packages/multi-chat/components/msg-picture.vue +68 -68
  366. package/packages/multi-chat/components/msg-prescription.vue +205 -205
  367. package/packages/multi-chat/components/read-record.vue +133 -133
  368. package/packages/multi-chat/components/read-status.vue +34 -34
  369. package/packages/multi-chat/components/user-status.vue +198 -198
  370. package/packages/multi-chat/index.js +7 -7
  371. package/packages/multi-chat/setting/authority/index.vue +156 -156
  372. package/packages/multi-chat/setting/authority/roleSetting.vue +204 -204
  373. package/packages/multi-chat/setting/baseInfo/index.vue +1316 -1316
  374. package/packages/multi-chat/setting/customerService/batchSelect.vue +403 -403
  375. package/packages/multi-chat/setting/customerService/index.vue +273 -273
  376. package/packages/multi-chat/setting/event/edit/condition.vue +128 -128
  377. package/packages/multi-chat/setting/event/edit/index.vue +437 -437
  378. package/packages/multi-chat/setting/event/edit/notice.vue +129 -129
  379. package/packages/multi-chat/setting/event/edit/strategy.vue +98 -98
  380. package/packages/multi-chat/setting/event/index.vue +249 -249
  381. package/packages/multi-chat/setting/index.vue +269 -269
  382. package/packages/multi-chat/setting/page.vue +14 -14
  383. package/packages/multi-chat/setting/sessionList/index.vue +412 -412
  384. package/packages/multi-chat/setting/sessionList/messageRecord.vue +372 -372
  385. package/packages/multi-chat/setting/userConfig/index.vue +124 -124
  386. package/packages/multi-chat/setting/worktime/index.vue +274 -274
  387. package/packages/multi-chat/store/actions.js +452 -452
  388. package/packages/multi-chat/store/getters.js +371 -371
  389. package/packages/multi-chat/store/helper.js +66 -66
  390. package/packages/multi-chat/store/index.js +50 -50
  391. package/packages/multi-chat/store/mutation.js +296 -296
  392. package/packages/multi-chat/store/state.js +117 -117
  393. package/packages/multi-chat/style/emoji.css +315 -315
  394. package/packages/multi-chat/style/message.mixin.less +38 -38
  395. package/packages/multi-chat/utils/chatSock.js +93 -93
  396. package/packages/multi-chat/utils/compressImage.js +115 -115
  397. package/packages/multi-chat/utils/emoji.json +68 -68
  398. package/packages/multi-chat/utils/index.js +259 -259
  399. package/packages/multi-chat/utils/observer-scroll.js +49 -49
  400. package/packages/multi-chat/utils/panelsetting.js +48 -48
  401. package/packages/multi-chat-client/index.js +7 -7
  402. package/packages/multi-chat-history/index.js +7 -7
  403. package/packages/multi-chat-record/index.js +7 -7
  404. package/packages/multi-chat-setting/index.js +7 -7
  405. package/packages/multi-chat-sip/index.js +6 -6
  406. package/packages/notification/index.js +8 -8
  407. package/packages/page-header/index.js +12 -12
  408. package/packages/page-header/src/PageHeader.jsx +11 -11
  409. package/packages/pagination/index.js +12 -12
  410. package/packages/pagination/src/Pagination.jsx +11 -11
  411. package/packages/popconfirm/index.js +12 -12
  412. package/packages/popconfirm/src/Popconfirm.jsx +11 -11
  413. package/packages/popover/index.js +12 -12
  414. package/packages/popover/src/Popover.jsx +11 -11
  415. package/packages/progress/index.js +12 -12
  416. package/packages/progress/src/Progress.jsx +11 -11
  417. package/packages/radio/index.js +33 -33
  418. package/packages/radio/src/Group.jsx +11 -11
  419. package/packages/radio/src/Radio.jsx +11 -11
  420. package/packages/radio/src/RadioButton.jsx +11 -11
  421. package/packages/radio/src/RadioImg/index.vue +124 -124
  422. package/packages/rate/index.js +12 -12
  423. package/packages/rate/src/Rate.jsx +11 -11
  424. package/packages/result/index.js +12 -12
  425. package/packages/result/src/Result.jsx +11 -11
  426. package/packages/row/index.js +12 -12
  427. package/packages/row/src/Row.jsx +11 -11
  428. package/packages/scale-container/index.js +9 -0
  429. package/packages/scale-container/src/ScaleContainer.vue +194 -0
  430. package/packages/scale-container/src/scale.png +0 -0
  431. package/packages/scale-view/NoData.vue +81 -81
  432. package/packages/scale-view/answerParse.vue +133 -133
  433. package/packages/scale-view/customList.vue +801 -801
  434. package/packages/scale-view/data.js +80 -80
  435. package/packages/scale-view/evaluateCountdown.vue +155 -155
  436. package/packages/scale-view/evaluatePage.vue +202 -202
  437. package/packages/scale-view/formitem/data.js +3991 -3991
  438. package/packages/scale-view/formitem/index.js +6 -6
  439. package/packages/scale-view/formitem/r-address.vue +238 -238
  440. package/packages/scale-view/formitem/r-choice.vue +726 -726
  441. package/packages/scale-view/formitem/r-input.vue +92 -92
  442. package/packages/scale-view/formitem/r-prompt.vue +52 -52
  443. package/packages/scale-view/formitem/r-time.vue +285 -285
  444. package/packages/scale-view/formitem/r-upload-custom-list.vue +242 -242
  445. package/packages/scale-view/formitem/r-upload.vue +287 -287
  446. package/packages/scale-view/formitem/text-over-tooltip/TextOverTooltip.vue +98 -98
  447. package/packages/scale-view/index.js +17 -17
  448. package/packages/scale-view/mixin/NoData.js +38 -38
  449. package/packages/scale-view/mixin/evaluate.js +146 -146
  450. package/packages/scale-view/mixin/index.js +337 -337
  451. package/packages/scale-view/mixin/judgeTypes.js +267 -267
  452. package/packages/scale-view/scaleView.vue +2010 -2010
  453. package/packages/select/index.js +27 -27
  454. package/packages/select/src/CustomSelect/index.vue +130 -130
  455. package/packages/select/src/OptGroup.jsx +11 -11
  456. package/packages/select/src/Option.jsx +11 -11
  457. package/packages/select/src/Select/Select.vue +231 -231
  458. package/packages/select/src/Select/index.js +12 -12
  459. package/packages/select/src/TableSelect/index.vue +514 -514
  460. package/packages/select-label/index.js +14 -14
  461. package/packages/select-label/label-classify.vue +129 -129
  462. package/packages/select-label/labelFormContent.vue +787 -787
  463. package/packages/select-label/select-label.vue +581 -581
  464. package/packages/select-person/index.js +10 -10
  465. package/packages/select-person/search-tree.vue +373 -373
  466. package/packages/select-person/select-person.vue +1696 -1696
  467. package/packages/shortcut-setter/index.js +12 -12
  468. package/packages/shortcut-setter/src/ShortcutSetter.vue +55 -55
  469. package/packages/shortcut-setter/src/ShortcutSetterItem.vue +84 -84
  470. package/packages/shortcut-setter/src/utils/index.js +63 -63
  471. package/packages/skeleton/index.js +12 -12
  472. package/packages/skeleton/src/Skeleton.jsx +11 -11
  473. package/packages/slider/index.js +12 -12
  474. package/packages/slider/src/Slider.jsx +11 -11
  475. package/packages/space/index.js +12 -12
  476. package/packages/space/src/Space.jsx +11 -11
  477. package/packages/spin/index.js +12 -12
  478. package/packages/spin/src/Spin.jsx +11 -11
  479. package/packages/statistic/index.js +18 -18
  480. package/packages/statistic/src/Countdown.jsx +11 -11
  481. package/packages/statistic/src/Statistic.jsx +11 -11
  482. package/packages/steps/index.js +18 -18
  483. package/packages/steps/src/Step.jsx +11 -11
  484. package/packages/steps/src/Steps.jsx +11 -11
  485. package/packages/switch/index.js +12 -12
  486. package/packages/switch/src/Switch.jsx +11 -11
  487. package/packages/table-filter/index.js +27 -27
  488. package/packages/table-filter/src/base-search-com/BaseSearch.vue +2572 -2572
  489. package/packages/table-filter/src/classification/Classification-com.vue +1756 -1756
  490. package/packages/table-filter/src/classification/search-class-name.vue +266 -266
  491. package/packages/table-filter/src/classification/search-professional-model.vue +680 -680
  492. package/packages/table-filter/src/components/TextOverTooltip.vue +107 -107
  493. package/packages/table-filter/src/components/age-com/index.vue +205 -205
  494. package/packages/table-filter/src/components/button-group/ButtonGroup.vue +162 -162
  495. package/packages/table-filter/src/components/button-icon/button-icon.js +33 -33
  496. package/packages/table-filter/src/components/button-icon/getBtnIcon.js +34 -34
  497. package/packages/table-filter/src/components/c-tree-select/tree-select.vue +336 -336
  498. package/packages/table-filter/src/components/drop-button/drop-button.vue +224 -224
  499. package/packages/table-filter/src/components/drop-button/head-btn-icon.js +33 -33
  500. package/packages/table-filter/src/components/drop-view/drop-view.vue +89 -89
  501. package/packages/table-filter/src/components/multi-select/multi-select.vue +227 -227
  502. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +340 -340
  503. package/packages/table-filter/src/components/range-age/index.vue +172 -172
  504. package/packages/table-filter/src/components/search-condition/SearchCondition.vue +1897 -1897
  505. package/packages/table-filter/src/components/search-condition/fieldTypeList.js +169 -169
  506. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +278 -278
  507. package/packages/table-filter/src/components/search-modal/set-classification.vue +310 -310
  508. package/packages/table-filter/src/components/table-modal/TableModal.vue +463 -463
  509. package/packages/table-filter/src/const/dataOptions.js +43 -43
  510. package/packages/table-filter/src/const/index.js +1 -1
  511. package/packages/table-filter/src/index.vue +584 -584
  512. package/packages/table-filter/src/mixins/mixins.js +694 -694
  513. package/packages/table-filter/src/mixins/tableSearchCon.js +128 -128
  514. package/packages/table-filter/src/mixins/wordBookutils.js +102 -102
  515. package/packages/table-filter/src/quick-search/QuickSearch.vue +2125 -2125
  516. package/packages/tabs/index.js +18 -18
  517. package/packages/tabs/src/TabPane.jsx +11 -11
  518. package/packages/tabs/src/Tabs.jsx +11 -11
  519. package/packages/tag/index.js +21 -21
  520. package/packages/tag/src/CheckableTag.jsx +11 -11
  521. package/packages/tag/src/Tag.jsx +11 -11
  522. package/packages/tag/src/TagGroup.vue +621 -621
  523. package/packages/time-picker/index.js +12 -12
  524. package/packages/time-picker/src/TimePicker.jsx +11 -11
  525. package/packages/timeline/index.js +14 -14
  526. package/packages/timeline/src/Item.jsx +11 -11
  527. package/packages/timeline/src/Timeline.jsx +11 -11
  528. package/packages/tooltip/index.js +12 -12
  529. package/packages/tooltip/src/Tooltip.jsx +11 -11
  530. package/packages/transfer/index.js +12 -12
  531. package/packages/transfer/src/Transfer.jsx +11 -11
  532. package/packages/tree/index.js +18 -18
  533. package/packages/tree/src/Tree.jsx +11 -11
  534. package/packages/tree/src/TreeNode.jsx +11 -11
  535. package/packages/tree-select/index.js +18 -18
  536. package/packages/tree-select/src/TreeNode.jsx +11 -11
  537. package/packages/tree-select/src/TreeSelect.jsx +11 -11
  538. package/packages/upload/chunk-upload/chunk-upload-new.vue +1001 -1001
  539. package/packages/upload/chunk-upload/vod-chunk-upload.vue +749 -749
  540. package/packages/upload/chunk-upload/vod-upload-modal.vue +100 -100
  541. package/packages/upload/index.js +12 -12
  542. package/packages/upload/src/Upload.jsx +11 -11
  543. package/packages/verification-code/SlideVerify.vue +306 -306
  544. package/packages/verification-code/index.js +17 -17
  545. package/packages/verification-code/verification-code.vue +147 -147
  546. package/src/assets/img/nodata.png +0 -0
  547. package/src/component/player-vod/index.vue +57 -57
  548. package/src/component/player-vod/player.vue +188 -188
  549. package/src/component/player-vod/video-list.vue +262 -262
  550. package/src/component/player-vod/video-modal.vue +128 -128
  551. package/src/component/select-options/index.vue +413 -0
  552. package/src/component/select-pages/index.vue +95 -74
  553. package/src/component/svg/index.vue +59 -59
  554. package/src/core/create.js +6 -6
  555. package/src/core/event.js +23 -23
  556. package/src/core/table-methods.js +444 -444
  557. package/src/directive/flexibleResize.js +151 -151
  558. package/src/directive/preventReClick.js +12 -12
  559. package/src/directive/scroll.js +230 -230
  560. package/src/global/variable.js +2 -2
  561. package/src/style/normalize.css +424 -424
  562. package/src/style/style.less +49 -49
  563. package/src/utils/UniRTCv2.js +626 -626
  564. package/src/utils/chatFetch.js +61 -61
  565. package/src/utils/clickoutside.js +75 -75
  566. package/src/utils/crypto.js +25 -25
  567. package/src/utils/index.js +81 -81
  568. package/src/utils/kty-sdk.js +582 -582
  569. package/src/utils/kty.min-1.0.0.js +14378 -14378
  570. package/src/utils/sip-device.js +79 -79
  571. package/src/utils/time-domain.js +193 -193
  572. package/src/utils/trtc.js +1 -1
  573. package/src/utils/utils-map.js +484 -484
  574. package/src/utils/vexutils.js +836 -836
@@ -1,639 +1,639 @@
1
- import { formCommom } from '../../edit-mixins/index';
2
-
3
- import { formEvent, renderMethods } from '../../edit-item/index';
4
- import globalProps from '../../edit-item/global-props';
5
- import validateRules from '../../edit-item/validate-rules';
6
- import formUtils from '../../edit-utils/index';
7
- import boundDate from '../mixins/bound-date';
8
-
9
- import {
10
- Icon,
11
- Checkbox,
12
- Tooltip,
13
- Input,
14
- FormModel,
15
- Divider,
16
- Button,
17
- Select
18
- } from "ant-design-vue";
19
-
20
-
21
- // import { mapGetters } from 'vuex';
22
- export default {
23
- mixins: [formCommom, formEvent, renderMethods, globalProps, validateRules, boundDate],
24
- components: {
25
- [Icon.name]: Icon,
26
- [Input.name]: Input,
27
- [Input.Search.name]: Input.Search,
28
- [Checkbox.name]: Checkbox,
29
- [Divider.name]: Divider,
30
- [Button.name]: Button,
31
- [FormModel.name]: FormModel,
32
- [FormModel.Item.name]: FormModel.Item,
33
- [Tooltip.name]: Tooltip,
34
- [Select.name]: Select,
35
- },
36
- data() {
37
- return {};
38
- },
39
- inject: {
40
- /** baseForm */
41
- mainForm: {
42
- type: Object,
43
- default: () => ({})
44
- }
45
- },
46
- props: {
47
- // 只有 guage 使用
48
- // defaultForm: {
49
- // type: Object,
50
- // default: () => {
51
- // return {};
52
- // }
53
- // },
54
-
55
- defaultValue: {
56
- type: Object,
57
- default: () => {
58
- return {};
59
- }
60
- },
61
-
62
- // 表单排列方式 'horizontal' / 水平|'vertical'|'inline'
63
- propsFormLayout: {
64
- type: String,
65
- default: 'vertical'
66
- },
67
-
68
- item: {
69
- type: Object,
70
- default: () => {
71
- return {};
72
- }
73
- },
74
-
75
- formFieldList: {
76
- type: Array,
77
- default: () => []
78
- },
79
-
80
- form: {
81
- type: Object,
82
- default: () => {
83
- return {};
84
- }
85
- },
86
-
87
- cacheForm: {
88
- type: Object,
89
- default: () => {
90
- return {};
91
- }
92
- },
93
-
94
- formStyle: {
95
- type: Object,
96
- default: () => ({})
97
- },
98
-
99
- showLable: {
100
- type: Boolean,
101
- default: true
102
- },
103
-
104
- handleFormatSubmit: Function,
105
-
106
- formFieldObj: {
107
- type: Object,
108
- default: () => {
109
- return {};
110
- }
111
- },
112
-
113
- defaultFieldList: {
114
- type: Array,
115
- default: () => []
116
- },
117
-
118
- shortcutFieldsList: {
119
- type: Array,
120
- default: () => []
121
- },
122
- isOpenShortcut: {
123
- type: Boolean,
124
- default: false
125
- },
126
- layoutForm: {
127
- type: Boolean,
128
- default: false
129
- },
130
-
131
- dbParams: {
132
- type: Object
133
- },
134
- styleSetting: {
135
- type: Object,
136
- default: () => { }
137
- },
138
- editFormApiConfig: Object // 编辑表格api
139
- },
140
- beforeCreate() {
141
- // this.formFieldListCopy = [];
142
- },
143
- mounted() {
144
- this.$nextTick(() => {
145
- this.defaultInit();
146
- });
147
- },
148
- computed: {
149
- // ...mapGetters(['styleSetting']),
150
-
151
- baseForm() {
152
- return this.form;
153
- }
154
- },
155
- methods: {
156
- /**
157
- * 获取配置的 api 方法
158
- * @param {*} params 调用参数
159
- * @param {String} key 方法名
160
- * @param {Object} config 其他配置
161
- */
162
- async handleGetConfigApi(params, key, config = {}) {
163
- try {
164
- // TODO: 判断 fn 是异步函数还是同步
165
- const editFormApiConfig = this?.editFormApiConfig || {};
166
- const fn = editFormApiConfig[key] || null;
167
- if (typeof fn === 'function') {
168
- let res = await fn(params, config);
169
- return Promise.resolve(res);
170
- } else {
171
- return Promise.reject(new Error(`${key} Is not a function`));
172
- }
173
- } catch (error) {
174
- return Promise.reject(error);
175
- }
176
- },
177
- defaultInit() {
178
- // this.formFieldListCopy = JSON.parse(JSON.stringify(this.formFieldList));
179
- const { validate = {}, name, default_val } = this.item;
180
- let targetStr = this.defaultValue[name] || default_val;
181
- targetStr = this.handleSysParams(targetStr);
182
- if (['last_menstrual'].includes(validate.obj_type)) {
183
- targetStr && this.handlerInputBlur(this.item, this.$moment(targetStr));
184
- } else if (['birthday'].includes(validate.obj_type)) {
185
- targetStr && this.handleBirthday(this.$moment(targetStr), this.item, true);
186
- }
187
-
188
- // 默认值有值触发表单绑定的事件。
189
- // if (this.$utils.notEmpty(targetStr)) {
190
- // this.handlerInputBlur(this.item, null, "blur", { eventType: "init" });
191
- // }
192
- },
193
-
194
- // 失去焦点
195
- /**
196
- * @param data
197
- * @param v // 时间类型的 值
198
- * @param eventType // 事件类型标识
199
- */
200
- handlerInputBlur(data = {}, v, eventType = 'blur', eventConfig = {}) {
201
- const { validate, html_type } = data;
202
- if (html_type == 'SEARCH_MORE' || html_type == 'SEARCH' || html_type == 'SELECT' || html_type == 'PHONE_TYPE' || html_type == 'IDCARD_TYPE' || html_type == 'GUAGE') {
203
- this.open = false;
204
- if (html_type == 'GUAGE') {
205
- return false;
206
- }
207
- }
208
- // select 类型 失去焦点 不触发事件
209
- if (eventType === 'select-blur') {
210
- return;
211
- }
212
- let valiStatus = 'id_card_noReg';
213
- // 大陆/港澳台多种身份证及手机号校验
214
- if (validate && validate.vali_obj) {
215
- let vali_objFlag = this.checkMultipleIdCard(data);
216
- if (['id_card', 'mobile', 'telephone'].includes(validate.obj_type)) {
217
- valiStatus = vali_objFlag.status;
218
- }
219
- }
220
- // 身份证
221
- if (valiStatus === 'id_card_noReg' && validate && (validate.obj_type == 'id_card' || validate.vali_obj == 'id_card')) {
222
- this.handlerSetIdCarInfo(data);
223
- }
224
-
225
- if (validate && validate.obj_type == 'birthday') {
226
- // birthday
227
- // change 事件才计算年龄。
228
- eventType == 'change' && this.handleBirthday(v, data);
229
- } else if (validate && validate.obj_type == 'last_menstrual') {
230
- // 末次月经
231
- this.handlerSetMenstrual(v, data);
232
- } else if (['mobile_noReg', 'telephone_noReg'].includes(valiStatus) && validate && validate.vali_obj == 'mobile') {
233
- this.handlecheckPhone(data);
234
- }
235
-
236
- if (['DIGITAL'].includes(html_type)) {
237
- this.hanldeOperational(data);
238
- }
239
-
240
- this.handleTriggerCheck(data);
241
-
242
- const formValueObj = this.getFormValue();
243
- this.formValueObj = { ...formValueObj };
244
- // 通讯事件
245
- // if (eventType == "change") {
246
- // this.autoVal = null;
247
- // this.mainForm.formfieldOnChange(data);
248
- // }
249
-
250
- this.$emit('hanldeFromBlur', { ...formValueObj });
251
-
252
- this.handleGetFieldsError(data.val_key);
253
- },
254
- // 大陆/港澳台多种身份证及手机号校验
255
- checkMultipleIdCard(data) {
256
- const {
257
- group,
258
- val_key,
259
- validate: { obj_type }
260
- } = data;
261
- // let options = JSON.parse(this.$refs[phone_idcard_type].$attrs.optionData);
262
- const is_PHONE_TYPE = obj_type == 'mobile' || obj_type == 'telephone';
263
- const is_IDCARD_TYPE = obj_type == 'id_card';
264
- const findHtmlType = is_PHONE_TYPE ? 'PHONE_TYPE' : is_IDCARD_TYPE ? 'IDCARD_TYPE' : '';
265
-
266
- let targetItem = this.defaultFieldList.find(v => v.html_type == findHtmlType);
267
- if (!targetItem) return { status: `${obj_type}_noReg` };
268
- const options = targetItem.option;
269
- const selectedValue = this.hanldeGetFieldValue(targetItem.val_key);
270
- // let selectedText = options.filter(item => item.value === selectedValue)[0]
271
- // .text;
272
- let StrVal = String(selectedValue);
273
- if (!selectedValue && StrVal !== '0') return { status: 'none' };
274
-
275
- const regKey = obj_type === 'id_card' ? 'reg' : obj_type === 'mobile' ? 'mobileReg' : 'telephoneReg';
276
- const findList = options.filter(item => item.value == selectedValue);
277
- if (!findList[0]) return { status: 'noOptions' };
278
- const selectedRegStr = findList[0][regKey];
279
- const selectedReg = new RegExp(selectedRegStr);
280
- const checkingInput = this.hanldeGetFieldValue(val_key);
281
- if (!checkingInput) return { status: 'noPass' };
282
- if (!selectedReg.test(checkingInput)) {
283
- this.baseForm.setFields({
284
- [val_key]: {
285
- value: checkingInput,
286
- errors: [
287
- {
288
- message: `请输入正确的号码`
289
- }
290
- ]
291
- }
292
- });
293
- return { status: 'noPass' };
294
- } else {
295
- this.baseForm.setFields({
296
- [val_key]: {
297
- value: checkingInput
298
- }
299
- });
300
- if (selectedValue === 'CN') {
301
- this.handlerSetIdCarInfo(data);
302
- }
303
- return { status: 'pass' };
304
- }
305
- },
306
-
307
- // 设置身份证的信息
308
- handlerSetIdCarInfo(data = {}) {
309
- const { validate } = data;
310
- // 不是 field_toggle 的事件类型返回(默认触发不校验事件类型)
311
- if (!validate) {
312
- return;
313
- }
314
- const idCarItem = data;
315
- let mapList = this.hanldeGetTargetList(data);
316
- if (idCarItem) {
317
- const idCarNo = this.hanldeGetFieldValue(idCarItem['val_key']);
318
- if (!idCarNo) {
319
- if (validate.obj_type == 'id_card') {
320
- mapList.forEach(item => {
321
- const { validate } = item;
322
- if (validate && validate.obj_type == 'age') {
323
- this.$set(item, 'useFormValue', '');
324
- this.handlerInputBlur(item);
325
- } else if (validate && validate.obj_type == 'sex') {
326
- this.$set(item, 'useFormValue', '');
327
- this.handlerInputBlur(item);
328
- } else if (validate && validate.obj_type == 'birthday') {
329
- this.$set(item, 'useFormValue', '');
330
- this.handlerInputBlur(item);
331
- }
332
- });
333
- }
334
- return;
335
- }
336
- const pat = /^\d{6}(((19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9]|x|X))|(\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}))$/;
337
- if (!pat.test(idCarNo)) {
338
- if (validate.vali_obj == 'id_card') {
339
- this.baseForm.setFields({
340
- [idCarItem['val_key']]: {
341
- value: idCarNo,
342
- errors: [
343
- {
344
- message: '请输入正确的身份证号码'
345
- }
346
- ]
347
- }
348
- });
349
- if (validate.obj_type == 'id_card') {
350
- mapList.forEach(item => {
351
- const { validate } = item;
352
- if (validate && validate.obj_type == 'age') {
353
- this.$set(item, 'useFormValue', '');
354
- this.handlerInputBlur(item);
355
- } else if (validate && validate.obj_type == 'sex') {
356
- this.$set(item, 'useFormValue', '');
357
- this.handlerInputBlur(item);
358
- } else if (validate && validate.obj_type == 'birthday') {
359
- this.$set(item, 'useFormValue', '');
360
- this.handlerInputBlur(item);
361
- }
362
- });
363
- }
364
- // resetFields
365
- }
366
-
367
- return false;
368
- }
369
- if (validate.obj_type != 'id_card') return;
370
- const idCarInfo = this.handlerGetIdcatInfo(idCarNo);
371
- // 回填上
372
- mapList.forEach(item => {
373
- const { validate, html_type } = item;
374
- if (validate && validate.obj_type == 'age') {
375
- if (html_type != 'AGE_JSON') {
376
- let values = 'year';
377
- if (item.val_key_unit) {
378
- const curUnit = this.baseForm.getFieldValue(item.val_key_unit);
379
- if (item.option && item.option.length > 0) {
380
- values = curUnit?.toLowerCase() || item.option[0].value.toLowerCase();
381
- }
382
- }
383
-
384
- this.$set(item, 'ageRes', idCarInfo);
385
- this.$set(item, 'isFillAge', true);
386
- this.hanldeSetFieldsValue(
387
- {
388
- [item.val_key]: idCarInfo[values]
389
- },
390
- item
391
- );
392
- }
393
- if (html_type == 'AGE_JSON') {
394
- let v = this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD');
395
- this.handleBirthday(v, item);
396
- }
397
- // 表单配置事件
398
- this.handlerInputBlur(item);
399
- } else if (validate && validate.obj_type == 'sex') {
400
- this.hanldeSetFieldsValue(
401
- {
402
- [item.val_key]: idCarInfo['sex']
403
- },
404
- item
405
- );
406
- // 表单配置事件
407
- this.handlerInputBlur(item, idCarInfo['sex']);
408
- } else if (validate && validate.obj_type == 'birthday') {
409
- this.hanldeSetFieldsValue(
410
- {
411
- [item.val_key]: this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD')
412
- },
413
- item
414
- );
415
- // 表单配置事件
416
- this.handlerInputBlur(item, this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD'));
417
- }
418
- });
419
- }
420
- },
421
-
422
- /**
423
- * @param v val 值
424
- * @param i item 表单数据
425
- * @param isDef 是否默认赋值
426
- */
427
- handleBirthday(v, i, isDef = false) {
428
- let mapList = this.hanldeGetTargetList(i);
429
- if (v && v.format) {
430
- const birthdayInfo = this.handleBirthdayToAge(v);
431
- mapList.forEach(item => {
432
- const { validate } = item;
433
- if (validate && validate.obj_type == 'age') {
434
- let hasDef = this.handleSysParams(item.default_val || '') || this.defaultValue[item.name];
435
- if (item.html_type != 'AGE_JSON') {
436
- if (isDef) {
437
- if (hasDef || [0, '0'].includes(hasDef) || isNaN(hasDef)) {
438
- return;
439
- }
440
- }
441
- let values = 'year';
442
- const curUnit = (item.val_key_unit && this.hanldeGetFieldValue(item.val_key_unit)) || '';
443
- if (item.option && item.option.length > 0) {
444
- values = curUnit?.toLowerCase() || item.option[0].value.toLowerCase();
445
- }
446
- this.$set(item, 'ageRes', birthdayInfo);
447
- this.$set(item, 'isFillAge', true);
448
- this.hanldeSetFieldsValue(
449
- {
450
- [item.val_key]: birthdayInfo[values]
451
- },
452
- item
453
- );
454
-
455
- // 推算年龄的单位
456
- this.handleSetAgeUnit(birthdayInfo, item);
457
- }
458
-
459
- if (item.html_type == 'AGE_JSON') {
460
- if (isDef) {
461
- if (hasDef && hasDef.days > 0) {
462
- return;
463
- }
464
- }
465
- const curDateStr = v.format('YYYY-MM-DD');
466
- let obj = formUtils.getAgeInfo(curDateStr);
467
- this.hanldeSetFieldsValue({
468
- [item.val_key]: { ...obj, days: birthdayInfo.day }
469
- });
470
- }
471
- this.handlerInputBlur(item);
472
- }
473
- });
474
- } else {
475
- mapList.forEach(item => {
476
- const { validate } = item;
477
- if (validate && validate.obj_type == 'age') {
478
- this.$set(item, 'useFormValue', '');
479
- this.handlerInputBlur(item);
480
- }
481
- });
482
- }
483
- },
484
-
485
- handleBirthdayToAge(v) {
486
- const res = {};
487
- const curDateStr = v.format('YYYY-MM-DD');
488
- const [year, month, day] = curDateStr.split('-');
489
- const d = new Date();
490
- const monthFloor = d.getMonth() + 1 < parseInt(month, 10) || (d.getMonth() + 1 == parseInt(month, 10) && d.getDate() < parseInt(day, 10)) ? 1 : 0;
491
- let age = d.getFullYear() - parseInt(year, 10) - monthFloor;
492
- if (age < 0) {
493
- age = 0;
494
- }
495
- res.year = isNaN(age) ? '' : age;
496
- res.day = this.$moment(d).diff(this.$moment(new Date(curDateStr)), 'days') || 0;
497
- res.month = this.$moment(d).diff(this.$moment(new Date(curDateStr)), 'months') || 0;
498
- return res;
499
- },
500
-
501
- /** 默认的电话号码校验 */
502
- handlecheckPhone(item = {}) {
503
- const checkingInput = this.baseForm.getFieldValue(item.val_key);
504
- const selectedReg = /(^[0-9]{11,11}$)/;
505
- if (!checkingInput) return { status: 'noPass' };
506
- if (!selectedReg.test(checkingInput)) {
507
- this.baseForm.setFields({
508
- [item.val_key]: {
509
- value: checkingInput,
510
- errors: [
511
- {
512
- message: `请输入正确的手机号码`
513
- }
514
- ]
515
- }
516
- });
517
- return { status: 'noPass' };
518
- }
519
- },
520
-
521
- handleTriggerCheck(item) {
522
- if (['PHONE_TYPE', 'IDCARD_TYPE'].includes(item.html_type)) {
523
- let mapList = this.defaultFieldList;
524
- if (item.group) {
525
- mapList = this.defaultFieldList.filter(v => v.group == item.group);
526
- }
527
- let targetList = mapList.filter(t => t.validate && ['mobile', 'telephone', 'id_card'].includes(t.validate.vali_obj));
528
- targetList.forEach(v => {
529
- this.checkMultipleIdCard(v);
530
- });
531
- }
532
- },
533
-
534
- getFormValue() {
535
- // this.$parent.handleFormatSubmit
536
- return this.handleGetAllFormValue();
537
- },
538
-
539
- // 普通下拉框设置open值
540
- dropdownVisibleChange(e) {
541
- this.$nextTick(() => {
542
- this.open = e;
543
- });
544
- },
545
-
546
- /** 出生日期推算年龄的单位
547
- * @param {Object} ageInfo {year: 0, day: 108, month: 3}
548
- */
549
- handleGetAgeUnit(ageInfo = {}) {
550
- if (Object.keys(ageInfo || {}).length === 0) {
551
- return;
552
- }
553
- const list = ['year', 'month', 'day'];
554
-
555
- let f = list.find(v => ageInfo[v] > 0) || 'day';
556
- return f;
557
- },
558
-
559
- /**
560
- * 设置年龄组件的单位
561
- * @param {*} ageInfo
562
- * @param {*} item
563
- */
564
- handleSetAgeUnit(ageInfo, item) {
565
- const { changeAgeSelect, handleGetAgeUnit } = this;
566
- let f = handleGetAgeUnit(ageInfo);
567
- if (f && item.val_key_unit) {
568
- f = f.toLocaleUpperCase();
569
- this.hanldeSetFieldsValue({
570
- [item.val_key_unit]: f
571
- });
572
- if (typeof changeAgeSelect === 'function') {
573
- changeAgeSelect(f, item);
574
- }
575
- }
576
- },
577
-
578
- /**
579
- * 年龄组件的单位改变
580
- * @param {String} val YEAR 、 MONTH、 DAY
581
- * @param {Object} item
582
- * @returns
583
- */
584
- changeAgeSelect(val, item) {
585
- const { mainForm } = this;
586
- const values = val.toLowerCase();
587
- const matchAgeItem = this.defaultFieldList.find(v => v.html_type == 'AGE' && v.validate?.obj_type == 'age');
588
- if (matchAgeItem && matchAgeItem.isFillAge) {
589
- const mapList = this.defaultFieldList;
590
- mapList.forEach(v => {
591
- const { validate, html_type } = v;
592
- if (validate && validate.obj_type == 'age' && html_type == 'AGE') {
593
- item.ageRes = v.ageRes;
594
- this.hanldeSetFieldsValue(
595
- {
596
- [v.val_key]: v.ageRes[values]
597
- },
598
- v
599
- );
600
- }
601
- });
602
- } else {
603
- if (!item.ageRes) return;
604
- this.hanldeSetFieldsValue(
605
- {
606
- [item.val_key]: item.ageRes[values]
607
- },
608
- item
609
- );
610
- }
611
- this.$nextTick(() => {
612
- mainForm.form.validateFields([item.val_key]);
613
- });
614
- },
615
-
616
- /**
617
- * 年龄推算出生日期
618
- * @param {Number} val
619
- * @param {String} f year / day / month
620
- * @param {Object} item
621
- */
622
- handleAgeToBirthDay(val, f, item) {
623
- const fn = (val, key) => this.$moment().subtract(val, key);
624
- let curVal = fn(val, f);
625
- if (!curVal?._isAMomentObject) return;
626
- let mapList = this.hanldeGetTargetList(item);
627
- let target = mapList.find(v => v.validate && v.validate.obj_type == 'birthday');
628
- if (target) {
629
- this.hanldeSetFieldsValue(
630
- {
631
- [target.val_key]: curVal
632
- },
633
- target
634
- );
635
- }
636
- }
637
- },
638
- watch: {}
639
- };
1
+ import { formCommom } from '../../edit-mixins/index';
2
+
3
+ import { formEvent, renderMethods } from '../../edit-item/index';
4
+ import globalProps from '../../edit-item/global-props';
5
+ import validateRules from '../../edit-item/validate-rules';
6
+ import formUtils from '../../edit-utils/index';
7
+ import boundDate from '../mixins/bound-date';
8
+
9
+ import {
10
+ Icon,
11
+ Checkbox,
12
+ Tooltip,
13
+ Input,
14
+ FormModel,
15
+ Divider,
16
+ Button,
17
+ Select
18
+ } from "ant-design-vue";
19
+
20
+
21
+ // import { mapGetters } from 'vuex';
22
+ export default {
23
+ mixins: [formCommom, formEvent, renderMethods, globalProps, validateRules, boundDate],
24
+ components: {
25
+ [Icon.name]: Icon,
26
+ [Input.name]: Input,
27
+ [Input.Search.name]: Input.Search,
28
+ [Checkbox.name]: Checkbox,
29
+ [Divider.name]: Divider,
30
+ [Button.name]: Button,
31
+ [FormModel.name]: FormModel,
32
+ [FormModel.Item.name]: FormModel.Item,
33
+ [Tooltip.name]: Tooltip,
34
+ [Select.name]: Select,
35
+ },
36
+ data() {
37
+ return {};
38
+ },
39
+ inject: {
40
+ /** baseForm */
41
+ mainForm: {
42
+ type: Object,
43
+ default: () => ({})
44
+ }
45
+ },
46
+ props: {
47
+ // 只有 guage 使用
48
+ // defaultForm: {
49
+ // type: Object,
50
+ // default: () => {
51
+ // return {};
52
+ // }
53
+ // },
54
+
55
+ defaultValue: {
56
+ type: Object,
57
+ default: () => {
58
+ return {};
59
+ }
60
+ },
61
+
62
+ // 表单排列方式 'horizontal' / 水平|'vertical'|'inline'
63
+ propsFormLayout: {
64
+ type: String,
65
+ default: 'vertical'
66
+ },
67
+
68
+ item: {
69
+ type: Object,
70
+ default: () => {
71
+ return {};
72
+ }
73
+ },
74
+
75
+ formFieldList: {
76
+ type: Array,
77
+ default: () => []
78
+ },
79
+
80
+ form: {
81
+ type: Object,
82
+ default: () => {
83
+ return {};
84
+ }
85
+ },
86
+
87
+ cacheForm: {
88
+ type: Object,
89
+ default: () => {
90
+ return {};
91
+ }
92
+ },
93
+
94
+ formStyle: {
95
+ type: Object,
96
+ default: () => ({})
97
+ },
98
+
99
+ showLable: {
100
+ type: Boolean,
101
+ default: true
102
+ },
103
+
104
+ handleFormatSubmit: Function,
105
+
106
+ formFieldObj: {
107
+ type: Object,
108
+ default: () => {
109
+ return {};
110
+ }
111
+ },
112
+
113
+ defaultFieldList: {
114
+ type: Array,
115
+ default: () => []
116
+ },
117
+
118
+ shortcutFieldsList: {
119
+ type: Array,
120
+ default: () => []
121
+ },
122
+ isOpenShortcut: {
123
+ type: Boolean,
124
+ default: false
125
+ },
126
+ layoutForm: {
127
+ type: Boolean,
128
+ default: false
129
+ },
130
+
131
+ dbParams: {
132
+ type: Object
133
+ },
134
+ styleSetting: {
135
+ type: Object,
136
+ default: () => { }
137
+ },
138
+ editFormApiConfig: Object // 编辑表格api
139
+ },
140
+ beforeCreate() {
141
+ // this.formFieldListCopy = [];
142
+ },
143
+ mounted() {
144
+ this.$nextTick(() => {
145
+ this.defaultInit();
146
+ });
147
+ },
148
+ computed: {
149
+ // ...mapGetters(['styleSetting']),
150
+
151
+ baseForm() {
152
+ return this.form;
153
+ }
154
+ },
155
+ methods: {
156
+ /**
157
+ * 获取配置的 api 方法
158
+ * @param {*} params 调用参数
159
+ * @param {String} key 方法名
160
+ * @param {Object} config 其他配置
161
+ */
162
+ async handleGetConfigApi(params, key, config = {}) {
163
+ try {
164
+ // TODO: 判断 fn 是异步函数还是同步
165
+ const editFormApiConfig = this?.editFormApiConfig || {};
166
+ const fn = editFormApiConfig[key] || null;
167
+ if (typeof fn === 'function') {
168
+ let res = await fn(params, config);
169
+ return Promise.resolve(res);
170
+ } else {
171
+ return Promise.reject(new Error(`${key} Is not a function`));
172
+ }
173
+ } catch (error) {
174
+ return Promise.reject(error);
175
+ }
176
+ },
177
+ defaultInit() {
178
+ // this.formFieldListCopy = JSON.parse(JSON.stringify(this.formFieldList));
179
+ const { validate = {}, name, default_val } = this.item;
180
+ let targetStr = this.defaultValue[name] || default_val;
181
+ targetStr = this.handleSysParams(targetStr);
182
+ if (['last_menstrual'].includes(validate.obj_type)) {
183
+ targetStr && this.handlerInputBlur(this.item, this.$moment(targetStr));
184
+ } else if (['birthday'].includes(validate.obj_type)) {
185
+ targetStr && this.handleBirthday(this.$moment(targetStr), this.item, true);
186
+ }
187
+
188
+ // 默认值有值触发表单绑定的事件。
189
+ // if (this.$utils.notEmpty(targetStr)) {
190
+ // this.handlerInputBlur(this.item, null, "blur", { eventType: "init" });
191
+ // }
192
+ },
193
+
194
+ // 失去焦点
195
+ /**
196
+ * @param data
197
+ * @param v // 时间类型的 值
198
+ * @param eventType // 事件类型标识
199
+ */
200
+ handlerInputBlur(data = {}, v, eventType = 'blur', eventConfig = {}) {
201
+ const { validate, html_type } = data;
202
+ if (html_type == 'SEARCH_MORE' || html_type == 'SEARCH' || html_type == 'SELECT' || html_type == 'PHONE_TYPE' || html_type == 'IDCARD_TYPE' || html_type == 'GUAGE') {
203
+ this.open = false;
204
+ if (html_type == 'GUAGE') {
205
+ return false;
206
+ }
207
+ }
208
+ // select 类型 失去焦点 不触发事件
209
+ if (eventType === 'select-blur') {
210
+ return;
211
+ }
212
+ let valiStatus = 'id_card_noReg';
213
+ // 大陆/港澳台多种身份证及手机号校验
214
+ if (validate && validate.vali_obj) {
215
+ let vali_objFlag = this.checkMultipleIdCard(data);
216
+ if (['id_card', 'mobile', 'telephone'].includes(validate.obj_type)) {
217
+ valiStatus = vali_objFlag.status;
218
+ }
219
+ }
220
+ // 身份证
221
+ if (valiStatus === 'id_card_noReg' && validate && (validate.obj_type == 'id_card' || validate.vali_obj == 'id_card')) {
222
+ this.handlerSetIdCarInfo(data);
223
+ }
224
+
225
+ if (validate && validate.obj_type == 'birthday') {
226
+ // birthday
227
+ // change 事件才计算年龄。
228
+ eventType == 'change' && this.handleBirthday(v, data);
229
+ } else if (validate && validate.obj_type == 'last_menstrual') {
230
+ // 末次月经
231
+ this.handlerSetMenstrual(v, data);
232
+ } else if (['mobile_noReg', 'telephone_noReg'].includes(valiStatus) && validate && validate.vali_obj == 'mobile') {
233
+ this.handlecheckPhone(data);
234
+ }
235
+
236
+ if (['DIGITAL'].includes(html_type)) {
237
+ this.hanldeOperational(data);
238
+ }
239
+
240
+ this.handleTriggerCheck(data);
241
+
242
+ const formValueObj = this.getFormValue();
243
+ this.formValueObj = { ...formValueObj };
244
+ // 通讯事件
245
+ // if (eventType == "change") {
246
+ // this.autoVal = null;
247
+ // this.mainForm.formfieldOnChange(data);
248
+ // }
249
+
250
+ this.$emit('hanldeFromBlur', { ...formValueObj });
251
+
252
+ this.handleGetFieldsError(data.val_key);
253
+ },
254
+ // 大陆/港澳台多种身份证及手机号校验
255
+ checkMultipleIdCard(data) {
256
+ const {
257
+ group,
258
+ val_key,
259
+ validate: { obj_type }
260
+ } = data;
261
+ // let options = JSON.parse(this.$refs[phone_idcard_type].$attrs.optionData);
262
+ const is_PHONE_TYPE = obj_type == 'mobile' || obj_type == 'telephone';
263
+ const is_IDCARD_TYPE = obj_type == 'id_card';
264
+ const findHtmlType = is_PHONE_TYPE ? 'PHONE_TYPE' : is_IDCARD_TYPE ? 'IDCARD_TYPE' : '';
265
+
266
+ let targetItem = this.defaultFieldList.find(v => v.html_type == findHtmlType);
267
+ if (!targetItem) return { status: `${obj_type}_noReg` };
268
+ const options = targetItem.option;
269
+ const selectedValue = this.hanldeGetFieldValue(targetItem.val_key);
270
+ // let selectedText = options.filter(item => item.value === selectedValue)[0]
271
+ // .text;
272
+ let StrVal = String(selectedValue);
273
+ if (!selectedValue && StrVal !== '0') return { status: 'none' };
274
+
275
+ const regKey = obj_type === 'id_card' ? 'reg' : obj_type === 'mobile' ? 'mobileReg' : 'telephoneReg';
276
+ const findList = options.filter(item => item.value == selectedValue);
277
+ if (!findList[0]) return { status: 'noOptions' };
278
+ const selectedRegStr = findList[0][regKey];
279
+ const selectedReg = new RegExp(selectedRegStr);
280
+ const checkingInput = this.hanldeGetFieldValue(val_key);
281
+ if (!checkingInput) return { status: 'noPass' };
282
+ if (!selectedReg.test(checkingInput)) {
283
+ this.baseForm.setFields({
284
+ [val_key]: {
285
+ value: checkingInput,
286
+ errors: [
287
+ {
288
+ message: `请输入正确的号码`
289
+ }
290
+ ]
291
+ }
292
+ });
293
+ return { status: 'noPass' };
294
+ } else {
295
+ this.baseForm.setFields({
296
+ [val_key]: {
297
+ value: checkingInput
298
+ }
299
+ });
300
+ if (selectedValue === 'CN') {
301
+ this.handlerSetIdCarInfo(data);
302
+ }
303
+ return { status: 'pass' };
304
+ }
305
+ },
306
+
307
+ // 设置身份证的信息
308
+ handlerSetIdCarInfo(data = {}) {
309
+ const { validate } = data;
310
+ // 不是 field_toggle 的事件类型返回(默认触发不校验事件类型)
311
+ if (!validate) {
312
+ return;
313
+ }
314
+ const idCarItem = data;
315
+ let mapList = this.hanldeGetTargetList(data);
316
+ if (idCarItem) {
317
+ const idCarNo = this.hanldeGetFieldValue(idCarItem['val_key']);
318
+ if (!idCarNo) {
319
+ if (validate.obj_type == 'id_card') {
320
+ mapList.forEach(item => {
321
+ const { validate } = item;
322
+ if (validate && validate.obj_type == 'age') {
323
+ this.$set(item, 'useFormValue', '');
324
+ this.handlerInputBlur(item);
325
+ } else if (validate && validate.obj_type == 'sex') {
326
+ this.$set(item, 'useFormValue', '');
327
+ this.handlerInputBlur(item);
328
+ } else if (validate && validate.obj_type == 'birthday') {
329
+ this.$set(item, 'useFormValue', '');
330
+ this.handlerInputBlur(item);
331
+ }
332
+ });
333
+ }
334
+ return;
335
+ }
336
+ const pat = /^\d{6}(((19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9]|x|X))|(\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}))$/;
337
+ if (!pat.test(idCarNo)) {
338
+ if (validate.vali_obj == 'id_card') {
339
+ this.baseForm.setFields({
340
+ [idCarItem['val_key']]: {
341
+ value: idCarNo,
342
+ errors: [
343
+ {
344
+ message: '请输入正确的身份证号码'
345
+ }
346
+ ]
347
+ }
348
+ });
349
+ if (validate.obj_type == 'id_card') {
350
+ mapList.forEach(item => {
351
+ const { validate } = item;
352
+ if (validate && validate.obj_type == 'age') {
353
+ this.$set(item, 'useFormValue', '');
354
+ this.handlerInputBlur(item);
355
+ } else if (validate && validate.obj_type == 'sex') {
356
+ this.$set(item, 'useFormValue', '');
357
+ this.handlerInputBlur(item);
358
+ } else if (validate && validate.obj_type == 'birthday') {
359
+ this.$set(item, 'useFormValue', '');
360
+ this.handlerInputBlur(item);
361
+ }
362
+ });
363
+ }
364
+ // resetFields
365
+ }
366
+
367
+ return false;
368
+ }
369
+ if (validate.obj_type != 'id_card') return;
370
+ const idCarInfo = this.handlerGetIdcatInfo(idCarNo);
371
+ // 回填上
372
+ mapList.forEach(item => {
373
+ const { validate, html_type } = item;
374
+ if (validate && validate.obj_type == 'age') {
375
+ if (html_type != 'AGE_JSON') {
376
+ let values = 'year';
377
+ if (item.val_key_unit) {
378
+ const curUnit = this.baseForm.getFieldValue(item.val_key_unit);
379
+ if (item.option && item.option.length > 0) {
380
+ values = curUnit?.toLowerCase() || item.option[0].value.toLowerCase();
381
+ }
382
+ }
383
+
384
+ this.$set(item, 'ageRes', idCarInfo);
385
+ this.$set(item, 'isFillAge', true);
386
+ this.hanldeSetFieldsValue(
387
+ {
388
+ [item.val_key]: idCarInfo[values]
389
+ },
390
+ item
391
+ );
392
+ }
393
+ if (html_type == 'AGE_JSON') {
394
+ let v = this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD');
395
+ this.handleBirthday(v, item);
396
+ }
397
+ // 表单配置事件
398
+ this.handlerInputBlur(item);
399
+ } else if (validate && validate.obj_type == 'sex') {
400
+ this.hanldeSetFieldsValue(
401
+ {
402
+ [item.val_key]: idCarInfo['sex']
403
+ },
404
+ item
405
+ );
406
+ // 表单配置事件
407
+ this.handlerInputBlur(item, idCarInfo['sex']);
408
+ } else if (validate && validate.obj_type == 'birthday') {
409
+ this.hanldeSetFieldsValue(
410
+ {
411
+ [item.val_key]: this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD')
412
+ },
413
+ item
414
+ );
415
+ // 表单配置事件
416
+ this.handlerInputBlur(item, this.$moment(idCarInfo['birthday'], 'YYYY-MM-DD'));
417
+ }
418
+ });
419
+ }
420
+ },
421
+
422
+ /**
423
+ * @param v val 值
424
+ * @param i item 表单数据
425
+ * @param isDef 是否默认赋值
426
+ */
427
+ handleBirthday(v, i, isDef = false) {
428
+ let mapList = this.hanldeGetTargetList(i);
429
+ if (v && v.format) {
430
+ const birthdayInfo = this.handleBirthdayToAge(v);
431
+ mapList.forEach(item => {
432
+ const { validate } = item;
433
+ if (validate && validate.obj_type == 'age') {
434
+ let hasDef = this.handleSysParams(item.default_val || '') || this.defaultValue[item.name];
435
+ if (item.html_type != 'AGE_JSON') {
436
+ if (isDef) {
437
+ if (hasDef || [0, '0'].includes(hasDef) || isNaN(hasDef)) {
438
+ return;
439
+ }
440
+ }
441
+ let values = 'year';
442
+ const curUnit = (item.val_key_unit && this.hanldeGetFieldValue(item.val_key_unit)) || '';
443
+ if (item.option && item.option.length > 0) {
444
+ values = curUnit?.toLowerCase() || item.option[0].value.toLowerCase();
445
+ }
446
+ this.$set(item, 'ageRes', birthdayInfo);
447
+ this.$set(item, 'isFillAge', true);
448
+ this.hanldeSetFieldsValue(
449
+ {
450
+ [item.val_key]: birthdayInfo[values]
451
+ },
452
+ item
453
+ );
454
+
455
+ // 推算年龄的单位
456
+ this.handleSetAgeUnit(birthdayInfo, item);
457
+ }
458
+
459
+ if (item.html_type == 'AGE_JSON') {
460
+ if (isDef) {
461
+ if (hasDef && hasDef.days > 0) {
462
+ return;
463
+ }
464
+ }
465
+ const curDateStr = v.format('YYYY-MM-DD');
466
+ let obj = formUtils.getAgeInfo(curDateStr);
467
+ this.hanldeSetFieldsValue({
468
+ [item.val_key]: { ...obj, days: birthdayInfo.day }
469
+ });
470
+ }
471
+ this.handlerInputBlur(item);
472
+ }
473
+ });
474
+ } else {
475
+ mapList.forEach(item => {
476
+ const { validate } = item;
477
+ if (validate && validate.obj_type == 'age') {
478
+ this.$set(item, 'useFormValue', '');
479
+ this.handlerInputBlur(item);
480
+ }
481
+ });
482
+ }
483
+ },
484
+
485
+ handleBirthdayToAge(v) {
486
+ const res = {};
487
+ const curDateStr = v.format('YYYY-MM-DD');
488
+ const [year, month, day] = curDateStr.split('-');
489
+ const d = new Date();
490
+ const monthFloor = d.getMonth() + 1 < parseInt(month, 10) || (d.getMonth() + 1 == parseInt(month, 10) && d.getDate() < parseInt(day, 10)) ? 1 : 0;
491
+ let age = d.getFullYear() - parseInt(year, 10) - monthFloor;
492
+ if (age < 0) {
493
+ age = 0;
494
+ }
495
+ res.year = isNaN(age) ? '' : age;
496
+ res.day = this.$moment(d).diff(this.$moment(new Date(curDateStr)), 'days') || 0;
497
+ res.month = this.$moment(d).diff(this.$moment(new Date(curDateStr)), 'months') || 0;
498
+ return res;
499
+ },
500
+
501
+ /** 默认的电话号码校验 */
502
+ handlecheckPhone(item = {}) {
503
+ const checkingInput = this.baseForm.getFieldValue(item.val_key);
504
+ const selectedReg = /(^[0-9]{11,11}$)/;
505
+ if (!checkingInput) return { status: 'noPass' };
506
+ if (!selectedReg.test(checkingInput)) {
507
+ this.baseForm.setFields({
508
+ [item.val_key]: {
509
+ value: checkingInput,
510
+ errors: [
511
+ {
512
+ message: `请输入正确的手机号码`
513
+ }
514
+ ]
515
+ }
516
+ });
517
+ return { status: 'noPass' };
518
+ }
519
+ },
520
+
521
+ handleTriggerCheck(item) {
522
+ if (['PHONE_TYPE', 'IDCARD_TYPE'].includes(item.html_type)) {
523
+ let mapList = this.defaultFieldList;
524
+ if (item.group) {
525
+ mapList = this.defaultFieldList.filter(v => v.group == item.group);
526
+ }
527
+ let targetList = mapList.filter(t => t.validate && ['mobile', 'telephone', 'id_card'].includes(t.validate.vali_obj));
528
+ targetList.forEach(v => {
529
+ this.checkMultipleIdCard(v);
530
+ });
531
+ }
532
+ },
533
+
534
+ getFormValue() {
535
+ // this.$parent.handleFormatSubmit
536
+ return this.handleGetAllFormValue();
537
+ },
538
+
539
+ // 普通下拉框设置open值
540
+ dropdownVisibleChange(e) {
541
+ this.$nextTick(() => {
542
+ this.open = e;
543
+ });
544
+ },
545
+
546
+ /** 出生日期推算年龄的单位
547
+ * @param {Object} ageInfo {year: 0, day: 108, month: 3}
548
+ */
549
+ handleGetAgeUnit(ageInfo = {}) {
550
+ if (Object.keys(ageInfo || {}).length === 0) {
551
+ return;
552
+ }
553
+ const list = ['year', 'month', 'day'];
554
+
555
+ let f = list.find(v => ageInfo[v] > 0) || 'day';
556
+ return f;
557
+ },
558
+
559
+ /**
560
+ * 设置年龄组件的单位
561
+ * @param {*} ageInfo
562
+ * @param {*} item
563
+ */
564
+ handleSetAgeUnit(ageInfo, item) {
565
+ const { changeAgeSelect, handleGetAgeUnit } = this;
566
+ let f = handleGetAgeUnit(ageInfo);
567
+ if (f && item.val_key_unit) {
568
+ f = f.toLocaleUpperCase();
569
+ this.hanldeSetFieldsValue({
570
+ [item.val_key_unit]: f
571
+ });
572
+ if (typeof changeAgeSelect === 'function') {
573
+ changeAgeSelect(f, item);
574
+ }
575
+ }
576
+ },
577
+
578
+ /**
579
+ * 年龄组件的单位改变
580
+ * @param {String} val YEAR 、 MONTH、 DAY
581
+ * @param {Object} item
582
+ * @returns
583
+ */
584
+ changeAgeSelect(val, item) {
585
+ const { mainForm } = this;
586
+ const values = val.toLowerCase();
587
+ const matchAgeItem = this.defaultFieldList.find(v => v.html_type == 'AGE' && v.validate?.obj_type == 'age');
588
+ if (matchAgeItem && matchAgeItem.isFillAge) {
589
+ const mapList = this.defaultFieldList;
590
+ mapList.forEach(v => {
591
+ const { validate, html_type } = v;
592
+ if (validate && validate.obj_type == 'age' && html_type == 'AGE') {
593
+ item.ageRes = v.ageRes;
594
+ this.hanldeSetFieldsValue(
595
+ {
596
+ [v.val_key]: v.ageRes[values]
597
+ },
598
+ v
599
+ );
600
+ }
601
+ });
602
+ } else {
603
+ if (!item.ageRes) return;
604
+ this.hanldeSetFieldsValue(
605
+ {
606
+ [item.val_key]: item.ageRes[values]
607
+ },
608
+ item
609
+ );
610
+ }
611
+ this.$nextTick(() => {
612
+ mainForm.form.validateFields([item.val_key]);
613
+ });
614
+ },
615
+
616
+ /**
617
+ * 年龄推算出生日期
618
+ * @param {Number} val
619
+ * @param {String} f year / day / month
620
+ * @param {Object} item
621
+ */
622
+ handleAgeToBirthDay(val, f, item) {
623
+ const fn = (val, key) => this.$moment().subtract(val, key);
624
+ let curVal = fn(val, f);
625
+ if (!curVal?._isAMomentObject) return;
626
+ let mapList = this.hanldeGetTargetList(item);
627
+ let target = mapList.find(v => v.validate && v.validate.obj_type == 'birthday');
628
+ if (target) {
629
+ this.hanldeSetFieldsValue(
630
+ {
631
+ [target.val_key]: curVal
632
+ },
633
+ target
634
+ );
635
+ }
636
+ }
637
+ },
638
+ watch: {}
639
+ };