ylyx-cli 1.0.16 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +313 -276
  2. package/bin/ylyx.js +176 -168
  3. package/lib/config.js +325 -283
  4. package/lib/deploy.js +509 -529
  5. package/lib/environments.js +111 -0
  6. package/lib/generator.js +192 -192
  7. package/lib/index.js +113 -113
  8. package/lib/interactive.js +87 -87
  9. package/lib/remote.js +179 -179
  10. package/lib/template.js +174 -174
  11. package/lib/utils.js +148 -148
  12. package/package.json +61 -59
  13. package/templates/react-app/files/.gitignore +22 -0
  14. package/templates/react-app/files/README.md +23 -23
  15. package/templates/react-app/files/package.json +28 -28
  16. package/templates/react-app/files/public/index.html +11 -11
  17. package/templates/react-app/files/src/App.css +15 -15
  18. package/templates/react-app/files/src/App.js +15 -15
  19. package/templates/react-app/files/src/index.css +10 -10
  20. package/templates/react-app/files/src/index.js +11 -11
  21. package/templates/react-app/template.json +11 -11
  22. package/templates/react-component/files/Component.module.css +5 -5
  23. package/templates/react-component/files/Component.tsx +31 -31
  24. package/templates/react-component/files/index.ts +2 -2
  25. package/templates/react-component/template.json +48 -48
  26. package/templates/vue-app/files/.editorconfig +14 -14
  27. package/templates/vue-app/files/.env.development +21 -21
  28. package/templates/vue-app/files/.env.production +18 -18
  29. package/templates/vue-app/files/.eslintignore +5 -5
  30. package/templates/vue-app/files/.eslintrc.js +267 -267
  31. package/templates/vue-app/files/.gitignore +24 -0
  32. package/templates/vue-app/files/.prettierignore +11 -11
  33. package/templates/vue-app/files/.travis.yml +5 -5
  34. package/templates/vue-app/files/.vscode/extensions.json +7 -7
  35. package/templates/vue-app/files/.vscode/settings.json +39 -39
  36. package/templates/vue-app/files/LICENSE +191 -191
  37. package/templates/vue-app/files/README.md +87 -87
  38. package/templates/vue-app/files/babel.config.js +11 -11
  39. package/templates/vue-app/files/jest.config.js +24 -24
  40. package/templates/vue-app/files/package.json +136 -136
  41. package/templates/vue-app/files/plopfile.js +7 -7
  42. package/templates/vue-app/files/postcss.config.js +5 -5
  43. package/templates/vue-app/files/public/default.js +25 -25
  44. package/templates/vue-app/files/public/index.html +26 -26
  45. package/templates/vue-app/files/src/App.vue +54 -54
  46. package/templates/vue-app/files/src/api/bigDataV/index.js +198 -198
  47. package/templates/vue-app/files/src/api/data.js +42 -42
  48. package/templates/vue-app/files/src/api/dataArchive/index.js +186 -186
  49. package/templates/vue-app/files/src/api/generator/genConfig.js +16 -16
  50. package/templates/vue-app/files/src/api/generator/generator.js +32 -32
  51. package/templates/vue-app/files/src/api/indexManagement/index.js +39 -39
  52. package/templates/vue-app/files/src/api/institutionMonitor/index.js +396 -396
  53. package/templates/vue-app/files/src/api/institutionSet/index.js +120 -120
  54. package/templates/vue-app/files/src/api/login.js +44 -44
  55. package/templates/vue-app/files/src/api/selfStatistics/index.js +50 -50
  56. package/templates/vue-app/files/src/api/system/code.js +15 -15
  57. package/templates/vue-app/files/src/api/system/dict.js +34 -34
  58. package/templates/vue-app/files/src/api/system/dictDetail.js +52 -52
  59. package/templates/vue-app/files/src/api/system/equipment.js +35 -35
  60. package/templates/vue-app/files/src/api/system/examManage.js +49 -49
  61. package/templates/vue-app/files/src/api/system/examProject.js +48 -48
  62. package/templates/vue-app/files/src/api/system/hosModel.js +35 -35
  63. package/templates/vue-app/files/src/api/system/hospital.js +88 -88
  64. package/templates/vue-app/files/src/api/system/job.js +40 -40
  65. package/templates/vue-app/files/src/api/system/menu.js +67 -67
  66. package/templates/vue-app/files/src/api/system/model.js +42 -42
  67. package/templates/vue-app/files/src/api/system/risConfig.js +9 -9
  68. package/templates/vue-app/files/src/api/system/role.js +64 -64
  69. package/templates/vue-app/files/src/api/system/sysSet.js +19 -19
  70. package/templates/vue-app/files/src/api/system/timing.js +41 -41
  71. package/templates/vue-app/files/src/api/system/user.js +121 -121
  72. package/templates/vue-app/files/src/api/tools/alipay.js +25 -25
  73. package/templates/vue-app/files/src/api/tools/email.js +24 -24
  74. package/templates/vue-app/files/src/api/tools/localStorage.js +27 -27
  75. package/templates/vue-app/files/src/api/tools/qiniu.js +40 -40
  76. package/templates/vue-app/files/src/assets/css/font-awesome.css +2342 -2342
  77. package/templates/vue-app/files/src/assets/css/font-awesome.min.css +2336 -2336
  78. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.svg +2671 -2671
  79. package/templates/vue-app/files/src/assets/icons/index.js +9 -9
  80. package/templates/vue-app/files/src/assets/icons/svg/hospital.svg +1 -1
  81. package/templates/vue-app/files/src/assets/icons/svg/hospital1.svg +1 -1
  82. package/templates/vue-app/files/src/assets/icons/svg/loginOne.svg +35 -35
  83. package/templates/vue-app/files/src/assets/icons/svg/loginOneWhite.svg +19 -19
  84. package/templates/vue-app/files/src/assets/icons/svg/loginOr.svg +93 -93
  85. package/templates/vue-app/files/src/assets/icons/svg/loginUp.svg +96 -96
  86. package/templates/vue-app/files/src/assets/icons/svg/monitor.svg +1 -1
  87. package/templates/vue-app/files/src/assets/icons/svg/offline.svg +1 -1
  88. package/templates/vue-app/files/src/assets/icons/svg/online.svg +1 -1
  89. package/templates/vue-app/files/src/assets/icons/svg/system.svg +1 -1
  90. package/templates/vue-app/files/src/assets/icons/svgo.yml +21 -21
  91. package/templates/vue-app/files/src/assets/styles/btn.scss +103 -103
  92. package/templates/vue-app/files/src/assets/styles/eladmin.scss +124 -124
  93. package/templates/vue-app/files/src/assets/styles/element-ui.scss +217 -217
  94. package/templates/vue-app/files/src/assets/styles/element-variables.scss +31 -31
  95. package/templates/vue-app/files/src/assets/styles/global.scss +73 -73
  96. package/templates/vue-app/files/src/assets/styles/index.scss +220 -220
  97. package/templates/vue-app/files/src/assets/styles/mixin.scss +60 -60
  98. package/templates/vue-app/files/src/assets/styles/publicStyle.scss +224 -224
  99. package/templates/vue-app/files/src/assets/styles/sidebar.scss +239 -239
  100. package/templates/vue-app/files/src/assets/styles/transition.scss +48 -48
  101. package/templates/vue-app/files/src/assets/styles/variables.scss +44 -44
  102. package/templates/vue-app/files/src/common/flexible.js +145 -145
  103. package/templates/vue-app/files/src/components/Breadcrumb/index.vue +87 -87
  104. package/templates/vue-app/files/src/components/Crud/CRUD.operation.vue +248 -248
  105. package/templates/vue-app/files/src/components/Crud/Pagination.vue +20 -20
  106. package/templates/vue-app/files/src/components/Crud/RR.operation.vue +39 -39
  107. package/templates/vue-app/files/src/components/Crud/UD.operation.vue +106 -106
  108. package/templates/vue-app/files/src/components/Crud/crud.js +907 -907
  109. package/templates/vue-app/files/src/components/Crud/user/UR.operation.vue +154 -154
  110. package/templates/vue-app/files/src/components/DateRangePicker/index.vue +42 -42
  111. package/templates/vue-app/files/src/components/DateRangePickerProhibitNext/index.vue +42 -42
  112. package/templates/vue-app/files/src/components/DateRangePickerProhibitTodayNext/index.vue +48 -48
  113. package/templates/vue-app/files/src/components/Dict/Dict.js +31 -31
  114. package/templates/vue-app/files/src/components/Dict/index.js +29 -29
  115. package/templates/vue-app/files/src/components/Doc/index.vue +16 -16
  116. package/templates/vue-app/files/src/components/Echarts/BarChart.vue +115 -115
  117. package/templates/vue-app/files/src/components/Echarts/Category.vue +768 -768
  118. package/templates/vue-app/files/src/components/Echarts/Funnel.vue +120 -120
  119. package/templates/vue-app/files/src/components/Echarts/Gauge.vue +74 -74
  120. package/templates/vue-app/files/src/components/Echarts/Graph.vue +101 -101
  121. package/templates/vue-app/files/src/components/Echarts/HeatMap.vue +301 -301
  122. package/templates/vue-app/files/src/components/Echarts/Line3D.vue +110 -110
  123. package/templates/vue-app/files/src/components/Echarts/PieChart.vue +84 -84
  124. package/templates/vue-app/files/src/components/Echarts/Point.vue +161 -161
  125. package/templates/vue-app/files/src/components/Echarts/RadarChart.vue +123 -123
  126. package/templates/vue-app/files/src/components/Echarts/Rich.vue +160 -160
  127. package/templates/vue-app/files/src/components/Echarts/Sankey.vue +114 -114
  128. package/templates/vue-app/files/src/components/Echarts/Scatter.vue +192 -192
  129. package/templates/vue-app/files/src/components/Echarts/Sunburst.vue +127 -127
  130. package/templates/vue-app/files/src/components/Echarts/ThemeRiver.vue +233 -233
  131. package/templates/vue-app/files/src/components/Echarts/WordCloud.vue +201 -201
  132. package/templates/vue-app/files/src/components/GithubCorner/index.vue +55 -55
  133. package/templates/vue-app/files/src/components/Hamburger/index.vue +44 -44
  134. package/templates/vue-app/files/src/components/HeaderSearch/index.vue +196 -196
  135. package/templates/vue-app/files/src/components/IconSelect/index.vue +74 -74
  136. package/templates/vue-app/files/src/components/IconSelect/requireIcons.js +10 -10
  137. package/templates/vue-app/files/src/components/Iframe/index.vue +30 -30
  138. package/templates/vue-app/files/src/components/JavaEdit/index.vue +78 -78
  139. package/templates/vue-app/files/src/components/Pagination/index.vue +100 -100
  140. package/templates/vue-app/files/src/components/PanThumb/index.vue +149 -149
  141. package/templates/vue-app/files/src/components/ParentView/index.vue +3 -3
  142. package/templates/vue-app/files/src/components/Permission/index.js +13 -13
  143. package/templates/vue-app/files/src/components/Permission/permission.js +21 -21
  144. package/templates/vue-app/files/src/components/RightPanel/index.vue +149 -149
  145. package/templates/vue-app/files/src/components/Screenfull/index.vue +60 -60
  146. package/templates/vue-app/files/src/components/SizeSelect/index.vue +60 -60
  147. package/templates/vue-app/files/src/components/SvgIcon/index.vue +66 -66
  148. package/templates/vue-app/files/src/components/ThemePicker/index.vue +177 -177
  149. package/templates/vue-app/files/src/components/UploadExcel/index.vue +149 -149
  150. package/templates/vue-app/files/src/components/WaterMark/setWaterMark.js +68 -68
  151. package/templates/vue-app/files/src/components/WaterMark/waterMark.vue +69 -69
  152. package/templates/vue-app/files/src/components/Xgplayer/index.vue +49 -49
  153. package/templates/vue-app/files/src/components/YamlEdit/index.vue +81 -81
  154. package/templates/vue-app/files/src/layout/components/AppMain.vue +67 -67
  155. package/templates/vue-app/files/src/layout/components/Navbar.vue +209 -209
  156. package/templates/vue-app/files/src/layout/components/Settings/index.vue +125 -125
  157. package/templates/vue-app/files/src/layout/components/Sidebar/FixiOSBug.js +26 -26
  158. package/templates/vue-app/files/src/layout/components/Sidebar/Item.vue +29 -29
  159. package/templates/vue-app/files/src/layout/components/Sidebar/Link.vue +35 -35
  160. package/templates/vue-app/files/src/layout/components/Sidebar/Logo.vue +93 -93
  161. package/templates/vue-app/files/src/layout/components/Sidebar/SidebarItem.vue +104 -104
  162. package/templates/vue-app/files/src/layout/components/Sidebar/index.vue +79 -79
  163. package/templates/vue-app/files/src/layout/components/TagsView/ScrollPane.vue +90 -90
  164. package/templates/vue-app/files/src/layout/components/TagsView/index.vue +299 -299
  165. package/templates/vue-app/files/src/layout/components/index.js +5 -5
  166. package/templates/vue-app/files/src/layout/index.vue +119 -119
  167. package/templates/vue-app/files/src/layout/mixin/ResizeHandler.js +45 -45
  168. package/templates/vue-app/files/src/main.js +89 -89
  169. package/templates/vue-app/files/src/mixins/crud.js +348 -348
  170. package/templates/vue-app/files/src/router/index.js +156 -156
  171. package/templates/vue-app/files/src/router/routers.js +203 -203
  172. package/templates/vue-app/files/src/settings.js +57 -57
  173. package/templates/vue-app/files/src/store/getters.js +29 -29
  174. package/templates/vue-app/files/src/store/index.js +25 -25
  175. package/templates/vue-app/files/src/store/modules/api.js +33 -33
  176. package/templates/vue-app/files/src/store/modules/app.js +55 -55
  177. package/templates/vue-app/files/src/store/modules/permission.js +79 -79
  178. package/templates/vue-app/files/src/store/modules/register.js +17 -17
  179. package/templates/vue-app/files/src/store/modules/settings.js +46 -46
  180. package/templates/vue-app/files/src/store/modules/tagsView.js +168 -168
  181. package/templates/vue-app/files/src/store/modules/user.js +119 -119
  182. package/templates/vue-app/files/src/utils/auth.js +18 -18
  183. package/templates/vue-app/files/src/utils/base64ToFile.js +27 -27
  184. package/templates/vue-app/files/src/utils/clipboard.js +36 -36
  185. package/templates/vue-app/files/src/utils/datetime.js +289 -289
  186. package/templates/vue-app/files/src/utils/getBlobFile.js +10 -10
  187. package/templates/vue-app/files/src/utils/getTime.js +29 -29
  188. package/templates/vue-app/files/src/utils/index.js +520 -520
  189. package/templates/vue-app/files/src/utils/permission.js +29 -29
  190. package/templates/vue-app/files/src/utils/pinyin.js +450 -450
  191. package/templates/vue-app/files/src/utils/request.js +139 -139
  192. package/templates/vue-app/files/src/utils/rsaEncrypt.js +37 -37
  193. package/templates/vue-app/files/src/utils/shortcuts.js +210 -210
  194. package/templates/vue-app/files/src/utils/upload.js +12 -12
  195. package/templates/vue-app/files/src/utils/validate.js +262 -262
  196. package/templates/vue-app/files/src/views/components/Echarts.vue +124 -124
  197. package/templates/vue-app/files/src/views/components/Editor.vue +75 -75
  198. package/templates/vue-app/files/src/views/components/MarkDown.vue +44 -44
  199. package/templates/vue-app/files/src/views/components/UVideo.vue +37 -37
  200. package/templates/vue-app/files/src/views/components/YamlEdit.vue +206 -206
  201. package/templates/vue-app/files/src/views/components/camera/camera.vue +115 -115
  202. package/templates/vue-app/files/src/views/components/camera/cameraTest.vue +158 -158
  203. package/templates/vue-app/files/src/views/components/excel/upload-excel.vue +41 -41
  204. package/templates/vue-app/files/src/views/components/icons/element-icons.js +74 -74
  205. package/templates/vue-app/files/src/views/components/icons/index.vue +106 -106
  206. package/templates/vue-app/files/src/views/components/icons/svg-icons.js +10 -10
  207. package/templates/vue-app/files/src/views/components/scroll/index.vue +107 -107
  208. package/templates/vue-app/files/src/views/components/scrollFull/index.vue +99 -99
  209. package/templates/vue-app/files/src/views/dashboard/LineChart.vue +138 -138
  210. package/templates/vue-app/files/src/views/dashboard/PanelGroup.vue +173 -173
  211. package/templates/vue-app/files/src/views/dashboard/mixins/resize.js +57 -57
  212. package/templates/vue-app/files/src/views/dataArchive/delTable.vue +354 -354
  213. package/templates/vue-app/files/src/views/dataArchive/exportDetail.vue +121 -121
  214. package/templates/vue-app/files/src/views/dataArchive/exportList.vue +160 -160
  215. package/templates/vue-app/files/src/views/dataArchive/index.vue +2104 -2104
  216. package/templates/vue-app/files/src/views/features/401.vue +83 -83
  217. package/templates/vue-app/files/src/views/features/404.vue +226 -226
  218. package/templates/vue-app/files/src/views/features/redirect.vue +12 -12
  219. package/templates/vue-app/files/src/views/generator/config.vue +348 -348
  220. package/templates/vue-app/files/src/views/generator/index.vue +143 -143
  221. package/templates/vue-app/files/src/views/generator/preview.vue +39 -39
  222. package/templates/vue-app/files/src/views/home.vue +80 -80
  223. package/templates/vue-app/files/src/views/indexManagement/index.vue +422 -422
  224. package/templates/vue-app/files/src/views/indexManagement/other.vue +286 -286
  225. package/templates/vue-app/files/src/views/institutionMonitor/components/LineChart.vue +191 -191
  226. package/templates/vue-app/files/src/views/institutionMonitor/index.scss +339 -339
  227. package/templates/vue-app/files/src/views/institutionMonitor/index.vue +1385 -1385
  228. package/templates/vue-app/files/src/views/institutionMonitor/mixins/resize.js +57 -57
  229. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/checkProjectCode.vue +267 -267
  230. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/imageAbnormalMonitor.vue +361 -361
  231. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/index.vue +686 -686
  232. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/leakageAnomaly.vue +270 -270
  233. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/moveMonitore.vue +114 -114
  234. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/qualityMonitore.vue +338 -338
  235. package/templates/vue-app/files/src/views/institutionSet/cloudSet.vue +534 -534
  236. package/templates/vue-app/files/src/views/institutionSet/index.vue +2550 -2550
  237. package/templates/vue-app/files/src/views/login.vue +243 -243
  238. package/templates/vue-app/files/src/views/qualityLogin.vue +280 -280
  239. package/templates/vue-app/files/src/views/selfStatistics/components/LineChart.vue +296 -296
  240. package/templates/vue-app/files/src/views/selfStatistics/hospitalDetail/index.vue +533 -533
  241. package/templates/vue-app/files/src/views/selfStatistics/index.scss +447 -447
  242. package/templates/vue-app/files/src/views/selfStatistics/index.vue +903 -903
  243. package/templates/vue-app/files/src/views/selfStatistics/mixins/resize.js +57 -57
  244. package/templates/vue-app/files/src/views/selfStatistics/monitorDetail/index.vue +285 -285
  245. package/templates/vue-app/files/src/views/selfStatistics/offlineDetail/index.vue +104 -104
  246. package/templates/vue-app/files/src/views/selfStatistics/selfActiveDetail/index.vue +104 -104
  247. package/templates/vue-app/files/src/views/selfStatistics/selfMonitorDetail/index.vue +420 -420
  248. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/setWaterMark.js +68 -68
  249. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/waterMark.vue +69 -69
  250. package/templates/vue-app/files/src/views/system/dept/index.vue +144 -144
  251. package/templates/vue-app/files/src/views/system/dict/dictDetail.vue +146 -146
  252. package/templates/vue-app/files/src/views/system/dict/index.vue +159 -159
  253. package/templates/vue-app/files/src/views/system/examModality/index.vue +174 -174
  254. package/templates/vue-app/files/src/views/system/examPart/index.vue +184 -184
  255. package/templates/vue-app/files/src/views/system/examProject/index.vue +321 -321
  256. package/templates/vue-app/files/src/views/system/examine/index.vue +66 -66
  257. package/templates/vue-app/files/src/views/system/job/index.vue +119 -119
  258. package/templates/vue-app/files/src/views/system/job/module/form.vue +72 -72
  259. package/templates/vue-app/files/src/views/system/job/module/header.vue +48 -48
  260. package/templates/vue-app/files/src/views/system/menu/index.vue +327 -327
  261. package/templates/vue-app/files/src/views/system/model/index.vue +285 -285
  262. package/templates/vue-app/files/src/views/system/role/index.vue +434 -434
  263. package/templates/vue-app/files/src/views/system/sysSet/index.vue +84 -84
  264. package/templates/vue-app/files/src/views/system/timing/index.vue +289 -289
  265. package/templates/vue-app/files/src/views/system/timing/log.vue +143 -143
  266. package/templates/vue-app/files/src/views/system/user/admin.vue +414 -414
  267. package/templates/vue-app/files/src/views/system/user/center/updateEmail.vue +146 -146
  268. package/templates/vue-app/files/src/views/system/user/center/updatePass.vue +168 -168
  269. package/templates/vue-app/files/src/views/system/user/center.vue +140 -140
  270. package/templates/vue-app/files/src/views/system/user/index.vue +972 -972
  271. package/templates/vue-app/files/src/views/systemSet/role/index.vue +314 -314
  272. package/templates/vue-app/files/src/views/systemSet/user/admin.vue +414 -414
  273. package/templates/vue-app/files/src/views/systemSet/user/center/updateEmail.vue +146 -146
  274. package/templates/vue-app/files/src/views/systemSet/user/center/updatePass.vue +115 -115
  275. package/templates/vue-app/files/src/views/systemSet/user/center.vue +351 -351
  276. package/templates/vue-app/files/src/views/systemSet/user/index.vue +928 -928
  277. package/templates/vue-app/files/src/views/tools/aliPay/config.vue +102 -102
  278. package/templates/vue-app/files/src/views/tools/aliPay/index.vue +48 -48
  279. package/templates/vue-app/files/src/views/tools/aliPay/toPay.vue +91 -91
  280. package/templates/vue-app/files/src/views/tools/email/config.vue +91 -91
  281. package/templates/vue-app/files/src/views/tools/email/index.vue +42 -42
  282. package/templates/vue-app/files/src/views/tools/email/send.vue +159 -159
  283. package/templates/vue-app/files/src/views/tools/storage/index.vue +35 -35
  284. package/templates/vue-app/files/src/views/tools/storage/local/index.vue +207 -207
  285. package/templates/vue-app/files/src/views/tools/storage/qiniu/form.vue +108 -108
  286. package/templates/vue-app/files/src/views/tools/storage/qiniu/index.vue +241 -241
  287. package/templates/vue-app/files/src/views/tools/swagger/index.vue +14 -14
  288. package/templates/vue-app/files/vue.config.js +173 -173
  289. package/templates/vue-app/template.json +29 -29
