vue2-client 1.14.21 → 1.14.24

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 (373) hide show
  1. package/.cursorrules +19 -19
  2. package/.env.gaslink +19 -19
  3. package/.env.his +19 -19
  4. package/.env.liuli +19 -19
  5. package/.env.runtime +19 -0
  6. package/.env.scada +19 -19
  7. package/.eslintrc.js +90 -90
  8. package/CHANGELOG.md +824 -824
  9. package/Components.md +60 -60
  10. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  11. package/docs/LowCode/lowcode.md +155 -155
  12. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  13. package/docs/index.md +30 -30
  14. package/index.js +31 -31
  15. package/jest-transform-stub.js +8 -8
  16. package/jest.setup.js +7 -7
  17. package/jsconfig.json +19 -19
  18. package/package.json +2 -1
  19. package/public/his/editor/editor.html +51 -51
  20. package/public/his/editor/mock/bind_data.html +779 -779
  21. package/public/his/editor/mock/data_table.html +40 -40
  22. package/public/his/editor/mock/sign.html +75 -75
  23. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  24. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  25. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  26. package/public/his/editor/vender/date97/calendar.js +4 -4
  27. package/public/his/editor/vender/date97/lang/en.js +13 -13
  28. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  29. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  30. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  31. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  32. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  33. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  34. package/public/his/editor/vender/diff.js +1627 -1627
  35. package/public/his/editor/vender/editor.js +1 -1
  36. package/public/his/editor/vender/fabric.js +31187 -31187
  37. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  38. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  39. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  40. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  41. package/public/his/editor/vender/mui/mui.min.css +4 -4
  42. package/public/his/editor/vender/mui/mui.min.js +5 -5
  43. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  44. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  45. package/public/his/editor/vender/qrcode.js +7 -7
  46. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  47. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  48. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  49. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  50. package/public/his/editor/vender/validator.js +5094 -5094
  51. package/public/his/editor/vender/weui/weui.css +5659 -5659
  52. package/public/his/editor/vender/weui/weui.min.css +4 -4
  53. package/public/his/editor/vender/weui/weui.min.js +11 -11
  54. package/public/index.html +27 -27
  55. package/src/ReportView.js +19 -19
  56. package/src/assets/img/querySlotDemo.svg +15 -15
  57. package/src/assets/svg/badtwo.svg +1 -1
  58. package/src/assets/svg/goodtwo.svg +1 -1
  59. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  60. package/src/base-client/components/AI/demo.vue +31 -31
  61. package/src/base-client/components/common/AMisRender/index.js +3 -3
  62. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  63. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  64. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  65. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  66. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  67. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  68. package/src/base-client/components/common/CitySelect/index.js +3 -3
  69. package/src/base-client/components/common/CitySelect/index.md +109 -109
  70. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  71. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  72. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  73. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  74. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  75. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  76. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  77. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  78. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  79. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  80. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  81. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  82. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  83. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  84. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  85. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  86. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  87. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  88. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  89. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  90. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  91. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  92. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  93. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  94. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  95. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  96. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  97. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  98. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  99. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  100. package/src/base-client/components/common/Recording/index.js +3 -3
  101. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  102. package/src/base-client/components/common/Tree/index.js +2 -2
  103. package/src/base-client/components/common/Upload/index.js +3 -3
  104. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  105. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  106. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  107. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  108. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  109. package/src/base-client/components/common/XAddReport/index.js +3 -3
  110. package/src/base-client/components/common/XAddReport/index.md +56 -56
  111. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  112. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  113. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  114. package/src/base-client/components/common/XButtons/index.js +3 -3
  115. package/src/base-client/components/common/XButtons/index.md +61 -61
  116. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  117. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  118. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  119. package/src/base-client/components/common/XDataCard/index.js +3 -3
  120. package/src/base-client/components/common/XDataCard/index.md +1 -1
  121. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  122. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  123. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  124. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  125. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  126. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  127. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  128. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  129. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  130. package/src/base-client/components/common/XForm/index.md +178 -178
  131. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  132. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  133. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  134. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  135. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  136. package/src/base-client/components/common/XFormTable/index.md +92 -92
  137. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +167 -167
  138. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  139. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  140. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  141. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  142. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  143. package/src/base-client/components/common/XPrint/PrintBill.vue +302 -302
  144. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  145. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  146. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  147. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  148. package/src/base-client/components/common/XPrint/index.vue +97 -97
  149. package/src/base-client/components/common/XReport/XReport.vue +892 -892
  150. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  151. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  152. package/src/base-client/components/common/XReport/index.js +3 -3
  153. package/src/base-client/components/common/XReport/index.md +44 -44
  154. package/src/base-client/components/common/XReport/print.js +186 -186
  155. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  156. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  157. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  158. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  159. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  160. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  161. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  162. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  163. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  164. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  165. package/src/base-client/components/common/XStepView/index.js +3 -3
  166. package/src/base-client/components/common/XStepView/index.md +31 -31
  167. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  168. package/src/base-client/components/common/XTab/index.js +3 -3
  169. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  170. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  171. package/src/base-client/components/common/XTable/index.md +255 -255
  172. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  173. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  174. package/src/base-client/components/common/XTree/index.js +3 -3
  175. package/src/base-client/components/common/XTree/index.md +36 -36
  176. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  177. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  178. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  179. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  180. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  181. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  182. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  183. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  184. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  185. package/src/base-client/components/his/threeTestOrders/textBox.vue +522 -522
  186. package/src/base-client/components/his/threeTestOrders/threeTestOrders.vue +386 -386
  187. package/src/base-client/components/index.js +51 -51
  188. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  189. package/src/base-client/components/layout/XPageView/XPageView.vue +155 -155
  190. package/src/base-client/components/layout/XPageView/index.js +3 -3
  191. package/src/base-client/components/layout/XPageView/index.md +38 -38
  192. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  193. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  194. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  195. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  196. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  197. package/src/base-client/plugins/Config.js +19 -19
  198. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  199. package/src/base-client/plugins/Recording.js +258 -258
  200. package/src/base-client/plugins/index.js +23 -23
  201. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  202. package/src/components/Charts/Bar.vue +62 -62
  203. package/src/components/Charts/ChartCard.vue +134 -134
  204. package/src/components/Charts/Liquid.vue +67 -67
  205. package/src/components/Charts/MiniArea.vue +39 -39
  206. package/src/components/Charts/MiniBar.vue +39 -39
  207. package/src/components/Charts/MiniProgress.vue +75 -75
  208. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  209. package/src/components/Charts/Radar.vue +68 -68
  210. package/src/components/Charts/RankList.vue +77 -77
  211. package/src/components/Charts/TagCloud.vue +113 -113
  212. package/src/components/Charts/TransferBar.vue +64 -64
  213. package/src/components/Charts/Trend.vue +82 -82
  214. package/src/components/Charts/chart.less +12 -12
  215. package/src/components/Charts/smooth.area.less +13 -13
  216. package/src/components/CodeMirror/inedx.vue +118 -118
  217. package/src/components/CodeMirror/setting.js +40 -40
  218. package/src/components/HeightScanner/index.vue +571 -571
  219. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  220. package/src/components/NumberInfo/index.js +3 -3
  221. package/src/components/NumberInfo/index.less +54 -54
  222. package/src/components/NumberInfo/index.md +43 -43
  223. package/src/components/card/ChartCard.vue +79 -79
  224. package/src/components/chart/Bar.vue +60 -60
  225. package/src/components/chart/MiniArea.vue +67 -67
  226. package/src/components/chart/MiniBar.vue +59 -59
  227. package/src/components/chart/MiniProgress.vue +57 -57
  228. package/src/components/chart/Radar.vue +80 -80
  229. package/src/components/chart/RankingList.vue +60 -60
  230. package/src/components/chart/Trend.vue +79 -79
  231. package/src/components/chart/index.less +9 -9
  232. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  233. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  234. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  235. package/src/components/checkbox/index.js +9 -9
  236. package/src/components/exception/ExceptionPage.vue +70 -70
  237. package/src/components/g2Charts/constants.js +202 -202
  238. package/src/components/g2Charts/demo.vue +808 -808
  239. package/src/components/g2Charts/designer.vue +228 -228
  240. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  241. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  242. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  243. package/src/components/g2Charts/index.vue +397 -397
  244. package/src/components/index.js +36 -36
  245. package/src/components/input/IInput.vue +66 -66
  246. package/src/components/menu/SideMenu.vue +75 -75
  247. package/src/components/menu/menu.js +273 -273
  248. package/src/components/setting/Setting.vue +234 -234
  249. package/src/components/tool/AStepItem.vue +60 -60
  250. package/src/config/CreateQueryConfig.js +325 -325
  251. package/src/config/default/antd.config.js +89 -89
  252. package/src/config/default/setting.config.js +55 -55
  253. package/src/font-style/font.css +4 -4
  254. package/src/layouts/CommonLayout.vue +56 -56
  255. package/src/layouts/PageLayout.vue +151 -151
  256. package/src/layouts/SinglePageView.vue +136 -136
  257. package/src/layouts/header/AdminHeader.vue +132 -132
  258. package/src/layouts/header/HeaderNotice.vue +177 -177
  259. package/src/layouts/header/InstitutionDetail.vue +181 -181
  260. package/src/layouts/tabs/TabsHead.vue +189 -189
  261. package/src/layouts/tabs/TabsView.vue +389 -389
  262. package/src/lib.js +1 -1
  263. package/src/main.js +34 -34
  264. package/src/mock/extend/index.js +84 -84
  265. package/src/mock/goods/index.js +108 -108
  266. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  267. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  268. package/src/pages/DefaultExample/index.vue +77 -77
  269. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  270. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  271. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  272. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  273. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  274. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  275. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  276. package/src/pages/DynamicStatistics/index.vue +282 -282
  277. package/src/pages/Example/childIndex.vue +15 -15
  278. package/src/pages/Example/index.vue +30 -30
  279. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  280. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  281. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  282. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  283. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  284. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  285. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  286. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  287. package/src/pages/Recording/index.vue +77 -77
  288. package/src/pages/ServiceReview/index.vue +284 -284
  289. package/src/pages/SubExample/index.vue +26 -26
  290. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
  291. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +122 -131
  292. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  293. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  294. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  295. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +102 -32
  296. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +975 -997
  297. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  298. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  299. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  300. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  301. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  302. package/src/pages/XPageViewExample/index.vue +38 -38
  303. package/src/pages/XReportView/index.vue +64 -64
  304. package/src/pages/XTreeOneProExample/index.vue +67 -67
  305. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  306. package/src/pages/login/Login.vue +378 -378
  307. package/src/pages/login/LoginV3.vue +389 -389
  308. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  309. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  310. package/src/pages/report/ReportTable.js +124 -124
  311. package/src/pages/resourceManage/orgListManage.vue +98 -98
  312. package/src/pages/system/dictionary/index.vue +44 -44
  313. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  314. package/src/pages/system/monitor/operLog/index.vue +37 -37
  315. package/src/pages/system/settings/modifyPassword.vue +117 -117
  316. package/src/pages/system/ticket/index.vue +480 -480
  317. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  318. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  319. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +76 -76
  320. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +74 -74
  321. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  322. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  323. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +74 -74
  324. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  325. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +74 -74
  326. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  327. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +86 -86
  328. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +73 -73
  329. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  330. package/src/plugins/EventLogPlugin.js +33 -33
  331. package/src/plugins/FindParentsData.js +17 -17
  332. package/src/router/async/config.async.js +35 -35
  333. package/src/router/async/router.map.js +2 -2
  334. package/src/router/index.js +27 -27
  335. package/src/router.js +19 -19
  336. package/src/services/DataModel.js +30 -30
  337. package/src/services/LodopFuncs.js +137 -137
  338. package/src/services/api/TicketDetailsViewApi.js +46 -46
  339. package/src/services/api/cas.js +79 -79
  340. package/src/services/api/common.js +346 -346
  341. package/src/services/api/entity.js +18 -18
  342. package/src/services/api/index.js +17 -17
  343. package/src/services/api/restTools.js +145 -145
  344. package/src/services/api/workFlow.js +63 -63
  345. package/src/store/modules/account.js +115 -115
  346. package/src/store/modules/index.js +5 -5
  347. package/src/store/modules/lowCode.js +33 -33
  348. package/src/store/modules/setting.js +119 -119
  349. package/src/theme/default/style.less +58 -58
  350. package/src/theme/global.less +159 -159
  351. package/src/utils/authority-utils.js +85 -85
  352. package/src/utils/errorCode.js +6 -6
  353. package/src/utils/formatter.js +74 -74
  354. package/src/utils/htmlToPDF.js +108 -108
  355. package/src/utils/htmlToPDFApi.js +5 -5
  356. package/src/utils/login.js +188 -188
  357. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  358. package/src/utils/lowcode/lowcodeLog.js +29 -29
  359. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  360. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  361. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  362. package/src/utils/map-utils.js +47 -47
  363. package/src/utils/reg.js +95 -95
  364. package/src/utils/routerUtil.js +2 -2
  365. package/src/utils/runEvalFunction.js +14 -14
  366. package/src/utils/theme-color-replacer-extend.js +92 -92
  367. package/src/utils/util.js +329 -329
  368. package/src/utils/waterMark.js +31 -31
  369. package/vue.config.js +6 -0
  370. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  371. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  372. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  373. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -1,522 +1,522 @@
