ylyx-cli 1.0.0

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 (402) hide show
  1. package/README.md +184 -0
  2. package/bin/ylyx.js +95 -0
  3. package/lib/generator.js +192 -0
  4. package/lib/index.js +113 -0
  5. package/lib/interactive.js +87 -0
  6. package/lib/remote.js +179 -0
  7. package/lib/template.js +174 -0
  8. package/lib/utils.js +134 -0
  9. package/package.json +56 -0
  10. package/templates/react-app/files/README.md +23 -0
  11. package/templates/react-app/files/package.json +29 -0
  12. package/templates/react-app/files/public/index.html +11 -0
  13. package/templates/react-app/files/src/App.css +15 -0
  14. package/templates/react-app/files/src/App.js +15 -0
  15. package/templates/react-app/files/src/index.css +10 -0
  16. package/templates/react-app/files/src/index.js +11 -0
  17. package/templates/react-app/template.json +12 -0
  18. package/templates/react-component/files/Component.module.css +5 -0
  19. package/templates/react-component/files/Component.tsx +31 -0
  20. package/templates/react-component/files/index.ts +2 -0
  21. package/templates/react-component/template.json +49 -0
  22. package/templates/vue-app/files/.editorconfig +14 -0
  23. package/templates/vue-app/files/.env.development +21 -0
  24. package/templates/vue-app/files/.env.production +18 -0
  25. package/templates/vue-app/files/.eslintignore +5 -0
  26. package/templates/vue-app/files/.eslintrc.js +267 -0
  27. package/templates/vue-app/files/.prettierignore +12 -0
  28. package/templates/vue-app/files/.travis.yml +5 -0
  29. package/templates/vue-app/files/.vscode/extensions.json +7 -0
  30. package/templates/vue-app/files/.vscode/settings.json +39 -0
  31. package/templates/vue-app/files/LICENSE +191 -0
  32. package/templates/vue-app/files/README.md +87 -0
  33. package/templates/vue-app/files/babel.config.js +11 -0
  34. package/templates/vue-app/files/jest.config.js +24 -0
  35. package/templates/vue-app/files/package.json +136 -0
  36. package/templates/vue-app/files/plopfile.js +7 -0
  37. package/templates/vue-app/files/postcss.config.js +5 -0
  38. package/templates/vue-app/files/prettier.config.js +36 -0
  39. package/templates/vue-app/files/public/default.js +26 -0
  40. package/templates/vue-app/files/public/favicon.ico +0 -0
  41. package/templates/vue-app/files/public/index.html +26 -0
  42. package/templates/vue-app/files/src/App.vue +54 -0
  43. package/templates/vue-app/files/src/api/bigDataV/index.js +198 -0
  44. package/templates/vue-app/files/src/api/data.js +42 -0
  45. package/templates/vue-app/files/src/api/dataArchive/index.js +186 -0
  46. package/templates/vue-app/files/src/api/generator/genConfig.js +16 -0
  47. package/templates/vue-app/files/src/api/generator/generator.js +32 -0
  48. package/templates/vue-app/files/src/api/indexManagement/index.js +39 -0
  49. package/templates/vue-app/files/src/api/institutionMonitor/index.js +396 -0
  50. package/templates/vue-app/files/src/api/institutionSet/index.js +120 -0
  51. package/templates/vue-app/files/src/api/login.js +44 -0
  52. package/templates/vue-app/files/src/api/selfStatistics/index.js +50 -0
  53. package/templates/vue-app/files/src/api/system/code.js +15 -0
  54. package/templates/vue-app/files/src/api/system/dict.js +34 -0
  55. package/templates/vue-app/files/src/api/system/dictDetail.js +52 -0
  56. package/templates/vue-app/files/src/api/system/equipment.js +35 -0
  57. package/templates/vue-app/files/src/api/system/examManage.js +49 -0
  58. package/templates/vue-app/files/src/api/system/examProject.js +48 -0
  59. package/templates/vue-app/files/src/api/system/hosModel.js +35 -0
  60. package/templates/vue-app/files/src/api/system/hospital.js +88 -0
  61. package/templates/vue-app/files/src/api/system/job.js +40 -0
  62. package/templates/vue-app/files/src/api/system/menu.js +67 -0
  63. package/templates/vue-app/files/src/api/system/model.js +42 -0
  64. package/templates/vue-app/files/src/api/system/risConfig.js +9 -0
  65. package/templates/vue-app/files/src/api/system/role.js +64 -0
  66. package/templates/vue-app/files/src/api/system/sysSet.js +19 -0
  67. package/templates/vue-app/files/src/api/system/timing.js +41 -0
  68. package/templates/vue-app/files/src/api/system/user.js +121 -0
  69. package/templates/vue-app/files/src/api/tools/alipay.js +25 -0
  70. package/templates/vue-app/files/src/api/tools/email.js +24 -0
  71. package/templates/vue-app/files/src/api/tools/localStorage.js +27 -0
  72. package/templates/vue-app/files/src/api/tools/qiniu.js +40 -0
  73. package/templates/vue-app/files/src/assets/401_images/401.gif +0 -0
  74. package/templates/vue-app/files/src/assets/404_images/404.png +0 -0
  75. package/templates/vue-app/files/src/assets/404_images/404_cloud.png +0 -0
  76. package/templates/vue-app/files/src/assets/css/font-awesome.css +2342 -0
  77. package/templates/vue-app/files/src/assets/css/font-awesome.min.css +2336 -0
  78. package/templates/vue-app/files/src/assets/fonts/FontAwesome.otf +0 -0
  79. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.eot +0 -0
  80. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.svg +2671 -0
  81. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.ttf +0 -0
  82. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.woff +0 -0
  83. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.woff2 +0 -0
  84. package/templates/vue-app/files/src/assets/icons/index.js +9 -0
  85. package/templates/vue-app/files/src/assets/icons/svg/Steve-Jobs.svg +1 -0
  86. package/templates/vue-app/files/src/assets/icons/svg/achive.svg +1 -0
  87. package/templates/vue-app/files/src/assets/icons/svg/alipay.svg +1 -0
  88. package/templates/vue-app/files/src/assets/icons/svg/anq.svg +1 -0
  89. package/templates/vue-app/files/src/assets/icons/svg/app.svg +1 -0
  90. package/templates/vue-app/files/src/assets/icons/svg/archive.svg +1 -0
  91. package/templates/vue-app/files/src/assets/icons/svg/backup.svg +1 -0
  92. package/templates/vue-app/files/src/assets/icons/svg/chain.svg +1 -0
  93. package/templates/vue-app/files/src/assets/icons/svg/chart.svg +1 -0
  94. package/templates/vue-app/files/src/assets/icons/svg/codeConsole.svg +1 -0
  95. package/templates/vue-app/files/src/assets/icons/svg/dashboard.svg +1 -0
  96. package/templates/vue-app/files/src/assets/icons/svg/database.svg +1 -0
  97. package/templates/vue-app/files/src/assets/icons/svg/date.svg +1 -0
  98. package/templates/vue-app/files/src/assets/icons/svg/deploy.svg +1 -0
  99. package/templates/vue-app/files/src/assets/icons/svg/dept.svg +1 -0
  100. package/templates/vue-app/files/src/assets/icons/svg/dev.svg +1 -0
  101. package/templates/vue-app/files/src/assets/icons/svg/develop.svg +1 -0
  102. package/templates/vue-app/files/src/assets/icons/svg/dictionary.svg +1 -0
  103. package/templates/vue-app/files/src/assets/icons/svg/doc.svg +1 -0
  104. package/templates/vue-app/files/src/assets/icons/svg/download.svg +1 -0
  105. package/templates/vue-app/files/src/assets/icons/svg/edit.svg +1 -0
  106. package/templates/vue-app/files/src/assets/icons/svg/education.svg +1 -0
  107. package/templates/vue-app/files/src/assets/icons/svg/email.svg +1 -0
  108. package/templates/vue-app/files/src/assets/icons/svg/equSet.svg +1 -0
  109. package/templates/vue-app/files/src/assets/icons/svg/error.svg +1 -0
  110. package/templates/vue-app/files/src/assets/icons/svg/exit-fullscreen.svg +1 -0
  111. package/templates/vue-app/files/src/assets/icons/svg/fullscreen.svg +1 -0
  112. package/templates/vue-app/files/src/assets/icons/svg/fwb.svg +1 -0
  113. package/templates/vue-app/files/src/assets/icons/svg/github.svg +1 -0
  114. package/templates/vue-app/files/src/assets/icons/svg/goBack.svg +1 -0
  115. package/templates/vue-app/files/src/assets/icons/svg/gonggao.svg +1 -0
  116. package/templates/vue-app/files/src/assets/icons/svg/hospital.svg +2 -0
  117. package/templates/vue-app/files/src/assets/icons/svg/hospital1.svg +2 -0
  118. package/templates/vue-app/files/src/assets/icons/svg/hospitalTotal.svg +1 -0
  119. package/templates/vue-app/files/src/assets/icons/svg/icon.svg +1 -0
  120. package/templates/vue-app/files/src/assets/icons/svg/image.svg +1 -0
  121. package/templates/vue-app/files/src/assets/icons/svg/index.svg +1 -0
  122. package/templates/vue-app/files/src/assets/icons/svg/international.svg +1 -0
  123. package/templates/vue-app/files/src/assets/icons/svg/ipvisits.svg +1 -0
  124. package/templates/vue-app/files/src/assets/icons/svg/java.svg +1 -0
  125. package/templates/vue-app/files/src/assets/icons/svg/link.svg +1 -0
  126. package/templates/vue-app/files/src/assets/icons/svg/list.svg +1 -0
  127. package/templates/vue-app/files/src/assets/icons/svg/lock.svg +1 -0
  128. package/templates/vue-app/files/src/assets/icons/svg/log.svg +1 -0
  129. package/templates/vue-app/files/src/assets/icons/svg/login.svg +1 -0
  130. package/templates/vue-app/files/src/assets/icons/svg/loginOne.svg +35 -0
  131. package/templates/vue-app/files/src/assets/icons/svg/loginOneWhite.svg +19 -0
  132. package/templates/vue-app/files/src/assets/icons/svg/loginOr.svg +93 -0
  133. package/templates/vue-app/files/src/assets/icons/svg/loginUp.svg +96 -0
  134. package/templates/vue-app/files/src/assets/icons/svg/markdown.svg +1 -0
  135. package/templates/vue-app/files/src/assets/icons/svg/menu.svg +1 -0
  136. package/templates/vue-app/files/src/assets/icons/svg/message.svg +1 -0
  137. package/templates/vue-app/files/src/assets/icons/svg/mnt.svg +1 -0
  138. package/templates/vue-app/files/src/assets/icons/svg/money.svg +1 -0
  139. package/templates/vue-app/files/src/assets/icons/svg/monitor.svg +1 -0
  140. package/templates/vue-app/files/src/assets/icons/svg/nested.svg +1 -0
  141. package/templates/vue-app/files/src/assets/icons/svg/network.svg +1 -0
  142. package/templates/vue-app/files/src/assets/icons/svg/offline.svg +1 -0
  143. package/templates/vue-app/files/src/assets/icons/svg/online.svg +1 -0
  144. package/templates/vue-app/files/src/assets/icons/svg/password.svg +1 -0
  145. package/templates/vue-app/files/src/assets/icons/svg/people.svg +1 -0
  146. package/templates/vue-app/files/src/assets/icons/svg/peoples.svg +1 -0
  147. package/templates/vue-app/files/src/assets/icons/svg/perSet.svg +1 -0
  148. package/templates/vue-app/files/src/assets/icons/svg/permission.svg +1 -0
  149. package/templates/vue-app/files/src/assets/icons/svg/phone.svg +1 -0
  150. package/templates/vue-app/files/src/assets/icons/svg/piechart.svg +1 -0
  151. package/templates/vue-app/files/src/assets/icons/svg/qiniu.svg +1 -0
  152. package/templates/vue-app/files/src/assets/icons/svg/redis.svg +1 -0
  153. package/templates/vue-app/files/src/assets/icons/svg/resetpassword.svg +1 -0
  154. package/templates/vue-app/files/src/assets/icons/svg/resetpassword1.svg +1 -0
  155. package/templates/vue-app/files/src/assets/icons/svg/role.svg +1 -0
  156. package/templates/vue-app/files/src/assets/icons/svg/search.svg +1 -0
  157. package/templates/vue-app/files/src/assets/icons/svg/server.svg +1 -0
  158. package/templates/vue-app/files/src/assets/icons/svg/shopping.svg +1 -0
  159. package/templates/vue-app/files/src/assets/icons/svg/size.svg +1 -0
  160. package/templates/vue-app/files/src/assets/icons/svg/skill.svg +1 -0
  161. package/templates/vue-app/files/src/assets/icons/svg/source.svg +1 -0
  162. package/templates/vue-app/files/src/assets/icons/svg/sqlMonitor.svg +1 -0
  163. package/templates/vue-app/files/src/assets/icons/svg/statistical.svg +1 -0
  164. package/templates/vue-app/files/src/assets/icons/svg/swagger.svg +1 -0
  165. package/templates/vue-app/files/src/assets/icons/svg/sys-tools.svg +1 -0
  166. package/templates/vue-app/files/src/assets/icons/svg/system.svg +1 -0
  167. package/templates/vue-app/files/src/assets/icons/svg/system1.svg +1 -0
  168. package/templates/vue-app/files/src/assets/icons/svg/tab.svg +1 -0
  169. package/templates/vue-app/files/src/assets/icons/svg/teams.svg +1 -0
  170. package/templates/vue-app/files/src/assets/icons/svg/theme.svg +1 -0
  171. package/templates/vue-app/files/src/assets/icons/svg/timing.svg +1 -0
  172. package/templates/vue-app/files/src/assets/icons/svg/tools.svg +1 -0
  173. package/templates/vue-app/files/src/assets/icons/svg/tree-table.svg +1 -0
  174. package/templates/vue-app/files/src/assets/icons/svg/tree.svg +1 -0
  175. package/templates/vue-app/files/src/assets/icons/svg/unlock.svg +1 -0
  176. package/templates/vue-app/files/src/assets/icons/svg/user.svg +1 -0
  177. package/templates/vue-app/files/src/assets/icons/svg/user1.svg +1 -0
  178. package/templates/vue-app/files/src/assets/icons/svg/validCode.svg +1 -0
  179. package/templates/vue-app/files/src/assets/icons/svg/visits.svg +1 -0
  180. package/templates/vue-app/files/src/assets/icons/svg/web.svg +1 -0
  181. package/templates/vue-app/files/src/assets/icons/svg/wechat.svg +1 -0
  182. package/templates/vue-app/files/src/assets/icons/svg/weixin.svg +1 -0
  183. package/templates/vue-app/files/src/assets/icons/svg/zujian.svg +1 -0
  184. package/templates/vue-app/files/src/assets/icons/svgo.yml +21 -0
  185. package/templates/vue-app/files/src/assets/images/archive.png +0 -0
  186. package/templates/vue-app/files/src/assets/images/archive_icon.png +0 -0
  187. package/templates/vue-app/files/src/assets/images/avatar.png +0 -0
  188. package/templates/vue-app/files/src/assets/images/background.jpg +0 -0
  189. package/templates/vue-app/files/src/assets/images/bg.png +0 -0
  190. package/templates/vue-app/files/src/assets/images/gongan.png +0 -0
  191. package/templates/vue-app/files/src/assets/images/hospital_icon.png +0 -0
  192. package/templates/vue-app/files/src/assets/images/location.png +0 -0
  193. package/templates/vue-app/files/src/assets/images/logintitle.jpg +0 -0
  194. package/templates/vue-app/files/src/assets/images/logo-copy1.png +0 -0
  195. package/templates/vue-app/files/src/assets/images/logo.png +0 -0
  196. package/templates/vue-app/files/src/assets/images/logoBg.png +0 -0
  197. package/templates/vue-app/files/src/assets/images/offline-bg.png +0 -0
  198. package/templates/vue-app/files/src/assets/images/position.png +0 -0
  199. package/templates/vue-app/files/src/assets/images/qualityBg.jpg +0 -0
  200. package/templates/vue-app/files/src/assets/images/self-bg.png +0 -0
  201. package/templates/vue-app/files/src/assets/images/self-bg2.png +0 -0
  202. package/templates/vue-app/files/src/assets/images/triAngel.png +0 -0
  203. package/templates/vue-app/files/src/assets/images/triAngelNormal.png +0 -0
  204. package/templates/vue-app/files/src/assets/styles/btn.scss +103 -0
  205. package/templates/vue-app/files/src/assets/styles/eladmin.scss +124 -0
  206. package/templates/vue-app/files/src/assets/styles/element-ui.scss +217 -0
  207. package/templates/vue-app/files/src/assets/styles/element-variables.scss +31 -0
  208. package/templates/vue-app/files/src/assets/styles/global.scss +73 -0
  209. package/templates/vue-app/files/src/assets/styles/index.scss +220 -0
  210. package/templates/vue-app/files/src/assets/styles/mixin.scss +60 -0
  211. package/templates/vue-app/files/src/assets/styles/publicStyle.scss +224 -0
  212. package/templates/vue-app/files/src/assets/styles/sidebar.scss +239 -0
  213. package/templates/vue-app/files/src/assets/styles/transition.scss +48 -0
  214. package/templates/vue-app/files/src/assets/styles/variables.scss +44 -0
  215. package/templates/vue-app/files/src/common/flexible.js +145 -0
  216. package/templates/vue-app/files/src/components/Breadcrumb/index.vue +87 -0
  217. package/templates/vue-app/files/src/components/Crud/CRUD.operation.vue +248 -0
  218. package/templates/vue-app/files/src/components/Crud/Pagination.vue +20 -0
  219. package/templates/vue-app/files/src/components/Crud/RR.operation.vue +39 -0
  220. package/templates/vue-app/files/src/components/Crud/UD.operation.vue +106 -0
  221. package/templates/vue-app/files/src/components/Crud/crud.js +907 -0
  222. package/templates/vue-app/files/src/components/Crud/user/UR.operation.vue +154 -0
  223. package/templates/vue-app/files/src/components/DateRangePicker/index.vue +42 -0
  224. package/templates/vue-app/files/src/components/DateRangePickerProhibitNext/index.vue +42 -0
  225. package/templates/vue-app/files/src/components/DateRangePickerProhibitTodayNext/index.vue +48 -0
  226. package/templates/vue-app/files/src/components/Dict/Dict.js +31 -0
  227. package/templates/vue-app/files/src/components/Dict/index.js +29 -0
  228. package/templates/vue-app/files/src/components/Doc/index.vue +16 -0
  229. package/templates/vue-app/files/src/components/Echarts/BarChart.vue +115 -0
  230. package/templates/vue-app/files/src/components/Echarts/Category.vue +768 -0
  231. package/templates/vue-app/files/src/components/Echarts/Funnel.vue +120 -0
  232. package/templates/vue-app/files/src/components/Echarts/Gauge.vue +74 -0
  233. package/templates/vue-app/files/src/components/Echarts/Graph.vue +101 -0
  234. package/templates/vue-app/files/src/components/Echarts/HeatMap.vue +301 -0
  235. package/templates/vue-app/files/src/components/Echarts/Line3D.vue +110 -0
  236. package/templates/vue-app/files/src/components/Echarts/PieChart.vue +84 -0
  237. package/templates/vue-app/files/src/components/Echarts/Point.vue +161 -0
  238. package/templates/vue-app/files/src/components/Echarts/RadarChart.vue +123 -0
  239. package/templates/vue-app/files/src/components/Echarts/Rich.vue +160 -0
  240. package/templates/vue-app/files/src/components/Echarts/Sankey.vue +114 -0
  241. package/templates/vue-app/files/src/components/Echarts/Scatter.vue +192 -0
  242. package/templates/vue-app/files/src/components/Echarts/Sunburst.vue +127 -0
  243. package/templates/vue-app/files/src/components/Echarts/ThemeRiver.vue +233 -0
  244. package/templates/vue-app/files/src/components/Echarts/WordCloud.vue +201 -0
  245. package/templates/vue-app/files/src/components/GithubCorner/index.vue +55 -0
  246. package/templates/vue-app/files/src/components/Hamburger/index.vue +44 -0
  247. package/templates/vue-app/files/src/components/HeaderSearch/index.vue +196 -0
  248. package/templates/vue-app/files/src/components/IconSelect/index.vue +74 -0
  249. package/templates/vue-app/files/src/components/IconSelect/requireIcons.js +10 -0
  250. package/templates/vue-app/files/src/components/Iframe/index.vue +30 -0
  251. package/templates/vue-app/files/src/components/JavaEdit/index.vue +78 -0
  252. package/templates/vue-app/files/src/components/Pagination/index.vue +100 -0
  253. package/templates/vue-app/files/src/components/PanThumb/index.vue +149 -0
  254. package/templates/vue-app/files/src/components/ParentView/index.vue +3 -0
  255. package/templates/vue-app/files/src/components/Permission/index.js +13 -0
  256. package/templates/vue-app/files/src/components/Permission/permission.js +21 -0
  257. package/templates/vue-app/files/src/components/RightPanel/index.vue +149 -0
  258. package/templates/vue-app/files/src/components/Screenfull/index.vue +60 -0
  259. package/templates/vue-app/files/src/components/SizeSelect/index.vue +60 -0
  260. package/templates/vue-app/files/src/components/SvgIcon/index.vue +66 -0
  261. package/templates/vue-app/files/src/components/ThemePicker/index.vue +177 -0
  262. package/templates/vue-app/files/src/components/UploadExcel/index.vue +149 -0
  263. package/templates/vue-app/files/src/components/WaterMark/setWaterMark.js +68 -0
  264. package/templates/vue-app/files/src/components/WaterMark/waterMark.vue +69 -0
  265. package/templates/vue-app/files/src/components/Xgplayer/index.vue +49 -0
  266. package/templates/vue-app/files/src/components/YamlEdit/index.vue +81 -0
  267. package/templates/vue-app/files/src/layout/components/AppMain.vue +67 -0
  268. package/templates/vue-app/files/src/layout/components/Navbar.vue +209 -0
  269. package/templates/vue-app/files/src/layout/components/Settings/index.vue +125 -0
  270. package/templates/vue-app/files/src/layout/components/Sidebar/FixiOSBug.js +26 -0
  271. package/templates/vue-app/files/src/layout/components/Sidebar/Item.vue +29 -0
  272. package/templates/vue-app/files/src/layout/components/Sidebar/Link.vue +35 -0
  273. package/templates/vue-app/files/src/layout/components/Sidebar/Logo.vue +93 -0
  274. package/templates/vue-app/files/src/layout/components/Sidebar/SidebarItem.vue +104 -0
  275. package/templates/vue-app/files/src/layout/components/Sidebar/index.vue +79 -0
  276. package/templates/vue-app/files/src/layout/components/TagsView/ScrollPane.vue +90 -0
  277. package/templates/vue-app/files/src/layout/components/TagsView/index.vue +299 -0
  278. package/templates/vue-app/files/src/layout/components/index.js +5 -0
  279. package/templates/vue-app/files/src/layout/index.vue +119 -0
  280. package/templates/vue-app/files/src/layout/mixin/ResizeHandler.js +45 -0
  281. package/templates/vue-app/files/src/main.js +89 -0
  282. package/templates/vue-app/files/src/mixins/crud.js +348 -0
  283. package/templates/vue-app/files/src/router/index.js +156 -0
  284. package/templates/vue-app/files/src/router/routers.js +203 -0
  285. package/templates/vue-app/files/src/settings.js +57 -0
  286. package/templates/vue-app/files/src/store/getters.js +29 -0
  287. package/templates/vue-app/files/src/store/index.js +25 -0
  288. package/templates/vue-app/files/src/store/modules/api.js +33 -0
  289. package/templates/vue-app/files/src/store/modules/app.js +55 -0
  290. package/templates/vue-app/files/src/store/modules/permission.js +79 -0
  291. package/templates/vue-app/files/src/store/modules/register.js +17 -0
  292. package/templates/vue-app/files/src/store/modules/settings.js +46 -0
  293. package/templates/vue-app/files/src/store/modules/tagsView.js +168 -0
  294. package/templates/vue-app/files/src/store/modules/user.js +119 -0
  295. package/templates/vue-app/files/src/utils/auth.js +18 -0
  296. package/templates/vue-app/files/src/utils/base64ToFile.js +27 -0
  297. package/templates/vue-app/files/src/utils/clipboard.js +36 -0
  298. package/templates/vue-app/files/src/utils/datetime.js +289 -0
  299. package/templates/vue-app/files/src/utils/getBlobFile.js +10 -0
  300. package/templates/vue-app/files/src/utils/getTime.js +29 -0
  301. package/templates/vue-app/files/src/utils/index.js +520 -0
  302. package/templates/vue-app/files/src/utils/permission.js +29 -0
  303. package/templates/vue-app/files/src/utils/pinyin.js +450 -0
  304. package/templates/vue-app/files/src/utils/request.js +139 -0
  305. package/templates/vue-app/files/src/utils/rsaEncrypt.js +37 -0
  306. package/templates/vue-app/files/src/utils/shortcuts.js +210 -0
  307. package/templates/vue-app/files/src/utils/upload.js +12 -0
  308. package/templates/vue-app/files/src/utils/validate.js +262 -0
  309. package/templates/vue-app/files/src/views/components/Echarts.vue +124 -0
  310. package/templates/vue-app/files/src/views/components/Editor.vue +75 -0
  311. package/templates/vue-app/files/src/views/components/MarkDown.vue +44 -0
  312. package/templates/vue-app/files/src/views/components/UVideo.vue +37 -0
  313. package/templates/vue-app/files/src/views/components/YamlEdit.vue +206 -0
  314. package/templates/vue-app/files/src/views/components/camera/camera.vue +115 -0
  315. package/templates/vue-app/files/src/views/components/camera/cameraTest.vue +158 -0
  316. package/templates/vue-app/files/src/views/components/excel/upload-excel.vue +41 -0
  317. package/templates/vue-app/files/src/views/components/icons/element-icons.js +74 -0
  318. package/templates/vue-app/files/src/views/components/icons/index.vue +106 -0
  319. package/templates/vue-app/files/src/views/components/icons/svg-icons.js +10 -0
  320. package/templates/vue-app/files/src/views/components/scroll/index.vue +107 -0
  321. package/templates/vue-app/files/src/views/components/scrollFull/index.vue +99 -0
  322. package/templates/vue-app/files/src/views/dashboard/LineChart.vue +138 -0
  323. package/templates/vue-app/files/src/views/dashboard/PanelGroup.vue +173 -0
  324. package/templates/vue-app/files/src/views/dashboard/mixins/resize.js +57 -0
  325. package/templates/vue-app/files/src/views/dataArchive/delTable.vue +354 -0
  326. package/templates/vue-app/files/src/views/dataArchive/exportDetail.vue +121 -0
  327. package/templates/vue-app/files/src/views/dataArchive/exportList.vue +160 -0
  328. package/templates/vue-app/files/src/views/dataArchive/index.vue +2104 -0
  329. package/templates/vue-app/files/src/views/features/401.vue +83 -0
  330. package/templates/vue-app/files/src/views/features/404.vue +226 -0
  331. package/templates/vue-app/files/src/views/features/redirect.vue +12 -0
  332. package/templates/vue-app/files/src/views/generator/config.vue +348 -0
  333. package/templates/vue-app/files/src/views/generator/index.vue +143 -0
  334. package/templates/vue-app/files/src/views/generator/preview.vue +39 -0
  335. package/templates/vue-app/files/src/views/home.vue +80 -0
  336. package/templates/vue-app/files/src/views/indexManagement/index.vue +422 -0
  337. package/templates/vue-app/files/src/views/indexManagement/other.vue +286 -0
  338. package/templates/vue-app/files/src/views/institutionMonitor/components/LineChart.vue +191 -0
  339. package/templates/vue-app/files/src/views/institutionMonitor/index.scss +339 -0
  340. package/templates/vue-app/files/src/views/institutionMonitor/index.vue +1385 -0
  341. package/templates/vue-app/files/src/views/institutionMonitor/mixins/resize.js +57 -0
  342. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/checkProjectCode.vue +267 -0
  343. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/imageAbnormalMonitor.vue +361 -0
  344. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/index.vue +686 -0
  345. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/leakageAnomaly.vue +270 -0
  346. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/moveMonitore.vue +114 -0
  347. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/qualityMonitore.vue +338 -0
  348. package/templates/vue-app/files/src/views/institutionSet/cloudSet.vue +534 -0
  349. package/templates/vue-app/files/src/views/institutionSet/index.vue +2550 -0
  350. package/templates/vue-app/files/src/views/login.vue +243 -0
  351. package/templates/vue-app/files/src/views/qualityLogin.vue +280 -0
  352. package/templates/vue-app/files/src/views/selfStatistics/components/LineChart.vue +296 -0
  353. package/templates/vue-app/files/src/views/selfStatistics/hospitalDetail/index.vue +533 -0
  354. package/templates/vue-app/files/src/views/selfStatistics/index.scss +447 -0
  355. package/templates/vue-app/files/src/views/selfStatistics/index.vue +903 -0
  356. package/templates/vue-app/files/src/views/selfStatistics/mixins/resize.js +57 -0
  357. package/templates/vue-app/files/src/views/selfStatistics/monitorDetail/index.vue +285 -0
  358. package/templates/vue-app/files/src/views/selfStatistics/offlineDetail/index.vue +104 -0
  359. package/templates/vue-app/files/src/views/selfStatistics/selfActiveDetail/index.vue +104 -0
  360. package/templates/vue-app/files/src/views/selfStatistics/selfMonitorDetail/index.vue +420 -0
  361. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/setWaterMark.js +68 -0
  362. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/waterMark.vue +69 -0
  363. package/templates/vue-app/files/src/views/system/dept/index.vue +144 -0
  364. package/templates/vue-app/files/src/views/system/dict/dictDetail.vue +146 -0
  365. package/templates/vue-app/files/src/views/system/dict/index.vue +159 -0
  366. package/templates/vue-app/files/src/views/system/examModality/index.vue +174 -0
  367. package/templates/vue-app/files/src/views/system/examPart/index.vue +184 -0
  368. package/templates/vue-app/files/src/views/system/examProject/index.vue +321 -0
  369. package/templates/vue-app/files/src/views/system/examine/index.vue +66 -0
  370. package/templates/vue-app/files/src/views/system/job/index.vue +119 -0
  371. package/templates/vue-app/files/src/views/system/job/module/form.vue +72 -0
  372. package/templates/vue-app/files/src/views/system/job/module/header.vue +48 -0
  373. package/templates/vue-app/files/src/views/system/menu/index.vue +327 -0
  374. package/templates/vue-app/files/src/views/system/model/index.vue +285 -0
  375. package/templates/vue-app/files/src/views/system/role/index.vue +434 -0
  376. package/templates/vue-app/files/src/views/system/sysSet/index.vue +84 -0
  377. package/templates/vue-app/files/src/views/system/timing/index.vue +289 -0
  378. package/templates/vue-app/files/src/views/system/timing/log.vue +143 -0
  379. package/templates/vue-app/files/src/views/system/user/admin.vue +414 -0
  380. package/templates/vue-app/files/src/views/system/user/center/updateEmail.vue +146 -0
  381. package/templates/vue-app/files/src/views/system/user/center/updatePass.vue +168 -0
  382. package/templates/vue-app/files/src/views/system/user/center.vue +140 -0
  383. package/templates/vue-app/files/src/views/system/user/index.vue +972 -0
  384. package/templates/vue-app/files/src/views/systemSet/role/index.vue +314 -0
  385. package/templates/vue-app/files/src/views/systemSet/user/admin.vue +414 -0
  386. package/templates/vue-app/files/src/views/systemSet/user/center/updateEmail.vue +146 -0
  387. package/templates/vue-app/files/src/views/systemSet/user/center/updatePass.vue +115 -0
  388. package/templates/vue-app/files/src/views/systemSet/user/center.vue +351 -0
  389. package/templates/vue-app/files/src/views/systemSet/user/index.vue +928 -0
  390. package/templates/vue-app/files/src/views/tools/aliPay/config.vue +102 -0
  391. package/templates/vue-app/files/src/views/tools/aliPay/index.vue +48 -0
  392. package/templates/vue-app/files/src/views/tools/aliPay/toPay.vue +91 -0
  393. package/templates/vue-app/files/src/views/tools/email/config.vue +91 -0
  394. package/templates/vue-app/files/src/views/tools/email/index.vue +42 -0
  395. package/templates/vue-app/files/src/views/tools/email/send.vue +159 -0
  396. package/templates/vue-app/files/src/views/tools/storage/index.vue +35 -0
  397. package/templates/vue-app/files/src/views/tools/storage/local/index.vue +207 -0
  398. package/templates/vue-app/files/src/views/tools/storage/qiniu/form.vue +108 -0
  399. package/templates/vue-app/files/src/views/tools/storage/qiniu/index.vue +241 -0
  400. package/templates/vue-app/files/src/views/tools/swagger/index.vue +14 -0
  401. package/templates/vue-app/files/vue.config.js +173 -0
  402. package/templates/vue-app/template.json +30 -0
@@ -0,0 +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>