vue2-client 1.10.15 → 1.10.17

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 (416) hide show
  1. package/.env +19 -19
  2. package/.env.gaslink +19 -19
  3. package/.env.his +19 -19
  4. package/.env.liuli +19 -19
  5. package/.env.revenue +19 -19
  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/babel.config.js +21 -21
  11. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  12. package/docs/LowCode/lowcode.md +155 -155
  13. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  14. package/docs/index.md +30 -30
  15. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +174 -174
  16. package/index.js +31 -31
  17. package/jest-transform-stub.js +8 -8
  18. package/jest.config.js +21 -21
  19. package/jest.setup.js +7 -7
  20. package/jsconfig.json +19 -19
  21. package/package.json +1 -1
  22. package/public/his/editor/editor.html +51 -51
  23. package/public/his/editor/mock/bind_data.html +779 -779
  24. package/public/his/editor/mock/data_table.html +40 -40
  25. package/public/his/editor/mock/sign.html +75 -75
  26. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  27. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  28. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  29. package/public/his/editor/vender/date97/calendar.js +4 -4
  30. package/public/his/editor/vender/date97/lang/en.js +13 -13
  31. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  32. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  33. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  34. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  35. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  36. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  37. package/public/his/editor/vender/diff.js +1627 -1627
  38. package/public/his/editor/vender/editor.js +1 -1
  39. package/public/his/editor/vender/fabric.js +31187 -31187
  40. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  41. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  42. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  43. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  44. package/public/his/editor/vender/mui/mui.min.css +4 -4
  45. package/public/his/editor/vender/mui/mui.min.js +5 -5
  46. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  47. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  48. package/public/his/editor/vender/qrcode.js +7 -7
  49. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  50. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  51. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  52. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  53. package/public/his/editor/vender/validator.js +5094 -5094
  54. package/public/his/editor/vender/weui/weui.css +5659 -5659
  55. package/public/his/editor/vender/weui/weui.min.css +4 -4
  56. package/public/his/editor/vender/weui/weui.min.js +11 -11
  57. package/src/App.vue +196 -196
  58. package/src/ReportView.js +19 -19
  59. package/src/assets/img/querySlotDemo.svg +15 -15
  60. package/src/assets/svg/badtwo.svg +1 -1
  61. package/src/assets/svg/goodtwo.svg +1 -1
  62. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  63. package/src/base-client/components/AI/demo.vue +31 -31
  64. package/src/base-client/components/common/AMisRender/index.js +3 -3
  65. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  66. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  67. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  68. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  69. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  70. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  71. package/src/base-client/components/common/CitySelect/CitySelect.vue +342 -342
  72. package/src/base-client/components/common/CitySelect/index.js +3 -3
  73. package/src/base-client/components/common/CitySelect/index.md +109 -109
  74. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  75. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  76. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  77. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  78. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  79. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  80. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  81. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  82. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  83. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  84. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  85. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  86. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  87. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  88. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  89. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  90. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  91. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  92. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  93. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  94. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  95. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  96. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  97. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  98. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  99. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  100. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  101. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  102. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  103. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  104. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  105. package/src/base-client/components/common/Recording/index.js +3 -3
  106. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  107. package/src/base-client/components/common/Tree/index.js +2 -2
  108. package/src/base-client/components/common/Upload/index.js +3 -3
  109. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  110. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +49 -21
  111. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  112. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  113. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  114. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  115. package/src/base-client/components/common/XAddReport/XAddReport.vue +207 -207
  116. package/src/base-client/components/common/XAddReport/index.js +3 -3
  117. package/src/base-client/components/common/XAddReport/index.md +56 -56
  118. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  119. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  120. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  121. package/src/base-client/components/common/XButtons/index.js +3 -3
  122. package/src/base-client/components/common/XButtons/index.md +61 -61
  123. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  124. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  125. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  126. package/src/base-client/components/common/XConversation/XConversation.vue +263 -263
  127. package/src/base-client/components/common/XConversation/XConversationDemo.vue +28 -28
  128. package/src/base-client/components/common/XDataCard/XDataCard.vue +411 -411
  129. package/src/base-client/components/common/XDataCard/index.js +3 -3
  130. package/src/base-client/components/common/XDataCard/index.md +1 -1
  131. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  132. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  133. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  134. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  135. package/src/base-client/components/common/XDatePicker/index.vue +259 -259
  136. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +169 -169
  137. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +304 -304
  138. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  139. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  140. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  141. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  142. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  143. package/src/base-client/components/common/XForm/XForm.vue +393 -393
  144. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  145. package/src/base-client/components/common/XForm/XTreeSelect.vue +250 -250
  146. package/src/base-client/components/common/XForm/index.md +178 -178
  147. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  148. package/src/base-client/components/common/XFormCol/XFormCol.vue +157 -157
  149. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +304 -304
  150. package/src/base-client/components/common/XFormGroup/demo.vue +46 -46
  151. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  152. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  153. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  154. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  155. package/src/base-client/components/common/XFormTable/demo.vue +60 -60
  156. package/src/base-client/components/common/XFormTable/index.md +92 -92
  157. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +167 -167
  158. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  159. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  160. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  161. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  162. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  163. package/src/base-client/components/common/XPrint/PrintBill.vue +302 -302
  164. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  165. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  166. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  167. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  168. package/src/base-client/components/common/XPrint/index.vue +97 -97
  169. package/src/base-client/components/common/XReport/XReport.vue +892 -892
  170. package/src/base-client/components/common/XReport/XReportDemo.vue +304 -304
  171. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  172. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  173. package/src/base-client/components/common/XReport/XReportTrGroup.vue +808 -808
  174. package/src/base-client/components/common/XReport/index.js +3 -3
  175. package/src/base-client/components/common/XReport/index.md +44 -44
  176. package/src/base-client/components/common/XReport/print.js +186 -186
  177. package/src/base-client/components/common/XReportDrawer/XReportDrawer.vue +201 -201
  178. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  179. package/src/base-client/components/common/XReportGrid/XReport.vue +1070 -1070
  180. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +47 -47
  181. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +628 -628
  182. package/src/base-client/components/common/XReportGrid/XReportJsonRender.vue +380 -380
  183. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +1104 -1104
  184. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  185. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  186. package/src/base-client/components/common/XReportGrid/print.js +184 -184
  187. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  188. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  189. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  190. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  191. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  192. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  193. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  194. package/src/base-client/components/common/XStepView/index.js +3 -3
  195. package/src/base-client/components/common/XStepView/index.md +31 -31
  196. package/src/base-client/components/common/XTab/XTab.vue +201 -201
  197. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  198. package/src/base-client/components/common/XTab/index.js +3 -3
  199. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  200. package/src/base-client/components/common/XTable/ExportExcel.vue +284 -284
  201. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  202. package/src/base-client/components/common/XTable/XTable.vue +1415 -1415
  203. package/src/base-client/components/common/XTable/index.md +255 -255
  204. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  205. package/src/base-client/components/common/XTree/XTree.vue +423 -423
  206. package/src/base-client/components/common/XTree/XTreePro.vue +451 -451
  207. package/src/base-client/components/common/XTree/index.js +3 -3
  208. package/src/base-client/components/common/XTree/index.md +36 -36
  209. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  210. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  211. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  212. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  213. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +359 -359
  214. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  215. package/src/base-client/components/index.js +51 -51
  216. package/src/base-client/components/layout/XPageView/RenderRow.vue +63 -63
  217. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  218. package/src/base-client/components/layout/XPageView/XPageView.vue +155 -155
  219. package/src/base-client/components/layout/XPageView/index.js +3 -3
  220. package/src/base-client/components/layout/XPageView/index.md +38 -38
  221. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  222. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  223. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  224. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  225. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  226. package/src/base-client/plugins/AppData.js +121 -121
  227. package/src/base-client/plugins/Config.js +19 -19
  228. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  229. package/src/base-client/plugins/Recording.js +258 -258
  230. package/src/base-client/plugins/index.js +23 -23
  231. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  232. package/src/bootstrap.js +42 -42
  233. package/src/components/Charts/Bar.vue +62 -62
  234. package/src/components/Charts/ChartCard.vue +134 -134
  235. package/src/components/Charts/Liquid.vue +67 -67
  236. package/src/components/Charts/MiniArea.vue +39 -39
  237. package/src/components/Charts/MiniBar.vue +39 -39
  238. package/src/components/Charts/MiniProgress.vue +75 -75
  239. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  240. package/src/components/Charts/Radar.vue +68 -68
  241. package/src/components/Charts/RankList.vue +77 -77
  242. package/src/components/Charts/TagCloud.vue +113 -113
  243. package/src/components/Charts/TransferBar.vue +64 -64
  244. package/src/components/Charts/Trend.vue +82 -82
  245. package/src/components/Charts/chart.less +12 -12
  246. package/src/components/Charts/smooth.area.less +13 -13
  247. package/src/components/CodeMirror/inedx.vue +118 -118
  248. package/src/components/CodeMirror/setting.js +40 -40
  249. package/src/components/FilePreview/FilePreview.vue +166 -166
  250. package/src/components/HeightScanner/index.vue +572 -560
  251. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  252. package/src/components/NumberInfo/index.js +3 -3
  253. package/src/components/NumberInfo/index.less +54 -54
  254. package/src/components/NumberInfo/index.md +43 -43
  255. package/src/components/STable/index.js +390 -390
  256. package/src/components/card/ChartCard.vue +79 -79
  257. package/src/components/chart/Bar.vue +60 -60
  258. package/src/components/chart/MiniArea.vue +67 -67
  259. package/src/components/chart/MiniBar.vue +59 -59
  260. package/src/components/chart/MiniProgress.vue +57 -57
  261. package/src/components/chart/Radar.vue +80 -80
  262. package/src/components/chart/RankingList.vue +60 -60
  263. package/src/components/chart/Trend.vue +79 -79
  264. package/src/components/chart/index.less +9 -9
  265. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  266. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  267. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  268. package/src/components/checkbox/index.js +9 -9
  269. package/src/components/exception/ExceptionPage.vue +70 -70
  270. package/src/components/g2Charts/constants.js +202 -202
  271. package/src/components/g2Charts/demo.vue +808 -808
  272. package/src/components/g2Charts/designer.vue +228 -228
  273. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  274. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  275. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  276. package/src/components/g2Charts/index.vue +397 -397
  277. package/src/components/index.js +36 -36
  278. package/src/components/input/IInput.vue +66 -66
  279. package/src/components/menu/SideMenu.vue +75 -75
  280. package/src/components/menu/menu.js +273 -273
  281. package/src/components/setting/Setting.vue +234 -234
  282. package/src/components/tool/AStepItem.vue +60 -60
  283. package/src/config/CreateQueryConfig.js +325 -325
  284. package/src/config/default/antd.config.js +89 -89
  285. package/src/config/default/setting.config.js +55 -55
  286. package/src/font-style/font.css +4 -4
  287. package/src/layouts/CommonLayout.vue +56 -56
  288. package/src/layouts/GridView.vue +45 -45
  289. package/src/layouts/PageLayout.vue +151 -151
  290. package/src/layouts/SinglePageView.vue +136 -136
  291. package/src/layouts/header/AdminHeader.vue +132 -132
  292. package/src/layouts/header/HeaderNotice.vue +177 -177
  293. package/src/layouts/header/InstitutionDetail.vue +181 -181
  294. package/src/layouts/tabs/TabsHead.vue +189 -189
  295. package/src/layouts/tabs/TabsView.vue +389 -389
  296. package/src/lib.js +1 -1
  297. package/src/mock/extend/index.js +84 -84
  298. package/src/mock/goods/index.js +108 -108
  299. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  300. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  301. package/src/pages/DefaultExample/index.vue +77 -77
  302. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  303. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  304. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  305. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  306. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  307. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  308. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  309. package/src/pages/DynamicStatistics/index.vue +282 -282
  310. package/src/pages/Example/childIndex.vue +15 -15
  311. package/src/pages/Example/index.vue +30 -30
  312. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  313. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  314. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  315. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  316. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  317. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  318. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  319. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  320. package/src/pages/Recording/index.vue +77 -77
  321. package/src/pages/ReportGrid/index.vue +76 -76
  322. package/src/pages/ServiceReview/index.vue +284 -284
  323. package/src/pages/SubExample/index.vue +26 -26
  324. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +32 -32
  325. package/src/pages/WorkflowDetail/WorkflowDetail.vue +230 -230
  326. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +131 -131
  327. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  328. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  329. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  330. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +864 -864
  331. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +997 -997
  332. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  333. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  334. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  335. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  336. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  337. package/src/pages/XPageViewExample/index.vue +38 -38
  338. package/src/pages/XReportView/index.vue +64 -64
  339. package/src/pages/XTreeOneProExample/index.vue +67 -67
  340. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  341. package/src/pages/login/Login.vue +378 -378
  342. package/src/pages/login/LoginV3.vue +389 -389
  343. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  344. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  345. package/src/pages/report/ReportTable.js +124 -124
  346. package/src/pages/resourceManage/orgListManage.vue +98 -98
  347. package/src/pages/system/dictionary/index.vue +44 -44
  348. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  349. package/src/pages/system/monitor/operLog/index.vue +37 -37
  350. package/src/pages/system/settings/modifyPassword.vue +117 -117
  351. package/src/pages/system/ticket/index.vue +480 -480
  352. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  353. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  354. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +76 -76
  355. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +74 -74
  356. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  357. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  358. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +74 -74
  359. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  360. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +74 -74
  361. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  362. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +92 -92
  363. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +86 -86
  364. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +73 -73
  365. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  366. package/src/pages/userInfoDetailManage/index.vue +82 -82
  367. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +132 -132
  368. package/src/plugins/EventLogPlugin.js +33 -33
  369. package/src/plugins/FindParentsData.js +17 -17
  370. package/src/plugins/HiPrintPlugin.js +124 -124
  371. package/src/router/async/config.async.js +35 -35
  372. package/src/router/guards.js +263 -263
  373. package/src/router/index.js +27 -27
  374. package/src/router.js +19 -19
  375. package/src/services/DataModel.js +30 -30
  376. package/src/services/LodopFuncs.js +137 -137
  377. package/src/services/api/TicketDetailsViewApi.js +46 -46
  378. package/src/services/api/cas.js +79 -79
  379. package/src/services/api/common.js +346 -346
  380. package/src/services/api/entity.js +18 -18
  381. package/src/services/api/index.js +17 -17
  382. package/src/services/api/restTools.js +145 -145
  383. package/src/services/apiService.js +15 -15
  384. package/src/services/user.js +90 -90
  385. package/src/services/v3Api.js +116 -116
  386. package/src/store/modules/account.js +115 -115
  387. package/src/store/modules/index.js +5 -5
  388. package/src/store/modules/lowCode.js +33 -33
  389. package/src/store/modules/setting.js +119 -119
  390. package/src/theme/default/style.less +58 -58
  391. package/src/theme/global.less +159 -159
  392. package/src/utils/authority-utils.js +85 -85
  393. package/src/utils/errorCode.js +6 -6
  394. package/src/utils/formatter.js +74 -74
  395. package/src/utils/htmlToPDF.js +108 -108
  396. package/src/utils/htmlToPDFApi.js +5 -5
  397. package/src/utils/indexedDB.js +263 -263
  398. package/src/utils/login.js +188 -188
  399. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  400. package/src/utils/lowcode/lowcodeLog.js +29 -29
  401. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  402. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  403. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  404. package/src/utils/map-utils.js +47 -47
  405. package/src/utils/microAppUtils.js +40 -40
  406. package/src/utils/reg.js +95 -95
  407. package/src/utils/request.js +362 -362
  408. package/src/utils/routerUtil.js +450 -450
  409. package/src/utils/runEvalFunction.js +14 -14
  410. package/src/utils/waterMark.js +31 -31
  411. package/test/Amis.spec.js +163 -163
  412. package/test/Tree.spec.js +167 -167
  413. package/test/myDialog.spec.js +46 -46
  414. package/test/util.test.js +52 -52
  415. package/test/v3Api.test.js +1983 -1983
  416. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,560 +1,572 @@