1
- <script setup>
2
- import { ref, reactive, watch } from 'vue'
3
- import { message } from 'ant-design-vue'
4
- import { runLogic } from '@vue2-client/services/api/common'
5
-
6
- // 定义组件属性
7
- const props = defineProps({
8
- visible: Boolean,
9
- id: {
10
- type: Number,
11
- default: 180
12
- },
13
- modalType: {
14
- type: String,
15
- default: 'create',
16
- validator: (value) => ['create', 'update', 'baby'].includes(value)
17
- },
18
- editorReady: {
19
- type: Boolean,
20
- default: false
21
- }
22
- })
23
-
24
- // 定义组件事件
25
- const emit = defineEmits(['update:visible', 'submit', 'cancel'])
26
-
27
- // 常量
28
- const modalTitles = {
29
- create: '创建体温单',
30
- update: '更新体温单',
31
- baby: '新生儿体温单'
32
- }
33
-
34
- // 响应式状态
35
- const submitLoading = ref(false)
36
- const formErrors = ref({})
37
-
38
- // 表单数据
39
- const formData = reactive({
40
- id: '',
41
- name: '',
42
- inDate: '',
43
- diag: '',
44
- dept: '',
45
- bed: '',
46
- medicalNo: '',
47
- begin: '',
48
- operateDate: '',
49
- notes: '',
50
- sex: '男',
51
- weight: '',
52
- heart: '',
53
- tempType: '',
54
- temperature: '',
55
- breath: '',
56
- sphygmus: '',
57
- physicalcool: '',
58
- labels: '',
59
- data1: '',
60
- data2: '',
61
- data3: '',
62
- data4: '',
63
- data5: '',
64
- data6: '',
65
- data7: '',
66
- data8: '',
67
- data9: '',
68
- pain: ''
69
- })
70
-
71
- // 监听 props 变化初始化表单
72
- watch(() => props.visible, (newVal, oldVal) => {
73
- if (newVal) {
74
- // 如果是从关闭状态变为打开状态,重置表单错误
75
- formErrors.value = {}
76
-
77
- // 无论何种模式,都先尝试从服务加载数据
78
- initFormData()
79
- } else if (oldVal && !newVal) {
80
- // 当弹窗关闭时,清空表单数据,为下次打开做准备
81
- resetForm()
82
- }
83
- }, { immediate: true })
84
-
85
- watch(() => props.modalType, (newVal) => {
86
- if (props.visible) {
87
- // 无论何种模式,都先尝试从服务加载数据
88
- initFormData()
89
- }
90
- })
91
-
92
- watch(() => props.id, (newVal) => {
93
- if (newVal) {
94
- formData.id = newVal
95
- }
96
- }, { immediate: true })
97
-
98
- // 重置表单为默认值
99
- const resetForm = () => {
100
- // 清空表单错误
101
- formErrors.value = {}
102
-
103
- const today = new Date().toISOString().split('T')[0]
104
- const isBaby = props.modalType === 'baby'
105
-
106
- // 重置所有字段
107
- formData.id = props.id || (isBaby ? `BY${Date.now()}` : `VS${Date.now()}`)
108
- formData.name = ''
109
- formData.inDate = today
110
- formData.diag = ''
111
- formData.dept = isBaby ? '妇产科' : ''
112
- formData.bed = ''
113
- formData.medicalNo = ''
114
- formData.begin = today
115
- formData.operateDate = ''
116
- formData.notes = isBaby ? '出生-十时二十分' : '入院-十时二十分,,转入ICU,,,,,,,手术,,,,,,,,,,,,,,,出院,死亡于×时×分'
117
- formData.sex = '男'
118
- formData.weight = isBaby ? '3200,,,,3300,,,,3400,,,,3400,,,,3500,,,,3400,,,,' : ''
119
- formData.heart = '112,120,118,111,,,,,,,112,120,118,111'
120
- formData.tempType = isBaby
121
- ? '2,2,2,3,2,1,2,2,2,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1'
122
- : '0,1,2,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1'
123
- formData.temperature = isBaby
124
- ? '37.7,37.9,38.5,37.1,37.5,38.5,,,37.5,38.5,37.4,37.8,,37.5,37.6,37.8,,37.9,37.8,37.5,38.6,37.8,,37.9,37.8'
125
- : '38.7,38.9,38.5,39.1,38.5,38.5|37.1,38.5,38.5,,,38.5,38.5|36.9,38.4,38.8,,38.5,38.6,38.8,,38.9,38.8,38.5,38.6,38.8,,38.9,38.8,34,34.0'
126
- formData.physicalcool = isBaby ? ',,,37.6,,,,,,,,37.5,,,,,,,,,37.4,,' : ''
127
- formData.breath = '30,30,R,,35,35,35,35,35,35,35,35,,R,R,35,35,,R,,,35,35,,R'
128
- formData.sphygmus = '112,110,109,103,108,85,90,83,90,103,108,85,90,83,90,,90,83,90,103,108,85,90,83,90'
129
- formData.labels = isBaby
130
- ? '血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)'
131
- : '血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)|身高(cm)|体重(kg)|过敏药'
132
- formData.data1 = '120/85,121/84,,110/75,'
133
- formData.data2 = '1180ml,,,500ml,,40ml'
134
- formData.data3 = '500ml,,,,500ml,,67ml'
135
- formData.data4 = '2,4,5,3,3,3,2,,2'
136
- formData.data5 = '2,4,5,3,3,3,2,,2'
137
- formData.data6 = '167cm,,,,,,,,,164cm'
138
- formData.data7 = '95kg,,,,,90kg'
139
- formData.data8 = '青霉素,'
140
- formData.data9 = '测试,'
141
- formData.pain = '2,2,4,5,8,8,9|2,6|3,,,4,4,4'
142
- }
143
-
144
- // 处理JSON字符串数据
145
- const parseFormData = (data) => {
146
- if (!data) return null
147
- try {
148
- // 如果是字符串,尝试解析为JSON
149
- if (typeof data === 'string') {
150
- return JSON.parse(data)
151
- }
152
- // 如果已经是对象且有f_data字段,尝试解析f_data
153
- if (typeof data === 'object' && data.f_data) {
154
- return JSON.parse(data.f_data)
155
- }
156
- // 如果是普通对象,直接返回
157
- return data
158
- } catch (error) {
159
- console.error('解析数据失败:', error)
160
- return null
161
- }
162
- }
163
-
164
- // 初始化表单数据
165
- const initFormData = async () => {
166
- try {
167
- let parsedData = null
168
- let resultData = null
169
- try {
170
- // 尝试从服务器获取数据
171
- resultData = await runLogic('threeTestOrderDataLOGIC', { id: props.id }, 'af-his')
172
- console.log('体温单数据 = ', resultData)
173
- // 处理不同格式的返回数据
174
- if (resultData) {
175
- // 如果是数组,取第一项
176
- if (Array.isArray(resultData) && resultData.length > 0) {
177
- const firstItem = resultData[0]
178
-
179
- // 检查是否有f_data字段
180
- if (firstItem.f_data) {
181
- parsedData = parseFormData(firstItem.f_data)
182
- } else {
183
- // 可能整个对象就是数据
184
- parsedData = firstItem
185
- }
186
- } else if (typeof resultData === 'object') {
187
- if (resultData.f_data) {
188
- parsedData = parseFormData(resultData.f_data)
189
- } else { parsedData = resultData }
190
- }
191
- }
192
- } catch (error) {
193
- console.error('获取数据失败:', error)
194
- }
195
- // 如果解析成功且非创建模式,填充表单
196
- if (parsedData && props.modalType !== 'create') {
197
- console.log('解析后的数据:', parsedData)
198
- // 将解析后的数据填充到表单中
199
- Object.keys(parsedData).forEach(key => {
200
- if (key in formData) {
201
- formData[key] = parsedData[key]
202
- }
203
- })
204
- // 确保formData.id是正确设置的
205
- if (!formData.id && parsedData.id) {
206
- formData.id = parsedData.id
207
- }
208
- return
209
- } else if (props.modalType === 'create') {
210
- // 创建模式下重置表单
211
- resetForm()
212
- return
213
- }
214
- } catch (error) {
215
- console.error('初始化表单数据失败:', error)
216
- message.error('体温单数据加载失败,将使用默认值')
217
- }
218
- // 如果没有数据或解析失败,使用默认值
219
- resetForm()
220
- }
221
-
222
- // 关闭弹窗
223
- const closeModal = () => {
224
- // 关闭弹窗前清空表单数据
225
- resetForm()
226
- emit('update:visible', false)
227
- emit('cancel')
228
- }
229
-
230
- // 验证表单
231
- const validateForm = () => {
232
- const isBaby = props.modalType === 'baby'
233
- const errors = {}
234
- let hasError = false
235
- // 通用字段验证
236
- const requiredFields = [
237
- { key: 'id', label: 'ID' },
238
- { key: 'name', label: '姓名' },
239
- { key: 'inDate', label: '入院日期' },
240
- { key: 'dept', label: '科室' },
241
- { key: 'bed', label: '床位' },
242
- { key: 'medicalNo', label: '病历号' },
243
- { key: 'begin', label: '开始日期' },
244
- { key: 'notes', label: '备注' },
245
- { key: 'heart', label: '心率' },
246
- { key: 'tempType', label: '体温类型' },
247
- { key: 'temperature', label: '体温' },
248
- { key: 'breath', label: '呼吸' },
249
- { key: 'labels', label: '标签' },
250
- { key: 'data1', label: '血压' },
251
- { key: 'data2', label: '入水量' },
252
- { key: 'data3', label: '出水量' },
253
- { key: 'data4', label: '大便次数' },
254
- { key: 'data5', label: '小便次数' }
255
- ]
256
- // 成人特有字段
257
- if (!isBaby) {
258
- requiredFields.push(
259
- { key: 'diag', label: '诊断' },
260
- { key: 'operateDate', label: '手术日期' },
261
- { key: 'sphygmus', label: '脉搏' },
262
- { key: 'data6', label: '身高' },
263
- { key: 'data7', label: '体重' },
264
- { key: 'data8', label: '过敏药' },
265
- { key: 'data9', label: '其他数据' }
266
- )
267
- } else {
268
- // 婴儿特有字段
269
- requiredFields.push(
270
- { key: 'weight', label: '体重' },
271
- { key: 'physicalcool', label: '物理降温' }
272
- )
273
- }
274
- // 检查每个必填字段
275
- requiredFields.forEach(field => {
276
- // 首先检查字段是否存在
277
- if (formData[field.key] === undefined || formData[field.key] === null) {
278
- errors[field.key] = `${field.label}不能为空`
279
- hasError = true
280
- return
281
- }
282
- // 将值转换为字符串后再检查是否为空
283
- const value = String(formData[field.key])
284
- if (value.trim() === '') {
285
- errors[field.key] = `${field.label}不能为空`
286
- hasError = true
287
- }
288
- })
289
-
290
- formErrors.value = errors
291
- if (hasError) {
292
- message.error('表单验证失败,请填写所有必填项')
293
- return false
294
- }
295
- return true
296
- }
297
-
298
- // 获取表单数据
299
- const getFormData = () => {
300
- const isBaby = props.modalType === 'baby'
301
- const commonData = {
302
- id: formData.id || `${isBaby ? 'BY' : 'VS'}${Date.now()}`,
303
- name: formData.name,
304
- inDate: formData.inDate,
305
- dept: formData.dept,
306
- bed: formData.bed,
307
- medicalNo: formData.medicalNo,
308
- begin: formData.begin,
309
- notes: formData.notes,
310
- heart: formData.heart,
311
- tempType: formData.tempType,
312
- temperature: formData.temperature,
313
- breath: formData.breath,
314
- labels: formData.labels,
315
- data1: formData.data1,
316
- data2: formData.data2,
317
- data3: formData.data3,
318
- data4: formData.data4,
319
- data5: formData.data5,
320
- pain: formData.pain
321
- }
322
- if (isBaby) {
323
- return {
324
- ...commonData,
325
- type: 'baby',
326
- sex: formData.sex,
327
- weight: formData.weight,
328
- physicalcool: formData.physicalcool
329
- }
330
- }
331
- return {
332
- ...commonData,
333
- diag: formData.diag,
334
- operateDate: formData.operateDate,
335
- sphygmus: formData.sphygmus,
336
- data6: formData.data6,
337
- data7: formData.data7,
338
- data8: formData.data8,
339
- data9: formData.data9
340
- }
341
- }
342
-
343
- // 提交表单
344
- const submitForm = async () => {
345
- if (!props.editorReady) {
346
- message.error('体温单编辑器未加载完成,请等待或刷新页面')
347
- return
348
- }
349
- // 首先验证表单
350
- if (!validateForm()) {
351
- return
352
- }
353
- submitLoading.value = true
354
- try {
355
- const data = getFormData()
356
- emit('submit', data)
357
- // 关闭弹窗
358
- closeModal()
359
- } catch (err) {
360
- console.error('提交体温单数据出错:', err)
361
- message.error(`提交体温单数据失败: ${err.message || '未知错误'}`)
362
- } finally {
363
- submitLoading.value = false
364
- }
365
- }
366
- </script>
367
-
368
- <template>
369
- <a-modal
370
- :title="modalTitles[modalType]"
371
- :visible="visible"
372
- @cancel="closeModal"
373
- :width="700"
374
- :footer="null">
375
- <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
376
- <!-- 通用基础信息字段 -->
377
- <a-form-item label="ID" :validateStatus="formErrors.id ? 'error' : ''" :help="formErrors.id">
378
- <a-input v-model="formData.id" :placeholder="`请输入ID,如:${modalType === 'baby' ? 'BY' : 'AD'}20230001`" />
379
- </a-form-item>
380
- <a-form-item label="姓名" :validateStatus="formErrors.name ? 'error' : ''" :help="formErrors.name">
381
- <a-input v-model="formData.name" placeholder="请输入姓名,如:张三" />
382
- </a-form-item>
383
- <a-form-item label="入院日期" :validateStatus="formErrors.inDate ? 'error' : ''" :help="formErrors.inDate">
384
- <a-input v-model="formData.inDate" placeholder="请输入日期,如:2023-08-01" />
385
- </a-form-item>
386
- <!-- 新生儿特有字段 -->
387
- <template v-if="modalType === 'baby'">
388
- <a-form-item label="性别">
389
- <a-radio-group v-model="formData.sex">
390
- <a-radio value="男">男</a-radio>
391
- <a-radio value="女">女</a-radio>
392
- </a-radio-group>
393
- </a-form-item>
394
- </template>
395
- <!-- 成人特有字段 -->
396
- <template v-else>
397
- <a-form-item label="诊断" :validateStatus="formErrors.diag ? 'error' : ''" :help="formErrors.diag">
398
- <a-input v-model="formData.diag" placeholder="请输入诊断,如:新型冠状病毒肺炎" />
399
- </a-form-item>
400
- </template>
401
- <!-- 通用字段 -->
402
- <a-form-item label="科室" :validateStatus="formErrors.dept ? 'error' : ''" :help="formErrors.dept">
403
- <a-input v-model="formData.dept" :placeholder="`请输入科室,如:${modalType === 'baby' ? '妇产科' : '呼吸内科'}`" />
404
- </a-form-item>
405
- <a-form-item label="床位" :validateStatus="formErrors.bed ? 'error' : ''" :help="formErrors.bed">
406
- <a-input v-model="formData.bed" placeholder="请输入床位,如:801" />
407
- </a-form-item>
408
- <a-form-item label="病历号" :validateStatus="formErrors.medicalNo ? 'error' : ''" :help="formErrors.medicalNo">
409
- <a-input v-model="formData.medicalNo" placeholder="请输入病历号,如:202300991" />
410
- </a-form-item>
411
- <a-form-item label="开始日期" :validateStatus="formErrors.begin ? 'error' : ''" :help="formErrors.begin">
412
- <a-input v-model="formData.begin" placeholder="请输入日期,如:2023-08-01" />
413
- </a-form-item>
414
- <!-- 成人特有字段 -->
415
- <template v-if="modalType !== 'baby'">
416
- <a-form-item label="手术日期" :validateStatus="formErrors.operateDate ? 'error' : ''" :help="formErrors.operateDate">
417
- <a-input v-model="formData.operateDate" placeholder="请输入日期,如:2023-08-03" />
418
- </a-form-item>
419
- </template>
420
- <!-- 备注字段 -->
421
- <a-form-item label="备注" :validateStatus="formErrors.notes ? 'error' : ''" :help="formErrors.notes">
422
- <a-input v-model="formData.notes" :placeholder="`请输入备注,如:${modalType === 'baby' ? '出生-十时二十分' : '入院-十时二十分,,转入ICU,,,,,,,手术'}`" />
423
- <div class="input-tip">格式:多个值用逗号分隔,对应不同日期</div>
424
- </a-form-item>
425
- <!-- 根据表单类型显示不同的数据字段 -->
426
- <template v-if="modalType !== 'baby'">
427
- <a-form-item label="脉搏" :validateStatus="formErrors.sphygmus ? 'error' : ''" :help="formErrors.sphygmus">
428
- <a-input v-model="formData.sphygmus" placeholder="脉搏数据,如:112,110,109,103,108,85" />
429
- <div class="input-tip">格式:多个值用逗号分隔</div>
430
- </a-form-item>
431
- </template>
432
- <template v-else>
433
- <a-form-item label="体重" :validateStatus="formErrors.weight ? 'error' : ''" :help="formErrors.weight">
434
- <a-input v-model="formData.weight" placeholder="体重数据,多个值用逗号分隔,如:3200,,,,3300,,,,3400" />
435
- <div class="input-tip">格式:多个值用逗号分隔,每组数据对应一天</div>
436
- </a-form-item>
437
- </template>
438
- <!-- 生命体征数据字段 -->
439
- <a-form-item label="心率" :validateStatus="formErrors.heart ? 'error' : ''" :help="formErrors.heart">
440
- <a-input v-model="formData.heart" placeholder="心率数据,多个值用逗号分隔,如:112,120,118,111" />
441
- <div class="input-tip">格式:多个值用逗号分隔</div>
442
- </a-form-item>
443
- <a-form-item label="体温类型" :validateStatus="formErrors.tempType ? 'error' : ''" :help="formErrors.tempType">
444
- <a-input v-model="formData.tempType" placeholder="体温类型,如:0,1,2,3,0,1" />
445
- <div class="input-tip">格式:多个值用逗号分隔,0-3表示不同类型</div>
446
- </a-form-item>
447
- <a-form-item label="体温" :validateStatus="formErrors.temperature ? 'error' : ''" :help="formErrors.temperature">
448
- <a-input v-model="formData.temperature" :placeholder="`体温数据,如:${modalType === 'baby' ? '37.7,37.9,38.5,37.1' : '38.7,38.9,38.5,39.1,38.5,38.5|37.1'}`" />
449
- <div class="input-tip">格式:多个值用逗号分隔<template v-if="modalType !== 'baby'">,|表示新一行数据</template></div>
450
- </a-form-item>
451
- <!-- 新生儿特有字段 -->
452
- <template v-if="modalType === 'baby'">
453
- <a-form-item label="物理降温" :validateStatus="formErrors.physicalcool ? 'error' : ''" :help="formErrors.physicalcool">
454
- <a-input v-model="formData.physicalcool" placeholder="物理降温数据,如:,,,37.6,,,,,,,,37.5" />
455
- <div class="input-tip">格式:多个值用逗号分隔,空值用逗号表示</div>
456
- </a-form-item>
457
- </template>
458
- <!-- 通用数据字段 -->
459
- <a-form-item label="呼吸" :validateStatus="formErrors.breath ? 'error' : ''" :help="formErrors.breath">
460
- <a-input v-model="formData.breath" placeholder="呼吸数据,如:30,30,R,,35,35" />
461
- <div class="input-tip">格式:多个值用逗号分隔,R表示异常</div>
462
- </a-form-item>
463
- <a-form-item label="标签" :validateStatus="formErrors.labels ? 'error' : ''" :help="formErrors.labels">
464
- <a-input v-model="formData.labels" :placeholder="`标签数据,如:血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)${modalType === 'baby' ? '' : '|身高(cm)|体重(kg)|过敏药'}`" />
465
- <div class="input-tip">格式:多个标签用|分隔</div>
466
- </a-form-item>
467
- <!-- 通用数据字段 -->
468
- <a-form-item label="血压" :validateStatus="formErrors.data1 ? 'error' : ''" :help="formErrors.data1">
469
- <a-input v-model="formData.data1" placeholder="血压数据,如:120/85,121/84,,110/75" />
470
- <div class="input-tip">格式:多个值用逗号分隔</div>
471
- </a-form-item>
472
- <a-form-item label="入水量" :validateStatus="formErrors.data2 ? 'error' : ''" :help="formErrors.data2">
473
- <a-input v-model="formData.data2" placeholder="入水量数据,如:1180ml,,,500ml,,40ml" />
474
- <div class="input-tip">格式:多个值用逗号分隔</div>
475
- </a-form-item>
476
- <a-form-item label="出水量" :validateStatus="formErrors.data3 ? 'error' : ''" :help="formErrors.data3">
477
- <a-input v-model="formData.data3" placeholder="出水量数据,如:500ml,,,,500ml,,67ml" />
478
- <div class="input-tip">格式:多个值用逗号分隔</div>
479
- </a-form-item>
480
- <a-form-item label="大便次数" :validateStatus="formErrors.data4 ? 'error' : ''" :help="formErrors.data4">
481
- <a-input v-model="formData.data4" placeholder="大便次数数据,如:2,4,5,3,3,3,2,,2" />
482
- <div class="input-tip">格式:多个值用逗号分隔</div>
483
- </a-form-item>
484
- <a-form-item label="小便次数" :validateStatus="formErrors.data5 ? 'error' : ''" :help="formErrors.data5">
485
- <a-input v-model="formData.data5" placeholder="小便次数数据,如:2,4,5,3,3,3,2,,2" />
486
- <div class="input-tip">格式:多个值用逗号分隔</div>
487
- </a-form-item>
488
- <!-- 成人特有字段 -->
489
- <template v-if="modalType !== 'baby'">
490
- <a-form-item label="身高" :validateStatus="formErrors.data6 ? 'error' : ''" :help="formErrors.data6">
491
- <a-input v-model="formData.data6" placeholder="身高数据,如:167cm,,,,,,,,,164cm" />
492
- <div class="input-tip">格式:多个值用逗号分隔</div>
493
- </a-form-item>
494
- <a-form-item label="体重" :validateStatus="formErrors.data7 ? 'error' : ''" :help="formErrors.data7">
495
- <a-input v-model="formData.data7" placeholder="体重数据,如:95kg,,,,,90kg" />
496
- <div class="input-tip">格式:多个值用逗号分隔</div>
497
- </a-form-item>
498
- <a-form-item label="过敏药" :validateStatus="formErrors.data8 ? 'error' : ''" :help="formErrors.data8">
499
- <a-input v-model="formData.data8" placeholder="过敏药数据,如:青霉素," />
500
- <div class="input-tip">格式:多个值用逗号分隔</div>
501
- </a-form-item>
502
- <a-form-item label="其他数据" :validateStatus="formErrors.data9 ? 'error' : ''" :help="formErrors.data9">
503
- <a-input v-model="formData.data9" placeholder="其他数据,如:测试," />
504
- <div class="input-tip">格式:多个值用逗号分隔</div>
505
- </a-form-item>
506
- </template>
507
- <!-- 按钮 -->
508
- <a-form-item :wrapper-col="{ span: 18, offset: 6 }">
509
- <a-button type="primary" @click="submitForm" :loading="submitLoading" style="margin-right: 10px">确定</a-button>
510
- <a-button @click="closeModal">取消</a-button>
511
- </a-form-item>
512
- </a-form>
513
- </a-modal>
514
- </template>
515
-
516
- <style scoped>
517
- .input-tip {
518
- color: #999;
519
- font-size: 12px;
520
- margin-top: 4px;
521
- }
522
- </style>
1
+ <script setup>
2
+ import { ref, reactive, watch } from 'vue'
3
+ import { message } from 'ant-design-vue'
4
+ import { runLogic } from '@vue2-client/services/api/common'
5
+
6
+ // 定义组件属性
7
+ const props = defineProps({
8
+ visible: Boolean,
9
+ id: {
10
+ type: Number,
11
+ default: 180
12
+ },
13
+ modalType: {
14
+ type: String,
15
+ default: 'create',
16
+ validator: (value) => ['create', 'update', 'baby'].includes(value)
17
+ },
18
+ editorReady: {
19
+ type: Boolean,
20
+ default: false
21
+ }
22
+ })
23
+
24
+ // 定义组件事件
25
+ const emit = defineEmits(['update:visible', 'submit', 'cancel'])
26
+
27
+ // 常量
28
+ const modalTitles = {
29
+ create: '创建体温单',
30
+ update: '更新体温单',
31
+ baby: '新生儿体温单'
32
+ }
33
+
34
+ // 响应式状态
35
+ const submitLoading = ref(false)
36
+ const formErrors = ref({})
37
+
38
+ // 表单数据
39
+ const formData = reactive({
40
+ id: '',
41
+ name: '',
42
+ inDate: '',
43
+ diag: '',
44
+ dept: '',
45
+ bed: '',
46
+ medicalNo: '',
47
+ begin: '',
48
+ operateDate: '',
49
+ notes: '',
50
+ sex: '男',
51
+ weight: '',
52
+ heart: '',
53
+ tempType: '',
54
+ temperature: '',
55
+ breath: '',
56
+ sphygmus: '',
57
+ physicalcool: '',
58
+ labels: '',
59
+ data1: '',
60
+ data2: '',
61
+ data3: '',
62
+ data4: '',
63
+ data5: '',
64
+ data6: '',
65
+ data7: '',
66
+ data8: '',
67
+ data9: '',
68
+ pain: ''
69
+ })
70
+
71
+ // 监听 props 变化初始化表单
72
+ watch(() => props.visible, (newVal, oldVal) => {
73
+ if (newVal) {
74
+ // 如果是从关闭状态变为打开状态,重置表单错误
75
+ formErrors.value = {}
76
+
77
+ // 无论何种模式,都先尝试从服务加载数据
78
+ initFormData()
79
+ } else if (oldVal && !newVal) {
80
+ // 当弹窗关闭时,清空表单数据,为下次打开做准备
81
+ resetForm()
82
+ }
83
+ }, { immediate: true })
84
+
85
+ watch(() => props.modalType, (newVal) => {
86
+ if (props.visible) {
87
+ // 无论何种模式,都先尝试从服务加载数据
88
+ initFormData()
89
+ }
90
+ })
91
+
92
+ watch(() => props.id, (newVal) => {
93
+ if (newVal) {
94
+ formData.id = newVal
95
+ }
96
+ }, { immediate: true })
97
+
98
+ // 重置表单为默认值
99
+ const resetForm = () => {
100
+ // 清空表单错误
101
+ formErrors.value = {}
102
+
103
+ const today = new Date().toISOString().split('T')[0]
104
+ const isBaby = props.modalType === 'baby'
105
+
106
+ // 重置所有字段
107
+ formData.id = props.id || (isBaby ? `BY${Date.now()}` : `VS${Date.now()}`)
108
+ formData.name = ''
109
+ formData.inDate = today
110
+ formData.diag = ''
111
+ formData.dept = isBaby ? '妇产科' : ''
112
+ formData.bed = ''
113
+ formData.medicalNo = ''
114
+ formData.begin = today
115
+ formData.operateDate = ''
116
+ formData.notes = isBaby ? '出生-十时二十分' : '入院-十时二十分,,转入ICU,,,,,,,手术,,,,,,,,,,,,,,,出院,死亡于×时×分'
117
+ formData.sex = '男'
118
+ formData.weight = isBaby ? '3200,,,,3300,,,,3400,,,,3400,,,,3500,,,,3400,,,,' : ''
119
+ formData.heart = '112,120,118,111,,,,,,,112,120,118,111'
120
+ formData.tempType = isBaby
121
+ ? '2,2,2,3,2,1,2,2,2,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1'
122
+ : '0,1,2,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1'
123
+ formData.temperature = isBaby
124
+ ? '37.7,37.9,38.5,37.1,37.5,38.5,,,37.5,38.5,37.4,37.8,,37.5,37.6,37.8,,37.9,37.8,37.5,38.6,37.8,,37.9,37.8'
125
+ : '38.7,38.9,38.5,39.1,38.5,38.5|37.1,38.5,38.5,,,38.5,38.5|36.9,38.4,38.8,,38.5,38.6,38.8,,38.9,38.8,38.5,38.6,38.8,,38.9,38.8,34,34.0'
126
+ formData.physicalcool = isBaby ? ',,,37.6,,,,,,,,37.5,,,,,,,,,37.4,,' : ''
127
+ formData.breath = '30,30,R,,35,35,35,35,35,35,35,35,,R,R,35,35,,R,,,35,35,,R'
128
+ formData.sphygmus = '112,110,109,103,108,85,90,83,90,103,108,85,90,83,90,,90,83,90,103,108,85,90,83,90'
129
+ formData.labels = isBaby
130
+ ? '血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)'
131
+ : '血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)|身高(cm)|体重(kg)|过敏药'
132
+ formData.data1 = '120/85,121/84,,110/75,'
133
+ formData.data2 = '1180ml,,,500ml,,40ml'
134
+ formData.data3 = '500ml,,,,500ml,,67ml'
135
+ formData.data4 = '2,4,5,3,3,3,2,,2'
136
+ formData.data5 = '2,4,5,3,3,3,2,,2'
137
+ formData.data6 = '167cm,,,,,,,,,164cm'
138
+ formData.data7 = '95kg,,,,,90kg'
139
+ formData.data8 = '青霉素,'
140
+ formData.data9 = '测试,'
141
+ formData.pain = '2,2,4,5,8,8,9|2,6|3,,,4,4,4'
142
+ }
143
+
144
+ // 处理JSON字符串数据
145
+ const parseFormData = (data) => {
146
+ if (!data) return null
147
+ try {
148
+ // 如果是字符串,尝试解析为JSON
149
+ if (typeof data === 'string') {
150
+ return JSON.parse(data)
151
+ }
152
+ // 如果已经是对象且有f_data字段,尝试解析f_data
153
+ if (typeof data === 'object' && data.f_data) {
154
+ return JSON.parse(data.f_data)
155
+ }
156
+ // 如果是普通对象,直接返回
157
+ return data
158
+ } catch (error) {
159
+ console.error('解析数据失败:', error)
160
+ return null
161
+ }
162
+ }
163
+
164
+ // 初始化表单数据
165
+ const initFormData = async () => {
166
+ try {
167
+ let parsedData = null
168
+ let resultData = null
169
+ try {
170
+ // 尝试从服务器获取数据
171
+ resultData = await runLogic('threeTestOrderDataLOGIC', { id: props.id }, 'af-his')
172
+ console.log('体温单数据 = ', resultData)
173
+ // 处理不同格式的返回数据
174
+ if (resultData) {
175
+ // 如果是数组,取第一项
176
+ if (Array.isArray(resultData) && resultData.length > 0) {
177
+ const firstItem = resultData[0]
178
+
179
+ // 检查是否有f_data字段
180
+ if (firstItem.f_data) {
181
+ parsedData = parseFormData(firstItem.f_data)
182
+ } else {
183
+ // 可能整个对象就是数据
184
+ parsedData = firstItem
185
+ }
186
+ } else if (typeof resultData === 'object') {
187
+ if (resultData.f_data) {
188
+ parsedData = parseFormData(resultData.f_data)
189
+ } else { parsedData = resultData }
190
+ }
191
+ }
192
+ } catch (error) {
193
+ console.error('获取数据失败:', error)
194
+ }
195
+ // 如果解析成功且非创建模式,填充表单
196
+ if (parsedData && props.modalType !== 'create') {
197
+ console.log('解析后的数据:', parsedData)
198
+ // 将解析后的数据填充到表单中
199
+ Object.keys(parsedData).forEach(key => {
200
+ if (key in formData) {
201
+ formData[key] = parsedData[key]
202
+ }
203
+ })
204
+ // 确保formData.id是正确设置的
205
+ if (!formData.id && parsedData.id) {
206
+ formData.id = parsedData.id
207
+ }
208
+ return
209
+ } else if (props.modalType === 'create') {
210
+ // 创建模式下重置表单
211
+ resetForm()
212
+ return
213
+ }
214
+ } catch (error) {
215
+ console.error('初始化表单数据失败:', error)
216
+ message.error('体温单数据加载失败,将使用默认值')
217
+ }
218
+ // 如果没有数据或解析失败,使用默认值
219
+ resetForm()
220
+ }
221
+
222
+ // 关闭弹窗
223
+ const closeModal = () => {
224
+ // 关闭弹窗前清空表单数据
225
+ resetForm()
226
+ emit('update:visible', false)
227
+ emit('cancel')
228
+ }
229
+
230
+ // 验证表单
231
+ const validateForm = () => {
232
+ const isBaby = props.modalType === 'baby'
233
+ const errors = {}
234
+ let hasError = false
235
+ // 通用字段验证
236
+ const requiredFields = [
237
+ { key: 'id', label: 'ID' },
238
+ { key: 'name', label: '姓名' },
239
+ { key: 'inDate', label: '入院日期' },
240
+ { key: 'dept', label: '科室' },
241
+ { key: 'bed', label: '床位' },
242
+ { key: 'medicalNo', label: '病历号' },
243
+ { key: 'begin', label: '开始日期' },
244
+ { key: 'notes', label: '备注' },
245
+ { key: 'heart', label: '心率' },
246
+ { key: 'tempType', label: '体温类型' },
247
+ { key: 'temperature', label: '体温' },
248
+ { key: 'breath', label: '呼吸' },
249
+ { key: 'labels', label: '标签' },
250
+ { key: 'data1', label: '血压' },
251
+ { key: 'data2', label: '入水量' },
252
+ { key: 'data3', label: '出水量' },
253
+ { key: 'data4', label: '大便次数' },
254
+ { key: 'data5', label: '小便次数' }
255
+ ]
256
+ // 成人特有字段
257
+ if (!isBaby) {
258
+ requiredFields.push(
259
+ { key: 'diag', label: '诊断' },
260
+ { key: 'operateDate', label: '手术日期' },
261
+ { key: 'sphygmus', label: '脉搏' },
262
+ { key: 'data6', label: '身高' },
263
+ { key: 'data7', label: '体重' },
264
+ { key: 'data8', label: '过敏药' },
265
+ { key: 'data9', label: '其他数据' }
266
+ )
267
+ } else {
268
+ // 婴儿特有字段
269
+ requiredFields.push(
270
+ { key: 'weight', label: '体重' },
271
+ { key: 'physicalcool', label: '物理降温' }
272
+ )
273
+ }
274
+ // 检查每个必填字段
275
+ requiredFields.forEach(field => {
276
+ // 首先检查字段是否存在
277
+ if (formData[field.key] === undefined || formData[field.key] === null) {
278
+ errors[field.key] = `${field.label}不能为空`
279
+ hasError = true
280
+ return
281
+ }
282
+ // 将值转换为字符串后再检查是否为空
283
+ const value = String(formData[field.key])
284
+ if (value.trim() === '') {
285
+ errors[field.key] = `${field.label}不能为空`
286
+ hasError = true
287
+ }
288
+ })
289
+
290
+ formErrors.value = errors
291
+ if (hasError) {
292
+ message.error('表单验证失败,请填写所有必填项')
293
+ return false
294
+ }
295
+ return true
296
+ }
297
+
298
+ // 获取表单数据
299
+ const getFormData = () => {
300
+ const isBaby = props.modalType === 'baby'
301
+ const commonData = {
302
+ id: formData.id || `${isBaby ? 'BY' : 'VS'}${Date.now()}`,
303
+ name: formData.name,
304
+ inDate: formData.inDate,
305
+ dept: formData.dept,
306
+ bed: formData.bed,
307
+ medicalNo: formData.medicalNo,
308
+ begin: formData.begin,
309
+ notes: formData.notes,
310
+ heart: formData.heart,
311
+ tempType: formData.tempType,
312
+ temperature: formData.temperature,
313
+ breath: formData.breath,
314
+ labels: formData.labels,
315
+ data1: formData.data1,
316
+ data2: formData.data2,
317
+ data3: formData.data3,
318
+ data4: formData.data4,
319
+ data5: formData.data5,
320
+ pain: formData.pain
321
+ }
322
+ if (isBaby) {
323
+ return {
324
+ ...commonData,
325
+ type: 'baby',
326
+ sex: formData.sex,
327
+ weight: formData.weight,
328
+ physicalcool: formData.physicalcool
329
+ }
330
+ }
331
+ return {
332
+ ...commonData,
333
+ diag: formData.diag,
334
+ operateDate: formData.operateDate,
335
+ sphygmus: formData.sphygmus,
336
+ data6: formData.data6,
337
+ data7: formData.data7,
338
+ data8: formData.data8,
339
+ data9: formData.data9
340
+ }
341
+ }
342
+
343
+ // 提交表单
344
+ const submitForm = async () => {
345
+ if (!props.editorReady) {
346
+ message.error('体温单编辑器未加载完成,请等待或刷新页面')
347
+ return
348
+ }
349
+ // 首先验证表单
350
+ if (!validateForm()) {
351
+ return
352
+ }
353
+ submitLoading.value = true
354
+ try {
355
+ const data = getFormData()
356
+ emit('submit', data)
357
+ // 关闭弹窗
358
+ closeModal()
359
+ } catch (err) {
360
+ console.error('提交体温单数据出错:', err)
361
+ message.error(`提交体温单数据失败: ${err.message || '未知错误'}`)
362
+ } finally {
363
+ submitLoading.value = false
364
+ }
365
+ }
366
+ </script>
367
+
368
+ <template>
369
+ <a-modal
370
+ :title="modalTitles[modalType]"
371
+ :visible="visible"
372
+ @cancel="closeModal"
373
+ :width="700"
374
+ :footer="null">
375
+ <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
376
+ <!-- 通用基础信息字段 -->
377
+ <a-form-item label="ID" :validateStatus="formErrors.id ? 'error' : ''" :help="formErrors.id">
378
+ <a-input v-model="formData.id" :placeholder="`请输入ID,如:${modalType === 'baby' ? 'BY' : 'AD'}20230001`" />
379
+ </a-form-item>
380
+ <a-form-item label="姓名" :validateStatus="formErrors.name ? 'error' : ''" :help="formErrors.name">
381
+ <a-input v-model="formData.name" placeholder="请输入姓名,如:张三" />
382
+ </a-form-item>
383
+ <a-form-item label="入院日期" :validateStatus="formErrors.inDate ? 'error' : ''" :help="formErrors.inDate">
384
+ <a-input v-model="formData.inDate" placeholder="请输入日期,如:2023-08-01" />
385
+ </a-form-item>
386
+ <!-- 新生儿特有字段 -->
387
+ <template v-if="modalType === 'baby'">
388
+ <a-form-item label="性别">
389
+ <a-radio-group v-model="formData.sex">
390
+ <a-radio value="男">男</a-radio>
391
+ <a-radio value="女">女</a-radio>
392
+ </a-radio-group>
393
+ </a-form-item>
394
+ </template>
395
+ <!-- 成人特有字段 -->
396
+ <template v-else>
397
+ <a-form-item label="诊断" :validateStatus="formErrors.diag ? 'error' : ''" :help="formErrors.diag">
398
+ <a-input v-model="formData.diag" placeholder="请输入诊断,如:新型冠状病毒肺炎" />
399
+ </a-form-item>
400
+ </template>
401
+ <!-- 通用字段 -->
402
+ <a-form-item label="科室" :validateStatus="formErrors.dept ? 'error' : ''" :help="formErrors.dept">
403
+ <a-input v-model="formData.dept" :placeholder="`请输入科室,如:${modalType === 'baby' ? '妇产科' : '呼吸内科'}`" />
404
+ </a-form-item>
405
+ <a-form-item label="床位" :validateStatus="formErrors.bed ? 'error' : ''" :help="formErrors.bed">
406
+ <a-input v-model="formData.bed" placeholder="请输入床位,如:801" />
407
+ </a-form-item>
408
+ <a-form-item label="病历号" :validateStatus="formErrors.medicalNo ? 'error' : ''" :help="formErrors.medicalNo">
409
+ <a-input v-model="formData.medicalNo" placeholder="请输入病历号,如:202300991" />
410
+ </a-form-item>
411
+ <a-form-item label="开始日期" :validateStatus="formErrors.begin ? 'error' : ''" :help="formErrors.begin">
412
+ <a-input v-model="formData.begin" placeholder="请输入日期,如:2023-08-01" />
413
+ </a-form-item>
414
+ <!-- 成人特有字段 -->
415
+ <template v-if="modalType !== 'baby'">
416
+ <a-form-item label="手术日期" :validateStatus="formErrors.operateDate ? 'error' : ''" :help="formErrors.operateDate">
417
+ <a-input v-model="formData.operateDate" placeholder="请输入日期,如:2023-08-03" />
418
+ </a-form-item>
419
+ </template>
420
+ <!-- 备注字段 -->
421
+ <a-form-item label="备注" :validateStatus="formErrors.notes ? 'error' : ''" :help="formErrors.notes">
422
+ <a-input v-model="formData.notes" :placeholder="`请输入备注,如:${modalType === 'baby' ? '出生-十时二十分' : '入院-十时二十分,,转入ICU,,,,,,,手术'}`" />
423
+ <div class="input-tip">格式:多个值用逗号分隔,对应不同日期</div>
424
+ </a-form-item>
425
+ <!-- 根据表单类型显示不同的数据字段 -->
426
+ <template v-if="modalType !== 'baby'">
427
+ <a-form-item label="脉搏" :validateStatus="formErrors.sphygmus ? 'error' : ''" :help="formErrors.sphygmus">
428
+ <a-input v-model="formData.sphygmus" placeholder="脉搏数据,如:112,110,109,103,108,85" />
429
+ <div class="input-tip">格式:多个值用逗号分隔</div>
430
+ </a-form-item>
431
+ </template>
432
+ <template v-else>
433
+ <a-form-item label="体重" :validateStatus="formErrors.weight ? 'error' : ''" :help="formErrors.weight">
434
+ <a-input v-model="formData.weight" placeholder="体重数据,多个值用逗号分隔,如:3200,,,,3300,,,,3400" />
435
+ <div class="input-tip">格式:多个值用逗号分隔,每组数据对应一天</div>
436
+ </a-form-item>
437
+ </template>
438
+ <!-- 生命体征数据字段 -->
439
+ <a-form-item label="心率" :validateStatus="formErrors.heart ? 'error' : ''" :help="formErrors.heart">
440
+ <a-input v-model="formData.heart" placeholder="心率数据,多个值用逗号分隔,如:112,120,118,111" />
441
+ <div class="input-tip">格式:多个值用逗号分隔</div>
442
+ </a-form-item>
443
+ <a-form-item label="体温类型" :validateStatus="formErrors.tempType ? 'error' : ''" :help="formErrors.tempType">
444
+ <a-input v-model="formData.tempType" placeholder="体温类型,如:0,1,2,3,0,1" />
445
+ <div class="input-tip">格式:多个值用逗号分隔,0-3表示不同类型</div>
446
+ </a-form-item>
447
+ <a-form-item label="体温" :validateStatus="formErrors.temperature ? 'error' : ''" :help="formErrors.temperature">
448
+ <a-input v-model="formData.temperature" :placeholder="`体温数据,如:${modalType === 'baby' ? '37.7,37.9,38.5,37.1' : '38.7,38.9,38.5,39.1,38.5,38.5|37.1'}`" />
449
+ <div class="input-tip">格式:多个值用逗号分隔<template v-if="modalType !== 'baby'">,|表示新一行数据</template></div>
450
+ </a-form-item>
451
+ <!-- 新生儿特有字段 -->
452
+ <template v-if="modalType === 'baby'">
453
+ <a-form-item label="物理降温" :validateStatus="formErrors.physicalcool ? 'error' : ''" :help="formErrors.physicalcool">
454
+ <a-input v-model="formData.physicalcool" placeholder="物理降温数据,如:,,,37.6,,,,,,,,37.5" />
455
+ <div class="input-tip">格式:多个值用逗号分隔,空值用逗号表示</div>
456
+ </a-form-item>
457
+ </template>
458
+ <!-- 通用数据字段 -->
459
+ <a-form-item label="呼吸" :validateStatus="formErrors.breath ? 'error' : ''" :help="formErrors.breath">
460
+ <a-input v-model="formData.breath" placeholder="呼吸数据,如:30,30,R,,35,35" />
461
+ <div class="input-tip">格式:多个值用逗号分隔,R表示异常</div>
462
+ </a-form-item>
463
+ <a-form-item label="标签" :validateStatus="formErrors.labels ? 'error' : ''" :help="formErrors.labels">
464
+ <a-input v-model="formData.labels" :placeholder="`标签数据,如:血压(mmHg)|入水量(ml)|出水量(ml)|大便(次)|小便(次)${modalType === 'baby' ? '' : '|身高(cm)|体重(kg)|过敏药'}`" />
465
+ <div class="input-tip">格式:多个标签用|分隔</div>
466
+ </a-form-item>
467
+ <!-- 通用数据字段 -->
468
+ <a-form-item label="血压" :validateStatus="formErrors.data1 ? 'error' : ''" :help="formErrors.data1">
469
+ <a-input v-model="formData.data1" placeholder="血压数据,如:120/85,121/84,,110/75" />
470
+ <div class="input-tip">格式:多个值用逗号分隔</div>
471
+ </a-form-item>
472
+ <a-form-item label="入水量" :validateStatus="formErrors.data2 ? 'error' : ''" :help="formErrors.data2">
473
+ <a-input v-model="formData.data2" placeholder="入水量数据,如:1180ml,,,500ml,,40ml" />
474
+ <div class="input-tip">格式:多个值用逗号分隔</div>
475
+ </a-form-item>
476
+ <a-form-item label="出水量" :validateStatus="formErrors.data3 ? 'error' : ''" :help="formErrors.data3">
477
+ <a-input v-model="formData.data3" placeholder="出水量数据,如:500ml,,,,500ml,,67ml" />
478
+ <div class="input-tip">格式:多个值用逗号分隔</div>
479
+ </a-form-item>
480
+ <a-form-item label="大便次数" :validateStatus="formErrors.data4 ? 'error' : ''" :help="formErrors.data4">
481
+ <a-input v-model="formData.data4" placeholder="大便次数数据,如:2,4,5,3,3,3,2,,2" />
482
+ <div class="input-tip">格式:多个值用逗号分隔</div>
483
+ </a-form-item>
484
+ <a-form-item label="小便次数" :validateStatus="formErrors.data5 ? 'error' : ''" :help="formErrors.data5">
485
+ <a-input v-model="formData.data5" placeholder="小便次数数据,如:2,4,5,3,3,3,2,,2" />
486
+ <div class="input-tip">格式:多个值用逗号分隔</div>
487
+ </a-form-item>
488
+ <!-- 成人特有字段 -->
489
+ <template v-if="modalType !== 'baby'">
490
+ <a-form-item label="身高" :validateStatus="formErrors.data6 ? 'error' : ''" :help="formErrors.data6">
491
+ <a-input v-model="formData.data6" placeholder="身高数据,如:167cm,,,,,,,,,164cm" />
492
+ <div class="input-tip">格式:多个值用逗号分隔</div>
493
+ </a-form-item>
494
+ <a-form-item label="体重" :validateStatus="formErrors.data7 ? 'error' : ''" :help="formErrors.data7">
495
+ <a-input v-model="formData.data7" placeholder="体重数据,如:95kg,,,,,90kg" />
496
+ <div class="input-tip">格式:多个值用逗号分隔</div>
497
+ </a-form-item>
498
+ <a-form-item label="过敏药" :validateStatus="formErrors.data8 ? 'error' : ''" :help="formErrors.data8">
499
+ <a-input v-model="formData.data8" placeholder="过敏药数据,如:青霉素," />
500
+ <div class="input-tip">格式:多个值用逗号分隔</div>
501
+ </a-form-item>
502
+ <a-form-item label="其他数据" :validateStatus="formErrors.data9 ? 'error' : ''" :help="formErrors.data9">
503
+ <a-input v-model="formData.data9" placeholder="其他数据,如:测试," />
504
+ <div class="input-tip">格式:多个值用逗号分隔</div>
505
+ </a-form-item>
506
+ </template>
507
+ <!-- 按钮 -->
508
+ <a-form-item :wrapper-col="{ span: 18, offset: 6 }">
509
+ <a-button type="primary" @click="submitForm" :loading="submitLoading" style="margin-right: 10px">确定</a-button>
510
+ <a-button @click="closeModal">取消</a-button>
511
+ </a-form-item>
512
+ </a-form>
513
+ </a-modal>
514
+ </template>
515
+
516
+ <style scoped>
517
+ .input-tip {
518
+ color: #999;
519
+ font-size: 12px;
520
+ margin-top: 4px;
521
+ }
522
+ </style>