@@ -1,2550 +1,2550 @@
1
- <template>
2
- <div class="institutionSet app-container">
3
- <el-form :inline="true" :model="query" class="form-inline-hospital" size="small">
4
- <el-form-item>
5
- <el-input v-model="query.hospitalName" placeholder="机构名称"></el-input>
6
- </el-form-item>
7
- <el-form-item>
8
- <el-input v-model="query.scenceId" placeholder="机构ID"></el-input>
9
- </el-form-item>
10
- <el-form-item>
11
- <el-input v-model="query.hospitalIp" placeholder="机构IP"></el-input>
12
- </el-form-item>
13
- <el-form-item>
14
- <!-- 区域 -->
15
- <el-cascader
16
- v-model="query.address"
17
- clearable
18
- placeholder="机构地区"
19
- :options="provinceList"
20
- :props="props"
21
- style="width: 220px"
22
- @active-item-change="handleItemChange">
23
- </el-cascader>
24
- </el-form-item>
25
- <el-form-item>
26
- <el-select
27
- v-model="query.hospOwnerTypes"
28
- multiple
29
- clearable
30
- placeholder="机构所有制"
31
- class="filter-item"
32
- style="width: 160px"
33
- @change="forceUpdate">
34
- <el-option
35
- v-for="item in dict.hosp_owner_type"
36
- :key="item.value"
37
- :label="item.label"
38
- :value="item.value" />
39
- </el-select>
40
- </el-form-item>
41
- <el-form-item>
42
- <el-select
43
- v-model="query.hospitalType"
44
- clearable
45
- placeholder="机构类别"
46
- class="filter-item"
47
- style="width: 160px"
48
- @change="forceUpdate">
49
- <el-option
50
- v-for="item in dict.ins_category"
51
- :key="item.value"
52
- :label="item.label"
53
- :value="item.value" />
54
- </el-select>
55
- </el-form-item>
56
- <!-- 机构等级 -->
57
- <el-form-item>
58
- <el-select
59
- v-model="query.level"
60
- clearable
61
- @change="forceUpdate"
62
- placeholder="机构等级"
63
- class="filter-item"
64
- style="width: 160px">
65
- <el-option
66
- v-for="item in dict.agency_hos_rank"
67
- :key="item.value"
68
- :label="item.label"
69
- :value="item.value" />
70
- </el-select>
71
- </el-form-item>
72
- <el-form-item>
73
- <el-select
74
- v-model="query.runningState"
75
- clearable
76
- placeholder="机构状态"
77
- class="filter-item"
78
- style="width: 160px"
79
- @change="forceUpdate">
80
- <el-option
81
- v-for="item in dict.running_status"
82
- :key="item.value"
83
- :label="item.label"
84
- :value="item.value" />
85
- </el-select>
86
- </el-form-item>
87
- <el-form-item>
88
- <el-select
89
- v-model="query.isCanConnect"
90
- clearable
91
- @change="forceUpdate"
92
- style="width: 160px"
93
- placeholder="是否可以联网">
94
- <el-option
95
- v-for="item in dict.can_connect"
96
- :key="item.value"
97
- :label="item.label"
98
- :value="item.value" />
99
- </el-select>
100
- </el-form-item>
101
-
102
- <el-form-item>
103
- <el-select
104
- v-model="query.equipmentStatus"
105
- clearable
106
- @change="forceUpdate"
107
- style="width: 140px"
108
- placeholder="是否有设备">
109
- <el-option
110
- v-for="item in dict.equipment_status"
111
- :key="item.value"
112
- :label="item.label"
113
- :value="item.value" />
114
- </el-select>
115
- </el-form-item>
116
- <el-form-item>
117
- <el-select
118
- v-model="query.connectStatus"
119
- clearable
120
- @change="forceUpdate"
121
- style="width: 140px"
122
- placeholder="是否已联网">
123
- <el-option
124
- v-for="item in dict.connect_status"
125
- :key="item.value"
126
- :label="item.label"
127
- :value="item.value" />
128
- </el-select>
129
- </el-form-item>
130
-
131
- <el-form-item>
132
- <el-select
133
- v-model="query.configStatus"
134
- clearable
135
- @change="forceUpdate"
136
- style="width: 140px"
137
- placeholder="是否有云配置">
138
- <el-option
139
- v-for="item in dict.config_status"
140
- :key="item.value"
141
- :label="item.label"
142
- :value="item.value" />
143
- </el-select>
144
- </el-form-item>
145
- <!-- <el-form-item>
146
- <el-select
147
- v-model="query.accessImages"
148
- clearable
149
- @change="forceUpdate"
150
- style="width: 160px"
151
- placeholder="客户端是否能调阅"
152
- >
153
- <el-option
154
- v-for="item in yesOrNo"
155
- :key="item.value"
156
- :label="item.label"
157
- :value="item.value"
158
- />
159
- </el-select>
160
- </el-form-item> -->
161
- <el-form-item>
162
- <el-button @click="crud.toQuery" class="filter-item" size="small">查询</el-button>
163
- </el-form-item>
164
- <el-form-item>
165
- <el-button @click="resetQueryClick" class="filter-item" size="small">重置</el-button>
166
- </el-form-item>
167
- <el-form-item>
168
- <el-button @click="addQueryHospitailClick" class="filter-item" size="small"
169
- >新增机构</el-button
170
- >
171
- <el-button
172
- @click="download"
173
- class="filter-item"
174
- size="mini"
175
- style="margin-left: 5px"
176
- :loading="downloadLoading"
177
- v-if="showDownLoad"
178
- >导出</el-button
179
- >
180
- </el-form-item>
181
- </el-form>
182
- <div>
183
- <!-- 表格 -->
184
- <el-table :data="crud.data" v-loading="crud.loading">
185
- <!-- :show-overflow-tooltip="true" -->
186
- <el-table-column label="序号" width="60px">
187
- <template slot-scope="scope">
188
- <span>{{ (crud.page.page - 1) * crud.page.size + scope.$index + 1 }}</span>
189
- </template>
190
- </el-table-column>
191
- <el-table-column
192
- v-for="(item, index) in headerTable"
193
- :key="index.key"
194
- :label="item.label"
195
- :prop="item.prop"
196
- :min-width="item.width">
197
- <template slot-scope="scope">
198
- <div v-if="item.prop == 'hospitalType'">
199
- {{ hosCategory(scope.row.hospitalType) || omitData }}
200
- </div>
201
- <div v-else-if="item.prop == 'level'">
202
- {{ hosRank(scope.row.level) || omitData }}
203
- </div>
204
- <div v-else-if="item.prop == 'runningState'">
205
- {{ hosState(scope.row.runningState) || omitData }}
206
- </div>
207
- <div v-else-if="item.prop == 'isCanConnect'">
208
- {{ hosCanConnect(scope.row.isCanConnect) || omitData }}
209
- </div>
210
- <div v-else-if="item.prop == 'equipmentStatus'">
211
- {{ hosEquipmentStatus(scope.row.equipmentStatus) || omitData }}
212
- </div>
213
- <div v-else-if="item.prop == 'connectStatus'">
214
- {{ hosConnectStatus(scope.row.connectStatus) || omitData }}
215
- </div>
216
- <div v-else-if="item.prop == 'hospOwnerType'">
217
- {{ hosHospOwnerType(scope.row.hospOwnerType) || omitData }}
218
- </div>
219
- <div v-else-if="item.prop == 'configStatus'">
220
- {{ scope.row.configStatus == '1' ? '是' : '否' }}
221
- </div>
222
- <div v-else-if="item.prop == 'accessImages'">
223
- {{ scope.row.connectStatus == '1' ? '是' : '否' }}
224
- </div>
225
- <div v-else-if="item.prop == 'joinUpState'">
226
- {{
227
- scope.row.joinUpState != undefined
228
- ? scope.row.joinUpState == 0
229
- ? '未接入'
230
- : '已接入'
231
- : '-'
232
- }}
233
- </div>
234
- <div v-else>
235
- {{ scope.row[item.prop] || omitData }}
236
- </div>
237
- </template>
238
- </el-table-column>
239
- <el-table-column label="操作" width="200" fixed="right">
240
- <template slot-scope="scope">
241
- <el-button size="mini" type="text" @click="toAddRecord(scope.row)">修改</el-button>
242
-
243
- <el-button
244
- v-if="checkPer(permission.editYunSet)"
245
- :disabled="scope.row.configStatus == 0"
246
- size="mini"
247
- type="text"
248
- @click="cloudSet(scope.row)">
249
- 云配置</el-button
250
- >
251
- <el-button
252
- size="mini"
253
- type="text"
254
- style="color: #d92929"
255
- @click="monitorPath(scope.row)"
256
- >删除</el-button
257
- >
258
- <el-button size="mini" type="text" v-if="showMiyao" @click="SecretKey(scope.row)"
259
- >秘钥</el-button
260
- >
261
- </template>
262
- </el-table-column>
263
- </el-table>
264
- <!--分页组件-->
265
- <pagination />
266
- </div>
267
- <!-- 新增机构弹框 -->
268
- <el-dialog
269
- :title="hospitalName"
270
- top="2vh"
271
- width="1000px"
272
- class="addHispotalDialog"
273
- :visible.sync="hospitalVisible"
274
- :close-on-click-modal="false"
275
- :before-close="closeDialog">
276
- <!-- <div slot="title">
277
- {{ hospitalName
278
- }}<span style="color: orange; font-size: 13px"
279
- >(提示:置灰的字段为与智联网平台同步的字段,不可编辑)</span
280
- >
281
- </div> -->
282
-
283
- <el-form
284
- :model="addHispotalForm"
285
- label-width="170px"
286
- class="addHispotalStyle"
287
- ref="addHispotalForm"
288
- size="small"
289
- :rules="rules">
290
- <el-row :gutter="15">
291
- <el-tabs v-model="activeName" class="tabsInform">
292
- <el-tab-pane label="基本信息" name="basicInformation" class="basicInformation">
293
- <el-col :span="24">
294
- <div class="titleTip">基础信息</div>
295
- </el-col>
296
- <el-col :span="12">
297
- <el-form-item label="机构名称:" prop="hospitalName">
298
- <el-input
299
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
300
- v-model="addHispotalForm.hospitalName"
301
- placeholder="请输入机构名称"></el-input>
302
- </el-form-item>
303
- </el-col>
304
- <el-col :span="12">
305
- <el-form-item
306
- :label="index == 0 ? '机构别称:' : ''"
307
- v-for="(othername, index) in hospitalNameAliasArr"
308
- :key="index + 1">
309
- <el-input
310
- v-model="othername.value"
311
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
312
- placeholder="请输入机构别称"></el-input>
313
- <span
314
- v-if="
315
- hospitalName == '新增机构' ||
316
- (hospitalName == '修改机构' && !checkPer(permission.basic))
317
- "
318
- class="el-icon-circle-plus-outline addStyle"
319
- @click="addOtherName">
320
- </span>
321
- <span
322
- v-if="
323
- hospitalName == '新增机构' ||
324
- (hospitalName == '修改机构' && !checkPer(permission.basic))
325
- "
326
- class="el-icon-remove-outline reduceStyle"
327
- v-show="index != 0"
328
- @click="removeOtherName(index)"></span>
329
- </el-form-item>
330
- </el-col>
331
- <el-col :span="12">
332
- <el-form-item label="卫统机构ID:" prop="healthStatisticsId">
333
- <el-input
334
- v-model="addHispotalForm.healthStatisticsId"
335
- placeholder="卫统机构ID"></el-input>
336
- </el-form-item>
337
- </el-col>
338
- <el-col :span="12">
339
- <el-form-item label="组织机构代码:" prop="hospitalId">
340
- <el-input
341
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
342
- v-model="addHispotalForm.hospitalId"
343
- placeholder="请输入组织机构代码"></el-input>
344
- </el-form-item>
345
- </el-col>
346
- <el-col :span="12">
347
- <el-form-item label="机构地区:" prop="addressHos">
348
- <el-cascader
349
- v-model="addHispotalForm.addressHos"
350
- clearable
351
- placeholder="请选择机构地区"
352
- :options="provinceList"
353
- :props="props"
354
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
355
- style="width: 220px"
356
- ref="cascaderArr"
357
- @active-item-change="handleItemChange"
358
- @change="provinceChange($event)">
359
- </el-cascader>
360
- </el-form-item>
361
- </el-col>
362
- <el-col :span="12">
363
- <el-form-item label="机构状态:" prop="runningState">
364
- <el-select
365
- v-model="addHispotalForm.runningState"
366
- clearable
367
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
368
- placeholder="请选择机构状态">
369
- <el-option
370
- v-for="item in dict.running_status"
371
- :key="item.value"
372
- :label="item.label"
373
- :value="item.value" />
374
- </el-select>
375
- </el-form-item>
376
- </el-col>
377
- <el-col :span="12">
378
- <el-form-item label="机构所有制:" prop="hospOwnerType">
379
- <el-select v-model="addHispotalForm.hospOwnerType" placeholder="请选择机构所有制">
380
- <el-option
381
- v-for="item in dict.hosp_owner_type"
382
- :key="item.value"
383
- :label="item.label"
384
- :value="item.value">
385
- </el-option>
386
- </el-select>
387
- </el-form-item>
388
- </el-col>
389
- <el-col :span="12">
390
- <el-form-item label="机构类别:" prop="hospitalType">
391
- <el-select
392
- v-model="addHispotalForm.hospitalType"
393
- clearable
394
- placeholder="请选择机构类别"
395
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
396
- <el-option
397
- v-for="item in dict.ins_category"
398
- :key="item.value"
399
- :label="item.label"
400
- :value="item.value" />
401
- </el-select>
402
- </el-form-item>
403
- </el-col>
404
- <el-col :span="12">
405
- <el-form-item label="机构等级:" prop="level">
406
- <el-select
407
- v-model="addHispotalForm.level"
408
- clearable
409
- placeholder="请选择机构等级"
410
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
411
- <el-option
412
- v-for="item in dict.agency_hos_rank"
413
- :key="item.value"
414
- :label="item.label"
415
- :value="item.value" />
416
- </el-select>
417
- </el-form-item>
418
- </el-col>
419
- <el-col :span="24">
420
- <div class="titleTip">配置信息</div>
421
- </el-col>
422
- <el-col :span="12" style="height: 63px">
423
- <el-form-item
424
- label="自动上传方式:"
425
- :rules="
426
- addHispotalForm.monitorStatus == '1' ? rules.verityMsg : [{ required: false }]
427
- "
428
- prop="autoUploadType">
429
- <el-select
430
- v-model="addHispotalForm.autoUploadType"
431
- clearable
432
- placeholder="请选择自动上传方式"
433
- @change="blur"
434
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
435
- <el-option
436
- v-for="item in AutomaticallyUpload"
437
- :key="item.value"
438
- :label="item.label"
439
- :value="item.value" />
440
- </el-select>
441
- </el-form-item>
442
- </el-col>
443
- <el-col :span="12" style="height: 63px">
444
- <el-form-item label="urlKey:" prop="urlKey">
445
- <el-select
446
- v-model="addHispotalForm.urlKey"
447
- clearable
448
- filterable
449
- placeholder="请选择urlKey"
450
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
451
- <el-option v-for="item in urlKeyList" :key="item" :label="item" :value="item" />
452
- </el-select>
453
- </el-form-item>
454
- </el-col>
455
- <el-col :span="12">
456
- <el-form-item label="图像浏览方式:">
457
- <el-select
458
- v-model="addHispotalForm.viewType"
459
- clearable
460
- placeholder="请选择图像浏览方式"
461
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
462
- <el-option
463
- v-for="item in dict.view_type"
464
- :key="item.value"
465
- :label="item.label"
466
- :value="item.value" />
467
- </el-select>
468
- </el-form-item>
469
- </el-col>
470
- <el-col :span="24">
471
- <div class="titleTip">连通信息</div>
472
- </el-col>
473
- <el-col :span="12" style="height: 63px">
474
- <el-form-item label="是否有设备:" prop="equipmentStatus">
475
- <el-select
476
- v-model="addHispotalForm.equipmentStatus"
477
- clearable
478
- placeholder="请选择是否有设备"
479
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
480
- <el-option
481
- v-for="item in dict.equipment_status"
482
- :key="item.value"
483
- :label="item.label"
484
- :value="item.value" />
485
- </el-select>
486
- </el-form-item>
487
- </el-col>
488
- <el-col :span="12" style="height: 63px">
489
- <el-form-item label="是否可以联网:" prop="isCanConnect">
490
- <el-select
491
- v-model="addHispotalForm.isCanConnect"
492
- clearable
493
- placeholder="请选择是否可以联网"
494
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
495
- <el-option
496
- v-for="item in dict.can_connect"
497
- :key="item.value"
498
- :label="item.label"
499
- :value="item.value" />
500
- </el-select>
501
- </el-form-item>
502
- </el-col>
503
- <el-col :span="12">
504
- <el-form-item label="是否归档:" prop="archiveFlag">
505
- <el-select
506
- v-model="addHispotalForm.archiveFlag"
507
- clearable
508
- placeholder="请选择是否归档"
509
- :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
510
- <el-option
511
- v-for="item in dict.archive_status"
512
- :key="item.value"
513
- :label="item.label"
514
- :value="item.value" />
515
- </el-select>
516
- </el-form-item>
517
- </el-col>
518
- <el-col :span="12">
519
- <el-form-item label="是否已联网:" prop="connectStatus">
520
- <el-select
521
- v-model="addHispotalForm.connectStatus"
522
- clearable
523
- placeholder="请选择是否已联网">
524
- <el-option
525
- v-for="item in dict.connect_status"
526
- :key="item.value"
527
- :label="item.label"
528
- :value="item.value" />
529
- </el-select>
530
- </el-form-item>
531
- </el-col>
532
- </el-tab-pane>
533
-
534
- <el-tab-pane label="设备信息" name="equipmentInformation">
535
- <el-form-item
536
- v-for="(item, ide) in addHispotalForm.equipmentList"
537
- :key="ide"
538
- label-width="0">
539
- <el-col :span="7" style="width: 250px; padding-right: 10px; text-align: right">
540
- <span v-if="!item.equipmentShow">{{ item.equipmentName }}:</span>
541
- <el-form-item v-else style="margin: 0">
542
- <el-select
543
- @change="equipmentNameChange($event, ide)"
544
- clearable
545
- v-model="item.equipmentName"
546
- style="width: 100%"
547
- filterable=""
548
- placeholder="请选择设备名称"
549
- :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
550
- <el-option
551
- v-for="item in dict.equipment_name"
552
- :key="item.dictSort"
553
- :label="item.label"
554
- :value="item.label"
555
- :disabled="item.disabled" />
556
- </el-select>
557
- </el-form-item>
558
- </el-col>
559
- <el-col :span="8" style="width: calc(100% - 250px)">
560
- <el-form-item style="margin: 0">
561
- <el-col :span="21" style="margin-bottom: 5px">
562
- <el-input
563
- clearable
564
- v-model="item.equipmentCount"
565
- @input="inputChange(item.equipmentCount, 'equipmentCount', ide)"
566
- placeholder="请输入总台数"
567
- disabled>
568
- <span slot="suffix">台数</span>
569
- </el-input>
570
- </el-col>
571
- <el-col :span="3">
572
- <el-popconfirm title="确定要删除该设备信息吗?" @confirm="deldeleteRed(ide)">
573
- <el-button
574
- slot="reference"
575
- v-if="item.equipmentShow"
576
- class="deldeleteRed"
577
- type="text"
578
- :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
579
- 删除
580
- </el-button>
581
- </el-popconfirm>
582
- </el-col>
583
- <div
584
- style="margin-bottom: 5px"
585
- v-for="(tmp, id) in item.manufacturer"
586
- :key="id">
587
- <el-col :span="7" style="margin-bottom: 5px">
588
- <el-select
589
- filterable=""
590
- clearable
591
- @change="manufacturerChange(tmp.manufacturer, ide, id)"
592
- v-model="tmp.manufacturer"
593
- placeholder="请选择厂家"
594
- :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
595
- <el-option
596
- v-for="item in dict.equipment_manufactor"
597
- :key="item.label"
598
- :label="item.label"
599
- :value="item.label"
600
- :disabled="item.disabled" />
601
- </el-select>
602
- </el-col>
603
- <el-col :span="14" style="margin-bottom: 5px">
604
- <el-input
605
- clearable
606
- v-model="tmp.manufacturerCount"
607
- @input="inputChange(tmp.manufacturerCount, 'manufacturerCount', ide, id)"
608
- placeholder="请输入该厂家的台数"
609
- :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
610
- <span slot="suffix">台数</span>
611
- </el-input>
612
- </el-col>
613
- <el-col
614
- :span="3"
615
- style="margin-bottom: 5px"
616
- v-if="
617
- hospitalName == '新增机构' ||
618
- (hospitalName == '修改机构' && !checkPer(permission.device))
619
- ">
620
- <el-button
621
- @click="manufacturerAdd(ide, id)"
622
- style="padding: 4px"
623
- type="primary"
624
- icon="el-icon-plus"
625
- size="mini"
626
- circle></el-button>
627
- <el-button
628
- @click="manufacturerDel(ide, id)"
629
- v-if="item.manufacturer.length != 1"
630
- style="margin-left: 0; padding: 4px"
631
- type="danger"
632
- icon="el-icon-minus"
633
- size="mini"
634
- circle></el-button>
635
- </el-col>
636
- </div>
637
- </el-form-item>
638
- </el-col>
639
- </el-form-item>
640
- <el-button
641
- type="text"
642
- @click="equipmentAdd"
643
- v-if="
644
- hospitalName == '新增机构' ||
645
- (hospitalName == '修改机构' && !checkPer(permission.device))
646
- ">
647
- + 继续添加
648
- </el-button>
649
- </el-tab-pane>
650
-
651
- <el-tab-pane label="监测信息" name="monitorInfo">
652
- <el-row style="display: flex; flex-wrap: wrap">
653
- <el-col :span="24">
654
- <el-form-item label="是否开启监测:" prop="monitorStatus">
655
- <el-radio-group
656
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
657
- v-model="addHispotalForm.monitorStatus"
658
- @change="monitorChange">
659
- <el-radio label="1">是</el-radio>
660
- <el-radio label="0">否</el-radio>
661
- </el-radio-group>
662
- </el-form-item>
663
- </el-col>
664
- <el-col :span="12" v-show="addHispotalForm.monitorStatus == '1'">
665
- <div>
666
- <el-form-item label="看图监测:">
667
- <el-radio-group
668
- v-model="addHispotalForm.lookPicMonitor"
669
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
670
- <el-radio label="1">是</el-radio>
671
- <el-radio label="0">否</el-radio>
672
- </el-radio-group>
673
- <div class="inputNumber" v-show="addHispotalForm.lookPicMonitor == '1'">
674
- <span>抽取</span>
675
- <el-input-number
676
- v-model="addHispotalForm.lookPicHourTime"
677
- :precision="0"
678
- size="small"
679
- controls-position="right"
680
- :min="0"
681
- :max="999"
682
- :disabled="
683
- hospitalName == '修改机构' && checkPer(permission.monitor)
684
- "></el-input-number>
685
- <span>个小时内五例数据</span>
686
- </div>
687
- <div class="inputNumber" v-show="addHispotalForm.lookPicMonitor == '1'">
688
- <span>但不抽近</span>
689
- <el-input-number
690
- v-model="addHispotalForm.lookPicMinuteTime"
691
- :precision="0"
692
- size="small"
693
- controls-position="right"
694
- :min="1"
695
- :max="999"
696
- :disabled="
697
- hospitalName == '修改机构' && checkPer(permission.monitor)
698
- "></el-input-number>
699
- <span>分钟的数据</span>
700
- </div>
701
- <el-form-item
702
- label="是否开启按模式抽取数据:"
703
- label-width="100"
704
- v-show="addHispotalForm.lookPicMonitor == '1'">
705
- <el-radio-group
706
- v-model="addHispotalForm.isModality"
707
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
708
- <el-radio label="1">是</el-radio>
709
- <el-radio label="0">否</el-radio>
710
- </el-radio-group>
711
- </el-form-item>
712
- <el-form-item prop="modeExtractDataList">
713
- <el-checkbox-group
714
- v-if="addHispotalForm.isModality == '1'"
715
- v-model="addHispotalForm.modeExtractDataList">
716
- <el-checkbox
717
- v-for="item in dict.modality"
718
- :label="item.value"
719
- :key="item.id"
720
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
721
- >{{ item.label }}</el-checkbox
722
- >
723
- </el-checkbox-group>
724
- </el-form-item>
725
- </el-form-item>
726
- </div>
727
- </el-col>
728
- <el-col :span="12" v-show="addHispotalForm.monitorStatus == '1'">
729
- <el-form-item label="日报上传监测:">
730
- <el-radio-group
731
- v-model="addHispotalForm.dayDataMonitor"
732
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
733
- <el-radio label="1">是</el-radio>
734
- <el-radio label="0">否</el-radio>
735
- </el-radio-group>
736
- </el-form-item>
737
- <el-form-item label="归档数据质量监测:">
738
- <el-radio-group
739
- v-model="addHispotalForm.qualityDataMonitor"
740
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
741
- <el-radio label="1">是</el-radio>
742
- <el-radio label="0">否</el-radio>
743
- </el-radio-group>
744
- <div v-show="addHispotalForm.qualityDataMonitor == '1'">
745
- <div class="inputNumber">
746
- <span>抽取</span>
747
- <el-input-number
748
- v-model="addHispotalForm.qualityDataHourTime"
749
- :precision="0"
750
- controls-position="right"
751
- :min="1"
752
- :max="999"
753
- :disabled="
754
- hospitalName == '修改机构' && checkPer(permission.monitor)
755
- "></el-input-number>
756
- <span>个小时内10例数据</span>
757
- </div>
758
- <div style="margin-bottom: 10px">
759
- <el-select
760
- v-model="addHispotalForm.checkAcc"
761
- style="width: 70px"
762
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
763
- <el-option
764
- v-for="item in yesOrNo"
765
- :key="item.value"
766
- :label="item.label"
767
- :value="item.value">
768
- </el-option>
769
- </el-select>
770
- 校验检查项目编码
771
- </div>
772
- <div>
773
- <el-select
774
- v-model="addHispotalForm.checkAllId"
775
- style="width: 70px"
776
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
777
- <el-option
778
- v-for="item in yesOrNo"
779
- :key="item.value"
780
- :label="item.label"
781
- :value="item.value">
782
- </el-option>
783
- </el-select>
784
- 校验校验检查医嘱ID、申请单ID
785
- </div>
786
- </div>
787
- </el-form-item>
788
- </el-col>
789
- <el-col :span="12">
790
- <el-form-item label="漏图监测:" v-show="addHispotalForm.monitorStatus == '1'">
791
- <el-radio-group
792
- v-model="addHispotalForm.leakageMonitor"
793
- @change="forceUpdate"
794
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
795
- <el-radio label="1">是</el-radio>
796
- <el-radio label="0">否</el-radio>
797
- </el-radio-group>
798
- </el-form-item>
799
- </el-col>
800
- <el-col :span="24">
801
- <el-form-item
802
- label="看图异常监测:"
803
- v-show="addHispotalForm.monitorStatus == '1'">
804
- <el-radio-group
805
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
806
- @change="lookPicAbnormalMonitorChange(addHispotalForm.lookPicAbnormalMonitor)"
807
- v-model="addHispotalForm.lookPicAbnormalMonitor">
808
- <el-radio label="1">是</el-radio>
809
- <el-radio label="0">否</el-radio>
810
- </el-radio-group>
811
- </el-form-item>
812
- </el-col>
813
-
814
- <el-col :span="24">
815
- <el-form-item label="监测模式:" v-show="addHispotalForm.monitorStatus == '1'">
816
- <el-checkbox-group
817
- @change="lookPicMonitorModalityChange"
818
- :disabled="
819
- (hospitalName == '修改机构' && checkPer(permission.monitor)) ||
820
- addHispotalForm.lookPicAbnormalMonitor == '0'
821
- "
822
- :min="addHispotalForm.lookPicMonitorModality.indexOf('全部') == -1 ? 1 : 0"
823
- v-model="addHispotalForm.lookPicMonitorModality">
824
- <el-checkbox
825
- :disabled="
826
- item.value != '全部' &&
827
- addHispotalForm.lookPicMonitorModality.indexOf('全部') != -1
828
- "
829
- v-for="item in dict.pic_monitor_modality"
830
- :key="item.label"
831
- :label="item.label"
832
- :value="item.value" />
833
- </el-checkbox-group>
834
- </el-form-item>
835
- </el-col>
836
-
837
- <el-col :span="24" v-show="addHispotalForm.monitorStatus == '1'">
838
- <el-form-item label="客户端运行监测:">
839
- <el-radio-group
840
- v-model="addHispotalForm.iuWorkStationMonitor"
841
- :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
842
- <el-radio label="1">是</el-radio>
843
- <el-radio label="0">否</el-radio>
844
- </el-radio-group>
845
- <div
846
- class="inputNumber otherInputNumberStyle"
847
- v-show="addHispotalForm.iuWorkStationMonitor == '1'">
848
- <span>抽取</span>
849
- <el-input-number
850
- v-model="addHispotalForm.iuWorkStationHourTime"
851
- :precision="0"
852
- controls-position="right"
853
- :min="1"
854
- size="small"
855
- :max="999"
856
- :disabled="
857
- hospitalName == '修改机构' && checkPer(permission.monitor)
858
- "></el-input-number>
859
- <span>个小时内的数据</span>
860
- <span>监测历史提醒次数、调阅次数是否均大于0</span>
861
- </div>
862
- <div
863
- class="inputNumber otherInputNumberStyle"
864
- v-show="addHispotalForm.iuWorkStationMonitor == '1'">
865
- <span>抽取</span>
866
- <el-input-number
867
- v-model="addHispotalForm.iuWorkStationHourTimeOther"
868
- :precision="0"
869
- controls-position="right"
870
- :min="1"
871
- size="small"
872
- :max="999"
873
- :disabled="
874
- hospitalName == '修改机构' && checkPer(permission.monitor)
875
- "></el-input-number>
876
- <span>个小时内统计数据</span>
877
- <span>监测重复提醒次数是否大于0</span>
878
- </div>
879
- </el-form-item>
880
- </el-col>
881
- <el-col :span="24" v-show="addHispotalForm.monitorStatus == '1'">
882
- <el-form-item label="检查项目编码监测:">
883
- <el-form-item label="归档数据监测:">
884
- <el-radio-group
885
- v-model="addHispotalForm.examOssMonitor"
886
- :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
887
- <el-radio label="1">是</el-radio>
888
- <el-radio label="0">否</el-radio>
889
- </el-radio-group>
890
- </el-form-item>
891
- <el-form-item label="重复检查数据监测:">
892
- <el-radio-group
893
- v-model="addHispotalForm.examRepeatMonitor"
894
- :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
895
- <el-radio label="1">是</el-radio>
896
- <el-radio label="0">否</el-radio>
897
- </el-radio-group>
898
- </el-form-item>
899
- <el-form-item label="机构编码对照监测:">
900
- <el-radio-group
901
- v-model="addHispotalForm.examOrgMonitor"
902
- :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
903
- <el-radio label="1">是</el-radio>
904
- <el-radio label="0">否</el-radio>
905
- </el-radio-group>
906
- </el-form-item>
907
- </el-form-item>
908
- </el-col>
909
- </el-row>
910
- </el-tab-pane>
911
-
912
- <el-tab-pane label="专线信息" name="specialLine" class="basicInformation">
913
- <el-row style="display: flex; flex-wrap: wrap">
914
- <el-col :span="24">
915
- <div class="titleTip">专线信息</div>
916
- </el-col>
917
- <el-col :span="12">
918
- <el-form-item style="width: 100%" label-width="140px" label="专线IP">
919
- <el-input
920
- size="small"
921
- :disabled="hospitalName == '修改机构' && checkPer(permission.dedicated)"
922
- v-model="addHispotalForm.hospitalIp"
923
- placeholder="专线IP"></el-input>
924
- </el-form-item>
925
- </el-col>
926
- <el-col :span="12">
927
- <el-form-item label="带宽">
928
- <el-input
929
- label-width="140px"
930
- size="small"
931
- :disabled="hospitalName == '修改机构' && checkPer(permission.dedicated)"
932
- v-model="addHispotalForm.hospitalBandwidth"
933
- placeholder="带宽">
934
- <em slot="suffix">M</em></el-input
935
- >
936
- </el-form-item>
937
- </el-col>
938
- </el-row>
939
- </el-tab-pane>
940
- <el-tab-pane label="自助机信息" name="selfServiceInfo">
941
- <el-col :span="23">
942
- <el-form-item label="自助机总数量:">
943
- <el-input
944
- clearable
945
- v-model="addHispotalForm.machineCount"
946
- @input="inputMachineChange()"
947
- placeholder="自动累计自助机数量"
948
- disabled>
949
- </el-input>
950
- </el-form-item>
951
- </el-col>
952
- <el-col :span="23" style="padding: 0 !important">
953
- <el-col :span="9">
954
- <el-form-item label="服务专员:">
955
- <el-input
956
- type="textarea"
957
- autosize
958
- v-model="addHispotalForm.serverPerson"
959
- placeholder="请输入服务专员"
960
- :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
961
- </el-input>
962
- </el-form-item>
963
- </el-col>
964
- <el-col :span="6">
965
- <el-form-item label="驻场人员数量:" label-width="120px">
966
- <el-input
967
- clearable
968
- v-model.number="addHispotalForm.personnelNum"
969
- placeholder="请输入驻场人员数量"
970
- :step="1"
971
- :min="0"
972
- :max="999"
973
- :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)"
974
- @input="countChanges(addHispotalForm.personnelNum, 'personnelNum')">
975
- </el-input>
976
- </el-form-item>
977
- </el-col>
978
- <el-col :span="9">
979
- <el-form-item label="驻场人员归属:" label-width="120px">
980
- <el-input
981
- type="textarea"
982
- autosize
983
- v-model="addHispotalForm.personClass"
984
- placeholder="请输入驻场人员归属"
985
- :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
986
- </el-input>
987
- </el-form-item>
988
- </el-col>
989
- </el-col>
990
- <el-col :span="23">
991
- <el-form-item label="备注:">
992
- <el-input
993
- type="textarea"
994
- autosize
995
- v-model="addHispotalForm.remarks"
996
- placeholder="请输入对应的医院关系"
997
- :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
998
- </el-input>
999
- </el-form-item>
1000
- </el-col>
1001
-
1002
- <el-col :span="23">
1003
- <el-form-item label="自助机信息:">
1004
- <el-table :data="addHispotalForm.machineList">
1005
- <el-table-column label="硬件厂家" min-width="100px">
1006
- <template slot-scope="scope">
1007
- <el-form-item
1008
- style="margin-bottom: 0"
1009
- :prop="'machineList.' + scope.$index + '.factory'"
1010
- :rules="[
1011
- {
1012
- required: !!Number(scope.row.isuse),
1013
- message: '硬件厂家',
1014
- trigger: 'change',
1015
- },
1016
- ]">
1017
- <el-select
1018
- filterable=""
1019
- clearable
1020
- @change="hardwareManufacturerChange(scope.row)"
1021
- v-model="scope.row.factory"
1022
- :disabled="
1023
- hospitalName == '修改医院' && checkPer(permission.selfService)
1024
- "
1025
- placeholder="硬件厂家">
1026
- <el-option
1027
- v-for="item in dict.machine_factory"
1028
- :key="item.label"
1029
- :label="item.label"
1030
- :value="item.label"
1031
- :disabled="item.disabled" />
1032
- </el-select>
1033
- </el-form-item>
1034
- </template>
1035
- </el-table-column>
1036
- <el-table-column label="MAC地址" min-width="160px">
1037
- <template slot-scope="scope">
1038
- <el-form-item
1039
- style="margin-bottom: 0"
1040
- :prop="'machineList.' + scope.$index + '.ip'"
1041
- :rules="[
1042
- {
1043
- required: !!Number(scope.row.isuse),
1044
- message: '请输入MAC地址',
1045
- trigger: 'blur',
1046
- },
1047
- ]">
1048
- <el-input
1049
- clearable
1050
- v-model="scope.row.ip"
1051
- :disabled="
1052
- hospitalName == '修改医院' && checkPer(permission.selfService)
1053
- "
1054
- @input="inputIpChange()"
1055
- placeholder="请输入MAC地址">
1056
- </el-input>
1057
- </el-form-item>
1058
- </template>
1059
- </el-table-column>
1060
- <el-table-column label="自助机编码" min-width="90px">
1061
- <template slot-scope="scope">
1062
- <el-form-item
1063
- style="margin-bottom: 0"
1064
- :prop="'machineList.' + scope.$index + '.serialNumber'"
1065
- :rules="[
1066
- {
1067
- required: !!Number(scope.row.isuse),
1068
- message: '请输入自助机编码',
1069
- trigger: 'blur',
1070
- },
1071
- ]">
1072
- <el-input
1073
- v-model="scope.row.serialNumber"
1074
- :disabled="
1075
- hospitalName == '修改医院' && checkPer(permission.selfService)
1076
- "
1077
- placeholder="请输入自助机编码">
1078
- </el-input>
1079
- </el-form-item>
1080
- </template>
1081
- </el-table-column>
1082
- <el-table-column label="是否启用" min-width="120px">
1083
- <template slot-scope="scope">
1084
- <el-form-item
1085
- style="margin-bottom: 0"
1086
- :prop="'machineList.' + scope.$index + '.isuse'"
1087
- :rules="[
1088
- {
1089
- required: !!Number(scope.row.isuse),
1090
- message: '是否启用',
1091
- trigger: 'change',
1092
- },
1093
- ]">
1094
- <el-select
1095
- v-model="scope.row.isuse"
1096
- :disabled="
1097
- hospitalName == '修改医院' && checkPer(permission.selfService)
1098
- "
1099
- placeholder="是否启用">
1100
- <el-option
1101
- v-for="item in archiveFlagArr"
1102
- :key="item.value"
1103
- :label="item.label"
1104
- :value="item.value" />
1105
- </el-select>
1106
- </el-form-item>
1107
- </template>
1108
- </el-table-column>
1109
- <!-- hospitalName == '修改医院' && -->
1110
- <el-table-column
1111
- label="操作"
1112
- min-width="70px"
1113
- v-if="
1114
- hospitalName == '新增机构' ||
1115
- (hospitalName == '修改机构' && !checkPer(permission.selfService))
1116
- ">
1117
- <template slot-scope="scope">
1118
- <el-button
1119
- @click="hardwareManufacturerAdd(scope.row, scope.$index)"
1120
- style="padding: 4px"
1121
- type="primary"
1122
- icon="el-icon-plus"
1123
- size="mini"
1124
- circle>
1125
- </el-button>
1126
- <el-button
1127
- @click="hardwareManufacturerDel(scope.row, scope.$index)"
1128
- v-if="addHispotalForm.machineList.length != 1"
1129
- style="margin-left: 0; padding: 4px"
1130
- type="danger"
1131
- icon="el-icon-minus"
1132
- size="mini"
1133
- circle>
1134
- </el-button>
1135
- </template>
1136
- </el-table-column>
1137
- </el-table>
1138
- <!-- <el-col :span="24" style="font-weight:bold">备注信息:厂家可以重复选择,IP地址必填且不可重复</el-col> -->
1139
- </el-form-item>
1140
- </el-col>
1141
- </el-tab-pane>
1142
- </el-tabs>
1143
- </el-row>
1144
- </el-form>
1145
- <!-- -->
1146
- <span slot="footer" class="dialog-footer">
1147
- <el-button size="small" @click="closeDialog">取 消</el-button>
1148
- <!-- @@ v-if="showEdit || hospitalName == '新增机构'"-->
1149
- <el-button
1150
- size="small"
1151
- :loading="AddHisLoading"
1152
- type="primary"
1153
- :disabled="toDisabled()"
1154
- @click="addHispitalClick">
1155
- 确 定
1156
- </el-button>
1157
- </span>
1158
- </el-dialog>
1159
-
1160
- <el-dialog
1161
- title="秘钥信息"
1162
- top="5vh"
1163
- width="500px"
1164
- :visible.sync="SecretKeyVisible"
1165
- :close-on-click-modal="false"
1166
- @close="closeSecretKey">
1167
- <el-form :model="SecretKeyForm">
1168
- <el-form-item label="appId:">{{ SecretKeyForm.uid }}</el-form-item>
1169
- <el-form-item label="appSecret:">
1170
- {{ SecretKeyForm.securityKey }}
1171
- </el-form-item>
1172
- </el-form>
1173
- </el-dialog>
1174
-
1175
- <el-dialog
1176
- :title="currentDetail.hospitalName"
1177
- :visible.sync="cloudSetVisible"
1178
- @open="codeDialogOpen"
1179
- top="5vh"
1180
- width="70%">
1181
- <div>
1182
- <el-row v-if="warningShow">
1183
- <el-col :span="24">
1184
- <div class="warning">
1185
- <div>
1186
- <i class="el-icon-warning warning-icon"></i>
1187
- 提示:配置文件中的路径不可以使用 \ (反斜杠),必须使用 /(正斜杠)。
1188
- </div>
1189
- </div>
1190
- </el-col>
1191
- </el-row>
1192
- <el-tabs v-model="codeActiveName" @tab-click="handleCodeTabClick">
1193
- <el-tab-pane label="公共配置" name="first">
1194
- <div>
1195
- <codemirror
1196
- height="60vh"
1197
- ref="cm"
1198
- v-model="commonXmlcode"
1199
- :options="cmOptions"
1200
- @input="xmlCodeChange"></codemirror>
1201
- </div>
1202
- </el-tab-pane>
1203
- <el-tab-pane label="getway配置" name="second">
1204
- <div v-if="xmlShow">
1205
- <codemirror
1206
- style="height: 60vh"
1207
- ref="cm"
1208
- v-model="getWayXmlCode"
1209
- :options="cmOptions"
1210
- @input="xmlCodeChange"></codemirror>
1211
- </div>
1212
- </el-tab-pane>
1213
- </el-tabs>
1214
- </div>
1215
- <span slot="footer" class="dialog-footer">
1216
- <el-button @click="cloudSetVisible = false">取 消</el-button>
1217
- <el-button type="primary" @click="setXmlCodeFn">确 定</el-button>
1218
- </span>
1219
- </el-dialog>
1220
- </div>
1221
- </template>
1222
- <script>
1223
- import { mapGetters } from 'vuex';
1224
- import {
1225
- addHospital,
1226
- updateHospital,
1227
- removeHospital,
1228
- getHosSecurityKey,
1229
- getHospInfo,
1230
- hospitadlConfigUpdate,
1231
- checkHospitalCode,
1232
- } from '@/api/institutionSet/index';
1233
- import institutionMonitor from '@/api/institutionMonitor/index';
1234
- import pagination from '@crud/Pagination';
1235
-
1236
- import CRUD, { presenter, header, crud } from '@crud/crud';
1237
- import { downloadFile } from '@/utils/index';
1238
- import { download } from '@/api/data';
1239
- import { codemirror } from 'vue-codemirror';
1240
- import 'codemirror/theme/idea.css';
1241
- import 'codemirror/mode/sql/sql.js';
1242
- import 'codemirror/mode/xml/xml';
1243
- import 'codemirror/theme/monokai.css';
1244
- import store from '@/store';
1245
- import DateRangePicker from '@/components/DateRangePicker';
1246
-
1247
- export default {
1248
- name: 'institutionSet',
1249
- cruds() {
1250
- return CRUD({
1251
- title: '机构管理',
1252
- url: 'hospital/queryHospitalList',
1253
- sort: ['updateTime,desc'],
1254
- });
1255
- },
1256
- mixins: [presenter(), header(), crud()],
1257
- data() {
1258
- var validateHosId = (rule, value, callback) => {
1259
- if (value === '') {
1260
- callback(new Error('请输入组织机构代码'));
1261
- } else {
1262
- let data = {
1263
- hospitalId: value,
1264
- scenceId: this.currentDetail.scenceId,
1265
- };
1266
- checkHospitalCode(data).then(res => {
1267
- if (!res) {
1268
- callback(new Error('组织机构代码已存在'));
1269
- } else {
1270
- callback();
1271
- }
1272
- });
1273
- }
1274
- };
1275
-
1276
- return {
1277
- waterMarkProp: {
1278
- zIndex: 1,
1279
- devicePixelRatio: 2,
1280
- text: '',
1281
- showTime: true,
1282
- },
1283
- options: [],
1284
- // 机构地区存取数据
1285
- provinceList: [],
1286
- props: {
1287
- value: 'value',
1288
- children: 'cities',
1289
- label: 'label',
1290
- checkStrictly: true,
1291
- },
1292
- permission: {
1293
- editYunSet: ['datas:editYunSet'],
1294
- basic: ['edit:basic'],
1295
- device: ['edit:device'],
1296
- monitor: ['edit:monitor'],
1297
- dedicated: ['edit:dedicated'],
1298
- },
1299
- headerTable: [
1300
- { label: '机构名称', prop: 'hospitalName', width: '220px' },
1301
- { label: '机构ID', prop: 'scenceId', width: '120px' },
1302
- { label: '机构地区', prop: 'address', width: '160px' },
1303
- { label: '机构类别', prop: 'hospitalType', width: '120px' },
1304
- { label: '机构等级', prop: 'level', width: '120px' },
1305
- { label: '机构状态', prop: 'runningState', width: '100px' },
1306
- { label: '机构所有制', prop: 'hospOwnerType', width: '120px' },
1307
- { label: '机构IP', prop: 'hospitalIp', width: '120px' },
1308
- { label: '带宽', prop: 'hospitalBandwidth', width: '120px' },
1309
- { label: '是否可以联网', prop: 'isCanConnect', width: '120px' },
1310
- { label: '是否有设备', prop: 'equipmentStatus', width: '120px' },
1311
- { label: '是否已联网', prop: 'connectStatus', width: '120px' },
1312
- { label: '是否有云配置', prop: 'configStatus', width: '140px' },
1313
- // { label: "客户端是否能调阅", prop: "accessImages", width: "140px" },
1314
- { label: 'urlKey', prop: 'urlKey', width: '80px' },
1315
- { label: '更新时间', prop: 'updateTime', width: '160px' },
1316
- ],
1317
- omitData: '-',
1318
- hospitalName: '新增机构',
1319
- hospitalVisible: false,
1320
- addHispotalForm: {
1321
- hospitalName: '',
1322
- hospitalNameAlias: [],
1323
- hospitalId: '',
1324
- addressHos: '',
1325
- address: '',
1326
- hospitalType: '',
1327
- level: '',
1328
- rank: '',
1329
- runningState: '',
1330
- isCanConnect: '',
1331
- equipmentStatus: '',
1332
- connectStatus: '',
1333
- archiveFlag: '',
1334
- joinUpState: '',
1335
- viewType: '',
1336
- equipmentList: [],
1337
- monitorStatus: '0',
1338
- lookPicHourTime: 6,
1339
- lookPicMinuteTime: 60,
1340
- autoUploadType: '',
1341
- lookPicMonitor: '0', // 看图监测
1342
- dayDataMonitor: '0', // 日报上传监测
1343
- lookPicAbnormalMonitor: '0',
1344
- leakageMonitor: '0',
1345
- lookPicMonitorModality: [], // 监测模式
1346
- qualityDataMonitor: '0', // 归档数据质量监测
1347
- qualityDataHourTime: 168, // 归档数据质量检测-时间
1348
- checkAcc: '0', // 校验检查项目编码
1349
- checkAllId: '0', // 校验检查医嘱ID、申请单ID
1350
- iuWorkStationMonitor: '0', // 客户端运行监测
1351
- iuWorkStationHourTime: 24, // 客户端运行监测-时间
1352
- iuWorkStationHourTimeOther: 168, // 客户端运行监测-时间 重复提醒
1353
- hospitalIp: '',
1354
- hospitalBandwidth: '',
1355
- isModality: '0',
1356
- modeExtractDataList: [],
1357
- machineCount: 0,
1358
- machineList: [{ factory: '', ip: '', serialNumber: '', isuse: '' }], //自助机信息
1359
- examOssMonitor: '0', // 归档数据监测
1360
- examRepeatMonitor: '0', // 重复检查数据监测
1361
- examOrgMonitor: '0', // 机构编码对照监测
1362
- },
1363
- AddHisLoading: false,
1364
- hospitalNameAliasArr: [{ value: '' }],
1365
- AutomaticallyUpload: [
1366
- { value: '1', label: '文字' },
1367
- { value: '2', label: '文字+图像' },
1368
- { value: '3', label: '文字但标记有图' },
1369
- ],
1370
- yesOrNo: [
1371
- { value: '0', label: '否' },
1372
- { value: '1', label: '是' },
1373
- ],
1374
- rules: {
1375
- hospitalName: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
1376
- hospitalId: [{ required: true, validator: validateHosId, trigger: 'blur' }],
1377
- addressHos: [{ required: true, message: '请选择机构地区', trigger: 'change' }],
1378
- hospitalType: [{ required: true, message: '请选择机构类别', trigger: 'change' }],
1379
- level: [
1380
- {
1381
- required: true,
1382
- message: '请选择机构等级',
1383
- trigger: 'change',
1384
- },
1385
- ],
1386
- runningState: [{ required: true, message: '请选择机构状态', trigger: 'change' }],
1387
- isCanConnect: [{ required: true, message: '请选择联网状态', trigger: 'change' }],
1388
- equipmentStatus: [{ required: true, message: '请选择是否有设备', trigger: 'change' }],
1389
- connectStatus: [
1390
- { required: true, message: '请选择是否已联网', trigger: 'change' },
1391
- { required: true, message: '请选择是否已接入', trigger: 'change' },
1392
- ],
1393
- archiveFlag: [{ required: true, message: '请选择是否归档', trigger: 'change' }],
1394
- joinUpState: [
1395
- {
1396
- required: true,
1397
- message: '请选择接入智联网状态',
1398
- trigger: 'change',
1399
- },
1400
- ],
1401
- viewType: [{ required: true, message: '请选择图像浏览方式', trigger: 'change' }],
1402
- hospOwnerType: [{ required: true, message: '请选择机构所有制', trigger: 'change' }],
1403
- monitorStatus: [
1404
- {
1405
- required: true,
1406
- message: '请选择是否开启监测',
1407
- trigger: ['blur', 'change'],
1408
- },
1409
- ],
1410
- },
1411
- archiveFlagArr: [
1412
- { value: '0', label: '否' },
1413
- { value: '1', label: '是' },
1414
- ],
1415
- // 秘钥
1416
- SecretKeyVisible: false,
1417
- SecretKeyForm: {
1418
- uid: '',
1419
- securityKey: '',
1420
- publicKey: '',
1421
- privateKey: '',
1422
- },
1423
- showMiyao: false,
1424
- showDownLoad: false,
1425
- showEdit: false,
1426
- activeName: 'basicInformation',
1427
- urlKeyList: [],
1428
- hosptilTeams: [],
1429
- downloadLoading: false,
1430
- cloudSetVisible: false,
1431
- currentDetail: {},
1432
- code: 'select a from table1 where b = 1',
1433
- cmOptions: {
1434
- // 语言及语法模式
1435
- mode: 'application/xml',
1436
- // 主题
1437
- theme: 'monokai',
1438
- // 显示函数
1439
- line: true,
1440
- lineNumbers: true,
1441
- // 软换行
1442
- lineWrapping: true,
1443
- // tab宽度
1444
- tabSize: 4,
1445
- },
1446
- codeActiveName: 'first',
1447
- commonXmlcode: '',
1448
- getWayXmlCode: '',
1449
- xmlShow: false,
1450
- currentXmlDetail: {},
1451
- warningShow: true,
1452
- isRequire: true,
1453
- };
1454
- },
1455
- computed: {
1456
- ...mapGetters(['user', 'roles']),
1457
- },
1458
- created() {
1459
- // 加载机构地区
1460
- this.getPosition(null, () => {});
1461
- this.getUrlKeyList();
1462
- this.getCommissionList();
1463
- },
1464
- mounted() {
1465
- this.$nextTick(() => {
1466
- this.roles.some(ele => {
1467
- if (ele == 'datas:miyao') {
1468
- this.showMiyao = true;
1469
- return;
1470
- }
1471
- if (ele == 'datas:update') {
1472
- this.showEdit = true;
1473
- return;
1474
- }
1475
- if (ele == 'datas:download') {
1476
- this.showDownLoad = true;
1477
- return;
1478
- }
1479
- this.waterMarkProp.text = this.user.name;
1480
- });
1481
- });
1482
- },
1483
- methods: {
1484
- lookPicAbnormalMonitorChange(value) {
1485
- if (this.addHispotalForm.lookPicAbnormalMonitor == '1') {
1486
- if (
1487
- this.addHispotalForm.lookPicMonitorModality &&
1488
- this.addHispotalForm.lookPicMonitorModality.length == 0
1489
- ) {
1490
- this.addHispotalForm.lookPicMonitorModality = ['全部'];
1491
- }
1492
- }
1493
- this.$forceUpdate();
1494
- },
1495
- lookPicMonitorModalityChange(value) {
1496
- this.$forceUpdate();
1497
- if (value && value.length == 0) {
1498
- this.addHispotalForm.lookPicMonitorModality = [];
1499
- this.dict.pic_monitor_modality.forEach(tmp => {
1500
- if (tmp.value.indexOf('全部') == -1)
1501
- this.addHispotalForm.lookPicMonitorModality.push(tmp.label);
1502
- });
1503
- } else {
1504
- if (value && value.indexOf('全部') != -1) {
1505
- this.addHispotalForm.lookPicMonitorModality = ['全部'];
1506
- }
1507
- }
1508
- },
1509
- toDisabled() {
1510
- if (this.hospitalName == '新增机构') {
1511
- return false;
1512
- } else {
1513
- if (this.activeName == 'basicInformation') return this.checkPer(this.permission.basic);
1514
- if (this.activeName == 'equipmentInformation') return this.checkPer(this.permission.device);
1515
- if (this.activeName == 'monitorInfo') return this.checkPer(this.permission.monitor);
1516
- if (this.activeName == 'specialLine') return this.checkPer(this.permission.dedicated);
1517
- }
1518
- return false;
1519
- },
1520
- getCommissionList() {
1521
- institutionMonitor.getCommissionList().then(res => {
1522
- this.hosptilTeams = this.menuFunc(res.content);
1523
- });
1524
- },
1525
- //关闭提示
1526
- closeWarning() {
1527
- this.warningShow = false;
1528
- },
1529
- addRules() {
1530
- // 定义规则
1531
- const newRules = [{ required: true, trigger: 'change', message: '请选择自动上传方式' }];
1532
- // 给rules对象添加规则
1533
- this.rules = { ...this.rules, autoUploadType: newRules };
1534
- },
1535
-
1536
- removeRules() {
1537
- this.$nextTick(() => {
1538
- if (this.$refs.addHispotalForm) {
1539
- this.$refs.addHispotalForm.clearValidate(['autoUploadType']);
1540
- }
1541
- // 清除指定校验规则
1542
- // 这行必须
1543
- this.rules = { ...this.rules, autoUploadType: [] };
1544
- });
1545
- },
1546
- blur() {
1547
- this.addRules();
1548
- },
1549
- //xml
1550
- codeDialogOpen() {
1551
- this.codeActiveName = 'first';
1552
- let data = {
1553
- hospitalId: this.currentDetail.scenceId,
1554
- };
1555
- getHospInfo(data).then(res => {
1556
- const { commonConfig, config } = res.content[0] || {};
1557
- this.commonXmlcode = commonConfig;
1558
- this.getWayXmlCode = config;
1559
- this.currentXmlDetail = res.content[0] || {};
1560
- });
1561
- },
1562
- setXmlCodeFn() {
1563
- const { hospitalId, scenceId, updateUser, createTime, updateTime } = this.currentXmlDetail;
1564
- let data = {
1565
- hospitalId,
1566
- updateUser,
1567
- createTime,
1568
- updateTime,
1569
- };
1570
- if (this.codeActiveName == 'first') {
1571
- data.commonConfig = this.commonXmlcode;
1572
- }
1573
- if (this.codeActiveName == 'second') {
1574
- data.config = this.getWayXmlCode;
1575
- }
1576
- // console.log(data, "data");
1577
- hospitadlConfigUpdate(data)
1578
- .then(res => {
1579
- this.$message.success('修改成功!');
1580
- this.cloudSetVisible = false;
1581
- })
1582
- .catch(err => {
1583
- console.log(err);
1584
- this.$message.error(err.message);
1585
- });
1586
- },
1587
- handleCodeTabClick(tab, event) {
1588
- // console.log(this.codeActiveName, "config");
1589
- this.xmlShow = false;
1590
- setTimeout(() => {
1591
- this.xmlShow = true;
1592
- }, 500);
1593
- },
1594
- // 递归修改删除空值
1595
- menuFunc(childrenMap) {
1596
- return childrenMap.map(item => {
1597
- if (item.children && item.children.length) {
1598
- this.menuFunc(item.children);
1599
- } else {
1600
- delete item.children;
1601
- }
1602
- return item;
1603
- });
1604
- },
1605
- download() {
1606
- if (this.crud.data.length != 0) {
1607
- this.downloadLoading = true;
1608
- download('hospital/downloadHospital', this.query)
1609
- .then(result => {
1610
- this.downloadLoading = false;
1611
- })
1612
- .catch(e => {
1613
- downloadFile(e, '机构详情', 'xlsx');
1614
- this.downloadLoading = false;
1615
- });
1616
- } else {
1617
- this.$message.error('没有相关详情数据, 无法导出');
1618
- }
1619
- },
1620
- // urlKey
1621
- getUrlKeyList() {
1622
- institutionMonitor.getUrlKeyList().then(res => {
1623
- this.urlKeyList = res.content;
1624
- });
1625
- },
1626
- forceUpdate() {
1627
- this.$forceUpdate(); // 强制刷新
1628
- },
1629
- // 重置
1630
- resetQueryClick() {
1631
- Object.keys(this.query).map(key => {
1632
- this.query[key] = '';
1633
- });
1634
- // this.crud.toQuery();
1635
- this.crud.resetQuery();
1636
- },
1637
- // 一级二级改变的时候调取下一级数据
1638
- handleItemChange(val) {
1639
- this.getPosition(val);
1640
- },
1641
- provinceChange(event) {
1642
- const checkedNode = this.$refs['cascaderArr'].getCheckedNodes();
1643
- let str = '';
1644
- checkedNode[0].pathLabels.forEach(ele => {
1645
- str += ele;
1646
- });
1647
- this.addHispotalForm.address = str;
1648
- },
1649
- // 地区联动获取数据
1650
- getPosition(val, cb) {
1651
- let vm = this; //查询省市县
1652
- let params = { parent: 1 };
1653
- if (!val) {
1654
- //初始化加载 获取所有省份数据
1655
- params = { parent: 1 };
1656
- } else if (val.length === 1) {
1657
- //加载二级 获取市级数据
1658
- params = { parent: val[0] };
1659
- } else {
1660
- //加载3级 获取县级数据
1661
- params = { parent: val[1] };
1662
- }
1663
- institutionMonitor
1664
- .queryNation(params)
1665
- .then(res => {
1666
- if (!val) {
1667
- //初始化加载 查询省份数据
1668
- vm.provinceList = res.content.map(e => {
1669
- return {
1670
- value: e.saleid,
1671
- label: e.province,
1672
- cities: [],
1673
- };
1674
- });
1675
- } else if (val.length === 1) {
1676
- //加载二级 查询该省下市级数据
1677
- vm.provinceList.map(item => {
1678
- if (item.value === val[0]) {
1679
- item.cities = res.content.map(e => {
1680
- return {
1681
- value: e.saleid,
1682
- label: e.city || e.county,
1683
- cities: [],
1684
- };
1685
- });
1686
- }
1687
- });
1688
- } else {
1689
- //加载3级 查询该省市下县级数据
1690
- vm.provinceList.map(item => {
1691
- if (item.value === val[0]) {
1692
- item.cities.map(value => {
1693
- if (value.value === val[1]) {
1694
- value.cities = res.content.map(e => {
1695
- return { value: e.saleid, label: e.county };
1696
- });
1697
- }
1698
- });
1699
- }
1700
- });
1701
- }
1702
- cb && cb(res);
1703
- })
1704
- .catch(err => {
1705
- console.log(err);
1706
- });
1707
- },
1708
- // 返回机构类别对应的名称
1709
- hosCategory(category) {
1710
- return this.dict.label.ins_category[category];
1711
- },
1712
- // 返回机构等级(级)对应的名称
1713
- hosRank(rank) {
1714
- return this.dict.label.agency_hos_rank[rank];
1715
- },
1716
- // 机构状态
1717
- hosState(state) {
1718
- return this.dict.label.running_status[state];
1719
- },
1720
- // 是否可以联网
1721
- hosCanConnect(state) {
1722
- return this.dict.label.can_connect[state];
1723
- },
1724
- // 是否有设备
1725
- hosEquipmentStatus(state) {
1726
- return this.dict.label.equipment_status[state];
1727
- },
1728
- // 是否已联网
1729
- hosConnectStatus(state) {
1730
- return this.dict.label.connect_status[state];
1731
- },
1732
- // 机构所有制
1733
- hosHospOwnerType(state) {
1734
- return this.dict.label.hosp_owner_type[state];
1735
- },
1736
- // 是否云配置
1737
- configStatus(state) {
1738
- return this.dict.label.config_status[state];
1739
- },
1740
- // 新增机构
1741
- addQueryHospitailClick() {
1742
- this.currentDetail = {};
1743
- this.hospitalName = '新增机构';
1744
- this.activeName = 'basicInformation';
1745
- let equipmentList = [];
1746
- // console.log(this.dict.equipment_default_name);
1747
- this.dict.equipment_default_name.forEach(tmp => {
1748
- let data = {
1749
- equipmentCount: '',
1750
- equipmentCode: tmp.value,
1751
- equipmentName: tmp.label,
1752
- equipmentShow: false,
1753
- manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
1754
- };
1755
- equipmentList.push(data);
1756
- });
1757
- this.addHispotalForm.equipmentList = equipmentList;
1758
- this.hospitalVisible = true;
1759
- this.addHispotalForm.monitorStatus = '0';
1760
- this.addHispotalForm.lookPicHourTime = 6;
1761
- this.addHispotalForm.lookPicMinuteTime = 60;
1762
- this.addHispotalForm.modeExtractDataList = this.dict.modality.map(item => item.value);
1763
- },
1764
- //云配置弹窗
1765
- cloudSet(row) {
1766
- // console.log(row);
1767
- sessionStorage.setItem('cloudSet', JSON.stringify(row));
1768
- store.dispatch('setcloudset', row);
1769
- this.$router.push({
1770
- name: 'cloudSet',
1771
- });
1772
- },
1773
- //xml编辑器
1774
- //xml编辑器
1775
- xmlCodeChange(content) {
1776
- this.$nextTick(() => {
1777
- console.log('code:' + this.code);
1778
- console.log('content:' + content);
1779
- });
1780
- },
1781
- toAddRecord(row) {
1782
- this.currentDetail = row;
1783
- institutionMonitor.getHospInfo({ scenceId: row.scenceId }).then(res => {
1784
- this.dict.equipment_name.forEach(tmp => (tmp.disabled = false));
1785
- this.activeName = 'basicInformation';
1786
- this.hospitalName = '修改机构';
1787
- let addressHos = [row.province];
1788
- this.getPosition([row.province]);
1789
- // 机构地区回显
1790
- if (row.city != '') {
1791
- setTimeout(() => {
1792
- this.getPosition([row.province, row.city]);
1793
- }, 500);
1794
- addressHos.push(row.city);
1795
- }
1796
- if (row.district != '') {
1797
- addressHos.push(row.district);
1798
- }
1799
- this.hospitalNameAliasArr = [];
1800
- // 机构别称
1801
- if (res.hospitalNameAlias && res.hospitalNameAlias.length != 0) {
1802
- let arr = res.hospitalNameAlias.split(',');
1803
- arr.forEach(ele => {
1804
- this.hospitalNameAliasArr.push({ value: ele });
1805
- });
1806
- } else {
1807
- this.hospitalNameAliasArr.push({ value: '' });
1808
- }
1809
- let equipmentList = [];
1810
- if (res.equipmentList && res.equipmentList.length > 0) {
1811
- equipmentList = res.equipmentList;
1812
- let dict_name = [...this.dict.equipment_default_name, ...this.dict.equipment_name];
1813
- // console.log(dict_name);
1814
- dict_name.forEach(tmp => {
1815
- // console.log(tmp.label);
1816
- tmp.disabled = false;
1817
- equipmentList.forEach(res => {
1818
- tmp.equipmentShow = false;
1819
- if (tmp.label == res.equipmentName) {
1820
- res.equipmentCode = tmp.value;
1821
- tmp.disabled = true;
1822
- }
1823
- });
1824
- });
1825
- } else {
1826
- this.dict.equipment_default_name.forEach(tmp => {
1827
- let data = {
1828
- equipmentCount: '',
1829
- equipmentName: tmp.label,
1830
- equipmentShow: false,
1831
- equipmentCode: tmp.value,
1832
- manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
1833
- };
1834
- equipmentList.push(data);
1835
- });
1836
- }
1837
- // console.log(equipmentList, "eeeee");
1838
- res.equipmentList.forEach((tmp, index) => {
1839
- // if (index > 2) {
1840
- // tmp.equipmentShow = true;
1841
- // }
1842
- if (tmp.manufacturer && tmp.manufacturer.length == 0) {
1843
- tmp.manufacturer.push({ manufacturer: '', manufacturerCount: '' });
1844
- }
1845
- // tmp.manufacturer = tmp.manufacturer.filter(x => x.manufacturer)
1846
- });
1847
- if (res.lookPicMonitor == 1) {
1848
- this.addRules();
1849
- } else {
1850
- this.removeRules();
1851
- }
1852
- res.lookPicMonitorModality = res.lookPicMonitorModality
1853
- ? res.lookPicMonitorModality.split(',')
1854
- : [];
1855
- console.log(res.lookPicMonitorModality, '74563----');
1856
-
1857
- // 设备信息
1858
- this.addHispotalForm = {
1859
- ...row,
1860
- ...res,
1861
- addressHos: addressHos,
1862
- hospitalType: row.hospitalType != undefined ? row.hospitalType + '' : '',
1863
- level: row.level != undefined ? row.level + '' : '',
1864
- rank: row.rank != undefined ? row.rank + '' : '',
1865
- runningState: row.runningState != undefined ? row.runningState + '' : '',
1866
- equipmentList: equipmentList,
1867
- iuWorkStationHourTimeOther:
1868
- res.iuWorkStationHourTimeOther == 0 ? 168 : res.iuWorkStationHourTimeOther,
1869
- modeExtractDataList:
1870
- res.strModality && res.strModality.length > 0 ? res.strModality.split(',') : [],
1871
- };
1872
- // 自助机信息
1873
- if (!res.machineList.length) {
1874
- this.addHispotalForm.machineList = [{ factory: '', ip: '', serialNumber: '', isuse: '' }];
1875
- }
1876
- this.addHispotalForm.machineCount = res.machineList.length;
1877
- setTimeout(() => {
1878
- this.hospitalVisible = true;
1879
- // 监测信息如果看图监测设置开启,监测模式为空,自动勾选全部
1880
- if (
1881
- this.addHispotalForm.lookPicMonitorModality.length == 0 &&
1882
- this.addHispotalForm.lookPicMonitorModality &&
1883
- this.addHispotalForm.lookPicAbnormalMonitor == 1
1884
- ) {
1885
- this.lookPicAbnormalMonitorChange(res.lookPicAbnormalMonitor);
1886
- }
1887
- this.$nextTick(() => {
1888
- this.$refs['addHispotalForm'].clearValidate();
1889
- });
1890
- }, 200);
1891
- });
1892
- },
1893
- // 是否开启监测
1894
- monitorChange(e) {
1895
- // e == 1 开启
1896
- if (e == 1) {
1897
- this.addHispotalForm.lookPicMonitor = '1'; // 看图监测
1898
- this.addHispotalForm.dayDataMonitor = '1'; // 日报上传监测
1899
- this.addHispotalForm.lookPicAbnormalMonitor = '0';
1900
- this.addHispotalForm.lookPicMonitorModality = [];
1901
- this.addHispotalForm.leakageMonitor = '0';
1902
- this.addHispotalForm.examOssMonitor = '0'; // 检查项目编码-归档
1903
- this.addHispotalForm.examRepeatMonitor = '0'; // 检查项目编码-重复
1904
- this.addHispotalForm.examOrgMonitor = '0'; // 检查项目编码-对照
1905
- this.addRules();
1906
- } else {
1907
- // 否
1908
- this.addHispotalForm.lookPicMonitor = '0'; // 看图监测
1909
- this.addHispotalForm.lookPicAbnormalMonitor = '0';
1910
- this.addHispotalForm.lookPicMonitorModality = [];
1911
- this.addHispotalForm.leakageMonitor = '0';
1912
- this.addHispotalForm.iuWorkStationMonitor = '0'; // 客户端运行监测
1913
- this.addHispotalForm.dayDataMonitor = '0'; // 日报上传监测
1914
- this.addHispotalForm.qualityDataMonitor = '0'; // 归档数据质量监测
1915
- this.addHispotalForm.examOssMonitor = '0'; // 检查项目编码-归档
1916
- this.addHispotalForm.examRepeatMonitor = '0'; // 检查项目编码-重复
1917
- this.addHispotalForm.examOrgMonitor = '0'; // 检查项目编码-对照
1918
- this.removeRules();
1919
- }
1920
- },
1921
- // 删除
1922
- monitorPath(row) {
1923
- // console.log("1", row);
1924
- this.$confirm('确定要删除该机构吗?', '提示', {
1925
- confirmButtonText: '确定',
1926
- cancelButtonText: '取消',
1927
- type: 'warning',
1928
- })
1929
- .then(() => {
1930
- let params = {
1931
- scenceId: row.scenceId,
1932
- };
1933
- // console.log("11", params);
1934
- removeHospital(params)
1935
- .then(res => {
1936
- this.$message.success('删除成功');
1937
- this.crud.refresh();
1938
- })
1939
- .catch(err => {});
1940
- })
1941
- .catch(() => {});
1942
- },
1943
- // 秘钥
1944
- SecretKey(row) {
1945
- getHosSecurityKey({
1946
- hospitalId: row.scenceId,
1947
- hospitalName: row.hospitalName,
1948
- })
1949
- .then(res => {
1950
- this.SecretKeyVisible = true;
1951
- this.SecretKeyForm = {
1952
- ...res,
1953
- };
1954
- })
1955
- .catch(err => {});
1956
- },
1957
- // 秘钥
1958
- SecretKey1(row) {
1959
- getHospitalSm2Key({
1960
- hospitalId: row.scenceId,
1961
- hospitalName: row.hospitalName,
1962
- })
1963
- .then(res => {
1964
- this.SecretKeyVisible1 = true;
1965
- this.SecretKeyForm = {
1966
- ...res,
1967
- };
1968
- })
1969
- .catch(err => {});
1970
- },
1971
- closeSecretKey() {
1972
- this.SecretKeyForm = {
1973
- uid: '',
1974
- securityKey: '',
1975
- publicKey: '',
1976
- privateKey: '',
1977
- };
1978
- this.SecretKeyVisible = false;
1979
- },
1980
- // 获取数据前设置好接口地址
1981
- [CRUD.HOOK.beforeRefresh](crud) {
1982
- if (crud.query.address && crud.query.address.length != 0) {
1983
- if (crud.query.address[0]) {
1984
- crud.query.province = crud.query.address[0];
1985
- }
1986
- if (crud.query.address[1]) {
1987
- crud.query.city = crud.query.address[1];
1988
- } else {
1989
- crud.query.city = '';
1990
- }
1991
- if (crud.query.address[2]) {
1992
- crud.query.district = crud.query.address[2];
1993
- } else {
1994
- crud.query.district = '';
1995
- }
1996
- } else {
1997
- crud.query.province = '';
1998
- crud.query.city = '';
1999
- crud.query.district = '';
2000
- }
2001
- },
2002
- closeDialog() {
2003
- this.addHispotalForm = {
2004
- hospitalName: '',
2005
- hospitalNameAlias: [],
2006
- hospitalId: '',
2007
- addressHos: '',
2008
- hospitalType: '',
2009
- level: '',
2010
- rank: '',
2011
- runningState: '',
2012
- isCanConnect: '',
2013
- equipmentStatus: '',
2014
- connectStatus: '',
2015
- archiveFlag: '',
2016
- joinUpState: '',
2017
- viewType: '',
2018
- equipmentList: [],
2019
- monitorStatus: 0,
2020
- lookPicMonitor: '0', // 看图监测
2021
- dayDataMonitor: '0', // 日报上传监测
2022
- qualityDataMonitor: '0', // 归档数据质量监测
2023
- qualityDataHourTime: 168, // 归档数据质量检测-时间
2024
- checkAcc: '0', // 校验检查项目编码
2025
- checkAllId: '0', // 校验检查医嘱ID、申请单ID
2026
- iuWorkStationMonitor: '0', // 皖医互通运行监测
2027
- iuWorkStationHourTime: 24, // 客户端运行监测-时间
2028
- iuWorkStationHourTimeOther: 168, // 客户端运行监测-时间 重复提醒
2029
- // machineInfoHourTime: 6, // 自助机信息监测-时间
2030
- isModality: '0',
2031
- machineCount: 0,
2032
- modeExtractDataList: [],
2033
- lookPicMonitorModality: [], // 监测信息-监测模式
2034
- machineList: [{ factory: '', ip: '', serialNumber: '', isuse: '' }], //自助机信息
2035
- };
2036
- this.$refs['addHispotalForm'].resetFields();
2037
- this.hospitalNameAliasArr = [{ value: '' }];
2038
- this.hospitalVisible = false;
2039
- this.isRequire = true;
2040
- },
2041
- addHispitalClick() {
2042
- console.log('this.addHispotalForm', this.addHispotalForm);
2043
- this.$nextTick(() => {
2044
- this.$refs['addHispotalForm'].validate((valid, obj) => {
2045
- if (valid) {
2046
- let isNext = true;
2047
- // 机构别称
2048
- if (this.hospitalNameAliasArr.length != 1) {
2049
- let nameArr = [];
2050
- this.hospitalNameAliasArr.some((ele, index) => {
2051
- if (ele.value == '') {
2052
- setTimeout(() => {
2053
- this.$message.warning(`机构别称第 ${index + 1} 列为空`);
2054
- }, 20);
2055
- isNext = false;
2056
- return true;
2057
- }
2058
- if (isNext) {
2059
- if (nameArr.includes(ele.value)) {
2060
- setTimeout(() => {
2061
- this.$message.warning(`机构别称有重复项`);
2062
- }, 20);
2063
- isNext = false;
2064
- return true;
2065
- }
2066
- nameArr.push(ele.value);
2067
- }
2068
- });
2069
- }
2070
- let hospitalNameAlias = []; // 机构别称数组
2071
- this.hospitalNameAliasArr.forEach(ele => {
2072
- hospitalNameAlias.push(ele.value);
2073
- });
2074
-
2075
- this.addHispotalForm.equipmentList = this.addHispotalForm.equipmentList.filter(
2076
- tmp => tmp.equipmentName
2077
- );
2078
- this.addHispotalForm.equipmentList.forEach(tmp => {
2079
- tmp.manufacturer = tmp.manufacturer.filter(x => x.manufacturer);
2080
- });
2081
- // 监测信息
2082
- if (
2083
- this.addHispotalForm.monitorStatus == '1' &&
2084
- this.addHispotalForm.lookPicMonitor == '0'
2085
- ) {
2086
- this.activeName = 'monitorInfo';
2087
- return this.$message.error('请选择看图监测');
2088
- }
2089
-
2090
- let params = {
2091
- ...this.addHispotalForm,
2092
- hospitalNameAlias: hospitalNameAlias.join(),
2093
- province: this.addHispotalForm.addressHos[0],
2094
- city:
2095
- this.addHispotalForm.addressHos[1] != undefined
2096
- ? this.addHispotalForm.addressHos[1]
2097
- : '',
2098
- district:
2099
- this.addHispotalForm.addressHos[2] != undefined
2100
- ? this.addHispotalForm.addressHos[2]
2101
- : '',
2102
- strModality: this.addHispotalForm.modeExtractDataList.join(','),
2103
- };
2104
- //自助机信息过滤没有填的数据
2105
- params.machineList = params.machineList.filter(
2106
- item => item.factory || item.ip || item.serialNumber || item.isuse
2107
- );
2108
- let arr = [undefined, '', null];
2109
- // 是否监测是否开启
2110
- if (params.monitorStatus == '1') {
2111
- if (arr.includes(params.lookPicHourTime) || arr.includes(params.lookPicMinuteTime)) {
2112
- this.activeName = 'monitorInfo';
2113
- return this.$message.warning('请填写监测时间');
2114
- }
2115
- } else {
2116
- params.lookPicMonitor = '0'; // 看图监测
2117
- }
2118
- // 客户端运行监测
2119
- if (params.iuWorkStationMonitor == '1') {
2120
- if (arr.includes(params.iuWorkStationHourTime)) {
2121
- this.activeName = 'monitorInfo';
2122
- return this.$message.warning('请填写监测时间');
2123
- }
2124
- if (arr.includes(params.iuWorkStationHourTimeOther)) {
2125
- this.activeName = 'monitorInfo';
2126
- return this.$message.warning('请填写监测时间');
2127
- }
2128
- }
2129
- // 归档数据质量监测
2130
- if (params.qualityDataMonitor == '1') {
2131
- if (arr.includes(params.qualityDataHourTime)) {
2132
- this.activeName = 'monitorInfo';
2133
- return this.$message.warning('请填写监测时间');
2134
- }
2135
- } else {
2136
- params.checkAcc = '0'; // 校验检查项目编码
2137
- params.checkAllId = '0'; // 校验检查医嘱ID、申请单ID
2138
- }
2139
- // 监测信息 - 监测模式
2140
- params.lookPicMonitorModality =
2141
- params.lookPicAbnormalMonitor == '1' ? params.lookPicMonitorModality.join(',') : '';
2142
- delete params.gatewayStatus;
2143
- delete params.lookPicStatus;
2144
- delete params.modeExtractDataList;
2145
- if (isNext) {
2146
- this.AddHisLoading = true;
2147
- if (this.hospitalName == '新增机构') {
2148
- addHospital(params)
2149
- .then(res => {
2150
- this.$message.success('新增成功');
2151
- this.AddHisLoading = false;
2152
- this.crud.refresh();
2153
- this.closeDialog();
2154
- })
2155
- .catch(err => {
2156
- this.AddHisLoading = false;
2157
- });
2158
- } else {
2159
- updateHospital(params)
2160
- .then(res => {
2161
- this.$message.success('修改成功');
2162
- this.AddHisLoading = false;
2163
- this.crud.refresh();
2164
- this.closeDialog();
2165
- })
2166
- .catch(err => {
2167
- this.AddHisLoading = false;
2168
- });
2169
- }
2170
- }
2171
- } else {
2172
- this.activeName = 'basicInformation';
2173
- this.$message.warning('请先将基本信息填写完成');
2174
- return false;
2175
- }
2176
- });
2177
- });
2178
- },
2179
- // 添加机构别称
2180
- addOtherName() {
2181
- let isNext = true;
2182
- this.hospitalNameAliasArr.some(ele => {
2183
- if (ele.value == '') {
2184
- this.$message.warning('存在机构别称为空');
2185
- isNext = false;
2186
- return true;
2187
- }
2188
- });
2189
- if (isNext) {
2190
- this.hospitalNameAliasArr.push({
2191
- value: '',
2192
- });
2193
- }
2194
- },
2195
- // 删除机构别称
2196
- removeOtherName(index) {
2197
- this.hospitalNameAliasArr.splice(index, 1);
2198
- },
2199
- // 选择设备
2200
- equipmentNameChange(val, index) {
2201
- this.dict.equipment_name.forEach(item => {
2202
- item.disabled = false;
2203
- this.addHispotalForm.equipmentList.forEach((tmp, key) => {
2204
- if (tmp.equipmentName == val) item.equipmentCode = val;
2205
- if (item.label == tmp.equipmentName) {
2206
- item.disabled = true;
2207
- tmp.equipmentCode = item.value;
2208
- }
2209
- });
2210
- // console.log(this.addHispotalForm.equipmentList);
2211
- });
2212
- },
2213
- // 选择厂家
2214
- manufacturerChange(value, index, index1) {
2215
- if (!this.addHispotalForm.equipmentList[index].equipmentName) {
2216
- this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturer = '';
2217
- this.$message.warning('请先选择设备名称');
2218
- } else {
2219
- if (!value)
2220
- this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturerCount = '';
2221
- this.addHispotalForm.equipmentList[index].manufacturer.forEach((row, rowIndex) => {
2222
- if (index1 != rowIndex) {
2223
- if (row.manufacturer == value) {
2224
- this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturer = '';
2225
- this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturerCount = '';
2226
- this.$message.error('该厂家已存在,请重新选择');
2227
- }
2228
- }
2229
- });
2230
- }
2231
- },
2232
- // 设备继续添加
2233
- equipmentAdd() {
2234
- this.addHispotalForm.equipmentList.push({
2235
- equipmentCount: '',
2236
- equipmentName: '',
2237
- equipmentShow: true,
2238
- equipmentCode: '',
2239
- manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
2240
- });
2241
- },
2242
- manufacturerAdd(id, idw) {
2243
- if (
2244
- !this.addHispotalForm.equipmentList[id].manufacturer[idw].manufacturer &&
2245
- !this.addHispotalForm.equipmentList[id].manufacturer[idw].manufacturerCount
2246
- ) {
2247
- this.$message.warning('请先选择厂家,并输入总台数');
2248
- return;
2249
- }
2250
- this.addHispotalForm.equipmentList[id].manufacturer.push({
2251
- manufacturer: '',
2252
- manufacturerCount: '',
2253
- });
2254
- },
2255
- manufacturerDel(index, index1) {
2256
- this.inputChange('', 'manufacturerCount', index, index1);
2257
- this.addHispotalForm.equipmentList[index].manufacturer.splice(index1, 1);
2258
- },
2259
- deldeleteRed(index) {
2260
- this.addHispotalForm.equipmentList.splice(index, 1);
2261
- this.equipmentNameChange();
2262
- },
2263
-
2264
- inputChange(value, name, num, tmplemp) {
2265
- // console.log(value, name);
2266
- // 只能输入数字
2267
- this.$nextTick(() => {
2268
- if (value) {
2269
- value = value.replace(/\D/g, '').replace(/^0+(?=\d)/, '');
2270
- if (name == 'equipmentCount') {
2271
- this.addHispotalForm.equipmentList.forEach((tmp, index) => {
2272
- if (this.addHispotalForm.equipmentList[num].equipmentName) {
2273
- if (index == num) tmp.equipmentCount = value;
2274
- } else {
2275
- if (index == num) {
2276
- tmp.equipmentCount = '';
2277
- this.$message.warning('请先选择设备名称');
2278
- }
2279
- }
2280
- });
2281
- } else if (name == 'manufacturerCount') {
2282
- let number = 0;
2283
- this.addHispotalForm.equipmentList[num].manufacturer.forEach((tmp, index) => {
2284
- // console.log(
2285
- // this.addHispotalForm.equipmentList[num].equipmentName,
2286
- // this.addHispotalForm.equipmentList[num].manufacturer[tmplemp].manufacturer
2287
- // );
2288
- if (
2289
- this.addHispotalForm.equipmentList[num].equipmentName &&
2290
- this.addHispotalForm.equipmentList[num].manufacturer[tmplemp].manufacturer
2291
- ) {
2292
- number = number + Number(tmp.manufacturerCount);
2293
- // console.log(number);
2294
- this.addHispotalForm.equipmentList[num].equipmentCount = number;
2295
- // if (
2296
- // Number(this.addHispotalForm.equipmentList[num].equipmentCount) < number
2297
- // ) {
2298
-
2299
- // } else {
2300
- // if (index == tmplemp) tmp.manufacturerCount = value;
2301
- // }
2302
- } else {
2303
- if (index == tmplemp) {
2304
- tmp.manufacturerCount = '';
2305
- if (!this.addHispotalForm.equipmentList[num].equipmentName) {
2306
- this.$message.warning('请先选择设备名称');
2307
- } else if (!this.addHispotalForm.equipmentList[num].manufacturer) {
2308
- this.$message.warning('请先选择厂家');
2309
- }
2310
- }
2311
- }
2312
- });
2313
- }
2314
- } else {
2315
- if (name == 'manufacturerCount') {
2316
- let number = 0;
2317
- this.addHispotalForm.equipmentList[num].manufacturer.forEach((tmp, index) => {
2318
- if (this.addHispotalForm.equipmentList[num].equipmentName) {
2319
- number = number + Number(tmp.manufacturerCount);
2320
-
2321
- this.addHispotalForm.equipmentList[num].equipmentCount = number;
2322
- // if (
2323
- // Number(this.addHispotalForm.equipmentList[num].equipmentCount) < number
2324
- // ) {
2325
-
2326
- // } else {
2327
- // if (index == tmplemp) tmp.manufacturerCount = value;
2328
- // }
2329
- } else {
2330
- if (index == tmplemp) {
2331
- tmp.manufacturerCount = '';
2332
- if (!this.addHispotalForm.equipmentList[num].equipmentName) {
2333
- this.$message.warning('请先选择设备名称');
2334
- } else if (!this.addHispotalForm.equipmentList[num].manufacturer) {
2335
- this.$message.warning('请先选择厂家');
2336
- }
2337
- }
2338
- }
2339
- });
2340
- }
2341
- }
2342
- this.$forceUpdate();
2343
- });
2344
- },
2345
- // 自助机数量和单个数量change
2346
- inputMachineChange() {
2347
- this.addHispotalForm.machineCount = this.addHispotalForm.machineList.filter(
2348
- item => item.factory || item.ip || item.serialNumber || item.isuse
2349
- ).length;
2350
- },
2351
- // 自助机信息厂家数量增加或减少
2352
- hardwareManufacturerAdd(item, index) {
2353
- let list = [];
2354
- let list1 = [];
2355
- this.$refs.addHispotalForm.validateField(
2356
- [
2357
- `machineList.${index}.ip`,
2358
- `machineList.${index}.factory`,
2359
- `machineList.${index}.serialNumber`,
2360
- `machineList.${index}.isuse`,
2361
- ],
2362
- async errorMsg => {
2363
- console.log('errorMsg', list, errorMsg);
2364
-
2365
- if (errorMsg != '') {
2366
- list.push(errorMsg);
2367
- // console.log(list);
2368
- if (list.length == 4 && list.every(item => item === '')) {
2369
- }
2370
- } else {
2371
- list1.push(errorMsg);
2372
- }
2373
- if (list1.length == 4) {
2374
- this.addHispotalForm.machineList.push({
2375
- factory: '',
2376
- ip: '',
2377
- serialNumber: '',
2378
- isuse: '',
2379
- });
2380
- }
2381
- }
2382
- );
2383
- },
2384
- hardwareManufacturerDel(item, index) {
2385
- this.addHispotalForm.machineList.splice(index, 1);
2386
- this.inputMachineChange();
2387
- },
2388
- hardwareManufacturerChange(item) {
2389
- if (item && item['factory']) {
2390
- this.requiredMachineInfo(item, 'ip');
2391
- }
2392
- this.inputMachineChange();
2393
- },
2394
- },
2395
-
2396
- components: {
2397
- pagination,
2398
- codemirror,
2399
- DateRangePicker,
2400
- },
2401
- dicts: [
2402
- 'ins_category',
2403
- 'agency_hos_rank',
2404
- 'running_status',
2405
- 'can_connect',
2406
- 'archive_status',
2407
- 'equipment_status',
2408
- 'connect_status',
2409
- 'view_type',
2410
- 'hosp_owner_type',
2411
- 'equipment_manufactor',
2412
- 'equipment_name',
2413
- 'equipment_default_name',
2414
- 'config_status',
2415
- 'modality',
2416
- 'pic_monitor_modality',
2417
- 'machine_factory',
2418
- ],
2419
- };
2420
- </script>
2421
- <style lang="scss">
2422
- .costContent {
2423
- .el-form-item__content {
2424
- margin-left: 0 !important;
2425
- }
2426
- }
2427
- </style>
2428
- <style lang="scss" scoped>
2429
- .institutionSet {
2430
- ::v-deep .el-button.filter-item {
2431
- color: #1890ff;
2432
- border: 1px solid #1890ff;
2433
- }
2434
- ::v-deep.el-dialog__body {
2435
- padding: 5px 20px !important;
2436
- }
2437
- ::v-deep.el-dialog__footer {
2438
- padding: 10px;
2439
- padding-top: 10px;
2440
- }
2441
-
2442
- ::v-deep.el-radio-group {
2443
- margin-bottom: 0 !important;
2444
- }
2445
- .form-inline-hospital {
2446
- position: relative;
2447
- background-color: #fff;
2448
- // z-index: 10;
2449
- }
2450
-
2451
- .addHispotalDialog {
2452
- ::v-deep.el-dialog__body {
2453
- padding: 20px;
2454
- padding-bottom: 0;
2455
- }
2456
- .addHispotalStyle {
2457
- ::v-deep.el-form-item {
2458
- margin-bottom: 16px;
2459
- }
2460
- ::v-deep.basicInformation .el-input {
2461
- width: 230px;
2462
- }
2463
- .inputNumber {
2464
- display: flex;
2465
- padding: 10px 0;
2466
- span {
2467
- padding: 0px 5px;
2468
- }
2469
- ::v-deep .el-input {
2470
- width: 100px;
2471
- }
2472
- ::v-deep .el-input-number--small {
2473
- width: 100px;
2474
- }
2475
- }
2476
- .otherInputNumberStyle {
2477
- height: 70px;
2478
- padding: 0;
2479
- flex-wrap: wrap;
2480
- }
2481
- .addStyle {
2482
- font-size: 24px;
2483
- color: #1890ff;
2484
- cursor: pointer;
2485
- vertical-align: top;
2486
- margin-top: 4px;
2487
- margin-left: 5px;
2488
- }
2489
- .reduceStyle {
2490
- font-size: 24px;
2491
- color: #d92929;
2492
- cursor: pointer;
2493
- margin-left: 4px;
2494
- vertical-align: top;
2495
- margin-top: 5px;
2496
- }
2497
- }
2498
- }
2499
- .gatewayCounty {
2500
- ::v-deep.el-form-item {
2501
- margin-bottom: 0 !important;
2502
- }
2503
- }
2504
- }
2505
- .tabsInform {
2506
- ::v-deep.el-tabs__content {
2507
- height: 67vh;
2508
- overflow: auto;
2509
- }
2510
-
2511
- .titleTip {
2512
- color: #111;
2513
- font-weight: bold;
2514
- padding: 10px;
2515
- position: relative;
2516
- font-size: 14px;
2517
- &::before {
2518
- content: '';
2519
- position: absolute;
2520
- left: 0px;
2521
- display: inline-block;
2522
- width: 5px;
2523
- height: 16px;
2524
- background-color: #0089ff;
2525
- }
2526
- }
2527
- }
2528
- .deldeleteRed {
2529
- &.el-button--text {
2530
- color: #d92929;
2531
- }
2532
- }
2533
- </style>
2534
- <style lang="scss" scoped>
2535
- .warning {
2536
- height: 34px;
2537
- background-color: #fff7f3;
2538
- font-size: 13px;
2539
- line-height: 34px;
2540
- color: #ff7b35;
2541
- padding: 0 12px;
2542
- display: flex;
2543
- justify-content: space-between;
2544
- align-items: center;
2545
-
2546
- .warning-icon {
2547
- color: #ff7b35;
2548
- }
2549
- }
2550
- </style>
1
+ <template>
2
+ <div class="institutionSet app-container">
3
+ <el-form :inline="true" :model="query" class="form-inline-hospital" size="small">
4
+ <el-form-item>
5
+ <el-input v-model="query.hospitalName" placeholder="机构名称"></el-input>
6
+ </el-form-item>
7
+ <el-form-item>
8
+ <el-input v-model="query.scenceId" placeholder="机构ID"></el-input>
9
+ </el-form-item>
10
+ <el-form-item>
11
+ <el-input v-model="query.hospitalIp" placeholder="机构IP"></el-input>
12
+ </el-form-item>
13
+ <el-form-item>
14
+ <!-- 区域 -->
15
+ <el-cascader
16
+ v-model="query.address"
17
+ clearable
18
+ placeholder="机构地区"
19
+ :options="provinceList"
20
+ :props="props"
21
+ style="width: 220px"
22
+ @active-item-change="handleItemChange">
23
+ </el-cascader>
24
+ </el-form-item>
25
+ <el-form-item>
26
+ <el-select
27
+ v-model="query.hospOwnerTypes"
28
+ multiple
29
+ clearable
30
+ placeholder="机构所有制"
31
+ class="filter-item"
32
+ style="width: 160px"
33
+ @change="forceUpdate">
34
+ <el-option
35
+ v-for="item in dict.hosp_owner_type"
36
+ :key="item.value"
37
+ :label="item.label"
38
+ :value="item.value" />
39
+ </el-select>
40
+ </el-form-item>
41
+ <el-form-item>
42
+ <el-select
43
+ v-model="query.hospitalType"
44
+ clearable
45
+ placeholder="机构类别"
46
+ class="filter-item"
47
+ style="width: 160px"
48
+ @change="forceUpdate">
49
+ <el-option
50
+ v-for="item in dict.ins_category"
51
+ :key="item.value"
52
+ :label="item.label"
53
+ :value="item.value" />
54
+ </el-select>
55
+ </el-form-item>
56
+ <!-- 机构等级 -->
57
+ <el-form-item>
58
+ <el-select
59
+ v-model="query.level"
60
+ clearable
61
+ @change="forceUpdate"
62
+ placeholder="机构等级"
63
+ class="filter-item"
64
+ style="width: 160px">
65
+ <el-option
66
+ v-for="item in dict.agency_hos_rank"
67
+ :key="item.value"
68
+ :label="item.label"
69
+ :value="item.value" />
70
+ </el-select>
71
+ </el-form-item>
72
+ <el-form-item>
73
+ <el-select
74
+ v-model="query.runningState"
75
+ clearable
76
+ placeholder="机构状态"
77
+ class="filter-item"
78
+ style="width: 160px"
79
+ @change="forceUpdate">
80
+ <el-option
81
+ v-for="item in dict.running_status"
82
+ :key="item.value"
83
+ :label="item.label"
84
+ :value="item.value" />
85
+ </el-select>
86
+ </el-form-item>
87
+ <el-form-item>
88
+ <el-select
89
+ v-model="query.isCanConnect"
90
+ clearable
91
+ @change="forceUpdate"
92
+ style="width: 160px"
93
+ placeholder="是否可以联网">
94
+ <el-option
95
+ v-for="item in dict.can_connect"
96
+ :key="item.value"
97
+ :label="item.label"
98
+ :value="item.value" />
99
+ </el-select>
100
+ </el-form-item>
101
+
102
+ <el-form-item>
103
+ <el-select
104
+ v-model="query.equipmentStatus"
105
+ clearable
106
+ @change="forceUpdate"
107
+ style="width: 140px"
108
+ placeholder="是否有设备">
109
+ <el-option
110
+ v-for="item in dict.equipment_status"
111
+ :key="item.value"
112
+ :label="item.label"
113
+ :value="item.value" />
114
+ </el-select>
115
+ </el-form-item>
116
+ <el-form-item>
117
+ <el-select
118
+ v-model="query.connectStatus"
119
+ clearable
120
+ @change="forceUpdate"
121
+ style="width: 140px"
122
+ placeholder="是否已联网">
123
+ <el-option
124
+ v-for="item in dict.connect_status"
125
+ :key="item.value"
126
+ :label="item.label"
127
+ :value="item.value" />
128
+ </el-select>
129
+ </el-form-item>
130
+
131
+ <el-form-item>
132
+ <el-select
133
+ v-model="query.configStatus"
134
+ clearable
135
+ @change="forceUpdate"
136
+ style="width: 140px"
137
+ placeholder="是否有云配置">
138
+ <el-option
139
+ v-for="item in dict.config_status"
140
+ :key="item.value"
141
+ :label="item.label"
142
+ :value="item.value" />
143
+ </el-select>
144
+ </el-form-item>
145
+ <!-- <el-form-item>
146
+ <el-select
147
+ v-model="query.accessImages"
148
+ clearable
149
+ @change="forceUpdate"
150
+ style="width: 160px"
151
+ placeholder="客户端是否能调阅"
152
+ >
153
+ <el-option
154
+ v-for="item in yesOrNo"
155
+ :key="item.value"
156
+ :label="item.label"
157
+ :value="item.value"
158
+ />
159
+ </el-select>
160
+ </el-form-item> -->
161
+ <el-form-item>
162
+ <el-button @click="crud.toQuery" class="filter-item" size="small">查询</el-button>
163
+ </el-form-item>
164
+ <el-form-item>
165
+ <el-button @click="resetQueryClick" class="filter-item" size="small">重置</el-button>
166
+ </el-form-item>
167
+ <el-form-item>
168
+ <el-button @click="addQueryHospitailClick" class="filter-item" size="small"
169
+ >新增机构</el-button
170
+ >
171
+ <el-button
172
+ @click="download"
173
+ class="filter-item"
174
+ size="mini"
175
+ style="margin-left: 5px"
176
+ :loading="downloadLoading"
177
+ v-if="showDownLoad"
178
+ >导出</el-button
179
+ >
180
+ </el-form-item>
181
+ </el-form>
182
+ <div>
183
+ <!-- 表格 -->
184
+ <el-table :data="crud.data" v-loading="crud.loading">
185
+ <!-- :show-overflow-tooltip="true" -->
186
+ <el-table-column label="序号" width="60px">
187
+ <template slot-scope="scope">
188
+ <span>{{ (crud.page.page - 1) * crud.page.size + scope.$index + 1 }}</span>
189
+ </template>
190
+ </el-table-column>
191
+ <el-table-column
192
+ v-for="(item, index) in headerTable"
193
+ :key="index.key"
194
+ :label="item.label"
195
+ :prop="item.prop"
196
+ :min-width="item.width">
197
+ <template slot-scope="scope">
198
+ <div v-if="item.prop == 'hospitalType'">
199
+ {{ hosCategory(scope.row.hospitalType) || omitData }}
200
+ </div>
201
+ <div v-else-if="item.prop == 'level'">
202
+ {{ hosRank(scope.row.level) || omitData }}
203
+ </div>
204
+ <div v-else-if="item.prop == 'runningState'">
205
+ {{ hosState(scope.row.runningState) || omitData }}
206
+ </div>
207
+ <div v-else-if="item.prop == 'isCanConnect'">
208
+ {{ hosCanConnect(scope.row.isCanConnect) || omitData }}
209
+ </div>
210
+ <div v-else-if="item.prop == 'equipmentStatus'">
211
+ {{ hosEquipmentStatus(scope.row.equipmentStatus) || omitData }}
212
+ </div>
213
+ <div v-else-if="item.prop == 'connectStatus'">
214
+ {{ hosConnectStatus(scope.row.connectStatus) || omitData }}
215
+ </div>
216
+ <div v-else-if="item.prop == 'hospOwnerType'">
217
+ {{ hosHospOwnerType(scope.row.hospOwnerType) || omitData }}
218
+ </div>
219
+ <div v-else-if="item.prop == 'configStatus'">
220
+ {{ scope.row.configStatus == '1' ? '是' : '否' }}
221
+ </div>
222
+ <div v-else-if="item.prop == 'accessImages'">
223
+ {{ scope.row.connectStatus == '1' ? '是' : '否' }}
224
+ </div>
225
+ <div v-else-if="item.prop == 'joinUpState'">
226
+ {{
227
+ scope.row.joinUpState != undefined
228
+ ? scope.row.joinUpState == 0
229
+ ? '未接入'
230
+ : '已接入'
231
+ : '-'
232
+ }}
233
+ </div>
234
+ <div v-else>
235
+ {{ scope.row[item.prop] || omitData }}
236
+ </div>
237
+ </template>
238
+ </el-table-column>
239
+ <el-table-column label="操作" width="200" fixed="right">
240
+ <template slot-scope="scope">
241
+ <el-button size="mini" type="text" @click="toAddRecord(scope.row)">修改</el-button>
242
+
243
+ <el-button
244
+ v-if="checkPer(permission.editYunSet)"
245
+ :disabled="scope.row.configStatus == 0"
246
+ size="mini"
247
+ type="text"
248
+ @click="cloudSet(scope.row)">
249
+ 云配置</el-button
250
+ >
251
+ <el-button
252
+ size="mini"
253
+ type="text"
254
+ style="color: #d92929"
255
+ @click="monitorPath(scope.row)"
256
+ >删除</el-button
257
+ >
258
+ <el-button size="mini" type="text" v-if="showMiyao" @click="SecretKey(scope.row)"
259
+ >秘钥</el-button
260
+ >
261
+ </template>
262
+ </el-table-column>
263
+ </el-table>
264
+ <!--分页组件-->
265
+ <pagination />
266
+ </div>
267
+ <!-- 新增机构弹框 -->
268
+ <el-dialog
269
+ :title="hospitalName"
270
+ top="2vh"
271
+ width="1000px"
272
+ class="addHispotalDialog"
273
+ :visible.sync="hospitalVisible"
274
+ :close-on-click-modal="false"
275
+ :before-close="closeDialog">
276
+ <!-- <div slot="title">
277
+ {{ hospitalName
278
+ }}<span style="color: orange; font-size: 13px"
279
+ >(提示:置灰的字段为与智联网平台同步的字段,不可编辑)</span
280
+ >
281
+ </div> -->
282
+
283
+ <el-form
284
+ :model="addHispotalForm"
285
+ label-width="170px"
286
+ class="addHispotalStyle"
287
+ ref="addHispotalForm"
288
+ size="small"
289
+ :rules="rules">
290
+ <el-row :gutter="15">
291
+ <el-tabs v-model="activeName" class="tabsInform">
292
+ <el-tab-pane label="基本信息" name="basicInformation" class="basicInformation">
293
+ <el-col :span="24">
294
+ <div class="titleTip">基础信息</div>
295
+ </el-col>
296
+ <el-col :span="12">
297
+ <el-form-item label="机构名称:" prop="hospitalName">
298
+ <el-input
299
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
300
+ v-model="addHispotalForm.hospitalName"
301
+ placeholder="请输入机构名称"></el-input>
302
+ </el-form-item>
303
+ </el-col>
304
+ <el-col :span="12">
305
+ <el-form-item
306
+ :label="index == 0 ? '机构别称:' : ''"
307
+ v-for="(othername, index) in hospitalNameAliasArr"
308
+ :key="index + 1">
309
+ <el-input
310
+ v-model="othername.value"
311
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
312
+ placeholder="请输入机构别称"></el-input>
313
+ <span
314
+ v-if="
315
+ hospitalName == '新增机构' ||
316
+ (hospitalName == '修改机构' && !checkPer(permission.basic))
317
+ "
318
+ class="el-icon-circle-plus-outline addStyle"
319
+ @click="addOtherName">
320
+ </span>
321
+ <span
322
+ v-if="
323
+ hospitalName == '新增机构' ||
324
+ (hospitalName == '修改机构' && !checkPer(permission.basic))
325
+ "
326
+ class="el-icon-remove-outline reduceStyle"
327
+ v-show="index != 0"
328
+ @click="removeOtherName(index)"></span>
329
+ </el-form-item>
330
+ </el-col>
331
+ <el-col :span="12">
332
+ <el-form-item label="卫统机构ID:" prop="healthStatisticsId">
333
+ <el-input
334
+ v-model="addHispotalForm.healthStatisticsId"
335
+ placeholder="卫统机构ID"></el-input>
336
+ </el-form-item>
337
+ </el-col>
338
+ <el-col :span="12">
339
+ <el-form-item label="组织机构代码:" prop="hospitalId">
340
+ <el-input
341
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
342
+ v-model="addHispotalForm.hospitalId"
343
+ placeholder="请输入组织机构代码"></el-input>
344
+ </el-form-item>
345
+ </el-col>
346
+ <el-col :span="12">
347
+ <el-form-item label="机构地区:" prop="addressHos">
348
+ <el-cascader
349
+ v-model="addHispotalForm.addressHos"
350
+ clearable
351
+ placeholder="请选择机构地区"
352
+ :options="provinceList"
353
+ :props="props"
354
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
355
+ style="width: 220px"
356
+ ref="cascaderArr"
357
+ @active-item-change="handleItemChange"
358
+ @change="provinceChange($event)">
359
+ </el-cascader>
360
+ </el-form-item>
361
+ </el-col>
362
+ <el-col :span="12">
363
+ <el-form-item label="机构状态:" prop="runningState">
364
+ <el-select
365
+ v-model="addHispotalForm.runningState"
366
+ clearable
367
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)"
368
+ placeholder="请选择机构状态">
369
+ <el-option
370
+ v-for="item in dict.running_status"
371
+ :key="item.value"
372
+ :label="item.label"
373
+ :value="item.value" />
374
+ </el-select>
375
+ </el-form-item>
376
+ </el-col>
377
+ <el-col :span="12">
378
+ <el-form-item label="机构所有制:" prop="hospOwnerType">
379
+ <el-select v-model="addHispotalForm.hospOwnerType" placeholder="请选择机构所有制">
380
+ <el-option
381
+ v-for="item in dict.hosp_owner_type"
382
+ :key="item.value"
383
+ :label="item.label"
384
+ :value="item.value">
385
+ </el-option>
386
+ </el-select>
387
+ </el-form-item>
388
+ </el-col>
389
+ <el-col :span="12">
390
+ <el-form-item label="机构类别:" prop="hospitalType">
391
+ <el-select
392
+ v-model="addHispotalForm.hospitalType"
393
+ clearable
394
+ placeholder="请选择机构类别"
395
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
396
+ <el-option
397
+ v-for="item in dict.ins_category"
398
+ :key="item.value"
399
+ :label="item.label"
400
+ :value="item.value" />
401
+ </el-select>
402
+ </el-form-item>
403
+ </el-col>
404
+ <el-col :span="12">
405
+ <el-form-item label="机构等级:" prop="level">
406
+ <el-select
407
+ v-model="addHispotalForm.level"
408
+ clearable
409
+ placeholder="请选择机构等级"
410
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
411
+ <el-option
412
+ v-for="item in dict.agency_hos_rank"
413
+ :key="item.value"
414
+ :label="item.label"
415
+ :value="item.value" />
416
+ </el-select>
417
+ </el-form-item>
418
+ </el-col>
419
+ <el-col :span="24">
420
+ <div class="titleTip">配置信息</div>
421
+ </el-col>
422
+ <el-col :span="12" style="height: 63px">
423
+ <el-form-item
424
+ label="自动上传方式:"
425
+ :rules="
426
+ addHispotalForm.monitorStatus == '1' ? rules.verityMsg : [{ required: false }]
427
+ "
428
+ prop="autoUploadType">
429
+ <el-select
430
+ v-model="addHispotalForm.autoUploadType"
431
+ clearable
432
+ placeholder="请选择自动上传方式"
433
+ @change="blur"
434
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
435
+ <el-option
436
+ v-for="item in AutomaticallyUpload"
437
+ :key="item.value"
438
+ :label="item.label"
439
+ :value="item.value" />
440
+ </el-select>
441
+ </el-form-item>
442
+ </el-col>
443
+ <el-col :span="12" style="height: 63px">
444
+ <el-form-item label="urlKey:" prop="urlKey">
445
+ <el-select
446
+ v-model="addHispotalForm.urlKey"
447
+ clearable
448
+ filterable
449
+ placeholder="请选择urlKey"
450
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
451
+ <el-option v-for="item in urlKeyList" :key="item" :label="item" :value="item" />
452
+ </el-select>
453
+ </el-form-item>
454
+ </el-col>
455
+ <el-col :span="12">
456
+ <el-form-item label="图像浏览方式:">
457
+ <el-select
458
+ v-model="addHispotalForm.viewType"
459
+ clearable
460
+ placeholder="请选择图像浏览方式"
461
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
462
+ <el-option
463
+ v-for="item in dict.view_type"
464
+ :key="item.value"
465
+ :label="item.label"
466
+ :value="item.value" />
467
+ </el-select>
468
+ </el-form-item>
469
+ </el-col>
470
+ <el-col :span="24">
471
+ <div class="titleTip">连通信息</div>
472
+ </el-col>
473
+ <el-col :span="12" style="height: 63px">
474
+ <el-form-item label="是否有设备:" prop="equipmentStatus">
475
+ <el-select
476
+ v-model="addHispotalForm.equipmentStatus"
477
+ clearable
478
+ placeholder="请选择是否有设备"
479
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
480
+ <el-option
481
+ v-for="item in dict.equipment_status"
482
+ :key="item.value"
483
+ :label="item.label"
484
+ :value="item.value" />
485
+ </el-select>
486
+ </el-form-item>
487
+ </el-col>
488
+ <el-col :span="12" style="height: 63px">
489
+ <el-form-item label="是否可以联网:" prop="isCanConnect">
490
+ <el-select
491
+ v-model="addHispotalForm.isCanConnect"
492
+ clearable
493
+ placeholder="请选择是否可以联网"
494
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
495
+ <el-option
496
+ v-for="item in dict.can_connect"
497
+ :key="item.value"
498
+ :label="item.label"
499
+ :value="item.value" />
500
+ </el-select>
501
+ </el-form-item>
502
+ </el-col>
503
+ <el-col :span="12">
504
+ <el-form-item label="是否归档:" prop="archiveFlag">
505
+ <el-select
506
+ v-model="addHispotalForm.archiveFlag"
507
+ clearable
508
+ placeholder="请选择是否归档"
509
+ :disabled="hospitalName == '修改机构' && checkPer(permission.basic)">
510
+ <el-option
511
+ v-for="item in dict.archive_status"
512
+ :key="item.value"
513
+ :label="item.label"
514
+ :value="item.value" />
515
+ </el-select>
516
+ </el-form-item>
517
+ </el-col>
518
+ <el-col :span="12">
519
+ <el-form-item label="是否已联网:" prop="connectStatus">
520
+ <el-select
521
+ v-model="addHispotalForm.connectStatus"
522
+ clearable
523
+ placeholder="请选择是否已联网">
524
+ <el-option
525
+ v-for="item in dict.connect_status"
526
+ :key="item.value"
527
+ :label="item.label"
528
+ :value="item.value" />
529
+ </el-select>
530
+ </el-form-item>
531
+ </el-col>
532
+ </el-tab-pane>
533
+
534
+ <el-tab-pane label="设备信息" name="equipmentInformation">
535
+ <el-form-item
536
+ v-for="(item, ide) in addHispotalForm.equipmentList"
537
+ :key="ide"
538
+ label-width="0">
539
+ <el-col :span="7" style="width: 250px; padding-right: 10px; text-align: right">
540
+ <span v-if="!item.equipmentShow">{{ item.equipmentName }}:</span>
541
+ <el-form-item v-else style="margin: 0">
542
+ <el-select
543
+ @change="equipmentNameChange($event, ide)"
544
+ clearable
545
+ v-model="item.equipmentName"
546
+ style="width: 100%"
547
+ filterable=""
548
+ placeholder="请选择设备名称"
549
+ :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
550
+ <el-option
551
+ v-for="item in dict.equipment_name"
552
+ :key="item.dictSort"
553
+ :label="item.label"
554
+ :value="item.label"
555
+ :disabled="item.disabled" />
556
+ </el-select>
557
+ </el-form-item>
558
+ </el-col>
559
+ <el-col :span="8" style="width: calc(100% - 250px)">
560
+ <el-form-item style="margin: 0">
561
+ <el-col :span="21" style="margin-bottom: 5px">
562
+ <el-input
563
+ clearable
564
+ v-model="item.equipmentCount"
565
+ @input="inputChange(item.equipmentCount, 'equipmentCount', ide)"
566
+ placeholder="请输入总台数"
567
+ disabled>
568
+ <span slot="suffix">台数</span>
569
+ </el-input>
570
+ </el-col>
571
+ <el-col :span="3">
572
+ <el-popconfirm title="确定要删除该设备信息吗?" @confirm="deldeleteRed(ide)">
573
+ <el-button
574
+ slot="reference"
575
+ v-if="item.equipmentShow"
576
+ class="deldeleteRed"
577
+ type="text"
578
+ :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
579
+ 删除
580
+ </el-button>
581
+ </el-popconfirm>
582
+ </el-col>
583
+ <div
584
+ style="margin-bottom: 5px"
585
+ v-for="(tmp, id) in item.manufacturer"
586
+ :key="id">
587
+ <el-col :span="7" style="margin-bottom: 5px">
588
+ <el-select
589
+ filterable=""
590
+ clearable
591
+ @change="manufacturerChange(tmp.manufacturer, ide, id)"
592
+ v-model="tmp.manufacturer"
593
+ placeholder="请选择厂家"
594
+ :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
595
+ <el-option
596
+ v-for="item in dict.equipment_manufactor"
597
+ :key="item.label"
598
+ :label="item.label"
599
+ :value="item.label"
600
+ :disabled="item.disabled" />
601
+ </el-select>
602
+ </el-col>
603
+ <el-col :span="14" style="margin-bottom: 5px">
604
+ <el-input
605
+ clearable
606
+ v-model="tmp.manufacturerCount"
607
+ @input="inputChange(tmp.manufacturerCount, 'manufacturerCount', ide, id)"
608
+ placeholder="请输入该厂家的台数"
609
+ :disabled="hospitalName == '修改机构' && checkPer(permission.device)">
610
+ <span slot="suffix">台数</span>
611
+ </el-input>
612
+ </el-col>
613
+ <el-col
614
+ :span="3"
615
+ style="margin-bottom: 5px"
616
+ v-if="
617
+ hospitalName == '新增机构' ||
618
+ (hospitalName == '修改机构' && !checkPer(permission.device))
619
+ ">
620
+ <el-button
621
+ @click="manufacturerAdd(ide, id)"
622
+ style="padding: 4px"
623
+ type="primary"
624
+ icon="el-icon-plus"
625
+ size="mini"
626
+ circle></el-button>
627
+ <el-button
628
+ @click="manufacturerDel(ide, id)"
629
+ v-if="item.manufacturer.length != 1"
630
+ style="margin-left: 0; padding: 4px"
631
+ type="danger"
632
+ icon="el-icon-minus"
633
+ size="mini"
634
+ circle></el-button>
635
+ </el-col>
636
+ </div>
637
+ </el-form-item>
638
+ </el-col>
639
+ </el-form-item>
640
+ <el-button
641
+ type="text"
642
+ @click="equipmentAdd"
643
+ v-if="
644
+ hospitalName == '新增机构' ||
645
+ (hospitalName == '修改机构' && !checkPer(permission.device))
646
+ ">
647
+ + 继续添加
648
+ </el-button>
649
+ </el-tab-pane>
650
+
651
+ <el-tab-pane label="监测信息" name="monitorInfo">
652
+ <el-row style="display: flex; flex-wrap: wrap">
653
+ <el-col :span="24">
654
+ <el-form-item label="是否开启监测:" prop="monitorStatus">
655
+ <el-radio-group
656
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
657
+ v-model="addHispotalForm.monitorStatus"
658
+ @change="monitorChange">
659
+ <el-radio label="1">是</el-radio>
660
+ <el-radio label="0">否</el-radio>
661
+ </el-radio-group>
662
+ </el-form-item>
663
+ </el-col>
664
+ <el-col :span="12" v-show="addHispotalForm.monitorStatus == '1'">
665
+ <div>
666
+ <el-form-item label="看图监测:">
667
+ <el-radio-group
668
+ v-model="addHispotalForm.lookPicMonitor"
669
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
670
+ <el-radio label="1">是</el-radio>
671
+ <el-radio label="0">否</el-radio>
672
+ </el-radio-group>
673
+ <div class="inputNumber" v-show="addHispotalForm.lookPicMonitor == '1'">
674
+ <span>抽取</span>
675
+ <el-input-number
676
+ v-model="addHispotalForm.lookPicHourTime"
677
+ :precision="0"
678
+ size="small"
679
+ controls-position="right"
680
+ :min="0"
681
+ :max="999"
682
+ :disabled="
683
+ hospitalName == '修改机构' && checkPer(permission.monitor)
684
+ "></el-input-number>
685
+ <span>个小时内五例数据</span>
686
+ </div>
687
+ <div class="inputNumber" v-show="addHispotalForm.lookPicMonitor == '1'">
688
+ <span>但不抽近</span>
689
+ <el-input-number
690
+ v-model="addHispotalForm.lookPicMinuteTime"
691
+ :precision="0"
692
+ size="small"
693
+ controls-position="right"
694
+ :min="1"
695
+ :max="999"
696
+ :disabled="
697
+ hospitalName == '修改机构' && checkPer(permission.monitor)
698
+ "></el-input-number>
699
+ <span>分钟的数据</span>
700
+ </div>
701
+ <el-form-item
702
+ label="是否开启按模式抽取数据:"
703
+ label-width="100"
704
+ v-show="addHispotalForm.lookPicMonitor == '1'">
705
+ <el-radio-group
706
+ v-model="addHispotalForm.isModality"
707
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
708
+ <el-radio label="1">是</el-radio>
709
+ <el-radio label="0">否</el-radio>
710
+ </el-radio-group>
711
+ </el-form-item>
712
+ <el-form-item prop="modeExtractDataList">
713
+ <el-checkbox-group
714
+ v-if="addHispotalForm.isModality == '1'"
715
+ v-model="addHispotalForm.modeExtractDataList">
716
+ <el-checkbox
717
+ v-for="item in dict.modality"
718
+ :label="item.value"
719
+ :key="item.id"
720
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
721
+ >{{ item.label }}</el-checkbox
722
+ >
723
+ </el-checkbox-group>
724
+ </el-form-item>
725
+ </el-form-item>
726
+ </div>
727
+ </el-col>
728
+ <el-col :span="12" v-show="addHispotalForm.monitorStatus == '1'">
729
+ <el-form-item label="日报上传监测:">
730
+ <el-radio-group
731
+ v-model="addHispotalForm.dayDataMonitor"
732
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
733
+ <el-radio label="1">是</el-radio>
734
+ <el-radio label="0">否</el-radio>
735
+ </el-radio-group>
736
+ </el-form-item>
737
+ <el-form-item label="归档数据质量监测:">
738
+ <el-radio-group
739
+ v-model="addHispotalForm.qualityDataMonitor"
740
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
741
+ <el-radio label="1">是</el-radio>
742
+ <el-radio label="0">否</el-radio>
743
+ </el-radio-group>
744
+ <div v-show="addHispotalForm.qualityDataMonitor == '1'">
745
+ <div class="inputNumber">
746
+ <span>抽取</span>
747
+ <el-input-number
748
+ v-model="addHispotalForm.qualityDataHourTime"
749
+ :precision="0"
750
+ controls-position="right"
751
+ :min="1"
752
+ :max="999"
753
+ :disabled="
754
+ hospitalName == '修改机构' && checkPer(permission.monitor)
755
+ "></el-input-number>
756
+ <span>个小时内10例数据</span>
757
+ </div>
758
+ <div style="margin-bottom: 10px">
759
+ <el-select
760
+ v-model="addHispotalForm.checkAcc"
761
+ style="width: 70px"
762
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
763
+ <el-option
764
+ v-for="item in yesOrNo"
765
+ :key="item.value"
766
+ :label="item.label"
767
+ :value="item.value">
768
+ </el-option>
769
+ </el-select>
770
+ 校验检查项目编码
771
+ </div>
772
+ <div>
773
+ <el-select
774
+ v-model="addHispotalForm.checkAllId"
775
+ style="width: 70px"
776
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
777
+ <el-option
778
+ v-for="item in yesOrNo"
779
+ :key="item.value"
780
+ :label="item.label"
781
+ :value="item.value">
782
+ </el-option>
783
+ </el-select>
784
+ 校验校验检查医嘱ID、申请单ID
785
+ </div>
786
+ </div>
787
+ </el-form-item>
788
+ </el-col>
789
+ <el-col :span="12">
790
+ <el-form-item label="漏图监测:" v-show="addHispotalForm.monitorStatus == '1'">
791
+ <el-radio-group
792
+ v-model="addHispotalForm.leakageMonitor"
793
+ @change="forceUpdate"
794
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
795
+ <el-radio label="1">是</el-radio>
796
+ <el-radio label="0">否</el-radio>
797
+ </el-radio-group>
798
+ </el-form-item>
799
+ </el-col>
800
+ <el-col :span="24">
801
+ <el-form-item
802
+ label="看图异常监测:"
803
+ v-show="addHispotalForm.monitorStatus == '1'">
804
+ <el-radio-group
805
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)"
806
+ @change="lookPicAbnormalMonitorChange(addHispotalForm.lookPicAbnormalMonitor)"
807
+ v-model="addHispotalForm.lookPicAbnormalMonitor">
808
+ <el-radio label="1">是</el-radio>
809
+ <el-radio label="0">否</el-radio>
810
+ </el-radio-group>
811
+ </el-form-item>
812
+ </el-col>
813
+
814
+ <el-col :span="24">
815
+ <el-form-item label="监测模式:" v-show="addHispotalForm.monitorStatus == '1'">
816
+ <el-checkbox-group
817
+ @change="lookPicMonitorModalityChange"
818
+ :disabled="
819
+ (hospitalName == '修改机构' && checkPer(permission.monitor)) ||
820
+ addHispotalForm.lookPicAbnormalMonitor == '0'
821
+ "
822
+ :min="addHispotalForm.lookPicMonitorModality.indexOf('全部') == -1 ? 1 : 0"
823
+ v-model="addHispotalForm.lookPicMonitorModality">
824
+ <el-checkbox
825
+ :disabled="
826
+ item.value != '全部' &&
827
+ addHispotalForm.lookPicMonitorModality.indexOf('全部') != -1
828
+ "
829
+ v-for="item in dict.pic_monitor_modality"
830
+ :key="item.label"
831
+ :label="item.label"
832
+ :value="item.value" />
833
+ </el-checkbox-group>
834
+ </el-form-item>
835
+ </el-col>
836
+
837
+ <el-col :span="24" v-show="addHispotalForm.monitorStatus == '1'">
838
+ <el-form-item label="客户端运行监测:">
839
+ <el-radio-group
840
+ v-model="addHispotalForm.iuWorkStationMonitor"
841
+ :disabled="hospitalName == '修改机构' && checkPer(permission.monitor)">
842
+ <el-radio label="1">是</el-radio>
843
+ <el-radio label="0">否</el-radio>
844
+ </el-radio-group>
845
+ <div
846
+ class="inputNumber otherInputNumberStyle"
847
+ v-show="addHispotalForm.iuWorkStationMonitor == '1'">
848
+ <span>抽取</span>
849
+ <el-input-number
850
+ v-model="addHispotalForm.iuWorkStationHourTime"
851
+ :precision="0"
852
+ controls-position="right"
853
+ :min="1"
854
+ size="small"
855
+ :max="999"
856
+ :disabled="
857
+ hospitalName == '修改机构' && checkPer(permission.monitor)
858
+ "></el-input-number>
859
+ <span>个小时内的数据</span>
860
+ <span>监测历史提醒次数、调阅次数是否均大于0</span>
861
+ </div>
862
+ <div
863
+ class="inputNumber otherInputNumberStyle"
864
+ v-show="addHispotalForm.iuWorkStationMonitor == '1'">
865
+ <span>抽取</span>
866
+ <el-input-number
867
+ v-model="addHispotalForm.iuWorkStationHourTimeOther"
868
+ :precision="0"
869
+ controls-position="right"
870
+ :min="1"
871
+ size="small"
872
+ :max="999"
873
+ :disabled="
874
+ hospitalName == '修改机构' && checkPer(permission.monitor)
875
+ "></el-input-number>
876
+ <span>个小时内统计数据</span>
877
+ <span>监测重复提醒次数是否大于0</span>
878
+ </div>
879
+ </el-form-item>
880
+ </el-col>
881
+ <el-col :span="24" v-show="addHispotalForm.monitorStatus == '1'">
882
+ <el-form-item label="检查项目编码监测:">
883
+ <el-form-item label="归档数据监测:">
884
+ <el-radio-group
885
+ v-model="addHispotalForm.examOssMonitor"
886
+ :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
887
+ <el-radio label="1">是</el-radio>
888
+ <el-radio label="0">否</el-radio>
889
+ </el-radio-group>
890
+ </el-form-item>
891
+ <el-form-item label="重复检查数据监测:">
892
+ <el-radio-group
893
+ v-model="addHispotalForm.examRepeatMonitor"
894
+ :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
895
+ <el-radio label="1">是</el-radio>
896
+ <el-radio label="0">否</el-radio>
897
+ </el-radio-group>
898
+ </el-form-item>
899
+ <el-form-item label="机构编码对照监测:">
900
+ <el-radio-group
901
+ v-model="addHispotalForm.examOrgMonitor"
902
+ :disabled="hospitalName == '修改医院' && checkPer(permission.monitor)">
903
+ <el-radio label="1">是</el-radio>
904
+ <el-radio label="0">否</el-radio>
905
+ </el-radio-group>
906
+ </el-form-item>
907
+ </el-form-item>
908
+ </el-col>
909
+ </el-row>
910
+ </el-tab-pane>
911
+
912
+ <el-tab-pane label="专线信息" name="specialLine" class="basicInformation">
913
+ <el-row style="display: flex; flex-wrap: wrap">
914
+ <el-col :span="24">
915
+ <div class="titleTip">专线信息</div>
916
+ </el-col>
917
+ <el-col :span="12">
918
+ <el-form-item style="width: 100%" label-width="140px" label="专线IP">
919
+ <el-input
920
+ size="small"
921
+ :disabled="hospitalName == '修改机构' && checkPer(permission.dedicated)"
922
+ v-model="addHispotalForm.hospitalIp"
923
+ placeholder="专线IP"></el-input>
924
+ </el-form-item>
925
+ </el-col>
926
+ <el-col :span="12">
927
+ <el-form-item label="带宽">
928
+ <el-input
929
+ label-width="140px"
930
+ size="small"
931
+ :disabled="hospitalName == '修改机构' && checkPer(permission.dedicated)"
932
+ v-model="addHispotalForm.hospitalBandwidth"
933
+ placeholder="带宽">
934
+ <em slot="suffix">M</em></el-input
935
+ >
936
+ </el-form-item>
937
+ </el-col>
938
+ </el-row>
939
+ </el-tab-pane>
940
+ <el-tab-pane label="自助机信息" name="selfServiceInfo">
941
+ <el-col :span="23">
942
+ <el-form-item label="自助机总数量:">
943
+ <el-input
944
+ clearable
945
+ v-model="addHispotalForm.machineCount"
946
+ @input="inputMachineChange()"
947
+ placeholder="自动累计自助机数量"
948
+ disabled>
949
+ </el-input>
950
+ </el-form-item>
951
+ </el-col>
952
+ <el-col :span="23" style="padding: 0 !important">
953
+ <el-col :span="9">
954
+ <el-form-item label="服务专员:">
955
+ <el-input
956
+ type="textarea"
957
+ autosize
958
+ v-model="addHispotalForm.serverPerson"
959
+ placeholder="请输入服务专员"
960
+ :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
961
+ </el-input>
962
+ </el-form-item>
963
+ </el-col>
964
+ <el-col :span="6">
965
+ <el-form-item label="驻场人员数量:" label-width="120px">
966
+ <el-input
967
+ clearable
968
+ v-model.number="addHispotalForm.personnelNum"
969
+ placeholder="请输入驻场人员数量"
970
+ :step="1"
971
+ :min="0"
972
+ :max="999"
973
+ :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)"
974
+ @input="countChanges(addHispotalForm.personnelNum, 'personnelNum')">
975
+ </el-input>
976
+ </el-form-item>
977
+ </el-col>
978
+ <el-col :span="9">
979
+ <el-form-item label="驻场人员归属:" label-width="120px">
980
+ <el-input
981
+ type="textarea"
982
+ autosize
983
+ v-model="addHispotalForm.personClass"
984
+ placeholder="请输入驻场人员归属"
985
+ :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
986
+ </el-input>
987
+ </el-form-item>
988
+ </el-col>
989
+ </el-col>
990
+ <el-col :span="23">
991
+ <el-form-item label="备注:">
992
+ <el-input
993
+ type="textarea"
994
+ autosize
995
+ v-model="addHispotalForm.remarks"
996
+ placeholder="请输入对应的医院关系"
997
+ :disabled="hospitalName == '修改医院' && checkPer(permission.selfService)">
998
+ </el-input>
999
+ </el-form-item>
1000
+ </el-col>
1001
+
1002
+ <el-col :span="23">
1003
+ <el-form-item label="自助机信息:">
1004
+ <el-table :data="addHispotalForm.machineList">
1005
+ <el-table-column label="硬件厂家" min-width="100px">
1006
+ <template slot-scope="scope">
1007
+ <el-form-item
1008
+ style="margin-bottom: 0"
1009
+ :prop="'machineList.' + scope.$index + '.factory'"
1010
+ :rules="[
1011
+ {
1012
+ required: !!Number(scope.row.isuse),
1013
+ message: '硬件厂家',
1014
+ trigger: 'change',
1015
+ },
1016
+ ]">
1017
+ <el-select
1018
+ filterable=""
1019
+ clearable
1020
+ @change="hardwareManufacturerChange(scope.row)"
1021
+ v-model="scope.row.factory"
1022
+ :disabled="
1023
+ hospitalName == '修改医院' && checkPer(permission.selfService)
1024
+ "
1025
+ placeholder="硬件厂家">
1026
+ <el-option
1027
+ v-for="item in dict.machine_factory"
1028
+ :key="item.label"
1029
+ :label="item.label"
1030
+ :value="item.label"
1031
+ :disabled="item.disabled" />
1032
+ </el-select>
1033
+ </el-form-item>
1034
+ </template>
1035
+ </el-table-column>
1036
+ <el-table-column label="MAC地址" min-width="160px">
1037
+ <template slot-scope="scope">
1038
+ <el-form-item
1039
+ style="margin-bottom: 0"
1040
+ :prop="'machineList.' + scope.$index + '.ip'"
1041
+ :rules="[
1042
+ {
1043
+ required: !!Number(scope.row.isuse),
1044
+ message: '请输入MAC地址',
1045
+ trigger: 'blur',
1046
+ },
1047
+ ]">
1048
+ <el-input
1049
+ clearable
1050
+ v-model="scope.row.ip"
1051
+ :disabled="
1052
+ hospitalName == '修改医院' && checkPer(permission.selfService)
1053
+ "
1054
+ @input="inputIpChange()"
1055
+ placeholder="请输入MAC地址">
1056
+ </el-input>
1057
+ </el-form-item>
1058
+ </template>
1059
+ </el-table-column>
1060
+ <el-table-column label="自助机编码" min-width="90px">
1061
+ <template slot-scope="scope">
1062
+ <el-form-item
1063
+ style="margin-bottom: 0"
1064
+ :prop="'machineList.' + scope.$index + '.serialNumber'"
1065
+ :rules="[
1066
+ {
1067
+ required: !!Number(scope.row.isuse),
1068
+ message: '请输入自助机编码',
1069
+ trigger: 'blur',
1070
+ },
1071
+ ]">
1072
+ <el-input
1073
+ v-model="scope.row.serialNumber"
1074
+ :disabled="
1075
+ hospitalName == '修改医院' && checkPer(permission.selfService)
1076
+ "
1077
+ placeholder="请输入自助机编码">
1078
+ </el-input>
1079
+ </el-form-item>
1080
+ </template>
1081
+ </el-table-column>
1082
+ <el-table-column label="是否启用" min-width="120px">
1083
+ <template slot-scope="scope">
1084
+ <el-form-item
1085
+ style="margin-bottom: 0"
1086
+ :prop="'machineList.' + scope.$index + '.isuse'"
1087
+ :rules="[
1088
+ {
1089
+ required: !!Number(scope.row.isuse),
1090
+ message: '是否启用',
1091
+ trigger: 'change',
1092
+ },
1093
+ ]">
1094
+ <el-select
1095
+ v-model="scope.row.isuse"
1096
+ :disabled="
1097
+ hospitalName == '修改医院' && checkPer(permission.selfService)
1098
+ "
1099
+ placeholder="是否启用">
1100
+ <el-option
1101
+ v-for="item in archiveFlagArr"
1102
+ :key="item.value"
1103
+ :label="item.label"
1104
+ :value="item.value" />
1105
+ </el-select>
1106
+ </el-form-item>
1107
+ </template>
1108
+ </el-table-column>
1109
+ <!-- hospitalName == '修改医院' && -->
1110
+ <el-table-column
1111
+ label="操作"
1112
+ min-width="70px"
1113
+ v-if="
1114
+ hospitalName == '新增机构' ||
1115
+ (hospitalName == '修改机构' && !checkPer(permission.selfService))
1116
+ ">
1117
+ <template slot-scope="scope">
1118
+ <el-button
1119
+ @click="hardwareManufacturerAdd(scope.row, scope.$index)"
1120
+ style="padding: 4px"
1121
+ type="primary"
1122
+ icon="el-icon-plus"
1123
+ size="mini"
1124
+ circle>
1125
+ </el-button>
1126
+ <el-button
1127
+ @click="hardwareManufacturerDel(scope.row, scope.$index)"
1128
+ v-if="addHispotalForm.machineList.length != 1"
1129
+ style="margin-left: 0; padding: 4px"
1130
+ type="danger"
1131
+ icon="el-icon-minus"
1132
+ size="mini"
1133
+ circle>
1134
+ </el-button>
1135
+ </template>
1136
+ </el-table-column>
1137
+ </el-table>
1138
+ <!-- <el-col :span="24" style="font-weight:bold">备注信息:厂家可以重复选择,IP地址必填且不可重复</el-col> -->
1139
+ </el-form-item>
1140
+ </el-col>
1141
+ </el-tab-pane>
1142
+ </el-tabs>
1143
+ </el-row>
1144
+ </el-form>
1145
+ <!-- -->
1146
+ <span slot="footer" class="dialog-footer">
1147
+ <el-button size="small" @click="closeDialog">取 消</el-button>
1148
+ <!-- @@ v-if="showEdit || hospitalName == '新增机构'"-->
1149
+ <el-button
1150
+ size="small"
1151
+ :loading="AddHisLoading"
1152
+ type="primary"
1153
+ :disabled="toDisabled()"
1154
+ @click="addHispitalClick">
1155
+ 确 定
1156
+ </el-button>
1157
+ </span>
1158
+ </el-dialog>
1159
+
1160
+ <el-dialog
1161
+ title="秘钥信息"
1162
+ top="5vh"
1163
+ width="500px"
1164
+ :visible.sync="SecretKeyVisible"
1165
+ :close-on-click-modal="false"
1166
+ @close="closeSecretKey">
1167
+ <el-form :model="SecretKeyForm">
1168
+ <el-form-item label="appId:">{{ SecretKeyForm.uid }}</el-form-item>
1169
+ <el-form-item label="appSecret:">
1170
+ {{ SecretKeyForm.securityKey }}
1171
+ </el-form-item>
1172
+ </el-form>
1173
+ </el-dialog>
1174
+
1175
+ <el-dialog
1176
+ :title="currentDetail.hospitalName"
1177
+ :visible.sync="cloudSetVisible"
1178
+ @open="codeDialogOpen"
1179
+ top="5vh"
1180
+ width="70%">
1181
+ <div>
1182
+ <el-row v-if="warningShow">
1183
+ <el-col :span="24">
1184
+ <div class="warning">
1185
+ <div>
1186
+ <i class="el-icon-warning warning-icon"></i>
1187
+ 提示:配置文件中的路径不可以使用 \ (反斜杠),必须使用 /(正斜杠)。
1188
+ </div>
1189
+ </div>
1190
+ </el-col>
1191
+ </el-row>
1192
+ <el-tabs v-model="codeActiveName" @tab-click="handleCodeTabClick">
1193
+ <el-tab-pane label="公共配置" name="first">
1194
+ <div>
1195
+ <codemirror
1196
+ height="60vh"
1197
+ ref="cm"
1198
+ v-model="commonXmlcode"
1199
+ :options="cmOptions"
1200
+ @input="xmlCodeChange"></codemirror>
1201
+ </div>
1202
+ </el-tab-pane>
1203
+ <el-tab-pane label="getway配置" name="second">
1204
+ <div v-if="xmlShow">
1205
+ <codemirror
1206
+ style="height: 60vh"
1207
+ ref="cm"
1208
+ v-model="getWayXmlCode"
1209
+ :options="cmOptions"
1210
+ @input="xmlCodeChange"></codemirror>
1211
+ </div>
1212
+ </el-tab-pane>
1213
+ </el-tabs>
1214
+ </div>
1215
+ <span slot="footer" class="dialog-footer">
1216
+ <el-button @click="cloudSetVisible = false">取 消</el-button>
1217
+ <el-button type="primary" @click="setXmlCodeFn">确 定</el-button>
1218
+ </span>
1219
+ </el-dialog>
1220
+ </div>
1221
+ </template>
1222
+ <script>
1223
+ import { mapGetters } from 'vuex';
1224
+ import {
1225
+ addHospital,
1226
+ updateHospital,
1227
+ removeHospital,
1228
+ getHosSecurityKey,
1229
+ getHospInfo,
1230
+ hospitadlConfigUpdate,
1231
+ checkHospitalCode,
1232
+ } from '@/api/institutionSet/index';
1233
+ import institutionMonitor from '@/api/institutionMonitor/index';
1234
+ import pagination from '@crud/Pagination';
1235
+
1236
+ import CRUD, { presenter, header, crud } from '@crud/crud';
1237
+ import { downloadFile } from '@/utils/index';
1238
+ import { download } from '@/api/data';
1239
+ import { codemirror } from 'vue-codemirror';
1240
+ import 'codemirror/theme/idea.css';
1241
+ import 'codemirror/mode/sql/sql.js';
1242
+ import 'codemirror/mode/xml/xml';
1243
+ import 'codemirror/theme/monokai.css';
1244
+ import store from '@/store';
1245
+ import DateRangePicker from '@/components/DateRangePicker';
1246
+
1247
+ export default {
1248
+ name: 'institutionSet',
1249
+ cruds() {
1250
+ return CRUD({
1251
+ title: '机构管理',
1252
+ url: 'hospital/queryHospitalList',
1253
+ sort: ['updateTime,desc'],
1254
+ });
1255
+ },
1256
+ mixins: [presenter(), header(), crud()],
1257
+ data() {
1258
+ var validateHosId = (rule, value, callback) => {
1259
+ if (value === '') {
1260
+ callback(new Error('请输入组织机构代码'));
1261
+ } else {
1262
+ let data = {
1263
+ hospitalId: value,
1264
+ scenceId: this.currentDetail.scenceId,
1265
+ };
1266
+ checkHospitalCode(data).then(res => {
1267
+ if (!res) {
1268
+ callback(new Error('组织机构代码已存在'));
1269
+ } else {
1270
+ callback();
1271
+ }
1272
+ });
1273
+ }
1274
+ };
1275
+
1276
+ return {
1277
+ waterMarkProp: {
1278
+ zIndex: 1,
1279
+ devicePixelRatio: 2,
1280
+ text: '',
1281
+ showTime: true,
1282
+ },
1283
+ options: [],
1284
+ // 机构地区存取数据
1285
+ provinceList: [],
1286
+ props: {
1287
+ value: 'value',
1288
+ children: 'cities',
1289
+ label: 'label',
1290
+ checkStrictly: true,
1291
+ },
1292
+ permission: {
1293
+ editYunSet: ['datas:editYunSet'],
1294
+ basic: ['edit:basic'],
1295
+ device: ['edit:device'],
1296
+ monitor: ['edit:monitor'],
1297
+ dedicated: ['edit:dedicated'],
1298
+ },
1299
+ headerTable: [
1300
+ { label: '机构名称', prop: 'hospitalName', width: '220px' },
1301
+ { label: '机构ID', prop: 'scenceId', width: '120px' },
1302
+ { label: '机构地区', prop: 'address', width: '160px' },
1303
+ { label: '机构类别', prop: 'hospitalType', width: '120px' },
1304
+ { label: '机构等级', prop: 'level', width: '120px' },
1305
+ { label: '机构状态', prop: 'runningState', width: '100px' },
1306
+ { label: '机构所有制', prop: 'hospOwnerType', width: '120px' },
1307
+ { label: '机构IP', prop: 'hospitalIp', width: '120px' },
1308
+ { label: '带宽', prop: 'hospitalBandwidth', width: '120px' },
1309
+ { label: '是否可以联网', prop: 'isCanConnect', width: '120px' },
1310
+ { label: '是否有设备', prop: 'equipmentStatus', width: '120px' },
1311
+ { label: '是否已联网', prop: 'connectStatus', width: '120px' },
1312
+ { label: '是否有云配置', prop: 'configStatus', width: '140px' },
1313
+ // { label: "客户端是否能调阅", prop: "accessImages", width: "140px" },
1314
+ { label: 'urlKey', prop: 'urlKey', width: '80px' },
1315
+ { label: '更新时间', prop: 'updateTime', width: '160px' },
1316
+ ],
1317
+ omitData: '-',
1318
+ hospitalName: '新增机构',
1319
+ hospitalVisible: false,
1320
+ addHispotalForm: {
1321
+ hospitalName: '',
1322
+ hospitalNameAlias: [],
1323
+ hospitalId: '',
1324
+ addressHos: '',
1325
+ address: '',
1326
+ hospitalType: '',
1327
+ level: '',
1328
+ rank: '',
1329
+ runningState: '',
1330
+ isCanConnect: '',
1331
+ equipmentStatus: '',
1332
+ connectStatus: '',
1333
+ archiveFlag: '',
1334
+ joinUpState: '',
1335
+ viewType: '',
1336
+ equipmentList: [],
1337
+ monitorStatus: '0',
1338
+ lookPicHourTime: 6,
1339
+ lookPicMinuteTime: 60,
1340
+ autoUploadType: '',
1341
+ lookPicMonitor: '0', // 看图监测
1342
+ dayDataMonitor: '0', // 日报上传监测
1343
+ lookPicAbnormalMonitor: '0',
1344
+ leakageMonitor: '0',
1345
+ lookPicMonitorModality: [], // 监测模式
1346
+ qualityDataMonitor: '0', // 归档数据质量监测
1347
+ qualityDataHourTime: 168, // 归档数据质量检测-时间
1348
+ checkAcc: '0', // 校验检查项目编码
1349
+ checkAllId: '0', // 校验检查医嘱ID、申请单ID
1350
+ iuWorkStationMonitor: '0', // 客户端运行监测
1351
+ iuWorkStationHourTime: 24, // 客户端运行监测-时间
1352
+ iuWorkStationHourTimeOther: 168, // 客户端运行监测-时间 重复提醒
1353
+ hospitalIp: '',
1354
+ hospitalBandwidth: '',
1355
+ isModality: '0',
1356
+ modeExtractDataList: [],
1357
+ machineCount: 0,
1358
+ machineList: [{ factory: '', ip: '', serialNumber: '', isuse: '' }], //自助机信息
1359
+ examOssMonitor: '0', // 归档数据监测
1360
+ examRepeatMonitor: '0', // 重复检查数据监测
1361
+ examOrgMonitor: '0', // 机构编码对照监测
1362
+ },
1363
+ AddHisLoading: false,
1364
+ hospitalNameAliasArr: [{ value: '' }],
1365
+ AutomaticallyUpload: [
1366
+ { value: '1', label: '文字' },
1367
+ { value: '2', label: '文字+图像' },
1368
+ { value: '3', label: '文字但标记有图' },
1369
+ ],
1370
+ yesOrNo: [
1371
+ { value: '0', label: '否' },
1372
+ { value: '1', label: '是' },
1373
+ ],
1374
+ rules: {
1375
+ hospitalName: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
1376
+ hospitalId: [{ required: true, validator: validateHosId, trigger: 'blur' }],
1377
+ addressHos: [{ required: true, message: '请选择机构地区', trigger: 'change' }],
1378
+ hospitalType: [{ required: true, message: '请选择机构类别', trigger: 'change' }],
1379
+ level: [
1380
+ {
1381
+ required: true,
1382
+ message: '请选择机构等级',
1383
+ trigger: 'change',
1384
+ },
1385
+ ],
1386
+ runningState: [{ required: true, message: '请选择机构状态', trigger: 'change' }],
1387
+ isCanConnect: [{ required: true, message: '请选择联网状态', trigger: 'change' }],
1388
+ equipmentStatus: [{ required: true, message: '请选择是否有设备', trigger: 'change' }],
1389
+ connectStatus: [
1390
+ { required: true, message: '请选择是否已联网', trigger: 'change' },
1391
+ { required: true, message: '请选择是否已接入', trigger: 'change' },
1392
+ ],
1393
+ archiveFlag: [{ required: true, message: '请选择是否归档', trigger: 'change' }],
1394
+ joinUpState: [
1395
+ {
1396
+ required: true,
1397
+ message: '请选择接入智联网状态',
1398
+ trigger: 'change',
1399
+ },
1400
+ ],
1401
+ viewType: [{ required: true, message: '请选择图像浏览方式', trigger: 'change' }],
1402
+ hospOwnerType: [{ required: true, message: '请选择机构所有制', trigger: 'change' }],
1403
+ monitorStatus: [
1404
+ {
1405
+ required: true,
1406
+ message: '请选择是否开启监测',
1407
+ trigger: ['blur', 'change'],
1408
+ },
1409
+ ],
1410
+ },
1411
+ archiveFlagArr: [
1412
+ { value: '0', label: '否' },
1413
+ { value: '1', label: '是' },
1414
+ ],
1415
+ // 秘钥
1416
+ SecretKeyVisible: false,
1417
+ SecretKeyForm: {
1418
+ uid: '',
1419
+ securityKey: '',
1420
+ publicKey: '',
1421
+ privateKey: '',
1422
+ },
1423
+ showMiyao: false,
1424
+ showDownLoad: false,
1425
+ showEdit: false,
1426
+ activeName: 'basicInformation',
1427
+ urlKeyList: [],
1428
+ hosptilTeams: [],
1429
+ downloadLoading: false,
1430
+ cloudSetVisible: false,
1431
+ currentDetail: {},
1432
+ code: 'select a from table1 where b = 1',
1433
+ cmOptions: {
1434
+ // 语言及语法模式
1435
+ mode: 'application/xml',
1436
+ // 主题
1437
+ theme: 'monokai',
1438
+ // 显示函数
1439
+ line: true,
1440
+ lineNumbers: true,
1441
+ // 软换行
1442
+ lineWrapping: true,
1443
+ // tab宽度
1444
+ tabSize: 4,
1445
+ },
1446
+ codeActiveName: 'first',
1447
+ commonXmlcode: '',
1448
+ getWayXmlCode: '',
1449
+ xmlShow: false,
1450
+ currentXmlDetail: {},
1451
+ warningShow: true,
1452
+ isRequire: true,
1453
+ };
1454
+ },
1455
+ computed: {
1456
+ ...mapGetters(['user', 'roles']),
1457
+ },
1458
+ created() {
1459
+ // 加载机构地区
1460
+ this.getPosition(null, () => {});
1461
+ this.getUrlKeyList();
1462
+ this.getCommissionList();
1463
+ },
1464
+ mounted() {
1465
+ this.$nextTick(() => {
1466
+ this.roles.some(ele => {
1467
+ if (ele == 'datas:miyao') {
1468
+ this.showMiyao = true;
1469
+ return;
1470
+ }
1471
+ if (ele == 'datas:update') {
1472
+ this.showEdit = true;
1473
+ return;
1474
+ }
1475
+ if (ele == 'datas:download') {
1476
+ this.showDownLoad = true;
1477
+ return;
1478
+ }
1479
+ this.waterMarkProp.text = this.user.name;
1480
+ });
1481
+ });
1482
+ },
1483
+ methods: {
1484
+ lookPicAbnormalMonitorChange(value) {
1485
+ if (this.addHispotalForm.lookPicAbnormalMonitor == '1') {
1486
+ if (
1487
+ this.addHispotalForm.lookPicMonitorModality &&
1488
+ this.addHispotalForm.lookPicMonitorModality.length == 0
1489
+ ) {
1490
+ this.addHispotalForm.lookPicMonitorModality = ['全部'];
1491
+ }
1492
+ }
1493
+ this.$forceUpdate();
1494
+ },
1495
+ lookPicMonitorModalityChange(value) {
1496
+ this.$forceUpdate();
1497
+ if (value && value.length == 0) {
1498
+ this.addHispotalForm.lookPicMonitorModality = [];
1499
+ this.dict.pic_monitor_modality.forEach(tmp => {
1500
+ if (tmp.value.indexOf('全部') == -1)
1501
+ this.addHispotalForm.lookPicMonitorModality.push(tmp.label);
1502
+ });
1503
+ } else {
1504
+ if (value && value.indexOf('全部') != -1) {
1505
+ this.addHispotalForm.lookPicMonitorModality = ['全部'];
1506
+ }
1507
+ }
1508
+ },
1509
+ toDisabled() {
1510
+ if (this.hospitalName == '新增机构') {
1511
+ return false;
1512
+ } else {
1513
+ if (this.activeName == 'basicInformation') return this.checkPer(this.permission.basic);
1514
+ if (this.activeName == 'equipmentInformation') return this.checkPer(this.permission.device);
1515
+ if (this.activeName == 'monitorInfo') return this.checkPer(this.permission.monitor);
1516
+ if (this.activeName == 'specialLine') return this.checkPer(this.permission.dedicated);
1517
+ }
1518
+ return false;
1519
+ },
1520
+ getCommissionList() {
1521
+ institutionMonitor.getCommissionList().then(res => {
1522
+ this.hosptilTeams = this.menuFunc(res.content);
1523
+ });
1524
+ },
1525
+ //关闭提示
1526
+ closeWarning() {
1527
+ this.warningShow = false;
1528
+ },
1529
+ addRules() {
1530
+ // 定义规则
1531
+ const newRules = [{ required: true, trigger: 'change', message: '请选择自动上传方式' }];
1532
+ // 给rules对象添加规则
1533
+ this.rules = { ...this.rules, autoUploadType: newRules };
1534
+ },
1535
+
1536
+ removeRules() {
1537
+ this.$nextTick(() => {
1538
+ if (this.$refs.addHispotalForm) {
1539
+ this.$refs.addHispotalForm.clearValidate(['autoUploadType']);
1540
+ }
1541
+ // 清除指定校验规则
1542
+ // 这行必须
1543
+ this.rules = { ...this.rules, autoUploadType: [] };
1544
+ });
1545
+ },
1546
+ blur() {
1547
+ this.addRules();
1548
+ },
1549
+ //xml
1550
+ codeDialogOpen() {
1551
+ this.codeActiveName = 'first';
1552
+ let data = {
1553
+ hospitalId: this.currentDetail.scenceId,
1554
+ };
1555
+ getHospInfo(data).then(res => {
1556
+ const { commonConfig, config } = res.content[0] || {};
1557
+ this.commonXmlcode = commonConfig;
1558
+ this.getWayXmlCode = config;
1559
+ this.currentXmlDetail = res.content[0] || {};
1560
+ });
1561
+ },
1562
+ setXmlCodeFn() {
1563
+ const { hospitalId, scenceId, updateUser, createTime, updateTime } = this.currentXmlDetail;
1564
+ let data = {
1565
+ hospitalId,
1566
+ updateUser,
1567
+ createTime,
1568
+ updateTime,
1569
+ };
1570
+ if (this.codeActiveName == 'first') {
1571
+ data.commonConfig = this.commonXmlcode;
1572
+ }
1573
+ if (this.codeActiveName == 'second') {
1574
+ data.config = this.getWayXmlCode;
1575
+ }
1576
+ // console.log(data, "data");
1577
+ hospitadlConfigUpdate(data)
1578
+ .then(res => {
1579
+ this.$message.success('修改成功!');
1580
+ this.cloudSetVisible = false;
1581
+ })
1582
+ .catch(err => {
1583
+ console.log(err);
1584
+ this.$message.error(err.message);
1585
+ });
1586
+ },
1587
+ handleCodeTabClick(tab, event) {
1588
+ // console.log(this.codeActiveName, "config");
1589
+ this.xmlShow = false;
1590
+ setTimeout(() => {
1591
+ this.xmlShow = true;
1592
+ }, 500);
1593
+ },
1594
+ // 递归修改删除空值
1595
+ menuFunc(childrenMap) {
1596
+ return childrenMap.map(item => {
1597
+ if (item.children && item.children.length) {
1598
+ this.menuFunc(item.children);
1599
+ } else {
1600
+ delete item.children;
1601
+ }
1602
+ return item;
1603
+ });
1604
+ },
1605
+ download() {
1606
+ if (this.crud.data.length != 0) {
1607
+ this.downloadLoading = true;
1608
+ download('hospital/downloadHospital', this.query)
1609
+ .then(result => {
1610
+ this.downloadLoading = false;
1611
+ })
1612
+ .catch(e => {
1613
+ downloadFile(e, '机构详情', 'xlsx');
1614
+ this.downloadLoading = false;
1615
+ });
1616
+ } else {
1617
+ this.$message.error('没有相关详情数据, 无法导出');
1618
+ }
1619
+ },
1620
+ // urlKey
1621
+ getUrlKeyList() {
1622
+ institutionMonitor.getUrlKeyList().then(res => {
1623
+ this.urlKeyList = res.content;
1624
+ });
1625
+ },
1626
+ forceUpdate() {
1627
+ this.$forceUpdate(); // 强制刷新
1628
+ },
1629
+ // 重置
1630
+ resetQueryClick() {
1631
+ Object.keys(this.query).map(key => {
1632
+ this.query[key] = '';
1633
+ });
1634
+ // this.crud.toQuery();
1635
+ this.crud.resetQuery();
1636
+ },
1637
+ // 一级二级改变的时候调取下一级数据
1638
+ handleItemChange(val) {
1639
+ this.getPosition(val);
1640
+ },
1641
+ provinceChange(event) {
1642
+ const checkedNode = this.$refs['cascaderArr'].getCheckedNodes();
1643
+ let str = '';
1644
+ checkedNode[0].pathLabels.forEach(ele => {
1645
+ str += ele;
1646
+ });
1647
+ this.addHispotalForm.address = str;
1648
+ },
1649
+ // 地区联动获取数据
1650
+ getPosition(val, cb) {
1651
+ let vm = this; //查询省市县
1652
+ let params = { parent: 1 };
1653
+ if (!val) {
1654
+ //初始化加载 获取所有省份数据
1655
+ params = { parent: 1 };
1656
+ } else if (val.length === 1) {
1657
+ //加载二级 获取市级数据
1658
+ params = { parent: val[0] };
1659
+ } else {
1660
+ //加载3级 获取县级数据
1661
+ params = { parent: val[1] };
1662
+ }
1663
+ institutionMonitor
1664
+ .queryNation(params)
1665
+ .then(res => {
1666
+ if (!val) {
1667
+ //初始化加载 查询省份数据
1668
+ vm.provinceList = res.content.map(e => {
1669
+ return {
1670
+ value: e.saleid,
1671
+ label: e.province,
1672
+ cities: [],
1673
+ };
1674
+ });
1675
+ } else if (val.length === 1) {
1676
+ //加载二级 查询该省下市级数据
1677
+ vm.provinceList.map(item => {
1678
+ if (item.value === val[0]) {
1679
+ item.cities = res.content.map(e => {
1680
+ return {
1681
+ value: e.saleid,
1682
+ label: e.city || e.county,
1683
+ cities: [],
1684
+ };
1685
+ });
1686
+ }
1687
+ });
1688
+ } else {
1689
+ //加载3级 查询该省市下县级数据
1690
+ vm.provinceList.map(item => {
1691
+ if (item.value === val[0]) {
1692
+ item.cities.map(value => {
1693
+ if (value.value === val[1]) {
1694
+ value.cities = res.content.map(e => {
1695
+ return { value: e.saleid, label: e.county };
1696
+ });
1697
+ }
1698
+ });
1699
+ }
1700
+ });
1701
+ }
1702
+ cb && cb(res);
1703
+ })
1704
+ .catch(err => {
1705
+ console.log(err);
1706
+ });
1707
+ },
1708
+ // 返回机构类别对应的名称
1709
+ hosCategory(category) {
1710
+ return this.dict.label.ins_category[category];
1711
+ },
1712
+ // 返回机构等级(级)对应的名称
1713
+ hosRank(rank) {
1714
+ return this.dict.label.agency_hos_rank[rank];
1715
+ },
1716
+ // 机构状态
1717
+ hosState(state) {
1718
+ return this.dict.label.running_status[state];
1719
+ },
1720
+ // 是否可以联网
1721
+ hosCanConnect(state) {
1722
+ return this.dict.label.can_connect[state];
1723
+ },
1724
+ // 是否有设备
1725
+ hosEquipmentStatus(state) {
1726
+ return this.dict.label.equipment_status[state];
1727
+ },
1728
+ // 是否已联网
1729
+ hosConnectStatus(state) {
1730
+ return this.dict.label.connect_status[state];
1731
+ },
1732
+ // 机构所有制
1733
+ hosHospOwnerType(state) {
1734
+ return this.dict.label.hosp_owner_type[state];
1735
+ },
1736
+ // 是否云配置
1737
+ configStatus(state) {
1738
+ return this.dict.label.config_status[state];
1739
+ },
1740
+ // 新增机构
1741
+ addQueryHospitailClick() {
1742
+ this.currentDetail = {};
1743
+ this.hospitalName = '新增机构';
1744
+ this.activeName = 'basicInformation';
1745
+ let equipmentList = [];
1746
+ // console.log(this.dict.equipment_default_name);
1747
+ this.dict.equipment_default_name.forEach(tmp => {
1748
+ let data = {
1749
+ equipmentCount: '',
1750
+ equipmentCode: tmp.value,
1751
+ equipmentName: tmp.label,
1752
+ equipmentShow: false,
1753
+ manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
1754
+ };
1755
+ equipmentList.push(data);
1756
+ });
1757
+ this.addHispotalForm.equipmentList = equipmentList;
1758
+ this.hospitalVisible = true;
1759
+ this.addHispotalForm.monitorStatus = '0';
1760
+ this.addHispotalForm.lookPicHourTime = 6;
1761
+ this.addHispotalForm.lookPicMinuteTime = 60;
1762
+ this.addHispotalForm.modeExtractDataList = this.dict.modality.map(item => item.value);
1763
+ },
1764
+ //云配置弹窗
1765
+ cloudSet(row) {
1766
+ // console.log(row);
1767
+ sessionStorage.setItem('cloudSet', JSON.stringify(row));
1768
+ store.dispatch('setcloudset', row);
1769
+ this.$router.push({
1770
+ name: 'cloudSet',
1771
+ });
1772
+ },
1773
+ //xml编辑器
1774
+ //xml编辑器
1775
+ xmlCodeChange(content) {
1776
+ this.$nextTick(() => {
1777
+ console.log('code:' + this.code);
1778
+ console.log('content:' + content);
1779
+ });
1780
+ },
1781
+ toAddRecord(row) {
1782
+ this.currentDetail = row;
1783
+ institutionMonitor.getHospInfo({ scenceId: row.scenceId }).then(res => {
1784
+ this.dict.equipment_name.forEach(tmp => (tmp.disabled = false));
1785
+ this.activeName = 'basicInformation';
1786
+ this.hospitalName = '修改机构';
1787
+ let addressHos = [row.province];
1788
+ this.getPosition([row.province]);
1789
+ // 机构地区回显
1790
+ if (row.city != '') {
1791
+ setTimeout(() => {
1792
+ this.getPosition([row.province, row.city]);
1793
+ }, 500);
1794
+ addressHos.push(row.city);
1795
+ }
1796
+ if (row.district != '') {
1797
+ addressHos.push(row.district);
1798
+ }
1799
+ this.hospitalNameAliasArr = [];
1800
+ // 机构别称
1801
+ if (res.hospitalNameAlias && res.hospitalNameAlias.length != 0) {
1802
+ let arr = res.hospitalNameAlias.split(',');
1803
+ arr.forEach(ele => {
1804
+ this.hospitalNameAliasArr.push({ value: ele });
1805
+ });
1806
+ } else {
1807
+ this.hospitalNameAliasArr.push({ value: '' });
1808
+ }
1809
+ let equipmentList = [];
1810
+ if (res.equipmentList && res.equipmentList.length > 0) {
1811
+ equipmentList = res.equipmentList;
1812
+ let dict_name = [...this.dict.equipment_default_name, ...this.dict.equipment_name];
1813
+ // console.log(dict_name);
1814
+ dict_name.forEach(tmp => {
1815
+ // console.log(tmp.label);
1816
+ tmp.disabled = false;
1817
+ equipmentList.forEach(res => {
1818
+ tmp.equipmentShow = false;
1819
+ if (tmp.label == res.equipmentName) {
1820
+ res.equipmentCode = tmp.value;
1821
+ tmp.disabled = true;
1822
+ }
1823
+ });
1824
+ });
1825
+ } else {
1826
+ this.dict.equipment_default_name.forEach(tmp => {
1827
+ let data = {
1828
+ equipmentCount: '',
1829
+ equipmentName: tmp.label,
1830
+ equipmentShow: false,
1831
+ equipmentCode: tmp.value,
1832
+ manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
1833
+ };
1834
+ equipmentList.push(data);
1835
+ });
1836
+ }
1837
+ // console.log(equipmentList, "eeeee");
1838
+ res.equipmentList.forEach((tmp, index) => {
1839
+ // if (index > 2) {
1840
+ // tmp.equipmentShow = true;
1841
+ // }
1842
+ if (tmp.manufacturer && tmp.manufacturer.length == 0) {
1843
+ tmp.manufacturer.push({ manufacturer: '', manufacturerCount: '' });
1844
+ }
1845
+ // tmp.manufacturer = tmp.manufacturer.filter(x => x.manufacturer)
1846
+ });
1847
+ if (res.lookPicMonitor == 1) {
1848
+ this.addRules();
1849
+ } else {
1850
+ this.removeRules();
1851
+ }
1852
+ res.lookPicMonitorModality = res.lookPicMonitorModality
1853
+ ? res.lookPicMonitorModality.split(',')
1854
+ : [];
1855
+ console.log(res.lookPicMonitorModality, '74563----');
1856
+
1857
+ // 设备信息
1858
+ this.addHispotalForm = {
1859
+ ...row,
1860
+ ...res,
1861
+ addressHos: addressHos,
1862
+ hospitalType: row.hospitalType != undefined ? row.hospitalType + '' : '',
1863
+ level: row.level != undefined ? row.level + '' : '',
1864
+ rank: row.rank != undefined ? row.rank + '' : '',
1865
+ runningState: row.runningState != undefined ? row.runningState + '' : '',
1866
+ equipmentList: equipmentList,
1867
+ iuWorkStationHourTimeOther:
1868
+ res.iuWorkStationHourTimeOther == 0 ? 168 : res.iuWorkStationHourTimeOther,
1869
+ modeExtractDataList:
1870
+ res.strModality && res.strModality.length > 0 ? res.strModality.split(',') : [],
1871
+ };
1872
+ // 自助机信息
1873
+ if (!res.machineList.length) {
1874
+ this.addHispotalForm.machineList = [{ factory: '', ip: '', serialNumber: '', isuse: '' }];
1875
+ }
1876
+ this.addHispotalForm.machineCount = res.machineList.length;
1877
+ setTimeout(() => {
1878
+ this.hospitalVisible = true;
1879
+ // 监测信息如果看图监测设置开启,监测模式为空,自动勾选全部
1880
+ if (
1881
+ this.addHispotalForm.lookPicMonitorModality.length == 0 &&
1882
+ this.addHispotalForm.lookPicMonitorModality &&
1883
+ this.addHispotalForm.lookPicAbnormalMonitor == 1
1884
+ ) {
1885
+ this.lookPicAbnormalMonitorChange(res.lookPicAbnormalMonitor);
1886
+ }
1887
+ this.$nextTick(() => {
1888
+ this.$refs['addHispotalForm'].clearValidate();
1889
+ });
1890
+ }, 200);
1891
+ });
1892
+ },
1893
+ // 是否开启监测
1894
+ monitorChange(e) {
1895
+ // e == 1 开启
1896
+ if (e == 1) {
1897
+ this.addHispotalForm.lookPicMonitor = '1'; // 看图监测
1898
+ this.addHispotalForm.dayDataMonitor = '1'; // 日报上传监测
1899
+ this.addHispotalForm.lookPicAbnormalMonitor = '0';
1900
+ this.addHispotalForm.lookPicMonitorModality = [];
1901
+ this.addHispotalForm.leakageMonitor = '0';
1902
+ this.addHispotalForm.examOssMonitor = '0'; // 检查项目编码-归档
1903
+ this.addHispotalForm.examRepeatMonitor = '0'; // 检查项目编码-重复
1904
+ this.addHispotalForm.examOrgMonitor = '0'; // 检查项目编码-对照
1905
+ this.addRules();
1906
+ } else {
1907
+ // 否
1908
+ this.addHispotalForm.lookPicMonitor = '0'; // 看图监测
1909
+ this.addHispotalForm.lookPicAbnormalMonitor = '0';
1910
+ this.addHispotalForm.lookPicMonitorModality = [];
1911
+ this.addHispotalForm.leakageMonitor = '0';
1912
+ this.addHispotalForm.iuWorkStationMonitor = '0'; // 客户端运行监测
1913
+ this.addHispotalForm.dayDataMonitor = '0'; // 日报上传监测
1914
+ this.addHispotalForm.qualityDataMonitor = '0'; // 归档数据质量监测
1915
+ this.addHispotalForm.examOssMonitor = '0'; // 检查项目编码-归档
1916
+ this.addHispotalForm.examRepeatMonitor = '0'; // 检查项目编码-重复
1917
+ this.addHispotalForm.examOrgMonitor = '0'; // 检查项目编码-对照
1918
+ this.removeRules();
1919
+ }
1920
+ },
1921
+ // 删除
1922
+ monitorPath(row) {
1923
+ // console.log("1", row);
1924
+ this.$confirm('确定要删除该机构吗?', '提示', {
1925
+ confirmButtonText: '确定',
1926
+ cancelButtonText: '取消',
1927
+ type: 'warning',
1928
+ })
1929
+ .then(() => {
1930
+ let params = {
1931
+ scenceId: row.scenceId,
1932
+ };
1933
+ // console.log("11", params);
1934
+ removeHospital(params)
1935
+ .then(res => {
1936
+ this.$message.success('删除成功');
1937
+ this.crud.refresh();
1938
+ })
1939
+ .catch(err => {});
1940
+ })
1941
+ .catch(() => {});
1942
+ },
1943
+ // 秘钥
1944
+ SecretKey(row) {
1945
+ getHosSecurityKey({
1946
+ hospitalId: row.scenceId,
1947
+ hospitalName: row.hospitalName,
1948
+ })
1949
+ .then(res => {
1950
+ this.SecretKeyVisible = true;
1951
+ this.SecretKeyForm = {
1952
+ ...res,
1953
+ };
1954
+ })
1955
+ .catch(err => {});
1956
+ },
1957
+ // 秘钥
1958
+ SecretKey1(row) {
1959
+ getHospitalSm2Key({
1960
+ hospitalId: row.scenceId,
1961
+ hospitalName: row.hospitalName,
1962
+ })
1963
+ .then(res => {
1964
+ this.SecretKeyVisible1 = true;
1965
+ this.SecretKeyForm = {
1966
+ ...res,
1967
+ };
1968
+ })
1969
+ .catch(err => {});
1970
+ },
1971
+ closeSecretKey() {
1972
+ this.SecretKeyForm = {
1973
+ uid: '',
1974
+ securityKey: '',
1975
+ publicKey: '',
1976
+ privateKey: '',
1977
+ };
1978
+ this.SecretKeyVisible = false;
1979
+ },
1980
+ // 获取数据前设置好接口地址
1981
+ [CRUD.HOOK.beforeRefresh](crud) {
1982
+ if (crud.query.address && crud.query.address.length != 0) {
1983
+ if (crud.query.address[0]) {
1984
+ crud.query.province = crud.query.address[0];
1985
+ }
1986
+ if (crud.query.address[1]) {
1987
+ crud.query.city = crud.query.address[1];
1988
+ } else {
1989
+ crud.query.city = '';
1990
+ }
1991
+ if (crud.query.address[2]) {
1992
+ crud.query.district = crud.query.address[2];
1993
+ } else {
1994
+ crud.query.district = '';
1995
+ }
1996
+ } else {
1997
+ crud.query.province = '';
1998
+ crud.query.city = '';
1999
+ crud.query.district = '';
2000
+ }
2001
+ },
2002
+ closeDialog() {
2003
+ this.addHispotalForm = {
2004
+ hospitalName: '',
2005
+ hospitalNameAlias: [],
2006
+ hospitalId: '',
2007
+ addressHos: '',
2008
+ hospitalType: '',
2009
+ level: '',
2010
+ rank: '',
2011
+ runningState: '',
2012
+ isCanConnect: '',
2013
+ equipmentStatus: '',
2014
+ connectStatus: '',
2015
+ archiveFlag: '',
2016
+ joinUpState: '',
2017
+ viewType: '',
2018
+ equipmentList: [],
2019
+ monitorStatus: 0,
2020
+ lookPicMonitor: '0', // 看图监测
2021
+ dayDataMonitor: '0', // 日报上传监测
2022
+ qualityDataMonitor: '0', // 归档数据质量监测
2023
+ qualityDataHourTime: 168, // 归档数据质量检测-时间
2024
+ checkAcc: '0', // 校验检查项目编码
2025
+ checkAllId: '0', // 校验检查医嘱ID、申请单ID
2026
+ iuWorkStationMonitor: '0', // 皖医互通运行监测
2027
+ iuWorkStationHourTime: 24, // 客户端运行监测-时间
2028
+ iuWorkStationHourTimeOther: 168, // 客户端运行监测-时间 重复提醒
2029
+ // machineInfoHourTime: 6, // 自助机信息监测-时间
2030
+ isModality: '0',
2031
+ machineCount: 0,
2032
+ modeExtractDataList: [],
2033
+ lookPicMonitorModality: [], // 监测信息-监测模式
2034
+ machineList: [{ factory: '', ip: '', serialNumber: '', isuse: '' }], //自助机信息
2035
+ };
2036
+ this.$refs['addHispotalForm'].resetFields();
2037
+ this.hospitalNameAliasArr = [{ value: '' }];
2038
+ this.hospitalVisible = false;
2039
+ this.isRequire = true;
2040
+ },
2041
+ addHispitalClick() {
2042
+ console.log('this.addHispotalForm', this.addHispotalForm);
2043
+ this.$nextTick(() => {
2044
+ this.$refs['addHispotalForm'].validate((valid, obj) => {
2045
+ if (valid) {
2046
+ let isNext = true;
2047
+ // 机构别称
2048
+ if (this.hospitalNameAliasArr.length != 1) {
2049
+ let nameArr = [];
2050
+ this.hospitalNameAliasArr.some((ele, index) => {
2051
+ if (ele.value == '') {
2052
+ setTimeout(() => {
2053
+ this.$message.warning(`机构别称第 ${index + 1} 列为空`);
2054
+ }, 20);
2055
+ isNext = false;
2056
+ return true;
2057
+ }
2058
+ if (isNext) {
2059
+ if (nameArr.includes(ele.value)) {
2060
+ setTimeout(() => {
2061
+ this.$message.warning(`机构别称有重复项`);
2062
+ }, 20);
2063
+ isNext = false;
2064
+ return true;
2065
+ }
2066
+ nameArr.push(ele.value);
2067
+ }
2068
+ });
2069
+ }
2070
+ let hospitalNameAlias = []; // 机构别称数组
2071
+ this.hospitalNameAliasArr.forEach(ele => {
2072
+ hospitalNameAlias.push(ele.value);
2073
+ });
2074
+
2075
+ this.addHispotalForm.equipmentList = this.addHispotalForm.equipmentList.filter(
2076
+ tmp => tmp.equipmentName
2077
+ );
2078
+ this.addHispotalForm.equipmentList.forEach(tmp => {
2079
+ tmp.manufacturer = tmp.manufacturer.filter(x => x.manufacturer);
2080
+ });
2081
+ // 监测信息
2082
+ if (
2083
+ this.addHispotalForm.monitorStatus == '1' &&
2084
+ this.addHispotalForm.lookPicMonitor == '0'
2085
+ ) {
2086
+ this.activeName = 'monitorInfo';
2087
+ return this.$message.error('请选择看图监测');
2088
+ }
2089
+
2090
+ let params = {
2091
+ ...this.addHispotalForm,
2092
+ hospitalNameAlias: hospitalNameAlias.join(),
2093
+ province: this.addHispotalForm.addressHos[0],
2094
+ city:
2095
+ this.addHispotalForm.addressHos[1] != undefined
2096
+ ? this.addHispotalForm.addressHos[1]
2097
+ : '',
2098
+ district:
2099
+ this.addHispotalForm.addressHos[2] != undefined
2100
+ ? this.addHispotalForm.addressHos[2]
2101
+ : '',
2102
+ strModality: this.addHispotalForm.modeExtractDataList.join(','),
2103
+ };
2104
+ //自助机信息过滤没有填的数据
2105
+ params.machineList = params.machineList.filter(
2106
+ item => item.factory || item.ip || item.serialNumber || item.isuse
2107
+ );
2108
+ let arr = [undefined, '', null];
2109
+ // 是否监测是否开启
2110
+ if (params.monitorStatus == '1') {
2111
+ if (arr.includes(params.lookPicHourTime) || arr.includes(params.lookPicMinuteTime)) {
2112
+ this.activeName = 'monitorInfo';
2113
+ return this.$message.warning('请填写监测时间');
2114
+ }
2115
+ } else {
2116
+ params.lookPicMonitor = '0'; // 看图监测
2117
+ }
2118
+ // 客户端运行监测
2119
+ if (params.iuWorkStationMonitor == '1') {
2120
+ if (arr.includes(params.iuWorkStationHourTime)) {
2121
+ this.activeName = 'monitorInfo';
2122
+ return this.$message.warning('请填写监测时间');
2123
+ }
2124
+ if (arr.includes(params.iuWorkStationHourTimeOther)) {
2125
+ this.activeName = 'monitorInfo';
2126
+ return this.$message.warning('请填写监测时间');
2127
+ }
2128
+ }
2129
+ // 归档数据质量监测
2130
+ if (params.qualityDataMonitor == '1') {
2131
+ if (arr.includes(params.qualityDataHourTime)) {
2132
+ this.activeName = 'monitorInfo';
2133
+ return this.$message.warning('请填写监测时间');
2134
+ }
2135
+ } else {
2136
+ params.checkAcc = '0'; // 校验检查项目编码
2137
+ params.checkAllId = '0'; // 校验检查医嘱ID、申请单ID
2138
+ }
2139
+ // 监测信息 - 监测模式
2140
+ params.lookPicMonitorModality =
2141
+ params.lookPicAbnormalMonitor == '1' ? params.lookPicMonitorModality.join(',') : '';
2142
+ delete params.gatewayStatus;
2143
+ delete params.lookPicStatus;
2144
+ delete params.modeExtractDataList;
2145
+ if (isNext) {
2146
+ this.AddHisLoading = true;
2147
+ if (this.hospitalName == '新增机构') {
2148
+ addHospital(params)
2149
+ .then(res => {
2150
+ this.$message.success('新增成功');
2151
+ this.AddHisLoading = false;
2152
+ this.crud.refresh();
2153
+ this.closeDialog();
2154
+ })
2155
+ .catch(err => {
2156
+ this.AddHisLoading = false;
2157
+ });
2158
+ } else {
2159
+ updateHospital(params)
2160
+ .then(res => {
2161
+ this.$message.success('修改成功');
2162
+ this.AddHisLoading = false;
2163
+ this.crud.refresh();
2164
+ this.closeDialog();
2165
+ })
2166
+ .catch(err => {
2167
+ this.AddHisLoading = false;
2168
+ });
2169
+ }
2170
+ }
2171
+ } else {
2172
+ this.activeName = 'basicInformation';
2173
+ this.$message.warning('请先将基本信息填写完成');
2174
+ return false;
2175
+ }
2176
+ });
2177
+ });
2178
+ },
2179
+ // 添加机构别称
2180
+ addOtherName() {
2181
+ let isNext = true;
2182
+ this.hospitalNameAliasArr.some(ele => {
2183
+ if (ele.value == '') {
2184
+ this.$message.warning('存在机构别称为空');
2185
+ isNext = false;
2186
+ return true;
2187
+ }
2188
+ });
2189
+ if (isNext) {
2190
+ this.hospitalNameAliasArr.push({
2191
+ value: '',
2192
+ });
2193
+ }
2194
+ },
2195
+ // 删除机构别称
2196
+ removeOtherName(index) {
2197
+ this.hospitalNameAliasArr.splice(index, 1);
2198
+ },
2199
+ // 选择设备
2200
+ equipmentNameChange(val, index) {
2201
+ this.dict.equipment_name.forEach(item => {
2202
+ item.disabled = false;
2203
+ this.addHispotalForm.equipmentList.forEach((tmp, key) => {
2204
+ if (tmp.equipmentName == val) item.equipmentCode = val;
2205
+ if (item.label == tmp.equipmentName) {
2206
+ item.disabled = true;
2207
+ tmp.equipmentCode = item.value;
2208
+ }
2209
+ });
2210
+ // console.log(this.addHispotalForm.equipmentList);
2211
+ });
2212
+ },
2213
+ // 选择厂家
2214
+ manufacturerChange(value, index, index1) {
2215
+ if (!this.addHispotalForm.equipmentList[index].equipmentName) {
2216
+ this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturer = '';
2217
+ this.$message.warning('请先选择设备名称');
2218
+ } else {
2219
+ if (!value)
2220
+ this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturerCount = '';
2221
+ this.addHispotalForm.equipmentList[index].manufacturer.forEach((row, rowIndex) => {
2222
+ if (index1 != rowIndex) {
2223
+ if (row.manufacturer == value) {
2224
+ this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturer = '';
2225
+ this.addHispotalForm.equipmentList[index].manufacturer[index1].manufacturerCount = '';
2226
+ this.$message.error('该厂家已存在,请重新选择');
2227
+ }
2228
+ }
2229
+ });
2230
+ }
2231
+ },
2232
+ // 设备继续添加
2233
+ equipmentAdd() {
2234
+ this.addHispotalForm.equipmentList.push({
2235
+ equipmentCount: '',
2236
+ equipmentName: '',
2237
+ equipmentShow: true,
2238
+ equipmentCode: '',
2239
+ manufacturer: [{ manufacturer: '', manufacturerCount: '' }],
2240
+ });
2241
+ },
2242
+ manufacturerAdd(id, idw) {
2243
+ if (
2244
+ !this.addHispotalForm.equipmentList[id].manufacturer[idw].manufacturer &&
2245
+ !this.addHispotalForm.equipmentList[id].manufacturer[idw].manufacturerCount
2246
+ ) {
2247
+ this.$message.warning('请先选择厂家,并输入总台数');
2248
+ return;
2249
+ }
2250
+ this.addHispotalForm.equipmentList[id].manufacturer.push({
2251
+ manufacturer: '',
2252
+ manufacturerCount: '',
2253
+ });
2254
+ },
2255
+ manufacturerDel(index, index1) {
2256
+ this.inputChange('', 'manufacturerCount', index, index1);
2257
+ this.addHispotalForm.equipmentList[index].manufacturer.splice(index1, 1);
2258
+ },
2259
+ deldeleteRed(index) {
2260
+ this.addHispotalForm.equipmentList.splice(index, 1);
2261
+ this.equipmentNameChange();
2262
+ },
2263
+
2264
+ inputChange(value, name, num, tmplemp) {
2265
+ // console.log(value, name);
2266
+ // 只能输入数字
2267
+ this.$nextTick(() => {
2268
+ if (value) {
2269
+ value = value.replace(/\D/g, '').replace(/^0+(?=\d)/, '');
2270
+ if (name == 'equipmentCount') {
2271
+ this.addHispotalForm.equipmentList.forEach((tmp, index) => {
2272
+ if (this.addHispotalForm.equipmentList[num].equipmentName) {
2273
+ if (index == num) tmp.equipmentCount = value;
2274
+ } else {
2275
+ if (index == num) {
2276
+ tmp.equipmentCount = '';
2277
+ this.$message.warning('请先选择设备名称');
2278
+ }
2279
+ }
2280
+ });
2281
+ } else if (name == 'manufacturerCount') {
2282
+ let number = 0;
2283
+ this.addHispotalForm.equipmentList[num].manufacturer.forEach((tmp, index) => {
2284
+ // console.log(
2285
+ // this.addHispotalForm.equipmentList[num].equipmentName,
2286
+ // this.addHispotalForm.equipmentList[num].manufacturer[tmplemp].manufacturer
2287
+ // );
2288
+ if (
2289
+ this.addHispotalForm.equipmentList[num].equipmentName &&
2290
+ this.addHispotalForm.equipmentList[num].manufacturer[tmplemp].manufacturer
2291
+ ) {
2292
+ number = number + Number(tmp.manufacturerCount);
2293
+ // console.log(number);
2294
+ this.addHispotalForm.equipmentList[num].equipmentCount = number;
2295
+ // if (
2296
+ // Number(this.addHispotalForm.equipmentList[num].equipmentCount) < number
2297
+ // ) {
2298
+
2299
+ // } else {
2300
+ // if (index == tmplemp) tmp.manufacturerCount = value;
2301
+ // }
2302
+ } else {
2303
+ if (index == tmplemp) {
2304
+ tmp.manufacturerCount = '';
2305
+ if (!this.addHispotalForm.equipmentList[num].equipmentName) {
2306
+ this.$message.warning('请先选择设备名称');
2307
+ } else if (!this.addHispotalForm.equipmentList[num].manufacturer) {
2308
+ this.$message.warning('请先选择厂家');
2309
+ }
2310
+ }
2311
+ }
2312
+ });
2313
+ }
2314
+ } else {
2315
+ if (name == 'manufacturerCount') {
2316
+ let number = 0;
2317
+ this.addHispotalForm.equipmentList[num].manufacturer.forEach((tmp, index) => {
2318
+ if (this.addHispotalForm.equipmentList[num].equipmentName) {
2319
+ number = number + Number(tmp.manufacturerCount);
2320
+
2321
+ this.addHispotalForm.equipmentList[num].equipmentCount = number;
2322
+ // if (
2323
+ // Number(this.addHispotalForm.equipmentList[num].equipmentCount) < number
2324
+ // ) {
2325
+
2326
+ // } else {
2327
+ // if (index == tmplemp) tmp.manufacturerCount = value;
2328
+ // }
2329
+ } else {
2330
+ if (index == tmplemp) {
2331
+ tmp.manufacturerCount = '';
2332
+ if (!this.addHispotalForm.equipmentList[num].equipmentName) {
2333
+ this.$message.warning('请先选择设备名称');
2334
+ } else if (!this.addHispotalForm.equipmentList[num].manufacturer) {
2335
+ this.$message.warning('请先选择厂家');
2336
+ }
2337
+ }
2338
+ }
2339
+ });
2340
+ }
2341
+ }
2342
+ this.$forceUpdate();
2343
+ });
2344
+ },
2345
+ // 自助机数量和单个数量change
2346
+ inputMachineChange() {
2347
+ this.addHispotalForm.machineCount = this.addHispotalForm.machineList.filter(
2348
+ item => item.factory || item.ip || item.serialNumber || item.isuse
2349
+ ).length;
2350
+ },
2351
+ // 自助机信息厂家数量增加或减少
2352
+ hardwareManufacturerAdd(item, index) {
2353
+ let list = [];
2354
+ let list1 = [];
2355
+ this.$refs.addHispotalForm.validateField(
2356
+ [
2357
+ `machineList.${index}.ip`,
2358
+ `machineList.${index}.factory`,
2359
+ `machineList.${index}.serialNumber`,
2360
+ `machineList.${index}.isuse`,
2361
+ ],
2362
+ async errorMsg => {
2363
+ console.log('errorMsg', list, errorMsg);
2364
+
2365
+ if (errorMsg != '') {
2366
+ list.push(errorMsg);
2367
+ // console.log(list);
2368
+ if (list.length == 4 && list.every(item => item === '')) {
2369
+ }
2370
+ } else {
2371
+ list1.push(errorMsg);
2372
+ }
2373
+ if (list1.length == 4) {
2374
+ this.addHispotalForm.machineList.push({
2375
+ factory: '',
2376
+ ip: '',
2377
+ serialNumber: '',
2378
+ isuse: '',
2379
+ });
2380
+ }
2381
+ }
2382
+ );
2383
+ },
2384
+ hardwareManufacturerDel(item, index) {
2385
+ this.addHispotalForm.machineList.splice(index, 1);
2386
+ this.inputMachineChange();
2387
+ },
2388
+ hardwareManufacturerChange(item) {
2389
+ if (item && item['factory']) {
2390
+ this.requiredMachineInfo(item, 'ip');
2391
+ }
2392
+ this.inputMachineChange();
2393
+ },
2394
+ },
2395
+
2396
+ components: {
2397
+ pagination,
2398
+ codemirror,
2399
+ DateRangePicker,
2400
+ },
2401
+ dicts: [
2402
+ 'ins_category',
2403
+ 'agency_hos_rank',
2404
+ 'running_status',
2405
+ 'can_connect',
2406
+ 'archive_status',
2407
+ 'equipment_status',
2408
+ 'connect_status',
2409
+ 'view_type',
2410
+ 'hosp_owner_type',
2411
+ 'equipment_manufactor',
2412
+ 'equipment_name',
2413
+ 'equipment_default_name',
2414
+ 'config_status',
2415
+ 'modality',
2416
+ 'pic_monitor_modality',
2417
+ 'machine_factory',
2418
+ ],
2419
+ };
2420
+ </script>
2421
+ <style lang="scss">
2422
+ .costContent {
2423
+ .el-form-item__content {
2424
+ margin-left: 0 !important;
2425
+ }
2426
+ }
2427
+ </style>
2428
+ <style lang="scss" scoped>
2429
+ .institutionSet {
2430
+ ::v-deep .el-button.filter-item {
2431
+ color: #1890ff;
2432
+ border: 1px solid #1890ff;
2433
+ }
2434
+ ::v-deep.el-dialog__body {
2435
+ padding: 5px 20px !important;
2436
+ }
2437
+ ::v-deep.el-dialog__footer {
2438
+ padding: 10px;
2439
+ padding-top: 10px;
2440
+ }
2441
+
2442
+ ::v-deep.el-radio-group {
2443
+ margin-bottom: 0 !important;
2444
+ }
2445
+ .form-inline-hospital {
2446
+ position: relative;
2447
+ background-color: #fff;
2448
+ // z-index: 10;
2449
+ }
2450
+
2451
+ .addHispotalDialog {
2452
+ ::v-deep.el-dialog__body {
2453
+ padding: 20px;
2454
+ padding-bottom: 0;
2455
+ }
2456
+ .addHispotalStyle {
2457
+ ::v-deep.el-form-item {
2458
+ margin-bottom: 16px;
2459
+ }
2460
+ ::v-deep.basicInformation .el-input {
2461
+ width: 230px;
2462
+ }
2463
+ .inputNumber {
2464
+ display: flex;
2465
+ padding: 10px 0;
2466
+ span {
2467
+ padding: 0px 5px;
2468
+ }
2469
+ ::v-deep .el-input {
2470
+ width: 100px;
2471
+ }
2472
+ ::v-deep .el-input-number--small {
2473
+ width: 100px;
2474
+ }
2475
+ }
2476
+ .otherInputNumberStyle {
2477
+ height: 70px;
2478
+ padding: 0;
2479
+ flex-wrap: wrap;
2480
+ }
2481
+ .addStyle {
2482
+ font-size: 24px;
2483
+ color: #1890ff;
2484
+ cursor: pointer;
2485
+ vertical-align: top;
2486
+ margin-top: 4px;
2487
+ margin-left: 5px;
2488
+ }
2489
+ .reduceStyle {
2490
+ font-size: 24px;
2491
+ color: #d92929;
2492
+ cursor: pointer;
2493
+ margin-left: 4px;
2494
+ vertical-align: top;
2495
+ margin-top: 5px;
2496
+ }
2497
+ }
2498
+ }
2499
+ .gatewayCounty {
2500
+ ::v-deep.el-form-item {
2501
+ margin-bottom: 0 !important;
2502
+ }
2503
+ }
2504
+ }
2505
+ .tabsInform {
2506
+ ::v-deep.el-tabs__content {
2507
+ height: 67vh;
2508
+ overflow: auto;
2509
+ }
2510
+
2511
+ .titleTip {
2512
+ color: #111;
2513
+ font-weight: bold;
2514
+ padding: 10px;
2515
+ position: relative;
2516
+ font-size: 14px;
2517
+ &::before {
2518
+ content: '';
2519
+ position: absolute;
2520
+ left: 0px;
2521
+ display: inline-block;
2522
+ width: 5px;
2523
+ height: 16px;
2524
+ background-color: #0089ff;
2525
+ }
2526
+ }
2527
+ }
2528
+ .deldeleteRed {
2529
+ &.el-button--text {
2530
+ color: #d92929;
2531
+ }
2532
+ }
2533
+ </style>
2534
+ <style lang="scss" scoped>
2535
+ .warning {
2536
+ height: 34px;
2537
+ background-color: #fff7f3;
2538
+ font-size: 13px;
2539
+ line-height: 34px;
2540
+ color: #ff7b35;
2541
+ padding: 0 12px;
2542
+ display: flex;
2543
+ justify-content: space-between;
2544
+ align-items: center;
2545
+
2546
+ .warning-icon {
2547
+ color: #ff7b35;
2548
+ }
2549
+ }
2550
+ </style>