1
- <template>
2
- <a-modal
3
- :visible="show"
4
- :dialogStyle="{ top: '1vh' }"
5
- width="50vw"
6
- :footer="null"
7
- :zIndex="1050"
8
- :maskClosable="false"
9
- >
10
- <div class="scanner-container">
11
- <a-row>
12
- <a-space>
13
- <a-button type="primary" @click="capturePhoto">拍照</a-button>
14
- <a-button type="primary" @click="switchCamera('0')">文档</a-button>
15
- <a-button type="primary" @click="switchCamera('1')">人像</a-button>
16
- <a-button type="primary" @click="getVideoStatus">设备状态</a-button>
17
- <a-button type="primary" @click="closeVideo">关闭设备</a-button>
18
- <a-button type="primary" @click="openApp">开启程序</a-button>
19
- <a-button v-if="showid" type="primary" @click="startReadCard">读身份证</a-button>
20
- <a-button v-if="showid" @click="stopReadCard">停止读卡</a-button>
21
- </a-space>
22
- </a-row>
23
- <a-row>
24
- <a-col :span="12">
25
- <div
26
- style="display: flex; justify-content: center; align-items: center; height: 300px;">
27
- <img
28
- v-if="previewImage"
29
- id="Base64IMG"
30
- :src="previewImage"
31
- height="300"
32
- alt=""
33
- style="display: block;margin: auto;"
34
- />
35
- <a-empty v-else/>
36
- </div>
37
- </a-col>
38
- <a-col :span="12">
39
- <a-textarea
40
- id="Console"
41
- style=" height: 300px; width: 100%; resize: none;border-radius: 0"
42
- :disabled="true"></a-textarea>
43
- </a-col>
44
- <a-col :span="24">
45
- <img
46
- id="cam"
47
- :src="cameraurl"
48
- width="100%"
49
- height="540"
50
- alt=""/>
51
- </a-col>
52
- <a-col :span="24" v-if="showid">
53
- <a-form layout="horizontal">
54
- <a-form-item label="姓名">
55
- <a-input v-model="idCardForm.name" disabled/>
56
- </a-form-item>
57
- <a-form-item label="性别">
58
- <a-input v-model="idCardForm.sex" disabled/>
59
- </a-form-item>
60
- <a-form-item label="民族">
61
- <a-input v-model="idCardForm.nation" disabled/>
62
- </a-form-item>
63
- <a-form-item label="出生日期">
64
- <a-input v-model="idCardForm.birthday" disabled/>
65
- </a-form-item>
66
- <a-form-item label="地址">
67
- <a-textarea v-model="idCardForm.address" :rows="2" disabled/>
68
- </a-form-item>
69
- <a-form-item label="身份证号">
70
- <a-input v-model="idCardForm.cardID" disabled/>
71
- </a-form-item>
72
- <a-form-item label="签发机关">
73
- <a-input v-model="idCardForm.issueOrgan" disabled/>
74
- </a-form-item>
75
- <a-form-item label="有效期">
76
- <a-input v-model="idCardForm.validStart" disabled/>
77
- <a-input v-model="idCardForm.validEnd" disabled/>
78
- </a-form-item>
79
-
80
- <div class="id-photo-section">
81
- <div class="photo-preview">
82
- <img
83
- id="PhotoDisplay"
84
- :src="idCardForm.photoUrl"
85
- class="id-photo"
86
- alt=""/>
87
- </div>
88
- <a-button type="primary" @click="confirmIdCard">确认信息</a-button>
89
- </div>
90
- </a-form>
91
- </a-col>
92
- </a-row>
93
- </div>
94
- <template #title>
95
- <a-row>
96
- <a-col :span="24">
97
- <a-space>
98
- 高拍仪
99
- <a-button @click="handleOk">上传截图</a-button>
100
- <a-button @click="handleCancel">取消</a-button>
101
- </a-space>
102
- </a-col>
103
- </a-row>
104
- </template>
105
- </a-modal>
106
- </template>
107
-
108
- <script>
109
- import { post } from '@vue2-client/services/api'
110
-
111
- let ws
112
- const SERVER_ADDR = 'ws://127.0.0.1:38088'
113
-
114
- export default {
115
- name: 'HeightScanner',
116
-
117
- props: {
118
- show: Boolean,
119
- showid: Boolean
120
- },
121
-
122
- data () {
123
- return {
124
- SERVER_ADDR,
125
- cameraurl: 'http://127.0.0.1:38088/video=stream&camidx=0',
126
- connected: false,
127
- clicked: false,
128
- iswaiting: false,
129
- previewImage: '',
130
- consoleText: '',
131
- idCardForm: {
132
- name: '',
133
- sex: '',
134
- nation: '',
135
- birthday: '',
136
- address: '',
137
- cardID: '',
138
- issueOrgan: '',
139
- validStart: '',
140
- validEnd: '',
141
- photoBuffer: '',
142
- photoUrl: ''
143
- },
144
- callback: {},
145
- context: 0,
146
- base_offset: 0,
147
- orgdrawwidth: 0,
148
- orgdrawheight: 0,
149
-
150
- CLT_MSG: {
151
- // 打开相机 cap:相机ID
152
- BEGIN_CAP: 1,
153
- // 关闭相机 cap:相机ID
154
- STOP_CAP: 2,
155
- // 获取PID
156
- GET_PID: 3,
157
- // 获取分辨率
158
- GET_FBL: 4,
159
- // 设置分辨率
160
- SET_FBL: 5,
161
- // 设置MJPG格式
162
- SET_MJPG: 6,
163
- // 设置视频旋转
164
- SET_TURN: 7,
165
- // 设置视频截图保存的jpg质量
166
- SET_QUALITY: 8,
167
- // 设置自动裁边
168
- SET_AUTOCROP: 9,
169
- // 设置预设框选
170
- SET_PREST: 10,
171
- // 获取当前预设框选
172
- GET_PREST_INFO: 11,
173
- // 视频格式弹窗
174
- FORMAT_DLG: 12,
175
- // 视频属性弹窗
176
- PROPERTY_DLG: 13,
177
- // 设置截图颜色模式 彩色 黑白 灰度
178
- SET_COLOR_MODEL: 14,
179
- // 截图
180
- GET_PICTURE: 15,
181
- // 设置去底色参数
182
- SET_CLEAN_PARAM: 16,
183
- // 内存截图
184
- GET_PICTURE_MEM: 17,
185
- // base64测试
186
- TEST_BASE64: 18,
187
- // 制作PDF的临时目录
188
- SET_TEMPDIR: 19,
189
- // 开始制作PDF
190
- BEGIN_PDF: 20,
191
- // PDF截图 保存到PDF临时目录
192
- GET_PDF_PICTURES: 21,
193
- // 结束制作PDF
194
- END_PDF_PICTURES: 22,
195
- // PDF文件转为文件里的BASE64码
196
- PDF_TO_BASE64: 23,
197
- // 文件里的BASE64码转为PDF文件
198
- BASE64_TO_PDF: 24,
199
- // PDF文件转为BASE64字符串
200
- PDF_TO_BASE64_STR: 25,
201
- // 删除制作PDF的图片文件
202
- DEL_PICTURE_PDF: 26,
203
- // 打印图片
204
- PRINT_IMAGE: 27,
205
- // 设置显示错误弹窗
206
- SHOW_ERROR_BOX: 28,
207
- // 获取视频连接事件
208
- GET_EVENT: 29,
209
- // 预设框选鼠标消息
210
- PRESET_MOUSEDOWN: 30,
211
- PRESET_MOUSEMOVE: 31,
212
- PRESET_MOUSEUP: 32,
213
- // 人证对比
214
- IDCARD_COMPARE: 40,
215
- // 读卡
216
- READ_IDCARD: 51,
217
- // 开始循环读卡
218
- BEGIN_READ_IDCARD: 52,
219
- // 停止循环读卡
220
- STOP_READ_IDCARD: 53,
221
- // 水平
222
- HCOPY_IDCARD: 54,
223
- // 垂直
224
- VCOPY_IDCARD: 55,
225
-
226
- PCOPY_IDCARD: 56,
227
- // 反面
228
- NCOPY_IDCARD: 57
229
- },
230
- SVR_BIN_MSG: {
231
- CAP_FRAME: 1, // 后台帧消息
232
- }
233
- }
234
- },
235
-
236
- methods: {
237
- // handleImgError (e) {
238
- // e.target.style.display = 'none'
239
- // },
240
- // 页面load消息
241
- onLoad () {
242
- return new Promise((resolve, reject) => {
243
- // 添加重试计数器
244
- let retryCount = 0
245
- const maxRetries = 5
246
-
247
- const tryConnect = () => {
248
- if (ws) {
249
- resolve()
250
- return
251
- }
252
-
253
- ws = new WebSocket(this.SERVER_ADDR)
254
-
255
- ws.onopen = (evt) => {
256
- if (this.connected) {
257
- resolve()
258
- }
259
- this.connected = true
260
- this.output('已经连接到服务器')
261
- this.switchCamera(0)
262
- }
263
-
264
- ws.onclose = (evt) => {
265
- if (!this.connected) {
266
- // 检查重试次数
267
- if (retryCount < maxRetries) {
268
- retryCount++
269
- this.output(`连接失败,正在进行第${retryCount}次重试...`)
270
- window.location.href = 'FLShell://'
271
- setTimeout(tryConnect, 3 * 1000)
272
- } else {
273
- this.output('连接失败,已达到最大重试次数')
274
- reject(new Error('连接失败,已达到最大重试次数'))
275
- }
276
- } else {
277
- this.output('已断开服务器连接')
278
- this.connected = false
279
- }
280
- ws = null
281
- }
282
-
283
- ws.onerror = (evt) => {
284
- this.output('高拍仪连接错误')
285
- reject(new Error('连接错误'))
286
- }
287
- ws.onmessage = (evt) => {
288
- if (evt.data.length === 0) {
289
- return
290
- }
291
- if (typeof evt.data === 'string') {
292
- const msg = JSON.parse(evt.data)
293
- console.log('msg1:', msg)
294
- if (msg.err && msg.err !== 0) {
295
- this.output('错误 - ' + msg.err + ', ' + msg.msg)
296
- reject(new Error('错误 - ' + msg.err + ', ' + msg.msg))
297
- } else if (msg.msg) {
298
- console.log('msg2:', msg)
299
- this.output(msg.msg)
300
- }
301
- if (msg.user_data) {
302
- this.callback[msg.user_data](msg)
303
- if (typeof msg.user_data === 'number') {
304
- this.callback[msg.user_data] = undefined
305
- }
306
- }
307
- } else {
308
- const file = new FileReader()
309
- file.onload = (evt) => {
310
- if (evt.target.readyState == FileReader.DONE) {
311
- const data = new Uint8Array(evt.target.result)
312
- if (data[0] == this.SVR_BIN_MSG.CAP_FRAME) {
313
- return this.drawImage(data)
314
- }
315
- }
316
- }
317
- file.readAsArrayBuffer(evt.data)
318
- }
319
- }
320
- const canvas = document.getElementById('cam')
321
- canvas.onmousedown = (e) => {
322
- canvas.style.cursor = 'crosshair'
323
- this.clicked = true
324
- this.sendMsg(this.CLT_MSG.PRESET_MOUSEDOWN, { origX: e.layerX, origY: e.layerY }, (msg) => {
325
- if (msg.err !== 0) {
326
- console.warn('鼠标按下事件出错:', msg.err)
327
- }
328
- })
329
- }
330
- canvas.onmousemove = (e) => {
331
- if (!this.clicked) {
332
- canvas.style.cursor = 'default'
333
- return
334
- }
335
- canvas.style.cursor = 'crosshair'
336
- this.sendMsg(this.CLT_MSG.PRESET_MOUSEMOVE, { offx: e.layerX, offy: e.layerY }, (msg) => {
337
- if (msg.err !== 0) {
338
- console.warn('鼠标移动事件出错:', msg.err)
339
- }
340
- })
341
- }
342
- onmouseout = canvas.onmouseup = (e) => {
343
- canvas.style.cursor = 'default'
344
- if (!this.clicked) {
345
- return
346
- }
347
- this.sendMsg(this.CLT_MSG.PRESET_MOUSEUP, { offx: e.layerX, offy: e.layerY }, (msg) => {
348
- if (msg.err !== 0) {
349
- console.warn('鼠标抬起事件出错:', msg.err)
350
- }
351
- })
352
- this.clicked = false
353
- }
354
- }
355
-
356
- tryConnect() // 开始首次连接
357
- })
358
- },
359
- // 打开视频
360
- switchCamera (data) {
361
- this.cameraurl = 'http://127.0.0.1:38088/video=stream&camidx=' + data + '&tid=' + Date.parse(new Date())
362
- },
363
- // 关闭视频
364
- closeVideo () {
365
- const params = ''
366
- const url = this.cameraurl.replace('stream', 'close')
367
- this.cameraurl = ''
368
- post(url, params).then((msg) => { // 截图
369
- if (msg.data.code != '0') {
370
- document.getElementById('result').innerHTML = msg.data.message
371
- }
372
- })
373
- },
374
- // 获取设备状态
375
- getVideoStatus () {
376
- document.getElementById('result').innerHTML = ''
377
- const params = ''
378
- const url = 'http://127.0.0.1:38088/video=status'
379
- this.cameraurl = ''
380
- post(url, params).then((msg) => { // 截图
381
- if (msg.data.code != '0') {
382
- document.getElementById('result').innerHTML = '获取设备状态失败,返回代码 = ' + msg.data.code + ',返回信息 = ' + msg.data.message
383
- } else {
384
- document.getElementById('result').innerHTML = '文档摄像头:' + msg.data.video0 +
385
- ', 人像1:' + msg.data.video1
386
- }
387
- })
388
- },
389
- openApp () {
390
- window.location.href = 'cameraServicetis:0' // 启动 CameraService 服务程序
391
- },
392
- capturePhoto () {
393
- // if (!this.name) {
394
- // return this.$showMessage('请输入照片名称')
395
- // }
396
- // if (!this.useType) {
397
- // return this.$showMessage('请选择文件使用类型')
398
- // }
399
- let camidx = 0
400
- if (this.cameraurl.indexOf('http://127.0.0.1:38088/video=stream&camidx=0') != -1) {
401
- camidx = 0
402
- } else if (this.cameraurl.indexOf('http://127.0.0.1:38088/video=stream&camidx=1') != -1) {
403
- camidx = 1
404
- } else {
405
- this.$message.info('请先打开视频')
406
- return
407
- }
408
- const param = {
409
- camidx: camidx
410
- }
411
- post('http://127.0.0.1:38088/video=grabimage', param).then((msg) => { // 截图
412
- if (msg.data.code != '0') {
413
- this.$message.info(msg.data.message)
414
- return
415
- }
416
- this.previewImage = 'data:image/jpg;base64,' + msg.data.photoBase64
417
- this.output('base64 长度 : ' + this.previewImage)
418
- this.$emit('photo-finish', { img: this.previewImage })
419
- this.name = ''
420
- })
421
- },
422
- // 读身份证
423
- startReadCard () {
424
- post('http://127.0.0.1:38088/card=idcard', {}).then((msg) => {
425
- if (msg.data.code != '0') {
426
- this.$message.info(msg.data.message, 2000)
427
- return
428
- } else {
429
- this.updateIdCardInfo(msg.data.IDCardInfo)
430
- }
431
-
432
- this.output('读取身份证')
433
- })
434
- this.output('开始读卡')
435
- },
436
- // 停止读身份证
437
- stopReadCard () {
438
- this.sendMsg(this.CLT_MSG.STOP_READ_IDCARD, (msg) => {
439
- if (msg.err !== 0) {
440
- return
441
- }
442
- this.output('停止读卡')
443
- })
444
- },
445
- // 视频帧绘制函数
446
- drawImage (data) {
447
- // 校验视频是否在一定时间内的
448
- if (!this.checkTimestamp(data[2] * 256 + data[1])) {
449
- return
450
- }
451
- // 视频帧头有时间戳 注意偏移 大小端处理
452
- const width = data[this.base_offset + 1] * 256 + data[this.base_offset]
453
- const height = data[this.base_offset + 3] * 256 + data[this.base_offset + 2]
454
-
455
- const cam = document.getElementById('cam')
456
- const context = cam.getContext('2d')
457
- if (this.orgdrawwidth != width || this.orgdrawheight != height) {
458
- this.orgdrawwidth = width
459
- this.orgdrawheight = height
460
- }
461
-
462
- const image = context.createImageData(width, height)
463
- for (let n = 0; n != height; ++n) {
464
- for (let m = 0; m != width; ++m) {
465
- const imageOffset = ((height - n - 1) * width + m) * 4
466
- const dataOffset = (n * width + m) * 3 + this.baseOffset + 4
467
- image.data[imageOffset] = data[dataOffset + 2]
468
- image.data[imageOffset + 1] = data[imageOffset + 1]
469
- image.data[imageOffset + 2] = data[imageOffset]
470
- image.data[imageOffset + 3] = 255
471
- }
472
- }
473
- context.putImageData(image, 0, 0)
474
- },
475
- checkTimestamp (svrTime) {
476
- const myDate = new Date()
477
- let cltTime = myDate.getSeconds() * 1000 + myDate.getMilliseconds()
478
- if (cltTime < svrTime) {
479
- cltTime += 60 * 1000
480
- }
481
- return cltTime - svrTime < 3000
482
- },
483
- sendMsg (proto, msg, cb) {
484
- if (!ws) {
485
- return
486
- }
487
-
488
- if (typeof msg !== 'object') {
489
- if (typeof msg === 'function') {
490
- cb = msg
491
- msg = {}
492
- } else {
493
- msg = {}
494
- }
495
- }
496
-
497
- msg.proto = proto
498
- if (typeof cb === 'function') {
499
- this.callback[++this.context] = cb
500
- msg.user_data = this.context
501
- }
502
-
503
- ws.send(JSON.stringify(msg))
504
- },
505
- output (content) {
506
- if (content.length == 0) {
507
- return
508
- }
509
- const console = document.getElementById('Console')
510
- console.value += content
511
- console.value += '\r'
512
- console.scrollTop = console.scrollHeight
513
- },
514
- // 显示读到的身份证信息
515
- updateIdCardInfo (msg) {
516
- document.getElementById('Name').value = msg.name
517
- document.getElementById('Sex').value = msg.sex
518
- document.getElementById('Nation').value = msg.nation
519
- document.getElementById('Born').value = msg.birthday
520
- document.getElementById('Address').value = msg.address
521
- document.getElementById('CardNo').value = msg.cardID
522
- document.getElementById('Police').value = msg.issueOrgan
523
- document.getElementById('ActivityLFrom').value = msg.validStart
524
- document.getElementById('ActivityLTo').value = msg.validEnd
525
- // document.getElementById('DeviceNo').value = msg.validEnd
526
- document.getElementById('PhotoBuffer').value = msg.fingerBase64
527
- document.getElementById('PhotoDisplay').src = 'data:image/jpg;base64,' + msg.photoBase64
528
- this.IdCardInfo = msg
529
- },
530
- confirmIdCard () {
531
- const param = this.IdCardInfo
532
- if (this.IdCardInfo) {
533
- this.$emit('confirm-info', param)
534
- this.IdCardInfo = {}
535
- }
536
- },
537
- handleOk () {
538
- this.$emit('confirmPhoto', this.previewImage)
539
- },
540
- handleCancel () {
541
- this.show = false
542
- }
543
- },
544
-
545
- mounted () {
546
- this.onLoad().then(() => {
547
- this.$emit('ready')
548
- }).catch(error => {
549
- this.$emit('error', error)
550
- })
551
- },
552
-
553
- beforeDestroy () {
554
- if (ws) {
555
- ws.close()
556
- ws = null
557
- }
558
- }
559
- }
560
- </script>
1
+ <template>
2
+ <a-modal
3
+ :visible="show"
4
+ :dialogStyle="{ top: '1vh' }"
5
+ width="50vw"
6
+ :footer="null"
7
+ :zIndex="1050"
8
+ @cancel="handleCancel"
9
+ :maskClosable="false"
10
+ >
11
+ <div class="scanner-container">
12
+ <a-row>
13
+ <a-space>
14
+ <a-button type="primary" @click="capturePhoto">拍照</a-button>
15
+ <a-button type="primary" @click="switchCamera('0')">文档</a-button>
16
+ <a-button type="primary" @click="switchCamera('1')">人像</a-button>
17
+ <a-button type="primary" @click="getVideoStatus">设备状态</a-button>
18
+ <a-button type="primary" @click="closeVideo">关闭设备</a-button>
19
+ <a-button type="primary" @click="openApp">开启程序</a-button>
20
+ <a-button v-if="showid" type="primary" @click="startReadCard">读身份证</a-button>
21
+ <a-button v-if="showid" @click="stopReadCard">停止读卡</a-button>
22
+ </a-space>
23
+ </a-row>
24
+ <a-row>
25
+ <a-col :span="12">
26
+ <div
27
+ style="display: flex; justify-content: center; align-items: center; height: 300px;">
28
+ <img
29
+ v-if="previewImage"
30
+ id="Base64IMG"
31
+ :src="previewImage"
32
+ height="300"
33
+ alt=""
34
+ style="display: block;margin: auto;"
35
+ />
36
+ <a-empty v-else/>
37
+ </div>
38
+ </a-col>
39
+ <a-col :span="12">
40
+ <a-textarea
41
+ id="Console"
42
+ style=" height: 300px; width: 100%; resize: none;border-radius: 0"
43
+ :disabled="true"></a-textarea>
44
+ </a-col>
45
+ <a-col :span="24">
46
+ <img
47
+ id="cam"
48
+ :src="cameraurl"
49
+ width="100%"
50
+ height="540"
51
+ alt=""/>
52
+ </a-col>
53
+ <a-col :span="24" v-if="showid">
54
+ <a-form layout="horizontal">
55
+ <a-form-item label="姓名">
56
+ <a-input v-model="idCardForm.name" disabled/>
57
+ </a-form-item>
58
+ <a-form-item label="性别">
59
+ <a-input v-model="idCardForm.sex" disabled/>
60
+ </a-form-item>
61
+ <a-form-item label="民族">
62
+ <a-input v-model="idCardForm.nation" disabled/>
63
+ </a-form-item>
64
+ <a-form-item label="出生日期">
65
+ <a-input v-model="idCardForm.birthday" disabled/>
66
+ </a-form-item>
67
+ <a-form-item label="地址">
68
+ <a-textarea v-model="idCardForm.address" :rows="2" disabled/>
69
+ </a-form-item>
70
+ <a-form-item label="身份证号">
71
+ <a-input v-model="idCardForm.cardID" disabled/>
72
+ </a-form-item>
73
+ <a-form-item label="签发机关">
74
+ <a-input v-model="idCardForm.issueOrgan" disabled/>
75
+ </a-form-item>
76
+ <a-form-item label="有效期">
77
+ <a-input v-model="idCardForm.validStart" disabled/>
78
+ <a-input v-model="idCardForm.validEnd" disabled/>
79
+ </a-form-item>
80
+
81
+ <div class="id-photo-section">
82
+ <div class="photo-preview">
83
+ <img
84
+ id="PhotoDisplay"
85
+ :src="idCardForm.photoUrl"
86
+ class="id-photo"
87
+ alt=""/>
88
+ </div>
89
+ <a-button type="primary" @click="confirmIdCard">确认信息</a-button>
90
+ </div>
91
+ </a-form>
92
+ </a-col>
93
+ </a-row>
94
+ </div>
95
+ <template #title>
96
+ <a-row>
97
+ <a-col :span="24">
98
+ <a-space>
99
+ 高拍仪
100
+ <a-button @click="handleOk">上传截图</a-button>
101
+ <a-button @click="handleCancel">取消</a-button>
102
+ </a-space>
103
+ </a-col>
104
+ </a-row>
105
+ </template>
106
+ <div id="result"></div>
107
+ </a-modal>
108
+ </template>
109
+
110
+ <script>
111
+ import axios from 'axios'
112
+
113
+ let ws
114
+ const SERVER_ADDR = 'ws://127.0.0.1:38088'
115
+
116
+ export default {
117
+ name: 'HeightScanner',
118
+
119
+ props: {
120
+ show: Boolean,
121
+ showid: Boolean
122
+ },
123
+
124
+ data () {
125
+ return {
126
+ SERVER_ADDR,
127
+ cameraurl: 'http://127.0.0.1:38088/video=stream&camidx=0',
128
+ connected: false,
129
+ clicked: false,
130
+ iswaiting: false,
131
+ previewImage: '',
132
+ consoleText: '',
133
+ idCardForm: {
134
+ name: '',
135
+ sex: '',
136
+ nation: '',
137
+ birthday: '',
138
+ address: '',
139
+ cardID: '',
140
+ issueOrgan: '',
141
+ validStart: '',
142
+ validEnd: '',
143
+ photoBuffer: '',
144
+ photoUrl: ''
145
+ },
146
+ callback: {},
147
+ context: 0,
148
+ base_offset: 0,
149
+ orgdrawwidth: 0,
150
+ orgdrawheight: 0,
151
+
152
+ CLT_MSG: {
153
+ // 打开相机 cap:相机ID
154
+ BEGIN_CAP: 1,
155
+ // 关闭相机 cap:相机ID
156
+ STOP_CAP: 2,
157
+ // 获取PID
158
+ GET_PID: 3,
159
+ // 获取分辨率
160
+ GET_FBL: 4,
161
+ // 设置分辨率
162
+ SET_FBL: 5,
163
+ // 设置MJPG格式
164
+ SET_MJPG: 6,
165
+ // 设置视频旋转
166
+ SET_TURN: 7,
167
+ // 设置视频截图保存的jpg质量
168
+ SET_QUALITY: 8,
169
+ // 设置自动裁边
170
+ SET_AUTOCROP: 9,
171
+ // 设置预设框选
172
+ SET_PREST: 10,
173
+ // 获取当前预设框选
174
+ GET_PREST_INFO: 11,
175
+ // 视频格式弹窗
176
+ FORMAT_DLG: 12,
177
+ // 视频属性弹窗
178
+ PROPERTY_DLG: 13,
179
+ // 设置截图颜色模式 彩色 黑白 灰度
180
+ SET_COLOR_MODEL: 14,
181
+ // 截图
182
+ GET_PICTURE: 15,
183
+ // 设置去底色参数
184
+ SET_CLEAN_PARAM: 16,
185
+ // 内存截图
186
+ GET_PICTURE_MEM: 17,
187
+ // base64测试
188
+ TEST_BASE64: 18,
189
+ // 制作PDF的临时目录
190
+ SET_TEMPDIR: 19,
191
+ // 开始制作PDF
192
+ BEGIN_PDF: 20,
193
+ // PDF截图 保存到PDF临时目录
194
+ GET_PDF_PICTURES: 21,
195
+ // 结束制作PDF
196
+ END_PDF_PICTURES: 22,
197
+ // PDF文件转为文件里的BASE64
198
+ PDF_TO_BASE64: 23,
199
+ // 文件里的BASE64码转为PDF文件
200
+ BASE64_TO_PDF: 24,
201
+ // PDF文件转为BASE64字符串
202
+ PDF_TO_BASE64_STR: 25,
203
+ // 删除制作PDF的图片文件
204
+ DEL_PICTURE_PDF: 26,
205
+ // 打印图片
206
+ PRINT_IMAGE: 27,
207
+ // 设置显示错误弹窗
208
+ SHOW_ERROR_BOX: 28,
209
+ // 获取视频连接事件
210
+ GET_EVENT: 29,
211
+ // 预设框选鼠标消息
212
+ PRESET_MOUSEDOWN: 30,
213
+ PRESET_MOUSEMOVE: 31,
214
+ PRESET_MOUSEUP: 32,
215
+ // 人证对比
216
+ IDCARD_COMPARE: 40,
217
+ // 读卡
218
+ READ_IDCARD: 51,
219
+ // 开始循环读卡
220
+ BEGIN_READ_IDCARD: 52,
221
+ // 停止循环读卡
222
+ STOP_READ_IDCARD: 53,
223
+ // 水平
224
+ HCOPY_IDCARD: 54,
225
+ // 垂直
226
+ VCOPY_IDCARD: 55,
227
+
228
+ PCOPY_IDCARD: 56,
229
+ // 反面
230
+ NCOPY_IDCARD: 57
231
+ },
232
+ SVR_BIN_MSG: {
233
+ CAP_FRAME: 1, // 后台帧消息
234
+ }
235
+ }
236
+ },
237
+
238
+ methods: {
239
+ // handleImgError (e) {
240
+ // e.target.style.display = 'none'
241
+ // },
242
+ // 页面load消息
243
+ onLoad () {
244
+ return new Promise((resolve, reject) => {
245
+ // 添加重试计数器
246
+ let retryCount = 0
247
+ const maxRetries = 5
248
+
249
+ const tryConnect = () => {
250
+ if (ws) {
251
+ resolve()
252
+ return
253
+ }
254
+
255
+ ws = new WebSocket(this.SERVER_ADDR)
256
+
257
+ ws.onopen = (evt) => {
258
+ if (this.connected) {
259
+ resolve()
260
+ }
261
+ this.connected = true
262
+ this.output('已经连接到服务器')
263
+ this.switchCamera(0)
264
+ }
265
+
266
+ ws.onclose = (evt) => {
267
+ if (!this.connected) {
268
+ // 检查重试次数
269
+ if (retryCount < maxRetries) {
270
+ retryCount++
271
+ this.output(`连接失败,正在进行第${retryCount}次重试...`)
272
+ window.location.href = 'FLShell://'
273
+ setTimeout(tryConnect, 3 * 1000)
274
+ } else {
275
+ this.output('连接失败,已达到最大重试次数')
276
+ reject(new Error('连接失败,已达到最大重试次数'))
277
+ }
278
+ } else {
279
+ this.output('已断开服务器连接')
280
+ this.connected = false
281
+ }
282
+ ws = null
283
+ }
284
+
285
+ ws.onerror = (evt) => {
286
+ this.output('高拍仪连接错误')
287
+ reject(new Error('连接错误'))
288
+ }
289
+ ws.onmessage = (evt) => {
290
+ if (evt.data.length === 0) {
291
+ return
292
+ }
293
+ if (typeof evt.data === 'string') {
294
+ const msg = JSON.parse(evt.data)
295
+ console.log('msg1:', msg)
296
+ if (msg.err && msg.err !== 0) {
297
+ this.output('错误 - ' + msg.err + ', ' + msg.msg)
298
+ reject(new Error('错误 - ' + msg.err + ', ' + msg.msg))
299
+ } else if (msg.msg) {
300
+ console.log('msg2:', msg)
301
+ this.output(msg.msg)
302
+ }
303
+ if (msg.user_data) {
304
+ this.callback[msg.user_data](msg)
305
+ if (typeof msg.user_data === 'number') {
306
+ this.callback[msg.user_data] = undefined
307
+ }
308
+ }
309
+ } else {
310
+ const file = new FileReader()
311
+ file.onload = (evt) => {
312
+ if (evt.target.readyState == FileReader.DONE) {
313
+ const data = new Uint8Array(evt.target.result)
314
+ if (data[0] == this.SVR_BIN_MSG.CAP_FRAME) {
315
+ return this.drawImage(data)
316
+ }
317
+ }
318
+ }
319
+ file.readAsArrayBuffer(evt.data)
320
+ }
321
+ }
322
+ const canvas = document.getElementById('cam')
323
+ canvas.onmousedown = (e) => {
324
+ canvas.style.cursor = 'crosshair'
325
+ this.clicked = true
326
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEDOWN, { origX: e.layerX, origY: e.layerY }, (msg) => {
327
+ if (msg.err !== 0) {
328
+ console.warn('鼠标按下事件出错:', msg.err)
329
+ }
330
+ })
331
+ }
332
+ canvas.onmousemove = (e) => {
333
+ if (!this.clicked) {
334
+ canvas.style.cursor = 'default'
335
+ return
336
+ }
337
+ canvas.style.cursor = 'crosshair'
338
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEMOVE, { offx: e.layerX, offy: e.layerY }, (msg) => {
339
+ if (msg.err !== 0) {
340
+ console.warn('鼠标移动事件出错:', msg.err)
341
+ }
342
+ })
343
+ }
344
+ onmouseout = canvas.onmouseup = (e) => {
345
+ canvas.style.cursor = 'default'
346
+ if (!this.clicked) {
347
+ return
348
+ }
349
+ this.sendMsg(this.CLT_MSG.PRESET_MOUSEUP, { offx: e.layerX, offy: e.layerY }, (msg) => {
350
+ if (msg.err !== 0) {
351
+ console.warn('鼠标抬起事件出错:', msg.err)
352
+ }
353
+ })
354
+ this.clicked = false
355
+ }
356
+ }
357
+
358
+ tryConnect() // 开始首次连接
359
+ })
360
+ },
361
+ newInstancePost (url, data) {
362
+ // 重新创建是为了 避免axios的拦截器影响写卡读卡请求
363
+ // 请求 如果携带了 Cookie,token到卡服务 会导致请求失败
364
+ // 需要注意的是因为没有增加响应拦截器 所以返回结果的res里面会多一层data
365
+ const instance = axios.create()
366
+ return instance.post(url, data, {
367
+ withCredentials: false,
368
+ headers: {
369
+ 'Content-Type': 'text/plain;charset=UTF-8',
370
+ Accept: '*/*',
371
+ }
372
+ })
373
+ },
374
+ // 打开视频
375
+ switchCamera (data) {
376
+ this.cameraurl = 'http://127.0.0.1:38088/video=stream&camidx=' + data + '&tid=' + Date.parse(new Date())
377
+ },
378
+ // 关闭视频
379
+ async closeVideo () {
380
+ const params = ''
381
+ const url = this.cameraurl.replace('stream', 'close')
382
+ this.cameraurl = ''
383
+ const msg = await this.newInstancePost('http://127.0.0.1:38088/card=idcard', params)
384
+ if (msg.data.code != '0') {
385
+ document.getElementById('result').innerHTML = msg.data.message
386
+ }
387
+ },
388
+ // 获取设备状态
389
+ async getVideoStatus () {
390
+ document.getElementById('result').innerHTML = ''
391
+ const params = ''
392
+ const url = 'http://127.0.0.1:38088/video=status'
393
+ this.cameraurl = ''
394
+ const msg = await this.newInstancePost(url, params)
395
+ if (msg.data.code != '0') {
396
+ document.getElementById('result').innerHTML = '获取设备状态失败,返回代码 = ' + msg.data.code + ',返回信息 = ' + msg.data.message
397
+ } else {
398
+ document.getElementById('result').innerHTML = '文档摄像头:' + msg.data.video0 +
399
+ ', 人像1:' + msg.data.video1
400
+ }
401
+
402
+ },
403
+ openApp () {
404
+ window.location.href = 'cameraServicetis:0' // 启动 CameraService 服务程序
405
+ },
406
+ async capturePhoto () {
407
+ // if (!this.name) {
408
+ // return this.$showMessage('请输入照片名称')
409
+ // }
410
+ // if (!this.useType) {
411
+ // return this.$showMessage('请选择文件使用类型')
412
+ // }
413
+ let camidx = 0
414
+ if (this.cameraurl.indexOf('http://127.0.0.1:38088/video=stream&camidx=0') != -1) {
415
+ camidx = 0
416
+ } else if (this.cameraurl.indexOf('http://127.0.0.1:38088/video=stream&camidx=1') != -1) {
417
+ camidx = 1
418
+ } else {
419
+ this.$message.info('请先打开视频')
420
+ return
421
+ }
422
+ const param = {
423
+ camidx: camidx
424
+ }
425
+ const msg = await this.newInstancePost('http://127.0.0.1:38088/video=grabimage',param)
426
+ if (msg.data.code != '0') {
427
+ this.$message.info(msg.data.message)
428
+ return
429
+ }
430
+ this.previewImage = 'data:image/jpg;base64,' + msg.data.photoBase64
431
+ this.output('base64 长度 : ' + this.previewImage)
432
+ this.$emit('photo-finish', { img: this.previewImage })
433
+ this.name = ''
434
+ // post('http://127.0.0.1:38088/video=grabimage', param)
435
+ },
436
+ // 读身份证
437
+ async startReadCard () {
438
+ const msg = await this.newInstancePost('http://127.0.0.1:38088/card=idcard', param)
439
+ if (msg.data.code != '0') {
440
+ this.$message.info(msg.data.message, 2000)
441
+ return
442
+ } else {
443
+ this.updateIdCardInfo(msg.data.IDCardInfo)
444
+ }
445
+ this.output('读取身份证')
446
+ this.output('开始读卡')
447
+ },
448
+ // 停止读身份证
449
+ stopReadCard () {
450
+ this.sendMsg(this.CLT_MSG.STOP_READ_IDCARD, (msg) => {
451
+ if (msg.err !== 0) {
452
+ return
453
+ }
454
+ this.output('停止读卡')
455
+ })
456
+ },
457
+ // 视频帧绘制函数
458
+ drawImage (data) {
459
+ // 校验视频是否在一定时间内的
460
+ if (!this.checkTimestamp(data[2] * 256 + data[1])) {
461
+ return
462
+ }
463
+ // 视频帧头有时间戳 注意偏移 大小端处理
464
+ const width = data[this.base_offset + 1] * 256 + data[this.base_offset]
465
+ const height = data[this.base_offset + 3] * 256 + data[this.base_offset + 2]
466
+
467
+ const cam = document.getElementById('cam')
468
+ const context = cam.getContext('2d')
469
+ if (this.orgdrawwidth != width || this.orgdrawheight != height) {
470
+ this.orgdrawwidth = width
471
+ this.orgdrawheight = height
472
+ }
473
+
474
+ const image = context.createImageData(width, height)
475
+ for (let n = 0; n != height; ++n) {
476
+ for (let m = 0; m != width; ++m) {
477
+ const imageOffset = ((height - n - 1) * width + m) * 4
478
+ const dataOffset = (n * width + m) * 3 + this.baseOffset + 4
479
+ image.data[imageOffset] = data[dataOffset + 2]
480
+ image.data[imageOffset + 1] = data[imageOffset + 1]
481
+ image.data[imageOffset + 2] = data[imageOffset]
482
+ image.data[imageOffset + 3] = 255
483
+ }
484
+ }
485
+ context.putImageData(image, 0, 0)
486
+ },
487
+ checkTimestamp (svrTime) {
488
+ const myDate = new Date()
489
+ let cltTime = myDate.getSeconds() * 1000 + myDate.getMilliseconds()
490
+ if (cltTime < svrTime) {
491
+ cltTime += 60 * 1000
492
+ }
493
+ return cltTime - svrTime < 3000
494
+ },
495
+ sendMsg (proto, msg, cb) {
496
+ if (!ws) {
497
+ return
498
+ }
499
+
500
+ if (typeof msg !== 'object') {
501
+ if (typeof msg === 'function') {
502
+ cb = msg
503
+ msg = {}
504
+ } else {
505
+ msg = {}
506
+ }
507
+ }
508
+
509
+ msg.proto = proto
510
+ if (typeof cb === 'function') {
511
+ this.callback[++this.context] = cb
512
+ msg.user_data = this.context
513
+ }
514
+
515
+ ws.send(JSON.stringify(msg))
516
+ },
517
+ output (content) {
518
+ if (content.length == 0) {
519
+ return
520
+ }
521
+ const console = document.getElementById('Console')
522
+ console.value += content
523
+ console.value += '\r'
524
+ console.scrollTop = console.scrollHeight
525
+ },
526
+ // 显示读到的身份证信息
527
+ updateIdCardInfo (msg) {
528
+ document.getElementById('Name').value = msg.name
529
+ document.getElementById('Sex').value = msg.sex
530
+ document.getElementById('Nation').value = msg.nation
531
+ document.getElementById('Born').value = msg.birthday
532
+ document.getElementById('Address').value = msg.address
533
+ document.getElementById('CardNo').value = msg.cardID
534
+ document.getElementById('Police').value = msg.issueOrgan
535
+ document.getElementById('ActivityLFrom').value = msg.validStart
536
+ document.getElementById('ActivityLTo').value = msg.validEnd
537
+ // document.getElementById('DeviceNo').value = msg.validEnd
538
+ document.getElementById('PhotoBuffer').value = msg.fingerBase64
539
+ document.getElementById('PhotoDisplay').src = 'data:image/jpg;base64,' + msg.photoBase64
540
+ this.IdCardInfo = msg
541
+ },
542
+ confirmIdCard () {
543
+ const param = this.IdCardInfo
544
+ if (this.IdCardInfo) {
545
+ this.$emit('confirm-info', param)
546
+ this.IdCardInfo = {}
547
+ }
548
+ },
549
+ handleOk () {
550
+ this.$emit('confirmPhoto', this.previewImage)
551
+ },
552
+ handleCancel () {
553
+ this.show = false
554
+ }
555
+ },
556
+
557
+ mounted () {
558
+ this.onLoad().then(() => {
559
+ this.$emit('ready')
560
+ }).catch(error => {
561
+ this.$emit('error', error)
562
+ })
563
+ },
564
+
565
+ beforeDestroy () {
566
+ if (ws) {
567
+ ws.close()
568
+ ws = null
569
+ }
570
+ }
571
+ }
572
+ </script>